@bizdoc/core 1.11.0-next.1 → 1.11.0-next.2
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/compose/attachments/attachments.component.mjs +3 -3
- package/esm2020/lib/compose/attachments/progress-button.directive.mjs +6 -6
- package/esm2020/lib/compose/trace/flow.component.mjs +12 -31
- package/esm2020/lib/compose/trace/trace.component.mjs +3 -3
- package/esm2020/lib/core/controls/file.input.mjs +8 -7
- package/esm2020/lib/core/datasource.service.mjs +3 -3
- package/esm2020/lib/core/functions.mjs +4 -1
- package/esm2020/lib/core/mailbox.service.mjs +41 -11
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/session.service.mjs +7 -2
- package/esm2020/lib/cube/cube.service.mjs +9 -1
- package/esm2020/lib/cube/filter/filter.component.mjs +49 -30
- package/esm2020/lib/shared.module.mjs +4 -4
- package/fesm2015/bizdoc-core.mjs +177 -131
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +177 -131
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/compose/attachments/progress-button.directive.d.ts +3 -3
- package/lib/core/functions.d.ts +4 -0
- package/lib/core/mailbox.service.d.ts +4 -6
- package/lib/core/models.d.ts +0 -1
- package/lib/core/session.service.d.ts +1 -0
- package/lib/cube/cube.service.d.ts +9 -1
- package/lib/cube/filter/filter.component.d.ts +10 -9
- package/lib/shared.module.d.ts +1 -1
- package/package.json +1 -1
@@ -335,13 +335,13 @@ export class TraceViewComponent extends TraceBase {
|
|
335
335
|
}
|
336
336
|
}
|
337
337
|
TraceViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, deps: [{ token: i1.SessionService }, { token: i2.TranslateService }, { token: i3.AccountService }, { token: i4.ChatInfo }, { token: i5.HubService }], target: i0.ɵɵFactoryTarget.Component });
|
338
|
-
TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu
|
338
|
+
TraceViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: TraceViewComponent, selector: "bizdoc-trace", inputs: { model: "model" }, outputs: { versionSelected: "versionSelected" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <span *ngSwitchCase=\"'ActionTaken'\">{{ l.action }}</span>\r\n <span *ngSwitchCase=\"'Owner'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\"> {{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\"> ({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.model\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"], components: [{ type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i9.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i10.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "translate": i11.TranslatePipe, "sanitizeHtml": i12.SanitizeHtmlPipe, "amDurationFormat": i13.DurationFormatPipe, "amDuration": i14.DurationPipe, "amCalendar": i15.CalendarPipe }, animations: [listAnimation, itemAnimation] });
|
339
339
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: TraceViewComponent, decorators: [{
|
340
340
|
type: Component,
|
341
|
-
args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu
|
341
|
+
args: [{ selector: 'bizdoc-trace', animations: [listAnimation, itemAnimation], template: "<div class=\"nav-toolbar row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'ShowAll'|translate\"><mat-icon>filter_list</mat-icon></button>\r\n <mat-menu #menu> \r\n <button mat-menu-item (click)=\"showAll=false\">\r\n <mat-icon>{{ !showAll?'check':'' }}</mat-icon>\r\n <span>{{'Route' | translate }}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"showAll=true\">\r\n <mat-icon>{{showAll?'check':''}}</mat-icon>\r\n <span>{{'Log' | translate }}</span>\r\n </button>\r\n </mat-menu>\r\n</div>\r\n<table class=\"mat-table\" @list>\r\n <tbody role=\"rowgroup\">\r\n <tr class=\"mat-row\" *ngFor=\"let l of data\" @item>\r\n <td class=\"mat-cell\">\r\n <span [innerHTML]=\"l.name | sanitizeHtml\" (click)=\"chat($event)\"></span>\r\n <span *ngIf=l.role>{{'JoinComma'|translate}}{{l.role}}</span>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <ng-container [ngSwitch]=\"l.type\">\r\n <span *ngSwitchCase=\"'ActionTaken'\">{{ l.action }}</span>\r\n <span *ngSwitchCase=\"'Owner'\">{{'Issued' | translate}}</span>\r\n <span *ngSwitchCase=\"'Pending'\">{{'IsPending' | translate}}</span>\r\n <span *ngSwitchCase=\"'CheckOut'\">{{'CheckedIn' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'CheckIn'\">{{'CheckedOut' | translate : l.fileName}}</span>\r\n <span *ngSwitchCase=\"'Estimate'\">{{'Estimate' | translate}}</span>\r\n <span *ngSwitchCase=\"'ModelChange'\">{{'Changed' | translate}}</span>\r\n </ng-container>\r\n <span *ngIf=\"l.fyi\"> {{'FYI'|translate}}</span>\r\n </td>\r\n <td class=\"mat-cell\" [ngSwitch]=\"l.estimate\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n <span *ngIf=\"l.durationMax && l.durationMax === l.durationMin\" [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTime'| translate : (l.durationMax | amDuration:'s')}}</span>\r\n <span *ngIf=\"l.durationMax && l.durationMax !== l.durationMin\"\r\n [bizdocTooltip]=\"l.durationMax|amDurationFormat\">{{'EstimateTimeRange'| translate : (l.durationMin | amDuration:'s') : (l.durationMax | amDuration:'s')}}</span>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <span>{{l.time | amCalendar : null : CALENDAR_SPEC }}</span>\r\n <span *ngIf=\"l.duration\" [bizdocTooltip]=\"l.duration|amDurationFormat\" class=\"duration\"> ({{l.duration | amDuration:'s'}})</span>\r\n </ng-container>\r\n </td>\r\n <td class=\"mat-cell\">\r\n <span *ngIf=\"l.note\">{{l.note}}</span>\r\n <button mat-icon-button *ngIf=\"l.model\" (click)=\"compare(l)\" [bizdocTooltip]=\"'Compare'|translate\" bizdocTooltipPosition=\"start\"><mat-icon>more_horiz</mat-icon></button>\r\n </td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{width:100%}table{width:100%;background:transparent}table td{padding:0 4px}.duration{white-space:nowrap}\n"] }]
|
342
342
|
}], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.TranslateService }, { type: i3.AccountService }, { type: i4.ChatInfo }, { type: i5.HubService }]; }, propDecorators: { model: [{
|
343
343
|
type: Input
|
344
344
|
}], versionSelected: [{
|
345
345
|
type: Output
|
346
346
|
}] } });
|
347
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL3RyYWNlL3RyYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS90cmFjZS90cmFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFJbEIsb0NBQW9DO0FBT3BDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBVy9DLFlBQW9CLFFBQXdCLEVBQ2xDLFVBQTRCLEVBQzVCLFNBQXlCLEVBQ3pCLEtBQWUsRUFDdkIsR0FBZTtRQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxPLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFaTixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUQsU0FBSSxHQUFZLEVBQUUsQ0FBQztRQUVWLGtCQUFhLEdBQWlCO1lBQ3JDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQ3RELFFBQVEsRUFBRSxZQUFZ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b0JBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUM7bUJBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNuQjtJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBYTtRQUNoQixNQUFNLE1BQU0sR0FBSSxDQUFDLENBQUMsVUFBMEIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsTUFBTTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsR0FBVTtRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7K0dBalVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZLQ3hCL0IsNDZGQW1EQSw2cUREN0JjLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQzsyRkFFL0Isa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGNBQWMsY0FHWixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7aU5BR2pDLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxlQUFlO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNwZWMgfSBmcm9tIFwiLi4vLi4vY29yZS9waXBlcy9jYWxlbmRhci5waXBlXCI7XHJcbmltcG9ydCB7IFVzZXJJbmZvLCBMb2dUeXBlLCBEb2N1bWVudE1vZGVsLCBBY3Rpb24sIEF0dGFjaG1lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYWNlQmFzZSB9IGZyb20gXCIuL3RyYWNlLmJhc2VcIjtcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENoYXRJbmZvIH0gZnJvbSBcIi4uLy4uL2NoYXQvY2hhdC1pbmZvXCI7XHJcbmltcG9ydCB7IGl0ZW1BbmltYXRpb24sIGxpc3RBbmltYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9hbmltYXRpb25zXCI7XHJcblxyXG5jb25zdCBZb3UgPSAneW91JztcclxuXHJcbnR5cGUgVXNlckluZm9Zb3UgPSBVc2VySW5mbyB8ICd5b3UnO1xyXG5cclxuLyoqIGNvbXBvbmVudCBzaG93aW5nIHRyYWNlIHRhYmxlICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlJyxcclxuICB0ZW1wbGF0ZVVybDogJ3RyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsndHJhY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbGlzdEFuaW1hdGlvbiwgaXRlbUFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNlVmlld0NvbXBvbmVudCBleHRlbmRzIFRyYWNlQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmVyc2lvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIGRhdGE6IFRyYWNlW10gPSBbXTtcclxuICBwcml2YXRlIF9kYXRhOiBUcmFjZVtdO1xyXG4gIHJlYWRvbmx5IENBTEVOREFSX1NQRUM6IENhbGVuZGFyU3BlYyA9IHtcclxuICAgIGxhc3REYXk6IGBbJHt0aGlzLl90cmFuc2xhdGUuZ2V0KCdZZXN0ZXJkYXknKX1dIEhIOm1tYCxcclxuICAgIGxhc3RXZWVrOiAnZGRkZCBISDptbScsXHJcbiAgICBzYW1lRGF5OiBgWyR7dGhpcy5fdHJhbnNsYXRlLmdldCgnVG9kYXknKX1dIEhIOm1tYCxcclxuICAgIHNhbWVFbHNlOiAnTU1NIERvIEhIOm1tJ1xyXG4gIH07XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHViKTtcclxuICAgIHRoaXMuX3Nob3dBbGwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJhY2VBbGwnKSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luaXRpYWxpc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGlzZSgpIHtcclxuICAgIGNvbnN0IHsgb3duZXJJZCwgb3duZXJCeUlkLCBpc3N1ZWQsIGxvZywgcmVjaXBpZW50cywgYXR0YWNobWVudHMgfSA9IHRoaXMubW9kZWw7XHJcblxyXG4gICAgY29uc3QgdHJhY2U6IFRyYWNlW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBsIG9mIGxvZykge1xyXG4gICAgICBsZXQgYWN0aW9uOiBBY3Rpb24sIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ7XHJcblxyXG4gICAgICBzd2l0Y2ggKGwudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ0FjdGlvblRha2VuJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uLmxvZ2dhYmxlID09PSBmYWxzZSlcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ2hlY2tJbic6XHJcbiAgICAgICAgY2FzZSAnQ2hlY2tPdXQnOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9zaG93QWxsKSBjb250aW51ZTtcclxuICAgICAgICAgIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5maW5kKGYgPT4gZi5pZCA9PT0gbC5maWxlSWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTW9kZWxDaGFuZ2UnOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9zaG93QWxsKSBjb250aW51ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1N1Ym1pdCc6XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX3Nob3dBbGwpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgaWYgKGwuZXN0aW1hdGUpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogJ093bmVyJyxcclxuICAgICAgICAgICAgdGltZTogbC50aW1lXHJcbiAgICAgICAgICB9IGFzIFRyYWNlO1xyXG4gICAgICAgICAgaWYgKG93bmVyQnlJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBvd25lciA9IGF3YWl0IHRoaXMuX3VzZXJPZihvd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgbm9kZS5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnlZb3UnLCB0aGlzLl9uYW1lT2Yob3duZXIpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCB0aGlzLl91c2VyT2Yob3duZXJCeUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBub2RlLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeScsIHRoaXMuX25hbWVPZihvd25lciksIHRoaXMuX25hbWVPZihieSkpO1xyXG4gICAgICAgICAgICAgIGlmIChieS5yb2xlKSBub2RlLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lciA9IGF3YWl0IHRoaXMuX3VzZXJPZihvd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBub2RlLm5hbWUgPSB0aGlzLl9uYW1lT2Yob3duZXIpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAob3duZXIucm9sZSkgbm9kZS5yb2xlID0gb3duZXIucm9sZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJhY2UucHVzaChub2RlKTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN0ZXAgPSB7IC4uLmwgfSBhcyBUcmFjZTtcclxuXHJcbiAgICAgIGlmIChhdHRhY2htZW50KSBzdGVwLmZpbGVOYW1lID0gYXR0YWNobWVudC5maWxlTmFtZTtcclxuXHJcbiAgICAgIGNvbnN0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihsLnVzZXJJZCkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICBpZiAobC5yZWNpcGllbnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHJlY2lwaWVudCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IGwucmVjaXBpZW50SWQpO1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQucm9sZSkgc3RlcC5yb2xlID0gdGhpcy5fcm9sZU5hbWUocmVjaXBpZW50LnJvbGUpO1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQubm9kZUlkKSB7XHJcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gcmVjaXBpZW50Lm5vZGVJZCk7XHJcbiAgICAgICAgICBzdGVwLmZ5aSA9IG5vZGUgJiYgbm9kZS5meWk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKSB7XHJcbiAgICAgICAgICBsZXQgc3Vic3RpdHV0aW5nID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBpZiAobC5ieUlkKSB7XHJcbiAgICAgICAgICAgIGlmIChsLmJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeVlvdScsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0J5WW91Jywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgICBpZiAoYWN0aW9uKVxyXG4gICAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgWW91KSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBieSA9IGF3YWl0IHRoaXMuX3VzZXJPZihsLmJ5SWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1YnN0aXR1dGluZ0J5JywgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpLCB0aGlzLl9uYW1lT2YoYnkpKTtcclxuICAgICAgICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgICAgICAgIHN0ZXAucm9sZSA9IGJ5LnJvbGU7XHJcbiAgICAgICAgICAgICAgaWYgKGFjdGlvbilcclxuICAgICAgICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIGJ5KSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdGb3JZb3UnLCB3aG8uZ2VuZGVyLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGwudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmcnLCB3aG8uZ2VuZGVyLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKHN1YnN0aXR1dGluZykpO1xyXG4gICAgICAgICAgICAgIGlmICh3aG8ucm9sZSlcclxuICAgICAgICAgICAgICAgIHN0ZXAucm9sZSA9IHdoby5yb2xlO1xyXG4gICAgICAgICAgICB9IGlmIChhY3Rpb24pXHJcbiAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgd2hvKSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChsLmJ5SWQpIHtcclxuICAgICAgICAgIGlmIChsLmJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0J5WW91JywgdGhpcy5fbmFtZU9mKHdobykpO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uKVxyXG4gICAgICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIFlvdSkgOiBsLmFjdGlvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYnkgPSBhd2FpdCB0aGlzLl91c2VyT2YobC5ieUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnknLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKGJ5KSk7XHJcbiAgICAgICAgICAgIGlmIChieS5yb2xlKVxyXG4gICAgICAgICAgICAgIHN0ZXAucm9sZSA9IGJ5LnJvbGU7XHJcbiAgICAgICAgICAgIGlmIChhY3Rpb24pXHJcbiAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgYnkpIDogbC5hY3Rpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX25hbWVPZih3aG8pO1xyXG4gICAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgICBzdGVwLnJvbGUgPSB3aG8ucm9sZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFjdGlvbilcclxuICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHdobykgOiBsLmFjdGlvbjtcclxuICAgICAgfVxyXG4gICAgICB0cmFjZS5wdXNoKHN0ZXApO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgciA9IDA7IHIgPCByZWNpcGllbnRzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgIGxldCByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICBpZiAoIXJlY2lwaWVudC5wZW5kaW5nICYmICFyZWNpcGllbnQuZXN0aW1hdGUpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCBzdGVwID0ge1xyXG4gICAgICAgIC4uLnJlY2lwaWVudCxcclxuICAgICAgICB0eXBlOiByZWNpcGllbnQuZXN0aW1hdGUgPyAnRXN0aW1hdGUnIDogJ1BlbmRpbmcnLFxyXG4gICAgICAgIHRpbWU6IHJlY2lwaWVudC5yZWNlaXZlZCxcclxuICAgICAgICBkdXJhdGlvbjogcmVjaXBpZW50LnBlbmRpbmcgPyBkYXlqcygpLmRpZmYocmVjaXBpZW50LnJlY2VpdmVkLCAncycpIDogbnVsbCxcclxuICAgICAgICByb2xlOiByZWNpcGllbnQucm9sZSA/IHRoaXMuX3JvbGVOYW1lKHJlY2lwaWVudC5yb2xlKSA6IG51bGxcclxuICAgICAgfSBhcyBUcmFjZTtcclxuXHJcbiAgICAgIGlmIChyZWNpcGllbnQubm9kZUlkKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMubW9kZWwud29ya2Zsb3cubm9kZXMuZmluZChuID0+IG4uaWQgPT09IHJlY2lwaWVudC5ub2RlSWQpO1xyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHN1cGVyLl9lc3RpbWF0ZVRpbWUobm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChtYXgpXHJcbiAgICAgICAgICAgICAgc3RlcC5kdXJhdGlvbk1pbiA9IG1pbixcclxuICAgICAgICAgICAgICAgIHN0ZXAuZHVyYXRpb25NYXggPSBtYXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdGVwLmZ5aSA9IG5vZGUuZnlpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihyZWNpcGllbnQudXNlcklkKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQpIHtcclxuICAgICAgICBpZiAocmVjaXBpZW50LmJ5SWQpIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnlZb3UnLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBzdWJzdGl0dXRpbmcgPSBhd2FpdCB0aGlzLl91c2VyT2YocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0J5WW91Jywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJzdGl0dXRpbmcgPSBhd2FpdCB0aGlzLl91c2VyT2YocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgbGV0IGJ5ID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5ieUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU3Vic3RpdHV0aW5nQnknLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKHN1YnN0aXR1dGluZyksIHRoaXMuX25hbWVPZihieSkpO1xyXG4gICAgICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgICAgICBzdGVwLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0ZvcllvdScsIHdoby5nZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3Vic3RpdHV0aW5nID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nJywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgICAgIHN0ZXAucm9sZSA9IHdoby5yb2xlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeVlvdScsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBieSA9IGF3YWl0IHRoaXMuX3VzZXJPZihyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeScsIHRoaXMuX25hbWVPZih3aG8pLCB0aGlzLl9uYW1lT2YoYnkpKTtcclxuICAgICAgICAgIGlmIChieS5yb2xlKVxyXG4gICAgICAgICAgICBzdGVwLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBlc2NhbGF0aW9ucyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IGlzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG5cclxuICAgICAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQgZXNjYWxhdGUgPSBbXTtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXNjYWxhdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihlc2NhbGF0aW9uc1tqXS51c2VySWQpO1xyXG4gICAgICAgICAgICBlc2NhbGF0ZS5wdXNoKHdobyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoID09PSAxICYmIGVzY2FsYXRlWzBdID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXNjYWxhdGVkQnlZb3UnLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZEJ5JywgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX3RyYW5zbGF0ZS5qb2luKGVzY2FsYXRlLm1hcChlID0+IHRoaXMuX25hbWVPZihlKSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX25hbWVPZih3aG8pO1xyXG4gICAgICAgICAgICBpZiAod2hvLnJvbGUpXHJcbiAgICAgICAgICAgICAgc3RlcC5yb2xlID0gd2hvLnJvbGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRyYWNlLnB1c2goc3RlcCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGF0YSA9IHRyYWNlLnNvcnQoKGEsIGIpID0+IGEudGltZSA+IGIudGltZSA/IDEgOiBhLnRpbWUgPT09IGIudGltZSA/IDAgOiAtMSk7XHJcbiAgICB0aGlzLl9maWx0ZXIoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsdGVyKCkge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5fc2hvd0FsbCA/IHRoaXMuX2RhdGEgOiB0aGlzLl9kYXRhLmZpbHRlcihsID0+IGwudHlwZSA9PT0gJ0FjdGlvblRha2VuJ1xyXG4gICAgICB8fCBsLnR5cGUgPT09ICdFc3RpbWF0ZSd8fCBsLnR5cGUgPT09ICdQZW5kaW5nJyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Nob3dBbGw6IGJvb2xlYW47XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd0FsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93QWxsO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHNob3dBbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3Nob3dBbGwgPSB2YWx1ZTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0cmFjZUFsbCcsIHZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJyk7XHJcbiAgICB0aGlzLl9kYXRhICYmIHRoaXMuX2ZpbHRlcigpO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHVzZXIgbmFtZSwgY2hhdCBhbmNob3IgdGFnIG9yIFlvdVxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbmFtZU9mKHVzZXI6IFVzZXJJbmZvKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGF0LmZvcm1hdCh1c2VyKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHVzZXJJZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3VzZXJPZih1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLl9hY2NvdW50cy5nZXQodXNlcklkKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcm9sZU5hbWUobmFtZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQociA9PiByLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIHJvbGUgPyByb2xlLnRpdGxlIDogbmFtZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFjdGlvblxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYWN0aW9uTmFtZShhY3Rpb246IEFjdGlvbiwgdXNlcjogVXNlckluZm9Zb3UpOiBzdHJpbmcge1xyXG4gICAgaWYgKHVzZXIgPT09IFlvdSkge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcjtcclxuICAgICAgcmV0dXJuIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ueW91RmVtYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGFjdGlvbi55b3UpIHx8XHJcbiAgICAgICAgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeyBnZW5kZXIgfSA9IHVzZXI7XHJcbiAgICAgIHJldHVybiAoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICAgICAgYWN0aW9uLnBhc3QpXHJcbiAgICAgICAgfHwgYWN0aW9uLnRpdGxlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGF0KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9IChlLnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnZGF0YS1pbmZvJyk7XHJcbiAgICB1c2VySWQgJiZcclxuICAgICAgdGhpcy5fY2hhdC5vcGVuKHVzZXJJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIG1vZGVsIHZlcnNpb24gY29tcGFyZSwgZm9ybSBjb21wb25lbnQgaW4gJ2NvbXBhcmUnIHZpZXcgbW9kZVxyXG4gICAqIEBwYXJhbSBsb2dcclxuICAgKi9cclxuICBjb21wYXJlKGxvZzogVHJhY2UpIHtcclxuICAgIHRoaXMudmVyc2lvblNlbGVjdGVkLmVtaXQobG9nLnRpbWUpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgVHJhY2Uge1xyXG4gIGZ5aT86IGJvb2xlYW47XHJcbiAgdHlwZTogTG9nVHlwZSB8ICdPd25lcicgfCAnUGVuZGluZycgfCAnRXN0aW1hdGUnO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBlbmRpbmc/OiBib29sZWFuO1xyXG4gIGFjdGlvbj86IHN0cmluZztcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgZHVyYXRpb25NaW4/OiBudW1iZXI7XHJcbiAgZHVyYXRpb25NYXg/OiBudW1iZXI7XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgdGltZT86IERhdGU7XHJcbiAgbW9kZWw/OiB7fTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibmF2LXRvb2xiYXIgcm93XCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1Nob3dBbGwnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51IFtoYXNCYWNrZHJvcF09XCJmYWxzZVwiPiBcclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2hvd0FsbD1mYWxzZVwiPlxyXG4gICAgICA8bWF0LWljb24+e3sgIXNob3dBbGw/J2NoZWNrJzonJyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPnt7J1JvdXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzaG93QWxsPXRydWVcIj5cclxuICAgICAgPG1hdC1pY29uPnt7c2hvd0FsbD8nY2hlY2snOicnfX08L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj57eydMb2cnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbjx0YWJsZSBjbGFzcz1cIm1hdC10YWJsZVwiIEBsaXN0PlxyXG4gIDx0Ym9keSByb2xlPVwicm93Z3JvdXBcIj5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbmdGb3I9XCJsZXQgbCBvZiBkYXRhXCIgQGl0ZW0+XHJcbiAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsLm5hbWUgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPWwucm9sZT57eydKb2luQ29tbWEnfHRyYW5zbGF0ZX19e3tsLnJvbGV9fTwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJsLnR5cGVcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInQWN0aW9uVGFrZW4nXCI+e3sgbC5hY3Rpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ093bmVyJ1wiPnt7J0lzc3VlZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInUGVuZGluZydcIj57eydJc1BlbmRpbmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0NoZWNrT3V0J1wiPnt7J0NoZWNrZWRJbicgfCB0cmFuc2xhdGUgOiBsLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0NoZWNrSW4nXCI+e3snQ2hlY2tlZE91dCcgfCB0cmFuc2xhdGUgOiBsLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0VzdGltYXRlJ1wiPnt7J0VzdGltYXRlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidNb2RlbENoYW5nZSdcIj57eydDaGFuZ2VkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibC5meWlcIj4mbmJzcDt7eydGWUknfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiIFtuZ1N3aXRjaF09XCJsLmVzdGltYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJsLmR1cmF0aW9uTWF4ICYmIGwuZHVyYXRpb25NYXggPT09IGwuZHVyYXRpb25NaW5cIiBbYml6ZG9jVG9vbHRpcF09XCJsLmR1cmF0aW9uTWF4fGFtRHVyYXRpb25Gb3JtYXRcIj57eydFc3RpbWF0ZVRpbWUnfCB0cmFuc2xhdGUgOiAobC5kdXJhdGlvbk1heCB8IGFtRHVyYXRpb246J3MnKX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJsLmR1cmF0aW9uTWF4ICYmIGwuZHVyYXRpb25NYXggIT09IGwuZHVyYXRpb25NaW5cIlxyXG4gICAgICAgICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwibC5kdXJhdGlvbk1heHxhbUR1cmF0aW9uRm9ybWF0XCI+e3snRXN0aW1hdGVUaW1lUmFuZ2UnfCB0cmFuc2xhdGUgOiAobC5kdXJhdGlvbk1pbiB8IGFtRHVyYXRpb246J3MnKSA6IChsLmR1cmF0aW9uTWF4IHwgYW1EdXJhdGlvbjoncycpfX08L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPHNwYW4+e3tsLnRpbWUgfCBhbUNhbGVuZGFyIDogbnVsbCA6IENBTEVOREFSX1NQRUMgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImwuZHVyYXRpb25cIiBbYml6ZG9jVG9vbHRpcF09XCJsLmR1cmF0aW9ufGFtRHVyYXRpb25Gb3JtYXRcIiBjbGFzcz1cImR1cmF0aW9uXCI+Jm5ic3A7KHt7bC5kdXJhdGlvbiB8IGFtRHVyYXRpb246J3MnfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibC5ub3RlXCI+e3tsLm5vdGV9fTwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImwubW9kZWxcIiAoY2xpY2spPVwiY29tcGFyZShsKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDb21wYXJlJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJzdGFydFwiPjxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuPC90YWJsZT5cclxuIl19
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb21wb3NlL3RyYWNlL3RyYWNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS90cmFjZS90cmFjZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFNMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFJbEIsb0NBQW9DO0FBT3BDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxTQUFTO0lBVy9DLFlBQW9CLFFBQXdCLEVBQ2xDLFVBQTRCLEVBQzVCLFNBQXlCLEVBQ3pCLEtBQWUsRUFDdkIsR0FBZTtRQUNmLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUxPLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ2xDLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQVU7UUFaTixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUQsU0FBSSxHQUFZLEVBQUUsQ0FBQztRQUVWLGtCQUFhLEdBQWlCO1lBQ3JDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTO1lBQ3RELFFBQVEsRUFBRSxZQUFZO1lBQ3RCLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xELFFBQVEsRUFBRSxjQUFjO1NBQ3pCLENBQUM7UUFPQSxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssT0FBTyxDQUFDO0lBQy9ELENBQUM7SUFDRCxXQUFXLENBQUMsUUFBdUI7UUFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFDTyxLQUFLLENBQUMsV0FBVztRQUN2QixNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRWhGLE1BQU0sS0FBSyxHQUFZLEVBQUUsQ0FBQztRQUUxQixLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUNqQixJQUFJLE1BQWMsRUFBRSxVQUFzQixDQUFDO1lBRTNDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFDZCxLQUFLLGFBQWE7b0JBQ2hCO3dCQUNFLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ3RFLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLOzRCQUMzQixTQUFTO3dCQUNYLE1BQU07cUJBQ1A7Z0JBQ0gsS0FBSyxTQUFTLENBQUM7Z0JBQ2YsS0FBSyxVQUFVO29CQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTt3QkFBRSxTQUFTO29CQUM3QixVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0RCxNQUFNO2dCQUNSLEtBQUssYUFBYTtvQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO3dCQUFFLFNBQVM7b0JBQzdCLE1BQU07Z0JBQ1IsS0FBSyxRQUFRO29CQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTt3QkFBRSxTQUFTO29CQUM3QixJQUFJLENBQUMsQ0FBQyxRQUFRO3dCQUFFLFNBQVM7b0JBQ3pCLE1BQU0sSUFBSSxHQUFHO3dCQUNYLElBQUksRUFBRSxPQUFPO3dCQUNiLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtxQkFDSixDQUFDO29CQUNYLElBQUksU0FBUyxFQUFFO3dCQUNiLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDdEQsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNOzRCQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7NkJBQzNEOzRCQUNILE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzdFLElBQUksRUFBRSxDQUFDLElBQUk7Z0NBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNsQztxQkFDRjt5QkFDSTt3QkFDSCxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07NEJBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7NkJBQ3BDOzRCQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDdEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUVoQyxJQUFJLEtBQUssQ0FBQyxJQUFJO2dDQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQzt5QkFDeEM7cUJBQ0Y7b0JBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDakIsU0FBUztnQkFFWDtvQkFDRSxTQUFTO2FBQ1o7WUFFRCxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFXLENBQUM7WUFFL0IsSUFBSSxVQUFVO2dCQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUVwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRXJELElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtnQkFDakIsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFNBQVMsQ0FBQyxJQUFJO29CQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtvQkFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUM1RSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUM3QjtnQkFFRCxJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUU7b0JBQzVCLElBQUksWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzVFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTt3QkFDVixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7NEJBQ25DLElBQUksU0FBUyxDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07Z0NBQ25ELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs7Z0NBRTVELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzs0QkFDMUgsSUFBSSxNQUFNO2dDQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt5QkFDbkU7NkJBQ0k7NEJBQ0gsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzs0QkFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNuSCxJQUFJLEVBQUUsQ0FBQyxJQUFJO2dDQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQzs0QkFDdEIsSUFBSSxNQUFNO2dDQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt5QkFDbEU7cUJBQ0Y7eUJBQ0k7d0JBQ0gsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTs0QkFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs2QkFDMUYsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTs0QkFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs2QkFDekc7NEJBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzs0QkFDbkgsSUFBSSxHQUFHLENBQUMsSUFBSTtnQ0FDVixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7eUJBQ3hCO3dCQUFDLElBQUksTUFBTTs0QkFDVixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7cUJBQ25FO2lCQUNGO3FCQUNJLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRTtvQkFDZixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDNUQsSUFBSSxNQUFNOzRCQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztxQkFDbkU7eUJBQ0k7d0JBQ0gsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzNFLElBQUksRUFBRSxDQUFDLElBQUk7NEJBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO3dCQUN0QixJQUFJLE1BQU07NEJBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO3FCQUNsRTtpQkFDRjthQUNGO2lCQUNJO2dCQUNILElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQ3BDO29CQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDOUIsSUFBSSxHQUFHLENBQUMsSUFBSTt3QkFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7aUJBQ3hCO2dCQUNELElBQUksTUFBTTtvQkFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDbkU7WUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7Z0JBQUUsU0FBUztZQUN4RCxNQUFNLElBQUksR0FBRztnQkFDWCxHQUFHLFNBQVM7Z0JBQ1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDakQsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRO2dCQUN4QixRQUFRLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7Z0JBQzFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUNwRCxDQUFDO1lBRVgsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVFLElBQUksSUFBSSxFQUFFO29CQUNSLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTt3QkFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvQyxJQUFJLEdBQUc7NEJBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHO2dDQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztxQkFDNUI7b0JBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUNyQjthQUNGO1lBRUQsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUUzRCxJQUFJLFNBQVMsQ0FBQyxjQUFjLEVBQUU7Z0JBQzVCLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtvQkFDbEIsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO3dCQUMzQyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNOzRCQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NkJBQ3pEOzRCQUNILElBQUksWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7NEJBQzVFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzt5QkFDekg7cUJBQ0Y7eUJBQ0k7d0JBQ0gsSUFBSSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDNUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDeEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNuSCxJQUFJLEVBQUUsQ0FBQyxJQUFJOzRCQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztxQkFDdkI7aUJBQ0Y7cUJBQ0k7b0JBQ0gsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTt3QkFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt5QkFDMUYsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTt3QkFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt5QkFDekc7d0JBQ0gsSUFBSSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzt3QkFDbkgsSUFBSSxHQUFHLENBQUMsSUFBSTs0QkFDVixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7cUJBQ3hCO2lCQUNGO2FBQ0Y7aUJBQ0ksSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUN2QixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO29CQUN6QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7cUJBQ3pEO29CQUNILElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMzRSxJQUFJLEVBQUUsQ0FBQyxJQUFJO3dCQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztpQkFDdkI7YUFDRjtpQkFDSTtnQkFDSCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFN0gsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUN0QixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUMzQyxJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUNwRCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNwQjtvQkFDRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07d0JBQ2xFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzt3QkFFckUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDL0g7cUJBQ0k7b0JBQ0gsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTt3QkFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDcEM7d0JBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUM5QixJQUFJLEdBQUcsQ0FBQyxJQUFJOzRCQUNWLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztxQkFDeEI7aUJBQ0Y7YUFDRjtZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEI7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDTyxPQUFPO1FBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYTtlQUNuRixDQUFDLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBRyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFHRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ00sT0FBTztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNEOzs7T0FHRztJQUNLLE9BQU8sQ0FBQyxJQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNEOzs7T0FHRztJQUNLLE9BQU8sQ0FBQyxNQUFjO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNPLFNBQVMsQ0FBQyxJQUFJO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxXQUFXLENBQUMsTUFBYyxFQUFFLElBQWlCO1FBQ25ELElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQyxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3RELE1BQU0sQ0FBQyxHQUFHLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLElBQUk7Z0JBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoQjthQUNJO1lBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztZQUN4QixPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUM7bUJBQ1gsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNuQjtJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBYTtRQUNoQixNQUFNLE1BQU0sR0FBSSxDQUFDLENBQUMsVUFBMEIsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkUsTUFBTTtZQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxPQUFPLENBQUMsR0FBVTtRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7K0dBalVVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZLQ3hCL0IsbzVGQW1EQSw2cUREN0JjLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQzsyRkFFL0Isa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGNBQWMsY0FHWixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7aU5BR2pDLEtBQUs7c0JBQWIsS0FBSztnQkFDYSxlQUFlO3NCQUFqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xyXG5pbXBvcnQgeyBDYWxlbmRhclNwZWMgfSBmcm9tIFwiLi4vLi4vY29yZS9waXBlcy9jYWxlbmRhci5waXBlXCI7XHJcbmltcG9ydCB7IFVzZXJJbmZvLCBMb2dUeXBlLCBEb2N1bWVudE1vZGVsLCBBY3Rpb24sIEF0dGFjaG1lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL3RyYW5zbGF0ZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFjY291bnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWNjb3VudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRyYWNlQmFzZSB9IGZyb20gXCIuL3RyYWNlLmJhc2VcIjtcclxuaW1wb3J0IHsgSHViU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h1Yi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENoYXRJbmZvIH0gZnJvbSBcIi4uLy4uL2NoYXQvY2hhdC1pbmZvXCI7XHJcbmltcG9ydCB7IGl0ZW1BbmltYXRpb24sIGxpc3RBbmltYXRpb24gfSBmcm9tIFwiLi4vLi4vY29yZS9hbmltYXRpb25zXCI7XHJcblxyXG5jb25zdCBZb3UgPSAneW91JztcclxuXHJcbnR5cGUgVXNlckluZm9Zb3UgPSBVc2VySW5mbyB8ICd5b3UnO1xyXG5cclxuLyoqIGNvbXBvbmVudCBzaG93aW5nIHRyYWNlIHRhYmxlICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLXRyYWNlJyxcclxuICB0ZW1wbGF0ZVVybDogJ3RyYWNlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsndHJhY2UuY29tcG9uZW50LnNjc3MnXSxcclxuICBhbmltYXRpb25zOiBbbGlzdEFuaW1hdGlvbiwgaXRlbUFuaW1hdGlvbl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYWNlVmlld0NvbXBvbmVudCBleHRlbmRzIFRyYWNlQmFzZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbW9kZWw6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmVyc2lvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG4gIGRhdGE6IFRyYWNlW10gPSBbXTtcclxuICBwcml2YXRlIF9kYXRhOiBUcmFjZVtdO1xyXG4gIHJlYWRvbmx5IENBTEVOREFSX1NQRUM6IENhbGVuZGFyU3BlYyA9IHtcclxuICAgIGxhc3REYXk6IGBbJHt0aGlzLl90cmFuc2xhdGUuZ2V0KCdZZXN0ZXJkYXknKX1dIEhIOm1tYCxcclxuICAgIGxhc3RXZWVrOiAnZGRkZCBISDptbScsXHJcbiAgICBzYW1lRGF5OiBgWyR7dGhpcy5fdHJhbnNsYXRlLmdldCgnVG9kYXknKX1dIEhIOm1tYCxcclxuICAgIHNhbWVFbHNlOiAnTU1NIERvIEhIOm1tJ1xyXG4gIH07XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9hY2NvdW50czogQWNjb3VudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGF0OiBDaGF0SW5mbyxcclxuICAgIGh1YjogSHViU2VydmljZSkge1xyXG4gICAgc3VwZXIoaHViKTtcclxuICAgIHRoaXMuX3Nob3dBbGwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndHJhY2VBbGwnKSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoX2NoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuX2luaXRpYWxpc2UoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBfaW5pdGlhbGlzZSgpIHtcclxuICAgIGNvbnN0IHsgb3duZXJJZCwgb3duZXJCeUlkLCBpc3N1ZWQsIGxvZywgcmVjaXBpZW50cywgYXR0YWNobWVudHMgfSA9IHRoaXMubW9kZWw7XHJcblxyXG4gICAgY29uc3QgdHJhY2U6IFRyYWNlW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBsIG9mIGxvZykge1xyXG4gICAgICBsZXQgYWN0aW9uOiBBY3Rpb24sIGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ7XHJcblxyXG4gICAgICBzd2l0Y2ggKGwudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ0FjdGlvblRha2VuJzpcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgYWN0aW9uID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmFjdGlvbnMuZmluZChhID0+IGEubmFtZSA9PT0gbC5hY3Rpb24pO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uLmxvZ2dhYmxlID09PSBmYWxzZSlcclxuICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnQ2hlY2tJbic6XHJcbiAgICAgICAgY2FzZSAnQ2hlY2tPdXQnOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9zaG93QWxsKSBjb250aW51ZTtcclxuICAgICAgICAgIGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5maW5kKGYgPT4gZi5pZCA9PT0gbC5maWxlSWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTW9kZWxDaGFuZ2UnOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9zaG93QWxsKSBjb250aW51ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ1N1Ym1pdCc6XHJcbiAgICAgICAgICBpZiAoIXRoaXMuX3Nob3dBbGwpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgaWYgKGwuZXN0aW1hdGUpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogJ093bmVyJyxcclxuICAgICAgICAgICAgdGltZTogbC50aW1lXHJcbiAgICAgICAgICB9IGFzIFRyYWNlO1xyXG4gICAgICAgICAgaWYgKG93bmVyQnlJZCkge1xyXG4gICAgICAgICAgICBjb25zdCBvd25lciA9IGF3YWl0IHRoaXMuX3VzZXJPZihvd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgaWYgKG93bmVyQnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgbm9kZS5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnlZb3UnLCB0aGlzLl9uYW1lT2Yob3duZXIpKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgYnkgPSBhd2FpdCB0aGlzLl91c2VyT2Yob3duZXJCeUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBub2RlLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeScsIHRoaXMuX25hbWVPZihvd25lciksIHRoaXMuX25hbWVPZihieSkpO1xyXG4gICAgICAgICAgICAgIGlmIChieS5yb2xlKSBub2RlLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKG93bmVySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICAgIG5vZGUubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBvd25lciA9IGF3YWl0IHRoaXMuX3VzZXJPZihvd25lcklkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBub2RlLm5hbWUgPSB0aGlzLl9uYW1lT2Yob3duZXIpO1xyXG5cclxuICAgICAgICAgICAgICBpZiAob3duZXIucm9sZSkgbm9kZS5yb2xlID0gb3duZXIucm9sZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdHJhY2UucHVzaChub2RlKTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHN0ZXAgPSB7IC4uLmwgfSBhcyBUcmFjZTtcclxuXHJcbiAgICAgIGlmIChhdHRhY2htZW50KSBzdGVwLmZpbGVOYW1lID0gYXR0YWNobWVudC5maWxlTmFtZTtcclxuXHJcbiAgICAgIGNvbnN0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihsLnVzZXJJZCkudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgICBpZiAobC5yZWNpcGllbnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHJlY2lwaWVudCA9IHJlY2lwaWVudHMuZmluZChyID0+IHIuaWQgPT09IGwucmVjaXBpZW50SWQpO1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQucm9sZSkgc3RlcC5yb2xlID0gdGhpcy5fcm9sZU5hbWUocmVjaXBpZW50LnJvbGUpO1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQubm9kZUlkKSB7XHJcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5tb2RlbC53b3JrZmxvdy5ub2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gcmVjaXBpZW50Lm5vZGVJZCk7XHJcbiAgICAgICAgICBzdGVwLmZ5aSA9IG5vZGUgJiYgbm9kZS5meWk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKSB7XHJcbiAgICAgICAgICBsZXQgc3Vic3RpdHV0aW5nID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBpZiAobC5ieUlkKSB7XHJcbiAgICAgICAgICAgIGlmIChsLmJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeVlvdScsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0J5WW91Jywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgICBpZiAoYWN0aW9uKVxyXG4gICAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgWW91KSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBieSA9IGF3YWl0IHRoaXMuX3VzZXJPZihsLmJ5SWQpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1N1YnN0aXR1dGluZ0J5JywgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpLCB0aGlzLl9uYW1lT2YoYnkpKTtcclxuICAgICAgICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgICAgICAgIHN0ZXAucm9sZSA9IGJ5LnJvbGU7XHJcbiAgICAgICAgICAgICAgaWYgKGFjdGlvbilcclxuICAgICAgICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIGJ5KSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmdGb3JZb3UnLCB3aG8uZ2VuZGVyLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGwudXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLnBlcnNvbmFsaXplKCdTdWJzdGl0dXRpbmcnLCB3aG8uZ2VuZGVyLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKHN1YnN0aXR1dGluZykpO1xyXG4gICAgICAgICAgICAgIGlmICh3aG8ucm9sZSlcclxuICAgICAgICAgICAgICAgIHN0ZXAucm9sZSA9IHdoby5yb2xlO1xyXG4gICAgICAgICAgICB9IGlmIChhY3Rpb24pXHJcbiAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgd2hvKSA6IGwuYWN0aW9uO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChsLmJ5SWQpIHtcclxuICAgICAgICAgIGlmIChsLmJ5SWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKSB7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0J5WW91JywgdGhpcy5fbmFtZU9mKHdobykpO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9uKVxyXG4gICAgICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIFlvdSkgOiBsLmFjdGlvbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYnkgPSBhd2FpdCB0aGlzLl91c2VyT2YobC5ieUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnknLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKGJ5KSk7XHJcbiAgICAgICAgICAgIGlmIChieS5yb2xlKVxyXG4gICAgICAgICAgICAgIHN0ZXAucm9sZSA9IGJ5LnJvbGU7XHJcbiAgICAgICAgICAgIGlmIChhY3Rpb24pXHJcbiAgICAgICAgICAgICAgc3RlcC5hY3Rpb24gPSBhY3Rpb24gPyB0aGlzLl9hY3Rpb25OYW1lKGFjdGlvbiwgYnkpIDogbC5hY3Rpb247XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChsLnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdZb3UnKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX25hbWVPZih3aG8pO1xyXG4gICAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgICBzdGVwLnJvbGUgPSB3aG8ucm9sZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFjdGlvbilcclxuICAgICAgICAgIHN0ZXAuYWN0aW9uID0gYWN0aW9uID8gdGhpcy5fYWN0aW9uTmFtZShhY3Rpb24sIHdobykgOiBsLmFjdGlvbjtcclxuICAgICAgfVxyXG4gICAgICB0cmFjZS5wdXNoKHN0ZXApO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgciA9IDA7IHIgPCByZWNpcGllbnRzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgIGxldCByZWNpcGllbnQgPSByZWNpcGllbnRzW3JdO1xyXG4gICAgICBpZiAoIXJlY2lwaWVudC5wZW5kaW5nICYmICFyZWNpcGllbnQuZXN0aW1hdGUpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCBzdGVwID0ge1xyXG4gICAgICAgIC4uLnJlY2lwaWVudCxcclxuICAgICAgICB0eXBlOiByZWNpcGllbnQuZXN0aW1hdGUgPyAnRXN0aW1hdGUnIDogJ1BlbmRpbmcnLFxyXG4gICAgICAgIHRpbWU6IHJlY2lwaWVudC5yZWNlaXZlZCxcclxuICAgICAgICBkdXJhdGlvbjogcmVjaXBpZW50LnBlbmRpbmcgPyBkYXlqcygpLmRpZmYocmVjaXBpZW50LnJlY2VpdmVkLCAncycpIDogbnVsbCxcclxuICAgICAgICByb2xlOiByZWNpcGllbnQucm9sZSA/IHRoaXMuX3JvbGVOYW1lKHJlY2lwaWVudC5yb2xlKSA6IG51bGxcclxuICAgICAgfSBhcyBUcmFjZTtcclxuXHJcbiAgICAgIGlmIChyZWNpcGllbnQubm9kZUlkKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMubW9kZWwud29ya2Zsb3cubm9kZXMuZmluZChuID0+IG4uaWQgPT09IHJlY2lwaWVudC5ub2RlSWQpO1xyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LmVzdGltYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbWluLCBtYXggfSA9IHN1cGVyLl9lc3RpbWF0ZVRpbWUobm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChtYXgpXHJcbiAgICAgICAgICAgICAgc3RlcC5kdXJhdGlvbk1pbiA9IG1pbixcclxuICAgICAgICAgICAgICAgIHN0ZXAuZHVyYXRpb25NYXggPSBtYXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdGVwLmZ5aSA9IG5vZGUuZnlpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihyZWNpcGllbnQudXNlcklkKS50b1Byb21pc2UoKTtcclxuXHJcbiAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQpIHtcclxuICAgICAgICBpZiAocmVjaXBpZW50LmJ5SWQpIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnQnlZb3UnLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGxldCBzdWJzdGl0dXRpbmcgPSBhd2FpdCB0aGlzLl91c2VyT2YocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0J5WW91Jywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJzdGl0dXRpbmcgPSBhd2FpdCB0aGlzLl91c2VyT2YocmVjaXBpZW50LnN1YnN0aXR1dGluZ0lkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgbGV0IGJ5ID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5ieUlkKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnU3Vic3RpdHV0aW5nQnknLCB0aGlzLl9uYW1lT2Yod2hvKSwgdGhpcy5fbmFtZU9mKHN1YnN0aXR1dGluZyksIHRoaXMuX25hbWVPZihieSkpO1xyXG4gICAgICAgICAgICBpZiAoYnkucm9sZSlcclxuICAgICAgICAgICAgICBzdGVwLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZWNpcGllbnQuc3Vic3RpdHV0aW5nSWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1N1YnN0aXR1dGluZ0ZvcllvdScsIHdoby5nZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgIGVsc2UgaWYgKHJlY2lwaWVudC51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24udXNlcklkKVxyXG4gICAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUucGVyc29uYWxpemUoJ1lvdVN1YnN0aXR1dGUnLCB0aGlzLl9zZXNzaW9uLnByb2ZpbGUuYnlHZW5kZXIsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgc3Vic3RpdHV0aW5nID0gYXdhaXQgdGhpcy5fdXNlck9mKHJlY2lwaWVudC5zdWJzdGl0dXRpbmdJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5wZXJzb25hbGl6ZSgnU3Vic3RpdHV0aW5nJywgd2hvLmdlbmRlciwgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX25hbWVPZihzdWJzdGl0dXRpbmcpKTtcclxuICAgICAgICAgICAgaWYgKHdoby5yb2xlKVxyXG4gICAgICAgICAgICAgIHN0ZXAucm9sZSA9IHdoby5yb2xlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChyZWNpcGllbnQuYnlJZCkge1xyXG4gICAgICAgIGlmIChyZWNpcGllbnQuYnlJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeVlvdScsIHRoaXMuX25hbWVPZih3aG8pKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBieSA9IGF3YWl0IHRoaXMuX3VzZXJPZihyZWNpcGllbnQuYnlJZCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICBzdGVwLm5hbWUgPSB0aGlzLl90cmFuc2xhdGUuZ2V0KCdCeScsIHRoaXMuX25hbWVPZih3aG8pLCB0aGlzLl9uYW1lT2YoYnkpKTtcclxuICAgICAgICAgIGlmIChieS5yb2xlKVxyXG4gICAgICAgICAgICBzdGVwLnJvbGUgPSBieS5yb2xlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zdCBlc2NhbGF0aW9ucyA9IHRoaXMubW9kZWwubG9nLmZpbHRlcihsID0+IGwudGltZSA+IGlzc3VlZCAmJiBsLnR5cGUgPT09ICdFc2NhbGF0aW9uJyAmJiBsLnJlY2lwaWVudElkID09PSByZWNpcGllbnQuaWQpO1xyXG5cclxuICAgICAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQgZXNjYWxhdGUgPSBbXTtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZXNjYWxhdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IHdobyA9IGF3YWl0IHRoaXMuX3VzZXJPZihlc2NhbGF0aW9uc1tqXS51c2VySWQpO1xyXG4gICAgICAgICAgICBlc2NhbGF0ZS5wdXNoKHdobyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZXNjYWxhdGlvbnMubGVuZ3RoID09PSAxICYmIGVzY2FsYXRlWzBdID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZClcclxuICAgICAgICAgICAgc3RlcC5uYW1lID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRXNjYWxhdGVkQnlZb3UnLCB0aGlzLl9uYW1lT2Yod2hvKSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0VzY2FsYXRlZEJ5JywgdGhpcy5fbmFtZU9mKHdobyksIHRoaXMuX3RyYW5zbGF0ZS5qb2luKGVzY2FsYXRlLm1hcChlID0+IHRoaXMuX25hbWVPZihlKSkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAocmVjaXBpZW50LnVzZXJJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpXHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ1lvdScpO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHN0ZXAubmFtZSA9IHRoaXMuX25hbWVPZih3aG8pO1xyXG4gICAgICAgICAgICBpZiAod2hvLnJvbGUpXHJcbiAgICAgICAgICAgICAgc3RlcC5yb2xlID0gd2hvLnJvbGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRyYWNlLnB1c2goc3RlcCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZGF0YSA9IHRyYWNlLnNvcnQoKGEsIGIpID0+IGEudGltZSA+IGIudGltZSA/IDEgOiBhLnRpbWUgPT09IGIudGltZSA/IDAgOiAtMSk7XHJcbiAgICB0aGlzLl9maWx0ZXIoKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZmlsdGVyKCkge1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5fc2hvd0FsbCA/IHRoaXMuX2RhdGEgOiB0aGlzLl9kYXRhLmZpbHRlcihsID0+IGwudHlwZSA9PT0gJ0FjdGlvblRha2VuJ1xyXG4gICAgICB8fCBsLnR5cGUgPT09ICdFc3RpbWF0ZSd8fCBsLnR5cGUgPT09ICdQZW5kaW5nJyk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Nob3dBbGw6IGJvb2xlYW47XHJcblxyXG4gIHB1YmxpYyBnZXQgc2hvd0FsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zaG93QWxsO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHNob3dBbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3Nob3dBbGwgPSB2YWx1ZTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0cmFjZUFsbCcsIHZhbHVlID8gJ3RydWUnIDogJ2ZhbHNlJyk7XHJcbiAgICB0aGlzLl9kYXRhICYmIHRoaXMuX2ZpbHRlcigpO1xyXG4gIH1cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubmdPbkNoYW5nZXMobnVsbCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIHVzZXIgbmFtZSwgY2hhdCBhbmNob3IgdGFnIG9yIFlvdVxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfbmFtZU9mKHVzZXI6IFVzZXJJbmZvKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGF0LmZvcm1hdCh1c2VyKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHVzZXJJZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgX3VzZXJPZih1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VXNlckluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLl9hY2NvdW50cy5nZXQodXNlcklkKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcm9sZU5hbWUobmFtZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByb2xlID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLnJvbGVzLmZpbmQociA9PiByLm5hbWUgPT09IG5hbWUpO1xyXG4gICAgcmV0dXJuIHJvbGUgPyByb2xlLnRpdGxlIDogbmFtZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIGFjdGlvblxyXG4gICAqIEBwYXJhbSB1c2VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfYWN0aW9uTmFtZShhY3Rpb246IEFjdGlvbiwgdXNlcjogVXNlckluZm9Zb3UpOiBzdHJpbmcge1xyXG4gICAgaWYgKHVzZXIgPT09IFlvdSkge1xyXG4gICAgICBjb25zdCBnZW5kZXIgPSB0aGlzLl9zZXNzaW9uLmdlbmRlcjtcclxuICAgICAgcmV0dXJuIChnZW5kZXIgPT09ICdNYWxlJyA/IChhY3Rpb24ueW91TWFsZSB8fCBhY3Rpb24ueW91KSA6XHJcbiAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ueW91RmVtYWxlIHx8IGFjdGlvbi55b3UpIDpcclxuICAgICAgICAgIGFjdGlvbi55b3UpIHx8XHJcbiAgICAgICAgYWN0aW9uLnBhc3QgfHxcclxuICAgICAgICBhY3Rpb24udGl0bGU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uc3QgeyBnZW5kZXIgfSA9IHVzZXI7XHJcbiAgICAgIHJldHVybiAoZ2VuZGVyID09PSAnTWFsZScgPyAoYWN0aW9uLnBhc3RNYWxlIHx8IGFjdGlvbi5wYXN0KSA6XHJcbiAgICAgICAgZ2VuZGVyID09PSAnRmVtYWxlJyA/IChhY3Rpb24ucGFzdEZlbWFsZSB8fCBhY3Rpb24ucGFzdCkgOlxyXG4gICAgICAgICAgYWN0aW9uLnBhc3QpXHJcbiAgICAgICAgfHwgYWN0aW9uLnRpdGxlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjaGF0KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgIGNvbnN0IHVzZXJJZCA9IChlLnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgnZGF0YS1pbmZvJyk7XHJcbiAgICB1c2VySWQgJiZcclxuICAgICAgdGhpcy5fY2hhdC5vcGVuKHVzZXJJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIG1vZGVsIHZlcnNpb24gY29tcGFyZSwgZm9ybSBjb21wb25lbnQgaW4gJ2NvbXBhcmUnIHZpZXcgbW9kZVxyXG4gICAqIEBwYXJhbSBsb2dcclxuICAgKi9cclxuICBjb21wYXJlKGxvZzogVHJhY2UpIHtcclxuICAgIHRoaXMudmVyc2lvblNlbGVjdGVkLmVtaXQobG9nLnRpbWUpO1xyXG4gIH1cclxufVxyXG5pbnRlcmZhY2UgVHJhY2Uge1xyXG4gIGZ5aT86IGJvb2xlYW47XHJcbiAgdHlwZTogTG9nVHlwZSB8ICdPd25lcicgfCAnUGVuZGluZycgfCAnRXN0aW1hdGUnO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgZXN0aW1hdGU/OiBib29sZWFuO1xyXG4gIHBlbmRpbmc/OiBib29sZWFuO1xyXG4gIGFjdGlvbj86IHN0cmluZztcclxuICByb2xlPzogc3RyaW5nO1xyXG4gIG5vdGU/OiBzdHJpbmc7XHJcbiAgZHVyYXRpb24/OiBudW1iZXI7XHJcbiAgZHVyYXRpb25NaW4/OiBudW1iZXI7XHJcbiAgZHVyYXRpb25NYXg/OiBudW1iZXI7XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbiAgdGltZT86IERhdGU7XHJcbiAgbW9kZWw/OiB7fTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibmF2LXRvb2xiYXIgcm93XCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1Nob3dBbGwnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPG1hdC1tZW51ICNtZW51PiBcclxuICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic2hvd0FsbD1mYWxzZVwiPlxyXG4gICAgICA8bWF0LWljb24+e3sgIXNob3dBbGw/J2NoZWNrJzonJyB9fTwvbWF0LWljb24+XHJcbiAgICAgIDxzcGFuPnt7J1JvdXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzaG93QWxsPXRydWVcIj5cclxuICAgICAgPG1hdC1pY29uPnt7c2hvd0FsbD8nY2hlY2snOicnfX08L21hdC1pY29uPlxyXG4gICAgICA8c3Bhbj57eydMb2cnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9tYXQtbWVudT5cclxuPC9kaXY+XHJcbjx0YWJsZSBjbGFzcz1cIm1hdC10YWJsZVwiIEBsaXN0PlxyXG4gIDx0Ym9keSByb2xlPVwicm93Z3JvdXBcIj5cclxuICAgIDx0ciBjbGFzcz1cIm1hdC1yb3dcIiAqbmdGb3I9XCJsZXQgbCBvZiBkYXRhXCIgQGl0ZW0+XHJcbiAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsLm5hbWUgfCBzYW5pdGl6ZUh0bWxcIiAoY2xpY2spPVwiY2hhdCgkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPWwucm9sZT57eydKb2luQ29tbWEnfHRyYW5zbGF0ZX19e3tsLnJvbGV9fTwvc3Bhbj5cclxuICAgICAgPC90ZD5cclxuICAgICAgPHRkIGNsYXNzPVwibWF0LWNlbGxcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJsLnR5cGVcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInQWN0aW9uVGFrZW4nXCI+e3sgbC5hY3Rpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ093bmVyJ1wiPnt7J0lzc3VlZCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaENhc2U9XCInUGVuZGluZydcIj57eydJc1BlbmRpbmcnIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0NoZWNrT3V0J1wiPnt7J0NoZWNrZWRJbicgfCB0cmFuc2xhdGUgOiBsLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0NoZWNrSW4nXCI+e3snQ2hlY2tlZE91dCcgfCB0cmFuc2xhdGUgOiBsLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ0VzdGltYXRlJ1wiPnt7J0VzdGltYXRlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidNb2RlbENoYW5nZSdcIj57eydDaGFuZ2VkJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibC5meWlcIj4mbmJzcDt7eydGWUknfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiIFtuZ1N3aXRjaF09XCJsLmVzdGltYXRlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJsLmR1cmF0aW9uTWF4ICYmIGwuZHVyYXRpb25NYXggPT09IGwuZHVyYXRpb25NaW5cIiBbYml6ZG9jVG9vbHRpcF09XCJsLmR1cmF0aW9uTWF4fGFtRHVyYXRpb25Gb3JtYXRcIj57eydFc3RpbWF0ZVRpbWUnfCB0cmFuc2xhdGUgOiAobC5kdXJhdGlvbk1heCB8IGFtRHVyYXRpb246J3MnKX19PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJsLmR1cmF0aW9uTWF4ICYmIGwuZHVyYXRpb25NYXggIT09IGwuZHVyYXRpb25NaW5cIlxyXG4gICAgICAgICAgICAgICAgW2JpemRvY1Rvb2x0aXBdPVwibC5kdXJhdGlvbk1heHxhbUR1cmF0aW9uRm9ybWF0XCI+e3snRXN0aW1hdGVUaW1lUmFuZ2UnfCB0cmFuc2xhdGUgOiAobC5kdXJhdGlvbk1pbiB8IGFtRHVyYXRpb246J3MnKSA6IChsLmR1cmF0aW9uTWF4IHwgYW1EdXJhdGlvbjoncycpfX08L3NwYW4+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPHNwYW4+e3tsLnRpbWUgfCBhbUNhbGVuZGFyIDogbnVsbCA6IENBTEVOREFSX1NQRUMgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImwuZHVyYXRpb25cIiBbYml6ZG9jVG9vbHRpcF09XCJsLmR1cmF0aW9ufGFtRHVyYXRpb25Gb3JtYXRcIiBjbGFzcz1cImR1cmF0aW9uXCI+Jm5ic3A7KHt7bC5kdXJhdGlvbiB8IGFtRHVyYXRpb246J3MnfX0pPC9zcGFuPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RkPlxyXG4gICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwibC5ub3RlXCI+e3tsLm5vdGV9fTwvc3Bhbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cImwubW9kZWxcIiAoY2xpY2spPVwiY29tcGFyZShsKVwiIFtiaXpkb2NUb29sdGlwXT1cIidDb21wYXJlJ3x0cmFuc2xhdGVcIiBiaXpkb2NUb29sdGlwUG9zaXRpb249XCJzdGFydFwiPjxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvdHI+XHJcbiAgPC90Ym9keT5cclxuPC90YWJsZT5cclxuIl19
|
@@ -19,10 +19,11 @@ import * as i9 from "@angular/material/icon";
|
|
19
19
|
import * as i10 from "@angular/material/menu";
|
20
20
|
import * as i11 from "@angular/material/divider";
|
21
21
|
import * as i12 from "@angular/common";
|
22
|
-
import * as i13 from "
|
23
|
-
import * as i14 from "
|
24
|
-
import * as i15 from "../
|
25
|
-
import * as i16 from "../pipes/
|
22
|
+
import * as i13 from "../../compose/attachments/progress-button.directive";
|
23
|
+
import * as i14 from "@angular/flex-layout/flex";
|
24
|
+
import * as i15 from "../popup/tooltip.directive";
|
25
|
+
import * as i16 from "../pipes/translate.pipe";
|
26
|
+
import * as i17 from "../pipes/calendar.pipe";
|
26
27
|
export class FileInput {
|
27
28
|
constructor(_dropableElement, _mailbox, _sanitizer, _attachmentInfo, _translate, _session, _sb, ngControl, _model) {
|
28
29
|
this._dropableElement = _dropableElement;
|
@@ -308,10 +309,10 @@ export class FileInput {
|
|
308
309
|
}
|
309
310
|
FileInput.nextId = 0;
|
310
311
|
FileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileInput, deps: [{ token: i0.ElementRef }, { token: i1.MailboxService }, { token: i2.DomSanitizer }, { token: i3.AttachmentInfo }, { token: i4.TranslateService }, { token: i5.SessionService }, { token: i6.PromptService }, { token: i7.NgControl, optional: true, self: true }, { token: DOCUMENT_MODEL }], target: i0.ɵɵFactoryTarget.Component });
|
311
|
-
FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type:
|
312
|
+
FileInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FileInput, selector: "bizdoc-file-upload", inputs: { multiple: "multiple", accept: "accept", icon: "icon", value: "value", placeholder: "placeholder", required: "required", disabled: "disabled" }, host: { listeners: { "document:drop": "handleDocumentDrop($event)", "drop": "handleDrop($event)", "dragenter": "handleEnter($event)", "dragleave": "handleLeave($event)", "dragover": "handleOver($event)" }, properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy" }, classAttribute: "file-dropable" }, viewQueries: [{ propertyName: "_input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"], components: [{ type: i8.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.ProgressDirective, selector: "[progressIndicator]", inputs: ["progressIndicator"] }, { type: i14.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i15.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }], pipes: { "translate": i16.TranslatePipe, "amCalendar": i17.CalendarPipe } });
|
312
313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FileInput, decorators: [{
|
313
314
|
type: Component,
|
314
|
-
args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover{background:white;opacity:.5}\n"] }]
|
315
|
+
args: [{ host: { class: 'file-dropable' }, selector: 'bizdoc-file-upload', template: "<button mat-button *ngIf=\"!items; else preview\" (click)=\"prompt()\">\r\n <mat-icon class=\"filled\">{{icon}}</mat-icon>\r\n <span class=\"mat-h3\">{{placeholder}}</span>\r\n</button>\r\n<input type=\"file\" #input\r\n [accept]=accept [multiple]=multiple (change)='_change($event)' style=\"display: none\" />\r\n<ng-template #preview>\r\n <div *ngFor='let a of items' class=\"attachment-item\"\r\n [class.deleted]=\"a.deleted\" [class.failed]=\"a.failed\"\r\n [progressIndicator]=\"a.progress\">\r\n <img *ngIf=\"a.isImage\" [src]=\"a.url\" (click)=\"openPreview(a)\" height=\"80\" class=\"file-preview\">\r\n <div *ngIf=\"a.hasPreview && !a.isImage\" fxLayout=\"column\" class=\"file-preview\">\r\n <button mat-icon-button (click)=\"openPreview(a)\" [bizdocTooltip]=\"'Preview'|translate\"><mat-icon class=\"mat-icon-rtl-mirror\">find_in_page</mat-icon></button>\r\n <span>.{{a.fileExt}}</span>\r\n </div>\r\n <div class=\"file-overlay row\">\r\n <span class=\"filename\">{{a.fileName}}</span>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button class=\"options\" [matMenuTriggerFor]=\"menu\" [bizdocTooltip]=\"'Options' | translate\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n </div>\r\n <mat-menu #menu>\r\n <ng-container *ngIf=\"!a.failed\">\r\n <ng-container *ngIf=\"canEdit(a) && !a.failed\">\r\n <ng-container *ngIf=\"!a.checkedOut\">\r\n <button mat-menu-item (click)=\"checkOut(a)\">{{\"CheckOut\" | translate}}</button>\r\n <button mat-menu-item (click)=\"prompt()\">{{\"Add\" | translate}}</button>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"checkIn(a)\" *ngIf=\"a.checkedOut\">{{\"CheckIn\" | translate}}</button>\r\n </ng-container>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"download(a)\">{{\"Download\" | translate}}</button>\r\n <button mat-menu-item *ngIf=\"canPreview(a)\" (click)=\"openPreview(a)\"><mat-icon>landscape</mat-icon> {{\"Preview\" | translate}}</button>\r\n <ng-container *ngIf=\"hasVersion(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item *ngFor=\"let v of getVersions(a)\" (click)=\"previewOrDownload(v)\">{{v.time | amCalendar}}</button>\r\n </ng-container>\r\n <ng-container *ngIf=\"canEdit(a)\">\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item (click)=\"discard(a)\">{{\"Discard\" | translate}}</button>\r\n </ng-container>\r\n </ng-container>\r\n <button mat-menu-item (click)=\"cancel(a)\" *ngIf=\"a.failed\">{{\"Cancel\" | translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</ng-template>\r\n", styles: [":host{display:flex}.attachment-item{height:80px;position:relative}.attachment-item img{cursor:zoom-in}.attachment-item .file-preview{position:absolute}.attachment-item .file-overlay{position:relative;height:inherit}.attachment-item .file-overlay .filename{font-size:x-small;background:rgba(255,255,255,.4);align-self:flex-end}.attachment-item .file-overlay:hover .filename{background:white;opacity:.5}\n"] }]
|
315
316
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MailboxService }, { type: i2.DomSanitizer }, { type: i3.AttachmentInfo }, { type: i4.TranslateService }, { type: i5.SessionService }, { type: i6.PromptService }, { type: i7.NgControl, decorators: [{
|
316
317
|
type: Optional
|
317
318
|
}, {
|
@@ -357,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
357
358
|
type: HostBinding,
|
358
359
|
args: ['attr.aria-describedby']
|
359
360
|
}] } });
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEcsT0FBTyxFQUFjLGNBQWMsRUFBa0IsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVd2RSxNQUFNLE9BQ0UsU0FBUztJQXdCZixZQUNVLGdCQUE0QixFQUM1QixRQUF3QixFQUN4QixVQUF3QixFQUN4QixlQUErQixFQUMvQixVQUE0QixFQUM1QixRQUF3QixFQUN4QixHQUFrQixFQUNDLFNBQW9CLEVBQ2YsTUFBMkI7UUFSbkQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFZO1FBQzVCLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIs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SG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0NvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgQXR0YWNobWVudEluZm8gfSBmcm9tICcuLi9pbmZvL2F0dGFjaG1lbnQtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXR0YWNobWVudEV4dHJhLCBET0NVTUVOVF9NT0RFTCwgTWFpbGJveFNlcnZpY2UsIFVwbG9hZEV2ZW50IH0gZnJvbSAnLi4vbWFpbGJveC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXR0YWNobWVudCwgQXR0YWNobWVudE1vZGUsIFJlY2lwaWVudE1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgUHJvbXB0U2VydmljZSB9IGZyb20gJy4uL3Byb21wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXNzaW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdmaWxlLmlucHV0Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydmaWxlLmlucHV0LnNjc3MnXSxcclxuICBob3N0OiB7IGNsYXNzOiAnZmlsZS1kcm9wYWJsZScgfSxcclxuICBzZWxlY3RvcjogJ2JpemRvYy1maWxlLXVwbG9hZCdcclxufSlcclxuZXhwb3J0XHJcbiAgY2xhc3MgRmlsZUlucHV0IGltcGxlbWVudHMgTWF0Rm9ybUZpZWxkQ29udHJvbDxudW1iZXIgfCBudW1iZXJbXT4sIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbmV4dElkID0gMDtcclxuICBASG9zdEJpbmRpbmcoKSByZWFkb25seSBpZCA9IGB0eXBlLWZpbGUtdXBsb2FkLSR7RmlsZUlucHV0Lm5leHRJZCsrfWA7XHJcbiAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIF9tdWx0aXBsZSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlwbGU7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtdWx0aXBsZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gIH1cclxuICBASW5wdXQoKSBhY2NlcHQgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGljb24gPSAncHVibGlzaCc7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBfaW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgaXRlbXM6IEF0dGFjaG1lbnRFeHRyYVtdO1xyXG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGFueTtcclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9vbkNoYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX29uVG91Y2hlZDogYW55O1xyXG4gIHByaXZhdGUgX3ZhbHVlOiBudW1iZXIgfCBudW1iZXJbXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kcmFnRHJvcCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVuZGluZyA9IG5ldyBTdWJqZWN0PEZpbGVbXT4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2Ryb3BhYmxlRWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgX21haWxib3g6IE1haWxib3hTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIF9hdHRhY2htZW50SW5mbzogQXR0YWNobWVudEluZm8sXHJcbiAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NiOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UX01PREVMKSBwcml2YXRlIF9tb2RlbDogUmVjaXBpZW50TW9kZWw8YW55PixcclxuICApIHtcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xyXG4gICAgfVxyXG4gIH1cclxuICBoYXNWZXJzaW9uKGl0ZW06IEF0dGFjaG1lbnQpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhLmlkICE9PSBpdGVtLmlkKSAhPSBudWxsO1xyXG4gIH1cclxuICBnZXRWZXJzaW9ucyhpdGVtOiBBdHRhY2htZW50KTogQXR0YWNobWVudFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maWx0ZXIoYSA9PiBhLmZpbGVOYW1lID09PSBpdGVtLmZpbGVOYW1lICYmIGEuaWQgIT09IGl0ZW0uaWQpO1xyXG4gIH1cclxuICBkb3dubG9hZChpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIGxvY2F0aW9uLmhyZWYgPSB0aGlzLl9tYWlsYm94LmZvcm1hdERvd25sb2FkVXJsKHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIGl0ZW0uaWQpO1xyXG4gICAgKGl0ZW0gYXMgQXR0YWNobWVudEV4dHJhKS52aWV3ZWQgPSBuZXcgRGF0ZSgpO1xyXG4gIH1cclxuICBwcmV2aWV3T3JEb3dubG9hZChpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIGlmICh0aGlzLmNhblByZXZpZXcoaXRlbSkpXHJcbiAgICAgIHRoaXMub3BlblByZXZpZXcoaXRlbSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgfVxyXG4gIGNhblByZXZpZXcoaXRlbTogQXR0YWNobWVudEV4dHJhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQXR0YWNobWVudEluZm8uZXhpc3RzKGl0ZW0uY29udGVudFR5cGUpO1xyXG4gIH1cclxuICBjYW5FZGl0KGl0ZW06IEF0dGFjaG1lbnRFeHRyYSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLl9tb2RlbC5jb21wbGV0ZWQgJiYgaXRlbS51c2VySWQgPT09IHRoaXMuX3Nlc3Npb24ucHJvZmlsZS51c2VySWQgJiYgIWl0ZW0uZGVsZXRlZDtcclxuICB9XHJcbiAgb3BlblByZXZpZXcoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9hdHRhY2htZW50SW5mby5wcmV2aWV3KHRoaXMuX21vZGVsLCBpdGVtLmlkKTtcclxuICB9XHJcbiAgY2FuY2VsKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucmVtb3ZlKGl0ZW0pO1xyXG4gIH1cclxuICBjaGVja0luKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgYWNjZXB0ID0gaXRlbS5pc0ltYWdlID8gJ2ltYWdlLyonIDpcclxuICAgICAgJy4nICsgQXR0YWNobWVudEluZm8uZmlsZUV4dChpdGVtLmZpbGVOYW1lKSArICcsJyArIGl0ZW0uY29udGVudFR5cGU7XHJcbiAgICB0aGlzLl9wcm9tcHQoeyBtdWx0aXBsZTogZmFsc2UsIGFjY2VwdCB9KS50aGVuKGZpbGVzID0+IHtcclxuICAgICAgLy9pZiAoIWZpbGVzWzBdLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSkge1xyXG4gICAgICAvLyAgdGhpcy5fc2IuZXJyb3IodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tJbk1hdGNoRXJyJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICAvLyAgcmV0dXJuO1xyXG4gICAgICAvL31cclxuICAgICAgdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGVzWzBdKS5zdWJzY3JpYmUoYSA9PiB7XHJcbiAgICAgICAgLy9pZiAoYSBpbnN0YW5jZW9mIFVwbG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gIE9iamVjdC5hc3NpZ24oaXRlbSwge1xyXG4gICAgICAgIC8vICAgIHByb2dyZXNzOiBhLmxvYWRlZCAvIGEudG90YWxcclxuICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgLy8gIHJldHVybjtcclxuICAgICAgICAvL31cclxuICAgICAgICBPYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwsIGNoZWNrZWRPdXQ6IG51bGwgfSk7XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QodGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICB9LCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2hlY2tPdXQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICB0aGlzLl9tYWlsYm94LmNoZWNrT3V0KHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQpLlxyXG4gICAgICBzdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGl0ZW0uY2hlY2tlZE91dCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGRpc2NhcmQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBjb25zdCB0YXNrID0gKCkgPT5cclxuICAgICAgdGhpcy5fbWFpbGJveC5yZW1vdmVhdHRhY2htZW50KHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIGl0ZW0uaWQpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaXRlbS5kZWxldGVkID0gdHJ1ZTtcclxuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgdGhpcy5pdGVtcy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGgpXHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtcy5tYXAoaSA9PiBpLmlkKTtcclxuICAgICAgICAgIGVsc2UgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLnJlbW92ZShpdGVtKTtcclxuICAgICAgfSwgKCkgPT5cclxuICAgICAgICB0aGlzLl9zYi5lcnJvcigpKTtcclxuICAgIGlmICh0aGlzLl9tb2RlbC5kcmFmdClcclxuICAgICAgdGFzaygpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9zYi5hc2soJ0RlbGV0ZUZpbGVBc2snLCAnRGVsZXRlRmlsZScsIHsgY29sb3I6ICd3YXJuJyB9KS5zdWJzY3JpYmUob2sgPT5cclxuICAgICAgICBvayAmJiB0YXNrKCkpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuX2Ryb3BhYmxlRWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3Auc3Vic2NyaWJlKG9rID0+IHtcclxuICAgICAgaWYgKG9rKSBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnZHJhZycpO1xyXG4gICAgICBlbHNlIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnJyk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdGhpcy5fcGxhY2Vob2xkZXIpIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5fdHJhbnNsYXRlLmdldCgnRHJhZ0ZpbGUnKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6ZHJvcCcsIFsnJGV2ZW50J10pXHJcbiAgaGFuZGxlRG9jdW1lbnREcm9wKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuX2RyYWdEcm9wLm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkICYmIHRoaXMuX29uVG91Y2hlZCgpO1xyXG4gICAgY29uc3QgeyBpdGVtcyB9ID0gZXZlbnQuZGF0YVRyYW5zZmVyO1xyXG4gICAgY29uc3QgZmlsZXMgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcclxuICAgICAgZmlsZXMucHVzaChmaWxlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrZWRPdXQgPSB0aGlzLml0ZW1zLmZpbHRlcihpID0+IGkuY2hlY2tlZE91dCk7XHJcbiAgICBpZiAodGhpcy5pdGVtcyAmJiBjaGVja2VkT3V0Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBvYnNlcnZhYmxlcyA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpdGVtIG9mIGNoZWNrZWRPdXQpIHtcclxuICAgICAgICBsZXQgZmlsZSA9IGZpbGVzLmZpbmQoZiA9PiBmLm5hbWUuc3RhcnRzV2l0aChpdGVtLmZpbGVOYW1lKSk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC5jaGVja0luKHRoaXMuX21vZGVsLmRvY3VtZW50SWQsIHRoaXMuX21vZGVsLnZlcnNpb24sIGl0ZW0uaWQsIGZpbGUpLnBpcGUodGFwKGUgPT4ge1xyXG4gICAgICAgICAgICAvL09iamVjdC5hc3NpZ24oaXRlbSwgYSwgeyBwcm9ncmVzczogbnVsbCB9KTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgICB0aGlzLl9zYi50b2FzdChcclxuICAgICAgICAgIGNoZWNrZWRPdXQubGVuZ3RoID4gMSA/IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0NoZWNrZWRJbk4nLCBjaGVja2VkT3V0Lmxlbmd0aCkgOlxyXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja2VkSW4nLCBjaGVja2VkT3V0WzBdLmZpbGVOYW1lKSksICgpID0+IHRoaXMuX3NiLmVycm9yKCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl91cGxvYWQoZmlsZXMpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUxlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KGZhbHNlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ292ZXInLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZU92ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICF0aGlzLmRpc2FibGVkICYmIHRoaXMuX2RyYWdEcm9wLm5leHQodHJ1ZSk7XHJcbiAgfVxyXG4gIHdyaXRlVmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5pdGVtcyA9IG51bGw7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGlzQXJyYXkodmFsKSlcclxuICAgICAgdGhpcy5pdGVtcyA9XHJcbiAgICAgICAgdmFsLm1hcChpID0+IHRoaXMuX2NyZWF0ZUl0ZW0oaSkpO1xyXG4gICAgZWxzZSB0aGlzLml0ZW1zW3RoaXMuX2NyZWF0ZUl0ZW0odmFsKV07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgdmFsdWUoKTogbnVtYmVyIHwgbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xyXG4gIH1cclxuICBzZXQgdmFsdWUodmFsOiBudW1iZXIgfCBudW1iZXJbXSkge1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xyXG4gIH1cclxuICBzZXQgcGxhY2Vob2xkZXIocGxoOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gcGxoO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBmb2N1c2VkOiBib29sZWFuO1xyXG4gIGdldCBlbXB0eSgpOiBib29sZWFuIHsgcmV0dXJuICF0aGlzLml0ZW1zOyB9XHJcbiAgc2hvdWxkTGFiZWxGbG9hdDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcbiAgc2V0IHJlcXVpcmVkKHJlcTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmVxKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgQElucHV0KClcclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9kaXNhYmxlZDsgfVxyXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBlcnJvclN0YXRlID0gZmFsc2U7XHJcbiAgY29udHJvbFR5cGU/OiBzdHJpbmcgPSAnYml6ZG9jLWZpbGUtdXBsb2FkJztcclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kZXNjcmliZWRieScpIGRlc2NyaWJlZEJ5ID0gJyc7XHJcbiAgc2V0RGVzY3JpYmVkQnlJZHMoaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy5kZXNjcmliZWRCeSA9IGlkcy5qb2luKCcgJyk7XHJcbiAgfVxyXG4gIG9uQ29udGFpbmVyQ2xpY2soKTogdm9pZCB7XHJcbiAgfVxyXG4gIHByb21wdCgpIHtcclxuICAgIHRoaXMuX3Byb21wdCgpLnRoZW4odGhpcy5fdXBsb2FkLmJpbmQodGhpcykpXHJcbiAgfVxyXG4gIHByaXZhdGUgX3Byb21wdChvcHRpb25zPzogeyBtdWx0aXBsZTogYm9vbGVhbiwgYWNjZXB0Pzogc3RyaW5nIH0pOiBQcm9taXNlPEZpbGUgfCBGaWxlW10+IHtcclxuICAgIGlmIChvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHRpb25zLmFjY2VwdCkgdGhpcy5hY2NlcHQgPSBvcHRpb25zLmFjY2VwdDtcclxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUhPT0gdW5kZWZpbmVkKSB0aGlzLm11bHRpcGxlID0gb3B0aW9ucy5tdWx0aXBsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLl9pbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgIHRoaXMuX3BlbmRpbmcuc3Vic2NyaWJlKHJlc29sdmUpO1xyXG4gICAgfSlcclxuICB9XHJcbiAgX2NoYW5nZShldnQ6IElucHV0RXZlbnQpIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCAmJiB0aGlzLl9vblRvdWNoZWQoKTtcclxuICAgIGNvbnN0IHsgZmlsZXMgfSA9IGV2dC5zcmNFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBhcnIgPSBbXSBhcyBGaWxlW107XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBmaWxlID0gZmlsZXMuaXRlbShpKTtcclxuICAgICAgYXJyLnB1c2goZmlsZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9wZW5kaW5nLm5leHQoYXJyKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlSXRlbShpZDogbnVtYmVyKTogYW55IHtcclxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5maW5kKGEgPT4gYS5pZCA9PT0gaWQpLFxyXG4gICAgICBsb2cgPSB0aGlzLl9tb2RlbC5sb2cuZmlsdGVyKGwgPT4gbC5maWxlSWQgPT0gYXR0YWNobWVudC5pZCAmJiBsLnVzZXJJZCA9PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5hdHRhY2htZW50LFxyXG4gICAgICBoYXNQcmV2aWV3OiBBdHRhY2htZW50SW5mby5leGlzdHMoYXR0YWNobWVudC5jb250ZW50VHlwZSksXHJcbiAgICAgIGlzSW1hZ2U6IEF0dGFjaG1lbnRJbmZvLmlzSW1hZ2UoYXR0YWNobWVudC5jb250ZW50VHlwZSksXHJcbiAgICAgIGZpbGVFeHQ6IEF0dGFjaG1lbnRJbmZvLmZpbGVFeHQoYXR0YWNobWVudC5maWxlTmFtZSksXHJcbiAgICAgIHVybDogdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoXHJcbiAgICAgICAgdGhpcy5fbWFpbGJveC5mb3JtYXREb3dubG9hZFVybCh0aGlzLl9tb2RlbC5kb2N1bWVudElkLCBhdHRhY2htZW50LmlkKSksXHJcbiAgICAgICAgY2hlY2tlZE91dDpcclxuICAgICAgICAgIChhdHRhY2htZW50Lm1vZGUgJiBBdHRhY2htZW50TW9kZS5DaGVja2VkT3V0KSA9PSBBdHRhY2htZW50TW9kZS5DaGVja2VkT3V0ICYmXHJcbiAgICAgICAgICAgIGF0dGFjaG1lbnQuaG9sZGluZ0lkID09PSB0aGlzLl9zZXNzaW9uLnVzZXJJZCA/XHJcbiAgICAgICAgICAgIGxvZy5yZXZlcnNlKCkuZmluZChsID0+IGwudHlwZSA9PT0gJ0NoZWNrT3V0JykudGltZSA6IG51bGxcclxuICAgIH0gYXMgQXR0YWNobWVudEV4dHJhO1xyXG4gIH1cclxuICBwcml2YXRlIF91cGxvYWQoZmlsZXM6IEZpbGVbXSkge1xyXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcclxuICAgICAgbGV0IG9ic2VydmFibGUgPSB0aGlzLl9tYWlsYm94LnVwbG9hZCh0aGlzLl9tb2RlbC5kb2N1bWVudElkLCB0aGlzLl9tb2RlbC5mb3JtSWQsIHRoaXMuX21vZGVsLnZlcnNpb24sXHJcbiAgICAgICAgW2ZpbGVdLCB7IGlzUHJpdmF0ZTogdHJ1ZSB9KS5cclxuICAgICAgICBwaXBlKHRhcChlID0+IHtcclxuICAgICAgICAgIC8vICBpZiAoZS5wcm9ncmVzcykge1xyXG5cclxuICAgICAgICAgIC8vICB9XHJcbiAgICAgICAgfSksIG1hcChlID0+IGVbMF0pKTtcclxuICAgICAgb2JzZXJ2YWJsZXMucHVzaChvYnNlcnZhYmxlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX2lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBudWxsO1xyXG4gICAgZm9ya0pvaW4ob2JzZXJ2YWJsZXMpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgY29uc3QgaWRzID0gW107XHJcbiAgICAgIGlmICghdGhpcy5pdGVtcykgdGhpcy5pdGVtcyA9IFtdO1xyXG4gICAgICBlLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgaWRzLnB1c2goYS5pZCk7XHJcbiAgICAgICAgdGhpcy5fbW9kZWwuYXR0YWNobWVudHMucHVzaChhKTtcclxuICAgICAgICB0aGlzLml0ZW1zLnB1c2godGhpcy5fY3JlYXRlSXRlbShhLmlkKSk7XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IGlkcyA6IGlkc1swXTtcclxuICAgICAgdGhpcy5fb25DaGFuZ2UodGhpcy5fdmFsdWUpO1xyXG4gICAgfSwgZSA9PiB7XHJcbiAgICAgIHRoaXMuX3NiLmVycm9yKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kcmFnRHJvcC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5fcGVuZGluZy5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwiIWl0ZW1zOyBlbHNlIHByZXZpZXdcIiAoY2xpY2spPVwicHJvbXB0KClcIj5cclxuICA8bWF0LWljb24gY2xhc3M9XCJmaWxsZWRcIj57e2ljb259fTwvbWF0LWljb24+XHJcbiAgPHNwYW4gY2xhc3M9XCJtYXQtaDNcIj57e3BsYWNlaG9sZGVyfX08L3NwYW4+XHJcbjwvYnV0dG9uPlxyXG48aW5wdXQgdHlwZT1cImZpbGVcIiAjaW5wdXRcclxuICAgICAgIFthY2NlcHRdPWFjY2VwdCBbbXVsdGlwbGVdPW11bHRpcGxlIChjaGFuZ2UpPSdfY2hhbmdlKCRldmVudCknIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIC8+XHJcbjxuZy10ZW1wbGF0ZSAjcHJldmlldz5cclxuICA8ZGl2ICpuZ0Zvcj0nbGV0IGEgb2YgaXRlbXMnIGNsYXNzPVwiYXR0YWNobWVudC1pdGVtXCJcclxuICAgICAgIFtjbGFzcy5kZWxldGVkXT1cImEuZGVsZXRlZFwiIFtjbGFzcy5mYWlsZWRdPVwiYS5mYWlsZWRcIlxyXG4gICAgICAgW3Byb2dyZXNzSW5kaWNhdG9yXT1cImEucHJvZ3Jlc3NcIj5cclxuICAgIDxpbWcgKm5nSWY9XCJhLmlzSW1hZ2VcIiBbc3JjXT1cImEudXJsXCIgKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCIgaGVpZ2h0PVwiODBcIiBjbGFzcz1cImZpbGUtcHJldmlld1wiPlxyXG4gICAgPGRpdiAqbmdJZj1cImEuaGFzUHJldmlldyAmJiAhYS5pc0ltYWdlXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cImZpbGUtcHJldmlld1wiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib3BlblByZXZpZXcoYSlcIiBbYml6ZG9jVG9vbHRpcF09XCInUHJldmlldyd8dHJhbnNsYXRlXCI+PG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPmZpbmRfaW5fcGFnZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgICAgIDxzcGFuPi57e2EuZmlsZUV4dH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsZS1vdmVybGF5IHJvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpbGVuYW1lXCI+e3thLmZpbGVOYW1lfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJvcHRpb25zXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBbYml6ZG9jVG9vbHRpcF09XCInT3B0aW9ucycgfCB0cmFuc2xhdGVcIj5cclxuICAgICAgICA8bWF0LWljb24+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxtYXQtbWVudSAjbWVudT5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmZhaWxlZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpICYmICFhLmZhaWxlZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhLmNoZWNrZWRPdXRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGVja091dChhKVwiPnt7XCJDaGVja091dFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJwcm9tcHQoKVwiPnt7XCJBZGRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2hlY2tJbihhKVwiICpuZ0lmPVwiYS5jaGVja2VkT3V0XCI+e3tcIkNoZWNrSW5cIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJkb3dubG9hZChhKVwiPnt7XCJEb3dubG9hZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nSWY9XCJjYW5QcmV2aWV3KGEpXCIgKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCI+PG1hdC1pY29uPmxhbmRzY2FwZTwvbWF0LWljb24+IHt7XCJQcmV2aWV3XCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNWZXJzaW9uKGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAqbmdGb3I9XCJsZXQgdiBvZiBnZXRWZXJzaW9ucyhhKVwiIChjbGljayk9XCJwcmV2aWV3T3JEb3dubG9hZCh2KVwiPnt7di50aW1lIHwgIGFtQ2FsZW5kYXJ9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5FZGl0KGEpXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZGlzY2FyZChhKVwiPnt7XCJEaXNjYXJkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjYW5jZWwoYSlcIiAqbmdJZj1cImEuZmFpbGVkXCI+e3tcIkNhbmNlbFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgIDwvbWF0LW1lbnU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
361
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5pbnB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29yZS9jb250cm9scy9maWxlLmlucHV0LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2NvbnRyb2xzL2ZpbGUuaW5wdXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFtQixjQUFjLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEcsT0FBTyxFQUFjLGNBQWMsRUFBa0IsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXdkUsTUFBTSxPQUNFLFNBQVM7SUF3QmYsWUFDVSxnQkFBNEIsRUFDNUIsUUFBd0IsRUFDeEIsVUFBd0IsRUFDeEIsZUFBK0IsRUFDL0IsVUFBNEIsRUFDNUIsUUFBd0IsRUFDeEIsR0FBa0IsRUFDQyxTQUFvQixFQUNmLE1BQTJCO1FBUm5ELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBWTtRQUM1QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hC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IEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRJbmZvIH0gZnJvbSAnLi4vaW5mby9hdHRhY2htZW50LWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRFeHRyYSwgRE9DVU1FTlRfTU9ERUwsIE1haWxib3hTZXJ2aWNlLCBVcGxvYWRFdmVudCB9IGZyb20gJy4uL21haWxib3guc2VydmljZSc7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnQsIEF0dGFjaG1lbnRNb2RlLCBSZWNpcGllbnRNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFByb21wdFNlcnZpY2UgfSBmcm9tICcuLi9wcm9tcHQuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2Vzc2lvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnZmlsZS5pbnB1dC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnZmlsZS5pbnB1dC5zY3NzJ10sXHJcbiAgaG9zdDogeyBjbGFzczogJ2ZpbGUtZHJvcGFibGUnIH0sXHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZmlsZS11cGxvYWQnXHJcbn0pXHJcbmV4cG9ydFxyXG4gIGNsYXNzIEZpbGVJbnB1dCBpbXBsZW1lbnRzIE1hdEZvcm1GaWVsZENvbnRyb2w8bnVtYmVyIHwgbnVtYmVyW10+LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XHJcbiAgQEhvc3RCaW5kaW5nKCkgcmVhZG9ubHkgaWQgPSBgdHlwZS1maWxlLXVwbG9hZC0ke0ZpbGVJbnB1dC5uZXh0SWQrK31gO1xyXG4gIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcclxuICBwdWJsaWMgZ2V0IG11bHRpcGxlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xyXG4gIH1cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsdWUpIHtcclxuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICB9XHJcbiAgQElucHV0KCkgYWNjZXB0ID0gbnVsbDtcclxuICBASW5wdXQoKSBpY29uID0gJ3B1Ymxpc2gnO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgX2lucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIGl0ZW1zOiBBdHRhY2htZW50RXh0cmFbXTtcclxuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBhbnk7XHJcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfb25DaGFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9vblRvdWNoZWQ6IGFueTtcclxuICBwcml2YXRlIF92YWx1ZTogbnVtYmVyIHwgbnVtYmVyW107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfZHJhZ0Ryb3AgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlbmRpbmcgPSBuZXcgU3ViamVjdDxGaWxlW10+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9kcm9wYWJsZUVsZW1lbnQ6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIF9tYWlsYm94OiBNYWlsYm94U2VydmljZSxcclxuICAgIHByaXZhdGUgX3Nhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBfYXR0YWNobWVudEluZm86IEF0dGFjaG1lbnRJbmZvLFxyXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvbjogU2Vzc2lvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zYjogUHJvbXB0U2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgQEluamVjdChET0NVTUVOVF9NT0RFTCkgcHJpdmF0ZSBfbW9kZWw6IFJlY2lwaWVudE1vZGVsPGFueT4sXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcbiAgaGFzVmVyc2lvbihpdGVtOiBBdHRhY2htZW50KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwuYXR0YWNobWVudHMuZmluZChhID0+IGEuZmlsZU5hbWUgPT09IGl0ZW0uZmlsZU5hbWUgJiYgYS5pZCAhPT0gaXRlbS5pZCkgIT0gbnVsbDtcclxuICB9XHJcbiAgZ2V0VmVyc2lvbnMoaXRlbTogQXR0YWNobWVudCk6IEF0dGFjaG1lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwuYXR0YWNobWVudHMuZmlsdGVyKGEgPT4gYS5maWxlTmFtZSA9PT0gaXRlbS5maWxlTmFtZSAmJiBhLmlkICE9PSBpdGVtLmlkKTtcclxuICB9XHJcbiAgZG93bmxvYWQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5fbWFpbGJveC5mb3JtYXREb3dubG9hZFVybCh0aGlzLl9tb2RlbC5kb2N1bWVudElkLCBpdGVtLmlkKTtcclxuICAgIChpdGVtIGFzIEF0dGFjaG1lbnRFeHRyYSkudmlld2VkID0gbmV3IERhdGUoKTtcclxuICB9XHJcbiAgcHJldmlld09yRG93bmxvYWQoaXRlbTogQXR0YWNobWVudEV4dHJhKSB7XHJcbiAgICBpZiAodGhpcy5jYW5QcmV2aWV3KGl0ZW0pKVxyXG4gICAgICB0aGlzLm9wZW5QcmV2aWV3KGl0ZW0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmRvd25sb2FkKGl0ZW0pO1xyXG4gIH1cclxuICBjYW5QcmV2aWV3KGl0ZW06IEF0dGFjaG1lbnRFeHRyYSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEF0dGFjaG1lbnRJbmZvLmV4aXN0cyhpdGVtLmNvbnRlbnRUeXBlKTtcclxuICB9XHJcbiAgY2FuRWRpdChpdGVtOiBBdHRhY2htZW50RXh0cmEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5fbW9kZWwuY29tcGxldGVkICYmIGl0ZW0udXNlcklkID09PSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudXNlcklkICYmICFpdGVtLmRlbGV0ZWQ7XHJcbiAgfVxyXG4gIG9wZW5QcmV2aWV3KGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgdGhpcy5fYXR0YWNobWVudEluZm8ucHJldmlldyh0aGlzLl9tb2RlbCwgaXRlbS5pZCk7XHJcbiAgfVxyXG4gIGNhbmNlbChpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLnJlbW92ZShpdGVtKTtcclxuICB9XHJcbiAgY2hlY2tJbihpdGVtOiBBdHRhY2htZW50RXh0cmEpIHtcclxuICAgIGNvbnN0IGFjY2VwdCA9IGl0ZW0uaXNJbWFnZSA/ICdpbWFnZS8qJyA6XHJcbiAgICAgICcuJyArIEF0dGFjaG1lbnRJbmZvLmZpbGVFeHQoaXRlbS5maWxlTmFtZSkgKyAnLCcgKyBpdGVtLmNvbnRlbnRUeXBlO1xyXG4gICAgdGhpcy5fcHJvbXB0KHsgbXVsdGlwbGU6IGZhbHNlLCBhY2NlcHQgfSkudGhlbihmaWxlcyA9PiB7XHJcbiAgICAgIC8vaWYgKCFmaWxlc1swXS5uYW1lLnN0YXJ0c1dpdGgoaXRlbS5maWxlTmFtZSkpIHtcclxuICAgICAgLy8gIHRoaXMuX3NiLmVycm9yKHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0NoZWNrSW5NYXRjaEVycicsIGl0ZW0uZmlsZU5hbWUpKTtcclxuICAgICAgLy8gIHJldHVybjtcclxuICAgICAgLy99XHJcbiAgICAgIHRoaXMuX21haWxib3guY2hlY2tJbih0aGlzLl9tb2RlbC5kb2N1bWVudElkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlc1swXSkuc3Vic2NyaWJlKGEgPT4ge1xyXG4gICAgICAgIC8vaWYgKGEgaW5zdGFuY2VvZiBVcGxvYWRFdmVudCkge1xyXG4gICAgICAgIC8vICBPYmplY3QuYXNzaWduKGl0ZW0sIHtcclxuICAgICAgICAvLyAgICBwcm9ncmVzczogYS5sb2FkZWQgLyBhLnRvdGFsXHJcbiAgICAgICAgLy8gIH0pO1xyXG4gICAgICAgIC8vICByZXR1cm47XHJcbiAgICAgICAgLy99XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLCBhLCB7IHByb2dyZXNzOiBudWxsLCBjaGVja2VkT3V0OiBudWxsIH0pO1xyXG4gICAgICAgIHRoaXMuX3NiLnRvYXN0KHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0NoZWNrZWRJbicsIGl0ZW0uZmlsZU5hbWUpKTtcclxuICAgICAgfSwgKCkgPT4gdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIGNoZWNrT3V0KGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgdGhpcy5fbWFpbGJveC5jaGVja091dCh0aGlzLl9tb2RlbC5kb2N1bWVudElkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkKS5cclxuICAgICAgc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpdGVtLmNoZWNrZWRPdXQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBkaXNjYXJkKGl0ZW06IEF0dGFjaG1lbnRFeHRyYSkge1xyXG4gICAgY29uc3QgdGFzayA9ICgpID0+XHJcbiAgICAgIHRoaXMuX21haWxib3gucmVtb3ZlYXR0YWNobWVudCh0aGlzLl9tb2RlbC5kb2N1bWVudElkLCBpdGVtLmlkKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGl0ZW0uZGVsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICAgIHRoaXMuaXRlbXMucmVtb3ZlKGl0ZW0pO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoKVxyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuaXRlbXMubWFwKGkgPT4gaS5pZCk7XHJcbiAgICAgICAgICBlbHNlIHRoaXMuaXRlbXMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMuaXRlbXMgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgICAgICB0aGlzLl9tb2RlbC5hdHRhY2htZW50cy5yZW1vdmUoaXRlbSk7XHJcbiAgICAgIH0sICgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IuZXJyb3IoKSk7XHJcbiAgICBpZiAodGhpcy5fbW9kZWwuZHJhZnQpXHJcbiAgICAgIHRhc2soKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fc2IuYXNrKCdEZWxldGVGaWxlQXNrJywgJ0RlbGV0ZUZpbGUnLCB7IGNvbG9yOiAnd2FybicgfSkuc3Vic2NyaWJlKG9rID0+XHJcbiAgICAgICAgb2sgJiYgdGFzaygpKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLl9kcm9wYWJsZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuX2RyYWdEcm9wLnN1YnNjcmliZShvayA9PiB7XHJcbiAgICAgIGlmIChvaykgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2RyYWcnKTtcclxuICAgICAgZWxzZSBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZycpO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuX3BsYWNlaG9sZGVyKSB0aGlzLl9wbGFjZWhvbGRlciA9IHRoaXMuX3RyYW5zbGF0ZS5nZXQoJ0RyYWdGaWxlJyk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmRyb3AnLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZURvY3VtZW50RHJvcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVEcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLl9kcmFnRHJvcC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuX29uVG91Y2hlZCAmJiB0aGlzLl9vblRvdWNoZWQoKTtcclxuICAgIGNvbnN0IHsgaXRlbXMgfSA9IGV2ZW50LmRhdGFUcmFuc2ZlcjtcclxuICAgIGNvbnN0IGZpbGVzID0gW10gYXMgRmlsZVtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBmaWxlID0gaXRlbXNbaV0uZ2V0QXNGaWxlKCk7XHJcbiAgICAgIGZpbGVzLnB1c2goZmlsZSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja2VkT3V0ID0gdGhpcy5pdGVtcy5maWx0ZXIoaSA9PiBpLmNoZWNrZWRPdXQpO1xyXG4gICAgaWYgKHRoaXMuaXRlbXMgJiYgY2hlY2tlZE91dC5sZW5ndGgpIHtcclxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiBjaGVja2VkT3V0KSB7XHJcbiAgICAgICAgbGV0IGZpbGUgPSBmaWxlcy5maW5kKGYgPT4gZi5uYW1lLnN0YXJ0c1dpdGgoaXRlbS5maWxlTmFtZSkpO1xyXG4gICAgICAgIGlmIChmaWxlKSB7XHJcbiAgICAgICAgICBsZXQgb2JzZXJ2YWJsZSA9IHRoaXMuX21haWxib3guY2hlY2tJbih0aGlzLl9tb2RlbC5kb2N1bWVudElkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLCBpdGVtLmlkLCBmaWxlKS5waXBlKHRhcChlID0+IHtcclxuICAgICAgICAgICAgLy9PYmplY3QuYXNzaWduKGl0ZW0sIGEsIHsgcHJvZ3Jlc3M6IG51bGwgfSk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKG9ic2VydmFibGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBmb3JrSm9pbihvYnNlcnZhYmxlcykuc3Vic2NyaWJlKCgpID0+XHJcbiAgICAgICAgdGhpcy5fc2IudG9hc3QoXHJcbiAgICAgICAgICBjaGVja2VkT3V0Lmxlbmd0aCA+IDEgPyB0aGlzLl90cmFuc2xhdGUuZ2V0KCdDaGVja2VkSW5OJywgY2hlY2tlZE91dC5sZW5ndGgpIDpcclxuICAgICAgICAgICAgdGhpcy5fdHJhbnNsYXRlLmdldCgnQ2hlY2tlZEluJywgY2hlY2tlZE91dFswXS5maWxlTmFtZSkpLCAoKSA9PiB0aGlzLl9zYi5lcnJvcigpKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fdXBsb2FkKGZpbGVzKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VudGVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVFbnRlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fZHJhZ0Ryb3AubmV4dCh0cnVlKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fZHJhZ0Ryb3AubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9kcmFnRHJvcC5uZXh0KHRydWUpO1xyXG4gIH1cclxuICB3cml0ZVZhbHVlKHZhbDogbnVtYmVyIHwgbnVtYmVyW10pOiB2b2lkIHtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMuaXRlbXMgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc0FycmF5KHZhbCkpXHJcbiAgICAgIHRoaXMuaXRlbXMgPVxyXG4gICAgICAgIHZhbC5tYXAoaSA9PiB0aGlzLl9jcmVhdGVJdGVtKGkpKTtcclxuICAgIGVsc2UgdGhpcy5pdGVtc1t0aGlzLl9jcmVhdGVJdGVtKHZhbCldO1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuX29uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcbiAgQElucHV0KCkgZ2V0IHZhbHVlKCk6IG51bWJlciB8IG51bWJlcltdIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbiAgc2V0IHZhbHVlKHZhbDogbnVtYmVyIHwgbnVtYmVyW10pIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWwpO1xyXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBASW5wdXQoKSBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcclxuICB9XHJcbiAgc2V0IHBsYWNlaG9sZGVyKHBsaDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHBsaDtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZm9jdXNlZDogYm9vbGVhbjtcclxuICBnZXQgZW1wdHkoKTogYm9vbGVhbiB7IHJldHVybiAhdGhpcy5pdGVtczsgfVxyXG4gIHNob3VsZExhYmVsRmxvYXQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XHJcbiAgfVxyXG4gIHNldCByZXF1aXJlZChyZXE6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHJlcSk7XHJcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7IH1cclxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgZXJyb3JTdGF0ZSA9IGZhbHNlO1xyXG4gIGNvbnRyb2xUeXBlPzogc3RyaW5nID0gJ2JpemRvYy1maWxlLXVwbG9hZCc7XHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKSBkZXNjcmliZWRCeSA9ICcnO1xyXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcclxuICAgIHRoaXMuZGVzY3JpYmVkQnkgPSBpZHMuam9pbignICcpO1xyXG4gIH1cclxuICBvbkNvbnRhaW5lckNsaWNrKCk6IHZvaWQge1xyXG4gIH1cclxuICBwcm9tcHQoKSB7XHJcbiAgICB0aGlzLl9wcm9tcHQoKS50aGVuKHRoaXMuX3VwbG9hZC5iaW5kKHRoaXMpKVxyXG4gIH1cclxuICBwcml2YXRlIF9wcm9tcHQob3B0aW9ucz86IHsgbXVsdGlwbGU6IGJvb2xlYW4sIGFjY2VwdD86IHN0cmluZyB9KTogUHJvbWlzZTxGaWxlIHwgRmlsZVtdPiB7XHJcbiAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICBpZiAob3B0aW9ucy5hY2NlcHQpIHRoaXMuYWNjZXB0ID0gb3B0aW9ucy5hY2NlcHQ7XHJcbiAgICAgIGlmIChvcHRpb25zLm11bHRpcGxlIT09IHVuZGVmaW5lZCkgdGhpcy5tdWx0aXBsZSA9IG9wdGlvbnMubXVsdGlwbGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5faW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICB0aGlzLl9wZW5kaW5nLnN1YnNjcmliZShyZXNvbHZlKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIF9jaGFuZ2UoZXZ0OiBJbnB1dEV2ZW50KSB7XHJcbiAgICB0aGlzLl9vblRvdWNoZWQgJiYgdGhpcy5fb25Ub3VjaGVkKCk7XHJcbiAgICBjb25zdCB7IGZpbGVzIH0gPSBldnQuc3JjRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgYXJyID0gW10gYXMgRmlsZVtdO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZmlsZSA9IGZpbGVzLml0ZW0oaSk7XHJcbiAgICAgIGFyci5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcGVuZGluZy5uZXh0KGFycik7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZUl0ZW0oaWQ6IG51bWJlcik6IGFueSB7XHJcbiAgICBjb25zdCBhdHRhY2htZW50ID0gdGhpcy5fbW9kZWwuYXR0YWNobWVudHMuZmluZChhID0+IGEuaWQgPT09IGlkKSxcclxuICAgICAgbG9nID0gdGhpcy5fbW9kZWwubG9nLmZpbHRlcihsID0+IGwuZmlsZUlkID09IGF0dGFjaG1lbnQuaWQgJiYgbC51c2VySWQgPT0gdGhpcy5fc2Vzc2lvbi51c2VySWQpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uYXR0YWNobWVudCxcclxuICAgICAgaGFzUHJldmlldzogQXR0YWNobWVudEluZm8uZXhpc3RzKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBpc0ltYWdlOiBBdHRhY2htZW50SW5mby5pc0ltYWdlKGF0dGFjaG1lbnQuY29udGVudFR5cGUpLFxyXG4gICAgICBmaWxlRXh0OiBBdHRhY2htZW50SW5mby5maWxlRXh0KGF0dGFjaG1lbnQuZmlsZU5hbWUpLFxyXG4gICAgICB1cmw6IHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKFxyXG4gICAgICAgIHRoaXMuX21haWxib3guZm9ybWF0RG93bmxvYWRVcmwodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgYXR0YWNobWVudC5pZCkpLFxyXG4gICAgICAgIGNoZWNrZWRPdXQ6XHJcbiAgICAgICAgICAoYXR0YWNobWVudC5tb2RlICYgQXR0YWNobWVudE1vZGUuQ2hlY2tlZE91dCkgPT0gQXR0YWNobWVudE1vZGUuQ2hlY2tlZE91dCAmJlxyXG4gICAgICAgICAgICBhdHRhY2htZW50LmhvbGRpbmdJZCA9PT0gdGhpcy5fc2Vzc2lvbi51c2VySWQgP1xyXG4gICAgICAgICAgICBsb2cucmV2ZXJzZSgpLmZpbmQobCA9PiBsLnR5cGUgPT09ICdDaGVja091dCcpLnRpbWUgOiBudWxsXHJcbiAgICB9IGFzIEF0dGFjaG1lbnRFeHRyYTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfdXBsb2FkKGZpbGVzOiBGaWxlW10pIHtcclxuICAgIGNvbnN0IG9ic2VydmFibGVzID0gW107XHJcbiAgICBmb3IgKGxldCBmaWxlIG9mIGZpbGVzKSB7XHJcbiAgICAgIGxldCBvYnNlcnZhYmxlID0gdGhpcy5fbWFpbGJveC51cGxvYWQodGhpcy5fbW9kZWwuZG9jdW1lbnRJZCwgdGhpcy5fbW9kZWwuZm9ybUlkLCB0aGlzLl9tb2RlbC52ZXJzaW9uLFxyXG4gICAgICAgIFtmaWxlXSwgeyBpc1ByaXZhdGU6IHRydWUgfSkuXHJcbiAgICAgICAgcGlwZSh0YXAoZSA9PiB7XHJcbiAgICAgICAgICAvLyAgaWYgKGUucHJvZ3Jlc3MpIHtcclxuXHJcbiAgICAgICAgICAvLyAgfVxyXG4gICAgICAgIH0pLCBtYXAoZSA9PiBlWzBdKSk7XHJcbiAgICAgIG9ic2VydmFibGVzLnB1c2gob2JzZXJ2YWJsZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gbnVsbDtcclxuICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkcyA9IFtdO1xyXG4gICAgICBpZiAoIXRoaXMuaXRlbXMpIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgICAgZS5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgIGlkcy5wdXNoKGEuaWQpO1xyXG4gICAgICAgIHRoaXMuX21vZGVsLmF0dGFjaG1lbnRzLnB1c2goYSk7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHRoaXMuX2NyZWF0ZUl0ZW0oYS5pZCkpO1xyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLl92YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyBpZHMgOiBpZHNbMF07XHJcbiAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcclxuICAgIH0sIGUgPT4ge1xyXG4gICAgICB0aGlzLl9zYi5lcnJvcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZHJhZ0Ryb3AuY29tcGxldGUoKTtcclxuICAgIHRoaXMuX3BlbmRpbmcuY29tcGxldGUoKTtcclxuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gbWF0LWJ1dHRvbiAqbmdJZj1cIiFpdGVtczsgZWxzZSBwcmV2aWV3XCIgKGNsaWNrKT1cInByb21wdCgpXCI+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwiZmlsbGVkXCI+e3tpY29ufX08L21hdC1pY29uPlxyXG4gIDxzcGFuIGNsYXNzPVwibWF0LWgzXCI+e3twbGFjZWhvbGRlcn19PC9zcGFuPlxyXG48L2J1dHRvbj5cclxuPGlucHV0IHR5cGU9XCJmaWxlXCIgI2lucHV0XHJcbiAgICAgICBbYWNjZXB0XT1hY2NlcHQgW211bHRpcGxlXT1tdWx0aXBsZSAoY2hhbmdlKT0nX2NoYW5nZSgkZXZlbnQpJyBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAvPlxyXG48bmctdGVtcGxhdGUgI3ByZXZpZXc+XHJcbiAgPGRpdiAqbmdGb3I9J2xldCBhIG9mIGl0ZW1zJyBjbGFzcz1cImF0dGFjaG1lbnQtaXRlbVwiXHJcbiAgICAgICBbY2xhc3MuZGVsZXRlZF09XCJhLmRlbGV0ZWRcIiBbY2xhc3MuZmFpbGVkXT1cImEuZmFpbGVkXCJcclxuICAgICAgIFtwcm9ncmVzc0luZGljYXRvcl09XCJhLnByb2dyZXNzXCI+XHJcbiAgICA8aW1nICpuZ0lmPVwiYS5pc0ltYWdlXCIgW3NyY109XCJhLnVybFwiIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiIGhlaWdodD1cIjgwXCIgY2xhc3M9XCJmaWxlLXByZXZpZXdcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJhLmhhc1ByZXZpZXcgJiYgIWEuaXNJbWFnZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJmaWxlLXByZXZpZXdcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5QcmV2aWV3KGEpXCIgW2JpemRvY1Rvb2x0aXBdPVwiJ1ByZXZpZXcnfHRyYW5zbGF0ZVwiPjxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5maW5kX2luX3BhZ2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8c3Bhbj4ue3thLmZpbGVFeHR9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbGUtb3ZlcmxheSByb3dcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlbmFtZVwiPnt7YS5maWxlTmFtZX19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImRpdmlkZXJcIj48L3NwYW4+XHJcbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwib3B0aW9uc1wiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ09wdGlvbnMnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LW1lbnUgI21lbnU+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYS5mYWlsZWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuRWRpdChhKSAmJiAhYS5mYWlsZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYS5jaGVja2VkT3V0XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2hlY2tPdXQoYSlcIj57e1wiQ2hlY2tPdXRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwicHJvbXB0KClcIj57e1wiQWRkXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNoZWNrSW4oYSlcIiAqbmdJZj1cImEuY2hlY2tlZE91dFwiPnt7XCJDaGVja0luXCIgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZG93bmxvYWQoYSlcIj57e1wiRG93bmxvYWRcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtICpuZ0lmPVwiY2FuUHJldmlldyhhKVwiIChjbGljayk9XCJvcGVuUHJldmlldyhhKVwiPjxtYXQtaWNvbj5sYW5kc2NhcGU8L21hdC1pY29uPiB7e1wiUHJldmlld1wiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzVmVyc2lvbihhKVwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHYgb2YgZ2V0VmVyc2lvbnMoYSlcIiAoY2xpY2spPVwicHJldmlld09yRG93bmxvYWQodilcIj57e3YudGltZSB8ICBhbUNhbGVuZGFyfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuRWRpdChhKVwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImRpc2NhcmQoYSlcIj57e1wiRGlzY2FyZFwiIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiY2FuY2VsKGEpXCIgKm5nSWY9XCJhLmZhaWxlZFwiPnt7XCJDYW5jZWxcIiB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Injectable } from '@angular/core';
|
2
2
|
import { map, shareReplay } from 'rxjs/operators';
|
3
|
-
import { isObject } from '../core/functions';
|
3
|
+
import { isObject, mapToArray } from '../core/functions';
|
4
4
|
import * as i0 from "@angular/core";
|
5
5
|
import * as i1 from "@angular/common/http";
|
6
6
|
/** */
|
@@ -63,7 +63,7 @@ export class DatasourceService {
|
|
63
63
|
* @param params
|
64
64
|
*/
|
65
65
|
all(type, queryParams) {
|
66
|
-
return this.map(type, queryParams).pipe(map(
|
66
|
+
return this.map(type, queryParams).pipe(map(mapToArray));
|
67
67
|
}
|
68
68
|
}
|
69
69
|
DatasourceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DatasourceService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
|
|
72
72
|
type: Injectable,
|
73
73
|
args: [{ providedIn: 'root' }]
|
74
74
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9jb3JlL2RhdGFzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR3pELE1BQU07QUFFTixNQUFNLE9BQU8saUJBQWlCO0lBUzVCLFlBQW9CLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7UUFGN0IsV0FBTSxHQUEyRCxFQUFFLENBQUM7SUFJNUUsQ0FBQztJQVZELElBQUksQ0FBQyxJQUFZO1FBQ2YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBT0Q7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUMzQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxXQUF3QztRQUN4RCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUM7Z0JBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7Z0JBQ2hHLE9BQU8sSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEM7UUFDRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixNQUFNLE1BQU0sR0FBRyxFQUFTLENBQUM7WUFDekIsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUN2QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQTs7b0JBQy9CLE1BQU0sQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO2FBQ2pDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQTBCLGlCQUFpQixJQUFJLEVBQUUsRUFDaEY7Z0JBQ0UsTUFBTTthQUNQLENBQUMsQ0FBQztZQUVMLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUNqRTtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxXQUF3QztRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs4R0FqRVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FESixNQUFNOzJGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IGlzT2JqZWN0LCBtYXBUb0FycmF5IH0gZnJvbSAnLi4vY29yZS9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBQYXJhbU1hcCwgU2NvcGVUeXBlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uJztcclxuXHJcbi8qKiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgRGF0YXNvdXJjZVNlcnZpY2Uge1xyXG4gIGtleXModHlwZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXAodHlwZSkucGlwZShtYXAobSA9PlxyXG4gICAgICBPYmplY3Qua2V5cyhtKVxyXG4gICAgKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWNoZTogeyBbdHlwZTogc3RyaW5nXTogT2JzZXJ2YWJsZTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQpIHtcclxuXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB0eXBlXHJcbiAgICogQHBhcmFtIGtleVxyXG4gICAqL1xyXG4gIGdldCh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLm1hcCh0eXBlKS5waXBlKG1hcChtID0+IG1ba2V5XSB8fCBrZXkpKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHR5cGVcclxuICAgKiBAcGFyYW0gdmFsdWVcclxuICAgKi9cclxuICBrZXlPZih0eXBlOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwKHR5cGUpLnBpcGUobWFwKG0gPT4gT2JqZWN0LmtleXMobSkuZmluZChrID0+IG1ba10gPT09IHZhbHVlKSkpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBcclxuICAgKiBAcGFyYW0gdHlwZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKi9cclxuICBtYXAodHlwZTogc3RyaW5nLCBxdWVyeVBhcmFtcz86IHN0cmluZyB8IG51bWJlciB8IFBhcmFtTWFwKTogT2JzZXJ2YWJsZTx7IFtuYW1lOiBzdHJpbmddOiBhbnkgfT4ge1xyXG4gICAgbGV0IGNhY2hlSWQgPSB0eXBlO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGlmIChpc09iamVjdChxdWVyeVBhcmFtcykpIE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKS5mb3JFYWNoKGsgPT4gY2FjaGVJZCArPSBgJHtrfSR7cXVlcnlQYXJhbXNba119YCk7XHJcbiAgICAgIGVsc2UgY2FjaGVJZCArPSBxdWVyeVBhcmFtcy50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbGV0IG9ic2VydmUgPSB0aGlzLl9jYWNoZVtjYWNoZUlkXTtcclxuXHJcbiAgICBpZiAoIW9ic2VydmUpIHtcclxuICAgICAgY29uc3QgcGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICBpZiAocXVlcnlQYXJhbXMpIHtcclxuICAgICAgICBpZiAoaXNPYmplY3QocXVlcnlQYXJhbXMpKVxyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJhbXMsIHF1ZXJ5UGFyYW1zKVxyXG4gICAgICAgIGVsc2UgcGFyYW1zLnZhbHVlID0gcXVlcnlQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuX2h0dHAuZ2V0PHsgW25hbWU6IHN0cmluZ106IGFueSB9PihgL2FwaS9kYXRhdHlwZS8ke3R5cGV9YCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIG9ic2VydmUgPSB0aGlzLl9jYWNoZVtjYWNoZUlkXSA9IGRhdGFTb3VyY2UucGlwZShzaGFyZVJlcGxheSgpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzZXJ2ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHR5cGVcclxuICAgKiBAcGFyYW0gcGFyYW1zXHJcbiAgICovXHJcbiAgYWxsKHR5cGU6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBzdHJpbmcgfCBudW1iZXIgfCBQYXJhbU1hcCk6IE9ic2VydmFibGU8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9W10+IHtcclxuICAgIHJldHVybiB0aGlzLm1hcCh0eXBlLCBxdWVyeVBhcmFtcykucGlwZShtYXAobWFwVG9BcnJheSkpO1xyXG4gIH1cclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xyXG4gIHBhcmFtcz87XHJcbiAgZGVwZW5kZW5jaWVzPzogUGFyYW1NYXA7XHJcbn1cclxuIl19
|