@messaia/cdk 15.0.0-rc05 → 15.0.0-rc07
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/chips/chips.module.mjs +6 -3
- package/esm2020/lib/chips/components/chips.component.mjs +24 -9
- package/esm2020/lib/file/file-input.component.mjs +26 -26
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +7 -6
- package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +3 -3
- package/esm2020/lib/select/components/select.component.mjs +2 -2
- package/fesm2015/messaia-cdk.mjs +85 -66
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +82 -64
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/chips/chips.module.d.ts +2 -1
- package/lib/chips/components/chips.component.d.ts +4 -0
- package/lib/common/styles/utilities/_general.scss +117 -28
- package/lib/forms/validators/native-element-injector.directive.d.ts +1 -1
- package/lib/layout/_layout-theme.scss +29 -2
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
|
4
4
|
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
5
5
|
import { MatButtonModule } from '@angular/material/button';
|
|
6
6
|
import { MatChipsModule } from '@angular/material/chips';
|
|
7
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
7
8
|
import { MatIconModule } from '@angular/material/icon';
|
|
8
9
|
import { MatInputModule } from '@angular/material/input';
|
|
9
10
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
@@ -28,7 +29,8 @@ const MATRIAL_DECLARATIONS = [
|
|
|
28
29
|
MatSelectModule,
|
|
29
30
|
MatAutocompleteModule,
|
|
30
31
|
MatProgressSpinnerModule,
|
|
31
|
-
MatPaginatorModule
|
|
32
|
+
MatPaginatorModule,
|
|
33
|
+
MatDividerModule
|
|
32
34
|
];
|
|
33
35
|
export class VdChipsModule {
|
|
34
36
|
}
|
|
@@ -45,7 +47,8 @@ export class VdChipsModule {
|
|
|
45
47
|
MatSelectModule,
|
|
46
48
|
MatAutocompleteModule,
|
|
47
49
|
MatProgressSpinnerModule,
|
|
48
|
-
MatPaginatorModule
|
|
50
|
+
MatPaginatorModule,
|
|
51
|
+
MatDividerModule], exports: [VdChipsComponent,
|
|
49
52
|
VdAutocompleteOptionDirective,
|
|
50
53
|
VdChipDirective] });
|
|
51
54
|
/** @nocollapse */ VdChipsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipsModule, imports: [CommonModule,
|
|
@@ -71,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
|
|
|
71
74
|
]
|
|
72
75
|
}]
|
|
73
76
|
}] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY2hpcHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTlELE9BQU8sRUFDTixlQUFlLEVBQ2YsNkJBQTZCLEVBQzdCLENBQUM7QUFFRixNQUFNLFlBQVksR0FBRztJQUNwQixnQkFBZ0I7SUFDaEIsNkJBQTZCO0lBQzdCLGVBQWU7Q0FDZixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRztJQUM1QixjQUFjO0lBQ2QsYUFBYTtJQUNiLGVBQWU7SUFDZixjQUFjO0lBQ2QsZUFBZTtJQUNmLHFCQUFxQjtJQUNyQix3QkFBd0I7SUFDeEIsa0JBQWtCO0lBQ2xCLGdCQUFnQjtDQUNoQixDQUFBO0FBaUJELE1BQU0sT0FBTyxhQUFhOzs2SEFBYixhQUFhOzhIQUFiLGFBQWEsaUJBaEN6QixnQkFBZ0I7UUFDaEIsNkJBQTZCO1FBQzdCLGVBQWUsYUFpQmQsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsYUFBYSxFQWhCZCxjQUFjO1FBQ2QsYUFBYTtRQUNiLGVBQWU7UUFDZixjQUFjO1FBQ2QsZUFBZTtRQUNmLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsa0JBQWtCO1FBQ2xCLGdCQUFnQixhQWRoQixnQkFBZ0I7UUFDaEIsNkJBQTZCO1FBQzdCLGVBQWU7OEhBOEJILGFBQWEsWUFieEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsYUFBYTtRQUNiLG9CQUFvQjsyRkFTVCxhQUFhO2tCQWZ6QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLG9CQUFvQjtxQkFDcEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLFlBQVk7cUJBQ1o7b0JBQ0QsT0FBTyxFQUFFO3dCQUNSLFlBQVk7cUJBQ1o7aUJBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IFZkVGFibGVNb2R1bGUgfSBmcm9tICcuLi90YWJsZS90YWJsZS5tb2R1bGUnO1xyXG5pbXBvcnQgeyBWZENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS1vcHRpb24uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVmRDaGlwRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAuZGlyZWN0aXZlJztcclxuXHJcbmV4cG9ydCB7XHJcblx0VmRDaGlwRGlyZWN0aXZlLFxyXG5cdFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlXHJcbn07XHJcblxyXG5jb25zdCBERUNMQVJBVElPTlMgPSBbXHJcblx0VmRDaGlwc0NvbXBvbmVudCxcclxuXHRWZEF1dG9jb21wbGV0ZU9wdGlvbkRpcmVjdGl2ZSxcclxuXHRWZENoaXBEaXJlY3RpdmVcclxuXTtcclxuXHJcbmNvbnN0IE1BVFJJQUxfREVDTEFSQVRJT05TID0gW1xyXG5cdE1hdENoaXBzTW9kdWxlLFxyXG5cdE1hdEljb25Nb2R1bGUsXHJcblx0TWF0QnV0dG9uTW9kdWxlLFxyXG5cdE1hdElucHV0TW9kdWxlLFxyXG5cdE1hdFNlbGVjdE1vZHVsZSxcclxuXHRNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcblx0TWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxyXG5cdE1hdFBhZ2luYXRvck1vZHVsZSxcclxuXHRNYXREaXZpZGVyTW9kdWxlXHJcbl1cclxuXHJcbkBOZ01vZHVsZSh7XHJcblx0aW1wb3J0czogW1xyXG5cdFx0Q29tbW9uTW9kdWxlLFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG5cdFx0VmRUYWJsZU1vZHVsZSxcclxuXHRcdE1BVFJJQUxfREVDTEFSQVRJT05TXHJcblx0XSxcclxuXHRkZWNsYXJhdGlvbnM6IFtcclxuXHRcdERFQ0xBUkFUSU9OU1xyXG5cdF0sXHJcblx0ZXhwb3J0czogW1xyXG5cdFx0REVDTEFSQVRJT05TXHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRDaGlwc01vZHVsZSB7IH0iXX0=
|
|
@@ -2,7 +2,7 @@ import { FocusMonitor } from '@angular/cdk/a11y';
|
|
|
2
2
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Injector, Input, Optional, Output, Self, Type, ViewChild } from '@angular/core';
|
|
4
4
|
import { FormControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';
|
|
5
|
-
import { MatAutocomplete, MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
|
5
|
+
import { MatAutocomplete, MatAutocompleteTrigger, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
|
|
6
6
|
import { ErrorStateMatcher } from '@angular/material/core';
|
|
7
7
|
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
8
8
|
import { MatPaginator } from '@angular/material/paginator';
|
|
@@ -25,10 +25,10 @@ import * as i5 from "@angular/common";
|
|
|
25
25
|
import * as i6 from "../../table/components/dynamic-table/dynamic-table.component";
|
|
26
26
|
import * as i7 from "@angular/material/chips";
|
|
27
27
|
import * as i8 from "@angular/material/icon";
|
|
28
|
-
import * as i9 from "@angular/material/
|
|
29
|
-
import * as i10 from "@angular/material/
|
|
30
|
-
import * as i11 from "@angular/material/
|
|
31
|
-
import * as i12 from "@angular/material/
|
|
28
|
+
import * as i9 from "@angular/material/input";
|
|
29
|
+
import * as i10 from "@angular/material/autocomplete";
|
|
30
|
+
import * as i11 from "@angular/material/paginator";
|
|
31
|
+
import * as i12 from "@angular/material/divider";
|
|
32
32
|
export class VdChipsComponent extends AbstractMatFormField {
|
|
33
33
|
/**
|
|
34
34
|
* Constructor
|
|
@@ -280,7 +280,7 @@ export class VdChipsComponent extends AbstractMatFormField {
|
|
|
280
280
|
* Sets control focus
|
|
281
281
|
*/
|
|
282
282
|
focus() {
|
|
283
|
-
|
|
283
|
+
this.filterInput?.nativeElement?.focus();
|
|
284
284
|
}
|
|
285
285
|
/**
|
|
286
286
|
* Adds a chip
|
|
@@ -394,10 +394,22 @@ export class VdChipsComponent extends AbstractMatFormField {
|
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
/** @nocollapse */ VdChipsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipsComponent, deps: [{ token: i0.Injector }, { token: i1.VdMediaService }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: i4.FocusMonitor }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
397
|
-
/** @nocollapse */ VdChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: VdChipsComponent, selector: "vd-chips", inputs: { classType: "classType", chips: "chips", endpoint: "endpoint", params: "params", projection: "projection", paginated: "paginated", context: "context", key: "key", searchField: "searchField", searchFields: "searchFields", removable: "removable", debounce: "debounce", autocompleteCssClass: "autocompleteCssClass", suffixButtons: "suffixButtons" }, outputs: { initSelect: "initSelect", selected: "selected", cleared: "cleared", onLaunch: "launch", chipFocus: "chipFocus" }, providers: [{ provide: MatFormFieldControl, useExisting: VdChipsComponent }], queries: [{ propertyName: "chipTemplate", first: true, predicate: VdChipDirective, descendants: true }, { propertyName: "autocompleteOptionTemplate", first: true, predicate: VdAutocompleteOptionDirective, descendants: true }], viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: VdDynamicTableComponent, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-chip-grid #chipList [required]=\"required\" [disabled]=\"readonly\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\r\n\t<!-- #region Chips -->\r\n\t<mat-chip-row *ngFor=\"let chip of chips; let first = first; let index = index\" [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t<span class=\"vd-chip-content\">\r\n\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t</span>\r\n\t\t<a matChipTrailingIcon *ngFor=\"let button of suffixButtons; let first = first\" [hidden]=\"button.hide && button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"!readonly\" (click)=\"handleRemovedEvent()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</a>\r\n\t</mat-chip-row>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a mat-icon-button trailingIcon *ngIf=\"filterInput.value\" class=\"reset-input\" (click)=\"filterInput.value = ''\">\r\n\t\t<mat-icon>close</mat-icon>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-grid>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n</mat-autocomplete>\r\n<!-- #endregion -->", styles: [":host ::ng-deep .mat-mdc-chip-set{width:100%}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0!important;margin-right:0}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center;background-color:transparent!important;margin-right:0!important;margin-left:0!important;padding:0!important;margin:0;height:initial}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mdc-evolution-chip--disabled{opacity:.6;pointer-events:all}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__action--primary{padding-left:0}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__cell--trailing{margin-right:-12px}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-mdc-chip-focus-overlay{background-color:transparent!important}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-icon{cursor:pointer;font-size:1.2em;opacity:.8}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch.removable{right:34px}mat-spinner{margin-top:-9px;margin-right:6px}.mat-mdc-form-field-infix{display:flex}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: ["dataSource", "data", "classType", "context", "dataSourceFilter", "static", "filterable", "paginable", "selectable", "sortActive", "sortDirection", "stickyHeader", "stickyFilter", "rowNgClass", "detailsTemplate", "readonly", "selectAllFilter", "columns", "rowMenuItems", "excludedColumns", "pageSize", "pageSizeOptions"], outputs: ["rowClick"] }, { kind: "component", type: i7.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "component", type: i7.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "directive", type: i7.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i10.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: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i11.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }] });
|
|
397
|
+
/** @nocollapse */ VdChipsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: VdChipsComponent, selector: "vd-chips", inputs: { classType: "classType", chips: "chips", endpoint: "endpoint", params: "params", projection: "projection", paginated: "paginated", context: "context", key: "key", searchField: "searchField", searchFields: "searchFields", removable: "removable", debounce: "debounce", autocompleteCssClass: "autocompleteCssClass", suffixButtons: "suffixButtons" }, outputs: { initSelect: "initSelect", selected: "selected", cleared: "cleared", onLaunch: "launch", chipFocus: "chipFocus" }, providers: [
|
|
398
|
+
{ provide: MatFormFieldControl, useExisting: VdChipsComponent },
|
|
399
|
+
{
|
|
400
|
+
provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
|
|
401
|
+
useValue: { overlayPanelClass: 'vd-chips-autocomplete' }
|
|
402
|
+
}
|
|
403
|
+
], queries: [{ propertyName: "chipTemplate", first: true, predicate: VdChipDirective, descendants: true }, { propertyName: "autocompleteOptionTemplate", first: true, predicate: VdAutocompleteOptionDirective, descendants: true }], viewQueries: [{ propertyName: "dynamicTable", first: true, predicate: VdDynamicTableComponent, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "autocompleteTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-chip-grid #chipList [required]=\"required\" [disabled]=\"readonly\">\r\n\t<!-- #region Chips -->\r\n\t<mat-chip-row *ngFor=\"let chip of chips; let first = first; let index = index\" [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t<span class=\"vd-chip-content\">\r\n\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t</span>\r\n\t\t<a matChipTrailingIcon *ngFor=\"let button of suffixButtons; let first = first\" [hidden]=\"button.hide && button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"!readonly\" (click)=\"handleRemovedEvent()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</a>\r\n\t</mat-chip-row>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a trailingIcon *ngIf=\"(!value || empty) && !readonly && !disabled\" class=\"mat-mdc-select-arrow\" (click)=\"filterInput.value = ''\">\r\n\t\t<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" class=\"ng-tns-c184-21\">\r\n\t\t\t<path d=\"M7 10l5 5 5-5z\" class=\"ng-tns-c184-21\"></path>\r\n\t\t</svg>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-grid>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\" overlayPanelClass=\"----------------\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<div class=\"vd-chips-paginator\">\r\n\t\t<mat-divider></mat-divider>\r\n\t\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n\t</div>\r\n</mat-autocomplete>\r\n<!-- #endregion -->\r\n\r\n<div matAutocompleteOrigin #origin=\"matAutocompleteOrigin\" class=\"autocomplete-origin\"></div>", styles: [":host ::ng-deep .mat-mdc-chip-set{width:100%}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0!important;margin-right:0;align-items:center}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center;background-color:transparent!important;margin-right:0!important;margin-left:0!important;padding:0!important;margin:0;height:initial}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mdc-evolution-chip--disabled{opacity:.6;pointer-events:all}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__action--primary{padding-left:0}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__cell--trailing{margin-right:-12px}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-mdc-chip-focus-overlay{background-color:transparent!important}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-icon{cursor:pointer;font-size:1.2em;opacity:.8}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .autocomplete-origin{position:absolute;width:calc(100% + 28px);bottom:0;height:2px;margin-left:-14px}mat-spinner{margin-top:-9px;margin-right:6px}.mat-mdc-form-field-infix{display:flex}::ng-deep .vd-chips-autocomplete .mat-mdc-autocomplete-panel{padding:0!important}::ng-deep .vd-chips-autocomplete .vd-chips-paginator{position:sticky;bottom:0}::ng-deep .vd-chips-autocomplete .vd-chips-paginator .mat-mdc-paginator .mat-mdc-paginator-container{padding:0}::ng-deep .vd-chips-autocomplete .vd-chips-paginator .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions .mat-mdc-paginator-range-label{margin:0 16px 0 24px}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: ["dataSource", "data", "classType", "context", "dataSourceFilter", "static", "filterable", "paginable", "selectable", "sortActive", "sortDirection", "stickyHeader", "stickyFilter", "rowNgClass", "detailsTemplate", "readonly", "selectAllFilter", "columns", "rowMenuItems", "excludedColumns", "pageSize", "pageSizeOptions"], outputs: ["rowClick"] }, { kind: "component", type: i7.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "component", type: i7.MatChipRow, selector: "mat-chip-row, mat-basic-chip-row", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "directive", type: i7.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.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: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i10.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i10.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i11.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i12.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
|
|
398
404
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdChipsComponent, decorators: [{
|
|
399
405
|
type: Component,
|
|
400
|
-
args: [{ selector: 'vd-chips', providers: [
|
|
406
|
+
args: [{ selector: 'vd-chips', providers: [
|
|
407
|
+
{ provide: MatFormFieldControl, useExisting: VdChipsComponent },
|
|
408
|
+
{
|
|
409
|
+
provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,
|
|
410
|
+
useValue: { overlayPanelClass: 'vd-chips-autocomplete' }
|
|
411
|
+
}
|
|
412
|
+
], template: "<mat-chip-grid #chipList [required]=\"required\" [disabled]=\"readonly\">\r\n\t<!-- #region Chips -->\r\n\t<mat-chip-row *ngFor=\"let chip of chips; let first = first; let index = index\" [removable]=\"!readonly\" (removed)=\"handleRemovedEvent()\" disableRipple>\r\n\t\t<span class=\"vd-chip-content\">\r\n\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t</span>\r\n\t\t<a matChipTrailingIcon *ngFor=\"let button of suffixButtons; let first = first\" [hidden]=\"button.hide && button.hide(chips[0], context)\" (click)=\"$event.stopPropagation(); button.event && button.event(chips[0], context)\">\r\n\t\t\t<mat-icon>{{button.icon}}</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"onLaunch?.observers?.length > 0\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">\r\n\t\t\t<mat-icon>launch</mat-icon>\r\n\t\t</a>\r\n\t\t<a matChipTrailingIcon *ngIf=\"!readonly\" (click)=\"handleRemovedEvent()\">\r\n\t\t\t<mat-icon>close</mat-icon>\r\n\t\t</a>\r\n\t</mat-chip-row>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" (focus)=\"connect()\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [matAutocompleteConnectedTo]=\"origin\" [formControl]=\"autoCompleteChipList\" #filterInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Reset button -->\r\n\t<a trailingIcon *ngIf=\"(!value || empty) && !readonly && !disabled\" class=\"mat-mdc-select-arrow\" (click)=\"filterInput.value = ''\">\r\n\t\t<svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" class=\"ng-tns-c184-21\">\r\n\t\t\t<path d=\"M7 10l5 5 5-5z\" class=\"ng-tns-c184-21\"></path>\r\n\t\t</svg>\r\n\t</a>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<!-- <mat-spinner diameter=\"18\" *ngIf=\"dataSource?.isLoading\"></mat-spinner> -->\r\n\t<!-- #endregion -->\r\n</mat-chip-grid>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event.option.value, filterInput)\" class=\"{{autocompleteCssClass}}{{classType?' table-autocomplete':''}}\" overlayPanelClass=\"----------------\">\r\n\t<ng-template *ngIf=\"!classType && opened\" let-item let-first=\"first\" ngFor [ngForOf]=\"dataSource?.items\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{item}}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n\t<ng-container *ngIf=\"classType && opened\">\r\n\t\t<mat-option hide=\"true\"></mat-option>\r\n\t\t<vd-dynamic-table [dataSource]=\"dataSource\" [classType]=\"classType\" (rowClick)=\"addChip($event, filterInput)\" matSort [sortActive]=\"sortActive||'id'\" [sortDirection]=\"sortDirection\"></vd-dynamic-table>\r\n\t</ng-container>\r\n\t<div class=\"vd-chips-paginator\">\r\n\t\t<mat-divider></mat-divider>\r\n\t\t<mat-paginator [length]=\"dataSource?.total\" [pageIndex]=\"dataSource?.pageIndex\" [pageSize]=\"dataSource?.pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\" hidePageSize=\"true\"></mat-paginator>\r\n\t</div>\r\n</mat-autocomplete>\r\n<!-- #endregion -->\r\n\r\n<div matAutocompleteOrigin #origin=\"matAutocompleteOrigin\" class=\"autocomplete-origin\"></div>", styles: [":host ::ng-deep .mat-mdc-chip-set{width:100%}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0!important;margin-right:0;align-items:center}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip{display:flex;flex-direction:row;width:100%;padding:0 5px;justify-content:center;background-color:transparent!important;margin-right:0!important;margin-left:0!important;padding:0!important;margin:0;height:initial}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mdc-evolution-chip--disabled{opacity:.6;pointer-events:all}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__action--primary{padding-left:0}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mdc-evolution-chip__cell--trailing{margin-right:-12px}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-mdc-chip-focus-overlay{background-color:transparent!important}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .mat-icon{cursor:pointer;font-size:1.2em;opacity:.8}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip.mat-chip-disabled{opacity:.6}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-content{flex-grow:1!important;font-weight:initial;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;flex-direction:column;justify-content:center}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch{font-size:18px;position:absolute;right:4px;top:0;cursor:pointer}:host ::ng-deep .mat-mdc-chip-set .mdc-evolution-chip-set__chips .mat-mdc-chip .vd-chip-launch.removable{right:34px}:host ::ng-deep .autocomplete-origin{position:absolute;width:calc(100% + 28px);bottom:0;height:2px;margin-left:-14px}mat-spinner{margin-top:-9px;margin-right:6px}.mat-mdc-form-field-infix{display:flex}::ng-deep .vd-chips-autocomplete .mat-mdc-autocomplete-panel{padding:0!important}::ng-deep .vd-chips-autocomplete .vd-chips-paginator{position:sticky;bottom:0}::ng-deep .vd-chips-autocomplete .vd-chips-paginator .mat-mdc-paginator .mat-mdc-paginator-container{padding:0}::ng-deep .vd-chips-autocomplete .vd-chips-paginator .mat-mdc-paginator .mat-mdc-paginator-container .mat-mdc-paginator-range-actions .mat-mdc-paginator-range-label{margin:0 16px 0 24px}\n"] }]
|
|
401
413
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.VdMediaService }, { type: i0.ChangeDetectorRef }, { type: i2.NgControl, decorators: [{
|
|
402
414
|
type: Optional
|
|
403
415
|
}, {
|
|
@@ -417,6 +429,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
|
|
|
417
429
|
}], sort: [{
|
|
418
430
|
type: ViewChild,
|
|
419
431
|
args: [MatSort, { static: false }]
|
|
432
|
+
}], filterInput: [{
|
|
433
|
+
type: ViewChild,
|
|
434
|
+
args: ['filterInput', { static: false }]
|
|
420
435
|
}], chips: [{
|
|
421
436
|
type: Input
|
|
422
437
|
}], chipTemplate: [{
|
|
@@ -467,4 +482,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
|
|
|
467
482
|
}], chipFocus: [{
|
|
468
483
|
type: Output
|
|
469
484
|
}] } });
|
|
470
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUs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TztzQkFEYixNQUFNO2dCQU9BLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxRQUFRO2dCQU9ULGFBQWE7c0JBRG5CLEtBQUs7Z0JBU0MsU0FBUztzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgVHlwZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIFN1ZmZpeEJ1dHRvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9hdXRvY29tcGxldGUtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkQ2hpcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY2hpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkQ2hpcHNDb21wb25lbnQgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkQ2hpcHNDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1hdEZvcm1GaWVsZDxhbnk+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKipcclxuXHQgKiBfZHluYW1pY1RhYmxlOiBNYXRQYWdpbmF0b3JcclxuXHQgKi9cclxuXHRwcml2YXRlIF9keW5hbWljVGFibGU6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGdldCBkeW5hbWljVGFibGUoKTogVmREeW5hbWljVGFibGVDb21wb25lbnQgeyByZXR1cm4gdGhpcy5fZHluYW1pY1RhYmxlOyB9XHJcblx0cHVibGljIHNldCBkeW5hbWljVGFibGUoZHluYW1pY1RhYmxlOiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudCkge1xyXG5cdFx0dGhpcy5fZHluYW1pY1RhYmxlID0gZHluYW1pY1RhYmxlO1xyXG5cdFx0aWYgKHRoaXMuX2R5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuX2R5bmFtaWNUYWJsZS5tYXRTb3J0O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHR5cGUgb2YgdGhlIGNsYXNzIGZvciB0aGUgZHl5bmFtaWMgdGFibGVcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjbGFzc1R5cGU6IFR5cGU8YW55PjtcclxuXHJcblx0LyoqXHJcblx0ICogX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc2V0IHBhZ2luYXRvcihwYWdpbmF0b3I6IE1hdFBhZ2luYXRvcikgeyB0aGlzLl9wYWdpbmF0b3IgPSBwYWdpbmF0b3I7IH1cclxuXHRwdWJsaWMgZ2V0IHBhZ2luYXRvcigpOiBNYXRQYWdpbmF0b3IgeyByZXR1cm4gdGhpcy5fcGFnaW5hdG9yOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNvcnQsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzb3J0OiBNYXRTb3J0O1xyXG5cclxuXHQvKipcclxuXHQgKiBQYWdlIHNpemUgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYWdlU2l6ZU9wdGlvbnM6IEFycmF5PG51bWJlcj4gPSBbNSwgMTAsIDE1LCAyMCwgMzAsIDUwLCAxMDAsIDIwMF07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBjb2x1bW5cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydEFjdGl2ZTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGEtdGFibGUgZGF0YXNvdXJjZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+IHwgbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogZGF0YVNvdXJjZU9ic2VydmFibGU6IFN1YnNjcmlwdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB1cCByZWFjdGl2ZSBmb3JtY29udHJvbFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhdXRvQ29tcGxldGVDaGlwTGlzdDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoT3BlcmF0b3JzOiBzdHJpbmdbXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdID0gW1wiIT1cIiwgXCIhXCIsIFwiPD5cIiwgXCI+PVwiLCBcIj5cIiwgXCI8PVwiLCBcIjxcIiwgXCJeXCIsIFwiJFwiLCBcIn5cIl07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBsaXN0IG9mIGNoaXBzXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2hpcHMgPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVmRDaGlwIHRlbXBsYXRlXHJcblx0ICovXHJcblx0QENvbnRlbnRDaGlsZChWZENoaXBEaXJlY3RpdmUpXHJcblx0cHVibGljIGNoaXBUZW1wbGF0ZTogVmRDaGlwRGlyZWN0aXZlO1xyXG5cclxuXHQvKipcclxuXHQgKiBBdXRvY29tcGxldGVPcHRpb24gdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZTogVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZTtcclxuXHJcblx0LyoqXHJcblx0ICogYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlclxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcilcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcclxuXHJcblx0LyoqXHJcblx0ICogX2VuZHBvaW50OiBzdHJpbmdcclxuXHQgKi9cclxuXHRwdWJsaWMgX2VuZHBvaW50OiBzdHJpbmcgfCBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBvciBzZXRzIGVuZHBvaW50XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgZW5kcG9pbnQoKTogc3RyaW5nIHwgRnVuY3Rpb24geyByZXR1cm4gdGhpcy5fZW5kcG9pbnQ7IH1cclxuXHRzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XHJcblx0XHR0aGlzLl9lbmRwb2ludCA9IGVuZHBvaW50O1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gdHlwZW9mIGVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gZW5kcG9pbnQodGhpcykgOiAoPHN0cmluZz5lbmRwb2ludCk7XHJcblx0XHR0aGlzLmNsZWFyKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBwYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtczsgfVxyXG5cdHNldCBwYXJhbXMocGFyYW1zOiBhbnkpIHtcclxuXHRcdC8qIFJlbW92ZSBlbXB0eSBwYXJhbXMgKi9cclxuXHRcdFV0aWxzLmNsZWFuT2JqZWN0KHBhcmFtcyk7XHJcblxyXG5cdFx0aWYgKCFVdGlscy5lcXVhbHModGhpcy5fcGFyYW1zLCBwYXJhbXMpKSB7XHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IHBhcmFtcztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cclxuXHQvKipcclxuXHQgKiBwcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwcm9qZWN0aW9uKCkgeyByZXR1cm4gdGhpcy5fcHJvamVjdGlvbjsgfVxyXG5cdHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcblx0XHRpZiAodGhpcy5fcmVhZG9ubHkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHN1cGVyLmRpc2FibGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVhZG9ubHlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhZ2luYXRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE11bHRpcGxlIHNlbGVjdCBvcHRpb25cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYWdpbmF0ZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9wYWdpbmF0ZWQ7IH1cclxuXHRzZXQgcGFnaW5hdGVkKHBhZ2luYXRlZDogYm9vbGVhbikge1xyXG5cdFx0dGhpcy5fcGFnaW5hdGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHBhZ2luYXRlZCk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBjb250ZXh0OiBhbnlcclxuXHQgKiBUaGUgY3VycmVudCBjb250ZXh0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY29udGV4dDogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBrZXk6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGtleTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkOiBzdHJpbmcgPSAnc2VhcmNoJztcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGRzOiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWFyY2hGaWVsZHM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJlbW92YWJsZTogYm9vbGVhblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHJlbW92YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRlYm91bmNlPzogbnVtYmVyXHJcblx0ICogRGVib3VuY2UgdGltZW91dCBiZXR3ZWVuIGtleXByZXNzZXMuIERlZmF1bHRzIHRvIDQwMC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYXV0b2NvbXBsZXRlQ3NzQ2xhc3M6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBvcGVuZWQ6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgb3BlbmVkOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBpbml0U2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgaW5pdFNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogY2xlYXJlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxhdW5jaD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnbGF1bmNoJylcclxuXHRwdWJsaWMgb25MYXVuY2g6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHN1ZmZpeEJ1dHRvbnM6IFN1ZmZpeEJ1dHRvbjxhbnk+W11cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdWZmaXhCdXR0b25zOiBTdWZmaXhCdXR0b25bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBjaGlwRm9jdXM/OiBmdW5jdGlvblxyXG5cdCAqIE1ldGhvZCB0byBiZSBleGVjdXRlZCB3aGVuIGEgY2hpcCBpcyBmb2N1c2VkLlxyXG5cdCAqIFNlbmRzIGNoaXAgdmFsdWUgYXMgZXZlbnQuXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIGNoaXBGb2N1czogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgYE1hdEZvcm1GaWVsZGAgbGFiZWwgc2hvdWxkIHRyeSB0byBmbG9hdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IHNob3VsZExhYmVsRmxvYXQoKTogYm9vbGVhbiB7IHJldHVybiBzdXBlci5zaG91bGRMYWJlbEZsb2F0IHx8IHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3Q/LnZhbHVlOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxvYWRpbmc6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogZW1wdHlSZXN1bHQ6IGJvb2xlYW5cclxuXHQgKi9cclxuXHRwdWJsaWMgZW1wdHlSZXN1bHQ6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlcnZpY2U6IEJhc2VTZXJ2aWNlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNlcnZpY2U6IEJhc2VTZXJ2aWNlID0gbmV3IEJhc2VTZXJ2aWNlKCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIGluamVjdG9yIFxyXG5cdCAqIEBwYXJhbSBtZWRpYSBcclxuXHQgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgXHJcblx0ICogQHBhcmFtIG5nQ29udHJvbCBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybSBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybUdyb3VwIFxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIgXHJcblx0ICogQHBhcmFtIGZvY3VzTW9uaXRvciBcclxuXHQgKiBAcGFyYW0gZWxlbWVudFJlZiBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXHJcblx0XHRwdWJsaWMgbWVkaWE6IFZkTWVkaWFTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuXHRcdEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHRcdGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXHJcblx0XHRmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcclxuXHRcdGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKFwiYXBwLXZkLWNoaXBzXCIsIG5nQ29udHJvbCwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvciwgZWxlbWVudFJlZiwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgXHJcblx0ICogZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdPbkluaXQoKSB7XHJcblx0XHQvKiBMaXN0ZW4gdG8gdmFsdWUgY2hhbmdlcyBvZiB0aGUgc2VhcmNoIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXHJcblx0XHRcdC5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJPcHRpb25zKHYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5uZ0NvbnRyb2w/LnZhbHVlQ2hhbmdlcz8ucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0aWYgKCF2YWx1ZSkge1xyXG5cdFx0XHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHRcdFx0XHR0aGlzLl92YWx1ZSA9IFwiXCI7XHJcblx0XHRcdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5zZXRWYWx1ZShcIlwiKTtcclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSgpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5tZWRpYS5icm9hZGNhc3QoKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPz89IG5ldyBUYWJsZURhdGFTb3VyY2U8YW55LCBhbnk+KHRoaXMuc2VydmljZSEsIHRoaXMucGFnaW5hdG9yLCB0aGlzLnNvcnQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0LyogU2V0IHRoZSB2YWx1ZSAqL1xyXG5cdFx0dGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHQvKiBDbGVhciB0aGUgY2hpcHMgbGlzdCAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdGlmICh2YWx1ZSAmJiB0aGlzLmNoaXBzPy5sZW5ndGggPD0gMCkge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHRsZXQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdFx0XHQvKiBBZGQgaW5jbHVkZXMgZnJvbSBwYXJhbXMsIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5fcGFyYW1zPy5pbmNsdWRlcykge1xyXG5cdFx0XHRcdF9wYXJhbXMuaW5jbHVkZXMgPSB0aGlzLl9wYXJhbXMuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uIGZyb20gcGFyYW1zLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMuX3BhcmFtcz8ucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IHRoaXMuX3BhcmFtcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRfcGFyYW1zLnByb2plY3Rpb24gPSBBcnJheS5pc0FycmF5KHRoaXMucHJvamVjdGlvbikgPyB0aGlzLnByb2plY3Rpb24uam9pbignLCcpIDogdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBHZXQgYmFzZSB1cmwgKi9cclxuXHRcdFx0dmFyIHVybFBhcnRzID0gdGhpcy5zZXJ2aWNlPy5lbmRwb2ludD8uc3BsaXQoJz8nKTtcclxuXHRcdFx0dGhpcy5zZXJ2aWNlLmh0dHAuZ2V0KGAke3VybFBhcnRzWzBdfS8ke3ZhbHVlfSR7dXJsUGFydHMubGVuZ3RoID4gMSA/IGA/JHt1cmxQYXJ0c1sxXX1gIDogJyd9YCwgeyBwYXJhbXM6IFV0aWxzLmNsZWFuT2JqZWN0KF9wYXJhbXMpIH0pLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHg6IGFueSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblxyXG5cdFx0XHRcdFx0LyogQWRkIGNoaXAgZm9yIHNlbGVjdGVkIG9wdGlvbiAqL1xyXG5cdFx0XHRcdFx0dGhpcy5jaGlwcy5wdXNoKHgpO1xyXG5cclxuXHRcdFx0XHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdFx0XHRcdHRoaXMuaW5pdFNlbGVjdC5lbWl0KHgpO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuY2xlYXIoZmFsc2UpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29ubmVjdHMgdGhlIGRhdGEgc291cmNlIGFuZCBzdWJzY3JpYmUgdG8gdGhlIGRhdGEgY2hhbmdlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KCk6IHZvaWQge1xyXG5cdFx0LyogU2V0IGZvY3VzICovXHJcblx0XHR0aGlzLm9wZW5lZCA9IHRydWU7XHJcblxyXG5cdFx0LyogU2V0IHNvbWUgcGFyYW1zICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzID0gdGhpcy5nZXRRdWVyeVBhcmFtcygpO1xyXG5cclxuXHRcdC8qIENvbm5lY3QgdGhlIGRhdGEgc291cmNlIG1hbnVhbGx5IGZvciAnbWF0LW9wdGlvbicgdHJpZ2dlcnMgKi9cclxuXHRcdGlmICghdGhpcy5jbGFzc1R5cGUgJiYgIXRoaXMuZGF0YVNvdXJjZT8uaXNDb25uZWN0ZWQpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2UuY29ubmVjdCgpLnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIENoZWNrIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGl0cyBjaGlsZHJlbiAqL1xyXG5cdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIGNvbnRyb2wgZm9jdXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXMoKTogdm9pZCB7XHJcblx0XHQvLyB0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0Py5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBhIGNoaXBcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICogQHBhcmFtIGlucHV0IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGRDaGlwKHZhbHVlOiBhbnksIGlucHV0OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGlwIGZvciBzZWxlY3RlZCBvcHRpb24gKi9cclxuXHRcdHRoaXMuY2hpcHMgPSBbdmFsdWVdO1xyXG5cclxuXHRcdC8qIEVtaXQgc2VsZWN0ZWQgZXZlbnQgKi9cclxuXHRcdHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XHJcblxyXG5cdFx0LyogXHRTZXQgdGhlIHZhbHVlIChuZ01vZGVsKSAqL1xyXG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlW3RoaXMua2V5XTtcclxuXHJcblx0XHQvKiBEaWFibGVkIHRoZSBpbnB1dCwgYWxsb3cgb25seSBvbmUgY2hpcCAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QucGF0Y2hWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgaW5wdXQgdGV4dCB2YWx1ZSAqL1xyXG5cdFx0aWYgKGlucHV0KSB7XHJcblx0XHRcdGlucHV0LnZhbHVlID0gJyc7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2xvc2UgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCwgaWYgbm90IGFscmVhZHkgZG9uZSAoZm9yIHRhYmxlIHJvdyBjbGljaykgKi9cclxuXHRcdHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmVzIGFsbCBjaGlwc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjbGVhcih0cmlnZ2VyU3RhdGVDaGFuZ2VzOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0LyogUmVtb3ZlIGtleSBmcm9tIGNoaXBzIGFycmF5ICovXHJcblx0XHR0aGlzLnZhbHVlID0gbnVsbDtcclxuXHRcdHRoaXMuY2hpcHMgPSBbXTtcclxuXHJcblx0XHQvKiBNYXJrIHRoZSBjb250cm9sIGFzIHRvdWNoZWQgKi9cclxuXHRcdGlmICh0aGlzLm5nQ29udHJvbC5jb250cm9sKSB7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlc2V0IHRoZSB2YWx1ZSAobmdNb2RlbCkgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QucGF0Y2hWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cclxuXHRcdGlmICh0cmlnZ2VyU3RhdGVDaGFuZ2VzKSB7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBFbmFibGUgdGhlIGlucHV0ICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogQ2hlY2sgdGhlIGNoYW5nZSBkZXRlY3RvciBhbmQgaXRzIGNoaWxkcmVuICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpbHRlcnMgb3B0aW9uc1xyXG5cdCAqIEBwYXJhbSB0ZXh0IFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZmlsdGVyT3B0aW9ucyh0ZXh0OiBzdHJpbmcpIHtcclxuXHRcdC8qIEZpbHRlciB0aGUgcmVzdWx0cyAqL1xyXG5cdFx0aWYgKHRoaXMuZGF0YVNvdXJjZSkge1xyXG5cdFx0XHQvKiBJbml0IHBhcmFtcyBpZiBudWxsICovXHJcblx0XHRcdGxldCBfcGFyYW1zID0geyAuLi50aGlzLmdldFF1ZXJ5UGFyYW1zKCkgfTtcclxuXHJcblx0XHRcdC8qIEFkZCBzZWFyY2ggd29yZCB0byB0aGUgcGFyYW1zICovXHJcblx0XHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkICYmIHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA8PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWModGhpcy5zZWFyY2hGaWVsZCk7XHJcblx0XHRcdFx0X3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBzZWFyY2ggd29yZCB0byB0aGUgcGFyYW1zICovXHJcblx0XHRcdHRoaXMuc2VhcmNoRmllbGRzPy5tYXAoeCA9PiB4LnRyaW0oKSk/LmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IG5ldyBSZWdFeHAoYChcXFxcJHt0aGlzLnNlYXJjaE9wZXJhdG9ycy5qb2luKCd8XFxcXCcpfSk/KC4qKWApLmV4ZWMoeCk7XHJcblx0XHRcdFx0X3BhcmFtc1tyZXN1bHRbMl1dID0gYCR7cmVzdWx0WzFdID8gcmVzdWx0WzFdIDogJyd9JHt0ZXh0fWA7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogTm90aGluZyBoYXMgY2hhbmdlZD8gKi9cclxuXHRcdFx0aWYgKFV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIF9wYXJhbXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBTZXQgcGFyYW1zICovXHJcblx0XHRcdHRoaXMuX3BhcmFtcyA9IF9wYXJhbXM7XHJcblxyXG5cdFx0XHQvKiBHZXQgcmVzdWx0cyBmcm9tIHNlcnZlciAqL1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UuYXBwbHlGaWx0ZXJzKHRoaXMuX3BhcmFtcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIHJlbW92ZWQgZXZlbnRcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlUmVtb3ZlZEV2ZW50KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5jbGVhcmVkPy5lbWl0KHRoaXMudmFsdWUpO1xyXG5cdFx0aWYgKHRoaXMucmVtb3ZhYmxlKSB7XHJcblx0XHRcdHRoaXMuY2xlYXIoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgbGF1bmNoIGJ1dHRvbiBjbGlja1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVMYXVuY2hDbGlja2VkKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMuY2hpcHM/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5vbkxhdW5jaC5lbWl0KHRoaXMuY2hpcHNbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBxdWVyeSBwYXJhbXNcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0UXVlcnlQYXJhbXMoKTogYW55IHtcclxuXHRcdC8qIEluaXQgcGFyYW1zIGlmIG51bGwgKi9cclxuXHRcdHZhciBwYXJhbXMgPSB0aGlzLl9wYXJhbXMgfHwge307XHJcblxyXG5cdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRwYXJhbXMucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcGFyYW1zO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBwZXJmb3JtcyBjdXN0b20gY2xlYW4tdXAsIGludm9rZWQgaW1tZWRpYXRlbHlcclxuXHQgKiBiZWZvcmUgYSBkaXJlY3RpdmUsIHBpcGUsIG9yIHNlcnZpY2UgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuXHR9XHJcbn0iLCI8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgbWF0QXV0b2NvbXBsZXRlT3JpZ2luICNvcmlnaW49XCJtYXRBdXRvY29tcGxldGVPcmlnaW5cIj5cclxuXHQ8IS0tICNyZWdpb24gQ2hpcHMgLS0+XHJcblx0PG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGZpcnN0ID0gZmlyc3Q7IGxldCBpbmRleCA9IGluZGV4XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiIGRpc2FibGVSaXBwbGU+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgY2hpcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiY2hpcFRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjaGlwOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9zcGFuPlxyXG5cdFx0PGEgbWF0Q2hpcFRyYWlsaW5nSWNvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIHN1ZmZpeEJ1dHRvbnM7IGxldCBmaXJzdCA9IGZpcnN0XCIgW2hpZGRlbl09XCJidXR0b24uaGlkZSAmJiBidXR0b24uaGlkZShjaGlwc1swXSwgY29udGV4dClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBidXR0b24uZXZlbnQgJiYgYnV0dG9uLmV2ZW50KGNoaXBzWzBdLCBjb250ZXh0KVwiPlxyXG5cdFx0XHQ8bWF0LWljb24+e3tidXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuXHRcdDwvYT5cclxuXHRcdDxhIG1hdENoaXBUcmFpbGluZ0ljb24gKm5nSWY9XCJvbkxhdW5jaD8ub2JzZXJ2ZXJzPy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbj5sYXVuY2g8L21hdC1pY29uPlxyXG5cdFx0PC9hPlxyXG5cdFx0PGEgbWF0Q2hpcFRyYWlsaW5nSWNvbiAqbmdJZj1cIiFyZWFkb25seVwiIChjbGljayk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiPlxyXG5cdFx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG5cdFx0PC9hPlxyXG5cdDwvbWF0LWNoaXAtcm93PlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIFNlYXJjaCBib3ggLS0+XHJcblx0PGlucHV0IG1hdElucHV0IFtoaWRkZW5dPVwidmFsdWUgJiYgIWVtcHR5XCIgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIiAoZm9jdXMpPVwiY29ubmVjdCgpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJvcmlnaW5cIiBbZm9ybUNvbnRyb2xdPVwiYXV0b0NvbXBsZXRlQ2hpcExpc3RcIiAjZmlsdGVySW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBSZXNldCBidXR0b24gLS0+XHJcblx0PGEgbWF0LWljb24tYnV0dG9uIHRyYWlsaW5nSWNvbiAqbmdJZj1cImZpbHRlcklucHV0LnZhbHVlXCIgY2xhc3M9XCJyZXNldC1pbnB1dFwiIChjbGljayk9XCJmaWx0ZXJJbnB1dC52YWx1ZSA9ICcnXCI+XHJcblx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG5cdDwvYT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBQcm9ncmVzcyAtLT5cclxuXHQ8IS0tIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjE4XCIgKm5nSWY9XCJkYXRhU291cmNlPy5pc0xvYWRpbmdcIj48L21hdC1zcGlubmVyPiAtLT5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvbWF0LWNoaXAtZ3JpZD5cclxuXHJcbjwhLS0gI3JlZ2lvbiBBdXRvY29tcGxldGUgLS0+XHJcbjxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImFkZENoaXAoJGV2ZW50Lm9wdGlvbi52YWx1ZSwgZmlsdGVySW5wdXQpXCIgY2xhc3M9XCJ7e2F1dG9jb21wbGV0ZUNzc0NsYXNzfX17e2NsYXNzVHlwZT8nIHRhYmxlLWF1dG9jb21wbGV0ZSc6Jyd9fVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSAqbmdJZj1cIiFjbGFzc1R5cGUgJiYgb3BlbmVkXCIgbGV0LWl0ZW0gbGV0LWZpcnN0PVwiZmlyc3RcIiBuZ0ZvciBbbmdGb3JPZl09XCJkYXRhU291cmNlPy5pdGVtc1wiPlxyXG5cdFx0PG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cclxuXHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3tpdGVtfX08L3NwYW4+XHJcblx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbjogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdDwvbWF0LW9wdGlvbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGFzc1R5cGUgJiYgb3BlbmVkXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBoaWRlPVwidHJ1ZVwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdDx2ZC1keW5hbWljLXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbY2xhc3NUeXBlXT1cImNsYXNzVHlwZVwiIChyb3dDbGljayk9XCJhZGRDaGlwKCRldmVudCwgZmlsdGVySW5wdXQpXCIgbWF0U29ydCBbc29ydEFjdGl2ZV09XCJzb3J0QWN0aXZlfHwnaWQnXCIgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiPjwvdmQtZHluYW1pYy10YWJsZT5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHQ8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cImRhdGFTb3VyY2U/LnRvdGFsXCIgW3BhZ2VJbmRleF09XCJkYXRhU291cmNlPy5wYWdlSW5kZXhcIiBbcGFnZVNpemVdPVwiZGF0YVNvdXJjZT8ucGFnZVNpemVcIiBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiIHNob3dGaXJzdExhc3RCdXR0b25zPVwidHJ1ZVwiIGhpZGVQYWdlU2l6ZT1cInRydWVcIj48L21hdC1wYWdpbmF0b3I+XHJcbjwvbWF0LWF1dG9jb21wbGV0ZT5cclxuPCEtLSAjZW5kcmVnaW9uIC0tPiJdfQ==
|
|
485
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvY2hpcHMvY29tcG9uZW50cy9jaGlwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9jaGlwcy9jb21wb25lbnRzL2NoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQWlCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pNLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBaUIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQWdCLE1BQU0sNEJBQTRC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QkYsTUFBTTtzQkFEVCxLQUFLO2dCQW9CRixVQUFVO3NCQURiLEtBQUs7Z0JBMkJGLFNBQVM7c0JBRFosS0FBSztnQkFZQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsR0FBRztzQkFEVCxLQUFLO2dCQU9DLFdBQVc7c0JBRGpCLEtBQUs7Z0JBT0MsWUFBWTtzQkFEbEIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFZQyxVQUFVO3NCQURoQixNQUFNO2dCQU9BLFFBQVE7c0JBRGQsTUFBTTtnQkFPQSxPQUFPO3NCQURiLE1BQU07Z0JBT0EsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBT1QsYUFBYTtzQkFEbkIsS0FBSztnQkFTQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmLCBUeXBlLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciwgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgc2tpcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UsIFN1ZmZpeEJ1dHRvbiB9IGZyb20gJy4uLy4uL2NvbW1vbi9jb21tb24ubW9kdWxlJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgVmRNZWRpYVNlcnZpY2UgfSBmcm9tICcuLi8uLi9tZWRpYS9zZXJ2aWNlcy9tZWRpYS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5kYXRhLXNvdXJjZSc7XHJcbmltcG9ydCB7IFZkQXV0b2NvbXBsZXRlT3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9hdXRvY29tcGxldGUtb3B0aW9uLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFZkQ2hpcERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY2hpcC5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICd2ZC1jaGlwcycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NoaXBzLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jaGlwcy5jb21wb25lbnQuc2NzcyddLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0eyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRDaGlwc0NvbXBvbmVudCB9LFxyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyxcclxuXHRcdFx0dXNlVmFsdWU6IHsgb3ZlcmxheVBhbmVsQ2xhc3M6ICd2ZC1jaGlwcy1hdXRvY29tcGxldGUnIH1cclxuXHRcdH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZENoaXBzQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8YW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcblx0LyoqXHJcblx0ICogX2R5bmFtaWNUYWJsZTogTWF0UGFnaW5hdG9yXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZHluYW1pY1RhYmxlOiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gVmREeW5hbWljVGFibGVDb21wb25lbnQgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoVmREeW5hbWljVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBnZXQgZHluYW1pY1RhYmxlKCk6IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IHsgcmV0dXJuIHRoaXMuX2R5bmFtaWNUYWJsZTsgfVxyXG5cdHB1YmxpYyBzZXQgZHluYW1pY1RhYmxlKGR5bmFtaWNUYWJsZTogVmREeW5hbWljVGFibGVDb21wb25lbnQpIHtcclxuXHRcdHRoaXMuX2R5bmFtaWNUYWJsZSA9IGR5bmFtaWNUYWJsZTtcclxuXHRcdGlmICh0aGlzLl9keW5hbWljVGFibGUpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLl9keW5hbWljVGFibGUubWF0U29ydDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0eXBlIG9mIHRoZSBjbGFzcyBmb3IgdGhlIGR5eW5hbWljIHRhYmxlXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2xhc3NUeXBlOiBUeXBlPGFueT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYWdpbmF0b3I6IE1hdFBhZ2luYXRvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFBhZ2luYXRvciBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHNldCBwYWdpbmF0b3IocGFnaW5hdG9yOiBNYXRQYWdpbmF0b3IpIHsgdGhpcy5fcGFnaW5hdG9yID0gcGFnaW5hdG9yOyB9XHJcblx0cHVibGljIGdldCBwYWdpbmF0b3IoKTogTWF0UGFnaW5hdG9yIHsgcmV0dXJuIHRoaXMuX3BhZ2luYXRvcjsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgc29ydDogTWF0U29ydDtcclxuXHJcblx0LyoqXHJcblx0ICogUGFnZSBzaXplIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgY29sdW1uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnRBY3RpdmU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBzb3J0IGRpcmVjdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBEYXRhLXRhYmxlIGRhdGFzb3VyY2VcclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPGFueSwgYW55PiB8IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRhdGFTb3VyY2VPYnNlcnZhYmxlOiBTdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZGF0YVNvdXJjZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgdXAgcmVhY3RpdmUgZm9ybWNvbnRyb2xcclxuXHQgKi9cclxuXHRwdWJsaWMgYXV0b0NvbXBsZXRlQ2hpcExpc3Q6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblx0LyoqIFxyXG5cdCAqIFRoZSBzZWxlY3QgZWxlbWVudC5cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjtcclxuXHQvKipcclxuXHQgKiBzZWFyY2hPcGVyYXRvcnM6IHN0cmluZ1tdXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaE9wZXJhdG9yczogc3RyaW5nW10gPSBbXCIhPVwiLCBcIiFcIiwgXCI8PlwiLCBcIj49XCIsIFwiPlwiLCBcIjw9XCIsIFwiPFwiLCBcIl5cIiwgXCIkXCIsIFwiflwiXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgY2hpcHNcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjaGlwcyA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBWZENoaXAgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkQ2hpcERpcmVjdGl2ZSlcclxuXHRwdWJsaWMgY2hpcFRlbXBsYXRlOiBWZENoaXBEaXJlY3RpdmU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEF1dG9jb21wbGV0ZU9wdGlvbiB0ZW1wbGF0ZVxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRBdXRvY29tcGxldGVPcHRpb25EaXJlY3RpdmUpXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlOiBWZEF1dG9jb21wbGV0ZU9wdGlvbkRpcmVjdGl2ZTtcclxuXHJcblx0LyoqXHJcblx0ICogYXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGF1dG9jb21wbGV0ZTogTWF0QXV0b2NvbXBsZXRlO1xyXG5cclxuXHQvKipcclxuXHQgKiBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG5cclxuXHQvKipcclxuXHQgKiBfZW5kcG9pbnQ6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIG9yIHNldHMgZW5kcG9pbnRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBlbmRwb2ludCgpOiBzdHJpbmcgfCBGdW5jdGlvbiB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHNldCBlbmRwb2ludChlbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb24pIHtcclxuXHRcdHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7XHJcblx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0eXBlb2YgZW5kcG9pbnQgPT09ICdmdW5jdGlvbicgPyBlbmRwb2ludCh0aGlzKSA6ICg8c3RyaW5nPmVuZHBvaW50KTtcclxuXHRcdHRoaXMuY2xlYXIoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcGFyYW1zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhcmFtczogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0LyogUmVtb3ZlIGVtcHR5IHBhcmFtcyAqL1xyXG5cdFx0VXRpbHMuY2xlYW5PYmplY3QocGFyYW1zKTtcclxuXHJcblx0XHRpZiAoIVV0aWxzLmVxdWFscyh0aGlzLl9wYXJhbXMsIHBhcmFtcykpIHtcclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogX3Byb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIHByb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHByb2plY3Rpb24oKSB7IHJldHVybiB0aGlzLl9wcm9qZWN0aW9uOyB9XHJcblx0c2V0IHByb2plY3Rpb24ocHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10pIHtcclxuXHRcdHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uO1xyXG5cdFx0dGhpcy5jbGVhcigpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyB0aGUgZGlzYWJsZWQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuXHRcdGlmICh0aGlzLl9yZWFkb25seSkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gc3VwZXIuZGlzYWJsZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWFkb25seVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcGFnaW5hdGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogTXVsdGlwbGUgc2VsZWN0IG9wdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHBhZ2luYXRlZCgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3BhZ2luYXRlZDsgfVxyXG5cdHNldCBwYWdpbmF0ZWQocGFnaW5hdGVkOiBib29sZWFuKSB7XHJcblx0XHR0aGlzLl9wYWdpbmF0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocGFnaW5hdGVkKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNvbnRleHQ6IGFueVxyXG5cdCAqIFRoZSBjdXJyZW50IGNvbnRleHRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGtleTogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZDogc3RyaW5nXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VhcmNoRmllbGQ6IHN0cmluZyA9ICdzZWFyY2gnO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZHM6IHN0cmluZ1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogcmVtb3ZhYmxlOiBib29sZWFuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcmVtb3ZhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogZGVib3VuY2U/OiBudW1iZXJcclxuXHQgKiBEZWJvdW5jZSB0aW1lb3V0IGJldHdlZW4ga2V5cHJlc3Nlcy4gRGVmYXVsdHMgdG8gNDAwLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGRlYm91bmNlOiBudW1iZXIgPSA0MDA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGF1dG9jb21wbGV0ZUNzc0NsYXNzOiBzdHJpbmdcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBhdXRvY29tcGxldGVDc3NDbGFzczogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIG9wZW5lZDogYm9vbGVhblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuZWQ6IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIGluaXRTZWxlY3Q/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoKVxyXG5cdHB1YmxpYyBpbml0U2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgpXHJcblx0cHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBjbGVhcmVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgY2xlYXJlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogbGF1bmNoPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKVxyXG5cdHB1YmxpYyBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc3VmZml4QnV0dG9uczogU3VmZml4QnV0dG9uPGFueT5bXVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHN1ZmZpeEJ1dHRvbnM6IFN1ZmZpeEJ1dHRvbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNoaXBGb2N1cz86IGZ1bmN0aW9uXHJcblx0ICogTWV0aG9kIHRvIGJlIGV4ZWN1dGVkIHdoZW4gYSBjaGlwIGlzIGZvY3VzZWQuXHJcblx0ICogU2VuZHMgY2hpcCB2YWx1ZSBhcyBldmVudC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KClcclxuXHRwdWJsaWMgY2hpcEZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBgTWF0Rm9ybUZpZWxkYCBsYWJlbCBzaG91bGQgdHJ5IHRvIGZsb2F0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpOiBib29sZWFuIHsgcmV0dXJuIHN1cGVyLnNob3VsZExhYmVsRmxvYXQgfHwgdGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdD8udmFsdWU7IH1cclxuXHJcblx0LyoqXHJcblx0ICogbG9hZGluZzogYm9vbGVhblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkaW5nOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBlbXB0eVJlc3VsdDogYm9vbGVhblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBlbXB0eVJlc3VsdDogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogc2VydmljZTogQmFzZVNlcnZpY2VcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VydmljZTogQmFzZVNlcnZpY2UgPSBuZXcgQmFzZVNlcnZpY2UoKTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gaW5qZWN0b3IgXHJcblx0ICogQHBhcmFtIG1lZGlhIFxyXG5cdCAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBcclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtR3JvdXAgXHJcblx0ICogQHBhcmFtIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciBcclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIFxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuXHRcdHB1YmxpYyBtZWRpYTogVmRNZWRpYVNlcnZpY2UsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0QE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG5cdFx0ZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcclxuXHRcdGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG5cdCkge1xyXG5cdFx0c3VwZXIoXCJhcHAtdmQtY2hpcHNcIiwgbmdDb250cm9sLCBwYXJlbnRGb3JtLCBwYXJlbnRGb3JtR3JvdXAsIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciwgZm9jdXNNb25pdG9yLCBlbGVtZW50UmVmLCBjaGFuZ2VEZXRlY3RvclJlZik7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBcclxuXHQgKiBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuXHRcdC8qIExpc3RlbiB0byB2YWx1ZSBjaGFuZ2VzIG9mIHRoZSBzZWFyY2ggaW5wdXQgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QudmFsdWVDaGFuZ2VzXHJcblx0XHRcdC5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSlcclxuXHRcdFx0LnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdFx0XHR0aGlzLmZpbHRlck9wdGlvbnModik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHR0aGlzLm5nQ29udHJvbD8udmFsdWVDaGFuZ2VzPy5waXBlKHNraXAoMSkpLnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cdFx0XHRcdHRoaXMuX3ZhbHVlID0gXCJcIjtcclxuXHRcdFx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LnNldFZhbHVlKFwiXCIpO1xyXG5cdFx0XHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QuZW5hYmxlKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgYSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLm1lZGlhLmJyb2FkY2FzdCgpO1xyXG5cclxuXHRcdC8qIEluaXRpbGlhbGl6ZSB0aGUgZGF0YSBzb3VyY2Ugd2l0aCB0aGUgY3VycmVudCBzZXJ2aWNlLCBwYWdpbmF0b3IgYW5kIHNvcnQgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZSA/Pz0gbmV3IFRhYmxlRGF0YVNvdXJjZTxhbnksIGFueT4odGhpcy5zZXJ2aWNlISwgdGhpcy5wYWdpbmF0b3IsIHRoaXMuc29ydCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHQvKiBTZXQgdGhlIHZhbHVlICovXHJcblx0XHR0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG5cclxuXHRcdC8qIENsZWFyIHRoZSBjaGlwcyBsaXN0ICovXHJcblx0XHR0aGlzLmNoaXBzID0gW107XHJcblxyXG5cdFx0aWYgKHZhbHVlICYmIHRoaXMuY2hpcHM/Lmxlbmd0aCA8PSAwKSB7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdGxldCBfcGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcblx0XHRcdC8qIEFkZCBpbmNsdWRlcyBmcm9tIHBhcmFtcywgaWYgYW55ICovXHJcblx0XHRcdGlmICh0aGlzLl9wYXJhbXM/LmluY2x1ZGVzKSB7XHJcblx0XHRcdFx0X3BhcmFtcy5pbmNsdWRlcyA9IHRoaXMuX3BhcmFtcy5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWRkIHByb2plY3Rpb24gZnJvbSBwYXJhbXMsIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGhpcy5fcGFyYW1zPy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0X3BhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5fcGFyYW1zLnByb2plY3Rpb247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdF9wYXJhbXMucHJvamVjdGlvbiA9IEFycmF5LmlzQXJyYXkodGhpcy5wcm9qZWN0aW9uKSA/IHRoaXMucHJvamVjdGlvbi5qb2luKCcsJykgOiB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEdldCBiYXNlIHVybCAqL1xyXG5cdFx0XHR2YXIgdXJsUGFydHMgPSB0aGlzLnNlcnZpY2U/LmVuZHBvaW50Py5zcGxpdCgnPycpO1xyXG5cdFx0XHR0aGlzLnNlcnZpY2UuaHR0cC5nZXQoYCR7dXJsUGFydHNbMF19LyR7dmFsdWV9JHt1cmxQYXJ0cy5sZW5ndGggPiAxID8gYD8ke3VybFBhcnRzWzFdfWAgOiAnJ31gLCB7IHBhcmFtczogVXRpbHMuY2xlYW5PYmplY3QoX3BhcmFtcykgfSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAoeDogYW55KSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHJcblx0XHRcdFx0XHQvKiBBZGQgY2hpcCBmb3Igc2VsZWN0ZWQgb3B0aW9uICovXHJcblx0XHRcdFx0XHR0aGlzLmNoaXBzLnB1c2goeCk7XHJcblxyXG5cdFx0XHRcdFx0LyogRW1pdCBzZWxlY3RlZCBldmVudCAqL1xyXG5cdFx0XHRcdFx0dGhpcy5pbml0U2VsZWN0LmVtaXQoeCk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0ZXJyb3I6ICgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jbGVhcihmYWxzZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25uZWN0cyB0aGUgZGF0YSBzb3VyY2UgYW5kIHN1YnNjcmliZSB0byB0aGUgZGF0YSBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHVibGljIGNvbm5lY3QoKTogdm9pZCB7XHJcblx0XHQvKiBTZXQgZm9jdXMgKi9cclxuXHRcdHRoaXMub3BlbmVkID0gdHJ1ZTtcclxuXHJcblx0XHQvKiBTZXQgc29tZSBwYXJhbXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKCk7XHJcblxyXG5cdFx0LyogQ29ubmVjdCB0aGUgZGF0YSBzb3VyY2UgbWFudWFsbHkgZm9yICdtYXQtb3B0aW9uJyB0cmlnZ2VycyAqL1xyXG5cdFx0aWYgKCF0aGlzLmNsYXNzVHlwZSAmJiAhdGhpcy5kYXRhU291cmNlPy5pc0Nvbm5lY3RlZCkge1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2VTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KCkuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2hlY2sgdGhlIGNoYW5nZSBkZXRlY3RvciBhbmQgaXRzIGNoaWxkcmVuICovXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHMgY29udHJvbCBmb2N1c1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcclxuXHRcdHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgY2hpcFxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKiBAcGFyYW0gaW5wdXQgXHJcblx0ICovXHJcblx0cHVibGljIGFkZENoaXAodmFsdWU6IGFueSwgaW5wdXQ6IGFueSk6IHZvaWQge1xyXG5cdFx0LyogQWRkIGNoaXAgZm9yIHNlbGVjdGVkIG9wdGlvbiAqL1xyXG5cdFx0dGhpcy5jaGlwcyA9IFt2YWx1ZV07XHJcblxyXG5cdFx0LyogRW1pdCBzZWxlY3RlZCBldmVudCAqL1xyXG5cdFx0dGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHQvKiBcdFNldCB0aGUgdmFsdWUgKG5nTW9kZWwpICovXHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWVbdGhpcy5rZXldO1xyXG5cclxuXHRcdC8qIERpYWJsZWQgdGhlIGlucHV0LCBhbGxvdyBvbmx5IG9uZSBjaGlwICovXHJcblx0XHR0aGlzLmF1dG9Db21wbGV0ZUNoaXBMaXN0LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBpbnB1dCB0ZXh0IHZhbHVlICovXHJcblx0XHRpZiAoaW5wdXQpIHtcclxuXHRcdFx0aW5wdXQudmFsdWUgPSAnJztcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDbG9zZSB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsLCBpZiBub3QgYWxyZWFkeSBkb25lIChmb3IgdGFibGUgcm93IGNsaWNrKSAqL1xyXG5cdFx0dGhpcy5hdXRvY29tcGxldGVUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbW92ZXMgYWxsIGNoaXBzXHJcblx0ICovXHJcblx0cHVibGljIGNsZWFyKHRyaWdnZXJTdGF0ZUNoYW5nZXM6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHQvKiBSZW1vdmUga2V5IGZyb20gY2hpcHMgYXJyYXkgKi9cclxuXHRcdHRoaXMudmFsdWUgPSBudWxsO1xyXG5cdFx0dGhpcy5jaGlwcyA9IFtdO1xyXG5cclxuXHRcdC8qIE1hcmsgdGhlIGNvbnRyb2wgYXMgdG91Y2hlZCAqL1xyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVzZXQgdGhlIHZhbHVlIChuZ01vZGVsKSAqL1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVDaGlwTGlzdC5wYXRjaFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG5cdFx0aWYgKHRyaWdnZXJTdGF0ZUNoYW5nZXMpIHtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEVuYWJsZSB0aGUgaW5wdXQgKi9cclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlQ2hpcExpc3QuZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcblx0XHQvKiBDaGVjayB0aGUgY2hhbmdlIGRldGVjdG9yIGFuZCBpdHMgY2hpbGRyZW4gKi9cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRmlsdGVycyBvcHRpb25zXHJcblx0ICogQHBhcmFtIHRleHQgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHRleHQ6IHN0cmluZykge1xyXG5cdFx0LyogRmlsdGVyIHRoZSByZXN1bHRzICovXHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcblx0XHRcdC8qIEluaXQgcGFyYW1zIGlmIG51bGwgKi9cclxuXHRcdFx0bGV0IF9wYXJhbXMgPSB7IC4uLnRoaXMuZ2V0UXVlcnlQYXJhbXMoKSB9O1xyXG5cclxuXHRcdFx0LyogQWRkIHNlYXJjaCB3b3JkIHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0aWYgKHRoaXMuc2VhcmNoRmllbGQgJiYgdGhpcy5zZWFyY2hGaWVsZHMubGVuZ3RoIDw9IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh0aGlzLnNlYXJjaEZpZWxkKTtcclxuXHRcdFx0XHRfcGFyYW1zW3Jlc3VsdFsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogQWRkIHNlYXJjaCB3b3JkIHRvIHRoZSBwYXJhbXMgKi9cclxuXHRcdFx0dGhpcy5zZWFyY2hGaWVsZHM/Lm1hcCh4ID0+IHgudHJpbSgpKT8uZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gbmV3IFJlZ0V4cChgKFxcXFwke3RoaXMuc2VhcmNoT3BlcmF0b3JzLmpvaW4oJ3xcXFxcJyl9KT8oLiopYCkuZXhlYyh4KTtcclxuXHRcdFx0XHRfcGFyYW1zW3Jlc3VsdFsyXV0gPSBgJHtyZXN1bHRbMV0gPyByZXN1bHRbMV0gOiAnJ30ke3RleHR9YDtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBOb3RoaW5nIGhhcyBjaGFuZ2VkPyAqL1xyXG5cdFx0XHRpZiAoVXRpbHMuZXF1YWxzKHRoaXMuX3BhcmFtcywgX3BhcmFtcykpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIFNldCBwYXJhbXMgKi9cclxuXHRcdFx0dGhpcy5fcGFyYW1zID0gX3BhcmFtcztcclxuXHJcblx0XHRcdC8qIEdldCByZXN1bHRzIGZyb20gc2VydmVyICovXHJcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5hcHBseUZpbHRlcnModGhpcy5fcGFyYW1zKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMgcmVtb3ZlZCBldmVudFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVSZW1vdmVkRXZlbnQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmNsZWFyZWQ/LmVtaXQodGhpcy52YWx1ZSk7XHJcblx0XHRpZiAodGhpcy5yZW1vdmFibGUpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBsYXVuY2ggYnV0dG9uIGNsaWNrXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUxhdW5jaENsaWNrZWQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5jaGlwcz8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHR0aGlzLm9uTGF1bmNoLmVtaXQodGhpcy5jaGlwc1swXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHF1ZXJ5IHBhcmFtc1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRRdWVyeVBhcmFtcygpOiBhbnkge1xyXG5cdFx0LyogSW5pdCBwYXJhbXMgaWYgbnVsbCAqL1xyXG5cdFx0dmFyIHBhcmFtcyA9IHRoaXMuX3BhcmFtcyB8fCB7fTtcclxuXHJcblx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gdGhpcy5wcm9qZWN0aW9uO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwYXJhbXM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHBlcmZvcm1zIGN1c3RvbSBjbGVhbi11cCwgaW52b2tlZCBpbW1lZGlhdGVseVxyXG5cdCAqIGJlZm9yZSBhIGRpcmVjdGl2ZSwgcGlwZSwgb3Igc2VydmljZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufSIsIjxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cclxuXHQ8IS0tICNyZWdpb24gQ2hpcHMgLS0+XHJcblx0PG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGZpcnN0ID0gZmlyc3Q7IGxldCBpbmRleCA9IGluZGV4XCIgW3JlbW92YWJsZV09XCIhcmVhZG9ubHlcIiAocmVtb3ZlZCk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiIGRpc2FibGVSaXBwbGU+XHJcblx0XHQ8c3BhbiBjbGFzcz1cInZkLWNoaXAtY29udGVudFwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFjaGlwVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+XHJcblx0XHRcdFx0PHNwYW4gKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCI+e3sgY2hpcCB9fTwvc3Bhbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IGNoaXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiY2hpcFRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBUZW1wbGF0ZT8udGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjaGlwOiBjaGlwIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9zcGFuPlxyXG5cdFx0PGEgbWF0Q2hpcFRyYWlsaW5nSWNvbiAqbmdGb3I9XCJsZXQgYnV0dG9uIG9mIHN1ZmZpeEJ1dHRvbnM7IGxldCBmaXJzdCA9IGZpcnN0XCIgW2hpZGRlbl09XCJidXR0b24uaGlkZSAmJiBidXR0b24uaGlkZShjaGlwc1swXSwgY29udGV4dClcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBidXR0b24uZXZlbnQgJiYgYnV0dG9uLmV2ZW50KGNoaXBzWzBdLCBjb250ZXh0KVwiPlxyXG5cdFx0XHQ8bWF0LWljb24+e3tidXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuXHRcdDwvYT5cclxuXHRcdDxhIG1hdENoaXBUcmFpbGluZ0ljb24gKm5nSWY9XCJvbkxhdW5jaD8ub2JzZXJ2ZXJzPy5sZW5ndGggPiAwXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgaGFuZGxlTGF1bmNoQ2xpY2tlZCgpXCI+XHJcblx0XHRcdDxtYXQtaWNvbj5sYXVuY2g8L21hdC1pY29uPlxyXG5cdFx0PC9hPlxyXG5cdFx0PGEgbWF0Q2hpcFRyYWlsaW5nSWNvbiAqbmdJZj1cIiFyZWFkb25seVwiIChjbGljayk9XCJoYW5kbGVSZW1vdmVkRXZlbnQoKVwiPlxyXG5cdFx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG5cdFx0PC9hPlxyXG5cdDwvbWF0LWNoaXAtcm93PlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIFNlYXJjaCBib3ggLS0+XHJcblx0PGlucHV0IG1hdElucHV0IFtoaWRkZW5dPVwidmFsdWUgJiYgIWVtcHR5XCIgcGxhY2Vob2xkZXI9XCJ7e3BsYWNlaG9sZGVyfX1cIiAoZm9jdXMpPVwiY29ubmVjdCgpXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJvcmlnaW5cIiBbZm9ybUNvbnRyb2xdPVwiYXV0b0NvbXBsZXRlQ2hpcExpc3RcIiAjZmlsdGVySW5wdXQgLz5cclxuXHQ8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG5cdDwhLS0gI3JlZ2lvbiBSZXNldCBidXR0b24gLS0+XHJcblx0PGEgdHJhaWxpbmdJY29uICpuZ0lmPVwiKCF2YWx1ZSB8fCBlbXB0eSkgJiYgIXJlYWRvbmx5ICYmICFkaXNhYmxlZFwiIGNsYXNzPVwibWF0LW1kYy1zZWxlY3QtYXJyb3dcIiAoY2xpY2spPVwiZmlsdGVySW5wdXQudmFsdWUgPSAnJ1wiPlxyXG5cdFx0PHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZvY3VzYWJsZT1cImZhbHNlXCIgY2xhc3M9XCJuZy10bnMtYzE4NC0yMVwiPlxyXG5cdFx0XHQ8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNXpcIiBjbGFzcz1cIm5nLXRucy1jMTg0LTIxXCI+PC9wYXRoPlxyXG5cdFx0PC9zdmc+XHJcblx0PC9hPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcblx0PCEtLSAjcmVnaW9uIFByb2dyZXNzIC0tPlxyXG5cdDwhLS0gPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiMThcIiAqbmdJZj1cImRhdGFTb3VyY2U/LmlzTG9hZGluZ1wiPjwvbWF0LXNwaW5uZXI+IC0tPlxyXG5cdDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC9tYXQtY2hpcC1ncmlkPlxyXG5cclxuPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYWRkQ2hpcCgkZXZlbnQub3B0aW9uLnZhbHVlLCBmaWx0ZXJJbnB1dClcIiBjbGFzcz1cInt7YXV0b2NvbXBsZXRlQ3NzQ2xhc3N9fXt7Y2xhc3NUeXBlPycgdGFibGUtYXV0b2NvbXBsZXRlJzonJ319XCIgb3ZlcmxheVBhbmVsQ2xhc3M9XCItLS0tLS0tLS0tLS0tLS0tXCI+XHJcblx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiIWNsYXNzVHlwZSAmJiBvcGVuZWRcIiBsZXQtaXRlbSBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImRhdGFTb3VyY2U/Lml0ZW1zXCI+XHJcblx0XHQ8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbVwiPlxyXG5cdFx0XHQ8c3BhbiAqbmdJZj1cIiFhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZT8udGVtcGxhdGVSZWZcIj57e2l0ZW19fTwvc3Bhbj5cclxuXHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uOiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0PC9tYXQtb3B0aW9uPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImNsYXNzVHlwZSAmJiBvcGVuZWRcIj5cclxuXHRcdDxtYXQtb3B0aW9uIGhpZGU9XCJ0cnVlXCI+PC9tYXQtb3B0aW9uPlxyXG5cdFx0PHZkLWR5bmFtaWMtdGFibGUgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiIFtjbGFzc1R5cGVdPVwiY2xhc3NUeXBlXCIgKHJvd0NsaWNrKT1cImFkZENoaXAoJGV2ZW50LCBmaWx0ZXJJbnB1dClcIiBtYXRTb3J0IFtzb3J0QWN0aXZlXT1cInNvcnRBY3RpdmV8fCdpZCdcIiBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCI+PC92ZC1keW5hbWljLXRhYmxlPlxyXG5cdDwvbmctY29udGFpbmVyPlxyXG5cdDxkaXYgY2xhc3M9XCJ2ZC1jaGlwcy1wYWdpbmF0b3JcIj5cclxuXHRcdDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG5cdFx0PG1hdC1wYWdpbmF0b3IgW2xlbmd0aF09XCJkYXRhU291cmNlPy50b3RhbFwiIFtwYWdlSW5kZXhdPVwiZGF0YVNvdXJjZT8ucGFnZUluZGV4XCIgW3BhZ2VTaXplXT1cImRhdGFTb3VyY2U/LnBhZ2VTaXplXCIgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIiBzaG93Rmlyc3RMYXN0QnV0dG9ucz1cInRydWVcIiBoaWRlUGFnZVNpemU9XCJ0cnVlXCI+PC9tYXQtcGFnaW5hdG9yPlxyXG5cdDwvZGl2PlxyXG48L21hdC1hdXRvY29tcGxldGU+XHJcbjwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbjxkaXYgbWF0QXV0b2NvbXBsZXRlT3JpZ2luICNvcmlnaW49XCJtYXRBdXRvY29tcGxldGVPcmlnaW5cIiBjbGFzcz1cImF1dG9jb21wbGV0ZS1vcmlnaW5cIj48L2Rpdj4iXX0=
|
|
@@ -245,33 +245,33 @@ export class VdFileInputComponent {
|
|
|
245
245
|
/** @nocollapse */ VdFileInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdFileInputComponent, deps: [{ token: i1.NgControl }, { token: i2.FocusMonitor }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
246
246
|
/** @nocollapse */ VdFileInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: VdFileInputComponent, selector: "[vd-file-input]", inputs: { accept: "accept", placeholder: "placeholder", required: "required", multiple: "multiple", disabled: "disabled", errorState: "errorState" }, outputs: { onSelect: "select", onClear: "clear" }, host: { properties: { "id": "this.id", "class.floating": "this.shouldLabelFloat", "attr.aria-describedby": "this.describedBy" } }, providers: [
|
|
247
247
|
{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }
|
|
248
|
-
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileElement"], descendants: true, static: true }, { propertyName: "_fileInputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: `
|
|
249
|
-
<div layout="row" flex>
|
|
250
|
-
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
251
|
-
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
252
|
-
<div class="btn-suffix">
|
|
253
|
-
<button type="button" mat-button *ngIf="!value" matSuffix
|
|
254
|
-
<mat-icon>file_upload</mat-icon>
|
|
255
|
-
</button>
|
|
256
|
-
<button type="button" mat-button *ngIf="value" matSuffix
|
|
257
|
-
<mat-icon>close</mat-icon>
|
|
258
|
-
</button>
|
|
259
|
-
</div>
|
|
260
|
-
</div>`, isInline: true, styles: [".btn-suffix .mat-mdc-button{position:absolute;right:0;top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.
|
|
248
|
+
], viewQueries: [{ propertyName: "_inputElement", first: true, predicate: ["fileElement"], descendants: true, static: true }, { propertyName: "_fileInputElement", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: `
|
|
249
|
+
<div layout="row" flex>
|
|
250
|
+
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
251
|
+
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
252
|
+
<div class="btn-suffix">
|
|
253
|
+
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click()">
|
|
254
|
+
<mat-icon>file_upload</mat-icon>
|
|
255
|
+
</button>
|
|
256
|
+
<button type="button" mat-icon-button *ngIf="value" matSuffix (click)="clear()">
|
|
257
|
+
<mat-icon>close</mat-icon>
|
|
258
|
+
</button>
|
|
259
|
+
</div>
|
|
260
|
+
</div>`, isInline: true, styles: [".btn-suffix .mat-mdc-button{position:absolute;right:0;top:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.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: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
|
|
261
261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdFileInputComponent, decorators: [{
|
|
262
262
|
type: Component,
|
|
263
|
-
args: [{ selector: '[vd-file-input]', template: `
|
|
264
|
-
<div layout="row" flex>
|
|
265
|
-
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
266
|
-
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
267
|
-
<div class="btn-suffix">
|
|
268
|
-
<button type="button" mat-button *ngIf="!value" matSuffix
|
|
269
|
-
<mat-icon>file_upload</mat-icon>
|
|
270
|
-
</button>
|
|
271
|
-
<button type="button" mat-button *ngIf="value" matSuffix
|
|
272
|
-
<mat-icon>close</mat-icon>
|
|
273
|
-
</button>
|
|
274
|
-
</div>
|
|
263
|
+
args: [{ selector: '[vd-file-input]', template: `
|
|
264
|
+
<div layout="row" flex>
|
|
265
|
+
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
266
|
+
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
267
|
+
<div class="btn-suffix">
|
|
268
|
+
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click()">
|
|
269
|
+
<mat-icon>file_upload</mat-icon>
|
|
270
|
+
</button>
|
|
271
|
+
<button type="button" mat-icon-button *ngIf="value" matSuffix (click)="clear()">
|
|
272
|
+
<mat-icon>close</mat-icon>
|
|
273
|
+
</button>
|
|
274
|
+
</div>
|
|
275
275
|
</div>`, providers: [
|
|
276
276
|
{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }
|
|
277
277
|
], styles: [".btn-suffix .mat-mdc-button{position:absolute;right:0;top:0}\n"] }]
|
|
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
|
|
|
308
308
|
type: HostBinding,
|
|
309
309
|
args: ['attr.aria-describedby']
|
|
310
310
|
}] } });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBNEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBa0xoQzs7O09BR0c7SUFDSCxZQUFtQixTQUFvQixFQUFVLEVBQWdCLEVBQVUsV0FBdUIsRUFBVSxTQUFvQixFQUFVLGtCQUFxQztRQUE1SixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFwTC9LOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFFckM7Ozs7Ozs7O1dBUUc7UUFDSSxpQkFBWSxHQUFHLElBQUks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QVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7b0lBaFNXLG9CQUFvQjt3SEFBcEIsb0JBQW9CLHNYQUpyQjtRQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtLQUNuRSxxUUF0QlM7Ozs7Ozs7Ozs7OztTQVlGOzJGQVlJLG9CQUFvQjtrQkExQmhDLFNBQVM7K0JBQ0MsaUJBQWlCLFlBQ2pCOzs7Ozs7Ozs7Ozs7U0FZRixhQVFHO3dCQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7cUJBQ25FOzRNQXdETSxNQUFNO3NCQURaLEtBQUs7Z0JBU0MsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBUVQsT0FBTztzQkFEYixNQUFNO3VCQUFDLE9BQU87Z0JBT1AsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVFsQyxpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFvQ3BDLFdBQVc7c0JBRGQsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFPTyxVQUFVO3NCQUF0QixLQUFLO2dCQVNTLEVBQUU7c0JBQWhCLFdBQVc7Z0JBU1IsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGdCQUFnQjtnQkE2RlMsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnW3ZkLWZpbGUtaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxkaXYgbGF5b3V0PVwicm93XCIgZmxleD5cblx0XHRcdDxpbnB1dCBtYXRJbnB1dCAjZmlsZUVsZW1lbnQgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiIHJlYWRvbmx5PVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxuXHRcdFx0PGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgI2ZpbGVJbnB1dCAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQpXCIgLz5cblx0XHRcdDxkaXYgY2xhc3M9XCJidG4tc3VmZml4XCI+XG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gKm5nSWY9XCIhdmFsdWVcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuXHRcdFx0XHRcdDxtYXQtaWNvbj5maWxlX3VwbG9hZDwvbWF0LWljb24+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uICpuZ0lmPVwidmFsdWVcIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhcigpXCI+XG5cdFx0XHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5gLFxyXG5cdHN0eWxlczogW2Bcblx0XHQuYnRuLXN1ZmZpeCAubWF0LW1kYy1idXR0b24ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHR0b3A6IDA7XG5cdFx0fWBcclxuXHRdLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0eyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogVmRGaWxlSW5wdXRDb21wb25lbnQgfVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkRmlsZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95IHtcclxuXHJcblx0LyoqIFxyXG5cdCAqIEEgbmFtZSBmb3IgdGhpcyBjb250cm9sIHRoYXQgY2FuIGJlIHVzZWQgYnkgYHZkLWZpbGUtaW5wdXRgLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb250cm9sVHlwZSA9ICd2ZC1maWxlLWlucHV0JztcclxuXHJcblx0LyoqXHJcblx0ICogQmVjYXVzZSB0aGUgPG1hdC1mb3JtLWZpZWxkPiB1c2VzIHRoZSBPblB1c2ggY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSwgd2UgbmVlZCBcclxuXHQgKiB0byBsZXQgaXQga25vdyB3aGVuIHNvbWV0aGluZyBoYXBwZW5zIGluIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgdGhhdCBtYXkgcmVxdWlyZSBcclxuXHQgKiB0aGUgZm9ybSBmaWVsZCB0byBydW4gY2hhbmdlIGRldGVjdGlvbi4gV2UgZG8gdGhpcyB2aWEgdGhlIHN0YXRlQ2hhbmdlcyBwcm9wZXJ0eS4gXHJcblx0ICogU28gZmFyIHRoZSBvbmx5IHRoaW5nIHRoZSBmb3JtIGZpZWxkIG5lZWRzIHRvIGtub3cgYWJvdXQgaXMgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy4gXHJcblx0ICogV2UnbGwgbmVlZCB0byBlbWl0IG9uIHRoZSBzdGF0ZUNoYW5nZXMgc3RyZWFtIHdoZW4gdGhhdCBoYXBwZW5zLCBhbmQgYXMgd2UgY29udGludWUgXHJcblx0ICogZmx1c2hpbmcgb3V0IHRoZXNlIHByb3BlcnRpZXMgd2UnbGwgbGlrZWx5IGZpbmQgbW9yZSBwbGFjZXMgd2UgbmVlZCB0byBlbWl0LiBXZSBcclxuXHQgKiBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdG8gY29tcGxldGUgc3RhdGVDaGFuZ2VzIHdoZW4gb3VyIGNvbXBvbmVudCBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgcGxhY2Vob2xkZXIgZGlzcGxheWVkIGluIHRoZSB0cmlnZ2VyIG9mIHRoZSBzZWxlY3QuXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0cHVibGljIF9mb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgdGVsbHMgdGhlIGZvcm0gZmllbGQgd2hlbiBpdCBzaG91bGQgYmUgaW4gdGhlIGRpc2FibGVkIHN0YXRlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IGlzIHJlcXVpcmVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGlucHV0IHN1cHBvcnQgbXVsdGlwbGUgZmlsZXMuXHJcblx0ICovXHJcblx0cHVibGljIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IGFsbG93cyBzb21lb25lIHRvIHNldCBvciBnZXQgdGhlIHZhbHVlIG9mIG91ciBjb250cm9sLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfdmFsdWU6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogYWNjZXB0Pzogc3RyaW5nXHJcblx0ICogU2V0cyBmaWxlcyBhY2NlcHRlZCB3aGVuIG9wZW5pbmcgdGhlIGZpbGUgYnJvd3NlciBkaWFsb2cuXHJcblx0ICogU2FtZSBhcyAnYWNjZXB0JyBhdHRyaWJ1dGUgaW4gPGlucHV0Lz4gZWxlbWVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBhY2NlcHQ6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0PzogZnVuY3Rpb25cclxuXHQgKiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBzZWxlY3RlZFxyXG5cdCAqIEVtaXRzIGEgW0ZpbGUgfCBGaWxlTGlzdF0gb2JqZWN0LlxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ3NlbGVjdCcpXHJcblx0cHVibGljIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZSB8IEZpbGVMaXN0PigpO1xyXG5cclxuXHQvKipcclxuXHQqIGNsZWFyPzogZnVuY3Rpb25cclxuXHQqIEV2ZW50IGVtaXR0ZWQgYSBmaWxlIGlzIGNsZWFyZWRcclxuXHQqL1xyXG5cdEBPdXRwdXQoJ2NsZWFyJylcclxuXHRwdWJsaWMgb25DbGVhcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBpbnB1dCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsZUVsZW1lbnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHByaXZhdGUgX2lucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHRnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgeyByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBuYXRpdmUgYDxpbnB1dCB0eXBlPVwiZmlsZVwiPiBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsZUlucHV0JywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwcml2YXRlIF9maWxlSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cdGdldCBmaWxlSW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgeyByZXR1cm4gdGhpcy5fZmlsZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50OyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRlcnMgYW5kIGdldHRlcnMgZm9yIHRoZSBpbnB1dCB2YWx1ZS5cclxuXHQgKiBJdHMgdHlwZSBzaG91bGQgYmUgdGhlIHNhbWUgdHlwZSB3ZSB1c2VkIGZvciB0aGUgdHlwZSBwYXJhbWV0ZXIgd2hlbiB3ZSBcclxuXHQgKiBpbXBsZW1lbnRlZCBNYXRGb3JtRmllbGRDb250cm9sLiBTaW5jZSBvdXIgY29tcG9uZW50IGFscmVhZHkgaGFzIGEgdmFsdWUgXHJcblx0ICogcHJvcGVydHksIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgZm9yIHRoaXMgb25lLlxyXG5cdCAqL1xyXG5cdGdldCB2YWx1ZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fdmFsdWUgfTtcclxuXHRzZXQgdmFsdWUodjogc3RyaW5nKSB7XHJcblx0XHRpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcclxuXHRcdFx0dGhpcy5fdmFsdWUgPSB2O1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodik7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdGdldCBmb2N1c2VkKCkgeyByZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXNlZDsgfVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaGFzIGEgdmFsdWUuXHJcblx0ICovXHJcblx0Z2V0IGVtcHR5KCk6IGJvb2xlYW4geyByZXR1cm4gIXRoaXMudmFsdWU7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFBsYWNlaG9sZGVyIHRvIGJlIHNob3duIGlmIG5vIHZhbHVlIGhhcyBiZWVuIHNlbGVjdGVkLlxyXG5cdCAqIFNpbmNlIHRoZSB2YWx1ZSBvZiB0aGUgcGxhY2Vob2xkZXIgbWF5IGNoYW5nZSBvdmVyIHRpbWUsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIFxyXG5cdCAqIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBpbiB0aGUgcGFyZW50IGZvcm0gZmllbGQgYnkgZW1pdHRpbmcgb24gdGhlIHN0YXRlQ2hhbmdlcyBcclxuXHQgKiBzdHJlYW0gd2hlbiB0aGUgcGxhY2Vob2xkZXIgY2hhbmdlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwbGFjZWhvbGRlcigpIHsgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyOyB9XHJcblx0c2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKiBBZ2Fpbiwgd2UnbGwgd2FudCB0byBtYWtlIHN1cmUgd2UgcnVuIGNoYW5nZSBkZXRlY3Rpb24gaWYgdGhlIHJlcXVpcmVkIHN0YXRlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcmVxdWlyZWQoKSB7IHJldHVybiB0aGlzLl9yZXF1aXJlZDsgfVxyXG5cdHNldCByZXF1aXJlZChyZXEpIHtcclxuXHRcdHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBtdWx0aXBsZS5cclxuXHQgKiBBZ2Fpbiwgd2UnbGwgd2FudCB0byBtYWtlIHN1cmUgd2UgcnVuIGNoYW5nZSBkZXRlY3Rpb24gaWYgdGhlIHJlcXVpcmVkIHN0YXRlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgbXVsdGlwbGUoKSB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxyXG5cdHNldCBtdWx0aXBsZShyZXEpIHtcclxuXHRcdHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbiBhZGRpdGlvbiB0byByZXBvcnRpbmcgdGhlIHJpZ2h0IHN0YXRlIHRvIHRoZSBmb3JtIGZpZWxkLCB3ZSBuZWVkIHRvIFxyXG5cdCAqIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gdGhlIGluZGl2aWR1YWwgaW5wdXRzIHRoYXQgbWFrZSB1cCBvdXIgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IGRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuXHRzZXQgZGlzYWJsZWQoZGlzKSB7XHJcblx0XHR0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXMpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0QElucHV0KCkgZ2V0IGVycm9yU3RhdGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzICE9PSBudWxsICYmIHRoaXMubmdDb250cm9sLnRvdWNoZWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHNob3VsZCByZXR1cm4gdGhlIElEIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGNvbXBvbmVudCdzIHRlbXBsYXRlIFxyXG5cdCAqIHRoYXQgd2Ugd2FudCB0aGUgPG1hdC1mb3JtLWZpZWxkPiB0byBhc3NvY2lhdGUgYWxsIG9mIGl0cyBsYWJlbHMgYW5kIGhpbnRzIHdpdGguIFxyXG5cdCAqIEluIHRoaXMgY2FzZSwgd2UnbGwgdXNlIHRoZSBob3N0IGVsZW1lbnQgYW5kIGp1c3QgZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGl0LlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygpIGlkID0gYHZkLWZpbGUtaW5wdXQtJHtuZXh0VW5pcXVlSWQrK31gO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGJlIGluIHRoZSBmbG9hdGluZyBwb3NpdGlvbi5cclxuXHQgKiBXZSdsbCB1c2UgdGhlIHNhbWUgbG9naWMgYXMgbWF0SW5wdXQgYW5kIGZsb2F0IHRoZSBwbGFjZWhvbGRlciB3aGVuIHRoZSBpbnB1dCBpcyBmb2N1c2VkXHJcblx0ICogIG9yIG5vbi1lbXB0eS4gU2luY2UgdGhlIHBsYWNlaG9sZGVyIHdpbGwgYmUgb3ZlcmxhcHBpbmcgb3VyIGNvbnRyb2wgd2hlbiB3aGVuIGl0J3Mgbm90IFxyXG5cdCAqIGZsb2F0aW5nLCB3ZSBzaG91bGQgaGlkZSB0aGUg4oCTIGNoYXJhY3RlcnMgd2hlbiBpdCdzIG5vdCBmbG9hdGluZy5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmZsb2F0aW5nJylcclxuXHRnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuXHRcdHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBfbWVyY2hhbnRTZXJ2aWNlIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuXHRcdGZtLm1vbml0b3IoX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcblx0XHRcdHRoaXMuX2ZvY3VzZWQgPSAhIW9yaWdpbjtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGEgZmlsZSBpcyBzZWxlY3RlZC5cclxuXHQqL1xyXG5cdGhhbmRsZVNlbGVjdCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgZmlsZSA9ICgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlc1swXTtcclxuXHRcdGlmIChmaWxlKSB7XHJcblx0XHRcdHRoaXMud3JpdGVWYWx1ZShmaWxlLm5hbWUpO1xyXG5cdFx0XHR0aGlzLm9uU2VsZWN0LmVtaXQoZmlsZSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIFVzZWQgdG8gY2xlYXIgdGhlIHNlbGVjdGVkIGZpbGVzIGZyb20gdGhlIFtWZEZpbGVJbnB1dENvbXBvbmVudF0uXHJcblx0Ki9cclxuXHRjbGVhcigpOiB2b2lkIHtcclxuXHRcdHRoaXMud3JpdGVWYWx1ZShudWxsKTtcclxuXHRcdHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXRFbGVtZW50LCAndmFsdWUnLCBudWxsKTtcclxuXHRcdHRoaXMub25DbGVhci5lbWl0KG51bGwpO1xyXG5cdH1cclxuXHJcblx0LyoqIE1ldGhvZCBleGVjdXRlZCB3aGVuIHRoZSBkaXNhYmxlZCB2YWx1ZSBjaGFuZ2VzICovXHJcblx0b25EaXNhYmxlZENoYW5nZSh2OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRpZiAodikge1xyXG5cdFx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcblx0Ki9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHJcblx0XHRpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xyXG5cdFx0XHR0aGlzLm5nQ29udHJvbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuXHRcdGlmICghdmFsdWUpIHtcclxuXHRcdFx0dGhpcy5maWxlSW5wdXRFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIGZuIFxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSBmbiBcclxuXHQgKi9cclxuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQbGFjZWhvbGRlcnMgZm9yIHRoZSBjYWxsYmFja3Mgd2hpY2ggYXJlIGxhdGVyIHByb3ZpZGVzZCBcclxuXHQgKiBieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblx0cHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIDxtYXQtZm9ybS1maWVsZD4gdG8gc3BlY2lmeSB0aGUgSURzIHRoYXQgXHJcblx0ICogc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBvZiB5b3VyIGNvbXBvbmVudC4gXHJcblx0ICogVGhlIG1ldGhvZCBoYXMgb25lIHBhcmFtZXRlciwgdGhlIGxpc3Qgb2YgSURzLCB3ZSBqdXN0IG5lZWQgdG8gYXBwbHlcclxuXHQgKiAgdGhlIGdpdmVuIElEcyB0byBvdXIgaG9zdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcclxuXHRzZXREZXNjcmliZWRCeUlkcyhpZHM6IHN0cmluZ1tdKSB7XHJcblx0XHR0aGlzLmRlc2NyaWJlZEJ5ID0gaWRzLmpvaW4oJyAnKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGZvcm0gZmllbGQgaXMgY2xpY2tlZCBvbi4gXHJcblx0ICogSXQgYWxsb3dzIHRoZSBjb21wb25lbnQgdG8gaG9vayBpbiBhbmQgaGFuZGxlIHRoYXQgY2xpY2sgaG93ZXZlciBpdCB3YW50cy4gXHJcblx0ICogVGhlIG1ldGhvZCBoYXMgb25lIHBhcmFtZXRlciwgdGhlIE1vdXNlRXZlbnQgZm9yIHRoZSBjbGljay4gSW4gb3VyIGNhc2Ugd2UnbGwgXHJcblx0ICoganVzdCBmb2N1cyB0aGUgZmlyc3QgPGlucHV0PiBpZiB0aGUgdXNlciBpc24ndCBhYm91dCB0byBjbGljayBhbiA8aW5wdXQ+IGFueXdheXMuXHJcblx0ICogQHBhcmFtIGV2ZW50IFxyXG5cdCAqL1xyXG5cdG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuXHRcdHRoaXMuaW5wdXRFbGVtZW50LmZvY3VzKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgZGlyZWN0aXZlLCBwaXBlIG9yIHNlcnZpY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuXHRcdHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHR9XHJcbn0iXX0=
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBNEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBa0xoQzs7O09BR0c7SUFDSCxZQUFtQixTQUFvQixFQUFVLEVBQWdCLEVBQVUsV0FBdUIsRUFBVSxTQUFvQixFQUFVLGtCQUFxQztRQUE1SixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFwTC9LOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFFckM7Ozs7Ozs7O1dBUUc7UUFDSSxpQkFBWSxHQUFHLElBQUks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QVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7b0lBaFNXLG9CQUFvQjt3SEFBcEIsb0JBQW9CLHNYQUpyQjtRQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtLQUNuRSxxUUF0QlM7Ozs7Ozs7Ozs7OztTQVlGOzJGQVlJLG9CQUFvQjtrQkExQmhDLFNBQVM7K0JBQ0MsaUJBQWlCLFlBQ2pCOzs7Ozs7Ozs7Ozs7U0FZRixhQVFHO3dCQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7cUJBQ25FOzRNQXdETSxNQUFNO3NCQURaLEtBQUs7Z0JBU0MsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBUVQsT0FBTztzQkFEYixNQUFNO3VCQUFDLE9BQU87Z0JBT1AsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVFsQyxpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFvQ3BDLFdBQVc7c0JBRGQsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFPTyxVQUFVO3NCQUF0QixLQUFLO2dCQVNTLEVBQUU7c0JBQWhCLFdBQVc7Z0JBU1IsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGdCQUFnQjtnQkE2RlMsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnW3ZkLWZpbGUtaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHQ8aW5wdXQgbWF0SW5wdXQgI2ZpbGVFbGVtZW50IFsobmdNb2RlbCldPVwidmFsdWVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuXHRcdFx0PGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgI2ZpbGVJbnB1dCAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQpXCIgLz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1zdWZmaXhcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhdmFsdWVcIiBtYXRTdWZmaXggKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cInZhbHVlXCIgbWF0U3VmZml4ICAoY2xpY2spPVwiY2xlYXIoKVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5gLFxyXG5cdHN0eWxlczogW2BcclxuXHRcdC5idG4tc3VmZml4IC5tYXQtbWRjLWJ1dHRvbiB7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0cmlnaHQ6IDA7XHJcblx0XHRcdHRvcDogMDtcclxuXHRcdH1gXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkRmlsZUlucHV0Q29tcG9uZW50IH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBBIG5hbWUgZm9yIHRoaXMgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIGJ5IGB2ZC1maWxlLWlucHV0YC5cclxuXHQgKi9cclxuXHRwdWJsaWMgY29udHJvbFR5cGUgPSAndmQtZmlsZS1pbnB1dCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJlY2F1c2UgdGhlIDxtYXQtZm9ybS1maWVsZD4gdXNlcyB0aGUgT25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3ksIHdlIG5lZWQgXHJcblx0ICogdG8gbGV0IGl0IGtub3cgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbiB0aGUgZm9ybSBmaWVsZCBjb250cm9sIHRoYXQgbWF5IHJlcXVpcmUgXHJcblx0ICogdGhlIGZvcm0gZmllbGQgdG8gcnVuIGNoYW5nZSBkZXRlY3Rpb24uIFdlIGRvIHRoaXMgdmlhIHRoZSBzdGF0ZUNoYW5nZXMgcHJvcGVydHkuIFxyXG5cdCAqIFNvIGZhciB0aGUgb25seSB0aGluZyB0aGUgZm9ybSBmaWVsZCBuZWVkcyB0byBrbm93IGFib3V0IGlzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIFxyXG5cdCAqIFdlJ2xsIG5lZWQgdG8gZW1pdCBvbiB0aGUgc3RhdGVDaGFuZ2VzIHN0cmVhbSB3aGVuIHRoYXQgaGFwcGVucywgYW5kIGFzIHdlIGNvbnRpbnVlIFxyXG5cdCAqIGZsdXNoaW5nIG91dCB0aGVzZSBwcm9wZXJ0aWVzIHdlJ2xsIGxpa2VseSBmaW5kIG1vcmUgcGxhY2VzIHdlIG5lZWQgdG8gZW1pdC4gV2UgXHJcblx0ICogc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRvIGNvbXBsZXRlIHN0YXRlQ2hhbmdlcyB3aGVuIG91ciBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHBsYWNlaG9sZGVyIGRpc3BsYXllZCBpbiB0aGUgdHJpZ2dlciBvZiB0aGUgc2VsZWN0LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHRlbGxzIHRoZSBmb3JtIGZpZWxkIHdoZW4gaXQgc2hvdWxkIGJlIGluIHRoZSBkaXNhYmxlZCBzdGF0ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBzdXBwb3J0IG11bHRpcGxlIGZpbGVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBhbGxvd3Mgc29tZW9uZSB0byBzZXQgb3IgZ2V0IHRoZSB2YWx1ZSBvZiBvdXIgY29udHJvbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3ZhbHVlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGFjY2VwdD86IHN0cmluZ1xyXG5cdCAqIFNldHMgZmlsZXMgYWNjZXB0ZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nLlxyXG5cdCAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdD86IGZ1bmN0aW9uXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhIGZpbGUgaXMgc2VsZWN0ZWRcclxuXHQgKiBFbWl0cyBhIFtGaWxlIHwgRmlsZUxpc3RdIG9iamVjdC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdzZWxlY3QnKVxyXG5cdHB1YmxpYyBvblNlbGVjdDogRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4oKTtcclxuXHJcblx0LyoqXHJcblx0KiBjbGVhcj86IGZ1bmN0aW9uXHJcblx0KiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBjbGVhcmVkXHJcblx0Ki9cclxuXHRAT3V0cHV0KCdjbGVhcicpXHJcblx0cHVibGljIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgaW5wdXQgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblx0Z2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHsgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50OyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImZpbGVcIj4gZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHJpdmF0ZSBfZmlsZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHRnZXQgZmlsZUlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHsgcmV0dXJuIHRoaXMuX2ZpbGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXR0ZXJzIGFuZCBnZXR0ZXJzIGZvciB0aGUgaW5wdXQgdmFsdWUuXHJcblx0ICogSXRzIHR5cGUgc2hvdWxkIGJlIHRoZSBzYW1lIHR5cGUgd2UgdXNlZCBmb3IgdGhlIHR5cGUgcGFyYW1ldGVyIHdoZW4gd2UgXHJcblx0ICogaW1wbGVtZW50ZWQgTWF0Rm9ybUZpZWxkQ29udHJvbC4gU2luY2Ugb3VyIGNvbXBvbmVudCBhbHJlYWR5IGhhcyBhIHZhbHVlIFxyXG5cdCAqIHByb3BlcnR5LCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGZvciB0aGlzIG9uZS5cclxuXHQgKi9cclxuXHRnZXQgdmFsdWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH07XHJcblx0c2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG5cdFx0aWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3ZhbHVlID0gdjtcclxuXHRcdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgZm9jdXNlZC5cclxuXHQgKi9cclxuXHRnZXQgZm9jdXNlZCgpIHsgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzZWQ7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGhhcyBhIHZhbHVlLlxyXG5cdCAqL1xyXG5cdGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLnZhbHVlOyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC5cclxuXHQgKiBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlIHBsYWNlaG9sZGVyIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBcclxuXHQgKiB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gdGhlIHBhcmVudCBmb3JtIGZpZWxkIGJ5IGVtaXR0aW5nIG9uIHRoZSBzdGF0ZUNoYW5nZXMgXHJcblx0ICogc3RyZWFtIHdoZW4gdGhlIHBsYWNlaG9sZGVyIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxyXG5cdHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cclxuXHRzZXQgcmVxdWlyZWQocmVxKSB7XHJcblx0XHR0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgbXVsdGlwbGUuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRzZXQgbXVsdGlwbGUocmVxKSB7XHJcblx0XHR0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW4gYWRkaXRpb24gdG8gcmVwb3J0aW5nIHRoZSByaWdodCBzdGF0ZSB0byB0aGUgZm9ybSBmaWVsZCwgd2UgbmVlZCB0byBcclxuXHQgKiBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHRoZSBpbmRpdmlkdWFsIGlucHV0cyB0aGF0IG1ha2UgdXAgb3VyIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XHJcblx0c2V0IGRpc2FibGVkKGRpcykge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIGdldCBlcnJvclN0YXRlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMubmdDb250cm9sLmVycm9ycyAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBzaG91bGQgcmV0dXJuIHRoZSBJRCBvZiBhbiBlbGVtZW50IGluIHRoZSBjb21wb25lbnQncyB0ZW1wbGF0ZSBcclxuXHQgKiB0aGF0IHdlIHdhbnQgdGhlIDxtYXQtZm9ybS1maWVsZD4gdG8gYXNzb2NpYXRlIGFsbCBvZiBpdHMgbGFiZWxzIGFuZCBoaW50cyB3aXRoLiBcclxuXHQgKiBJbiB0aGlzIGNhc2UsIHdlJ2xsIHVzZSB0aGUgaG9zdCBlbGVtZW50IGFuZCBqdXN0IGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBpdC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoKSBpZCA9IGB2ZC1maWxlLWlucHV0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBiZSBpbiB0aGUgZmxvYXRpbmcgcG9zaXRpb24uXHJcblx0ICogV2UnbGwgdXNlIHRoZSBzYW1lIGxvZ2ljIGFzIG1hdElucHV0IGFuZCBmbG9hdCB0aGUgcGxhY2Vob2xkZXIgd2hlbiB0aGUgaW5wdXQgaXMgZm9jdXNlZFxyXG5cdCAqICBvciBub24tZW1wdHkuIFNpbmNlIHRoZSBwbGFjZWhvbGRlciB3aWxsIGJlIG92ZXJsYXBwaW5nIG91ciBjb250cm9sIHdoZW4gd2hlbiBpdCdzIG5vdCBcclxuXHQgKiBmbG9hdGluZywgd2Ugc2hvdWxkIGhpZGUgdGhlIOKAkyBjaGFyYWN0ZXJzIHdoZW4gaXQncyBub3QgZmxvYXRpbmcuXHJcblx0ICovXHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpXHJcblx0Z2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gX21lcmNoYW50U2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsIHByaXZhdGUgZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHRuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcblx0XHRmbS5tb25pdG9yKF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xyXG5cdFx0XHR0aGlzLl9mb2N1c2VkID0gISFvcmlnaW47XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhIGZpbGUgaXMgc2VsZWN0ZWQuXHJcblx0Ki9cclxuXHRoYW5kbGVTZWxlY3QoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IGZpbGUgPSAoJGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XHJcblx0XHRpZiAoZmlsZSkge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUoZmlsZS5uYW1lKTtcclxuXHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGZpbGUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBVc2VkIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlcyBmcm9tIHRoZSBbVmRGaWxlSW5wdXRDb21wb25lbnRdLlxyXG5cdCovXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcblx0XHR0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XHJcblx0XHR0aGlzLm9uQ2xlYXIuZW1pdChudWxsKTtcclxuXHR9XHJcblxyXG5cdC8qKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiB0aGUgZGlzYWJsZWQgdmFsdWUgY2hhbmdlcyAqL1xyXG5cdG9uRGlzYWJsZWRDaGFuZ2UodjogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0aWYgKHYpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG5cdCovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZmlsZUlucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSBmbiBcclxuXHQgKi9cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gZm4gXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGxhY2Vob2xkZXJzIGZvciB0aGUgY2FsbGJhY2tzIHdoaWNoIGFyZSBsYXRlciBwcm92aWRlc2QgXHJcblx0ICogYnkgdGhlIENvbnRyb2wgVmFsdWUgQWNjZXNzb3JcclxuXHQgKi9cclxuXHRwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG5cdHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSA8bWF0LWZvcm0tZmllbGQ+IHRvIHNwZWNpZnkgdGhlIElEcyB0aGF0IFxyXG5cdCAqIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgb2YgeW91ciBjb21wb25lbnQuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBsaXN0IG9mIElEcywgd2UganVzdCBuZWVkIHRvIGFwcGx5XHJcblx0ICogIHRoZSBnaXZlbiBJRHMgdG8gb3VyIGhvc3QgZWxlbWVudC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcblx0c2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG5cdFx0dGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBmb3JtIGZpZWxkIGlzIGNsaWNrZWQgb24uIFxyXG5cdCAqIEl0IGFsbG93cyB0aGUgY29tcG9uZW50IHRvIGhvb2sgaW4gYW5kIGhhbmRsZSB0aGF0IGNsaWNrIGhvd2V2ZXIgaXQgd2FudHMuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBNb3VzZUV2ZW50IGZvciB0aGUgY2xpY2suIEluIG91ciBjYXNlIHdlJ2xsIFxyXG5cdCAqIGp1c3QgZm9jdXMgdGhlIGZpcnN0IDxpbnB1dD4gaWYgdGhlIHVzZXIgaXNuJ3QgYWJvdXQgdG8gY2xpY2sgYW4gPGlucHV0PiBhbnl3YXlzLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcblx0XHR0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIGRpcmVjdGl2ZSwgcGlwZSBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcblx0XHR0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG59Il19
|