@messaia/cdk 15.0.0-rc12 → 15.0.0-rc14
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/file/file-input.component.mjs +15 -19
- package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +3 -3
- package/fesm2015/messaia-cdk.mjs +16 -20
- package/fesm2015/messaia-cdk.mjs.map +1 -1
- package/fesm2020/messaia-cdk.mjs +16 -20
- package/fesm2020/messaia-cdk.mjs.map +1 -1
- package/lib/file/file-input.component.d.ts +2 -2
- package/package.json +1 -1
|
@@ -111,7 +111,7 @@ export class VdFileInputComponent {
|
|
|
111
111
|
/**
|
|
112
112
|
* Whether the input is focused.
|
|
113
113
|
*/
|
|
114
|
-
get focused() { return this.
|
|
114
|
+
get focused() { return this._fileInputElement?.nativeElement?.focused === true; }
|
|
115
115
|
/**
|
|
116
116
|
* Whether the input has a value.
|
|
117
117
|
*/
|
|
@@ -154,9 +154,7 @@ export class VdFileInputComponent {
|
|
|
154
154
|
this._disabled = coerceBooleanProperty(dis);
|
|
155
155
|
this.stateChanges.next();
|
|
156
156
|
}
|
|
157
|
-
get errorState() {
|
|
158
|
-
return this.ngControl.errors !== null && this.ngControl.touched;
|
|
159
|
-
}
|
|
157
|
+
get errorState() { return this.ngControl.errors !== null && this.ngControl.touched; }
|
|
160
158
|
/**
|
|
161
159
|
* This property is used to indicate whether the label should be in the floating position.
|
|
162
160
|
* We'll use the same logic as matInput and float the placeholder when the input is focused
|
|
@@ -232,7 +230,9 @@ export class VdFileInputComponent {
|
|
|
232
230
|
* @param event
|
|
233
231
|
*/
|
|
234
232
|
onContainerClick(event) {
|
|
235
|
-
this.
|
|
233
|
+
if (this.empty) {
|
|
234
|
+
this.inputElement.click();
|
|
235
|
+
}
|
|
236
236
|
}
|
|
237
237
|
/**
|
|
238
238
|
* Lifecycle hook that is called when a directive, pipe or service is destroyed.
|
|
@@ -243,38 +243,34 @@ export class VdFileInputComponent {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
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
|
-
/** @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
|
-
{ 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: `
|
|
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: [{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }], 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
247
|
<div layout="row" flex>
|
|
250
|
-
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
248
|
+
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click(); $event.stopPropagation()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
251
249
|
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
252
250
|
<div class="btn-suffix">
|
|
253
|
-
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click()">
|
|
251
|
+
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click(); $event.stopPropagation()">
|
|
254
252
|
<mat-icon>file_upload</mat-icon>
|
|
255
253
|
</button>
|
|
256
|
-
<button type="button" mat-icon-button *ngIf="value" matSuffix
|
|
254
|
+
<button type="button" mat-icon-button *ngIf="value" matSuffix (click)="clear(); $event.stopPropagation()">
|
|
257
255
|
<mat-icon>close</mat-icon>
|
|
258
256
|
</button>
|
|
259
257
|
</div>
|
|
260
|
-
</div>`, isInline: true, styles: [".btn-suffix .mat-mdc-button{position:absolute;right
|
|
258
|
+
</div>`, isInline: true, styles: [".btn-suffix .mat-mdc-icon-button{position:absolute;right:-16px;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
259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdFileInputComponent, decorators: [{
|
|
262
260
|
type: Component,
|
|
263
261
|
args: [{ selector: '[vd-file-input]', template: `
|
|
264
262
|
<div layout="row" flex>
|
|
265
|
-
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
263
|
+
<input matInput #fileElement [(ngModel)]="value" (click)="fileInput.click(); $event.stopPropagation()" readonly="true" [placeholder]="placeholder" [disabled]="disabled" [required]="required">
|
|
266
264
|
<input hidden type="file" [accept]="accept" #fileInput (change)="handleSelect($event)" />
|
|
267
265
|
<div class="btn-suffix">
|
|
268
|
-
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click()">
|
|
266
|
+
<button type="button" mat-icon-button *ngIf="!value" matSuffix (click)="fileInput.click(); $event.stopPropagation()">
|
|
269
267
|
<mat-icon>file_upload</mat-icon>
|
|
270
268
|
</button>
|
|
271
|
-
<button type="button" mat-icon-button *ngIf="value" matSuffix
|
|
269
|
+
<button type="button" mat-icon-button *ngIf="value" matSuffix (click)="clear(); $event.stopPropagation()">
|
|
272
270
|
<mat-icon>close</mat-icon>
|
|
273
271
|
</button>
|
|
274
272
|
</div>
|
|
275
|
-
</div>`, providers: [
|
|
276
|
-
{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }
|
|
277
|
-
], styles: [".btn-suffix .mat-mdc-button{position:absolute;right:0;top:0}\n"] }]
|
|
273
|
+
</div>`, providers: [{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }], styles: [".btn-suffix .mat-mdc-icon-button{position:absolute;right:-16px;top:0}\n"] }]
|
|
278
274
|
}], ctorParameters: function () { return [{ type: i1.NgControl }, { type: i2.FocusMonitor }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { accept: [{
|
|
279
275
|
type: Input
|
|
280
276
|
}], onSelect: [{
|
|
@@ -308,4 +304,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImpor
|
|
|
308
304
|
type: HostBinding,
|
|
309
305
|
args: ['attr.aria-describedby']
|
|
310
306
|
}] } });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBNEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBa0xoQzs7O09BR0c7SUFDSCxZQUFtQixTQUFvQixFQUFVLEVBQWdCLEVBQVUsV0FBdUIsRUFBVSxTQUFvQixFQUFVLGtCQUFxQztRQUE1SixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFwTC9LOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFFckM7Ozs7Ozs7O1dBUUc7UUFDSSxpQkFBWSxHQUFHLElBQUks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QVEsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7b0lBaFNXLG9CQUFvQjt3SEFBcEIsb0JBQW9CLHNYQUpyQjtRQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtLQUNuRSxxUUF0QlM7Ozs7Ozs7Ozs7OztTQVlGOzJGQVlJLG9CQUFvQjtrQkExQmhDLFNBQVM7K0JBQ0MsaUJBQWlCLFlBQ2pCOzs7Ozs7Ozs7Ozs7U0FZRixhQVFHO3dCQUNWLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7cUJBQ25FOzRNQXdETSxNQUFNO3NCQURaLEtBQUs7Z0JBU0MsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBUVQsT0FBTztzQkFEYixNQUFNO3VCQUFDLE9BQU87Z0JBT1AsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVFsQyxpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFvQ3BDLFdBQVc7c0JBRGQsS0FBSztnQkFZRixRQUFRO3NCQURYLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFPTyxVQUFVO3NCQUF0QixLQUFLO2dCQVNTLEVBQUU7c0JBQWhCLFdBQVc7Z0JBU1IsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLGdCQUFnQjtnQkE2RlMsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnW3ZkLWZpbGUtaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHQ8aW5wdXQgbWF0SW5wdXQgI2ZpbGVFbGVtZW50IFsobmdNb2RlbCldPVwidmFsdWVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIiByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuXHRcdFx0PGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0XCIgI2ZpbGVJbnB1dCAoY2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQpXCIgLz5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1zdWZmaXhcIj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhdmFsdWVcIiBtYXRTdWZmaXggKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cInZhbHVlXCIgbWF0U3VmZml4ICAoY2xpY2spPVwiY2xlYXIoKVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5gLFxyXG5cdHN0eWxlczogW2BcclxuXHRcdC5idG4tc3VmZml4IC5tYXQtbWRjLWJ1dHRvbiB7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0cmlnaHQ6IDA7XHJcblx0XHRcdHRvcDogMDtcclxuXHRcdH1gXHJcblx0XSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHsgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkRmlsZUlucHV0Q29tcG9uZW50IH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBBIG5hbWUgZm9yIHRoaXMgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIGJ5IGB2ZC1maWxlLWlucHV0YC5cclxuXHQgKi9cclxuXHRwdWJsaWMgY29udHJvbFR5cGUgPSAndmQtZmlsZS1pbnB1dCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJlY2F1c2UgdGhlIDxtYXQtZm9ybS1maWVsZD4gdXNlcyB0aGUgT25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3ksIHdlIG5lZWQgXHJcblx0ICogdG8gbGV0IGl0IGtub3cgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbiB0aGUgZm9ybSBmaWVsZCBjb250cm9sIHRoYXQgbWF5IHJlcXVpcmUgXHJcblx0ICogdGhlIGZvcm0gZmllbGQgdG8gcnVuIGNoYW5nZSBkZXRlY3Rpb24uIFdlIGRvIHRoaXMgdmlhIHRoZSBzdGF0ZUNoYW5nZXMgcHJvcGVydHkuIFxyXG5cdCAqIFNvIGZhciB0aGUgb25seSB0aGluZyB0aGUgZm9ybSBmaWVsZCBuZWVkcyB0byBrbm93IGFib3V0IGlzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIFxyXG5cdCAqIFdlJ2xsIG5lZWQgdG8gZW1pdCBvbiB0aGUgc3RhdGVDaGFuZ2VzIHN0cmVhbSB3aGVuIHRoYXQgaGFwcGVucywgYW5kIGFzIHdlIGNvbnRpbnVlIFxyXG5cdCAqIGZsdXNoaW5nIG91dCB0aGVzZSBwcm9wZXJ0aWVzIHdlJ2xsIGxpa2VseSBmaW5kIG1vcmUgcGxhY2VzIHdlIG5lZWQgdG8gZW1pdC4gV2UgXHJcblx0ICogc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRvIGNvbXBsZXRlIHN0YXRlQ2hhbmdlcyB3aGVuIG91ciBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHBsYWNlaG9sZGVyIGRpc3BsYXllZCBpbiB0aGUgdHJpZ2dlciBvZiB0aGUgc2VsZWN0LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHRlbGxzIHRoZSBmb3JtIGZpZWxkIHdoZW4gaXQgc2hvdWxkIGJlIGluIHRoZSBkaXNhYmxlZCBzdGF0ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBzdXBwb3J0IG11bHRpcGxlIGZpbGVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBhbGxvd3Mgc29tZW9uZSB0byBzZXQgb3IgZ2V0IHRoZSB2YWx1ZSBvZiBvdXIgY29udHJvbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3ZhbHVlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGFjY2VwdD86IHN0cmluZ1xyXG5cdCAqIFNldHMgZmlsZXMgYWNjZXB0ZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nLlxyXG5cdCAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdD86IGZ1bmN0aW9uXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhIGZpbGUgaXMgc2VsZWN0ZWRcclxuXHQgKiBFbWl0cyBhIFtGaWxlIHwgRmlsZUxpc3RdIG9iamVjdC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdzZWxlY3QnKVxyXG5cdHB1YmxpYyBvblNlbGVjdDogRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4oKTtcclxuXHJcblx0LyoqXHJcblx0KiBjbGVhcj86IGZ1bmN0aW9uXHJcblx0KiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBjbGVhcmVkXHJcblx0Ki9cclxuXHRAT3V0cHV0KCdjbGVhcicpXHJcblx0cHVibGljIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgaW5wdXQgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblx0Z2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHsgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50OyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImZpbGVcIj4gZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHJpdmF0ZSBfZmlsZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuXHRnZXQgZmlsZUlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHsgcmV0dXJuIHRoaXMuX2ZpbGVJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXR0ZXJzIGFuZCBnZXR0ZXJzIGZvciB0aGUgaW5wdXQgdmFsdWUuXHJcblx0ICogSXRzIHR5cGUgc2hvdWxkIGJlIHRoZSBzYW1lIHR5cGUgd2UgdXNlZCBmb3IgdGhlIHR5cGUgcGFyYW1ldGVyIHdoZW4gd2UgXHJcblx0ICogaW1wbGVtZW50ZWQgTWF0Rm9ybUZpZWxkQ29udHJvbC4gU2luY2Ugb3VyIGNvbXBvbmVudCBhbHJlYWR5IGhhcyBhIHZhbHVlIFxyXG5cdCAqIHByb3BlcnR5LCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGZvciB0aGlzIG9uZS5cclxuXHQgKi9cclxuXHRnZXQgdmFsdWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH07XHJcblx0c2V0IHZhbHVlKHY6IHN0cmluZykge1xyXG5cdFx0aWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcblx0XHRcdHRoaXMuX3ZhbHVlID0gdjtcclxuXHRcdFx0dGhpcy5vbkNoYW5nZUNhbGxiYWNrKHYpO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgZm9jdXNlZC5cclxuXHQgKi9cclxuXHRnZXQgZm9jdXNlZCgpIHsgcmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzZWQ7IH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGhhcyBhIHZhbHVlLlxyXG5cdCAqL1xyXG5cdGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLnZhbHVlOyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC5cclxuXHQgKiBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlIHBsYWNlaG9sZGVyIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBcclxuXHQgKiB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gdGhlIHBhcmVudCBmb3JtIGZpZWxkIGJ5IGVtaXR0aW5nIG9uIHRoZSBzdGF0ZUNoYW5nZXMgXHJcblx0ICogc3RyZWFtIHdoZW4gdGhlIHBsYWNlaG9sZGVyIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGxhY2Vob2xkZXIoKSB7IHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjsgfVxyXG5cdHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wbGFjZWhvbGRlciA9IHZhbHVlO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgcmVxdWlyZWQuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cclxuXHRzZXQgcmVxdWlyZWQocmVxKSB7XHJcblx0XHR0aGlzLl9yZXF1aXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaXMgbXVsdGlwbGUuXHJcblx0ICogQWdhaW4sIHdlJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHdlIHJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSByZXF1aXJlZCBzdGF0ZSBjaGFuZ2VzLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRzZXQgbXVsdGlwbGUocmVxKSB7XHJcblx0XHR0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW4gYWRkaXRpb24gdG8gcmVwb3J0aW5nIHRoZSByaWdodCBzdGF0ZSB0byB0aGUgZm9ybSBmaWVsZCwgd2UgbmVlZCB0byBcclxuXHQgKiBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHRoZSBpbmRpdmlkdWFsIGlucHV0cyB0aGF0IG1ha2UgdXAgb3VyIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOyB9XHJcblx0c2V0IGRpc2FibGVkKGRpcykge1xyXG5cdFx0dGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZGlzKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgpIGdldCBlcnJvclN0YXRlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMubmdDb250cm9sLmVycm9ycyAhPT0gbnVsbCAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBzaG91bGQgcmV0dXJuIHRoZSBJRCBvZiBhbiBlbGVtZW50IGluIHRoZSBjb21wb25lbnQncyB0ZW1wbGF0ZSBcclxuXHQgKiB0aGF0IHdlIHdhbnQgdGhlIDxtYXQtZm9ybS1maWVsZD4gdG8gYXNzb2NpYXRlIGFsbCBvZiBpdHMgbGFiZWxzIGFuZCBoaW50cyB3aXRoLiBcclxuXHQgKiBJbiB0aGlzIGNhc2UsIHdlJ2xsIHVzZSB0aGUgaG9zdCBlbGVtZW50IGFuZCBqdXN0IGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBpdC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoKSBpZCA9IGB2ZC1maWxlLWlucHV0LSR7bmV4dFVuaXF1ZUlkKyt9YDtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBiZSBpbiB0aGUgZmxvYXRpbmcgcG9zaXRpb24uXHJcblx0ICogV2UnbGwgdXNlIHRoZSBzYW1lIGxvZ2ljIGFzIG1hdElucHV0IGFuZCBmbG9hdCB0aGUgcGxhY2Vob2xkZXIgd2hlbiB0aGUgaW5wdXQgaXMgZm9jdXNlZFxyXG5cdCAqICBvciBub24tZW1wdHkuIFNpbmNlIHRoZSBwbGFjZWhvbGRlciB3aWxsIGJlIG92ZXJsYXBwaW5nIG91ciBjb250cm9sIHdoZW4gd2hlbiBpdCdzIG5vdCBcclxuXHQgKiBmbG9hdGluZywgd2Ugc2hvdWxkIGhpZGUgdGhlIOKAkyBjaGFyYWN0ZXJzIHdoZW4gaXQncyBub3QgZmxvYXRpbmcuXHJcblx0ICovXHJcblx0QEhvc3RCaW5kaW5nKCdjbGFzcy5mbG9hdGluZycpXHJcblx0Z2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gX21lcmNoYW50U2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsIHByaXZhdGUgZm06IEZvY3VzTW9uaXRvciwgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcblx0XHRuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcblx0XHRmbS5tb25pdG9yKF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpLnN1YnNjcmliZShvcmlnaW4gPT4ge1xyXG5cdFx0XHR0aGlzLl9mb2N1c2VkID0gISFvcmlnaW47XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBNZXRob2QgZXhlY3V0ZWQgd2hlbiBhIGZpbGUgaXMgc2VsZWN0ZWQuXHJcblx0Ki9cclxuXHRoYW5kbGVTZWxlY3QoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IGZpbGUgPSAoJGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XHJcblx0XHRpZiAoZmlsZSkge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUoZmlsZS5uYW1lKTtcclxuXHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGZpbGUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBVc2VkIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlcyBmcm9tIHRoZSBbVmRGaWxlSW5wdXRDb21wb25lbnRdLlxyXG5cdCovXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHR0aGlzLndyaXRlVmFsdWUobnVsbCk7XHJcblx0XHR0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0RWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XHJcblx0XHR0aGlzLm9uQ2xlYXIuZW1pdChudWxsKTtcclxuXHR9XHJcblxyXG5cdC8qKiBNZXRob2QgZXhlY3V0ZWQgd2hlbiB0aGUgZGlzYWJsZWQgdmFsdWUgY2hhbmdlcyAqL1xyXG5cdG9uRGlzYWJsZWRDaGFuZ2UodjogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0aWYgKHYpIHtcclxuXHRcdFx0dGhpcy5jbGVhcigpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxyXG5cdCovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZmlsZUlucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSBmbiBcclxuXHQgKi9cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuXHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRnJvbSBDb250cm9sVmFsdWVBY2Nlc3NvciBpbnRlcmZhY2VcclxuXHQgKiBAcGFyYW0gZm4gXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xyXG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGxhY2Vob2xkZXJzIGZvciB0aGUgY2FsbGJhY2tzIHdoaWNoIGFyZSBsYXRlciBwcm92aWRlc2QgXHJcblx0ICogYnkgdGhlIENvbnRyb2wgVmFsdWUgQWNjZXNzb3JcclxuXHQgKi9cclxuXHRwcml2YXRlIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBhbnkpID0+IHZvaWQgPSBub29wO1xyXG5cdHByaXZhdGUgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSA8bWF0LWZvcm0tZmllbGQ+IHRvIHNwZWNpZnkgdGhlIElEcyB0aGF0IFxyXG5cdCAqIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgb2YgeW91ciBjb21wb25lbnQuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBsaXN0IG9mIElEcywgd2UganVzdCBuZWVkIHRvIGFwcGx5XHJcblx0ICogIHRoZSBnaXZlbiBJRHMgdG8gb3VyIGhvc3QgZWxlbWVudC5cclxuXHQgKi9cclxuXHRASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcblx0c2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG5cdFx0dGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBmb3JtIGZpZWxkIGlzIGNsaWNrZWQgb24uIFxyXG5cdCAqIEl0IGFsbG93cyB0aGUgY29tcG9uZW50IHRvIGhvb2sgaW4gYW5kIGhhbmRsZSB0aGF0IGNsaWNrIGhvd2V2ZXIgaXQgd2FudHMuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBNb3VzZUV2ZW50IGZvciB0aGUgY2xpY2suIEluIG91ciBjYXNlIHdlJ2xsIFxyXG5cdCAqIGp1c3QgZm9jdXMgdGhlIGZpcnN0IDxpbnB1dD4gaWYgdGhlIHVzZXIgaXNuJ3QgYWJvdXQgdG8gY2xpY2sgYW4gPGlucHV0PiBhbnl3YXlzLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRvbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcblx0XHR0aGlzLmlucHV0RWxlbWVudC5mb2N1cygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIGRpcmVjdGl2ZSwgcGlwZSBvciBzZXJ2aWNlIGlzIGRlc3Ryb3llZC5cclxuXHQgKi9cclxuXHRuZ09uRGVzdHJveSgpIHtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcblx0XHR0aGlzLmZtLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XHJcblx0fVxyXG59Il19
|
|
307
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9maWxlL2ZpbGUtaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSixPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQUUvQixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBMEJyQixNQUFNLE9BQU8sb0JBQW9CO0lBa0xoQzs7O09BR0c7SUFDSCxZQUFtQixTQUFvQixFQUFVLEVBQWdCLEVBQVUsV0FBdUIsRUFBVSxTQUFvQixFQUFVLGtCQUFxQztRQUE1SixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFwTC9LOztXQUVHO1FBQ0ksZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFFckM7Ozs7Ozs7O1dBUUc7UUFDSSxpQkFBWSxHQUFHLElBQUks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O0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN4RCxDQUFDOztvSUFsU1csb0JBQW9CO3dIQUFwQixvQkFBb0Isc1hBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFLENBQUMscVFBcEJ0RTs7Ozs7Ozs7Ozs7O1NBWUY7MkZBVUksb0JBQW9CO2tCQXhCaEMsU0FBUzsrQkFDQyxpQkFBaUIsWUFDakI7Ozs7Ozs7Ozs7OztTQVlGLGFBUUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHNCQUFzQixFQUFFLENBQUM7NE1Bd0R6RSxNQUFNO3NCQURaLEtBQUs7Z0JBU0MsUUFBUTtzQkFEZCxNQUFNO3VCQUFDLFFBQVE7Z0JBUVQsT0FBTztzQkFEYixNQUFNO3VCQUFDLE9BQU87Z0JBT1AsYUFBYTtzQkFEcEIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVFsQyxpQkFBaUI7c0JBRHhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFvQzdCLFdBQVc7c0JBRHJCLEtBQUs7Z0JBWUssUUFBUTtzQkFEbEIsS0FBSztnQkFZSyxRQUFRO3NCQURsQixLQUFLO2dCQVlLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssVUFBVTtzQkFEcEIsS0FBSztnQkFTQyxFQUFFO3NCQURSLFdBQVc7Z0JBVUQsZ0JBQWdCO3NCQUQxQixXQUFXO3VCQUFDLGdCQUFnQjtnQkE2RlMsV0FBVztzQkFBaEQsV0FBVzt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5jb25zdCBub29wID0gKCkgPT4geyB9O1xyXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnW3ZkLWZpbGUtaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGRpdiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG5cdFx0XHQ8aW5wdXQgbWF0SW5wdXQgI2ZpbGVFbGVtZW50IFsobmdNb2RlbCldPVwidmFsdWVcIiAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHJlYWRvbmx5PVwidHJ1ZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxyXG5cdFx0XHQ8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgW2FjY2VwdF09XCJhY2NlcHRcIiAjZmlsZUlucHV0IChjaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudClcIiAvPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXN1ZmZpeFwiPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiF2YWx1ZVwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG5cdFx0XHRcdFx0PG1hdC1pY29uPmZpbGVfdXBsb2FkPC9tYXQtaWNvbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCJ2YWx1ZVwiIG1hdFN1ZmZpeCAoY2xpY2spPVwiY2xlYXIoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcblx0XHRcdFx0XHQ8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PmAsXHJcblx0c3R5bGVzOiBbYFxyXG5cdFx0LmJ0bi1zdWZmaXggLm1hdC1tZGMtaWNvbi1idXR0b24ge1xyXG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdHJpZ2h0OiAtMTZweDtcclxuXHRcdFx0dG9wOiAwO1xyXG5cdFx0fWBcclxuXHRdLFxyXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTWF0Rm9ybUZpZWxkQ29udHJvbCwgdXNlRXhpc3Rpbmc6IFZkRmlsZUlucHV0Q29tcG9uZW50IH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBBIG5hbWUgZm9yIHRoaXMgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIGJ5IGB2ZC1maWxlLWlucHV0YC5cclxuXHQgKi9cclxuXHRwdWJsaWMgY29udHJvbFR5cGUgPSAndmQtZmlsZS1pbnB1dCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEJlY2F1c2UgdGhlIDxtYXQtZm9ybS1maWVsZD4gdXNlcyB0aGUgT25QdXNoIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3ksIHdlIG5lZWQgXHJcblx0ICogdG8gbGV0IGl0IGtub3cgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbiB0aGUgZm9ybSBmaWVsZCBjb250cm9sIHRoYXQgbWF5IHJlcXVpcmUgXHJcblx0ICogdGhlIGZvcm0gZmllbGQgdG8gcnVuIGNoYW5nZSBkZXRlY3Rpb24uIFdlIGRvIHRoaXMgdmlhIHRoZSBzdGF0ZUNoYW5nZXMgcHJvcGVydHkuIFxyXG5cdCAqIFNvIGZhciB0aGUgb25seSB0aGluZyB0aGUgZm9ybSBmaWVsZCBuZWVkcyB0byBrbm93IGFib3V0IGlzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuIFxyXG5cdCAqIFdlJ2xsIG5lZWQgdG8gZW1pdCBvbiB0aGUgc3RhdGVDaGFuZ2VzIHN0cmVhbSB3aGVuIHRoYXQgaGFwcGVucywgYW5kIGFzIHdlIGNvbnRpbnVlIFxyXG5cdCAqIGZsdXNoaW5nIG91dCB0aGVzZSBwcm9wZXJ0aWVzIHdlJ2xsIGxpa2VseSBmaW5kIG1vcmUgcGxhY2VzIHdlIG5lZWQgdG8gZW1pdC4gV2UgXHJcblx0ICogc2hvdWxkIGFsc28gbWFrZSBzdXJlIHRvIGNvbXBsZXRlIHN0YXRlQ2hhbmdlcyB3aGVuIG91ciBjb21wb25lbnQgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHBsYWNlaG9sZGVyIGRpc3BsYXllZCBpbiB0aGUgdHJpZ2dlciBvZiB0aGUgc2VsZWN0LlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHRlbGxzIHRoZSBmb3JtIGZpZWxkIHdoZW4gaXQgc2hvdWxkIGJlIGluIHRoZSBkaXNhYmxlZCBzdGF0ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBpbnB1dCBzdXBwb3J0IG11bHRpcGxlIGZpbGVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBwcm9wZXJ0eSBhbGxvd3Mgc29tZW9uZSB0byBzZXQgb3IgZ2V0IHRoZSB2YWx1ZSBvZiBvdXIgY29udHJvbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgX3ZhbHVlOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGFjY2VwdD86IHN0cmluZ1xyXG5cdCAqIFNldHMgZmlsZXMgYWNjZXB0ZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlIGJyb3dzZXIgZGlhbG9nLlxyXG5cdCAqIFNhbWUgYXMgJ2FjY2VwdCcgYXR0cmlidXRlIGluIDxpbnB1dC8+IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgYWNjZXB0OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNlbGVjdD86IGZ1bmN0aW9uXHJcblx0ICogRXZlbnQgZW1pdHRlZCBhIGZpbGUgaXMgc2VsZWN0ZWRcclxuXHQgKiBFbWl0cyBhIFtGaWxlIHwgRmlsZUxpc3RdIG9iamVjdC5cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdzZWxlY3QnKVxyXG5cdHB1YmxpYyBvblNlbGVjdDogRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGUgfCBGaWxlTGlzdD4oKTtcclxuXHJcblx0LyoqXHJcblx0KiBjbGVhcj86IGZ1bmN0aW9uXHJcblx0KiBFdmVudCBlbWl0dGVkIGEgZmlsZSBpcyBjbGVhcmVkXHJcblx0Ki9cclxuXHRAT3V0cHV0KCdjbGVhcicpXHJcblx0cHVibGljIG9uQ2xlYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgaW5wdXQgZWxlbWVudFxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbGVFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblx0cHVibGljIGdldCBpbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7IHJldHVybiB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudDsgfVxyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIG5hdGl2ZSBgPGlucHV0IHR5cGU9XCJmaWxlXCI+IGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHByaXZhdGUgX2ZpbGVJbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcblx0cHVibGljIGdldCBmaWxlSW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgeyByZXR1cm4gdGhpcy5fZmlsZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50OyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRlcnMgYW5kIGdldHRlcnMgZm9yIHRoZSBpbnB1dCB2YWx1ZS5cclxuXHQgKiBJdHMgdHlwZSBzaG91bGQgYmUgdGhlIHNhbWUgdHlwZSB3ZSB1c2VkIGZvciB0aGUgdHlwZSBwYXJhbWV0ZXIgd2hlbiB3ZSBcclxuXHQgKiBpbXBsZW1lbnRlZCBNYXRGb3JtRmllbGRDb250cm9sLiBTaW5jZSBvdXIgY29tcG9uZW50IGFscmVhZHkgaGFzIGEgdmFsdWUgXHJcblx0ICogcHJvcGVydHksIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgZm9yIHRoaXMgb25lLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQgdmFsdWUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3ZhbHVlIH07XHJcblx0cHVibGljIHNldCB2YWx1ZSh2OiBzdHJpbmcpIHtcclxuXHRcdGlmICh2ICE9PSB0aGlzLl92YWx1ZSkge1xyXG5cdFx0XHR0aGlzLl92YWx1ZSA9IHY7XHJcblx0XHRcdHRoaXMub25DaGFuZ2VDYWxsYmFjayh2KTtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqIFxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBmb2N1c2VkKCkgeyByZXR1cm4gdGhpcy5fZmlsZUlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZm9jdXNlZCA9PT0gdHJ1ZTsgfVxyXG5cclxuXHQvKiogXHJcblx0ICogV2hldGhlciB0aGUgaW5wdXQgaGFzIGEgdmFsdWUuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLnZhbHVlOyB9XHJcblxyXG5cdC8qKiBcclxuXHQgKiBQbGFjZWhvbGRlciB0byBiZSBzaG93biBpZiBubyB2YWx1ZSBoYXMgYmVlbiBzZWxlY3RlZC5cclxuXHQgKiBTaW5jZSB0aGUgdmFsdWUgb2YgdGhlIHBsYWNlaG9sZGVyIG1heSBjaGFuZ2Ugb3ZlciB0aW1lLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBcclxuXHQgKiB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gaW4gdGhlIHBhcmVudCBmb3JtIGZpZWxkIGJ5IGVtaXR0aW5nIG9uIHRoZSBzdGF0ZUNoYW5nZXMgXHJcblx0ICogc3RyZWFtIHdoZW4gdGhlIHBsYWNlaG9sZGVyIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7IH1cclxuXHRwdWJsaWMgc2V0IHBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyByZXF1aXJlZC5cclxuXHQgKiBBZ2Fpbiwgd2UnbGwgd2FudCB0byBtYWtlIHN1cmUgd2UgcnVuIGNoYW5nZSBkZXRlY3Rpb24gaWYgdGhlIHJlcXVpcmVkIHN0YXRlIGNoYW5nZXMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IHJlcXVpcmVkKCkgeyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cclxuXHRwdWJsaWMgc2V0IHJlcXVpcmVkKHJlcSkge1xyXG5cdFx0dGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuXHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIG11bHRpcGxlLlxyXG5cdCAqIEFnYWluLCB3ZSdsbCB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBydW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgcmVxdWlyZWQgc3RhdGUgY2hhbmdlcy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgbXVsdGlwbGUoKSB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxyXG5cdHB1YmxpYyBzZXQgbXVsdGlwbGUocmVxKSB7XHJcblx0XHR0aGlzLl9tdWx0aXBsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyZXEpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW4gYWRkaXRpb24gdG8gcmVwb3J0aW5nIHRoZSByaWdodCBzdGF0ZSB0byB0aGUgZm9ybSBmaWVsZCwgd2UgbmVlZCB0byBcclxuXHQgKiBzZXQgdGhlIGRpc2FibGVkIHN0YXRlIG9uIHRoZSBpbmRpdmlkdWFsIGlucHV0cyB0aGF0IG1ha2UgdXAgb3VyIGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG5cdHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzKSB7XHJcblx0XHR0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXMpO1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdH1cclxuXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVycm9yU3RhdGUoKSB7IHJldHVybiB0aGlzLm5nQ29udHJvbC5lcnJvcnMgIT09IG51bGwgJiYgdGhpcy5uZ0NvbnRyb2wudG91Y2hlZDsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIHByb3BlcnR5IHNob3VsZCByZXR1cm4gdGhlIElEIG9mIGFuIGVsZW1lbnQgaW4gdGhlIGNvbXBvbmVudCdzIHRlbXBsYXRlIFxyXG5cdCAqIHRoYXQgd2Ugd2FudCB0aGUgPG1hdC1mb3JtLWZpZWxkPiB0byBhc3NvY2lhdGUgYWxsIG9mIGl0cyBsYWJlbHMgYW5kIGhpbnRzIHdpdGguIFxyXG5cdCAqIEluIHRoaXMgY2FzZSwgd2UnbGwgdXNlIHRoZSBob3N0IGVsZW1lbnQgYW5kIGp1c3QgZ2VuZXJhdGUgYSB1bmlxdWUgSUQgZm9yIGl0LlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygpXHJcblx0cHVibGljIGlkOiBzdHJpbmcgPSBgdmQtZmlsZS1pbnB1dC0ke25leHRVbmlxdWVJZCsrfWA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYmUgaW4gdGhlIGZsb2F0aW5nIHBvc2l0aW9uLlxyXG5cdCAqIFdlJ2xsIHVzZSB0aGUgc2FtZSBsb2dpYyBhcyBtYXRJbnB1dCBhbmQgZmxvYXQgdGhlIHBsYWNlaG9sZGVyIHdoZW4gdGhlIGlucHV0IGlzIGZvY3VzZWRcclxuXHQgKiAgb3Igbm9uLWVtcHR5LiBTaW5jZSB0aGUgcGxhY2Vob2xkZXIgd2lsbCBiZSBvdmVybGFwcGluZyBvdXIgY29udHJvbCB3aGVuIHdoZW4gaXQncyBub3QgXHJcblx0ICogZmxvYXRpbmcsIHdlIHNob3VsZCBoaWRlIHRoZSDigJMgY2hhcmFjdGVycyB3aGVuIGl0J3Mgbm90IGZsb2F0aW5nLlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygnY2xhc3MuZmxvYXRpbmcnKVxyXG5cdHB1YmxpYyBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcclxuXHRcdHJldHVybiB0aGlzLmZvY3VzZWQgfHwgIXRoaXMuZW1wdHk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBfbWVyY2hhbnRTZXJ2aWNlIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgcHJpdmF0ZSBmbTogRm9jdXNNb25pdG9yLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuXHRcdG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuXHRcdGZtLm1vbml0b3IoX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgdHJ1ZSkuc3Vic2NyaWJlKG9yaWdpbiA9PiB7XHJcblx0XHRcdHRoaXMuX2ZvY3VzZWQgPSAhIW9yaWdpbjtcclxuXHRcdFx0dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGEgZmlsZSBpcyBzZWxlY3RlZC5cclxuXHQqL1xyXG5cdHB1YmxpYyBoYW5kbGVTZWxlY3QoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IGZpbGUgPSAoJGV2ZW50Py50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XHJcblx0XHRpZiAoZmlsZSkge1xyXG5cdFx0XHR0aGlzLndyaXRlVmFsdWUoZmlsZS5uYW1lKTtcclxuXHRcdFx0dGhpcy5vblNlbGVjdC5lbWl0KGZpbGUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBVc2VkIHRvIGNsZWFyIHRoZSBzZWxlY3RlZCBmaWxlcyBmcm9tIHRoZSBbVmRGaWxlSW5wdXRDb21wb25lbnRdLlxyXG5cdCovXHJcblx0cHVibGljIGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy53cml0ZVZhbHVlKG51bGwpO1xyXG5cdFx0dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dEVsZW1lbnQsICd2YWx1ZScsIG51bGwpO1xyXG5cdFx0dGhpcy5vbkNsZWFyLmVtaXQobnVsbCk7XHJcblx0fVxyXG5cclxuXHQvKiogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gdGhlIGRpc2FibGVkIHZhbHVlIGNoYW5nZXMgKi9cclxuXHRwdWJsaWMgb25EaXNhYmxlZENoYW5nZSh2OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRpZiAodikge1xyXG5cdFx0XHR0aGlzLmNsZWFyKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXHJcblx0Ki9cclxuXHRwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblxyXG5cdFx0aWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wpIHtcclxuXHRcdFx0dGhpcy5uZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblx0XHRcdHRoaXMubmdDb250cm9sLmNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuXHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHRoaXMuZmlsZUlucHV0RWxlbWVudC52YWx1ZSA9IG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSBmbiBcclxuXHQgKi9cclxuXHRwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcblx0XHR0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIGZuIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQbGFjZWhvbGRlcnMgZm9yIHRoZSBjYWxsYmFja3Mgd2hpY2ggYXJlIGxhdGVyIHByb3ZpZGVzZCBcclxuXHQgKiBieSB0aGUgQ29udHJvbCBWYWx1ZSBBY2Nlc3NvclxyXG5cdCAqL1xyXG5cdHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XHJcblx0cHJpdmF0ZSBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIDxtYXQtZm9ybS1maWVsZD4gdG8gc3BlY2lmeSB0aGUgSURzIHRoYXQgXHJcblx0ICogc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBhcmlhLWRlc2NyaWJlZGJ5IGF0dHJpYnV0ZSBvZiB5b3VyIGNvbXBvbmVudC4gXHJcblx0ICogVGhlIG1ldGhvZCBoYXMgb25lIHBhcmFtZXRlciwgdGhlIGxpc3Qgb2YgSURzLCB3ZSBqdXN0IG5lZWQgdG8gYXBwbHlcclxuXHQgKiAgdGhlIGdpdmVuIElEcyB0byBvdXIgaG9zdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRlc2NyaWJlZGJ5JykgZGVzY3JpYmVkQnkgPSAnJztcclxuXHRwdWJsaWMgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG5cdFx0dGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBmb3JtIGZpZWxkIGlzIGNsaWNrZWQgb24uIFxyXG5cdCAqIEl0IGFsbG93cyB0aGUgY29tcG9uZW50IHRvIGhvb2sgaW4gYW5kIGhhbmRsZSB0aGF0IGNsaWNrIGhvd2V2ZXIgaXQgd2FudHMuIFxyXG5cdCAqIFRoZSBtZXRob2QgaGFzIG9uZSBwYXJhbWV0ZXIsIHRoZSBNb3VzZUV2ZW50IGZvciB0aGUgY2xpY2suIEluIG91ciBjYXNlIHdlJ2xsIFxyXG5cdCAqIGp1c3QgZm9jdXMgdGhlIGZpcnN0IDxpbnB1dD4gaWYgdGhlIHVzZXIgaXNuJ3QgYWJvdXQgdG8gY2xpY2sgYW4gPGlucHV0PiBhbnl3YXlzLlxyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgb25Db250YWluZXJDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG5cdFx0aWYgKHRoaXMuZW1wdHkpIHtcclxuXHRcdFx0dGhpcy5pbnB1dEVsZW1lbnQuY2xpY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSBkaXJlY3RpdmUsIHBpcGUgb3Igc2VydmljZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0cHVibGljIG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuXHRcdHRoaXMuZm0uc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuXHR9XHJcbn0iXX0=
|