@worktile/theia 16.1.8 → 16.1.9
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/components/toolbar/toolbar.component.d.ts +1 -1
- package/editor.module.d.ts +2 -2
- package/esm2022/components/toolbar/toolbar.component.mjs +6 -5
- package/esm2022/plugins/code/code.component.mjs +3 -3
- package/esm2022/plugins/image/image.component.mjs +7 -29
- package/esm2022/plugins/link/hover/link-hover.component.mjs +3 -3
- package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +3 -3
- package/fesm2022/worktile-theia.mjs +12 -32
- package/fesm2022/worktile-theia.mjs.map +1 -1
- package/interfaces/editor.d.ts +2 -2
- package/package.json +1 -1
- package/plugins/image/image.component.d.ts +2 -4
- package/queries/is-range-across-blocks.d.ts +1 -1
|
@@ -7,7 +7,7 @@ import { AngularEditor } from 'slate-angular';
|
|
|
7
7
|
import { HistoryEditor } from 'slate-history';
|
|
8
8
|
import { Alignment, ElementKinds, LayoutTypes, ToolbarActionTypes } from '../../constants/node-types';
|
|
9
9
|
import { getPluginOptions } from '../../core/utils';
|
|
10
|
-
import { PluginKeys,
|
|
10
|
+
import { PluginKeys, TheBaseElementComponent } from '../../interfaces';
|
|
11
11
|
import { THE_UPLOAD_SERVICE_TOKEN } from '../../interfaces/image';
|
|
12
12
|
import * as TheQueries from '../../queries';
|
|
13
13
|
import * as TheTransforms from '../../transforms';
|
|
@@ -24,7 +24,6 @@ import * as i8 from "ngx-tethys/tooltip";
|
|
|
24
24
|
import * as i9 from "ngx-tethys/progress";
|
|
25
25
|
import * as i10 from "ngx-tethys/action";
|
|
26
26
|
import * as i11 from "ngx-tethys/divider";
|
|
27
|
-
import * as i12 from "../../interfaces";
|
|
28
27
|
export class TheImageComponent extends TheBaseElementComponent {
|
|
29
28
|
get isOpen() {
|
|
30
29
|
return this.layoutToolbarRef && this.layoutToolbarRef.getOverlayRef() && this.layoutToolbarRef.getOverlayRef().hasAttached();
|
|
@@ -35,11 +34,10 @@ export class TheImageComponent extends TheBaseElementComponent {
|
|
|
35
34
|
? this.layoutDefaultWidth
|
|
36
35
|
: this.imageEntry.width;
|
|
37
36
|
}
|
|
38
|
-
constructor(elementRef, imageUploaderService,
|
|
37
|
+
constructor(elementRef, imageUploaderService, cdr, theContextService, thyPopover, overlay, viewContainerRef, imageGroupComponent) {
|
|
39
38
|
super(elementRef, cdr);
|
|
40
39
|
this.elementRef = elementRef;
|
|
41
40
|
this.imageUploaderService = imageUploaderService;
|
|
42
|
-
this.config = config;
|
|
43
41
|
this.cdr = cdr;
|
|
44
42
|
this.theContextService = theContextService;
|
|
45
43
|
this.thyPopover = thyPopover;
|
|
@@ -397,28 +395,11 @@ export class TheImageComponent extends TheBaseElementComponent {
|
|
|
397
395
|
const img = event.target;
|
|
398
396
|
this.naturalWidth = img.naturalWidth;
|
|
399
397
|
this.naturalHeight = img.naturalHeight;
|
|
400
|
-
if (this.config.mode === TheMode.print) {
|
|
401
|
-
this.setImageSize();
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
setImageSize() {
|
|
405
|
-
if (!this.img) {
|
|
406
|
-
return;
|
|
407
|
-
}
|
|
408
|
-
const imageContainer = this.img?.nativeElement?.closest('.image-container');
|
|
409
|
-
const imageContainerRect = imageContainer?.getBoundingClientRect();
|
|
410
|
-
const currentWidth = this.element?.width || this.naturalWidth;
|
|
411
|
-
const currentHeight = this.imageEntry?.height || this.naturalHeight;
|
|
412
|
-
const ratio = currentHeight / currentWidth;
|
|
413
|
-
const width = imageContainerRect?.width;
|
|
414
|
-
const height = ratio * imageContainerRect?.width;
|
|
415
|
-
this.img.nativeElement.style.width = width + 'px';
|
|
416
|
-
this.img.nativeElement.style.height = height + 'px';
|
|
417
398
|
}
|
|
418
399
|
imageError(event) {
|
|
419
400
|
const img = event.target;
|
|
420
401
|
const errorImageUrl = this.imagePluginOptions?.errorImageUrl;
|
|
421
|
-
if (errorImageUrl) {
|
|
402
|
+
if (!this.loadImageError && errorImageUrl) {
|
|
422
403
|
const url = typeof errorImageUrl === 'function' ? errorImageUrl(this.editor) : errorImageUrl;
|
|
423
404
|
this.loadImageError = true;
|
|
424
405
|
this.disablePreview = true;
|
|
@@ -432,18 +413,15 @@ export class TheImageComponent extends TheBaseElementComponent {
|
|
|
432
413
|
event.preventDefault();
|
|
433
414
|
event.stopPropagation();
|
|
434
415
|
}
|
|
435
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheImageComponent, deps: [{ token: i0.ElementRef }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token:
|
|
436
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheImageComponent, selector: "the-image, [theImage]", viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "component", type: i7.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i9.ThyProgressComponent, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }, { kind: "directive", type: i4.ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: i10.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i10.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i11.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }] }); }
|
|
416
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheImageComponent, deps: [{ token: i0.ElementRef }, { token: THE_UPLOAD_SERVICE_TOKEN }, { token: i0.ChangeDetectorRef }, { token: i1.TheContextService }, { token: i2.ThyPopover }, { token: i3.Overlay }, { token: i0.ViewContainerRef }, { token: i4.ThyImageGroupComponent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
417
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheImageComponent, selector: "the-image, [theImage]", viewQueries: [{ propertyName: "imageContent", first: true, predicate: ["imageContent"], descendants: true }, { propertyName: "img", first: true, predicate: ["img"], descendants: true }, { propertyName: "layoutToolbar", first: true, predicate: ["layoutToolbar"], descendants: true, static: true }, { propertyName: "imageDirective", first: true, predicate: ThyImageDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i6.SlateChildren, selector: "slate-children", inputs: ["children", "context", "viewContext"] }, { kind: "component", type: i7.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i9.ThyProgressComponent, selector: "thy-progress", inputs: ["thyType", "thySize", "thyValue", "thyMax", "thyTips", "thyShape", "thyGapDegree", "thyGapPosition", "thyStrokeWidth"] }, { kind: "directive", type: i4.ThyImageDirective, selector: "img[thyImage]", inputs: ["thySrc", "thyPreviewSrc", "thyOriginSrc", "thyImageMeta", "thyDisablePreview", "thyResolveSize"], exportAs: ["thyImage"] }, { kind: "component", type: i10.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i10.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i11.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }] }); }
|
|
437
418
|
}
|
|
438
419
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheImageComponent, decorators: [{
|
|
439
420
|
type: Component,
|
|
440
|
-
args: [{ selector: 'the-image, [theImage]', template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n" }]
|
|
421
|
+
args: [{ selector: 'the-image, [theImage]', template: "<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align\">\n <div #imageContent *ngIf=\"imageEntry.thumbUrl\" class=\"image-content\" [class.cursor-pointer]=\"!selection\">\n <img\n #img\n thyImage\n class=\"main-image\"\n [class.image-collapsed]=\"selection && !uploading\"\n [ngStyle]=\"{ 'width.px': imageBindingWidth }\"\n [alt]=\"imageEntry.name\"\n [thySrc]=\"imageEntry.thumbUrl\"\n [thyPreviewSrc]=\"imageEntry.thumbUrl\"\n [thyOriginSrc]=\"imageEntry.originUrl\"\n [thyDisablePreview]=\"disablePreview\"\n [thyImageMeta]=\"{ name: imageEntry.name, size: imageEntry.size }\"\n (load)=\"imageLoaded($event)\"\n (mousedown)=\"preventDefault($event)\"\n (error)=\"imageError($event)\"\n (click)=\"imageClick($event)\"\n />\n <div *ngIf=\"isCollapsedAndNonReadonly\" class=\"image-profile\" [class.outline]=\"selection\">\n <ng-container *ngIf=\"!loadImageError\">\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"> </thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading cursor-pointer\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n\n<ng-template #layoutToolbar>\n <thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of layoutOptions\">\n <a\n *ngIf=\"item.key !== 'split'\"\n href=\"javascript:;\"\n thyAction\n [thyType]=\"item.key === 'remove' ? 'danger' : 'primary'\"\n [thyActionIcon]=\"item.icon\"\n [thyActionActive]=\"layoutActive(item.key)\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"item?.handle($event, item.key)\"\n ></a>\n <thy-divider *ngIf=\"item.key === 'split'\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n </ng-container>\n </thy-actions>\n</ng-template>\n" }]
|
|
441
422
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
442
423
|
type: Inject,
|
|
443
424
|
args: [THE_UPLOAD_SERVICE_TOKEN]
|
|
444
|
-
}] }, { type: i12.TheModeConfig, decorators: [{
|
|
445
|
-
type: Inject,
|
|
446
|
-
args: [THE_MODE_TOKEN]
|
|
447
425
|
}] }, { type: i0.ChangeDetectorRef }, { type: i1.TheContextService }, { type: i2.ThyPopover }, { type: i3.Overlay }, { type: i0.ViewContainerRef }, { type: i4.ThyImageGroupComponent }]; }, propDecorators: { imageContent: [{
|
|
448
426
|
type: ViewChild,
|
|
449
427
|
args: ['imageContent']
|
|
@@ -457,4 +435,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
457
435
|
type: ViewChild,
|
|
458
436
|
args: [ThyImageDirective]
|
|
459
437
|
}] } });
|
|
460
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFDL0csT0FBTyxFQUtILHdCQUF3QixFQUUzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7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SUFDdkIsQ0FBQztJQUVELHVFQUF1RTtJQUN2RSxjQUFjLENBQUMsS0FBWTtRQUN2QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7OEdBdGZRLGlCQUFpQiw0Q0FvR2Qsd0JBQXdCLGFBRXhCLGNBQWM7a0dBdEdqQixpQkFBaUIsd1lBZ0dmLGlCQUFpQix1RUM1SWhDLHd6RkE0REE7OzJGRGhCYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0ksdUJBQXVCOzswQkF1RzVCLE1BQU07MkJBQUMsd0JBQXdCOzswQkFFL0IsTUFBTTsyQkFBQyxjQUFjOytOQWQxQixZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFJekIsR0FBRztzQkFERixTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSW5DLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdkLGNBQWM7c0JBQTNDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlJbWFnZURpcmVjdGl2ZSwgVGh5SW1hZ2VHcm91cENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBCZWZvcmVDb250ZXh0Q2hhbmdlLCBTbGF0ZUVsZW1lbnRDb250ZXh0IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEVsZW1lbnRLaW5kcywgTGF5b3V0VHlwZXMsIFRvb2xiYXJBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUSEVfTU9ERV9UT0tFTiwgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQsIFRoZU1vZGUsIFRoZU1vZGVDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gICAgSW1hZ2VFbnRyeSxcbiAgICBJbWFnZUluZm8sXG4gICAgSW1hZ2VQbHVnaW5PcHRpb25zLFxuICAgIExheW91dE9wdGlvbixcbiAgICBUSEVfVVBMT0FEX1NFUlZJQ0VfVE9LRU4sXG4gICAgVGhlSW1hZ2VVcGxvYWRlclNlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pbWFnZSc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4uLy4uL3F1ZXJpZXMnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgVGhlVHJhbnNmb3JtcyBmcm9tICcuLi8uLi90cmFuc2Zvcm1zJztcbmltcG9ydCB7IEltYWdlRWRpdG9yIH0gZnJvbSAnLi9pbWFnZS5lZGl0b3InO1xuXG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtaW1hZ2UsIFt0aGVJbWFnZV0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlSW1hZ2VDb21wb25lbnRcbiAgICBleHRlbmRzIFRoZUJhc2VFbGVtZW50Q29tcG9uZW50PEltYWdlRWxlbWVudCwgRWRpdG9yPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEJlZm9yZUNvbnRleHRDaGFuZ2U8U2xhdGVFbGVtZW50Q29udGV4dD5cbntcbiAgICBuYXR1cmFsV2lkdGggPSAwO1xuXG4gICAgbmF0dXJhbEhlaWdodCA9IDA7XG5cbiAgICBpbWFnZUVudHJ5OiBJbWFnZUVudHJ5ID0ge307XG5cbiAgICB1cGxvYWRpbmcgPSBmYWxzZTtcblxuICAgIHBlcmNlbnRhZ2UgPSAwO1xuXG4gICAgZmlsZUl0ZW06IHsgdXJsOiBzdHJpbmc7IGZpbGU6IEZpbGUgfTtcblxuICAgIGxheW91dERlZmF1bHRXaWR0aCA9IDM2ODtcblxuICAgIGRpc2FibGVQcmV2aWV3ID0gZmFsc2U7XG5cbiAgICBsb2FkSW1hZ2VFcnJvciA9IGZhbHNlO1xuXG4gICAgbGF5b3V0T3B0aW9uczogTGF5b3V0T3B0aW9uW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LmxlZnQsXG4gICAgICAgICAgICBpY29uOiAnaW1hZ2UtbGVmdCcsXG4gICAgICAgICAgICBuYW1lOiAn5bem5a+56b2QJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1jZW50ZXInLFxuICAgICAgICAgICAgbmFtZTogJ+WxheS4rScsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IEFsaWdubWVudCkgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBhbGlnbjoga2V5LCBsYXlvdXQ6IHVuZGVmaW5lZCB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IEFsaWdubWVudC5yaWdodCxcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1yaWdodCcsXG4gICAgICAgICAgICBuYW1lOiAn5Y+z5a+56b2QJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogVG9vbGJhckFjdGlvblR5cGVzLnNwbGl0XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogTGF5b3V0VHlwZXMud3JhcExlZnQsXG4gICAgICAgICAgICBpY29uOiAnd3JhcC1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflm77niYflsYXlt6YnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBMYXlvdXRUeXBlcykgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBsYXlvdXQ6IGtleSB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6IExheW91dFR5cGVzLndyYXBSaWdodCxcbiAgICAgICAgICAgIGljb246ICd3cmFwLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICflm77niYflsYXlj7MnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBMYXlvdXRUeXBlcykgPT4gdGhpcy5zZXRJbWFnZU5vZGUoZSwgeyBsYXlvdXQ6IGtleSB9KVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdyZW1vdmUnLFxuICAgICAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgICAgIG5hbWU6ICfliKDpmaQnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCkgPT4gdGhpcy5vbkRlbGV0ZShlKVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIHByaXZhdGUgdXBsb2FkaW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIG1vdXNlTW92ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSBtb3VzZVVwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIGRyYWdhYmxlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGxheW91dFRvb2xiYXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIHByaXZhdGUgaW1hZ2VQbHVnaW5PcHRpb25zOiBJbWFnZVBsdWdpbk9wdGlvbnM7XG5cbiAgICBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUb29sYmFyUmVmICYmIHRoaXMubGF5b3V0VG9vbGJhclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIGdldCBpbWFnZUJpbmRpbmdXaWR0aCgpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gdGhpcy5pbWFnZUVudHJ5Py53aWR0aCB8fCB0aGlzLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VFbnRyeT8ubGF5b3V0ICYmIGN1cnJlbnRXaWR0aCA+IHRoaXMubGF5b3V0RGVmYXVsdFdpZHRoICYmICF0aGlzLmltYWdlRW50cnk/LnJlU2l6ZWRcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGhcbiAgICAgICAgICAgIDogdGhpcy5pbWFnZUVudHJ5LndpZHRoO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlQ29udGVudCcpXG4gICAgaW1hZ2VDb250ZW50OiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnaW1nJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgaW1nOiBFbGVtZW50UmVmO1xuXG4gICAgQFZpZXdDaGlsZCgnbGF5b3V0VG9vbGJhcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbGF5b3V0VG9vbGJhcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoVGh5SW1hZ2VEaXJlY3RpdmUpIGltYWdlRGlyZWN0aXZlOiBUaHlJbWFnZURpcmVjdGl2ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChUSEVfVVBMT0FEX1NFUlZJQ0VfVE9LRU4pXG4gICAgICAgIHByaXZhdGUgaW1hZ2VVcGxvYWRlclNlcnZpY2U6IFRoZUltYWdlVXBsb2FkZXJTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFRIRV9NT0RFX1RPS0VOKVxuICAgICAgICBwcml2YXRlIGNvbmZpZzogVGhlTW9kZUNvbmZpZyxcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGhlQ29udGV4dFNlcnZpY2U6IFRoZUNvbnRleHRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwdWJsaWMgaW1hZ2VHcm91cENvbXBvbmVudDogVGh5SW1hZ2VHcm91cENvbXBvbmVudFxuICAgICkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xuICAgIH1cblxuICAgIGJlZm9yZUNvbnRleHRDaGFuZ2UgPSAodmFsdWU6IFNsYXRlRWxlbWVudENvbnRleHQ8SW1hZ2VFbGVtZW50PikgPT4ge1xuICAgICAgICBpZiAodmFsdWUuZWxlbWVudCAhPT0gdGhpcy5lbGVtZW50ICYmIHZhbHVlLmVsZW1lbnQudGh1bWJVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVybmFsU291cmNlID0gdmFsdWUuZWxlbWVudD8uZXh0ZXJuYWxTb3VyY2U7XG4gICAgICAgICAgICBsZXQgdGh1bWJVcmwgPSB2YWx1ZS5lbGVtZW50LnRodW1iVXJsO1xuICAgICAgICAgICAgbGV0IG9yaWdpblVybCA9IHZhbHVlLmVsZW1lbnQub3JpZ2luVXJsO1xuXG4gICAgICAgICAgICBpZiAoIWV4dGVybmFsU291cmNlICYmIHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2U/LmJ1aWxkSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHVtYlVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybCh0aHVtYlVybCk7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsID0gdGhpcy5pbWFnZVVwbG9hZGVyU2VydmljZS5idWlsZEltYWdlVXJsKG9yaWdpblVybCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiB2YWx1ZS5lbGVtZW50Lm5hbWUsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHZhbHVlLmVsZW1lbnQud2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB2YWx1ZS5lbGVtZW50LmhlaWdodCxcbiAgICAgICAgICAgICAgICBhbGlnbjogdmFsdWUuZWxlbWVudC5hbGlnbiB8fCBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6IHZhbHVlLmVsZW1lbnQubGF5b3V0LFxuICAgICAgICAgICAgICAgIHJlU2l6ZWQ6IHZhbHVlLmVsZW1lbnQucmVTaXplZCB8fCBmYWxzZSxcbiAgICAgICAgICAgICAgICBzaXplOiB2YWx1ZS5lbGVtZW50LnNpemUsXG4gICAgICAgICAgICAgICAgdGh1bWJVcmwsXG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZXRCbG9ja0NhcmRMYXlvdXRBdHRyKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZmlsZUl0ZW0gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ0ZpbGVzLmZpbmQoaXRlbSA9PiBpdGVtLnVybCA9PT0gdGhpcy5lbGVtZW50LnVybCk7XG4gICAgICAgIGlmICh0aGlzLmZpbGVJdGVtPy5maWxlICYmIHRoaXMuZmlsZUl0ZW0uZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkSW1hZ2UodGhpcy5maWxlSXRlbS5maWxlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucyA9IGdldFBsdWdpbk9wdGlvbnM8SW1hZ2VQbHVnaW5PcHRpb25zPih0aGlzLmVkaXRvciwgUGx1Z2luS2V5cy5pbWFnZSk7XG4gICAgICAgIGlmICh0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5kaXNhYmxlUHJldmlldyAmJiB0eXBlb2YgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVByZXZpZXcgPSB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5kaXNhYmxlUHJldmlldyh0aGlzLmVkaXRvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcgYXMgYm9vbGVhbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGltYWdlQ2xpY2soKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbWFnZUdyb3VwQ29tcG9uZW50LmltYWdlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLmltYWdlRGlyZWN0aXZlKTtcbiAgICAgICAgY29uc3QgaW1hZ2VHcm91cCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcmlnaW5Vcmw6IGl0ZW0udGh5T3JpZ2luU3JjLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsOiBpdGVtLnRoeVByZXZpZXdTcmMsXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS50aHlJbWFnZU1ldGEubmFtZSxcbiAgICAgICAgICAgICAgICBzaXplOiBpdGVtLnRoeUltYWdlTWV0YS5zaXplXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KSBhcyBJbWFnZUluZm9bXTtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5VcmwsIHRodW1iVXJsLCBuYW1lLCBzaXplIH0gPSB0aGlzLmVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucy5wcmV2aWV3KHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHByZXZpZXdJbWFnZUluZm86IHtcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VHcm91cCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ29udGV4dENoYW5nZSgpIHtcbiAgICAgICAgc3VwZXIub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZE9wZW4oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbkxheW91dFRvb2xiYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvdWxkQ2xvc2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5tb3VzZVVwU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UucmVtb3ZlVXBsb2FkRmlsZSh0aGlzLmZpbGVJdGVtKTtcbiAgICAgICAgaWYgKHRoaXMudXBsb2FkaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnVwbG9hZGluZ1N0YXR1cyQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbiA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2Uub25Nb3VzZVVwJC5zdWJzY3JpYmUoZSA9PiB0aGlzLmVuZERyYWcoZSkpO1xuICAgICAgICB0aGlzLnVwbG9hZGluZ1N1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRVcGxvYWRpbmdJdGVtcyQoKVxuICAgICAgICAgICAgLnBpcGUobWFwKGZpbGVVcGxvYWRpbmdJdGVtID0+IHRoaXMuZmlsZUl0ZW0/LmZpbGUgJiYgZmlsZVVwbG9hZGluZ0l0ZW0uZmluZChpdGVtID0+IGl0ZW0uZmlsZSA9PT0gdGhpcy5maWxlSXRlbT8uZmlsZSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh1cGxvYWRpbmdJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXVwbG9hZGluZ0l0ZW0gfHwgIXVwbG9hZGluZ0l0ZW0ucmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50YWdlID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQudXBsb2FkRmlsZS5wcm9ncmVzcy5wZXJjZW50YWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgc3RhdHVzIH0gPSB1cGxvYWRpbmdJdGVtLnJlc3VsdDtcbiAgICAgICAgICAgICAgICAvLyDmiJDlip/lkozlpLHotKXpg73opoHkuIrkvKDnu5PmnZ9cbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09PSBUaHlVcGxvYWRTdGF0dXMuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnJlbW92ZVVwbG9hZEZpbGUodGhpcy5maWxlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQoZmFsc2UpLCAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0SW1hZ2VOb2RlcyhpbWFnZUluZm86IEltYWdlRW50cnkpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IEFuZ3VsYXJFZGl0b3IuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7IHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSwgdXJsOiBudWxsLCAuLi5pbWFnZUluZm8gfTtcbiAgICAgICAgSGlzdG9yeUVkaXRvci53aXRob3V0U2F2aW5nKHRoaXMuZWRpdG9yLCAoKSA9PiBUcmFuc2Zvcm1zLnNldE5vZGVzKHRoaXMuZWRpdG9yLCBkYXRhLCB7IGF0OiBwYXRoIH0pKTtcbiAgICB9XG5cbiAgICBhc3luYyB1cGxvYWRJbWFnZShmaWxlOiBGaWxlKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIHRodW1iVXJsOiBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IFt1cGxvYWRGaWxlRW50aXR5XSA9IGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UudXBsb2FkRmlsZUhhbmRsZShbZmlsZV0pLnRvUHJvbWlzZSgpO1xuICAgICAgICBjb25zdCB7IHRodW1iVXJsLCBvcmlnaW5VcmwgfSA9IHVwbG9hZEZpbGVFbnRpdHk7XG4gICAgICAgIGNvbnN0IGltYWdlSW5mbzogSW1hZ2VFbnRyeSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGZpbGUubmFtZSxcbiAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgb3JpZ2luVXJsLFxuICAgICAgICAgICAgYWxpZ246IHRoaXMuaW1hZ2VFbnRyeS5hbGlnbiB8fCBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2V0SW1hZ2VOb2RlcyhpbWFnZUluZm8pO1xuICAgIH1cblxuICAgIHN0YXJ0RHJhZyhldmVudDogTW91c2VFdmVudCwgYXhpczogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRJbWFnZUVycm9yIHx8ICF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZHJhZ2FibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBpbWdFbGVtZW50ID0gdGhpcy5pbWcubmF0aXZlRWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgYXhpcyxcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblg6IGV2ZW50LnBhZ2VYLFxuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWTogZXZlbnQucGFnZVksXG4gICAgICAgICAgICBpbnRlcm5hbFdpZHRoOiBpbWdFbGVtZW50LndpZHRoIHx8IHRoaXMuaW1hZ2VFbnRyeS53aWR0aCxcbiAgICAgICAgICAgIGludGVybmFsSGVpZ2h0OiBpbWdFbGVtZW50LmhlaWdodCB8fCB0aGlzLmltYWdlRW50cnkuaGVpZ2h0LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMudGhlQ29udGV4dFNlcnZpY2UuZ2V0Rmlyc3RFbGVtZW50Q2hpbGQoKS5jbGllbnRXaWR0aFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbiA9IHRoaXMudGhlQ29udGV4dFNlcnZpY2Uub25Nb3VzZU1vdmUkLnN1YnNjcmliZShlID0+IHRoaXMubW91c2VNb3ZlSGFuZGxlKGUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBtb3VzZU1vdmVIYW5kbGUoXG4gICAgICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBheGlzOiBzdHJpbmc7XG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25YOiBudW1iZXI7XG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25ZOiBudW1iZXI7XG4gICAgICAgICAgICBpbnRlcm5hbFdpZHRoOiBudW1iZXI7XG4gICAgICAgICAgICBpbnRlcm5hbEhlaWdodDogbnVtYmVyO1xuICAgICAgICAgICAgbWF4V2lkdGg6IG51bWJlcjtcbiAgICAgICAgfVxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5kcmFnYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgeyBheGlzLCBwcmludGVyUG9zaXRpb25YLCBwcmludGVyUG9zaXRpb25ZLCBpbnRlcm5hbFdpZHRoLCBpbnRlcm5hbEhlaWdodCwgbWF4V2lkdGggfSA9IG9wdGlvbnM7XG4gICAgICAgICAgICBjb25zdCBpc1JldmVyc2FsID0gYXhpcy5pbmNsdWRlcygnLScpO1xuXG4gICAgICAgICAgICBsZXQgb2Zmc2V0WCA9IGV2ZW50LnBhZ2VYIC0gcHJpbnRlclBvc2l0aW9uWDtcbiAgICAgICAgICAgIGxldCBvZmZzZXRZID0gZXZlbnQucGFnZVkgLSBwcmludGVyUG9zaXRpb25ZO1xuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5lbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoaXNSZXZlcnNhbCkge1xuICAgICAgICAgICAgICAgIG9mZnNldFggPSAtb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICBvZmZzZXRZID0gLW9mZnNldFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5lbGVtZW50LmFsaWduID09PSAnY2VudGVyJykge1xuICAgICAgICAgICAgICAgIG9mZnNldFggPSBvZmZzZXRYICogMjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ3gnKSkge1xuICAgICAgICAgICAgICAgIHdpZHRoID0gb2Zmc2V0WCArIGludGVybmFsV2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbWF4V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgYGxheW91dGAgd2hlbiB0aGUgaW1hZ2UgaXMgYWRqdXN0ZWQgdG8gdGhlIG1heGltdW0gdmFsdWUgdW5kZXIgcmljaCBtZWRpYVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBUaGVRdWVyaWVzLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3Iuc2V0SW1hZ2VOb2RlKHRoaXMuZWRpdG9yLCBwYXRoLCB7IGxheW91dDogdW5kZWZpbmVkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAxMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCdsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSBpbnRlcm5hbFdpZHRoIC8gd2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGludGVybmFsSGVpZ2h0IC8gcmF0aW87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChheGlzLmluY2x1ZGVzKCd5JykpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQgPSBvZmZzZXRZICsgaW50ZXJuYWxIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKGhlaWdodCA+PSAxMDAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDEwMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPD0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGF4aXMuaW5jbHVkZXMoJ2wnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXRpbyA9IGludGVybmFsSGVpZ2h0IC8gaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGludGVybmFsV2lkdGggLyByYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pbWFnZUVudHJ5LnJlU2l6ZWQgJiYgdGhpcy5pbWFnZUVudHJ5LndpZHRoICE9PSB3aWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5yZVNpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbmREcmFnKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRyYWdhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9PT0gdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCkud2lkdGggJiZcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPD0gdGhpcy5uYXR1cmFsV2lkdGggJiZcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQud2lkdGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWRpdG9yLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogRWxlbWVudEtpbmRzLmltYWdlLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmltYWdlRW50cnlcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHsgYXQ6IHRoaXMuc2VsZWN0aW9uIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWxVcGxvYWQoZXZlbnQpIHtcbiAgICAgICAgVHJhbnNmb3Jtcy5yZW1vdmVOb2Rlcyh0aGlzLmVkaXRvciwgeyBhdDogdGhpcy5zZWxlY3Rpb24gfSk7XG4gICAgfVxuXG4gICAgaXNTaG91bGRPcGVuKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB7IHJpY2hNZWRpYSB9XG4gICAgICAgIH0gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldE9wdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzPy5yZWFkb25seSAmJlxuICAgICAgICAgICAgcmljaE1lZGlhICYmXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgJiZcbiAgICAgICAgICAgIFRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpICYmXG4gICAgICAgICAgICAhdGhpcy51cGxvYWRpbmcgJiZcbiAgICAgICAgICAgICF0aGlzLmlzT3BlblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzU2hvdWxkQ2xvc2UoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiAmJlxuICAgICAgICAgICAgKHRoaXM/LnJlYWRvbmx5IHx8ICF0aGlzLmlzQ29sbGFwc2VkQW5kTm9uUmVhZG9ubHkgfHwgIVRoZVF1ZXJpZXMuaXNHbG9iYWxDb2xsYXBzZWQodGhpcy5lZGl0b3IpIHx8IHRoaXMudXBsb2FkaW5nKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9wZW5MYXlvdXRUb29sYmFyKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW1nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy5sYXlvdXRUb29sYmFyLCB7XG4gICAgICAgICAgICBvcmlnaW46IHRoaXMuaW1hZ2VDb250ZW50LFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS1wbHVnaW4tdG9vbGJhci1wb3BvdmVyJyxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXRUb29sYmFyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfSwgMTUwKTtcbiAgICB9XG5cbiAgICBjbG9zZUxheW91dFRvb2xiYXIoKSB7XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uY2xvc2UoKTtcbiAgICB9XG5cbiAgICBsYXlvdXRBY3RpdmUoa2V5OiBBbGlnbm1lbnQgfCBMYXlvdXRUeXBlcykge1xuICAgICAgICBjb25zdCB7IGxheW91dCwgYWxpZ24gfSA9IHRoaXMuaW1hZ2VFbnRyeTtcbiAgICAgICAgcmV0dXJuIGtleSAmJiAoKGtleSA9PT0gYWxpZ24gJiYgIWxheW91dCkgfHwga2V5ID09PSBsYXlvdXQpO1xuICAgIH1cblxuICAgIHNldEltYWdlTm9kZShlOiBNb3VzZUV2ZW50LCBwYXJ0aWFsOiB7IGxheW91dD86IExheW91dFR5cGVzOyBhbGlnbj86IEFsaWdubWVudCB9KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZVF1ZXJpZXMuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcGF0aCwgcGFydGlhbCk7XG4gICAgfVxuXG4gICAgc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IEFuZ3VsYXJFZGl0b3IudG9ET01Ob2RlKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tDYXJkID0gY3VycmVudEVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGNvbnN0IHsgbGF5b3V0IH0gPSB0aGlzLmVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChibG9ja0NhcmQgJiYgbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnNldEF0dHJpYnV0ZSgnbGF5b3V0JywgbGF5b3V0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvY2tDYXJkICYmICFsYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBibG9ja0NhcmQucmVtb3ZlQXR0cmlidXRlKCdsYXlvdXQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuZGVsZXRlRWxlbWVudCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCBib3R0b21Qb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgICAgIG9mZnNldFk6IDRcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuaW1hZ2VDb250ZW50KVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb25dKTtcbiAgICB9XG5cbiAgICBpbWFnZUxvYWRlZChldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmF0dXJhbFdpZHRoID0gaW1nLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgdGhpcy5uYXR1cmFsSGVpZ2h0ID0gaW1nLm5hdHVyYWxIZWlnaHQ7XG5cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm1vZGUgPT09IFRoZU1vZGUucHJpbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW1hZ2VTaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRJbWFnZVNpemUoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbWFnZUNvbnRhaW5lciA9IHRoaXMuaW1nPy5uYXRpdmVFbGVtZW50Py5jbG9zZXN0KCcuaW1hZ2UtY29udGFpbmVyJyk7XG4gICAgICAgIGNvbnN0IGltYWdlQ29udGFpbmVyUmVjdCA9IGltYWdlQ29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFdpZHRoID0gdGhpcy5lbGVtZW50Py53aWR0aCB8fCB0aGlzLm5hdHVyYWxXaWR0aDtcbiAgICAgICAgY29uc3QgY3VycmVudEhlaWdodCA9IHRoaXMuaW1hZ2VFbnRyeT8uaGVpZ2h0IHx8IHRoaXMubmF0dXJhbEhlaWdodDtcbiAgICAgICAgY29uc3QgcmF0aW8gPSBjdXJyZW50SGVpZ2h0IC8gY3VycmVudFdpZHRoO1xuICAgICAgICBjb25zdCB3aWR0aCA9IGltYWdlQ29udGFpbmVyUmVjdD8ud2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHJhdGlvICogaW1hZ2VDb250YWluZXJSZWN0Py53aWR0aDtcblxuICAgICAgICB0aGlzLmltZy5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICB0aGlzLmltZy5uYXRpdmVFbGVtZW50LnN0eWxlLmhlaWdodCA9IGhlaWdodCArICdweCc7XG4gICAgfVxuXG4gICAgaW1hZ2VFcnJvcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgaW1nID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGVycm9ySW1hZ2VVcmwgPSB0aGlzLmltYWdlUGx1Z2luT3B0aW9ucz8uZXJyb3JJbWFnZVVybDtcbiAgICAgICAgaWYgKGVycm9ySW1hZ2VVcmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IHR5cGVvZiBlcnJvckltYWdlVXJsID09PSAnZnVuY3Rpb24nID8gZXJyb3JJbWFnZVVybCh0aGlzLmVkaXRvcikgOiBlcnJvckltYWdlVXJsO1xuICAgICAgICAgICAgdGhpcy5sb2FkSW1hZ2VFcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VDb250ZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndGhlLWltYWdlLWVycm9yJyk7XG4gICAgICAgICAgICBpbWcuc3JjID0gdXJsO1xuICAgICAgICB9XG4gICAgICAgIGltZy5vbmVycm9yID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyDnu4Tku7blupMgZGlhbG9nIOW8ueWHuuaXtu+8jOS8muiusOW9leW9k+WJjeeahOeEpueCueOAgumYu+atoiBtb3VzZWRvd24g6buY6K6k6KGM5Li677yM5L2/5b6X5Zu+54mH5Y6f5pys55qEIGNsaWNrIOS6i+S7tuiDveiOt+WPluWIsOato+ehrueahOeEpueCueOAglxuICAgIHByZXZlbnREZWZhdWx0KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCI8c2xhdGUtY2hpbGRyZW4gW2NoaWxkcmVuXT1cImNoaWxkcmVuXCIgW2NvbnRleHRdPVwiY2hpbGRyZW5Db250ZXh0XCIgW3ZpZXdDb250ZXh0XT1cInZpZXdDb250ZXh0XCI+PC9zbGF0ZS1jaGlsZHJlbj5cblxuPGRpdiBjbGFzcz1cImltYWdlLWNvbnRhaW5lclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCIgW3N0eWxlLnRleHRBbGlnbl09XCJpbWFnZUVudHJ5LmFsaWduXCI+XG4gIDxkaXYgI2ltYWdlQ29udGVudCAqbmdJZj1cImltYWdlRW50cnkudGh1bWJVcmxcIiBjbGFzcz1cImltYWdlLWNvbnRlbnRcIiBbY2xhc3MuY3Vyc29yLXBvaW50ZXJdPVwiIXNlbGVjdGlvblwiPlxuICAgIDxpbWdcbiAgICAgICNpbWdcbiAgICAgIHRoeUltYWdlXG4gICAgICBjbGFzcz1cIm1haW4taW1hZ2VcIlxuICAgICAgW2NsYXNzLmltYWdlLWNvbGxhcHNlZF09XCJzZWxlY3Rpb24gJiYgIXVwbG9hZGluZ1wiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aC5weCc6IGltYWdlQmluZGluZ1dpZHRoIH1cIlxuICAgICAgW2FsdF09XCJpbWFnZUVudHJ5Lm5hbWVcIlxuICAgICAgW3RoeVNyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlQcmV2aWV3U3JjXT1cImltYWdlRW50cnkudGh1bWJVcmxcIlxuICAgICAgW3RoeU9yaWdpblNyY109XCJpbWFnZUVudHJ5Lm9yaWdpblVybFwiXG4gICAgICBbdGh5RGlzYWJsZVByZXZpZXddPVwiZGlzYWJsZVByZXZpZXdcIlxuICAgICAgW3RoeUltYWdlTWV0YV09XCJ7IG5hbWU6IGltYWdlRW50cnkubmFtZSwgc2l6ZTogaW1hZ2VFbnRyeS5zaXplIH1cIlxuICAgICAgKGxvYWQpPVwiaW1hZ2VMb2FkZWQoJGV2ZW50KVwiXG4gICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgKGVycm9yKT1cImltYWdlRXJyb3IoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiaW1hZ2VDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuICAgIDxkaXYgKm5nSWY9XCJpc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5XCIgY2xhc3M9XCJpbWFnZS1wcm9maWxlXCIgW2NsYXNzLm91dGxpbmVdPVwic2VsZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRJbWFnZUVycm9yXCI+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgdG9wXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICd4bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIHJpZ2h0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCBib3R0b21cIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJy14bCcpXCIgY2xhc3M9XCJpbWFnZS1wb2ludGVyIGxlZnQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInVwbG9hZGluZ1wiIGNsYXNzPVwidXBsb2FkaW5nXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkaW5nLXBlcmNlbnRhZ2VcIj5cbiAgICAgICAgPHRoeS1wcm9ncmVzcyB0aHlUeXBlPVwicHJpbWFyeVwiIFt0aHlWYWx1ZV09XCJwZXJjZW50YWdlXCIgdGh5U2l6ZT1cInNtXCI+PC90aHktcHJvZ3Jlc3M+XG4gICAgICAgIDx0aHktaWNvbiAoY2xpY2spPVwiY2FuY2VsVXBsb2FkKCRldmVudClcIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIiB0aHlJY29uTGVnZ2luZz1cInRydWVcIj4gPC90aHktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhdXBsb2FkaW5nXCIgY2xhc3M9XCJsYXllclwiIFtjbGFzcy5yZWFkb25seV09XCJyZWFkb25seVwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFpbWFnZUVudHJ5LnRodW1iVXJsXCIgY2xhc3M9XCJpbWFnZS1sb2FkaW5nIGN1cnNvci1wb2ludGVyXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIj5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJpbWFnZVwiPjwvdGh5LWljb24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbGF5b3V0VG9vbGJhcj5cbiAgPHRoeS1hY3Rpb25zIHRoeVNpemU9XCJ4eHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxheW91dE9wdGlvbnNcIj5cbiAgICAgIDxhXG4gICAgICAgICpuZ0lmPVwiaXRlbS5rZXkgIT09ICdzcGxpdCdcIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5QWN0aW9uXG4gICAgICAgIFt0aHlUeXBlXT1cIml0ZW0ua2V5ID09PSAncmVtb3ZlJyA/ICdkYW5nZXInIDogJ3ByaW1hcnknXCJcbiAgICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgICAgW3RoeUFjdGlvbkFjdGl2ZV09XCJsYXlvdXRBY3RpdmUoaXRlbS5rZXkpXCJcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiaXRlbT8uaGFuZGxlKCRldmVudCwgaXRlbS5rZXkpXCJcbiAgICAgID48L2E+XG4gICAgICA8dGh5LWRpdmlkZXIgKm5nSWY9XCJpdGVtLmtleSA9PT0gJ3NwbGl0J1wiIGNsYXNzPVwibXItMiBtbC0xIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RoeS1hY3Rpb25zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
438
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvaW1hZ2UvaW1hZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUdILFNBQVMsRUFFVCxNQUFNLEVBSU4sU0FBUyxFQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBNEMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkUsT0FBTyxFQUtILHdCQUF3QixFQUUzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sS0FBSyxhQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUTdDLE1BQU0sT0FB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LENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDakUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7U0FDakI7UUFDRCxHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLGNBQWMsQ0FBQyxLQUFZO1FBQ3ZCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0FoZVEsaUJBQWlCLDRDQW9HZCx3QkFBd0I7a0dBcEczQixpQkFBaUIsd1lBZ0dmLGlCQUFpQix1RUM1SWhDLDIwRkE0REE7OzJGRGhCYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0ksdUJBQXVCOzswQkF1RzVCLE1BQU07MkJBQUMsd0JBQXdCOytOQVpwQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYztnQkFJekIsR0FBRztzQkFERixTQUFTO3VCQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBSW5DLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdkLGNBQWM7c0JBQTNDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlJbWFnZURpcmVjdGl2ZSwgVGh5SW1hZ2VHcm91cENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvaW1hZ2UnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBUaHlVcGxvYWRTdGF0dXMgfSBmcm9tICduZ3gtdGV0aHlzL3VwbG9hZCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzL2ludGVybmFsL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yLCBCZWZvcmVDb250ZXh0Q2hhbmdlLCBTbGF0ZUVsZW1lbnRDb250ZXh0IH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEVsZW1lbnRLaW5kcywgTGF5b3V0VHlwZXMsIFRvb2xiYXJBY3Rpb25UeXBlcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9ub2RlLXR5cGVzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEltYWdlRWxlbWVudCB9IGZyb20gJy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVCYXNlRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBJbWFnZUVudHJ5LFxuICAgIEltYWdlSW5mbyxcbiAgICBJbWFnZVBsdWdpbk9wdGlvbnMsXG4gICAgTGF5b3V0T3B0aW9uLFxuICAgIFRIRV9VUExPQURfU0VSVklDRV9UT0tFTixcbiAgICBUaGVJbWFnZVVwbG9hZGVyU2VydmljZVxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ltYWdlJztcbmltcG9ydCAqIGFzIFRoZVF1ZXJpZXMgZnJvbSAnLi4vLi4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuL2ltYWdlLmVkaXRvcic7XG5cbmRlY2xhcmUgY29uc3QgJDogYW55O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1pbWFnZSwgW3RoZUltYWdlXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUaGVJbWFnZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgVGhlQmFzZUVsZW1lbnRDb21wb25lbnQ8SW1hZ2VFbGVtZW50LCBFZGl0b3I+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQmVmb3JlQ29udGV4dENoYW5nZTxTbGF0ZUVsZW1lbnRDb250ZXh0Plxue1xuICAgIG5hdHVyYWxXaWR0aCA9IDA7XG5cbiAgICBuYXR1cmFsSGVpZ2h0ID0gMDtcblxuICAgIGltYWdlRW50cnk6IEltYWdlRW50cnkgPSB7fTtcblxuICAgIHVwbG9hZGluZyA9IGZhbHNlO1xuXG4gICAgcGVyY2VudGFnZSA9IDA7XG5cbiAgICBmaWxlSXRlbTogeyB1cmw6IHN0cmluZzsgZmlsZTogRmlsZSB9O1xuXG4gICAgbGF5b3V0RGVmYXVsdFdpZHRoID0gMzY4O1xuXG4gICAgZGlzYWJsZVByZXZpZXcgPSBmYWxzZTtcblxuICAgIGxvYWRJbWFnZUVycm9yID0gZmFsc2U7XG5cbiAgICBsYXlvdXRPcHRpb25zOiBMYXlvdXRPcHRpb25bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQubGVmdCxcbiAgICAgICAgICAgIGljb246ICdpbWFnZS1sZWZ0JyxcbiAgICAgICAgICAgIG5hbWU6ICflt6blr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBBbGlnbm1lbnQuY2VudGVyLFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLWNlbnRlcicsXG4gICAgICAgICAgICBuYW1lOiAn5bGF5LitJyxcbiAgICAgICAgICAgIGhhbmRsZTogKGU6IE1vdXNlRXZlbnQsIGtleTogQWxpZ25tZW50KSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGFsaWduOiBrZXksIGxheW91dDogdW5kZWZpbmVkIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogQWxpZ25tZW50LnJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ2ltYWdlLXJpZ2h0JyxcbiAgICAgICAgICAgIG5hbWU6ICflj7Plr7npvZAnLFxuICAgICAgICAgICAgaGFuZGxlOiAoZTogTW91c2VFdmVudCwga2V5OiBBbGlnbm1lbnQpID0+IHRoaXMuc2V0SW1hZ2VOb2RlKGUsIHsgYWxpZ246IGtleSwgbGF5b3V0OiB1bmRlZmluZWQgfSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBUb29sYmFyQWN0aW9uVHlwZXMuc3BsaXRcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiBMYXlvdXRUeXBlcy53cmFwTGVmdCxcbiAgICAgICAgICAgIGljb246ICd3cmFwLWxlZnQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheW3picsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogTGF5b3V0VHlwZXMud3JhcFJpZ2h0LFxuICAgICAgICAgICAgaWNvbjogJ3dyYXAtcmlnaHQnLFxuICAgICAgICAgICAgbmFtZTogJ+WbvueJh+WxheWPsycsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50LCBrZXk6IExheW91dFR5cGVzKSA9PiB0aGlzLnNldEltYWdlTm9kZShlLCB7IGxheW91dDoga2V5IH0pXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3JlbW92ZScsXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgbmFtZTogJ+WIoOmZpCcsXG4gICAgICAgICAgICBoYW5kbGU6IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLm9uRGVsZXRlKGUpXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgcHJpdmF0ZSB1cGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgbW91c2VNb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIG1vdXNlVXBTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgZHJhZ2FibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbGF5b3V0VG9vbGJhclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgcHJpdmF0ZSBpbWFnZVBsdWdpbk9wdGlvbnM6IEltYWdlUGx1Z2luT3B0aW9ucztcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRvb2xiYXJSZWYgJiYgdGhpcy5sYXlvdXRUb29sYmFyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmxheW91dFRvb2xiYXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0IGltYWdlQmluZGluZ1dpZHRoKCkge1xuICAgICAgICBjb25zdCBjdXJyZW50V2lkdGggPSB0aGlzLmltYWdlRW50cnk/LndpZHRoIHx8IHRoaXMubmF0dXJhbFdpZHRoO1xuICAgICAgICByZXR1cm4gdGhpcy5pbWFnZUVudHJ5Py5sYXlvdXQgJiYgY3VycmVudFdpZHRoID4gdGhpcy5sYXlvdXREZWZhdWx0V2lkdGggJiYgIXRoaXMuaW1hZ2VFbnRyeT8ucmVTaXplZFxuICAgICAgICAgICAgPyB0aGlzLmxheW91dERlZmF1bHRXaWR0aFxuICAgICAgICAgICAgOiB0aGlzLmltYWdlRW50cnkud2lkdGg7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VDb250ZW50JylcbiAgICBpbWFnZUNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdpbWcnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBpbWc6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKCdsYXlvdXRUb29sYmFyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBsYXlvdXRUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZChUaHlJbWFnZURpcmVjdGl2ZSkgaW1hZ2VEaXJlY3RpdmU6IFRoeUltYWdlRGlyZWN0aXZlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFRIRV9VUExPQURfU0VSVklDRV9UT0tFTilcbiAgICAgICAgcHJpdmF0ZSBpbWFnZVVwbG9hZGVyU2VydmljZTogVGhlSW1hZ2VVcGxvYWRlclNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHRoZUNvbnRleHRTZXJ2aWNlOiBUaGVDb250ZXh0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIGltYWdlR3JvdXBDb21wb25lbnQ6IFRoeUltYWdlR3JvdXBDb21wb25lbnRcbiAgICApIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcbiAgICB9XG5cbiAgICBiZWZvcmVDb250ZXh0Q2hhbmdlID0gKHZhbHVlOiBTbGF0ZUVsZW1lbnRDb250ZXh0PEltYWdlRWxlbWVudD4pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgIT09IHRoaXMuZWxlbWVudCAmJiB2YWx1ZS5lbGVtZW50LnRodW1iVXJsKSB7XG4gICAgICAgICAgICBjb25zdCBleHRlcm5hbFNvdXJjZSA9IHZhbHVlLmVsZW1lbnQ/LmV4dGVybmFsU291cmNlO1xuICAgICAgICAgICAgbGV0IHRodW1iVXJsID0gdmFsdWUuZWxlbWVudC50aHVtYlVybDtcbiAgICAgICAgICAgIGxldCBvcmlnaW5VcmwgPSB2YWx1ZS5lbGVtZW50Lm9yaWdpblVybDtcblxuICAgICAgICAgICAgaWYgKCFleHRlcm5hbFNvdXJjZSAmJiB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlPy5idWlsZEltYWdlVXJsKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJVcmwgPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLmJ1aWxkSW1hZ2VVcmwodGh1bWJVcmwpO1xuICAgICAgICAgICAgICAgIG9yaWdpblVybCA9IHRoaXMuaW1hZ2VVcGxvYWRlclNlcnZpY2UuYnVpbGRJbWFnZVVybChvcmlnaW5VcmwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogdmFsdWUuZWxlbWVudC5uYW1lLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB2YWx1ZS5lbGVtZW50LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogdmFsdWUuZWxlbWVudC5oZWlnaHQsXG4gICAgICAgICAgICAgICAgYWxpZ246IHZhbHVlLmVsZW1lbnQuYWxpZ24gfHwgQWxpZ25tZW50LmxlZnQsXG4gICAgICAgICAgICAgICAgbGF5b3V0OiB2YWx1ZS5lbGVtZW50LmxheW91dCxcbiAgICAgICAgICAgICAgICByZVNpemVkOiB2YWx1ZS5lbGVtZW50LnJlU2l6ZWQgfHwgZmFsc2UsXG4gICAgICAgICAgICAgICAgc2l6ZTogdmFsdWUuZWxlbWVudC5zaXplLFxuICAgICAgICAgICAgICAgIHRodW1iVXJsLFxuICAgICAgICAgICAgICAgIG9yaWdpblVybFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2V0QmxvY2tDYXJkTGF5b3V0QXR0cigpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbGVJdGVtID0gdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdGaWxlcy5maW5kKGl0ZW0gPT4gaXRlbS51cmwgPT09IHRoaXMuZWxlbWVudC51cmwpO1xuICAgICAgICBpZiAodGhpcy5maWxlSXRlbT8uZmlsZSAmJiB0aGlzLmZpbGVJdGVtLmZpbGUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEltYWdlKHRoaXMuZmlsZUl0ZW0uZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMgPSBnZXRQbHVnaW5PcHRpb25zPEltYWdlUGx1Z2luT3B0aW9ucz4odGhpcy5lZGl0b3IsIFBsdWdpbktleXMuaW1hZ2UpO1xuICAgICAgICBpZiAodGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcgJiYgdHlwZW9mIHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zLmRpc2FibGVQcmV2aWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQcmV2aWV3ID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMuZGlzYWJsZVByZXZpZXcodGhpcy5lZGl0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUHJldmlldyA9IHRoaXMuaW1hZ2VQbHVnaW5PcHRpb25zLmRpc2FibGVQcmV2aWV3IGFzIGJvb2xlYW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbWFnZUNsaWNrKCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW1hZ2VHcm91cENvbXBvbmVudC5pbWFnZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gdGhpcy5pbWFnZURpcmVjdGl2ZSk7XG4gICAgICAgIGNvbnN0IGltYWdlR3JvdXAgPSB0aGlzLmltYWdlR3JvdXBDb21wb25lbnQuaW1hZ2VzLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3JpZ2luVXJsOiBpdGVtLnRoeU9yaWdpblNyYyxcbiAgICAgICAgICAgICAgICB0aHVtYlVybDogaXRlbS50aHlQcmV2aWV3U3JjLFxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGh5SW1hZ2VNZXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgc2l6ZTogaXRlbS50aHlJbWFnZU1ldGEuc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSkgYXMgSW1hZ2VJbmZvW107XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luVXJsLCB0aHVtYlVybCwgbmFtZSwgc2l6ZSB9ID0gdGhpcy5lbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnMucHJldmlldyh7XG4gICAgICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgICBwcmV2aWV3SW1hZ2VJbmZvOiB7XG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5VcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGltYWdlR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG91bGRPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5MYXlvdXRUb29sYmFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nob3VsZENsb3NlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlTGF5b3V0VG9vbGJhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudXBsb2FkaW5nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMubW91c2VVcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLnJlbW92ZVVwbG9hZEZpbGUodGhpcy5maWxlSXRlbSk7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGluZykge1xuICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS51cGxvYWRpbmdTdGF0dXMkLm5leHQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLm9uTW91c2VVcCQuc3Vic2NyaWJlKGUgPT4gdGhpcy5lbmREcmFnKGUpKTtcbiAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24gPSB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VXBsb2FkaW5nSXRlbXMkKClcbiAgICAgICAgICAgIC5waXBlKG1hcChmaWxlVXBsb2FkaW5nSXRlbSA9PiB0aGlzLmZpbGVJdGVtPy5maWxlICYmIGZpbGVVcGxvYWRpbmdJdGVtLmZpbmQoaXRlbSA9PiBpdGVtLmZpbGUgPT09IHRoaXMuZmlsZUl0ZW0/LmZpbGUpKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodXBsb2FkaW5nSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRpbmdJdGVtIHx8ICF1cGxvYWRpbmdJdGVtLnJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudGFnZSA9IHVwbG9hZGluZ0l0ZW0ucmVzdWx0LnVwbG9hZEZpbGUucHJvZ3Jlc3MucGVyY2VudGFnZTtcbiAgICAgICAgICAgICAgICBjb25zdCB7IHN0YXR1cyB9ID0gdXBsb2FkaW5nSXRlbS5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgLy8g5oiQ5Yqf5ZKM5aSx6LSl6YO96KaB5LiK5Lyg57uT5p2fXG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gVGh5VXBsb2FkU3RhdHVzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aGVDb250ZXh0U2VydmljZS5yZW1vdmVVcGxvYWRGaWxlKHRoaXMuZmlsZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KGZhbHNlKSwgMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldEltYWdlTm9kZXMoaW1hZ2VJbmZvOiBJbWFnZUVudHJ5KSB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBBbmd1bGFyRWRpdG9yLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0geyB0eXBlOiBFbGVtZW50S2luZHMuaW1hZ2UsIHVybDogbnVsbCwgLi4uaW1hZ2VJbmZvIH07XG4gICAgICAgIEhpc3RvcnlFZGl0b3Iud2l0aG91dFNhdmluZyh0aGlzLmVkaXRvciwgKCkgPT4gVHJhbnNmb3Jtcy5zZXROb2Rlcyh0aGlzLmVkaXRvciwgZGF0YSwgeyBhdDogcGF0aCB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgdXBsb2FkSW1hZ2UoZmlsZTogRmlsZSkge1xuICAgICAgICB0aGlzLmltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICBhbGlnbjogdGhpcy5pbWFnZUVudHJ5LmFsaWduIHx8IEFsaWdubWVudC5jZW50ZXIsXG4gICAgICAgICAgICB0aHVtYlVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnVwbG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5uZXh0KHRydWUpO1xuICAgICAgICBjb25zdCBbdXBsb2FkRmlsZUVudGl0eV0gPSBhd2FpdCB0aGlzLmltYWdlVXBsb2FkZXJTZXJ2aWNlLnVwbG9hZEZpbGVIYW5kbGUoW2ZpbGVdKS50b1Byb21pc2UoKTtcbiAgICAgICAgY29uc3QgeyB0aHVtYlVybCwgb3JpZ2luVXJsIH0gPSB1cGxvYWRGaWxlRW50aXR5O1xuICAgICAgICBjb25zdCBpbWFnZUluZm86IEltYWdlRW50cnkgPSB7XG4gICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICB0aHVtYlVybCxcbiAgICAgICAgICAgIG9yaWdpblVybCxcbiAgICAgICAgICAgIGFsaWduOiB0aGlzLmltYWdlRW50cnkuYWxpZ24gfHwgQWxpZ25tZW50LmNlbnRlcixcbiAgICAgICAgICAgIHNpemU6IGZpbGUuc2l6ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNldEltYWdlTm9kZXMoaW1hZ2VJbmZvKTtcbiAgICB9XG5cbiAgICBzdGFydERyYWcoZXZlbnQ6IE1vdXNlRXZlbnQsIGF4aXM6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5sb2FkSW1hZ2VFcnJvciB8fCAhdGhpcy5pbWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmRyYWdhYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgaW1nRWxlbWVudCA9IHRoaXMuaW1nLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGF4aXMsXG4gICAgICAgICAgICBwcmludGVyUG9zaXRpb25YOiBldmVudC5wYWdlWCxcbiAgICAgICAgICAgIHByaW50ZXJQb3NpdGlvblk6IGV2ZW50LnBhZ2VZLFxuICAgICAgICAgICAgaW50ZXJuYWxXaWR0aDogaW1nRWxlbWVudC53aWR0aCB8fCB0aGlzLmltYWdlRW50cnkud2lkdGgsXG4gICAgICAgICAgICBpbnRlcm5hbEhlaWdodDogaW1nRWxlbWVudC5oZWlnaHQgfHwgdGhpcy5pbWFnZUVudHJ5LmhlaWdodCxcbiAgICAgICAgICAgIG1heFdpZHRoOiB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLmdldEZpcnN0RWxlbWVudENoaWxkKCkuY2xpZW50V2lkdGhcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24gPSB0aGlzLnRoZUNvbnRleHRTZXJ2aWNlLm9uTW91c2VNb3ZlJC5zdWJzY3JpYmUoZSA9PiB0aGlzLm1vdXNlTW92ZUhhbmRsZShlLCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgbW91c2VNb3ZlSGFuZGxlKFxuICAgICAgICBldmVudDogTW91c2VFdmVudCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgYXhpczogc3RyaW5nO1xuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWDogbnVtYmVyO1xuICAgICAgICAgICAgcHJpbnRlclBvc2l0aW9uWTogbnVtYmVyO1xuICAgICAgICAgICAgaW50ZXJuYWxXaWR0aDogbnVtYmVyO1xuICAgICAgICAgICAgaW50ZXJuYWxIZWlnaHQ6IG51bWJlcjtcbiAgICAgICAgICAgIG1heFdpZHRoOiBudW1iZXI7XG4gICAgICAgIH1cbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2FibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgYXhpcywgcHJpbnRlclBvc2l0aW9uWCwgcHJpbnRlclBvc2l0aW9uWSwgaW50ZXJuYWxXaWR0aCwgaW50ZXJuYWxIZWlnaHQsIG1heFdpZHRoIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgaXNSZXZlcnNhbCA9IGF4aXMuaW5jbHVkZXMoJy0nKTtcblxuICAgICAgICAgICAgbGV0IG9mZnNldFggPSBldmVudC5wYWdlWCAtIHByaW50ZXJQb3NpdGlvblg7XG4gICAgICAgICAgICBsZXQgb2Zmc2V0WSA9IGV2ZW50LnBhZ2VZIC0gcHJpbnRlclBvc2l0aW9uWTtcbiAgICAgICAgICAgIGxldCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRoaXMuZWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKGlzUmV2ZXJzYWwpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXRYID0gLW9mZnNldFg7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WSA9IC1vZmZzZXRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5hbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXRYID0gb2Zmc2V0WCAqIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCd4JykpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IG9mZnNldFggKyBpbnRlcm5hbFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IG1heFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIGBsYXlvdXRgIHdoZW4gdGhlIGltYWdlIGlzIGFkanVzdGVkIHRvIHRoZSBtYXhpbXVtIHZhbHVlIHVuZGVyIHJpY2ggbWVkaWFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW1hZ2VFbnRyeT8ubGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gVGhlUXVlcmllcy5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlRWRpdG9yLnNldEltYWdlTm9kZSh0aGlzLmVkaXRvciwgcGF0aCwgeyBsYXlvdXQ6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPD0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMTAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXhpcy5pbmNsdWRlcygnbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhdGlvID0gaW50ZXJuYWxXaWR0aCAvIHdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBpbnRlcm5hbEhlaWdodCAvIHJhdGlvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXhpcy5pbmNsdWRlcygneScpKSB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0ID0gb2Zmc2V0WSArIGludGVybmFsSGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPj0gMTAwMCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAxMDAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0IDw9IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAxMDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChheGlzLmluY2x1ZGVzKCdsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmF0aW8gPSBpbnRlcm5hbEhlaWdodCAvIGhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBpbnRlcm5hbFdpZHRoIC8gcmF0aW87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuaW1hZ2VFbnRyeS5yZVNpemVkICYmIHRoaXMuaW1hZ2VFbnRyeS53aWR0aCAhPT0gd2lkdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkucmVTaXplZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmltZy5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoID0gd2lkdGg7XG4gICAgICAgICAgICB0aGlzLmltYWdlRW50cnkuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kRHJhZyhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kcmFnYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kcmFnYWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPT09IHRoaXMudGhlQ29udGV4dFNlcnZpY2UuZ2V0T3B0aW9ucygpLndpZHRoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pbWFnZUVudHJ5LndpZHRoIDw9IHRoaXMubmF0dXJhbFdpZHRoICYmXG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LndpZHRoXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmltYWdlRW50cnkud2lkdGggPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMuaW1hZ2VFbnRyeS5oZWlnaHQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvcixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IEVsZW1lbnRLaW5kcy5pbWFnZSxcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5pbWFnZUVudHJ5XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7IGF0OiB0aGlzLnNlbGVjdGlvbiB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2FuY2VsVXBsb2FkKGV2ZW50KSB7XG4gICAgICAgIFRyYW5zZm9ybXMucmVtb3ZlTm9kZXModGhpcy5lZGl0b3IsIHsgYXQ6IHRoaXMuc2VsZWN0aW9uIH0pO1xuICAgIH1cblxuICAgIGlzU2hvdWxkT3BlbigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdGhlT3B0aW9uczogeyByaWNoTWVkaWEgfVxuICAgICAgICB9ID0gdGhpcy50aGVDb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhdGhpcz8ucmVhZG9ubHkgJiZcbiAgICAgICAgICAgIHJpY2hNZWRpYSAmJlxuICAgICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5ICYmXG4gICAgICAgICAgICBUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSAmJlxuICAgICAgICAgICAgIXRoaXMudXBsb2FkaW5nICYmXG4gICAgICAgICAgICAhdGhpcy5pc09wZW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc1Nob3VsZENsb3NlKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pc09wZW4gJiZcbiAgICAgICAgICAgICh0aGlzPy5yZWFkb25seSB8fCAhdGhpcy5pc0NvbGxhcHNlZEFuZE5vblJlYWRvbmx5IHx8ICFUaGVRdWVyaWVzLmlzR2xvYmFsQ29sbGFwc2VkKHRoaXMuZWRpdG9yKSB8fCB0aGlzLnVwbG9hZGluZylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvcGVuTGF5b3V0VG9vbGJhcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmltZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMubGF5b3V0VG9vbGJhciwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmltYWdlQ29udGVudCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtcGx1Z2luLXRvb2xiYXItcG9wb3ZlcicsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0VG9vbGJhclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH0sIDE1MCk7XG4gICAgfVxuXG4gICAgY2xvc2VMYXlvdXRUb29sYmFyKCkge1xuICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgbGF5b3V0QWN0aXZlKGtleTogQWxpZ25tZW50IHwgTGF5b3V0VHlwZXMpIHtcbiAgICAgICAgY29uc3QgeyBsYXlvdXQsIGFsaWduIH0gPSB0aGlzLmltYWdlRW50cnk7XG4gICAgICAgIHJldHVybiBrZXkgJiYgKChrZXkgPT09IGFsaWduICYmICFsYXlvdXQpIHx8IGtleSA9PT0gbGF5b3V0KTtcbiAgICB9XG5cbiAgICBzZXRJbWFnZU5vZGUoZTogTW91c2VFdmVudCwgcGFydGlhbDogeyBsYXlvdXQ/OiBMYXlvdXRUeXBlczsgYWxpZ24/OiBBbGlnbm1lbnQgfSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBUaGVRdWVyaWVzLmZpbmRQYXRoKHRoaXMuZWRpdG9yLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICBJbWFnZUVkaXRvci5zZXRJbWFnZU5vZGUodGhpcy5lZGl0b3IsIHBhdGgsIHBhcnRpYWwpO1xuICAgIH1cblxuICAgIHNldEJsb2NrQ2FyZExheW91dEF0dHIoKSB7XG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZCA9IGN1cnJlbnRFbGVtZW50LmNsb3Nlc3QoJy5zbGF0ZS1ibG9jay1jYXJkJyk7XG4gICAgICAgICAgICBjb25zdCB7IGxheW91dCB9ID0gdGhpcy5lbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoYmxvY2tDYXJkICYmIGxheW91dCkge1xuICAgICAgICAgICAgICAgIGJsb2NrQ2FyZC5zZXRBdHRyaWJ1dGUoJ2xheW91dCcsIGxheW91dCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJsb2NrQ2FyZCAmJiAhbGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgYmxvY2tDYXJkLnJlbW92ZUF0dHJpYnV0ZSgnbGF5b3V0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxheW91dFRvb2xiYXJSZWY/LmdldE92ZXJsYXlSZWYoKS51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmRlbGV0ZUVsZW1lbnQodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICBvZmZzZXRZOiA0XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmltYWdlQ29udGVudClcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW2JvdHRvbVBvc2l0aW9uXSk7XG4gICAgfVxuXG4gICAgaW1hZ2VMb2FkZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGltZyA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICB0aGlzLm5hdHVyYWxXaWR0aCA9IGltZy5uYXR1cmFsV2lkdGg7XG4gICAgICAgIHRoaXMubmF0dXJhbEhlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xuICAgIH1cblxuICAgIGltYWdlRXJyb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGltZyA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICBjb25zdCBlcnJvckltYWdlVXJsID0gdGhpcy5pbWFnZVBsdWdpbk9wdGlvbnM/LmVycm9ySW1hZ2VVcmw7XG4gICAgICAgIGlmICghdGhpcy5sb2FkSW1hZ2VFcnJvciAmJiBlcnJvckltYWdlVXJsKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0eXBlb2YgZXJyb3JJbWFnZVVybCA9PT0gJ2Z1bmN0aW9uJyA/IGVycm9ySW1hZ2VVcmwodGhpcy5lZGl0b3IpIDogZXJyb3JJbWFnZVVybDtcbiAgICAgICAgICAgIHRoaXMubG9hZEltYWdlRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUHJldmlldyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmltYWdlQ29udGVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RoZS1pbWFnZS1lcnJvcicpO1xuICAgICAgICAgICAgaW1nLnNyYyA9IHVybDtcbiAgICAgICAgfVxuICAgICAgICBpbWcub25lcnJvciA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8g57uE5Lu25bqTIGRpYWxvZyDlvLnlh7rml7bvvIzkvJrorrDlvZXlvZPliY3nmoTnhKbngrnjgILpmLvmraIgbW91c2Vkb3duIOm7mOiupOihjOS4uu+8jOS9v+W+l+WbvueJh+WOn+acrOeahCBjbGljayDkuovku7bog73ojrflj5bliLDmraPnoa7nmoTnhKbngrnjgIJcbiAgICBwcmV2ZW50RGVmYXVsdChldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIiwiPHNsYXRlLWNoaWxkcmVuIFtjaGlsZHJlbl09XCJjaGlsZHJlblwiIFtjb250ZXh0XT1cImNoaWxkcmVuQ29udGV4dFwiIFt2aWV3Q29udGV4dF09XCJ2aWV3Q29udGV4dFwiPjwvc2xhdGUtY2hpbGRyZW4+XG5cbjxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIFtzdHlsZS50ZXh0QWxpZ25dPVwiaW1hZ2VFbnRyeS5hbGlnblwiPlxuICA8ZGl2ICNpbWFnZUNvbnRlbnQgKm5nSWY9XCJpbWFnZUVudHJ5LnRodW1iVXJsXCIgY2xhc3M9XCJpbWFnZS1jb250ZW50XCIgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cIiFzZWxlY3Rpb25cIj5cbiAgICA8aW1nXG4gICAgICAjaW1nXG4gICAgICB0aHlJbWFnZVxuICAgICAgY2xhc3M9XCJtYWluLWltYWdlXCJcbiAgICAgIFtjbGFzcy5pbWFnZS1jb2xsYXBzZWRdPVwic2VsZWN0aW9uICYmICF1cGxvYWRpbmdcIlxuICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgucHgnOiBpbWFnZUJpbmRpbmdXaWR0aCB9XCJcbiAgICAgIFthbHRdPVwiaW1hZ2VFbnRyeS5uYW1lXCJcbiAgICAgIFt0aHlTcmNdPVwiaW1hZ2VFbnRyeS50aHVtYlVybFwiXG4gICAgICBbdGh5UHJldmlld1NyY109XCJpbWFnZUVudHJ5LnRodW1iVXJsXCJcbiAgICAgIFt0aHlPcmlnaW5TcmNdPVwiaW1hZ2VFbnRyeS5vcmlnaW5VcmxcIlxuICAgICAgW3RoeURpc2FibGVQcmV2aWV3XT1cImRpc2FibGVQcmV2aWV3XCJcbiAgICAgIFt0aHlJbWFnZU1ldGFdPVwieyBuYW1lOiBpbWFnZUVudHJ5Lm5hbWUsIHNpemU6IGltYWdlRW50cnkuc2l6ZSB9XCJcbiAgICAgIChsb2FkKT1cImltYWdlTG9hZGVkKCRldmVudClcIlxuICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCJcbiAgICAgIChlcnJvcik9XCJpbWFnZUVycm9yKCRldmVudClcIlxuICAgICAgKGNsaWNrKT1cImltYWdlQ2xpY2soJGV2ZW50KVwiXG4gICAgLz5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNDb2xsYXBzZWRBbmROb25SZWFkb25seVwiIGNsYXNzPVwiaW1hZ2UtcHJvZmlsZVwiIFtjbGFzcy5vdXRsaW5lXT1cInNlbGVjdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkSW1hZ2VFcnJvclwiPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IHRvcFwiPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKG1vdXNlZG93bik9XCJzdGFydERyYWcoJGV2ZW50LCAneGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciByaWdodCB0b3BcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIChtb3VzZWRvd24pPVwic3RhcnREcmFnKCRldmVudCwgJ3hsJylcIiBjbGFzcz1cImltYWdlLXBvaW50ZXIgcmlnaHQgYm90dG9tXCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiAobW91c2Vkb3duKT1cInN0YXJ0RHJhZygkZXZlbnQsICcteGwnKVwiIGNsYXNzPVwiaW1hZ2UtcG9pbnRlciBsZWZ0IGJvdHRvbVwiPjwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ1cGxvYWRpbmdcIiBjbGFzcz1cInVwbG9hZGluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZGluZy1wZXJjZW50YWdlXCI+XG4gICAgICAgIDx0aHktcHJvZ3Jlc3MgdGh5VHlwZT1cInByaW1hcnlcIiBbdGh5VmFsdWVdPVwicGVyY2VudGFnZVwiIHRoeVNpemU9XCJzbVwiPjwvdGh5LXByb2dyZXNzPlxuICAgICAgICA8dGh5LWljb24gKGNsaWNrKT1cImNhbmNlbFVwbG9hZCgkZXZlbnQpXCIgdGh5SWNvbk5hbWU9XCJjbG9zZS1jaXJjbGUtYm9sZC1maWxsXCIgdGh5SWNvbkxlZ2dpbmc9XCJ0cnVlXCI+IDwvdGh5LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIXVwbG9hZGluZ1wiIGNsYXNzPVwibGF5ZXJcIiBbY2xhc3MucmVhZG9ubHldPVwicmVhZG9ubHlcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaW1hZ2VFbnRyeS50aHVtYlVybFwiIGNsYXNzPVwiaW1hZ2UtbG9hZGluZyBjdXJzb3ItcG9pbnRlclwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCI+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiaW1hZ2VcIj48L3RoeS1pY29uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xheW91dFRvb2xiYXI+XG4gIDx0aHktYWN0aW9ucyB0aHlTaXplPVwieHhzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXlvdXRPcHRpb25zXCI+XG4gICAgICA8YVxuICAgICAgICAqbmdJZj1cIml0ZW0ua2V5ICE9PSAnc3BsaXQnXCJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICAgIHRoeUFjdGlvblxuICAgICAgICBbdGh5VHlwZV09XCJpdGVtLmtleSA9PT0gJ3JlbW92ZScgPyAnZGFuZ2VyJyA6ICdwcmltYXJ5J1wiXG4gICAgICAgIFt0aHlBY3Rpb25JY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgIFt0aHlBY3Rpb25BY3RpdmVdPVwibGF5b3V0QWN0aXZlKGl0ZW0ua2V5KVwiXG4gICAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAgIHRoeVRvb2x0aXBQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAobW91c2Vkb3duKT1cIml0ZW0/LmhhbmRsZSgkZXZlbnQsIGl0ZW0ua2V5KVwiXG4gICAgICA+PC9hPlxuICAgICAgPHRoeS1kaXZpZGVyICpuZ0lmPVwiaXRlbS5rZXkgPT09ICdzcGxpdCdcIiBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCIgdGh5Q29sb3I9XCJsaWdodFwiPjwvdGh5LWRpdmlkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGh5LWFjdGlvbnM+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -21,11 +21,11 @@ export class TheLinkHoverComponent {
|
|
|
21
21
|
event.stopPropagation();
|
|
22
22
|
}
|
|
23
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheLinkHoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheLinkHoverComponent, selector: "the-link-hover", inputs: { link: "link", dom: "dom", editHandle: "editHandle", deleteHandle: "deleteHandle" }, ngImport: i0, template: "<div class=\"link-hover-card px-1\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate mx-2\">\n {{ link }}\n </a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"edit\" thePreventDefault (click)=\"editLink($event)\"></a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"unlink-insert\" thePreventDefault (click)=\"removeLink($event)\"></a>\n</div>\n", dependencies: [{ kind: "component", type: i1.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i2.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i3.ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }] }); }
|
|
24
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheLinkHoverComponent, selector: "the-link-hover", inputs: { link: "link", dom: "dom", editHandle: "editHandle", deleteHandle: "deleteHandle" }, ngImport: i0, template: "<div class=\"link-hover-card px-1\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate mx-2\">\n {{ link }}\n </a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"edit\" thePreventDefault (click)=\"editLink($event)\"></a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"unlink-insert\" thePreventDefault (click)=\"removeLink($event)\"></a>\n</div>\n", dependencies: [{ kind: "component", type: i1.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i2.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i3.ThePreventDefaultDirective, selector: "[thePreventDefault]", exportAs: ["thePreventDefault"] }] }); }
|
|
25
25
|
}
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheLinkHoverComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'the-link-hover', template: "<div class=\"link-hover-card px-1\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate mx-2\">\n {{ link }}\n </a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"edit\" thePreventDefault (click)=\"editLink($event)\"></a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"unlink-insert\" thePreventDefault (click)=\"removeLink($event)\"></a>\n</div>\n" }]
|
|
28
|
+
args: [{ selector: 'the-link-hover', template: "<div class=\"link-hover-card px-1\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate mx-2\">\n {{ link }}\n </a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"edit\" thePreventDefault (click)=\"editLink($event)\"></a>\n <thy-divider class=\"mx-2\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" thyAction thyActionIcon=\"unlink-insert\" thePreventDefault (click)=\"removeLink($event)\"></a>\n</div>\n" }]
|
|
29
29
|
}], ctorParameters: function () { return []; }, propDecorators: { link: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], dom: [{
|
|
@@ -35,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
35
35
|
}], deleteHandle: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}] } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1ob3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2hvdmVyL2xpbmstaG92ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvbGluay9ob3Zlci9saW5rLWhvdmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFNNUQsTUFBTSxPQUFPLHFCQUFxQjtJQVc5QjtRQVZTLFNBQUksR0FBRyxFQUFFLENBQUM7UUFRbkIsZ0JBQVcsR0FBRyxjQUFjLENBQUM7SUFFZCxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRWIsUUFBUSxDQUFDLEtBQWlCO1FBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBaUI7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs4R0F6QlEscUJBQXFCO2tHQUFyQixxQkFBcUIsb0pDUGxDLDBtQkFTQTs7MkZERmEscUJBQXFCO2tCQUpqQyxTQUFTOytCQUNJLGdCQUFnQjswRUFJakIsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFfVEFHX1JFTF9BVFRSIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2RlZmF1bHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS1saW5rLWhvdmVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGluay1ob3Zlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlua0hvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBsaW5rID0gJyc7XG5cbiAgICBASW5wdXQoKSBkb206IEhUTUxFbGVtZW50O1xuXG4gICAgQElucHV0KCkgZWRpdEhhbmRsZTogKCkgPT4gdm9pZDtcblxuICAgIEBJbnB1dCgpIGRlbGV0ZUhhbmRsZTogKCkgPT4gdm9pZDtcblxuICAgIGFUYWdSZWxBdHRyID0gQV9UQUdfUkVMX0FUVFI7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBlZGl0TGluayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmVkaXRIYW5kbGUoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTGluayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmRlbGV0ZUhhbmRsZSgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGluay1ob3Zlci1jYXJkIHB4LTFcIj5cbiAgPGEgcmVhZG9ubHkgaHJlZj1cInt7IGxpbmsgfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJ7eyBhVGFnUmVsQXR0ciB9fVwiIGNsYXNzPVwiaG92ZXItY29udHJvbC1wbGFpbnRleHQgdGV4dC10cnVuY2F0ZSBteC0yXCI+XG4gICAge3sgbGluayB9fVxuICA8L2E+XG4gIDx0aHktZGl2aWRlciBjbGFzcz1cIm14LTJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5QWN0aW9uIHRoeUFjdGlvbkljb249XCJlZGl0XCIgdGhlUHJldmVudERlZmF1bHQgKGNsaWNrKT1cImVkaXRMaW5rKCRldmVudClcIj48L2E+XG4gIDx0aHktZGl2aWRlciBjbGFzcz1cIm14LTJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5QWN0aW9uIHRoeUFjdGlvbkljb249XCJ1bmxpbmstaW5zZXJ0XCIgdGhlUHJldmVudERlZmF1bHQgKGNsaWNrKT1cInJlbW92ZUxpbmsoJGV2ZW50KVwiPjwvYT5cbjwvZGl2PlxuIl19
|
|
@@ -171,11 +171,11 @@ export class TheTableToolbarComponent {
|
|
|
171
171
|
});
|
|
172
172
|
}
|
|
173
173
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i1.ThyPopover }, { token: i1.ThyPopoverRef }, { token: i2.ThyNotifyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
174
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i6.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i7.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i7.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i8.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i9.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
|
|
174
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", tableElement: "tableElement" }, ngImport: i0, template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: i6.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: i7.ThyActionComponent, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "component", type: i7.ThyActionsComponent, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: i8.ThyDividerComponent, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: i9.ThyColorPickerDirective, selector: "[thyColorPicker]", inputs: ["thyOffset", "thyHasBackdrop", "thyDefaultColor", "thyTransparentColorSelectable", "thyPresetColors", "thyPlacement", "thyTrigger", "thyShowDelay", "thyHideDelay"], outputs: ["thyPanelOpen", "thyPanelClose"] }] }); }
|
|
175
175
|
}
|
|
176
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
|
|
177
177
|
type: Component,
|
|
178
|
-
args: [{ selector: 'the-table-toolbar', template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n" }]
|
|
178
|
+
args: [{ selector: 'the-table-toolbar', template: "<thy-actions thySize=\"xxs\">\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a\n *ngIf=\"item.visibility\"\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n (mousedown)=\"item.actionHandle()\"\n ></a>\n </ng-container>\n <thy-divider *ngIf=\"hasDivider\" class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"> </thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\"\n thyColorPicker\n [(ngModel)]=\"selectedColor\"\n (ngModelChange)=\"changeColor($event)\"\n (mousedown)=\"openColorPanel($event)\"\n thyPlacement=\"bottomLeft\"\n [thyHasBackdrop]=\"false\"\n >\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && !isColumnEqual\"\n thyAction\n thyTooltip=\"\u5217\u7B49\u5BBD\"\n (mousedown)=\"setEquallyColumnHandle($event)\"\n >\n <thy-icon thyIconName=\"table-column-equal-width\"></thy-icon>\n </a>\n <a\n href=\"javascript:;\"\n *ngIf=\"tableStore.isSelectedTable && tableOptions?.showFullscreen\"\n thyAction\n thyTooltip=\"\u5168\u5C4F\"\n (mousedown)=\"setFullscreen($event)\"\n >\n <thy-icon thyIconName=\"arrows-alt\"></thy-icon>\n </a>\n <a\n *ngIf=\"tableStore.isSelectedTable && !tableStore?.isFullscreen\"\n class=\"fullscreen-hidden\"\n href=\"javascript:;\"\n thyAction\n thyActionIcon=\"copy\"\n thyTooltip=\"\u590D\u5236\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <ng-container *ngIf=\"tableStore.isSelectedTable\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a href=\"javascript:;\" class=\"link-with-down\" thyAction (mousedown)=\"mousedown($event)\" (click)=\"openTableOptionMenu($event)\">\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon class=\"font-size-sm text-desc ml-1\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n </ng-container>\n <ng-container *ngIf=\"tableStore?.isFullscreen ? deleteIcon && !tableStore.isSelectedTable : deleteIcon\">\n <thy-divider class=\"mr-2 ml-1 align-self-center\" [thyVertical]=\"true\" thyColor=\"light\"></thy-divider>\n <a\n href=\"javascript:;\"\n thyAction\n thyType=\"danger\"\n [thyActionIcon]=\"deleteIcon\"\n [thyTooltip]=\"iconName\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n </ng-container>\n</thy-actions>\n" }]
|
|
179
179
|
}], ctorParameters: function () { return [{ type: i1.ThyPopover }, { type: i1.ThyPopoverRef }, { type: i2.ThyNotifyService }]; }, propDecorators: { tableStore: [{
|
|
180
180
|
type: Input
|
|
181
181
|
}], tableElement: [{
|
|
@@ -187,4 +187,4 @@ export var DeleteIcon;
|
|
|
187
187
|
DeleteIcon["table-delete-columns"] = "table-delete-columns";
|
|
188
188
|
DeleteIcon["trash"] = "trash";
|
|
189
189
|
})(DeleteIcon || (DeleteIcon = {}));
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUlwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEtBQUssYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1B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cEIsS0FBSzs7QUE2S1YsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNsQixxREFBeUMsQ0FBQTtJQUN6QywyREFBK0MsQ0FBQTtJQUMvQyw2QkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3BsaXQtY2VsbCc7XG5pbXBvcnQgeyBzZXRDZWxsTWVudVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaXNSZWN0YW5ndWxhckluVGFibGVDZWxscyB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXNlbGVjdGlvbi1pbi10YWJsZSc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uLy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi8uLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IGNvcHlOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS10YWJsZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBtZXJnZUNlbGwgfSBmcm9tICcuLi8uLi91dGlscy9tZXJnZS1jZWxsJztcbmltcG9ydCB7IGdldFNlbGVjdGVkQ2VsbCB9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLWVudHJ5JztcbmltcG9ydCB7IHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtY2VsbHMtYmFja2dyb3VuZC1jb2xvcic7XG5pbXBvcnQgeyByZW1vdmVDb2x1bW5PclJvd3MgfSBmcm9tICcuLi8uLi91dGlscy9yZW1vdmUtcm93LWNvbHVtbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHNlbGVjdGVkQ29sb3I6IHN0cmluZztcblxuICAgIGRlbGV0ZUljb246IERlbGV0ZUljb247XG5cbiAgICBpY29uTmFtZTogc3RyaW5nO1xuXG4gICAgaXNSZWN0YW5nbGU6IGJvb2xlYW47XG5cbiAgICBpc0NvbHVtbkVxdWFsOiBib29sZWFuO1xuXG4gICAgdGFibGVDaGFuZ2VTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgdGFibGVFbGVtZW50OiBUYWJsZUVsZW1lbnQ7XG5cbiAgICBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmVkaXRvcjtcbiAgICB9XG5cbiAgICBjZWxsTWVudUxpc3Q6IE1lbnVFbnRpdHlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+WQiOW5tuWNleWFg+agvCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIG1lcmdlQ2VsbCh0aGlzLmVkaXRvciwgdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3NwbGl0LWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICfmi4bliIbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldCBoYXNEaXZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsTWVudUxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS52aXNpYmlsaXR5KS5sZW5ndGggPiAxO1xuICAgIH1cblxuICAgIGdldCB0YWJsZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQbHVnaW5PcHRpb25zKHRoaXMuZWRpdG9yLCBQbHVnaW5LZXlzLnRhYmxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVUb29sYmFyQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSB0aHlOb3RpZnlTZXJ2aWNlOiBUaHlOb3RpZnlTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaXNDb2x1bW5FcXVhbCA9IHRoaXMudGFibGVFbGVtZW50Py5jb2x1bW5zPy5ldmVyeShjb2wgPT4gdGhpcy50YWJsZUVsZW1lbnQuY29sdW1uc1swXS53aWR0aCA9PT0gY29sLndpZHRoKSA/PyB0cnVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLnRhYmxlU3RvcmUuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLCBpc1NlbGVjdGVkVGFibGU6IHRoaXMudGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgfTtcbiAgICAgICAgdGhpcy5pc1JlY3RhbmdsZSA9IGlzUmVjdGFuZ3VsYXJJblRhYmxlQ2VsbHModGhpcy5lZGl0b3IsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0RGVsZXRlSWNvbigpO1xuICAgICAgICBzZXRDZWxsTWVudVZpc2liaWxpdHkodGhpcy5lZGl0b3IsIHRoaXMuY2VsbE1lbnVMaXN0LCB0YWJsZUluZm8pO1xuICAgICAgICBjb25zdCBjZWxsID0gZ2V0U2VsZWN0ZWRDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gY2VsbCA/IGNlbGwuYmFja2dyb3VuZENvbG9yIDogJyc7XG5cbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZUVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy50YWJsZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhYmxlQ2hhbmdlU3Vic2NyaWJlciA9IHRoaXMudGFibGVTdG9yZS50YWJsZUNoYW5nZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gKFRoZVF1ZXJpZXMuZ2V0Tm9kZSh0aGlzLmVkaXRvciwgcGF0aCkgYXMgVGFibGVFbGVtZW50KS5jb2x1bW5zO1xuICAgICAgICAgICAgdGhpcy5pc0NvbHVtbkVxdWFsID0gY29sdW1ucz8uZXZlcnkoY29sID0+IGNvbHVtbnNbMF0ud2lkdGggPT09IGNvbC53aWR0aCkgPz8gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudGFibGVDaGFuZ2VTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHNldERlbGV0ZUljb24oKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzSW5kZXgsIHNlbGVjdGVkQ29sdW1uc0luZGV4IH0gPSB0aGlzLnRhYmxlU3RvcmU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBEZWxldGVJY29uWyd0YWJsZS1kZWxldGUtcm93cyddO1xuICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTmlbTooYwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLWNvbHVtbnMnXTtcbiAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk5pW05YiXJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvbi50cmFzaDtcbiAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk6KGo5qC8JztcbiAgICAgICAgfVxuICAgICAgICAvLyDmu6HotrPlt7LpgInkuK3mlbTooYzmiJbogIXmlbTliJdcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZFdob2xlUm93T3JDb2x1bW5DZWxsID1cbiAgICAgICAgICAgIHNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCAqIHBvcy5nZXRXaWR0aCgpID09PSBzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoIHx8XG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggKiBwb3MuZ2V0SGVpZ2h0KCkgPT09IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNTZWxlY3RlZFdob2xlUm93T3JDb2x1bW5DZWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZW1vdmVDb2x1bW5PclJvd3ModGhpcy5lZGl0b3IsIHRoaXMudGFibGVTdG9yZSk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlckRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvbkxlYXZlRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgfVxuXG4gICAgb3BlbkNvbG9yUGFuZWwoZTogTW91c2VFdmVudCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3IobmV3Q29sb3I6IHN0cmluZykge1xuICAgICAgICBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKHRoaXMuZWRpdG9yLCBuZXdDb2xvciwgdGhpcy50YWJsZVN0b3JlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gbmV3Q29sb3I7XG4gICAgfVxuXG4gICAgc2V0RnVsbHNjcmVlbihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgdGhpcy50YWJsZU9wdGlvbnMuc2V0RnVsbHNjcmVlbih0aGlzLmVkaXRvciwgZXZlbnQsIHRoaXMudGFibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25Db3B5KGU6IEV2ZW50KSB7XG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMudGFibGVFbGVtZW50LCB0aGlzLnRoeU5vdGlmeVNlcnZpY2UpO1xuICAgIH1cblxuICAgIHNldEVxdWFsbHlDb2x1bW5IYW5kbGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMudGFibGVFbGVtZW50LmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IHN1bVdpZHRoID0gY29sdW1ucy5yZWR1Y2UoKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWUgKyBjdXJyZW50VmFsdWUud2lkdGg7XG4gICAgICAgIH0sIDApO1xuICAgICAgICBjb25zdCBlcXVhbENvbHVtbnMgPSBjb2x1bW5zLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyB3aWR0aDogc3VtV2lkdGggLyBjb2x1bW5zLmxlbmd0aCB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5lZGl0b3IsIHsgY29sdW1uczogZXF1YWxDb2x1bW5zIH0sIHRoaXMudGFibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvcGVuVGFibGVPcHRpb25NZW51KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50aHlQb3BvdmVyLm9wZW4oVGhlVGFibGVPcHRpb25zQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICdhY3RpdmUnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RhYmxlLW9wdGlvbnMtcGFubmVsJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIERlbGV0ZUljb24ge1xuICAgICd0YWJsZS1kZWxldGUtcm93cycgPSAndGFibGUtZGVsZXRlLXJvd3MnLFxuICAgICd0YWJsZS1kZWxldGUtY29sdW1ucycgPSAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICd0cmFzaCcgPSAndHJhc2gnXG59XG4iLCI8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNlbGxNZW51TGlzdFwiPlxuICAgIDxhXG4gICAgICAqbmdJZj1cIml0ZW0udmlzaWJpbGl0eVwiXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAobW91c2Vkb3duKT1cIml0ZW0uYWN0aW9uSGFuZGxlKClcIlxuICAgID48L2E+XG4gIDwvbmctY29udGFpbmVyPlxuICA8dGh5LWRpdmlkZXIgKm5nSWY9XCJoYXNEaXZpZGVyXCIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiPiA8L3RoeS1kaXZpZGVyPlxuICA8YVxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgIHRoeUFjdGlvblxuICAgIHRoeVRvb2x0aXA9XCLljZXlhYPmoLzog4zmma9cIlxuICAgIHRoeUNvbG9yUGlja2VyXG4gICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbG9yXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VDb2xvcigkZXZlbnQpXCJcbiAgICAobW91c2Vkb3duKT1cIm9wZW5Db2xvclBhbmVsKCRldmVudClcIlxuICAgIHRoeVBsYWNlbWVudD1cImJvdHRvbUxlZnRcIlxuICAgIFt0aHlIYXNCYWNrZHJvcF09XCJmYWxzZVwiXG4gID5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJiYWNrZ3JvdW5kLXR0XCIgdGh5SWNvblR5cGU9XCJ0d290b25lXCIgW3RoeVR3b3RvbmVDb2xvcl09XCJzZWxlY3RlZENvbG9yXCI+PC90aHktaWNvbj5cbiAgPC9hPlxuICA8YVxuICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICpuZ0lmPVwidGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgIWlzQ29sdW1uRXF1YWxcIlxuICAgIHRoeUFjdGlvblxuICAgIHRoeVRvb2x0aXA9XCLliJfnrYnlrr1cIlxuICAgIChtb3VzZWRvd24pPVwic2V0RXF1YWxseUNvbHVtbkhhbmRsZSgkZXZlbnQpXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cInRhYmxlLWNvbHVtbi1lcXVhbC13aWR0aFwiPjwvdGh5LWljb24+XG4gIDwvYT5cbiAgPGFcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlICYmIHRhYmxlT3B0aW9ucz8uc2hvd0Z1bGxzY3JlZW5cIlxuICAgIHRoeUFjdGlvblxuICAgIHRoeVRvb2x0aXA9XCLlhajlsY9cIlxuICAgIChtb3VzZWRvd24pPVwic2V0RnVsbHNjcmVlbigkZXZlbnQpXCJcbiAgPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFycm93cy1hbHRcIj48L3RoeS1pY29uPlxuICA8L2E+XG4gIDxhXG4gICAgKm5nSWY9XCJ0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSAmJiAhdGFibGVTdG9yZT8uaXNGdWxsc2NyZWVuXCJcbiAgICBjbGFzcz1cImZ1bGxzY3JlZW4taGlkZGVuXCJcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICB0aHlBY3Rpb25cbiAgICB0aHlBY3Rpb25JY29uPVwiY29weVwiXG4gICAgdGh5VG9vbHRpcD1cIuWkjeWItlwiXG4gICAgKG1vdXNlZG93bik9XCJvbkNvcHkoJGV2ZW50KVwiXG4gID48L2E+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZVwiPlxuICAgIDx0aHktZGl2aWRlciBjbGFzcz1cIm1yLTIgbWwtMSBhbGlnbi1zZWxmLWNlbnRlclwiIFt0aHlWZXJ0aWNhbF09XCJ0cnVlXCI+PC90aHktZGl2aWRlcj5cbiAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJsaW5rLXdpdGgtZG93blwiIHRoeUFjdGlvbiAobW91c2Vkb3duKT1cIm1vdXNlZG93bigkZXZlbnQpXCIgKGNsaWNrKT1cIm9wZW5UYWJsZU9wdGlvbk1lbnUoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4+6KGo5qC86YCJ6aG5PC9zcGFuPlxuICAgICAgPHRoeS1pY29uIGNsYXNzPVwiZm9udC1zaXplLXNtIHRleHQtZGVzYyBtbC0xXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVTdG9yZT8uaXNGdWxsc2NyZWVuID8gZGVsZXRlSWNvbiAmJiAhdGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgOiBkZWxldGVJY29uXCI+XG4gICAgPHRoeS1kaXZpZGVyIGNsYXNzPVwibXItMiBtbC0xIGFsaWduLXNlbGYtY2VudGVyXCIgW3RoeVZlcnRpY2FsXT1cInRydWVcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICBbdGh5QWN0aW9uSWNvbl09XCJkZWxldGVJY29uXCJcbiAgICAgIFt0aHlUb29sdGlwXT1cImljb25OYW1lXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJvbkVudGVyRGVsZXRlKCRldmVudClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZURlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGh5LWFjdGlvbnM+XG4iXX0=
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUlwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEtBQUssYUFBYSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1B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cEIsS0FBSzs7QUE2S1YsTUFBTSxDQUFOLElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNsQixxREFBeUMsQ0FBQTtJQUN6QywyREFBK0MsQ0FBQTtJQUMvQyw2QkFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsVUFBVSxLQUFWLFVBQVUsUUFJckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgc3BsaXRDZWxsIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3BsaXQtY2VsbCc7XG5pbXBvcnQgeyBzZXRDZWxsTWVudVZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzLCBUaGVFZGl0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGdldFBsdWdpbk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlJztcbmltcG9ydCB7IFRhYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgaXNSZWN0YW5ndWxhckluVGFibGVDZWxscyB9IGZyb20gJy4uLy4uL3V0aWxzL2lzLXNlbGVjdGlvbi1pbi10YWJsZSc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uLy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi8uLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGh5Tm90aWZ5U2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvbm90aWZ5JztcbmltcG9ydCB7IGNvcHlOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlVGFibGVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS10YWJsZS1wb3NpdGlvbic7XG5pbXBvcnQgeyBtZXJnZUNlbGwgfSBmcm9tICcuLi8uLi91dGlscy9tZXJnZS1jZWxsJztcbmltcG9ydCB7IGdldFNlbGVjdGVkQ2VsbCB9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxlLWVudHJ5JztcbmltcG9ydCB7IHNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtY2VsbHMtYmFja2dyb3VuZC1jb2xvcic7XG5pbXBvcnQgeyByZW1vdmVDb2x1bW5PclJvd3MgfSBmcm9tICcuLi8uLi91dGlscy9yZW1vdmUtcm93LWNvbHVtbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHNlbGVjdGVkQ29sb3I6IHN0cmluZztcblxuICAgIGRlbGV0ZUljb246IERlbGV0ZUljb247XG5cbiAgICBpY29uTmFtZTogc3RyaW5nO1xuXG4gICAgaXNSZWN0YW5nbGU6IGJvb2xlYW47XG5cbiAgICBpc0NvbHVtbkVxdWFsOiBib29sZWFuO1xuXG4gICAgdGFibGVDaGFuZ2VTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb247XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgdGFibGVFbGVtZW50OiBUYWJsZUVsZW1lbnQ7XG5cbiAgICBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmVkaXRvcjtcbiAgICB9XG5cbiAgICBjZWxsTWVudUxpc3Q6IE1lbnVFbnRpdHlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+WQiOW5tuWNleWFg+agvCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBmYWxzZSxcbiAgICAgICAgICAgIGljb246ICd0YWJsZS1tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIG1lcmdlQ2VsbCh0aGlzLmVkaXRvciwgdGhpcy50YWJsZVN0b3JlLmdldFNlbGVjdGVkQ2VsbFBvc2l0aW9ucygpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuY2xlYXJTZWxlY3RlZENlbGxzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3NwbGl0LWNlbGxzJyxcbiAgICAgICAgICAgIG5hbWU6ICfmi4bliIbljZXlhYPmoLwnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldCBoYXNEaXZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jZWxsTWVudUxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS52aXNpYmlsaXR5KS5sZW5ndGggPiAxO1xuICAgIH1cblxuICAgIGdldCB0YWJsZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiBnZXRQbHVnaW5PcHRpb25zKHRoaXMuZWRpdG9yLCBQbHVnaW5LZXlzLnRhYmxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVUb29sYmFyQ29tcG9uZW50PixcbiAgICAgICAgcHJpdmF0ZSB0aHlOb3RpZnlTZXJ2aWNlOiBUaHlOb3RpZnlTZXJ2aWNlXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaXNDb2x1bW5FcXVhbCA9IHRoaXMudGFibGVFbGVtZW50Py5jb2x1bW5zPy5ldmVyeShjb2wgPT4gdGhpcy50YWJsZUVsZW1lbnQuY29sdW1uc1swXS53aWR0aCA9PT0gY29sLndpZHRoKSA/PyB0cnVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZENlbGxQb3NpdGlvbnMgPSB0aGlzLnRhYmxlU3RvcmUuZ2V0U2VsZWN0ZWRDZWxsUG9zaXRpb25zKCk7XG4gICAgICAgIGNvbnN0IHRhYmxlSW5mbyA9IHsgc2VsZWN0ZWRDZWxsUG9zaXRpb25zLCBpc1NlbGVjdGVkVGFibGU6IHRoaXMudGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgfTtcbiAgICAgICAgdGhpcy5pc1JlY3RhbmdsZSA9IGlzUmVjdGFuZ3VsYXJJblRhYmxlQ2VsbHModGhpcy5lZGl0b3IsIHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyk7XG4gICAgICAgIHRoaXMuc2V0RGVsZXRlSWNvbigpO1xuICAgICAgICBzZXRDZWxsTWVudVZpc2liaWxpdHkodGhpcy5lZGl0b3IsIHRoaXMuY2VsbE1lbnVMaXN0LCB0YWJsZUluZm8pO1xuICAgICAgICBjb25zdCBjZWxsID0gZ2V0U2VsZWN0ZWRDZWxsKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gY2VsbCA/IGNlbGwuYmFja2dyb3VuZENvbG9yIDogJyc7XG5cbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZUVkaXRvci5maW5kUGF0aCh0aGlzLmVkaXRvciwgdGhpcy50YWJsZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhYmxlQ2hhbmdlU3Vic2NyaWJlciA9IHRoaXMudGFibGVTdG9yZS50YWJsZUNoYW5nZSgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW5zID0gKFRoZVF1ZXJpZXMuZ2V0Tm9kZSh0aGlzLmVkaXRvciwgcGF0aCkgYXMgVGFibGVFbGVtZW50KS5jb2x1bW5zO1xuICAgICAgICAgICAgdGhpcy5pc0NvbHVtbkVxdWFsID0gY29sdW1ucz8uZXZlcnkoY29sID0+IGNvbHVtbnNbMF0ud2lkdGggPT09IGNvbC53aWR0aCkgPz8gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudGFibGVDaGFuZ2VTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHNldERlbGV0ZUljb24oKSB7XG4gICAgICAgIGNvbnN0IHsgc2VsZWN0ZWRSb3dzSW5kZXgsIHNlbGVjdGVkQ29sdW1uc0luZGV4IH0gPSB0aGlzLnRhYmxlU3RvcmU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucyA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxQb3NpdGlvbnMoKTtcbiAgICAgICAgY29uc3QgcG9zID0gY3JlYXRlVGFibGVQb3NpdGlvbih0aGlzLmVkaXRvcik7XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBEZWxldGVJY29uWyd0YWJsZS1kZWxldGUtcm93cyddO1xuICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTmlbTooYwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDb2x1bW5zSW5kZXgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLWNvbHVtbnMnXTtcbiAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk5pW05YiXJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvbi50cmFzaDtcbiAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk6KGo5qC8JztcbiAgICAgICAgfVxuICAgICAgICAvLyDmu6HotrPlt7LpgInkuK3mlbTooYzmiJbogIXmlbTliJdcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZFdob2xlUm93T3JDb2x1bW5DZWxsID1cbiAgICAgICAgICAgIHNlbGVjdGVkUm93c0luZGV4Lmxlbmd0aCAqIHBvcy5nZXRXaWR0aCgpID09PSBzZWxlY3RlZENlbGxQb3NpdGlvbnMubGVuZ3RoIHx8XG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbnNJbmRleC5sZW5ndGggKiBwb3MuZ2V0SGVpZ2h0KCkgPT09IHNlbGVjdGVkQ2VsbFBvc2l0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmICghaXNTZWxlY3RlZFdob2xlUm93T3JDb2x1bW5DZWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZUljb24gPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZW1vdmVDb2x1bW5PclJvd3ModGhpcy5lZGl0b3IsIHRoaXMudGFibGVTdG9yZSk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhclNlbGVjdGVkQ2VsbHMoKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgb25FbnRlckRlbGV0ZShldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0RGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvbkxlYXZlRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5jbGVhckRhbmdlcm91c0NlbGxzKCk7XG4gICAgfVxuXG4gICAgb3BlbkNvbG9yUGFuZWwoZTogTW91c2VFdmVudCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3IobmV3Q29sb3I6IHN0cmluZykge1xuICAgICAgICBzZXRTZWxlY3RlZENlbGxzQmFja2dyb3VuZENvbG9yKHRoaXMuZWRpdG9yLCBuZXdDb2xvciwgdGhpcy50YWJsZVN0b3JlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gbmV3Q29sb3I7XG4gICAgfVxuXG4gICAgc2V0RnVsbHNjcmVlbihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgdGhpcy50YWJsZU9wdGlvbnMuc2V0RnVsbHNjcmVlbih0aGlzLmVkaXRvciwgZXZlbnQsIHRoaXMudGFibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25Db3B5KGU6IEV2ZW50KSB7XG4gICAgICAgIGU/LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29weU5vZGUodGhpcy5lZGl0b3IsIHRoaXMudGFibGVFbGVtZW50LCB0aGlzLnRoeU5vdGlmeVNlcnZpY2UpO1xuICAgIH1cblxuICAgIHNldEVxdWFsbHlDb2x1bW5IYW5kbGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMudGFibGVFbGVtZW50LmNvbHVtbnM7XG4gICAgICAgIGNvbnN0IHN1bVdpZHRoID0gY29sdW1ucy5yZWR1Y2UoKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVmFsdWUgKyBjdXJyZW50VmFsdWUud2lkdGg7XG4gICAgICAgIH0sIDApO1xuICAgICAgICBjb25zdCBlcXVhbENvbHVtbnMgPSBjb2x1bW5zLm1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4geyB3aWR0aDogc3VtV2lkdGggLyBjb2x1bW5zLmxlbmd0aCB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5lZGl0b3IsIHsgY29sdW1uczogZXF1YWxDb2x1bW5zIH0sIHRoaXMudGFibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBvcGVuVGFibGVPcHRpb25NZW51KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50aHlQb3BvdmVyLm9wZW4oVGhlVGFibGVPcHRpb25zQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBlZGl0b3I6IHRoaXMuZWRpdG9yXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICdhY3RpdmUnLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RhYmxlLW9wdGlvbnMtcGFubmVsJ1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIERlbGV0ZUljb24ge1xuICAgICd0YWJsZS1kZWxldGUtcm93cycgPSAndGFibGUtZGVsZXRlLXJvd3MnLFxuICAgICd0YWJsZS1kZWxldGUtY29sdW1ucycgPSAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICd0cmFzaCcgPSAndHJhc2gnXG59XG4iLCI8dGh5LWFjdGlvbnMgdGh5U2l6ZT1cInh4c1wiPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNlbGxNZW51TGlzdFwiPlxuICAgIDxhXG4gICAgICAqbmdJZj1cIml0ZW0udmlzaWJpbGl0eVwiXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgW3RoeUFjdGlvbkljb25dPVwiaXRlbS5pY29uXCJcbiAgICAgIFt0aHlUb29sdGlwXT1cIml0ZW0ubmFtZVwiXG4gICAgICAobW91c2Vkb3duKT1cIml0ZW0uYWN0aW9uSGFuZGxlKClcIlxuICAgID48L2E+XG4gIDwvbmctY29udGFpbmVyPlxuICA8dGh5LWRpdmlkZXIgKm5nSWY9XCJoYXNEaXZpZGVyXCIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj4gPC90aHktZGl2aWRlcj5cbiAgPGFcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICB0aHlBY3Rpb25cbiAgICB0aHlUb29sdGlwPVwi5Y2V5YWD5qC86IOM5pmvXCJcbiAgICB0aHlDb2xvclBpY2tlclxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRDb2xvclwiXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlQ29sb3IoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bik9XCJvcGVuQ29sb3JQYW5lbCgkZXZlbnQpXCJcbiAgICB0aHlQbGFjZW1lbnQ9XCJib3R0b21MZWZ0XCJcbiAgICBbdGh5SGFzQmFja2Ryb3BdPVwiZmFsc2VcIlxuICA+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYmFja2dyb3VuZC10dFwiIHRoeUljb25UeXBlPVwidHdvdG9uZVwiIFt0aHlUd290b25lQ29sb3JdPVwic2VsZWN0ZWRDb2xvclwiPjwvdGh5LWljb24+XG4gIDwvYT5cbiAgPGFcbiAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlICYmICFpc0NvbHVtbkVxdWFsXCJcbiAgICB0aHlBY3Rpb25cbiAgICB0aHlUb29sdGlwPVwi5YiX562J5a69XCJcbiAgICAobW91c2Vkb3duKT1cInNldEVxdWFsbHlDb2x1bW5IYW5kbGUoJGV2ZW50KVwiXG4gID5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJ0YWJsZS1jb2x1bW4tZXF1YWwtd2lkdGhcIj48L3RoeS1pY29uPlxuICA8L2E+XG4gIDxhXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgKm5nSWY9XCJ0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSAmJiB0YWJsZU9wdGlvbnM/LnNob3dGdWxsc2NyZWVuXCJcbiAgICB0aHlBY3Rpb25cbiAgICB0aHlUb29sdGlwPVwi5YWo5bGPXCJcbiAgICAobW91c2Vkb3duKT1cInNldEZ1bGxzY3JlZW4oJGV2ZW50KVwiXG4gID5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhcnJvd3MtYWx0XCI+PC90aHktaWNvbj5cbiAgPC9hPlxuICA8YVxuICAgICpuZ0lmPVwidGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGUgJiYgIXRhYmxlU3RvcmU/LmlzRnVsbHNjcmVlblwiXG4gICAgY2xhc3M9XCJmdWxsc2NyZWVuLWhpZGRlblwiXG4gICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgdGh5QWN0aW9uXG4gICAgdGh5QWN0aW9uSWNvbj1cImNvcHlcIlxuICAgIHRoeVRvb2x0aXA9XCLlpI3liLZcIlxuICAgIChtb3VzZWRvd24pPVwib25Db3B5KCRldmVudClcIlxuICA+PC9hPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVTdG9yZS5pc1NlbGVjdGVkVGFibGVcIj5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImxpbmstd2l0aC1kb3duXCIgdGh5QWN0aW9uIChtb3VzZWRvd24pPVwibW91c2Vkb3duKCRldmVudClcIiAoY2xpY2spPVwib3BlblRhYmxlT3B0aW9uTWVudSgkZXZlbnQpXCI+XG4gICAgICA8c3Bhbj7ooajmoLzpgInpobk8L3NwYW4+XG4gICAgICA8dGh5LWljb24gY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1kZXNjIG1sLTFcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVN0b3JlPy5pc0Z1bGxzY3JlZW4gPyBkZWxldGVJY29uICYmICF0YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSA6IGRlbGV0ZUljb25cIj5cbiAgICA8dGh5LWRpdmlkZXIgY2xhc3M9XCJtci0yIG1sLTEgYWxpZ24tc2VsZi1jZW50ZXJcIiBbdGh5VmVydGljYWxdPVwidHJ1ZVwiIHRoeUNvbG9yPVwibGlnaHRcIj48L3RoeS1kaXZpZGVyPlxuICAgIDxhXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgIHRoeUFjdGlvblxuICAgICAgdGh5VHlwZT1cImRhbmdlclwiXG4gICAgICBbdGh5QWN0aW9uSWNvbl09XCJkZWxldGVJY29uXCJcbiAgICAgIFt0aHlUb29sdGlwXT1cImljb25OYW1lXCJcbiAgICAgIChtb3VzZWRvd24pPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAobW91c2VlbnRlcik9XCJvbkVudGVyRGVsZXRlKCRldmVudClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZURlbGV0ZSgkZXZlbnQpXCJcbiAgICA+PC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvdGh5LWFjdGlvbnM+XG4iXX0=
|