@eui/components 17.3.11 → 17.3.12-snapshot-1727745347532

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.
@@ -273,11 +273,11 @@ export class EuiChipListComponent extends BaseDirective {
273
273
  return tab;
274
274
  }
275
275
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiChipListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.EuiChipListDragService }, { token: i2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
276
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: "isSquared", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", isChipsSorted: "isChipsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isGrid: "isGrid" }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chips }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n aria-haspopup=\"true\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex;width:100%}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\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: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
276
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: { chips: "chips", toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", chipsSortOrder: "chipsSortOrder", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", ariaLabel: "ariaLabel", dropListOrientation: "dropListOrientation", isSquared: "isSquared", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", isChipsSorted: "isChipsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isGrid: "isGrid" }, outputs: { chipsInit: "chipsInit", chipRemove: "chipRemove", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop", chiplistFocus: "chiplistFocus" }, host: { properties: { "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses" } }, queries: [{ propertyName: "euiChipsContent", predicate: i0.forwardRef(() => EuiChipComponent) }], viewQueries: [{ propertyName: "chipListDropList", first: true, predicate: ["chipListDropList"], descendants: true, read: CdkDropList }, { propertyName: "chipListDragAndDropItems", first: true, predicate: ["chipListDragAndDropItems"], descendants: true, read: CdkDropList }, { propertyName: "euiChipItems", predicate: ["euiChipItem"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n aria-haspopup=\"true\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex;width:100%}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\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: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["ariaLabel", "euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i6.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i6.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i7.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }, { kind: "pipe", type: i11.EuiTruncatePipe, name: "euiTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
277
277
  }
278
278
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiChipListComponent, decorators: [{
279
279
  type: Component,
280
- args: [{ selector: 'eui-chip-list, div[euiChipList], ul[euiChipList]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chips }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n aria-haspopup=\"true\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex;width:100%}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"] }]
280
+ args: [{ selector: 'eui-chip-list, div[euiChipList], ul[euiChipList]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"!isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n [cdkDropListOrientation]=\"dropListOrientation\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"chips ? { chips } : { chips: [] }\"\n [cdkDropListConnectedTo]=\"droppableArea\"\n (cdkDropListDropped)=\"drop($event)\"\n (focus)=\"onFocus()\"\n class=\"eui-chip-list__list\">\n <div\n class=\"eui-chip-list__chip-container\"\n *ngFor=\"let chip of chips; let i = index; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"chip\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<div *ngIf=\"isGrid\" class=\"eui-chip-list-container\">\n <div class=\"eui-chip-list-wrapper\">\n <div class=\"eui-chip-list__group\" cdkDropListGroup>\n <div\n role=\"list\"\n #chipList\n #chipListDropList\n #chipListDragAndDropItems\n cdkDropList\n *ngFor=\"let chip of chips; let i = index\"\n [cdkDropListDisabled]=\"!isChipsDragAndDrop\"\n [cdkDropListData]=\"{ chip: chip, index: i }\"\n (focus)=\"onFocus()\"\n (cdkDropListDropped)=\"onDropGrid($event)\"\n class=\"eui-chip-list__custom\">\n <div\n class=\"eui-chip-list__chip-container\"\n cdkDrag\n [cdkDragData]=\"{ chip: chip, index: i }\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragReleased)=\"onDragReleased($event)\"\n (cdkDragEntered)=\"onDragEnter($event)\">\n <eui-chip\n #euiChipItem\n *ngIf=\"\n (maxVisibleChipsCount && isMaxVisibleChipsOpened) ||\n (maxVisibleChipsCount && maxVisibleChipsCount > i) ||\n !maxVisibleChipsCount\n \"\n [data]=\"chip.data ? chip.data : chip\"\n [id]=\"chip.id\"\n [attr.role]=\"'listitem'\"\n ariaLabel=\"{{ getChipLabel(chip) }}\"\n [euiInternalId]=\"chip.euiInternalId\"\n [isChipRemovable]=\"chip.isChipRemovable || (isChipsRemovable && chip.isRemovable) !== false\"\n [euiOutline]=\"chip.euiOutline || euiOutline || chip.isOutline\"\n [euiSizeS]=\"chip.euiSizeS || euiSizeS || chip.sizeClass === 'euiSizeS'\"\n [euiSizeM]=\"chip.euiSizeM || euiSizeM || chip.sizeClass === 'euiSizeM'\"\n [euiSizeL]=\"chip.euiSizeL || euiSizeL || chip.sizeClass === 'euiSizeL'\"\n [euiSizeXL]=\"chip.euiSizeXL || euiSizeXL || chip.sizeClass === 'euiSizeXL'\"\n [euiSize2XL]=\"chip.euiSize2XL || euiSize2XL || chip.sizeClass === 'euiSize2XL'\"\n [isSquared]=\"chip.isSquared || isSquared\"\n [euiDisabled]=\"chip.euiDisabled || euiDisabled || chip.isDisabled\"\n [euiPrimary]=\"chip.euiPrimary || euiPrimary || chip.typeClass === 'primary' || !chip.typeClass\"\n [euiSecondary]=\"chip.euiSecondary || euiSecondary || chip.typeClass === 'secondary'\"\n [euiInfo]=\"chip.euiInfo || euiInfo || chip.typeClass === 'info'\"\n [euiSuccess]=\"chip.euiSuccess || euiSuccess || chip.typeClass === 'success'\"\n [euiWarning]=\"chip.euiWarning || euiWarning || chip.typeClass === 'warning'\"\n [euiDanger]=\"chip.euiDanger || euiDanger || chip.typeClass === 'danger'\"\n [euiAccent]=\"chip.euiAccent || euiAccent || chip.typeClass === 'accent'\"\n [euiTooltip]=\"chip.tooltipMessage\"\n [position]=\"chip.tooltip?.position\"\n [contentAlignment]=\"chip.tooltip?.contentAlignment\"\n (remove)=\"onRemove($event)\">\n <eui-icon *ngIf=\"chip.iconClass\" [iconClass]=\"chip.iconClass\"></eui-icon>\n <eui-icon-svg *ngIf=\"chip.iconSvgName\" [icon]=\"chip.iconSvgName\"></eui-icon-svg>\n <span *ngIf=\"!chipsLabelTruncateCount\" [innerHTML]=\"getChipContent(chip)\"></span>\n <span *ngIf=\"chipsLabelTruncateCount\" title=\"{{ getChipLabel(chip) }}\">{{\n getChipLabel(chip) | euiTruncate: chipsLabelTruncateCount\n }}</span>\n </eui-chip>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"euiChipListAppendContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"additionalContent\"></ng-container>\n</div>\n\n<ng-template #euiChipListAppendContent>\n <ng-content select=\"euiChipListAppendContent\"></ng-content>\n</ng-template>\n\n<ng-template #additionalContent>\n <ng-container *ngIf=\"maxVisibleChipsCount && chips && chips.length > maxVisibleChipsCount\">\n <div class=\"eui-chip-list__expand-button-wrapper\">\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"isMaxVisibleChipsOpened\">\n <eui-icon-svg icon=\"eui-chevron-back\" aria-label=\"Collapse icon\"></eui-icon-svg>\n <span euiLabel *ngIf=\"toggleLinkLessLabel\">{{ toggleLinkLessLabel | translate }}</span>\n </button>\n <button\n euiButton\n euiBasicButton\n euiButtonSecondary\n euiSizeS\n type=\"button\"\n aria-haspopup=\"true\"\n class=\"eui-chip-list__expand-button\"\n (click)=\"toggleTags()\"\n *ngIf=\"!isMaxVisibleChipsOpened\">\n <span euiLabel *ngIf=\"toggleLinkMoreLabel\">{{ toggleLinkMoreLabel | translate }}</span>\n <eui-icon-svg icon=\"eui-chevron-forward\" aria-label=\"Expand icon\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: [".eui-chip-list{align-items:center;display:flex;margin:0;padding:0}.eui-chip-list .eui-chip-list-container{align-items:center;display:flex;width:100%}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper{align-items:center;display:flex;width:100%;flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__list{flex-wrap:wrap}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container{align-items:center;display:inline-flex}.eui-chip-list .eui-chip-list-container .eui-chip-list-wrapper .eui-chip-list__chip-container .eui-chip{margin-bottom:var(--eui-base-spacing-2xs);margin-right:var(--eui-base-spacing-2xs)}.eui-chip-list[ischipsdraganddrop] .eui-chip-list-container{width:100%}.eui-chip-list__group{display:flex;flex-wrap:wrap}.eui-chip-list__chip-container.cdk-drag:not(.cdk-drag-disabled){cursor:move!important}.eui-chip-list__custom{min-width:auto!important;width:auto!important}@media screen and (max-width: 767px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}@media screen and (min-width: 768px) and (max-width: 995px){.eui-chip-list .eui-chip-list-container{flex-wrap:wrap}}\n"] }]
281
281
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.EuiChipListDragService }, { type: i2.DomSanitizer }], propDecorators: { chips: [{
282
282
  type: Input
283
283
  }], toggleLinkMoreLabel: [{
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
350
350
  type: Directive,
351
351
  args: [{ selector: 'euiChipListAppendContent' }]
352
352
  }] });
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUlmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUE2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUgsZUFBZSxFQUNmLFdBQVcsRUFDWCxpQkFBaUIsR0FLcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVlyRixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQW1CbkQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQVdELElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFD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RHJCLEtBQUs7Z0JBVUYsTUFBTTtzQkFEVCxLQUFLOztBQTRPVixvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLGlDQUFpQztpSUFBakMsaUNBQWlDO3FIQUFqQyxpQ0FBaUM7OzJGQUFqQyxpQ0FBaUM7a0JBRDdDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBWaWV3Q2hpbGQsXG4gICAgUXVlcnlMaXN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25EZXN0cm95LFxuICAgIERpcmVjdGl2ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENka0RyYWdEcm9wLFxuICAgIG1vdmVJdGVtSW5BcnJheSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICB0cmFuc2ZlckFycmF5SXRlbSxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdTdGFydCxcbiAgICBDZGtEcmFnRW50ZXIsXG4gICAgQ2RrRHJhZ1JlbGVhc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlDaGlwQ29tcG9uZW50LCBFdWlDaGlwLCBFdWlDaGlwVG9vbHRpcCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktY2hpcCc7XG5cbmltcG9ydCB7IEV1aUNoaXBEcmFnRHJvcCB9IGZyb20gJy4vbW9kZWxzL2V1aS1jaGlwLWRyYWctZHJvcC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldWktY2hpcC1saXN0LWRyYWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2V1aS1jaGlwLWxpc3QsIGRpdltldWlDaGlwTGlzdF0sIHVsW2V1aUNoaXBMaXN0XScsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpQ2hpcExpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgY2hpcHM6IGFueVtdO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBjaGlwc1NvcnRPcmRlcjogJ0FTQycgfCAnREVTQycgPSAnQVNDJztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJ2VVSSBDaGlwIExpc3QnO1xuICAgIEBJbnB1dCgpIGRyb3BMaXN0T3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBAT3V0cHV0KCkgY2hpcHNJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcm9wTGlzdD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjaGlwczogRXVpQ2hpcFtdOyByZW1vdmVkOiBFdWlDaGlwIHwgeyBjaGlwOiBFdWlDaGlwOyBldmVudDogRXZlbnQgfSB9PigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnUmVsZWFzZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwbGlzdEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktY2hpcC1saXN0JyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3BwYWJsZUFyZWE6IChDZGtEcm9wTGlzdCB8IHN0cmluZylbXTtcbiAgICBwdWJsaWMgY29ubmVjdENvbXBvbmVudDogQ2RrRHJvcExpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBlMmVBdHRyID0gJ2V1aS1jaGlwLWxpc3QnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aUNoaXBDb21wb25lbnQpKSBldWlDaGlwc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlDaGlwQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyb3BMaXN0JywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KSBjaGlwTGlzdERyb3BMaXN0OiBDZGtEcm9wTGlzdDtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyYWdBbmREcm9wSXRlbXMnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pIGNoaXBMaXN0RHJhZ0FuZERyb3BJdGVtczogQ2RrRHJvcExpc3Q7XG4gICAgQFZpZXdDaGlsZHJlbignZXVpQ2hpcEl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZXVpQ2hpcEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1NxdWFyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NxdWFyZWQ7XG4gICAgfVxuICAgIHNldCBpc1NxdWFyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1NxdWFyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1NxdWFyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNSZW1vdmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NoaXBzUmVtb3ZhYmxlO1xuICAgIH1cbiAgICBzZXQgaXNDaGlwc1JlbW92YWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNSZW1vdmFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoaXBzUmVtb3ZhYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQ7XG4gICAgfVxuICAgIHNldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX21heFZpc2libGVDaGlwc0NvdW50ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudDtcbiAgICB9XG4gICAgc2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01heFZpc2libGVDaGlwc09wZW5lZDtcbiAgICB9XG4gICAgc2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc01heFZpc2libGVDaGlwc09wZW5lZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc1NvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNTb3J0ZWQ7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzU29ydGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc1NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNTb3J0ZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcDtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNHcmlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNHcmlkO1xuICAgIH1cbiAgICBzZXQgaXNHcmlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNHcmlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNHcmlkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBldWlDaGlwTGlzdERyYWdTZXJ2aWNlOiBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuY2hpcHMgJiYgdGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHNJbml0LmVtaXQodGhpcy5jaGlwTGlzdERyYWdBbmREcm9wSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkICYmIHRoaXMuY2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXRDb21wb25lbnRDb25uZWN0b3IodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUbykge1xuICAgICAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnNldERyb3BwYWJsZUFyZWEodGhpcy5jaGlwTGlzdERyb3BMaXN0LCB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvLmZvckVhY2goKGNvbm5lY3RUbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCA9IHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwYWJsZUFyZWEgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuZHJvcHBhYmxlQXJlYVt0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZV07XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmNvbXBvbmVudENvbm5lY3RvcikubWFwKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXS5wdXNoKHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ldWlDaGlwc0NvbnRlbnQuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5tYXAoKGNoaXApID0+IE9iamVjdC5hc3NpZ24oY2hpcCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnJlc2V0Q29ubmVjdG9yKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUYWdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gIXRoaXMuaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBDb250ZW50KGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmNoaXBMYWJlbCA/IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGV1aUNoaXAuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBMYWJlbChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyBldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IDogZXVpQ2hpcC5sYWJlbDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZ2V0Q2hpcEljb25CZWZvcmUoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25CZWZvcmU7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBJY29uQWZ0ZXIoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25BZnRlcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgb25SZW1vdmUocmVtb3ZlZDogRXVpQ2hpcENvbXBvbmVudCB8IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwOyBldmVudD86IEV2ZW50IH0gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcztcbiAgICAgICAgY29uc3QgcmVtb3ZlZENoaXAgPSByZW1vdmVkIGFzIHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH07XG4gICAgICAgIGxldCBpbmRleCA9IHJlbW92ZWRDaGlwIGluc3RhbmNlb2YgRXVpQ2hpcCA/IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXApIDogY2hpcHMuaW5kZXhPZihyZW1vdmVkQ2hpcC5jaGlwKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xICYmIHJlbW92ZWQuaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hpcHMubWFwKChjaGlwKSA9PiBjaGlwLmlkKS5pbmRleE9mKHJlbW92ZWQuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuY2hpcFJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGNoaXBzOiB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIHJlbW92ZWQ6IHJlbW92ZWRDaGlwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmV1aUludGVybmFsSWQgPyBldWlDaGlwLmV1aUludGVybmFsSWQgOiBldWlDaGlwLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdFbnRlcihldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyb3BMaXN0ID0gZXZlbnQuY29udGFpbmVyO1xuICAgICAgICBjb25zdCBwaENvbnRhaW5lciA9IGRyb3BMaXN0LmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgcGhFbGVtZW50ID0gcGhDb250YWluZXIucXVlcnlTZWxlY3RvcignLmNkay1kcmFnLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIHBoQ29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBoRWxlbWVudCwgcGhDb250YWluZXIpO1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jaGlwcywgZXZlbnQuaXRlbS5kYXRhLmluZGV4LCBldmVudC5jb250YWluZXIuZGF0YS5pbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJvcEdyaWQoZTogQ2RrRHJhZ0Ryb3A8eyBjaGlwOiBFdWlDaGlwOyBpbmRleDogbnVtYmVyIH0+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyb3AuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHJvcHBlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZS5pdGVtLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZHJvcChlOiBDZGtEcmFnRHJvcDx7IGNoaXBzOiBhbnlbXSB9Pik6IHZvaWQge1xuICAgICAgICBpZiAoZS5wcmV2aW91c0NvbnRhaW5lciA9PT0gZS5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLCBlLnByZXZpb3VzSW5kZXgsIGUuY3VycmVudEluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxuICAgICAgICAgICAgICAgIGUucHJldmlvdXNDb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgICAgICBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLFxuICAgICAgICAgICAgICAgIGUucHJldmlvdXNDb250YWluZXIuZGF0YVsnY2hpcHMnXS5pbmRleE9mKGUuaXRlbS5kYXRhKSxcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwRHJvcC5lbWl0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wcGVkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBlLml0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgICBjaGlwczogZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnU3RhcnQuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnUmVsZWFzZWQoZXZlbnQ6IENka0RyYWdSZWxlYXNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyYWdSZWxlYXNlLmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JlbGVhc2VkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBldmVudFsnc291cmNlJ10uZGF0YSBpbnN0YW5jZW9mIEV1aUNoaXBDb21wb25lbnQgPyBldmVudFsnc291cmNlJ10uZGF0YSA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcGxpc3RGb2N1cy5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgb3JkZXJJdGVtcyh0YWI6IGFueSwgc29ydE9yZGVyOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGFiLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhT2JqID0gYS5jaGlwTGFiZWwgPyBhLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkgOiBhLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBiT2JqID0gYi5jaGlwTGFiZWwgPyBiLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkgOiBiLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmIChzb3J0T3JkZXIgPT09ICdBU0MnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWlDaGlwTGlzdEFwcGVuZENvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpQ2hpcExpc3RBcHBlbmRDb250ZW50RGlyZWN0aXZlIHt9XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iLCI8ZGl2ICpuZ0lmPVwiIWlzR3JpZFwiIGNsYXNzPVwiZXVpLWNoaXAtbGlzdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgICNjaGlwTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICNjaGlwTGlzdERyYWdBbmREcm9wSXRlbXNcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJkcm9wTGlzdE9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXBzIH1cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiZHJvcHBhYmxlQXJlYVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fbGlzdFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY2hpcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNoaXBzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2hpcFwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJvbkRyYWdSZWxlYXNlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1jaGlwXG4gICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICFtYXhWaXNpYmxlQ2hpcHNDb3VudFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCInbGlzdGl0ZW0nXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwie3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2hpcFJlbW92YWJsZV09XCJjaGlwLmlzQ2hpcFJlbW92YWJsZSB8fCAoaXNDaGlwc1JlbW92YWJsZSAmJiBjaGlwLmlzUmVtb3ZhYmxlKSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpT3V0bGluZV09XCJjaGlwLmV1aU91dGxpbmUgfHwgZXVpT3V0bGluZSB8fCBjaGlwLmlzT3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNpemVNXT1cImNoaXAuZXVpU2l6ZU0gfHwgZXVpU2l6ZU0gfHwgY2hpcC5zaXplQ2xhc3MgPT09ICdldWlTaXplTSdcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZUxdPVwiY2hpcC5ldWlTaXplTCB8fCBldWlTaXplTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemVMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplMlhMXT1cImNoaXAuZXVpU2l6ZTJYTCB8fCBldWlTaXplMlhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZTJYTCdcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTcXVhcmVkXT1cImNoaXAuaXNTcXVhcmVkIHx8IGlzU3F1YXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlQcmltYXJ5XT1cImNoaXAuZXVpUHJpbWFyeSB8fCBldWlQcmltYXJ5IHx8IGNoaXAudHlwZUNsYXNzID09PSAncHJpbWFyeScgfHwgIWNoaXAudHlwZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNlY29uZGFyeV09XCJjaGlwLmV1aVNlY29uZGFyeSB8fCBldWlTZWNvbmRhcnkgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cImNoaXAuZXVpU3VjY2VzcyB8fCBldWlTdWNjZXNzIHx8IGNoaXAudHlwZUNsYXNzID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpV2FybmluZ109XCJjaGlwLmV1aVdhcm5pbmcgfHwgZXVpV2FybmluZyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUFjY2VudF09XCJjaGlwLmV1aUFjY2VudCB8fCBldWlBY2NlbnQgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwiY2hpcC50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRBbGlnbm1lbnRdPVwiY2hpcC50b29sdGlwPy5jb250ZW50QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJjaGlwLmljb25TdmdOYW1lXCIgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudFwiIFtpbm5lckhUTUxdPVwiZ2V0Q2hpcENvbnRlbnQoY2hpcClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlwTGFiZWwoY2hpcCkgfCBldWlUcnVuY2F0ZTogY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiaXNHcmlkXCIgY2xhc3M9XCJldWktY2hpcC1saXN0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2dyb3VwXCIgY2RrRHJvcExpc3RHcm91cD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICByb2xlPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICAgICAjY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXA6IGNoaXAsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2N1c3RvbVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ0VudGVyZWQpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4VmlzaWJsZUNoaXBzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3RpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoaXBSZW1vdmFibGVdPVwiY2hpcC5pc0NoaXBSZW1vdmFibGUgfHwgKGlzQ2hpcHNSZW1vdmFibGUgJiYgY2hpcC5pc1JlbW92YWJsZSkgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCBldWlPdXRsaW5lIHx8IGNoaXAuaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTV09XCJjaGlwLmV1aVNpemVNIHx8IGV1aVNpemVNIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZU0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTF09XCJjaGlwLmV1aVNpemVMIHx8IGV1aVNpemVMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZTJYTF09XCJjaGlwLmV1aVNpemUyWEwgfHwgZXVpU2l6ZTJYTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemUyWEwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NxdWFyZWRdPVwiY2hpcC5pc1NxdWFyZWQgfHwgaXNTcXVhcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpUHJpbWFyeV09XCJjaGlwLmV1aVByaW1hcnkgfHwgZXVpUHJpbWFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3ByaW1hcnknIHx8ICFjaGlwLnR5cGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2Vjb25kYXJ5XT1cImNoaXAuZXVpU2Vjb25kYXJ5IHx8IGV1aVNlY29uZGFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU3VjY2Vzc109XCJjaGlwLmV1aVN1Y2Nlc3MgfHwgZXVpU3VjY2VzcyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cImNoaXAuZXVpV2FybmluZyB8fCBldWlXYXJuaW5nIHx8IGNoaXAudHlwZUNsYXNzID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlBY2NlbnRdPVwiY2hpcC5ldWlBY2NlbnQgfHwgZXVpQWNjZW50IHx8IGNoaXAudHlwZUNsYXNzID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50QWxpZ25tZW50XT1cImNoaXAudG9vbHRpcD8uY29udGVudEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiY2hpcC5pY29uU3ZnTmFtZVwiIFtpY29uXT1cImNoaXAuaWNvblN2Z05hbWVcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XCIgW2lubmVySFRNTF09XCJnZXRDaGlwQ29udGVudChjaGlwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlDaGlwTGlzdEFwcGVuZENvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBjaGlwcyAmJiBjaGlwcy5sZW5ndGggPiBtYXhWaXNpYmxlQ2hpcHNDb3VudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25TZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRhZ3MoKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc01heFZpc2libGVDaGlwc09wZW5lZFwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWJhY2tcIiBhcmlhLWxhYmVsPVwiQ29sbGFwc2UgaWNvblwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGV1aUxhYmVsICpuZ0lmPVwidG9nZ2xlTGlua0xlc3NMYWJlbFwiPnt7IHRvZ2dsZUxpbmtMZXNzTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRhZ3MoKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBldWlMYWJlbCAqbmdJZj1cInRvZ2dsZUxpbmtNb3JlTGFiZWxcIj57eyB0b2dnbGVMaW5rTW9yZUxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIiBhcmlhLWxhYmVsPVwiRXhwYW5kIGljb25cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWNoaXAtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktY2hpcC1saXN0L2V1aS1jaGlwLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWNoaXAtbGlzdC9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsV0FBVyxFQUNYLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsZUFBZSxFQUlmLFlBQVksRUFDWixNQUFNLEVBRU4sU0FBUyxFQUdULFVBQVUsRUFDVixZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUE2QixNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUgsZUFBZSxFQUNmLFdBQVcsRUFDWCxpQkFBaUIsR0FLcEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVlyRixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQW1CbkQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkUsQ0FBQztJQVdELElBQ0ksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFD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RHJCLEtBQUs7Z0JBVUYsTUFBTTtzQkFEVCxLQUFLOztBQTRPVixvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLGlDQUFpQztpSUFBakMsaUNBQWlDO3FIQUFqQyxpQ0FBaUM7OzJGQUFqQyxpQ0FBaUM7a0JBRDdDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQTBCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBWaWV3Q2hpbGQsXG4gICAgUXVlcnlMaXN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIE9uSW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgT25EZXN0cm95LFxuICAgIERpcmVjdGl2ZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBFbGVtZW50UmVmLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENka0RyYWdEcm9wLFxuICAgIG1vdmVJdGVtSW5BcnJheSxcbiAgICBDZGtEcm9wTGlzdCxcbiAgICB0cmFuc2ZlckFycmF5SXRlbSxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdTdGFydCxcbiAgICBDZGtEcmFnRW50ZXIsXG4gICAgQ2RrRHJhZ1JlbGVhc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuXG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBFdWlDaGlwQ29tcG9uZW50LCBFdWlDaGlwLCBFdWlDaGlwVG9vbHRpcCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktY2hpcCc7XG5cbmltcG9ydCB7IEV1aUNoaXBEcmFnRHJvcCB9IGZyb20gJy4vbW9kZWxzL2V1aS1jaGlwLWRyYWctZHJvcC5tb2RlbCc7XG5pbXBvcnQgeyBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ldWktY2hpcC1saXN0LWRyYWcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktY2hpcC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2V1aS1jaGlwLWxpc3QsIGRpdltldWlDaGlwTGlzdF0sIHVsW2V1aUNoaXBMaXN0XScsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpQ2hpcExpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgQElucHV0KCkgY2hpcHM6IGFueVtdO1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBjaGlwc1NvcnRPcmRlcjogJ0FTQycgfCAnREVTQycgPSAnQVNDJztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJ2VVSSBDaGlwIExpc3QnO1xuICAgIEBJbnB1dCgpIGRyb3BMaXN0T3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBAT3V0cHV0KCkgY2hpcHNJbml0ID0gbmV3IEV2ZW50RW1pdHRlcjxDZGtEcm9wTGlzdD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjaGlwczogRXVpQ2hpcFtdOyByZW1vdmVkOiBFdWlDaGlwIHwgeyBjaGlwOiBFdWlDaGlwOyBldmVudDogRXZlbnQgfSB9PigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJhZ1N0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnUmVsZWFzZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJvcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwbGlzdEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktY2hpcC1saXN0JyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3BwYWJsZUFyZWE6IChDZGtEcm9wTGlzdCB8IHN0cmluZylbXTtcbiAgICBwdWJsaWMgY29ubmVjdENvbXBvbmVudDogQ2RrRHJvcExpc3RbXSA9IFtdO1xuICAgIHB1YmxpYyBlMmVBdHRyID0gJ2V1aS1jaGlwLWxpc3QnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aUNoaXBDb21wb25lbnQpKSBldWlDaGlwc0NvbnRlbnQ6IFF1ZXJ5TGlzdDxFdWlDaGlwQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyb3BMaXN0JywgeyByZWFkOiBDZGtEcm9wTGlzdCB9KSBjaGlwTGlzdERyb3BMaXN0OiBDZGtEcm9wTGlzdDtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdERyYWdBbmREcm9wSXRlbXMnLCB7IHJlYWQ6IENka0Ryb3BMaXN0IH0pIGNoaXBMaXN0RHJhZ0FuZERyb3BJdGVtczogQ2RrRHJvcExpc3Q7XG4gICAgQFZpZXdDaGlsZHJlbignZXVpQ2hpcEl0ZW0nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgZXVpQ2hpcEl0ZW1zOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1NxdWFyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NxdWFyZWQ7XG4gICAgfVxuICAgIHNldCBpc1NxdWFyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1NxdWFyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1NxdWFyZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNSZW1vdmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NoaXBzUmVtb3ZhYmxlO1xuICAgIH1cbiAgICBzZXQgaXNDaGlwc1JlbW92YWJsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNSZW1vdmFibGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoaXBzUmVtb3ZhYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQ7XG4gICAgfVxuICAgIHNldCBtYXhWaXNpYmxlQ2hpcHNDb3VudCh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX21heFZpc2libGVDaGlwc0NvdW50ID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudDtcbiAgICB9XG4gICAgc2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01heFZpc2libGVDaGlwc09wZW5lZDtcbiAgICB9XG4gICAgc2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc01heFZpc2libGVDaGlwc09wZW5lZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc1NvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNTb3J0ZWQ7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzU29ydGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc1NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNTb3J0ZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcDtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNHcmlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNHcmlkO1xuICAgIH1cbiAgICBzZXQgaXNHcmlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNHcmlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNHcmlkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBldWlDaGlwTGlzdERyYWdTZXJ2aWNlOiBFdWlDaGlwTGlzdERyYWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuY2hpcHMgJiYgdGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5vcmRlckl0ZW1zKHRoaXMuY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLmNoaXBzPy5tYXAoKGNoaXApID0+ICh7XG4gICAgICAgICAgICAuLi5jaGlwLFxuICAgICAgICAgICAgdG9vbHRpcDogbmV3IEV1aUNoaXBUb29sdGlwKGNoaXAudG9vbHRpcCksXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcHNJbml0LmVtaXQodGhpcy5jaGlwTGlzdERyYWdBbmREcm9wSXRlbXMpO1xuICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkICYmIHRoaXMuY2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5zZXRDb21wb25lbnRDb25uZWN0b3IodGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUbykge1xuICAgICAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnNldERyb3BwYWJsZUFyZWEodGhpcy5jaGlwTGlzdERyb3BMaXN0LCB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8pO1xuICAgICAgICAgICAgdGhpcy5kcmFnQW5kRHJvcENvbm5lY3RlZFRvLmZvckVhY2goKGNvbm5lY3RUbykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdENvbXBvbmVudCA9IHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BwYWJsZUFyZWEgPSB0aGlzLmV1aUNoaXBMaXN0RHJhZ1NlcnZpY2UuZHJvcHBhYmxlQXJlYVt0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZV07XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLmNvbXBvbmVudENvbm5lY3RvcikubWFwKChjb25uZWN0VG8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXVpQ2hpcExpc3REcmFnU2VydmljZS5jb21wb25lbnRDb25uZWN0b3JbY29ubmVjdFRvXS5wdXNoKHRoaXMuY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5ldWlDaGlwc0NvbnRlbnQuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMuZXVpQ2hpcHNDb250ZW50LnRvQXJyYXkoKS5tYXAoKGNoaXApID0+IE9iamVjdC5hc3NpZ24oY2hpcCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NoaXBzU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm9yZGVySXRlbXModGhpcy5jaGlwcywgdGhpcy5jaGlwc1NvcnRPcmRlcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlDaGlwTGlzdERyYWdTZXJ2aWNlLnJlc2V0Q29ubmVjdG9yKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVUYWdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gIXRoaXMuaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBDb250ZW50KGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmNoaXBMYWJlbCA/IHRoaXMuZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGV1aUNoaXAuY2hpcExhYmVsLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSA6IGV1aUNoaXAubGFiZWw7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBMYWJlbChldWlDaGlwOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXVpQ2hpcC5jaGlwTGFiZWwgPyBldWlDaGlwLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IDogZXVpQ2hpcC5sYWJlbDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZ2V0Q2hpcEljb25CZWZvcmUoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25CZWZvcmU7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGdldENoaXBJY29uQWZ0ZXIoZXVpQ2hpcDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmljb25BZnRlcjtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgb25SZW1vdmUocmVtb3ZlZDogRXVpQ2hpcENvbXBvbmVudCB8IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXBDb21wb25lbnQgfCBFdWlDaGlwOyBldmVudD86IEV2ZW50IH0gfCBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcztcbiAgICAgICAgY29uc3QgcmVtb3ZlZENoaXAgPSByZW1vdmVkIGFzIHsgY2hpcDogRXVpQ2hpcDsgZXZlbnQ6IEV2ZW50IH07XG4gICAgICAgIGxldCBpbmRleCA9IHJlbW92ZWRDaGlwIGluc3RhbmNlb2YgRXVpQ2hpcCA/IGNoaXBzLmluZGV4T2YocmVtb3ZlZENoaXApIDogY2hpcHMuaW5kZXhPZihyZW1vdmVkQ2hpcC5jaGlwKTtcblxuICAgICAgICBpZiAoaW5kZXggPT09IC0xICYmIHJlbW92ZWQuaWQpIHtcbiAgICAgICAgICAgIGluZGV4ID0gY2hpcHMubWFwKChjaGlwKSA9PiBjaGlwLmlkKS5pbmRleE9mKHJlbW92ZWQuaWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIHRoaXMuY2hpcFJlbW92ZS5lbWl0KHtcbiAgICAgICAgICAgIGNoaXBzOiB0aGlzLmV1aUNoaXBzQ29udGVudC50b0FycmF5KCkubGVuZ3RoID4gMCA/IHRoaXMuY2hpcHMubWFwKChjKSA9PiBjLmRhdGEpIDogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIHJlbW92ZWQ6IHJlbW92ZWRDaGlwLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGV1aUNoaXA6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBldWlDaGlwLmV1aUludGVybmFsSWQgPyBldWlDaGlwLmV1aUludGVybmFsSWQgOiBldWlDaGlwLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdFbnRlcihldmVudDogQ2RrRHJhZ0VudGVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRyb3BMaXN0ID0gZXZlbnQuY29udGFpbmVyO1xuICAgICAgICBjb25zdCBwaENvbnRhaW5lciA9IGRyb3BMaXN0LmVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgcGhFbGVtZW50ID0gcGhDb250YWluZXIucXVlcnlTZWxlY3RvcignLmNkay1kcmFnLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIHBoQ29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHBoRWxlbWVudCwgcGhDb250YWluZXIpO1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jaGlwcywgZXZlbnQuaXRlbS5kYXRhLmluZGV4LCBldmVudC5jb250YWluZXIuZGF0YS5pbmRleCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJvcEdyaWQoZTogQ2RrRHJhZ0Ryb3A8eyBjaGlwOiBFdWlDaGlwOyBpbmRleDogbnVtYmVyIH0+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyb3AuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZHJvcHBlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZS5pdGVtLmRhdGEuY2hpcCxcbiAgICAgICAgICAgICAgICBjaGlwczogdGhpcy5jaGlwcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZHJvcChlOiBDZGtEcmFnRHJvcDx7IGNoaXBzOiBhbnlbXSB9Pik6IHZvaWQge1xuICAgICAgICBpZiAoZS5wcmV2aW91c0NvbnRhaW5lciA9PT0gZS5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLCBlLnByZXZpb3VzSW5kZXgsIGUuY3VycmVudEluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxuICAgICAgICAgICAgICAgIGUucHJldmlvdXNDb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgICAgICBlLmNvbnRhaW5lci5kYXRhWydjaGlwcyddLFxuICAgICAgICAgICAgICAgIGUucHJldmlvdXNDb250YWluZXIuZGF0YVsnY2hpcHMnXS5pbmRleE9mKGUuaXRlbS5kYXRhKSxcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnRJbmRleCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IGUuY29udGFpbmVyLmRhdGFbJ2NoaXBzJ10ubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGlwRHJvcC5lbWl0KFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkcm9wcGVkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBlLml0ZW0uZGF0YSxcbiAgICAgICAgICAgICAgICBjaGlwczogZS5jb250YWluZXIuZGF0YVsnY2hpcHMnXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ1N0YXJ0ZWQoZXZlbnQ6IENka0RyYWdTdGFydCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnU3RhcnQuZW1pdChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3RhcnRlZCcsXG4gICAgICAgICAgICAgICAgc291cmNlTmFtZTogdGhpcy5kcmFnQW5kRHJvcFNvdXJjZU5hbWUsXG4gICAgICAgICAgICAgICAgY2hpcDogZXZlbnRbJ3NvdXJjZSddLmRhdGEgaW5zdGFuY2VvZiBFdWlDaGlwQ29tcG9uZW50ID8gZXZlbnRbJ3NvdXJjZSddLmRhdGEgOiBldmVudFsnc291cmNlJ10uZGF0YS5jaGlwLFxuICAgICAgICAgICAgICAgIGNoaXBzOiB0aGlzLmNoaXBzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnUmVsZWFzZWQoZXZlbnQ6IENka0RyYWdSZWxlYXNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcERyYWdSZWxlYXNlLmVtaXQoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JlbGVhc2VkJyxcbiAgICAgICAgICAgICAgICBzb3VyY2VOYW1lOiB0aGlzLmRyYWdBbmREcm9wU291cmNlTmFtZSxcbiAgICAgICAgICAgICAgICBjaGlwOiBldmVudFsnc291cmNlJ10uZGF0YSBpbnN0YW5jZW9mIEV1aUNoaXBDb21wb25lbnQgPyBldmVudFsnc291cmNlJ10uZGF0YSA6IGV2ZW50Wydzb3VyY2UnXS5kYXRhLmNoaXAsXG4gICAgICAgICAgICAgICAgY2hpcHM6IHRoaXMuY2hpcHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hpcGxpc3RGb2N1cy5lbWl0KHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgb3JkZXJJdGVtcyh0YWI6IGFueSwgc29ydE9yZGVyOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGFiLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhT2JqID0gYS5jaGlwTGFiZWwgPyBhLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkgOiBhLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBiT2JqID0gYi5jaGlwTGFiZWwgPyBiLmNoaXBMYWJlbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkgOiBiLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmIChzb3J0T3JkZXIgPT09ICdBU0MnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWlDaGlwTGlzdEFwcGVuZENvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpQ2hpcExpc3RBcHBlbmRDb250ZW50RGlyZWN0aXZlIHt9XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iLCI8ZGl2ICpuZ0lmPVwiIWlzR3JpZFwiIGNsYXNzPVwiZXVpLWNoaXAtbGlzdC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0XCJcbiAgICAgICAgICAgICNjaGlwTGlzdFxuICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICNjaGlwTGlzdERyYWdBbmREcm9wSXRlbXNcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBbY2RrRHJvcExpc3RPcmllbnRhdGlvbl09XCJkcm9wTGlzdE9yaWVudGF0aW9uXCJcbiAgICAgICAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjaGlwcyA/IHsgY2hpcHMgfSA6IHsgY2hpcHM6IFtdIH1cIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0Q29ubmVjdGVkVG9dPVwiZHJvcHBhYmxlQXJlYVwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fbGlzdFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fY2hpcC1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlwIG9mIGNoaXBzOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY2hpcFwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNka0RyYWdSZWxlYXNlZCk9XCJvbkRyYWdSZWxlYXNlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGV1aS1jaGlwXG4gICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICFtYXhWaXNpYmxlQ2hpcHNDb3VudFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCInbGlzdGl0ZW0nXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYUxhYmVsPVwie3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2hpcFJlbW92YWJsZV09XCJjaGlwLmlzQ2hpcFJlbW92YWJsZSB8fCAoaXNDaGlwc1JlbW92YWJsZSAmJiBjaGlwLmlzUmVtb3ZhYmxlKSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpT3V0bGluZV09XCJjaGlwLmV1aU91dGxpbmUgfHwgZXVpT3V0bGluZSB8fCBjaGlwLmlzT3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNpemVNXT1cImNoaXAuZXVpU2l6ZU0gfHwgZXVpU2l6ZU0gfHwgY2hpcC5zaXplQ2xhc3MgPT09ICdldWlTaXplTSdcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZUxdPVwiY2hpcC5ldWlTaXplTCB8fCBldWlTaXplTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemVMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTaXplMlhMXT1cImNoaXAuZXVpU2l6ZTJYTCB8fCBldWlTaXplMlhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZTJYTCdcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTcXVhcmVkXT1cImNoaXAuaXNTcXVhcmVkIHx8IGlzU3F1YXJlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtldWlQcmltYXJ5XT1cImNoaXAuZXVpUHJpbWFyeSB8fCBldWlQcmltYXJ5IHx8IGNoaXAudHlwZUNsYXNzID09PSAncHJpbWFyeScgfHwgIWNoaXAudHlwZUNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVNlY29uZGFyeV09XCJjaGlwLmV1aVNlY29uZGFyeSB8fCBldWlTZWNvbmRhcnkgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtldWlTdWNjZXNzXT1cImNoaXAuZXVpU3VjY2VzcyB8fCBldWlTdWNjZXNzIHx8IGNoaXAudHlwZUNsYXNzID09PSAnc3VjY2VzcydcIlxuICAgICAgICAgICAgICAgICAgICBbZXVpV2FybmluZ109XCJjaGlwLmV1aVdhcm5pbmcgfHwgZXVpV2FybmluZyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3dhcm5pbmcnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aUFjY2VudF09XCJjaGlwLmV1aUFjY2VudCB8fCBldWlBY2NlbnQgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdhY2NlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwiY2hpcC50b29sdGlwTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRBbGlnbm1lbnRdPVwiY2hpcC50b29sdGlwPy5jb250ZW50QWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJvblJlbW92ZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgKm5nSWY9XCJjaGlwLmljb25TdmdOYW1lXCIgW2ljb25dPVwiY2hpcC5pY29uU3ZnTmFtZVwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFjaGlwc0xhYmVsVHJ1bmNhdGVDb3VudFwiIFtpbm5lckhUTUxdPVwiZ2V0Q2hpcENvbnRlbnQoY2hpcClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDaGlwTGFiZWwoY2hpcCkgfCBldWlUcnVuY2F0ZTogY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiaXNHcmlkXCIgY2xhc3M9XCJldWktY2hpcC1saXN0LWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktY2hpcC1saXN0LXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2dyb3VwXCIgY2RrRHJvcExpc3RHcm91cD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICByb2xlPVwibGlzdFwiXG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0XG4gICAgICAgICAgICAgICAgI2NoaXBMaXN0RHJvcExpc3RcbiAgICAgICAgICAgICAgICAjY2hpcExpc3REcmFnQW5kRHJvcEl0ZW1zXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWlzQ2hpcHNEcmFnQW5kRHJvcFwiXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJ7IGNoaXA6IGNoaXAsIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1jaGlwLWxpc3RfX2N1c3RvbVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktY2hpcC1saXN0X19jaGlwLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cInsgY2hpcDogY2hpcCwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgICAgIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ1JlbGVhc2VkKT1cIm9uRHJhZ1JlbGVhc2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoY2RrRHJhZ0VudGVyZWQpPVwib25EcmFnRW50ZXIoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgICAgICNldWlDaGlwSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4VmlzaWJsZUNoaXBzQ291bnQgJiYgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heFZpc2libGVDaGlwc0NvdW50ICYmIG1heFZpc2libGVDaGlwc0NvdW50ID4gaSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbWF4VmlzaWJsZUNoaXBzQ291bnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YV09XCJjaGlwLmRhdGEgPyBjaGlwLmRhdGEgOiBjaGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3RpdGVtJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhTGFiZWw9XCJ7eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUludGVybmFsSWRdPVwiY2hpcC5ldWlJbnRlcm5hbElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NoaXBSZW1vdmFibGVdPVwiY2hpcC5pc0NoaXBSZW1vdmFibGUgfHwgKGlzQ2hpcHNSZW1vdmFibGUgJiYgY2hpcC5pc1JlbW92YWJsZSkgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlPdXRsaW5lXT1cImNoaXAuZXVpT3V0bGluZSB8fCBldWlPdXRsaW5lIHx8IGNoaXAuaXNPdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplU109XCJjaGlwLmV1aVNpemVTIHx8IGV1aVNpemVTIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTV09XCJjaGlwLmV1aVNpemVNIHx8IGV1aVNpemVNIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZU0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplTF09XCJjaGlwLmV1aVNpemVMIHx8IGV1aVNpemVMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZUwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlTaXplWExdPVwiY2hpcC5ldWlTaXplWEwgfHwgZXVpU2l6ZVhMIHx8IGNoaXAuc2l6ZUNsYXNzID09PSAnZXVpU2l6ZVhMJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2l6ZTJYTF09XCJjaGlwLmV1aVNpemUyWEwgfHwgZXVpU2l6ZTJYTCB8fCBjaGlwLnNpemVDbGFzcyA9PT0gJ2V1aVNpemUyWEwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NxdWFyZWRdPVwiY2hpcC5pc1NxdWFyZWQgfHwgaXNTcXVhcmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJjaGlwLmV1aURpc2FibGVkIHx8IGV1aURpc2FibGVkIHx8IGNoaXAuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpUHJpbWFyeV09XCJjaGlwLmV1aVByaW1hcnkgfHwgZXVpUHJpbWFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3ByaW1hcnknIHx8ICFjaGlwLnR5cGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU2Vjb25kYXJ5XT1cImNoaXAuZXVpU2Vjb25kYXJ5IHx8IGV1aVNlY29uZGFyeSB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUluZm9dPVwiY2hpcC5ldWlJbmZvIHx8IGV1aUluZm8gfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdpbmZvJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpU3VjY2Vzc109XCJjaGlwLmV1aVN1Y2Nlc3MgfHwgZXVpU3VjY2VzcyB8fCBjaGlwLnR5cGVDbGFzcyA9PT0gJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlXYXJuaW5nXT1cImNoaXAuZXVpV2FybmluZyB8fCBldWlXYXJuaW5nIHx8IGNoaXAudHlwZUNsYXNzID09PSAnd2FybmluZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURhbmdlcl09XCJjaGlwLmV1aURhbmdlciB8fCBldWlEYW5nZXIgfHwgY2hpcC50eXBlQ2xhc3MgPT09ICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlBY2NlbnRdPVwiY2hpcC5ldWlBY2NlbnQgfHwgZXVpQWNjZW50IHx8IGNoaXAudHlwZUNsYXNzID09PSAnYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJjaGlwLnRvb2x0aXBNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJjaGlwLnRvb2x0aXA/LnBvc2l0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50QWxpZ25tZW50XT1cImNoaXAudG9vbHRpcD8uY29udGVudEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cIm9uUmVtb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbiAqbmdJZj1cImNoaXAuaWNvbkNsYXNzXCIgW2ljb25DbGFzc109XCJjaGlwLmljb25DbGFzc1wiPjwvZXVpLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnICpuZ0lmPVwiY2hpcC5pY29uU3ZnTmFtZVwiIFtpY29uXT1cImNoaXAuaWNvblN2Z05hbWVcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XCIgW2lubmVySFRNTF09XCJnZXRDaGlwQ29udGVudChjaGlwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIiB0aXRsZT1cInt7IGdldENoaXBMYWJlbChjaGlwKSB9fVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2hpcExhYmVsKGNoaXApIHwgZXVpVHJ1bmNhdGU6IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktY2hpcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV1aUNoaXBMaXN0QXBwZW5kQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkaXRpb25hbENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlDaGlwTGlzdEFwcGVuZENvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FkZGl0aW9uYWxDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXhWaXNpYmxlQ2hpcHNDb3VudCAmJiBjaGlwcyAmJiBjaGlwcy5sZW5ndGggPiBtYXhWaXNpYmxlQ2hpcHNDb3VudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25TZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBldWlTaXplU1xuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRhZ3MoKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc01heFZpc2libGVDaGlwc09wZW5lZFwiPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWJhY2tcIiBhcmlhLWxhYmVsPVwiQ29sbGFwc2UgaWNvblwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIDxzcGFuIGV1aUxhYmVsICpuZ0lmPVwidG9nZ2xlTGlua0xlc3NMYWJlbFwiPnt7IHRvZ2dsZUxpbmtMZXNzTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgIGV1aUJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgIGV1aVNpemVTXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLWNoaXAtbGlzdF9fZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVRhZ3MoKVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBldWlMYWJlbCAqbmdJZj1cInRvZ2dsZUxpbmtNb3JlTGFiZWxcIj57eyB0b2dnbGVMaW5rTW9yZUxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIiBhcmlhLWxhYmVsPVwiRXhwYW5kIGljb25cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -30,7 +30,7 @@ export class EuiAppToolbarComponent {
30
30
  document.documentElement.style.removeProperty('--eui-app-toolbar-height');
31
31
  }
32
32
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiAppToolbarComponent, deps: [{ token: i1.EuiAppShellService }], target: i0.ɵɵFactoryTarget.Component }); }
33
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiAppToolbarComponent, selector: "eui-app-toolbar", inputs: { hasLanguageSelector: "hasLanguageSelector" }, host: { properties: { "class": "this.string", "attr.role": "this.role" } }, ngImport: i0, template: "<!--Only render the toggle if there is a rendered sidebar in the DOM, otherwise it doesn't make sense. -->\n<eui-sidebar-toggle *ngIf=\"asService.getState('hasSidebar') | async\" class=\"eui-app-toolbar__sidebar-toggle\"> </eui-sidebar-toggle>\n\n<ng-content></ng-content>\n\n<ng-container\n *ngIf=\"\n !(asService.getState('hasHeader') | async | coerceBool) ||\n ((asService.getState('hasHeader') | async) && (asService.breakpoints$ | async).isMobile)\n \">\n <ng-container *ngIf=\"hasLanguageSelector\">\n <eui-language-selector styleClass=\"eui-app-toolbar__language-selector\"> </eui-language-selector>\n </ng-container>\n</ng-container>\n", styles: [".eui-app-toolbar{align-items:center;background:var(--eui-base-color-primary-100);color:var(--eui-base-color-white);width:100%;height:var(--eui-app-toolbar-height);display:flex;position:fixed;right:0;left:0;top:calc(var(--eui-app-header-height) + var(--eui-app-top-message-height));transition:top .1s ease,left .1s ease-in,width .1s ease-in;z-index:var(--eui-base-z-index-nav)}.eui-app-toolbar__sidebar-toggle{padding-left:var(--eui-base-spacing-s);padding-right:var(--eui-base-spacing-xs)}.eui-app-toolbar__language-selector{margin-left:auto}.eui-app-toolbar__language-selector .eui-language-selector-link__icon{color:var(--eui-base-color-white);font-size:var(--eui-base-icon-size-l)}.eui-app-toolbar__language-selector .eui-language-selector-link__language-code{color:var(--eui-base-color-primary-100)}.modal-open .eui-app-toolbar{z-index:auto}.eui-t-ec .eui-app-toolbar__sidebar-toggle{padding-top:calc(var(--eui-base-spacing-m) + 2px)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiSidebarToggleComponent, selector: "eui-sidebar-toggle", inputs: ["e2eAttr", "iconSvgFillColor"] }, { kind: "component", type: i4.EuiLanguageSelectorComponent, selector: "eui-language-selector", inputs: ["hasLanguageSelection"], outputs: ["languageSelectorClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.EuiCoerceBooleanPipe, name: "coerceBool" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
33
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiAppToolbarComponent, selector: "eui-app-toolbar", inputs: { hasLanguageSelector: "hasLanguageSelector" }, host: { properties: { "class": "this.string", "attr.role": "this.role" } }, ngImport: i0, template: "<!--Only render the toggle if there is a rendered sidebar in the DOM, otherwise it doesn't make sense. -->\n<eui-sidebar-toggle *ngIf=\"asService.getState('hasSidebar') | async\" class=\"eui-app-toolbar__sidebar-toggle\"> </eui-sidebar-toggle>\n\n<ng-content></ng-content>\n\n<ng-container\n *ngIf=\"\n !(asService.getState('hasHeader') | async | coerceBool) ||\n ((asService.getState('hasHeader') | async) && (asService.breakpoints$ | async).isMobile)\n \">\n <ng-container *ngIf=\"hasLanguageSelector\">\n <eui-language-selector styleClass=\"eui-app-toolbar__language-selector\"> </eui-language-selector>\n </ng-container>\n</ng-container>\n", styles: [".eui-app-toolbar{align-items:center;background:var(--eui-base-color-primary-100);color:var(--eui-base-color-white);width:100%;height:var(--eui-app-toolbar-height);display:flex;position:fixed;right:0;left:0;top:calc(var(--eui-app-header-height) + var(--eui-app-top-message-height));transition:top .1s ease,left .1s ease-in,width .1s ease-in;z-index:var(--eui-base-z-index-nav)}.eui-app-toolbar__sidebar-toggle{padding-left:var(--eui-base-spacing-s);padding-right:var(--eui-base-spacing-xs)}.eui-app-toolbar__language-selector{margin-left:auto}.eui-app-toolbar__language-selector .eui-language-selector-link__icon{color:var(--eui-base-color-white);font-size:var(--eui-base-icon-size-l)}.eui-app-toolbar__language-selector .eui-language-selector-link__language-code{color:var(--eui-base-color-primary-100)}.modal-open .eui-app-toolbar{z-index:auto}.eui-t-ec .eui-app-toolbar__sidebar-toggle{padding-top:calc(var(--eui-base-spacing-m) + 2px)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.EuiSidebarToggleComponent, selector: "eui-sidebar-toggle", inputs: ["e2eAttr", "iconSvgFillColor"] }, { kind: "component", type: i4.EuiLanguageSelectorComponent, selector: "eui-language-selector", inputs: ["hasLanguageSelection", "aria-label"], outputs: ["languageSelectorClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.EuiCoerceBooleanPipe, name: "coerceBool" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiAppToolbarComponent, decorators: [{
36
36
  type: Component,
@@ -3,6 +3,7 @@ import { EUI_CONFIG_TOKEN } from '@eui/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@eui/core";
5
5
  import * as i2 from "@angular/router";
6
+ import * as i3 from "@ngx-translate/core";
6
7
  export class EuiHeaderLogoComponent {
7
8
  constructor(asService, config) {
8
9
  this.asService = asService;
@@ -33,11 +34,11 @@ export class EuiHeaderLogoComponent {
33
34
  });
34
35
  }
35
36
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiHeaderLogoComponent, deps: [{ token: i1.EuiAppShellService, optional: true }, { token: EUI_CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
36
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiHeaderLogoComponent, selector: "eui-header-logo", inputs: { homeUrl: "homeUrl" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<img class=\"logo-svg logo-svg--positive\" [src]=\"svgUrl\" [routerLink]=\"homeUrl\" alt=\"EC logo\" />\n<img class=\"logo-svg logo-svg--negative\" [src]=\"svgUrlDark\" [routerLink]=\"homeUrl\" alt=\"EC logo\" />\n", dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
37
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: EuiHeaderLogoComponent, selector: "eui-header-logo", inputs: { homeUrl: "homeUrl" }, host: { properties: { "class": "this.class" } }, ngImport: i0, template: "<img class=\"logo-svg logo-svg--positive\" [src]=\"svgUrl\" [routerLink]=\"homeUrl\" alt=\"{{ 'eui.header.LOGO' | translate }}\" />\n<img class=\"logo-svg logo-svg--negative\" [src]=\"svgUrlDark\" [routerLink]=\"homeUrl\" alt=\"{{ 'eui.header.LOGO' | translate }}\" />\n", dependencies: [{ kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
37
38
  }
38
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: EuiHeaderLogoComponent, decorators: [{
39
40
  type: Component,
40
- args: [{ selector: 'eui-header-logo', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<img class=\"logo-svg logo-svg--positive\" [src]=\"svgUrl\" [routerLink]=\"homeUrl\" alt=\"EC logo\" />\n<img class=\"logo-svg logo-svg--negative\" [src]=\"svgUrlDark\" [routerLink]=\"homeUrl\" alt=\"EC logo\" />\n" }]
41
+ args: [{ selector: 'eui-header-logo', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, template: "<img class=\"logo-svg logo-svg--positive\" [src]=\"svgUrl\" [routerLink]=\"homeUrl\" alt=\"{{ 'eui.header.LOGO' | translate }}\" />\n<img class=\"logo-svg logo-svg--negative\" [src]=\"svgUrlDark\" [routerLink]=\"homeUrl\" alt=\"{{ 'eui.header.LOGO' | translate }}\" />\n" }]
41
42
  }], ctorParameters: () => [{ type: i1.EuiAppShellService, decorators: [{
42
43
  type: Optional
43
44
  }] }, { type: undefined, decorators: [{
@@ -50,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
50
51
  }], class: [{
51
52
  type: HostBinding
52
53
  }] } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWxvZ28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1oZWFkZXIvaGVhZGVyLWxvZ28vaGVhZGVyLWxvZ28uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1oZWFkZXIvaGVhZGVyLWxvZ28vaGVhZGVyLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixLQUFLLEVBRUwsUUFBUSxFQUVSLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFRN0MsTUFBTSxPQUFPLHNCQUFzQjtJQU0vQixZQUN3QixTQUE2QixFQUNILE1BQWlCO1FBRDNDLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBQ0gsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVAxRCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ0QsVUFBSyxHQUFHLGlCQUFpQixDQUFDO0lBTzlDLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDckIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFDdkIsYUFBYSxFQUFFLElBQUk7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsYUFBYSxJQUFJLFFBQVEsQ0FBQztJQUN4RixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLHlCQUF5QixJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSx5QkFBeUIsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7WUFDckIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUs7WUFDdkIsYUFBYSxFQUFFLEtBQUs7U0FDdkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztpSUFuQ1Esc0JBQXNCLG9FQVFQLGdCQUFnQjtxSEFSL0Isc0JBQXNCLHdJQ3JCbkMsd05BRUE7OzJGRG1CYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUVWLHVCQUF1QixDQUFDLE9BQU8saUJBQ2pDLGlCQUFpQixDQUFDLElBQUk7OzBCQVNoQyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQjt5Q0FQL0IsT0FBTztzQkFBZixLQUFLO2dCQUNpQixLQUFLO3NCQUEzQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE9uRGVzdHJveSxcbiAgICBJbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXVpQXBwU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aUNvbmZpZyB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBFVUlfQ09ORklHX1RPS0VOIH0gZnJvbSAnQGV1aS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktaGVhZGVyLWxvZ28nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXItbG9nby5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUhlYWRlckxvZ29Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgaG9tZVVybCA9ICcuLic7XG4gICAgQEhvc3RCaW5kaW5nKCkgcHJpdmF0ZSBjbGFzcyA9ICdldWktaGVhZGVyLWxvZ28nO1xuICAgIHByaXZhdGUgbG9nbzogc3RyaW5nO1xuICAgIHByaXZhdGUgYXNzZXRzQmFzZVVybDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYXNTZXJ2aWNlOiBFdWlBcHBTaGVsbFNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRVVJX0NPTkZJR19UT0tFTikgcHJpdmF0ZSBjb25maWc6IEV1aUNvbmZpZyxcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc1NlcnZpY2U/LnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgaGFzSGVhZGVyTG9nbzogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlPy5nZXRTdGF0ZSgnYWN0aXZlTGFuZ3VhZ2UnKS5zdWJzY3JpYmUoKGFjdGl2ZUxhbmd1YWdlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ28gPSAnbG9nby1lYy0tJyArIGFjdGl2ZUxhbmd1YWdlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hc3NldHNCYXNlVXJsID0gdGhpcy5jb25maWc/LmFwcENvbmZpZz8uZ2xvYmFsPy5ldWk/LmFzc2V0c0Jhc2VVcmwgfHwgJ2Fzc2V0cyc7XG4gICAgfVxuXG4gICAgZ2V0IHN2Z1VybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hc3NldHNCYXNlVXJsfS9lY2wvZWMvbG9nby9wb3NpdGl2ZS8ke3RoaXMubG9nb30uc3ZnYDtcbiAgICB9XG5cbiAgICBnZXQgc3ZnVXJsRGFyaygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5hc3NldHNCYXNlVXJsfS9lY2wvZWMvbG9nby9uZWdhdGl2ZS8ke3RoaXMubG9nb30uc3ZnYDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hc1NlcnZpY2U/LnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuYXNTZXJ2aWNlLnN0YXRlLFxuICAgICAgICAgICAgaGFzSGVhZGVyTG9nbzogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxpbWcgY2xhc3M9XCJsb2dvLXN2ZyBsb2dvLXN2Zy0tcG9zaXRpdmVcIiBbc3JjXT1cInN2Z1VybFwiIFtyb3V0ZXJMaW5rXT1cImhvbWVVcmxcIiBhbHQ9XCJFQyBsb2dvXCIgLz5cbjxpbWcgY2xhc3M9XCJsb2dvLXN2ZyBsb2dvLXN2Zy0tbmVnYXRpdmVcIiBbc3JjXT1cInN2Z1VybERhcmtcIiBbcm91dGVyTGlua109XCJob21lVXJsXCIgYWx0PVwiRUMgbG9nb1wiIC8+XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWxvZ28uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1oZWFkZXIvaGVhZGVyLWxvZ28vaGVhZGVyLWxvZ28uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGF5b3V0L2V1aS1oZWFkZXIvaGVhZGVyLWxvZ28vaGVhZGVyLWxvZ28uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixLQUFLLEVBRUwsUUFBUSxFQUVSLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7O0FBUTdDLE1BQU0sT0FBTyxzQkFBc0I7SUFNL0IsWUFDd0IsU0FBNkIsRUFDSCxNQUFpQjtRQUQzQyxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUNILFdBQU0sR0FBTixNQUFNLENBQVc7UUFQMUQsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNELFVBQUssR0FBRyxpQkFBaUIsQ0FBQztJQU85QyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQ3JCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQ3ZCLGFBQWEsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDcEUsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEdBQUcsY0FBYyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLGFBQWEsSUFBSSxRQUFRLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSx5QkFBeUIsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEseUJBQXlCLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1lBQ3JCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQ3ZCLGFBQWEsRUFBRSxLQUFLO1NBQ3ZCLENBQUMsQ0FBQztJQUNQLENBQUM7aUlBbkNRLHNCQUFzQixvRUFRUCxnQkFBZ0I7cUhBUi9CLHNCQUFzQix3SUNyQm5DLGdSQUVBOzsyRkRtQmEsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNJLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxPQUFPLGlCQUNqQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFTaEMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7eUNBUC9CLE9BQU87c0JBQWYsS0FBSztnQkFDaUIsS0FBSztzQkFBM0IsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgSW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlDb25maWcgfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgRVVJX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BldWkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWhlYWRlci1sb2dvJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLWxvZ28uY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlIZWFkZXJMb2dvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGhvbWVVcmwgPSAnLi4nO1xuICAgIEBIb3N0QmluZGluZygpIHByaXZhdGUgY2xhc3MgPSAnZXVpLWhlYWRlci1sb2dvJztcbiAgICBwcml2YXRlIGxvZ286IHN0cmluZztcbiAgICBwcml2YXRlIGFzc2V0c0Jhc2VVcmw6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEVVSV9DT05GSUdfVE9LRU4pIHByaXZhdGUgY29uZmlnOiBFdWlDb25maWcsXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlPy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgIGhhc0hlYWRlckxvZ286IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFzU2VydmljZT8uZ2V0U3RhdGUoJ2FjdGl2ZUxhbmd1YWdlJykuc3Vic2NyaWJlKChhY3RpdmVMYW5ndWFnZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dvID0gJ2xvZ28tZWMtLScgKyBhY3RpdmVMYW5ndWFnZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXNzZXRzQmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcHBDb25maWc/Lmdsb2JhbD8uZXVpPy5hc3NldHNCYXNlVXJsIHx8ICdhc3NldHMnO1xuICAgIH1cblxuICAgIGdldCBzdmdVcmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXNzZXRzQmFzZVVybH0vZWNsL2VjL2xvZ28vcG9zaXRpdmUvJHt0aGlzLmxvZ299LnN2Z2A7XG4gICAgfVxuXG4gICAgZ2V0IHN2Z1VybERhcmsoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYXNzZXRzQmFzZVVybH0vZWNsL2VjL2xvZ28vbmVnYXRpdmUvJHt0aGlzLmxvZ299LnN2Z2A7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlPy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLmFzU2VydmljZS5zdGF0ZSxcbiAgICAgICAgICAgIGhhc0hlYWRlckxvZ286IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8aW1nIGNsYXNzPVwibG9nby1zdmcgbG9nby1zdmctLXBvc2l0aXZlXCIgW3NyY109XCJzdmdVcmxcIiBbcm91dGVyTGlua109XCJob21lVXJsXCIgYWx0PVwie3sgJ2V1aS5oZWFkZXIuTE9HTycgfCB0cmFuc2xhdGUgfX1cIiAvPlxuPGltZyBjbGFzcz1cImxvZ28tc3ZnIGxvZ28tc3ZnLS1uZWdhdGl2ZVwiIFtzcmNdPVwic3ZnVXJsRGFya1wiIFtyb3V0ZXJMaW5rXT1cImhvbWVVcmxcIiBhbHQ9XCJ7eyAnZXVpLmhlYWRlci5MT0dPJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4iXX0=