@eui/components 18.0.0-rc.26 → 18.0.0-rc.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/EuiMenuItemComponent.html +1 -0
- package/docs/components/EuiNotificationItemComponent.html +3 -3
- package/docs/components/EuiNotificationItemV2Component.html +1 -1
- package/docs/components/EuiNotificationsComponent.html +24 -92
- package/docs/components/EuiPageColumnComponent.html +2 -2
- package/docs/components/EuiPaginatorComponent.html +1 -1
- package/docs/components/EuiTimelineComponent.html +55 -5
- package/docs/components/EuiTimelineItemComponent.html +0 -10
- package/docs/dependencies.html +1 -3
- package/docs/index.html +1 -1
- package/docs/interfaces/NotificationMetadata.html +546 -0
- package/docs/js/menu-wc.js +3 -0
- package/docs/js/menu-wc_es5.js +1 -1
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-button/eui-button.component.mjs +2 -2
- package/esm2022/eui-card/eui-card.component.mjs +2 -2
- package/esm2022/eui-fieldset/eui-fieldset.component.mjs +2 -2
- package/esm2022/eui-menu/eui-menu-item.component.mjs +16 -2
- package/esm2022/eui-menu/eui-menu.component.mjs +2 -2
- package/esm2022/eui-menu/models/eui-menu-item.model.mjs +2 -2
- package/esm2022/eui-overlay/eui-overlay.component.mjs +2 -2
- package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +9 -6
- package/esm2022/eui-page/eui-page.component.mjs +2 -2
- package/esm2022/eui-paginator/eui-paginator.component.mjs +3 -3
- package/esm2022/eui-select/eui-select.component.mjs +2 -2
- package/esm2022/eui-table/eui-table.component.mjs +2 -2
- package/esm2022/eui-table-v2/eui-table-v2.component.mjs +2 -2
- package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +2 -2
- package/esm2022/eui-tabs/eui-tabs.component.mjs +2 -2
- package/esm2022/eui-textarea/eui-textarea.component.mjs +2 -2
- package/esm2022/eui-timeline/eui-timeline-item.component.mjs +1 -3
- package/esm2022/eui-timeline/eui-timeline.component.mjs +29 -11
- package/esm2022/eui-tree/eui-tree.component.mjs +2 -2
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +2 -2
- package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +1 -1
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +1 -25
- package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +1 -1
- package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +2 -2
- package/eui-menu/eui-menu-item.component.d.ts +5 -4
- package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
- package/eui-menu/eui-menu.component.d.ts.map +1 -1
- package/eui-page/components/eui-page-column/eui-page-column.component.d.ts +1 -1
- package/eui-page/components/eui-page-column/eui-page-column.component.d.ts.map +1 -1
- package/eui-timeline/eui-timeline-item.component.d.ts.map +1 -1
- package/eui-timeline/eui-timeline.component.d.ts +9 -1
- package/eui-timeline/eui-timeline.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs +2 -2
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-card.mjs +2 -2
- package/fesm2022/eui-components-eui-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-fieldset.mjs +2 -2
- package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
- package/fesm2022/eui-components-eui-menu.mjs +16 -3
- package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-overlay.mjs +2 -2
- package/fesm2022/eui-components-eui-overlay.mjs.map +1 -1
- package/fesm2022/eui-components-eui-page.mjs +9 -7
- package/fesm2022/eui-components-eui-page.mjs.map +1 -1
- package/fesm2022/eui-components-eui-paginator.mjs +2 -2
- package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2022/eui-components-eui-select.mjs +2 -2
- package/fesm2022/eui-components-eui-select.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table-v2.mjs +2 -2
- package/fesm2022/eui-components-eui-table-v2.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table.mjs +2 -2
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +4 -4
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2022/eui-components-eui-textarea.mjs +2 -2
- package/fesm2022/eui-components-eui-textarea.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timeline.mjs +28 -12
- package/fesm2022/eui-components-eui-timeline.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +2 -2
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +3 -27
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts.map +1 -1
- package/layout/eui-notifications/eui-notification-item.component.d.ts +12 -3
- package/layout/eui-notifications/eui-notification-item.component.d.ts.map +1 -1
- package/layout/eui-notifications/eui-notifications.component.d.ts +16 -14
- package/layout/eui-notifications/eui-notifications.component.d.ts.map +1 -1
- package/layout/eui-notifications-v2/eui-notification-item.component.d.ts +2 -1
- package/layout/eui-notifications-v2/eui-notification-item.component.d.ts.map +1 -1
- package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts +1 -1
- package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts.map +1 -1
- package/package.json +3 -3
@@ -46,6 +46,20 @@ export class EuiMenuItemComponent {
|
|
46
46
|
this.isLinkItem = !this.isUrlItem && !this.isLabelItem;
|
47
47
|
this.ariaLabel = this.getAriaLabel();
|
48
48
|
}
|
49
|
+
ngOnChanges(changes) {
|
50
|
+
if (changes.item && changes.item.isFirstChange()) {
|
51
|
+
this.item = changes.item.currentValue;
|
52
|
+
if (!this.item.urlExternalTarget) {
|
53
|
+
this.item.urlExternalTarget = '_blank';
|
54
|
+
}
|
55
|
+
if (this.item.filtered === undefined) {
|
56
|
+
this.item.filtered = true;
|
57
|
+
}
|
58
|
+
if (this.item.disabled === undefined) {
|
59
|
+
this.item.visible = true;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
49
63
|
stopPropagation(event) {
|
50
64
|
this.itemClick.emit(this.item);
|
51
65
|
consumeEvent(event);
|
@@ -144,7 +158,7 @@ export class EuiMenuItemComponent {
|
|
144
158
|
].join(' ').trim();
|
145
159
|
}
|
146
160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiMenuItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
147
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: EuiMenuItemComponent, selector: "eui-menu-item", inputs: { item: "item", parent: "parent", hasIcon: ["hasIcon", "hasIcon", booleanAttribute], hasTooltip: ["hasTooltip", "hasTooltip", booleanAttribute], isCollapsed: ["isCollapsed", "isCollapsed", booleanAttribute], hasCollapsedInitials: ["hasCollapsedInitials", "hasCollapsedInitials", booleanAttribute], hasBoldRootLevel: ["hasBoldRootLevel", "hasBoldRootLevel", booleanAttribute] }, outputs: { expandToggle: "expandToggle", itemClick: "itemClick" }, host: { listeners: { "click": "stopPropagation($event)" }, properties: { "attr.role": "this.role", "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses", "attr.tabindex": "this.tabindex", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-disabled": "this.ariaDisabled" } }, ngImport: i0, template: "@if (item.visible && item.filtered) {\n @if (isLabelItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n class=\"eui-menu-item__content\"\n [attr.data-e2e]=\"item.e2eAttr\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [euiTooltip]=\"menuItemTooltip\"\n tabindex=\"-1\"\n position=\"after\">\n\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link eui-menu-item__link-category\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label-category\">{{ item.label }}</span>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n </a>\n </li>\n }\n\n @if (isUrlItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n [routerLink]=\"item.url ? item.url : null\"\n [routerLinkActive]=\"item.url ? 'eui-menu-item__link--active' : ''\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\"\n tabindex=\"-1\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n\n @if (isLinkItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n}\n\n<ng-template #linkContent>\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label\">{{ item.label }}</span>\n <eui-icon-svg\n *ngIf=\"item.urlExternal && item.urlExternalTarget === '_blank'\"\n class=\"eui-menu-item__label-external\"\n icon=\"eui-ecl-external\"\n size=\"2xs\"\n aria-label=\"external link icon\"\n euiEnd>\n </eui-icon-svg>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n</ng-template>\n\n<!-- PROJECTED CONTENT BLOCK -->\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<!-- PROJECTED START BLOCK -->\n<ng-template #itemIconContent>\n @if (!isCollapsed) {\n\n @if (hasIcon) {\n\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\"\n size=\"s\">\n </eui-icon-svg>\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n }\n @else if (!isLabelItem) {\n <!-- DEFAULT for non category items -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\">\n </eui-icon-svg>\n }\n } @else if (item.hasMarker) {\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n }\n\n } @else {\n @if (hasCollapsedInitials) {\n <span class=\"eui-menu-item__link-initials eui-u-c-bg-{{item.iconTypeClass}}\">\n {{ item.initials }}\n </span>\n } @else {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\"\n size=\"s\">\n </eui-icon-svg>\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n } @else {\n <!-- DEFAULT -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\"\n [aria-label]=\"item.iconLabel\">\n </eui-icon-svg>\n }\n } @else {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon eui-u-ml-2xs\"\n icon=\"square:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\">\n </eui-icon-svg>\n }\n }\n }\n</ng-template>\n\n<!-- PROJECTED END BLOCK -->\n<ng-template #itemEndContent>\n @if (item.tagLabel) {\n @if (isCollapsed) {\n <eui-badge [euiVariant]=\"item.tagTypeClass\" class=\"eui-menu-item__link-dotted-badge\"></eui-badge>\n } @else {\n <eui-badge [euiVariant]=\"item.tagTypeClass\">\n {{ item.tagLabel }}\n </eui-badge>\n }\n }\n\n <button\n *ngIf=\"item.actionIcon\"\n euiButton\n euiRounded\n euiIconButton\n euiSizeS\n euiBasicButton\n type=\"button\"\n tabindex=\"-1\"\n (keydown)=\"onActionIconKeyDown($event)\"\n (focusout)=\"onActionIconFocusOut()\"\n (focus)=\"focusActionIcon()\"\n class=\"eui-menu-item__link-action-icon\"\n [euiDisabled]=\"item.disabled\"\n [attr.aria-label]=\"item.actionIcon?.label\"\n (click)=\"onActionIconClick($event)\">\n <eui-icon-svg [icon]=\"item.actionIcon?.icon\" [fillColor]=\"item.actionIcon?.color\"></eui-icon-svg>\n </button>\n\n <eui-icon-button *ngIf=\"item.children?.length > 0\"\n class=\"eui-menu-item__link-toggle\"\n [icon]=\"item.expanded ? 'chevron-up:sharp': 'chevron-down:sharp'\"\n (buttonClick)=\"onExpandToggle($event)\"\n [ariaLabel]=\"item.expanded ? collapseMenuLabel : expandMenuLabel\"\n euiRounded\n size=\"s\"\n [tabindex]=\"-1\"\n [euiDisabled]=\"item.disabled\"/>\n</ng-template>\n", styles: [".eui-menu{display:flex;flex-direction:column;gap:0;list-style:none;margin-block-start:0;margin-block-end:0;margin:0;padding:0;width:100%}.eui-menu:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-menu:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu--collapsed .eui-menu-filter{transition:none;visibility:hidden}.eui-menu--collapsed .eui-menu-item__link{padding-left:var(--eui-s-m)}.eui-menu--collapsed .eui-menu-item__link-start-block{gap:0}.eui-menu--collapsed .eui-menu-item__link-content-block,.eui-menu--collapsed .eui-menu-item__link-end-block{visibility:hidden}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-action-icon{display:none}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-dotted-badge{position:absolute;top:var(--eui-s-2xs);right:var(--eui-s-2xs);visibility:visible}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-toggle{display:inherit;position:absolute;right:calc(-1 * var(--eui-s-xs));transform:scale(.75);visibility:visible}.eui-menu--collapsed .eui-menu-item__link-initials{display:flex;background-color:var(--eui-c-neutral-bg-light);border:var(--eui-bw-xs) solid var(--eui-c-neutral-lightest);border-radius:var(--eui-s-xs);font:var(--eui-f-s-bold);justify-content:center;margin-left:calc(-1 * var(--eui-s-2xs));min-width:var(--eui-s-2xl)}.eui-menu--collapsed .eui-menu-item--expanded:first-child{border-bottom:none;padding-bottom:0}.eui-menu--collapsed .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-m)}.eui-menu--collapsed .eui-menu-item--expanded .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-s)}.eui-menu--no-items{color:var(--eui-c-neutral-lighter);text-align:center}.eui-menu-filter{display:flex;padding:var(--eui-s-m);position:relative;width:100%}.eui-menu-item{display:flex;position:relative;width:100%;border:var(--eui-bw-xs) solid transparent}.eui-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu-item .eui-menu-item__content{align-items:center;display:flex;position:relative;width:100%}.eui-menu-item__link{align-items:center;color:var(--eui-c-text);cursor:pointer;display:flex;font:var(--eui-f-m);gap:var(--eui-s-xs);padding:var(--eui-s-xs) var(--eui-s-2xs) calc(var(--eui-s-xs) - 2px) var(--eui-s-m);border-top:1px solid var(--eui-c-neutral-bg);text-decoration:none;width:100%}.eui-menu-item__link-start-block{align-items:center;display:flex;gap:var(--eui-s-xs)}.eui-menu-item__link-start-block:empty{display:none}.eui-menu-item__link-content-block{display:flex;flex-direction:column;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-content-block .eui-menu-item__link-label-container{align-items:center;display:flex;position:relative;width:100%}.eui-menu-item__link-content-block .eui-menu-item__link-label-container .eui-menu-item__link-label{color:var(--eui-c-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-content-block .eui-menu-item__link-label-container .eui-menu-item__link-label-category{cursor:default;color:var(--eui-c-info-darker);font:var(--eui-f-bold);opacity:var(--eui-o-75);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-end-block{align-items:center;display:flex;gap:var(--eui-s-xs)}.eui-menu-item__link:hover:not(.eui-menu-item--disabled):not(.eui-menu-item__link-category){background-color:var(--eui-c-primary-bg);text-decoration:none}.eui-menu-item__link--disabled{opacity:var(--eui-o-50);pointer-events:none}.eui-menu-item__link--active:not(.eui-menu-item--disabled){background-color:var(--eui-c-primary-bg);font:var(--eui-f-m-bold)}.eui-menu-item__link--active:not(.eui-menu-item--disabled) .eui-menu-item__link-label{color:var(--eui-c-primary)}.eui-menu-item--expanded{display:flex;flex-direction:column}.eui-menu-item--expanded .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-3xl)}.eui-menu-item .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-xl);padding-bottom:var(--eui-s-2xs);padding-top:var(--eui-s-2xs);border-top:0}.eui-menu-item--bold>.eui-menu-item__content>.eui-menu-item__link{font:var(--eui-f-m-bold)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i4.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "component", type: i7.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: EuiMenuItemComponent, selector: "eui-menu-item", inputs: { item: "item", parent: "parent", hasIcon: ["hasIcon", "hasIcon", booleanAttribute], hasTooltip: ["hasTooltip", "hasTooltip", booleanAttribute], isCollapsed: ["isCollapsed", "isCollapsed", booleanAttribute], hasCollapsedInitials: ["hasCollapsedInitials", "hasCollapsedInitials", booleanAttribute], hasBoldRootLevel: ["hasBoldRootLevel", "hasBoldRootLevel", booleanAttribute] }, outputs: { expandToggle: "expandToggle", itemClick: "itemClick" }, host: { listeners: { "click": "stopPropagation($event)" }, properties: { "attr.role": "this.role", "attr.aria-label": "this.ariaLabel", "class": "this.cssClasses", "attr.tabindex": "this.tabindex", "attr.aria-haspopup": "this.ariaHasPopup", "attr.aria-expanded": "this.ariaExpanded", "attr.aria-disabled": "this.ariaDisabled" } }, usesOnChanges: true, ngImport: i0, template: "@if (item.visible && item.filtered) {\n @if (isLabelItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n class=\"eui-menu-item__content\"\n [attr.data-e2e]=\"item.e2eAttr\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [attr.aria-disabled]=\"item.disabled\"\n [euiTooltip]=\"menuItemTooltip\"\n tabindex=\"-1\"\n position=\"after\">\n\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link eui-menu-item__link-category\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label-category\">{{ item.label }}</span>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n </a>\n </li>\n }\n\n @if (isUrlItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n [routerLink]=\"item.url ? item.url : null\"\n [routerLinkActive]=\"item.url ? 'eui-menu-item__link--active' : ''\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\"\n tabindex=\"-1\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n\n @if (isLinkItem) {\n <li\n role=\"none\"\n id=\"{{item.id}}\"\n [attr.data-e2e]=\"item.e2eAttr\"\n class=\"eui-menu-item__content\"\n [class.eui-menu-item--disabled]=\"item.disabled\"\n [class.eui-menu-item--expanded]=\"item.expanded || item.filtered\"\n [attr.aria-disabled]=\"item.disabled\">\n <a\n (click)=\"onClick($event)\"\n tabindex=\"-1\"\n class=\"eui-menu-item__link\"\n [class.eui-menu-item__link--disabled]=\"item.disabled\"\n [class.eui-menu-item__link--active]=\"item.active\"\n [class.eui-menu-item__link--has-sub]=\"item.children?.length > 0\"\n href=\"javascript:void(0)\"\n [euiTooltip]=\"menuItemTooltip\"\n position=\"after\">\n <ng-template *ngTemplateOutlet=\"linkContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </a>\n\n <ng-template *ngTemplateOutlet=\"content\"></ng-template>\n </li>\n }\n}\n\n<ng-template #linkContent>\n <div class=\"eui-menu-item__link-start-block\">\n <ng-template *ngTemplateOutlet=\"itemIconContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n\n <div class=\"eui-menu-item__link-content-block\">\n <div class=\"eui-menu-item__link-label-container\">\n <span class=\"eui-menu-item__link-label\">{{ item.label }}</span>\n <eui-icon-svg\n *ngIf=\"item.urlExternal && item.urlExternalTarget === '_blank'\"\n class=\"eui-menu-item__label-external\"\n icon=\"eui-ecl-external\"\n size=\"2xs\"\n aria-label=\"external link icon\"\n euiEnd>\n </eui-icon-svg>\n </div>\n </div>\n\n <div class=\"eui-menu-item__link-end-block\">\n <ng-template *ngTemplateOutlet=\"itemEndContent\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n</ng-template>\n\n<!-- PROJECTED CONTENT BLOCK -->\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n\n<!-- PROJECTED START BLOCK -->\n<ng-template #itemIconContent>\n @if (!isCollapsed) {\n\n @if (hasIcon) {\n\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\"\n size=\"s\">\n </eui-icon-svg>\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n }\n @else if (!isLabelItem) {\n <!-- DEFAULT for non category items -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\">\n </eui-icon-svg>\n }\n } @else if (item.hasMarker) {\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n }\n\n } @else {\n @if (hasCollapsedInitials) {\n <span class=\"eui-menu-item__link-initials eui-u-c-bg-{{item.iconTypeClass}}\">\n {{ item.initials }}\n </span>\n } @else {\n @if (hasIcon) {\n @if (item.iconSvgName) {\n <!-- SVG -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"{{ item.iconSvgName }}\"\n fillColor=\"{{ item.iconTypeClass }}\"\n size=\"s\">\n </eui-icon-svg>\n\n } @else if (item.hasMarker) {\n <!-- MARKER -->\n <eui-icon-svg\n class=\"eui-menu-item__link-marker\"\n fillColor=\"{{ item?.markerTypeClass }}\"\n icon=\"ellipse:sharp\"\n size=\"2xs\"\n [aria-label]=\"item.markerTypeClass + ' ' + 'marker'\">\n </eui-icon-svg>\n } @else {\n <!-- DEFAULT -->\n <eui-icon-svg\n class=\"eui-menu-item__link-icon\"\n icon=\"ellipse:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\"\n [aria-label]=\"item.iconLabel\">\n </eui-icon-svg>\n }\n } @else {\n <eui-icon-svg\n class=\"eui-menu-item__link-icon eui-u-ml-2xs\"\n icon=\"square:sharp\"\n fillColor=\"neutral-light\"\n size=\"2xs\">\n </eui-icon-svg>\n }\n }\n }\n</ng-template>\n\n<!-- PROJECTED END BLOCK -->\n<ng-template #itemEndContent>\n @if (item.tagLabel) {\n @if (isCollapsed) {\n <eui-badge [euiVariant]=\"item.tagTypeClass\" class=\"eui-menu-item__link-dotted-badge\"></eui-badge>\n } @else {\n <eui-badge [euiVariant]=\"item.tagTypeClass\">\n {{ item.tagLabel }}\n </eui-badge>\n }\n }\n\n <button\n *ngIf=\"item.actionIcon\"\n euiButton\n euiRounded\n euiIconButton\n euiSizeS\n euiBasicButton\n type=\"button\"\n tabindex=\"-1\"\n (keydown)=\"onActionIconKeyDown($event)\"\n (focusout)=\"onActionIconFocusOut()\"\n (focus)=\"focusActionIcon()\"\n class=\"eui-menu-item__link-action-icon\"\n [euiDisabled]=\"item.disabled\"\n [attr.aria-label]=\"item.actionIcon?.label\"\n (click)=\"onActionIconClick($event)\">\n <eui-icon-svg [icon]=\"item.actionIcon?.icon\" [fillColor]=\"item.actionIcon?.color\"></eui-icon-svg>\n </button>\n\n <eui-icon-button *ngIf=\"item.children?.length > 0\"\n class=\"eui-menu-item__link-toggle\"\n [icon]=\"item.expanded ? 'chevron-up:sharp': 'chevron-down:sharp'\"\n (buttonClick)=\"onExpandToggle($event)\"\n [ariaLabel]=\"item.expanded ? collapseMenuLabel : expandMenuLabel\"\n euiRounded\n size=\"s\"\n [tabindex]=\"-1\"\n [euiDisabled]=\"item.disabled\"/>\n</ng-template>\n", styles: [".eui-menu{display:flex;flex-direction:column;gap:0;list-style:none;margin-block-start:0;margin-block-end:0;margin:0;padding:0;width:100%}.eui-menu:focus:not([readonly]){outline:2px solid var(--eui-c-focus)!important;outline-offset:-2px!important;transition:none}.eui-menu:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu [tabindex=\"0\"]:focus:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu--collapsed .eui-menu-filter{transition:none;visibility:hidden}.eui-menu--collapsed .eui-menu-item__link{padding-left:var(--eui-s-m)}.eui-menu--collapsed .eui-menu-item__link-start-block{gap:0}.eui-menu--collapsed .eui-menu-item__link-content-block,.eui-menu--collapsed .eui-menu-item__link-end-block{visibility:hidden}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-action-icon{display:none}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-dotted-badge{position:absolute;top:var(--eui-s-2xs);right:var(--eui-s-2xs);visibility:visible}.eui-menu--collapsed .eui-menu-item__link-end-block .eui-menu-item__link-toggle{display:inherit;position:absolute;right:calc(-1 * var(--eui-s-xs));transform:scale(.75);visibility:visible}.eui-menu--collapsed .eui-menu-item__link-initials{display:flex;background-color:var(--eui-c-neutral-bg-light);border:var(--eui-bw-xs) solid var(--eui-c-neutral-lightest);border-radius:var(--eui-s-xs);font:var(--eui-f-s-bold);justify-content:center;margin-left:calc(-1 * var(--eui-s-2xs));min-width:var(--eui-s-2xl)}.eui-menu--collapsed .eui-menu-item--expanded:first-child{border-bottom:none;padding-bottom:0}.eui-menu--collapsed .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-m)}.eui-menu--collapsed .eui-menu-item--expanded .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-s)}.eui-menu--no-items{color:var(--eui-c-neutral-lighter);text-align:center}.eui-menu-filter{display:flex;padding:var(--eui-s-m);position:relative;width:100%}.eui-menu-item{display:flex;position:relative;width:100%;border:var(--eui-bw-xs) solid transparent}.eui-menu-item:focus-visible:not([readonly]){outline:2px solid var(--eui-c-focus-visible)!important;outline-offset:-2px!important;transition:none}.eui-menu-item .eui-menu-item__content{align-items:center;display:flex;position:relative;width:100%}.eui-menu-item__link{align-items:center;color:var(--eui-c-text);cursor:pointer;display:flex;font:var(--eui-f-m);gap:var(--eui-s-xs);padding:var(--eui-s-xs) var(--eui-s-2xs) calc(var(--eui-s-xs) - 2px) var(--eui-s-m);border-top:1px solid var(--eui-c-neutral-bg);text-decoration:none;width:100%}.eui-menu-item__link-start-block{align-items:center;display:flex;gap:var(--eui-s-xs)}.eui-menu-item__link-start-block:empty{display:none}.eui-menu-item__link-content-block{display:flex;flex-direction:column;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-content-block .eui-menu-item__link-label-container{align-items:center;display:flex;position:relative;width:100%}.eui-menu-item__link-content-block .eui-menu-item__link-label-container .eui-menu-item__link-label{color:var(--eui-c-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-content-block .eui-menu-item__link-label-container .eui-menu-item__link-label-category{cursor:default;color:var(--eui-c-info-darker);font:var(--eui-f-bold);opacity:var(--eui-o-75);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-menu-item__link-end-block{align-items:center;display:flex;gap:var(--eui-s-xs)}.eui-menu-item__link:hover:not(.eui-menu-item--disabled):not(.eui-menu-item__link-category){background-color:var(--eui-c-primary-bg);text-decoration:none}.eui-menu-item__link--disabled{opacity:var(--eui-o-50);pointer-events:none}.eui-menu-item__link--active:not(.eui-menu-item--disabled){background-color:var(--eui-c-primary-bg);font:var(--eui-f-m-bold)}.eui-menu-item__link--active:not(.eui-menu-item--disabled) .eui-menu-item__link-label{color:var(--eui-c-primary)}.eui-menu-item--expanded{display:flex;flex-direction:column}.eui-menu-item--expanded .eui-menu-item--expanded .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-3xl)}.eui-menu-item .eui-menu-sub .eui-menu-item__link{padding-left:var(--eui-s-xl);padding-bottom:var(--eui-s-2xs);padding-top:var(--eui-s-2xs);border-top:0}.eui-menu-item--bold>.eui-menu-item__content>.eui-menu-item__link{font:var(--eui-f-m-bold)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i4.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i5.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "euiIconButton", "euiLineWrap", "isChecked", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "directive", type: i6.EuiTooltipDirective, selector: "[euiTooltip]", inputs: ["e2eAttr", "showDelay", "hideDelay", "contentAlignment", "position", "isDisabled", "euiTooltip", "euiTooltipPrimary", "euiTooltipSecondary", "euiTooltipInfo", "euiTooltipSuccess", "euiTooltipWarning", "euiTooltipDanger", "euiTooltipAccent"], exportAs: ["euiTooltip"] }, { kind: "component", type: i7.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label", "maxCharCount", "charReplacement", "euiIconBadge", "euiDottedBadge"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
148
162
|
}
|
149
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: EuiMenuItemComponent, decorators: [{
|
150
164
|
type: Component,
|
@@ -197,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
197
211
|
type: HostListener,
|
198
212
|
args: ['click', ['$event']]
|
199
213
|
}] } });
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktbWVudS9ldWktbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS1tZW51L2V1aS1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFFWixnQkFBZ0IsR0FFbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0FBU3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFLN0IsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzdELENBQUM7SUFDRCxJQUNJLFlBQVk7UUFDWixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUNELElBQ0ksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDN0IsQ0FBQztJQXFCRCxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBNUNoQixTQUFJLEdB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QUFFLGdCQUFnQixFQUFFO2dCQWEvQixlQUFlO3NCQURyQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIE9uSW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIEVsZW1lbnRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuXG5pbXBvcnQgeyBjb25zdW1lRXZlbnQgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpTWVudUl0ZW0gfSBmcm9tICcuL21vZGVscy9ldWktbWVudS1pdGVtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktbWVudS1pdGVtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLW1lbnUtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpTWVudUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEZvY3VzYWJsZU9wdGlvbiB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbWVudWl0ZW0nO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJyc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3NzQ2xhc3NlcygpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJpbmRleCA9ICctMSc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIGdldCBhcmlhSGFzUG9wdXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW0/LmNoaWxkcmVuPy5sZW5ndGggPiAwPyB0cnVlIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgZ2V0IGFyaWFFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYodGhpcy5pdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtLmV4cGFuZGVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gICAgZ2V0IGFyaWFEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS5kaXNhYmxlZFxuICAgIH1cblxuICAgIEBJbnB1dCgpIGl0ZW06IEV1aU1lbnVJdGVtO1xuICAgIEBJbnB1dCgpIHBhcmVudDogRXVpTWVudUl0ZW07XG4gICAgQE91dHB1dCgpIGV4cGFuZFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpTWVudUl0ZW0+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpTWVudUl0ZW0+KCk7XG5cbiAgICBleHBhbmRNZW51TGFiZWwgPSAnRXhwYW5kJztcbiAgICBjb2xsYXBzZU1lbnVMYWJlbCA9ICdDb2xsYXBzZSc7XG5cbiAgICBpc1VybEl0ZW0gPSBmYWxzZTtcbiAgICBpc0xpbmtJdGVtID0gZmFsc2U7XG4gICAgaXNMYWJlbEl0ZW0gPSBmYWxzZTtcbiAgICBpc0FjdGlvbkljb25Gb2N1c2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzVG9vbHRpcDogYm9vbGVhbjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0NvbGxhcHNlZEluaXRpYWxzOiBib29sZWFuO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNCb2xkUm9vdExldmVsOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNVcmxJdGVtID0gKHRoaXMuaXRlbS51cmwgfHwgdGhpcy5pdGVtLnVybEV4dGVybmFsIHx8IHRoaXMuaXRlbS5jaGlsZHJlbiB8fCB0aGlzLml0ZW0uY29tbWFuZCkgJiYgIXRoaXMuaXRlbS5saW5rO1xuICAgICAgICB0aGlzLmlzTGFiZWxJdGVtID0gIXRoaXMuaXRlbS51cmwgJiYgIXRoaXMuaXRlbS51cmxFeHRlcm5hbCAmJiAhdGhpcy5pdGVtLmNvbW1hbmQgJiYgIXRoaXMuaXRlbS5jaGlsZHJlbiAmJiAhdGhpcy5pdGVtLmxpbms7XG5cbiAgICAgICAgdGhpcy5pc0xpbmtJdGVtID0gIXRoaXMuaXNVcmxJdGVtICYmICF0aGlzLmlzTGFiZWxJdGVtO1xuICAgICAgICB0aGlzLmFyaWFMYWJlbCA9IHRoaXMuZ2V0QXJpYUxhYmVsKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBzdG9wUHJvcGFnYXRpb24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQodGhpcy5pdGVtKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBnZXQgbWVudUl0ZW1Ub29sdGlwKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmhhc1Rvb2x0aXAgJiYgdGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS50b29sdGlwIHx8IHRoaXMuZ2V0VG9vbHRpcEZyb21JdGVtKHRoaXMuaXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQodGhpcy5pdGVtKTtcbiAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkV4cGFuZFRvZ2dsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5leHBhbmRUb2dnbGUuZW1pdCh0aGlzLml0ZW0pO1xuICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkFjdGlvbkljb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW0uYWN0aW9uSWNvbj8uYWN0aW9uKGV2ZW50KTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkFjdGlvbkljb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbS5hY3Rpb25JY29uPy5hY3Rpb24oZXZlbnQpO1xuICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c0FjdGlvbkljb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ldWktbWVudS1pdGVtX19saW5rLWFjdGlvbi1pY29uJykuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5pc0FjdGlvbkljb25Gb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkFjdGlvbkljb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0FjdGlvbkljb25Gb2N1c2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIGFuIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnRcbiAgICAgKiBAcGFyYW0gZWxcbiAgICAgKiBAcGFyYW0gcGFydGlhbGx5VmlzaWJsZVxuICAgICAqL1xuICAgIGVsZW1lbnRJc1Zpc2libGVJblZpZXdwb3J0KHBhcnRpYWxseVZpc2libGUgPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCB9ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHsgaW5uZXJIZWlnaHQsIGlubmVyV2lkdGggfSA9IHdpbmRvdztcbiAgICAgICAgcmV0dXJuIHBhcnRpYWxseVZpc2libGVcbiAgICAgICAgICAgID8gKCh0b3AgPiAwICYmIHRvcCA8IGlubmVySGVpZ2h0KSB8fFxuICAgICAgICAgICAgICAgIChib3R0b20gPiAwICYmIGJvdHRvbSA8IGlubmVySGVpZ2h0KSkgJiZcbiAgICAgICAgICAgICgobGVmdCA+IDAgJiYgbGVmdCA8IGlubmVyV2lkdGgpIHx8IChyaWdodCA+IDAgJiYgcmlnaHQgPCBpbm5lcldpZHRoKSlcbiAgICAgICAgICAgIDogdG9wID49IDAgJiYgbGVmdCA+PSAwICYmIGJvdHRvbSA8PSBpbm5lckhlaWdodCAmJiByaWdodCA8PSBpbm5lcldpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNjcm9sbCB0aGUgZWxlbWVudCBpbnRvIHZpZXdcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllc1xuICAgICAqL1xuICAgIHNjcm9sbEludG9WaWV3KHByb3BlcnRpZXM6IHVua25vd24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcocHJvcGVydGllcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUb29sdGlwRnJvbUl0ZW0oaXRlbTogRXVpTWVudUl0ZW0pOiBzdHJpbmcge1xuICAgICAgICBpZiAoaXRlbS50YWdMYWJlbCAmJiBpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5sYWJlbCArICcgKCcgKyBpdGVtLnRhZ0xhYmVsICsgJyknO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udGFnTGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnRhZ0xhYmVsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLml0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW0ubGFiZWw7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtLnRhZ0xhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtLnRhZ0xhYmVsO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbS5hY3Rpb25JY29uICYmIHRoaXMuaXRlbS5hY3Rpb25JY29uLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtLmFjdGlvbkljb24ubGFiZWw7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtLmljb25MYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS5pY29uTGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdFdWkgbWVudSBpdGVtJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGV1aS1tZW51LWl0ZW0gY2xhc3Mgb24gdGhlIEhvc3RCaW5kaW5nIGZ1bmN0aW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldENzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWktbWVudS1pdGVtJyxcbiAgICAgICAgICAgICF0aGlzLnBhcmVudCAmJiB0aGlzLmhhc0JvbGRSb290TGV2ZWwgPyAnZXVpLW1lbnUtaXRlbS0tYm9sZCcgOiAnJyxcbiAgICAgICAgXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cbn1cbiIsIkBpZiAoaXRlbS52aXNpYmxlICYmIGl0ZW0uZmlsdGVyZWQpIHtcbiAgICBAaWYgKGlzTGFiZWxJdGVtKSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgaWQ9XCJ7e2l0ZW0uaWR9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2NvbnRlbnRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1lMmVdPVwiaXRlbS5lMmVBdHRyXCJcbiAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJtZW51SXRlbVRvb2x0aXBcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBwb3NpdGlvbj1cImFmdGVyXCI+XG5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rIGV1aS1tZW51LWl0ZW1fX2xpbmstY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtX19saW5rLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0tYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0taGFzLXN1Yl09XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJtZW51SXRlbVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYWZ0ZXJcIj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLXN0YXJ0LWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1JY29uQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWNvbnRlbnQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbGFiZWwtY2F0ZWdvcnlcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWVuZC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtRW5kQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICB9XG5cbiAgICBAaWYgKGlzVXJsSXRlbSkge1xuICAgICAgICA8bGlcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGlkPVwie3tpdGVtLmlkfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1lMmVdPVwiaXRlbS5lMmVBdHRyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fY29udGVudFwiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbS0tZXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZCB8fCBpdGVtLmZpbHRlcmVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmtcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtX19saW5rLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0tYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0taGFzLXN1Yl09XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnVybCA/IGl0ZW0udXJsIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiaXRlbS51cmwgPyAnZXVpLW1lbnUtaXRlbV9fbGluay0tYWN0aXZlJyA6ICcnXCJcbiAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJtZW51SXRlbVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuXG4gICAgQGlmIChpc0xpbmtJdGVtKSB7XG4gICAgICAgIDxsaVxuICAgICAgICAgICAgcm9sZT1cIm5vbmVcIlxuICAgICAgICAgICAgaWQ9XCJ7e2l0ZW0uaWR9fVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLWUyZV09XCJpdGVtLmUyZUF0dHJcIlxuICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19jb250ZW50XCJcbiAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtLS1leHBhbmRlZF09XCJpdGVtLmV4cGFuZGVkIHx8IGl0ZW0uZmlsdGVyZWRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGlua1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW1fX2xpbmstLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtX19saW5rLS1hY3RpdmVdPVwiaXRlbS5hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtX19saW5rLS1oYXMtc3ViXT1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgICAgIFtldWlUb29sdGlwXT1cIm1lbnVJdGVtVG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgcG9zaXRpb249XCJhZnRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImxpbmtDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9saT5cbiAgICB9XG59XG5cbjxuZy10ZW1wbGF0ZSAjbGlua0NvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstc3RhcnQtYmxvY2tcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUljb25Db250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstY29udGVudC1ibG9ja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1sYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnVybEV4dGVybmFsICYmIGl0ZW0udXJsRXh0ZXJuYWxUYXJnZXQgPT09ICdfYmxhbmsnXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xhYmVsLWV4dGVybmFsXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWVjbC1leHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjJ4c1wiXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImV4dGVybmFsIGxpbmsgaWNvblwiXG4gICAgICAgICAgICAgICAgZXVpRW5kPlxuICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstZW5kLWJsb2NrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1FbmRDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBQUk9KRUNURUQgQ09OVEVOVCBCTE9DSyAtLT5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFBST0pFQ1RFRCBTVEFSVCBCTE9DSyAtLT5cbjxuZy10ZW1wbGF0ZSAjaXRlbUljb25Db250ZW50PlxuICAgIEBpZiAoIWlzQ29sbGFwc2VkKSB7XG5cbiAgICAgICAgQGlmIChoYXNJY29uKSB7XG5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5pY29uU3ZnTmFtZSkge1xuICAgICAgICAgICAgICAgIDwhLS0gU1ZHIC0tPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwie3sgaXRlbS5pY29uU3ZnTmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cInt7IGl0ZW0uaWNvblR5cGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG5cbiAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uaGFzTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgPCEtLSBNQVJLRVIgLS0+XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbWFya2VyXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwie3sgaXRlbT8ubWFya2VyVHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVsbGlwc2U6c2hhcnBcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwiMnhzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiaXRlbS5tYXJrZXJUeXBlQ2xhc3MgKyAnICcgKyAnbWFya2VyJ1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGVsc2UgaWYgKCFpc0xhYmVsSXRlbSkge1xuICAgICAgICAgICAgICAgIDwhLS0gREVGQVVMVCBmb3Igbm9uIGNhdGVnb3J5IGl0ZW1zIC0tPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWxsaXBzZTpzaGFycFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cIm5ldXRyYWwtbGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwiMnhzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uaGFzTWFya2VyKSB7XG4gICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLW1hcmtlclwiXG4gICAgICAgICAgICAgICAgZmlsbENvbG9yPVwie3sgaXRlbT8ubWFya2VyVHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZWxsaXBzZTpzaGFycFwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIjJ4c1wiXG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiaXRlbS5tYXJrZXJUeXBlQ2xhc3MgKyAnICcgKyAnbWFya2VyJ1wiPlxuICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgICBAaWYgKGhhc0NvbGxhcHNlZEluaXRpYWxzKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstaW5pdGlhbHMgZXVpLXUtYy1iZy17e2l0ZW0uaWNvblR5cGVDbGFzc319XCI+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5pbml0aWFscyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAoaGFzSWNvbikge1xuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pY29uU3ZnTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICA8IS0tIFNWRyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInt7IGl0ZW0uaWNvblN2Z05hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwie3sgaXRlbS5pY29uVHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuXG4gICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoaXRlbS5oYXNNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNQVJLRVIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1tYXJrZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwie3sgaXRlbT8ubWFya2VyVHlwZUNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJlbGxpcHNlOnNoYXJwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyeHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiaXRlbS5tYXJrZXJUeXBlQ2xhc3MgKyAnICcgKyAnbWFya2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBERUZBVUxUIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWxsaXBzZTpzaGFycFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJuZXV0cmFsLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyeHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiaXRlbS5pY29uTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstaWNvbiBldWktdS1tbC0yeHNcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwic3F1YXJlOnNoYXJwXCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwibmV1dHJhbC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCIyeHNcIj5cbiAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUFJPSkVDVEVEIEVORCBCTE9DSyAtLT5cbjxuZy10ZW1wbGF0ZSAjaXRlbUVuZENvbnRlbnQ+XG4gICAgQGlmIChpdGVtLnRhZ0xhYmVsKSB7XG4gICAgICAgIEBpZiAoaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxldWktYmFkZ2UgW2V1aVZhcmlhbnRdPVwiaXRlbS50YWdUeXBlQ2xhc3NcIiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstZG90dGVkLWJhZGdlXCI+PC9ldWktYmFkZ2U+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGV1aS1iYWRnZSBbZXVpVmFyaWFudF09XCJpdGVtLnRhZ1R5cGVDbGFzc1wiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0udGFnTGFiZWwgfX1cbiAgICAgICAgICAgIDwvZXVpLWJhZGdlPlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIml0ZW0uYWN0aW9uSWNvblwiXG4gICAgICAgIGV1aUJ1dHRvblxuICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgZXVpU2l6ZVNcbiAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAoa2V5ZG93bik9XCJvbkFjdGlvbkljb25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXNvdXQpPVwib25BY3Rpb25JY29uRm9jdXNPdXQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJmb2N1c0FjdGlvbkljb24oKVwiXG4gICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1hY3Rpb24taWNvblwiXG4gICAgICAgIFtldWlEaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmFjdGlvbkljb24/LmxhYmVsXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uSWNvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGV1aS1pY29uLXN2ZyBbaWNvbl09XCJpdGVtLmFjdGlvbkljb24/Lmljb25cIiBbZmlsbENvbG9yXT1cIml0ZW0uYWN0aW9uSWNvbj8uY29sb3JcIj48L2V1aS1pY29uLXN2Zz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxldWktaWNvbi1idXR0b24gKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLXRvZ2dsZVwiXG4gICAgICAgIFtpY29uXT1cIml0ZW0uZXhwYW5kZWQgPyAnY2hldnJvbi11cDpzaGFycCc6ICdjaGV2cm9uLWRvd246c2hhcnAnXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9uRXhwYW5kVG9nZ2xlKCRldmVudClcIlxuICAgICAgICBbYXJpYUxhYmVsXT1cIml0ZW0uZXhwYW5kZWQgPyBjb2xsYXBzZU1lbnVMYWJlbCA6IGV4cGFuZE1lbnVMYWJlbFwiXG4gICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICBbZXVpRGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiLz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW1lbnUtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktbWVudS9ldWktbWVudS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2V1aS1tZW51L2V1aS1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFJWixnQkFBZ0IsR0FFbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0FBU3pDLE1BQU0sT0FBTyxvQkFBb0I7SUFLN0IsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzdELENBQUM7SUFDRCxJQUNJLFlBQVk7UUFDWixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUNELElBQ0ksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDN0IsQ0FBQztJQXFCRCxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBNUNoQixTQUFJLEdB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T0FBTztnQkFJVSxRQUFRO3NCQUFyQyxXQUFXO3VCQUFDLGVBQWU7Z0JBRXhCLFlBQVk7c0JBRGYsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBSzdCLFlBQVk7c0JBRGYsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBUzdCLFlBQVk7c0JBRGYsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBS3hCLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQVVpQyxPQUFPO3NCQUE5QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsV0FBVztzQkFBbEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxvQkFBb0I7c0JBQTNELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZ0JBQWdCO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQTRCL0IsZUFBZTtzQkFEckIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBPbkluaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuaW1wb3J0IHsgY29uc3VtZUV2ZW50IH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aU1lbnVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZXVpLW1lbnUtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLW1lbnUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1tZW51LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aU1lbnVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEZvY3VzYWJsZU9wdGlvbiB7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnbWVudWl0ZW0nO1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJykgYXJpYUxhYmVsID0gJyc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3NzQ2xhc3NlcygpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGFiaW5kZXgnKSB0YWJpbmRleCA9ICctMSc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKVxuICAgIGdldCBhcmlhSGFzUG9wdXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW0/LmNoaWxkcmVuPy5sZW5ndGggPiAwPyB0cnVlIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gICAgZ2V0IGFyaWFFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYodGhpcy5pdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtLmV4cGFuZGVkID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gICAgZ2V0IGFyaWFEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS5kaXNhYmxlZFxuICAgIH1cblxuICAgIEBJbnB1dCgpIGl0ZW06IEV1aU1lbnVJdGVtO1xuICAgIEBJbnB1dCgpIHBhcmVudDogRXVpTWVudUl0ZW07XG4gICAgQE91dHB1dCgpIGV4cGFuZFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpTWVudUl0ZW0+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpTWVudUl0ZW0+KCk7XG5cbiAgICBleHBhbmRNZW51TGFiZWwgPSAnRXhwYW5kJztcbiAgICBjb2xsYXBzZU1lbnVMYWJlbCA9ICdDb2xsYXBzZSc7XG5cbiAgICBpc1VybEl0ZW0gPSBmYWxzZTtcbiAgICBpc0xpbmtJdGVtID0gZmFsc2U7XG4gICAgaXNMYWJlbEl0ZW0gPSBmYWxzZTtcbiAgICBpc0FjdGlvbkljb25Gb2N1c2VkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzSWNvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzVG9vbHRpcDogYm9vbGVhbjtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0NvbGxhcHNlZEluaXRpYWxzOiBib29sZWFuO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNCb2xkUm9vdExldmVsOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNVcmxJdGVtID0gKHRoaXMuaXRlbS51cmwgfHwgdGhpcy5pdGVtLnVybEV4dGVybmFsIHx8IHRoaXMuaXRlbS5jaGlsZHJlbiB8fCB0aGlzLml0ZW0uY29tbWFuZCkgJiYgIXRoaXMuaXRlbS5saW5rO1xuICAgICAgICB0aGlzLmlzTGFiZWxJdGVtID0gIXRoaXMuaXRlbS51cmwgJiYgIXRoaXMuaXRlbS51cmxFeHRlcm5hbCAmJiAhdGhpcy5pdGVtLmNvbW1hbmQgJiYgIXRoaXMuaXRlbS5jaGlsZHJlbiAmJiAhdGhpcy5pdGVtLmxpbms7XG5cbiAgICAgICAgdGhpcy5pc0xpbmtJdGVtID0gIXRoaXMuaXNVcmxJdGVtICYmICF0aGlzLmlzTGFiZWxJdGVtO1xuICAgICAgICB0aGlzLmFyaWFMYWJlbCA9IHRoaXMuZ2V0QXJpYUxhYmVsKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pdGVtICYmIGNoYW5nZXMuaXRlbS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbSA9IGNoYW5nZXMuaXRlbS5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZighdGhpcy5pdGVtLnVybEV4dGVybmFsVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtLnVybEV4dGVybmFsVGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih0aGlzLml0ZW0uZmlsdGVyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbS5maWx0ZXJlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih0aGlzLml0ZW0uZGlzYWJsZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbS52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0IG1lbnVJdGVtVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5oYXNUb29sdGlwICYmIHRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW0udG9vbHRpcCB8fCB0aGlzLmdldFRvb2x0aXBGcm9tSXRlbSh0aGlzLml0ZW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KHRoaXMuaXRlbSk7XG4gICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FeHBhbmRUb2dnbGUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQodGhpcy5pdGVtKTtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3Rpb25JY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pdGVtLmFjdGlvbkljb24/LmFjdGlvbihldmVudCk7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JY29uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW0uYWN0aW9uSWNvbj8uYWN0aW9uKGV2ZW50KTtcbiAgICAgICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNBY3Rpb25JY29uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpLW1lbnUtaXRlbV9fbGluay1hY3Rpb24taWNvbicpLmZvY3VzKCk7XG4gICAgICAgIHRoaXMuaXNBY3Rpb25JY29uRm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25BY3Rpb25JY29uRm9jdXNPdXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNBY3Rpb25JY29uRm9jdXNlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhbiBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0XG4gICAgICogQHBhcmFtIGVsXG4gICAgICogQHBhcmFtIHBhcnRpYWxseVZpc2libGVcbiAgICAgKi9cbiAgICBlbGVtZW50SXNWaXNpYmxlSW5WaWV3cG9ydChwYXJ0aWFsbHlWaXNpYmxlID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgfSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB7IGlubmVySGVpZ2h0LCBpbm5lcldpZHRoIH0gPSB3aW5kb3c7XG4gICAgICAgIHJldHVybiBwYXJ0aWFsbHlWaXNpYmxlXG4gICAgICAgICAgICA/ICgodG9wID4gMCAmJiB0b3AgPCBpbm5lckhlaWdodCkgfHxcbiAgICAgICAgICAgICAgICAoYm90dG9tID4gMCAmJiBib3R0b20gPCBpbm5lckhlaWdodCkpICYmXG4gICAgICAgICAgICAoKGxlZnQgPiAwICYmIGxlZnQgPCBpbm5lcldpZHRoKSB8fCAocmlnaHQgPiAwICYmIHJpZ2h0IDwgaW5uZXJXaWR0aCkpXG4gICAgICAgICAgICA6IHRvcCA+PSAwICYmIGxlZnQgPj0gMCAmJiBib3R0b20gPD0gaW5uZXJIZWlnaHQgJiYgcmlnaHQgPD0gaW5uZXJXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgdGhlIGVsZW1lbnQgaW50byB2aWV3XG4gICAgICogQHBhcmFtIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBzY3JvbGxJbnRvVmlldyhwcm9wZXJ0aWVzOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHByb3BlcnRpZXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VG9vbHRpcEZyb21JdGVtKGl0ZW06IEV1aU1lbnVJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGl0ZW0udGFnTGFiZWwgJiYgaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubGFiZWwgKyAnICgnICsgaXRlbS50YWdMYWJlbCArICcpJztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5sYWJlbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnRhZ0xhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS50YWdMYWJlbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEFyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pdGVtLmxhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtLmxhYmVsO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbS50YWdMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS50YWdMYWJlbDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW0uYWN0aW9uSWNvbiAmJiB0aGlzLml0ZW0uYWN0aW9uSWNvbi5sYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbS5hY3Rpb25JY29uLmxhYmVsO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbS5pY29uTGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW0uaWNvbkxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnRXVpIG1lbnUgaXRlbSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBldWktbWVudS1pdGVtIGNsYXNzIG9uIHRoZSBIb3N0QmluZGluZyBmdW5jdGlvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpLW1lbnUtaXRlbScsXG4gICAgICAgICAgICAhdGhpcy5wYXJlbnQgJiYgdGhpcy5oYXNCb2xkUm9vdExldmVsID8gJ2V1aS1tZW51LWl0ZW0tLWJvbGQnIDogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG59XG4iLCJAaWYgKGl0ZW0udmlzaWJsZSAmJiBpdGVtLmZpbHRlcmVkKSB7XG4gICAgQGlmIChpc0xhYmVsSXRlbSkge1xuICAgICAgICA8bGlcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGlkPVwie3tpdGVtLmlkfX1cIlxuICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19jb250ZW50XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZTJlXT1cIml0ZW0uZTJlQXR0clwiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwibWVudUl0ZW1Ub29sdGlwXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJhZnRlclwiPlxuXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluayBldWktbWVudS1pdGVtX19saW5rLWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW1fX2xpbmstLWFjdGl2ZV09XCJpdGVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW1fX2xpbmstLWhhcy1zdWJdPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwibWVudUl0ZW1Ub29sdGlwXCJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImFmdGVyXCI+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1zdGFydC1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtSWNvbkNvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1jb250ZW50LWJsb2NrXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWxhYmVsLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWxhYmVsLWNhdGVnb3J5XCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1lbmQtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbUVuZENvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgfVxuXG4gICAgQGlmIChpc1VybEl0ZW0pIHtcbiAgICAgICAgPGxpXG4gICAgICAgICAgICByb2xlPVwibm9uZVwiXG4gICAgICAgICAgICBpZD1cInt7aXRlbS5pZH19XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZTJlXT1cIml0ZW0uZTJlQXR0clwiXG4gICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2NvbnRlbnRcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW0tLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW0tLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWQgfHwgaXRlbS5maWx0ZXJlZFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW1fX2xpbmstLWFjdGl2ZV09XCJpdGVtLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1tZW51LWl0ZW1fX2xpbmstLWhhcy1zdWJdPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS51cmwgPyBpdGVtLnVybCA6IG51bGxcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlXT1cIml0ZW0udXJsID8gJ2V1aS1tZW51LWl0ZW1fX2xpbmstLWFjdGl2ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwibWVudUl0ZW1Ub29sdGlwXCJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImFmdGVyXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlua0NvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2xpPlxuICAgIH1cblxuICAgIEBpZiAoaXNMaW5rSXRlbSkge1xuICAgICAgICA8bGlcbiAgICAgICAgICAgIHJvbGU9XCJub25lXCJcbiAgICAgICAgICAgIGlkPVwie3tpdGVtLmlkfX1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1lMmVdPVwiaXRlbS5lMmVBdHRyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fY29udGVudFwiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbS0tZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbS0tZXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZCB8fCBpdGVtLmZpbHRlcmVkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmtcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktbWVudS1pdGVtX19saW5rLS1kaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0tYWN0aXZlXT1cIml0ZW0uYWN0aXZlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLW1lbnUtaXRlbV9fbGluay0taGFzLXN1Yl09XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJtZW51SXRlbVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYWZ0ZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsaW5rQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbGk+XG4gICAgfVxufVxuXG48bmctdGVtcGxhdGUgI2xpbmtDb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLXN0YXJ0LWJsb2NrXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1JY29uQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWNvbnRlbnQtYmxvY2tcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS51cmxFeHRlcm5hbCAmJiBpdGVtLnVybEV4dGVybmFsVGFyZ2V0ID09PSAnX2JsYW5rJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19sYWJlbC1leHRlcm5hbFwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImV1aS1lY2wtZXh0ZXJuYWxcIlxuICAgICAgICAgICAgICAgIHNpemU9XCIyeHNcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHRlcm5hbCBsaW5rIGljb25cIlxuICAgICAgICAgICAgICAgIGV1aUVuZD5cbiAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWVuZC1ibG9ja1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtRW5kQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gUFJPSkVDVEVEIENPTlRFTlQgQkxPQ0sgLS0+XG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBQUk9KRUNURUQgU1RBUlQgQkxPQ0sgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1JY29uQ29udGVudD5cbiAgICBAaWYgKCFpc0NvbGxhcHNlZCkge1xuXG4gICAgICAgIEBpZiAoaGFzSWNvbikge1xuXG4gICAgICAgICAgICBAaWYgKGl0ZW0uaWNvblN2Z05hbWUpIHtcbiAgICAgICAgICAgICAgICA8IS0tIFNWRyAtLT5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInt7IGl0ZW0uaWNvblN2Z05hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJ7eyBpdGVtLmljb25UeXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuXG4gICAgICAgICAgICB9IEBlbHNlIGlmIChpdGVtLmhhc01hcmtlcikge1xuICAgICAgICAgICAgICAgIDwhLS0gTUFSS0VSIC0tPlxuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLW1hcmtlclwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cInt7IGl0ZW0/Lm1hcmtlclR5cGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJlbGxpcHNlOnNoYXJwXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjJ4c1wiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIml0ZW0ubWFya2VyVHlwZUNsYXNzICsgJyAnICsgJ21hcmtlcidcIj5cbiAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBlbHNlIGlmICghaXNMYWJlbEl0ZW0pIHtcbiAgICAgICAgICAgICAgICA8IS0tIERFRkFVTFQgZm9yIG5vbiBjYXRlZ29yeSBpdGVtcyAtLT5cbiAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVsbGlwc2U6c2hhcnBcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJuZXV0cmFsLWxpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjJ4c1wiPlxuICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIGlmIChpdGVtLmhhc01hcmtlcikge1xuICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1tYXJrZXJcIlxuICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cInt7IGl0ZW0/Lm1hcmtlclR5cGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImVsbGlwc2U6c2hhcnBcIlxuICAgICAgICAgICAgICAgIHNpemU9XCIyeHNcIlxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIml0ZW0ubWFya2VyVHlwZUNsYXNzICsgJyAnICsgJ21hcmtlcidcIj5cbiAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICB9XG5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQGlmIChoYXNDb2xsYXBzZWRJbml0aWFscykge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWluaXRpYWxzIGV1aS11LWMtYmcte3tpdGVtLmljb25UeXBlQ2xhc3N9fVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uaW5pdGlhbHMgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICBAaWYgKGhhc0ljb24pIHtcbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvblN2Z05hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTVkcgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJ7eyBpdGVtLmljb25TdmdOYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cInt7IGl0ZW0uaWNvblR5cGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic1wiPlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cblxuICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGl0ZW0uaGFzTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTUFSS0VSIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstbWFya2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cInt7IGl0ZW0/Lm1hcmtlclR5cGVDbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZWxsaXBzZTpzaGFycFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMnhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIml0ZW0ubWFya2VyVHlwZUNsYXNzICsgJyAnICsgJ21hcmtlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gREVGQVVMVCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImVsbGlwc2U6c2hhcnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwibmV1dHJhbC1saWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMnhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsXT1cIml0ZW0uaWNvbkxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWljb24gZXVpLXUtbWwtMnhzXCJcbiAgICAgICAgICAgICAgICAgICAgaWNvbj1cInNxdWFyZTpzaGFycFwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcj1cIm5ldXRyYWwtbGlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwiMnhzXCI+XG4gICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFBST0pFQ1RFRCBFTkQgQkxPQ0sgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1FbmRDb250ZW50PlxuICAgIEBpZiAoaXRlbS50YWdMYWJlbCkge1xuICAgICAgICBAaWYgKGlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICA8ZXVpLWJhZGdlIFtldWlWYXJpYW50XT1cIml0ZW0udGFnVHlwZUNsYXNzXCIgY2xhc3M9XCJldWktbWVudS1pdGVtX19saW5rLWRvdHRlZC1iYWRnZVwiPjwvZXVpLWJhZGdlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxldWktYmFkZ2UgW2V1aVZhcmlhbnRdPVwiaXRlbS50YWdUeXBlQ2xhc3NcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtLnRhZ0xhYmVsIH19XG4gICAgICAgICAgICA8L2V1aS1iYWRnZT5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJpdGVtLmFjdGlvbkljb25cIlxuICAgICAgICBldWlCdXR0b25cbiAgICAgICAgZXVpUm91bmRlZFxuICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgIGV1aVNpemVTXG4gICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgKGtleWRvd24pPVwib25BY3Rpb25JY29uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3Vzb3V0KT1cIm9uQWN0aW9uSWNvbkZvY3VzT3V0KClcIlxuICAgICAgICAoZm9jdXMpPVwiZm9jdXNBY3Rpb25JY29uKClcIlxuICAgICAgICBjbGFzcz1cImV1aS1tZW51LWl0ZW1fX2xpbmstYWN0aW9uLWljb25cIlxuICAgICAgICBbZXVpRGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5hY3Rpb25JY29uPy5sYWJlbFwiXG4gICAgICAgIChjbGljayk9XCJvbkFjdGlvbkljb25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxldWktaWNvbi1zdmcgW2ljb25dPVwiaXRlbS5hY3Rpb25JY29uPy5pY29uXCIgW2ZpbGxDb2xvcl09XCJpdGVtLmFjdGlvbkljb24/LmNvbG9yXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8ZXVpLWljb24tYnV0dG9uICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID4gMFwiXG4gICAgICAgIGNsYXNzPVwiZXVpLW1lbnUtaXRlbV9fbGluay10b2dnbGVcIlxuICAgICAgICBbaWNvbl09XCJpdGVtLmV4cGFuZGVkID8gJ2NoZXZyb24tdXA6c2hhcnAnOiAnY2hldnJvbi1kb3duOnNoYXJwJ1wiXG4gICAgICAgIChidXR0b25DbGljayk9XCJvbkV4cGFuZFRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJpdGVtLmV4cGFuZGVkID8gY29sbGFwc2VNZW51TGFiZWwgOiBleHBhbmRNZW51TGFiZWxcIlxuICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgW2V1aURpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIi8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -218,7 +218,7 @@ export class EuiMenuComponent {
|
|
218
218
|
onClick(item) {
|
219
219
|
if (!item.disabled) {
|
220
220
|
if (item.urlExternal) {
|
221
|
-
window.open(item.urlExternal, item.urlExternalTarget);
|
221
|
+
window.open(item.urlExternal, item.urlExternalTarget || '_blank');
|
222
222
|
}
|
223
223
|
else if (item.url) {
|
224
224
|
this.router.navigate([item.url], { relativeTo: this.route, fragment: this.fragmentId });
|
@@ -546,4 +546,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
|
|
546
546
|
type: HostListener,
|
547
547
|
args: ['click', ['$event']]
|
548
548
|
}] } });
|
549
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLW1lbnUvZXVpLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLW1lbnUvZXVpLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsWUFBWSxFQUdaLFNBQVMsRUFDVCxVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLGdCQUFnQjtJQUl6QixJQUNXLFVBQVU7UUFDakIsT0FBTztZQUNILFVBQVU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFBLENBQUMsQ0FBQyxFQUFFO1NBQ3JDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUE0QkQsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIs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QUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBR25DLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsT0FBTztnQkFVWCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRWtDLFdBQVc7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0Usb0JBQW9CO3NCQUEzRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUtFLGNBQWM7c0JBQXJELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsTUFBTTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxlQUFlO3NCQUF0RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLGdCQUFnQjtzQkFBdkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFFNUIsT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQVlQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBjb25zdW1lRXZlbnQgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpTWVudUl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2V1aS1tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV1aU1lbnVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZXVpLW1lbnUtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLW1lbnUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktbWVudS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGRyZW4oRXVpTWVudUl0ZW1Db21wb25lbnQpIHByb3RlY3RlZCBtZW51SXRlbXNDb21wb25lbnRzOiBRdWVyeUxpc3Q8RXVpTWVudUl0ZW1Db21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByb3RlY3RlZCBmaWx0ZXJJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2V1aS1tZW51JyxcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPyAnZXVpLW1lbnUtLWNvbGxhcHNlZCcgOiAnJyxcbiAgICAgICAgICAgICF0aGlzLmhhc0ljb25zID8gJ2V1aS1tZW51LS1uby1pY29ucycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNGbGF0ID8gJ2V1aS1tZW51LS1mbGF0JzogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBpdGVtczogRXVpTWVudUl0ZW1bXTtcbiAgICBASW5wdXQoKSBzZWFyY2hGaWx0ZXJMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4dGVybmFsTGlua0xhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZnJhZ21lbnRJZDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZpbHRlclZhbHVlID0gJyc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzQ29sbGFwc2VkSW5pdGlhbHMgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzRmlsdGVyID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0ljb25zID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1Rvb2x0aXAgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIEV4cGFuZCBhbGwgaXRlbXMgaW4gdGhlIG1lbnUuIEFmZmVjdHMgb25seSBpdGVtcyB0aGF0IGhhdmUgbm8gZXhwYW5kZWQgcHJvcGVydHkgc2V0LlxuICAgICAqIGUuZy4gaXRlbXMgPSBbe2xhYmVsOiB0ZXN0LCBleHBhbmRlZDogdHJ1ZX0sIHtsYWJlbDogdGVzdDIsIGV4cGFuZGVkOiBmYWxzZX0sIHtsYWJlbDogdGVzdDN9XSB3aWxsIGV4cGFuZCBvbmx5IHRlc3QzLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBleHBhbmRBbGxJdGVtcyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0ZsYXQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU2Nyb2xsVG9JdGVtID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0JvbGRSb290TGV2ZWwgPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBpc0NsaWNrOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEV1aU1lbnVJdGVtPiA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpTWVudUl0ZW0+KCk7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgZm9jdXNLZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8RXVpTWVudUl0ZW1Db21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gZmluZHMgZmlyc3QgY2hpbGQgd2hlbiBBcnJvd0Rvd25cbiAgICAgICAgY29uc3QgZmlyc3RDaGlsZCA9IHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uY2hpbGRyZW4/IHRoaXMuZmluZEZpcnN0RmlsdGVyZWRJdGVtKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uY2hpbGRyZW4pIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmaXJzdEZvY3VzYWJsZUl0ZW0gPSB0aGlzLmZpbmRGb2N1c2FibGVJdGVtKGZpcnN0Q2hpbGQpO1xuICAgICAgICAvLyBmaW5kcyB0aGUgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5wYXJlbnQ7XG4gICAgICAgIGNvbnN0IHBhcmVudEZvY3VzYWJsZUl0ZW0gPSB0aGlzLmZpbmRGb2N1c2FibGVJdGVtKHBhcmVudCk7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtLmlzTGlua0l0ZW0gfHwgdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5pc1VybEl0ZW0pICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0ub25DbGljayhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgICAgICAgICBpZih0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmFjdGlvbkljb24pe1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQWN0aW9uSWNvbkZvY3VzU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5vbkV4cGFuZFRvZ2dsZShldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOiB7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5hY3Rpb25JY29uKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0FjdGlvbkljb25Gb2N1c1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtLm9uRXhwYW5kVG9nZ2xlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5jaGlsZHJlbiAmJiB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vZm9jdXNlcyBmaXJzdCBjaGlsZFxuICAgICAgICAgICAgICAgICAgICBmaXJzdEZvY3VzYWJsZUl0ZW0/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZmlyc3RGb2N1c2FibGVJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmaW5kcyBsYXN0IGZpbHRlcmVkIGNoaWxkIHdoZW4gQXJyb3dEb3duIGFuZCBuYXZpZ2F0aW5nIHdpdGhpbiBzdWJtZW51XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbmRGaWx0ZXJlZEl0ZW1zKHBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RDaGlsZEluZGV4ID0gKGZpbHRlcmVkQ2hpbGRyZW4/Lmxlbmd0aCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGQgPSBmaWx0ZXJlZENoaWxkcmVuW2xhc3RDaGlsZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUl0ZW0gPSB0aGlzLmZpbmRGb2N1c2FibGVJdGVtKGxhc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBhY3RpdmUgaXRlbSBpcyB0aGUgbGFzdCBjaGlsZCwgcHV0cyB0aGUgZm9jdXMgb24gdGhlIG5leHQgcGFyZW50XG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0gPT09IGxhc3RGb2N1c2FibGVJdGVtKXtcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShwYXJlbnRGb2N1c2FibGVJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ICsxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNraXBzIHJlbWFpbmluZyBjaGlsZHJlbiBpbiB0aGUgcXVlcnkgbGlzdCB3aGVuIHRoZXJlIGlzIGV4cGFuZGVkIG5vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2tpcFByZWRpY2F0ZShtZW51SXRlbSA9PiBtZW51SXRlbS5wYXJlbnQgIT0gdW5kZWZpbmVkIHx8IG1lbnVJdGVtLml0ZW0udmlzaWJsZSA9PT0gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOiB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbmRzIGZpcnN0IGZpbHRlcmVkIGNoaWxkIHdoZW4gQXJyb3dVcFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maW5kRmlsdGVyZWRJdGVtcyhwYXJlbnQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdENoaWxkVXAgPSBmaWx0ZXJlZENoaWxkcmVuWycwJ11cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVJdGVtVXAgPSB0aGlzLmZpbmRGb2N1c2FibGVJdGVtKGZpcnN0Q2hpbGRVcCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gbmF2aWdhdGluZyB1cCBvbiBhIHN1Ym1lbnUgZm9jdXNlcyB0aGUgcGFyZW50IGlmIHRoZSBhY3RpdmUgaXRlbSBpcyB0aGUgZmlyc3QgY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbSA9PT0gZmlyc3RGb2N1c2FibGVJdGVtVXApe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShwYXJlbnRGb2N1c2FibGVJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCAtMSk7XG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBuYXZpZ2F0aW5nIHVwIGZyb20gYSBwYXJlbnQgZWxlbWVudCB0byBhbiBleHBhbmRlZCBzdWJtZW51LCBmaW5kcyB0aGUgbGFzdCBjaGlsZCBhbmQgZm9jdXNlcyBpdFxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmNoaWxkcmVuICYmIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uZXhwYW5kZWQpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmluZEZpbHRlcmVkSXRlbXModGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGRJbmRleFVwID0gKGZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoKSAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0Rm9jdXNhYmxlSXRlbVVwID10aGlzLmZpbmRGb2N1c2FibGVJdGVtKGZpbHRlcmVkQ2hpbGRyZW5bbGFzdENoaWxkSW5kZXhVcF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbShsYXN0Rm9jdXNhYmxlSXRlbVVwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY29uZmlndXJlSXRlbXModGhpcy5pdGVtcyk7XG4gICAgICAgICAgICAvLyBnZXQgY3VycmVudCB1cmxcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmw7XG4gICAgICAgICAgICAvLyBmaW5kIGFuIGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IHVybCBvciB0aGUgbW9zdCByZWxldmFudCBvbmVcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRNb3N0UmVsZXZhbnRJdGVtKGN1cnJlbnRVcmwsIHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgLy8gZXhwYW5kIHRvIHRoYXQgaXRlbVxuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFRvR2l2ZW5JdGVtKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXhwYW5kIC8gQ29sbGFwc2UgQWxsIGl0ZW1zXG4gICAgICAgIGlmIChjaGFuZ2VzLmV4cGFuZEFsbEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5zZXRFeHBhbmRlZFRvQWxsSXRlbXMoY29lcmNlQm9vbGVhblByb3BlcnR5KGNoYW5nZXMuZXhwYW5kQWxsSXRlbXMuY3VycmVudFZhbHVlKSwgdGhpcy5pdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5maWx0ZXJWYWx1ZSAmJiB0aGlzLmhhc0ZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5vbkZpbHRlcihjaGFuZ2VzLmZpbHRlclZhbHVlLmN1cnJlbnRWYWx1ZSA/PyAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZWZyZXNoIHdoZW4gaW50ZXJhY3RpdmUgY29sbGFwc2VkIHRvIGluaXRpYWxzXG4gICAgICAgIGlmIChjaGFuZ2VzLmhhc0NvbGxhcHNlZEluaXRpYWxzKSB7XG4gICAgICAgICAgICB0aGlzLmhhc0NvbGxhcHNlZEluaXRpYWxzID0gY2hhbmdlcy5oYXNDb2xsYXBzZWRJbml0aWFscy5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5jb25maWd1cmVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGNoYW5nZXMuaGFzU2Nyb2xsVG9JdGVtKXtcbiAgICAgICAgICAgIHRoaXMuaGFzU2Nyb2xsVG9JdGVtID0gY2hhbmdlcy5oYXNTY3JvbGxUb0l0ZW0uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYodGhpcy5oYXNTY3JvbGxUb0l0ZW0pe1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtKHRoaXMucm91dGVyLnVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihjaGFuZ2VzLmhhc0ZpbHRlcil7XG4gICAgICAgICAgICB0aGlzLmhhc0ZpbHRlciA9IGNoYW5nZXMuaGFzRmlsdGVyLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmKCF0aGlzLmhhc0ZpbHRlcikge1xuICAgICAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCBhbGwgaXRlbXMgYW5kIHJlc2V0IHRoZSBmaWx0ZXJlZCBwcm9wZXJ0eVxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtcyh0aGlzLml0ZW1zLCAnJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBMYWJlbHMgZGVmYXVsdCB2YWx1ZXMgLSBUT0RPIDogdHJhbnNsYXRpb25zXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hGaWx0ZXJMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWx0ZXJMYWJlbCA9ICdTZWFyY2ggZmlsdGVyJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN1YnNjcmlwdGlvbiB0byByb3V0ZXMgdXJsIGNoYW5nZXMgZm9yIGFjdGl2YXRpbmcgdGhlIHNjcm9sbEludG9WaWV3XG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgcm91dGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzU2Nyb2xsVG9JdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9JdGVtKGV2ZW50LnVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIGluc3RhbnRpYXRlcyBGb2N1c0tleU1hbmFnZXIgd2l0aCB0aGUgcXVlcnkgbGlzdCBvZiBpdGVtcyBlbmFibGluZyB3cmFwcGluZ1xuICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5tZW51SXRlbXNDb21wb25lbnRzKS53aXRoV3JhcCgpO1xuXG4gICAgICAgIC8vIHNjcm9sbHMgdG8gdGhlIGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBjdXJyZW50IHVybFxuICAgICAgICBpZih0aGlzLmhhc1Njcm9sbFRvSXRlbSl7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvSXRlbSh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTp2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2xpY2soaXRlbTogRXVpTWVudUl0ZW0pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS51cmxFeHRlcm5hbCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGl0ZW0udXJsRXh0ZXJuYWwsIGl0ZW0udXJsRXh0ZXJuYWxUYXJnZXQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnVybCkge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnVybF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSwgZnJhZ21lbnQ6IHRoaXMuZnJhZ21lbnRJZCB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtLmNvbW1hbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkV4cGFuZFRvZ2dsZShpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmxpbmspIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcz8ubWFwKChpdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpdC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmlkID09PSBpdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNDbGljay5lbWl0KHRydWUpO1xuICAgICAgICB0aGlzLml0ZW1DbGljay5lbWl0KGl0ZW0pO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gdGhpcy5maW5kRm9jdXNhYmxlSXRlbShpdGVtKTtcbiAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShmb2N1c2VkSXRlbSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRXhwYW5kVG9nZ2xlKGl0ZW06IEV1aU1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLm9uRXhwYW5kVG9nZ2xlZChpdGVtLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIC8vIFRPRE86IGludmVzdGlnYXRlIHdoeSB0aGUgYWJvdmUgaXMgbmVlZGVkLiBDYW4gaXQgYmUgc2ltcGx5IFwiaXRlbS5leHBhbmRlZCA9ICFpdGVtLmV4cGFuZGVkO1wiID9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1lbnVGaWx0ZXJDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbHRlciB0aGUgbWVudSBpdGVtcyBiYXNlZCBvbiB0aGUgaW5wdXQgdmFsdWVcbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uRmlsdGVyKGV2ZW50OiBFdmVudCk6IHZvaWQ7XG4gICAgcHJvdGVjdGVkIG9uRmlsdGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBvbkZpbHRlcihldmVudE9yVmFsdWU6IEV2ZW50IHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnRPclZhbHVlIGluc3RhbmNlb2YgRXZlbnRcbiAgICAgICAgICAgID8gKGV2ZW50T3JWYWx1ZS50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWVcbiAgICAgICAgICAgIDogZXZlbnRPclZhbHVlO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5maWx0ZXJNZW51SXRlbXModGhpcy5pdGVtcywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbmRzIHRoZSBFdWlNZW51SXRlbUNvbXBvbmVudCBpbiB0aGUgcXVlcmllZCBmb2N1c2FibGVJdGVtc1tdIHRoYXQgIG1hdGNoZXMgdGhlIHBhc3NlZCBFdWlNZW51SXRlbSBvYmplY3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZW51SXRlbSBhbiBFdWlNZW51SXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRm9jdXNhYmxlSXRlbShtZW51SXRlbTogRXVpTWVudUl0ZW0gKTogRXVpTWVudUl0ZW1Db21wb25lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51SXRlbXNDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAoZm9jdXNhYmxlSXRlbSkgPT4gZm9jdXNhYmxlSXRlbS5pdGVtLmxhYmVsID09PSBtZW51SXRlbT8ubGFiZWwgJiYgZm9jdXNhYmxlSXRlbS5pdGVtLmlkID09PSBtZW51SXRlbS5pZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaW5kcyB0aGUgZmlyc3QgaXRlbSB0aGF0IGlzIGZpbHRlcmVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW1zIGFuIGFycmF5IG9mIEV1aU1lbnVJdGVtXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbmRGaXJzdEZpbHRlcmVkSXRlbShtZW51SXRlbXM6IEV1aU1lbnVJdGVtIFtdKTogRXVpTWVudUl0ZW0ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZmlsdGVyZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbmRzIGFsbCBmaWx0ZXJlZCBtZW51IGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW1zIGFuIGFycmF5IG9mIEV1aU1lbnVJdGVtXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbmRGaWx0ZXJlZEl0ZW1zKG1lbnVJdGVtczogRXVpTWVudUl0ZW0gW10pOiBFdWlNZW51SXRlbSBbXSB7XG4gICAgICAgIHJldHVybiBtZW51SXRlbXMuZmlsdGVyKChpdGVtcykgPT4gaXRlbXMuZmlsdGVyZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoZWNrcyB0aGUgZm9jdXMgc3RhdGUgb2YgdGhlIGFjdGlvbiBpY29uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY2hlY2tBY3Rpb25JY29uRm9jdXNTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGFjdGlvbiBpY29uIGlzIGZvY3VzZWQgYW5kIGlmIG5vdCBmb2N1cyBpdCwgb3RoZXJ3aXNlIGZvY3VzIHRoZSBhY3RpdmUgaXRlbVxuICAgICAgICAhdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5pc0FjdGlvbkljb25Gb2N1c2VkID8gdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5mb2N1c0FjdGlvbkljb24oKSA6IHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaWx0ZXIgYWxsIG1lbnUgaXRlbXMgZ2l2ZW4gYSB2YWx1ZVxuICAgICAqXG4gICAgICogQHBhcmFtIG1lbnVJdGVtcyBhbiBhcnJheSBvZiBtZW51IGl0ZW1zXG4gICAgICogQHBhcmFtIGZpbHRlclZhbHVlIHRoZSB2YWx1ZSB0byBmaWx0ZXIgbWVudSBpdGVtc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWx0ZXJNZW51SXRlbXMobWVudUl0ZW1zOiBFdWlNZW51SXRlbVtdLCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogRXVpTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBtZW51SXRlbXM/Lm1hcCgoaXRlbTogRXVpTWVudUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gaXRlbS5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCkpICE9PSAtMTtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuZmlsdGVyTWVudUl0ZW1zKGl0ZW0uY2hpbGRyZW4sIGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBpdGVtLmZpbHRlcmVkID0gaXRlbS5jaGlsZHJlbi5maWx0ZXIoKGwpID0+IGxbJ2ZpbHRlcmVkJ10gPT09IHRydWUpLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5maWx0ZXJlZCA9IGZvdW5kO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpdGVtLmZpbHRlcmVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSkgfHwgW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXhwYW5kIC8gY29sbGFwc2UgYWxsIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXNFeHBhbmRlZFxuICAgICAqIEBwYXJhbSBpdGVtc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRFeHBhbmRlZFRvQWxsSXRlbXMoaXNFeHBhbmRlZDogYm9vbGVhbiwgaXRlbXM6IEV1aU1lbnVJdGVtW10pOiBFdWlNZW51SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zPy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5leHBhbmRlZCA9IGl0ZW0uZXhwYW5kZWQgPz8gaXNFeHBhbmRlZDtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5zZXRFeHBhbmRlZFRvQWxsSXRlbXMoaXNFeHBhbmRlZCwgaXRlbS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihpdGVtLCB7IHZpc2libGU6IGl0ZW0udmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGl0ZW0udmlzaWJsZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZXhwYW5kIC8gY29sbGFwc2UgYSBtZW51IGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHdoZXJlIHRoZSBcImV4cGFuZFwiIGhhZCBiZWVuIHRvZ2dsZWRcbiAgICAgKiBAcGFyYW0gaXRlbXMgVGhlIGl0ZW1zIGxpc3QgKHVzZWQgZm9yIHJlY3Vyc2lvbilcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgb25FeHBhbmRUb2dnbGVkKGl0ZW06IEV1aU1lbnVJdGVtLCBpdGVtczogRXVpTWVudUl0ZW1bXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtSWR4ID0gaXRlbXM/LmluZGV4T2YoaXRlbSk7XG4gICAgICAgIGlmIChpdGVtSWR4ID4gLTEpIHtcbiAgICAgICAgICAgIGl0ZW1zW2l0ZW1JZHhdLmV4cGFuZGVkID0gIWl0ZW1zW2l0ZW1JZHhdLmV4cGFuZGVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FeHBhbmRUb2dnbGVkKGl0ZW0sIGkuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29uZmlndXJlIGFuIGFycmF5IG9mIGl0ZW1zIHdpdGggdmlzaWJsZSwgZmlsdGVyZWQgYW5kIGV4cGFuZCAoaW4gY2FzZSBvZiBleHBhbmRBbGxJdGVtcyBmbGFnIGVuYWJsZWQpIHByb3BlcnRpZXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyBBbiBhcnJheSBvZiBFdWlNZW51SXRlbVxuICAgICAqIEBwYXJhbSBwYXJlbnQgdGhlIHBhcmVudCBpdGVtIG9mIGl0ZW1zIGlmIGV4aXN0c1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb25maWd1cmVJdGVtcyhpdGVtczogRXVpTWVudUl0ZW1bXSwgcGFyZW50PzogRXVpTWVudUl0ZW0pOiBFdWlNZW51SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zPy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIC8vIHJlY3Vyc2lvbiBpbiBjYXNlIHRoZXJlIGFyZSBjaGlsZHJlblxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gdGhpcy5jb25maWd1cmVJdGVtcyhpdGVtLmNoaWxkcmVuLCBpdGVtKTtcbiAgICAgICAgICAgICAgICAvLyBleHBhbmQgYWxsIHBhcmVudHMgd2l0aCBjaGlsZHJlblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZEFsbEl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHBvaW50IHRvIHRoZSBwYXJlbnRcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBpdGVtcyBhcmUgY29uZmlndXJlZCB3aXRoIGEgdW5pcXVlIGlkXG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcz8ubWFwKChpdGVtKSA9PiB0aGlzLnNldFJhbmRvbUlkKGl0ZW0pKTtcblxuICAgICAgICAgICAgaWYgKGl0ZW0ubGFiZWwgJiYgdGhpcy5oYXNDb2xsYXBzZWRJbml0aWFscykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gaXRlbS5sYWJlbC5zcGxpdCgnICcpO1xuICAgICAgICAgICAgICAgIGlmICh3b3Jkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5pbml0aWFscyA9IGAke2l0ZW0ubGFiZWwuc3Vic3RyaW5nKDAsIDEpfSR7aXRlbS5sYWJlbC5zdWJzdHJpbmcoMSwgMSl9YDtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaW5pdGlhbHMgPSBgJHt3b3Jkc1swXS5zdWJzdHJpbmcoMCwgMSl9JHt3b3Jkc1sxXS5zdWJzdHJpbmcoMCwgMSl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGl0ZW0sIHsgdmlzaWJsZTogaXRlbS52aXNpYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogaXRlbS52aXNpYmxlLCBmaWx0ZXJlZDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSBVUkwgYW5kIGEgbGlzdCBvZiBpdGVtcywgaXQgd2lsbCBleHBhbmQgdGhlIGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBVUkwuIElmIG5vdCBpdGVtIG1hdGNoZXMgZXhhY3RseSB0aGUgdXJsLCB0aGVuIGl0IHdpbGxcbiAgICAgKiBtYXRjaCB0aGUgaXRlbSB0aGF0IGlzIG1vc3QgcmVsZXZhbnQgdG8gdGhhdCB1cmwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJsXG4gICAgICogQHBhcmFtIGl0ZW1zXG4gICAgICogQHBhcmFtIHJlbGV2YW50SXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kTW9zdFJlbGV2YW50SXRlbSh1cmw6IHN0cmluZywgaXRlbXM6IEV1aU1lbnVJdGVtW10sIHJlbGV2YW50SXRlbT86IEV1aU1lbnVJdGVtKTogRXVpTWVudUl0ZW0ge1xuICAgICAgICBpZiAoIWl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnVybCAmJiB1cmwuaW5kZXhPZihpdGVtLnVybC5zdWJzdHJpbmcoMSkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICByZWxldmFudEl0ZW0gPSB0aGlzLmdldE1vc3RSZWxldmFudEl0ZW0odXJsLCByZWxldmFudEl0ZW0sIGl0ZW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHJlbGV2YW50SXRlbSA9IHRoaXMuZmluZE1vc3RSZWxldmFudEl0ZW0odXJsLCBpdGVtLmNoaWxkcmVuLCByZWxldmFudEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVsZXZhbnRJdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIHR3byBpdGVtcyB3aXRoIHVybCByZXR1cm4gdGhlIG9uZSB3aXRoIHRoZSBtb3N0IHJlbGV2YW50IHVybCB0aGF0IG1hdGNoZXMgZ2l2ZW4gdXJsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdXJsIEEgVVJMIHRvIGJlIG1hdGNoZWQgd2l0aCB0aGUgb25lIG9mIGdpdmVuIGl0ZW1zXG4gICAgICogQHBhcmFtIGl0ZW0xXG4gICAgICogQHBhcmFtIGl0ZW0yXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1vc3RSZWxldmFudEl0ZW0odXJsOiBzdHJpbmcsIGl0ZW0xOiBFdWlNZW51SXRlbSwgaXRlbTI6IEV1aU1lbnVJdGVtKTogRXVpTWVudUl0ZW0ge1xuICAgICAgICBjb25zdCByZW1haW5kZXIxID0gdXJsLnJlcGxhY2UoaXRlbTE/LnVybCB8fCAnJywgJycpO1xuICAgICAgICBjb25zdCByZW1haW5kZXIyID0gdXJsLnJlcGxhY2UoaXRlbTI/LnVybCB8fCAnJywgJycpO1xuXG4gICAgICAgIHJldHVybiByZW1haW5kZXIxLmxlbmd0aCA8IHJlbWFpbmRlcjIubGVuZ3RoID8gaXRlbTEgOiBpdGVtMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhbiBpdGVtLCBpZiB0aGVyZSdzIGEgcGFyZW50IGV4cGFuZCBpdCB1bnRpbCB5b3UgcmVhY2ggdGhlIHJvb3QgaXRlbVxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW0gR2l2ZW4gbWVudSBpdGVtXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGV4cGFuZFRvR2l2ZW5JdGVtKGl0ZW06IEV1aU1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChpdGVtLnBhcmVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiAoaXRlbS5wYXJlbnQuZXhwYW5kZWQgPSB0cnVlKSk7XG4gICAgICAgICAgICB0aGlzLmV4cGFuZFRvR2l2ZW5JdGVtKGl0ZW0ucGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhIHJhbmRvbSBpZCB0byBhbiBpdGVtIGFuZCBpdHMgY2hpbGQgaWYgdGhleSBkb24ndCBoYXZlIG9uZVxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFJhbmRvbUlkKGl0ZW06IEV1aU1lbnVJdGVtKTogRXVpTWVudUl0ZW0ge1xuICAgICAgICBpdGVtLmlkID0gaXRlbS5pZCB8fCBjcnlwdG8ucmFuZG9tVVVJRCgpO1xuICAgICAgICBpZihpdGVtLmNoaWxkcmVuKXtcbiAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRSYW5kb21JZChjaGlsZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhbiBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIHZpZXdwb3J0XG4gICAgICogQHBhcmFtIGVsXG4gICAgICogQHBhcmFtIHBhcnRpYWxseVZpc2libGVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZWxlbWVudElzVmlzaWJsZUluVmlld3BvcnQoZWw6IEhUTUxFbGVtZW50LCBwYXJ0aWFsbHlWaXNpYmxlID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQgfSA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB7IGlubmVySGVpZ2h0LCBpbm5lcldpZHRoIH0gPSB3aW5kb3c7XG4gICAgICAgIHJldHVybiBwYXJ0aWFsbHlWaXNpYmxlXG4gICAgICAgICAgICA/ICgodG9wID4gMCAmJiB0b3AgPCBpbm5lckhlaWdodCkgfHxcbiAgICAgICAgICAgICAgICAoYm90dG9tID4gMCAmJiBib3R0b20gPCBpbm5lckhlaWdodCkpICYmXG4gICAgICAgICAgICAoKGxlZnQgPiAwICYmIGxlZnQgPCBpbm5lcldpZHRoKSB8fCAocmlnaHQgPiAwICYmIHJpZ2h0IDwgaW5uZXJXaWR0aCkpXG4gICAgICAgICAgICA6IHRvcCA+PSAwICYmIGxlZnQgPj0gMCAmJiBib3R0b20gPD0gaW5uZXJIZWlnaHQgJiYgcmlnaHQgPD0gaW5uZXJXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwgdG8gYW4gaXRlbSBpZiBpdCdzIG5vdCB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydFxuICAgICAqIEBwYXJhbSB1cmxcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgc2Nyb2xsVG9JdGVtKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRNb3N0UmVsZXZhbnRJdGVtKHVybCwgdGhpcy5pdGVtcyk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAvLyBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoYXQgaXRlbSB0byBleHBhbmRlZCBpZiBpdCdzIG5vdFxuICAgICAgICAgICAgdGhpcy5leHBhbmRUb0dpdmVuSXRlbShpdGVtKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVudUl0ZW0gPSB0aGlzLm1lbnVJdGVtc0NvbXBvbmVudHM/LmZpbmQoKG1lbnVJdGVtKSA9PiBtZW51SXRlbS5pdGVtLmlkID09PSBpdGVtLmlkKTtcbiAgICAgICAgICAgICAgICBpZihtZW51SXRlbSAmJiAhbWVudUl0ZW0uZWxlbWVudElzVmlzaWJsZUluVmlld3BvcnQoKSl7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKGhhc0ZpbHRlciAmJiAhaXNDb2xsYXBzZWQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZXVpLW1lbnUtZmlsdGVyXCIgKGNsaWNrKT1cIm9uTWVudUZpbHRlckNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPGV1aS1pY29uLWlucHV0PlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWVjbC1zZWFyY2hcIiBmaWxsQ29sb3I9XCJuZXV0cmFsLWxpZ2h0ZXJcIiBhcmlhLWxhYmVsPVwiU2VhcmNoIEljb25cIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICNmaWx0ZXJJbnB1dFxuICAgICAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hGaWx0ZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWFyY2hGaWx0ZXJMYWJlbFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZpbHRlclZhbHVlXCIgLz5cbiAgICAgICAgPC9ldWktaWNvbi1pbnB1dD5cbiAgICA8L2Rpdj5cbn1cblxuPHVsIGV1aUxpc3QgY2xhc3M9XCJldWktbWVudVwiIHJvbGU9XCJtZW51YmFyXCIgYXJpYS1vcmllbnRhdGlvbj1cInZlcnRpY2FsXCIgdGFiaW5kZXg9XCIwXCIgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj5cbiAgICBAaWYgKGl0ZW1zKSB7XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVJdGVtVGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtZW51SXRlbTogaXRlbSwgaW5kZXg6IGluZGV4IH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpLW1lbnUtLW5vLWl0ZW1zXCI+Tm8gbWVudSBpdGVtcyBkZWZpbmVkPC9zcGFuPlxuICAgIH1cbjwvdWw+XG5cbjwhLS0gZGVzY3JpYmUgdGhlIHJlY3Vyc2l2ZSB0ZW1wbGF0ZSBvZiB0aGUgbWVudSBpdGVtIC0tPlxuPG5nLXRlbXBsYXRlICNtZW51SXRlbVRlbXBsYXRlUmVmIGxldC1pdGVtPVwibWVudUl0ZW1cIiBsZXQtcGFyZW50PVwicGFyZW50XCIgbGV0LWk9XCJpbmRleFwiPlxuICAgIDwhLS0gcmVuZGVyIHRoZSBtZW51IGl0ZW0tLT5cbiAgICA8ZXVpLW1lbnUtaXRlbVxuICAgICAgICAqbmdJZj1cIml0ZW0uZmlsdGVyZWRcIlxuICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgW3BhcmVudF09XCJwYXJlbnRcIlxuICAgICAgICBbaGFzSWNvbl09XCJoYXNJY29uc1wiXG4gICAgICAgIFtoYXNUb29sdGlwXT1cImhhc1Rvb2x0aXBcIlxuICAgICAgICBbaXNDb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWRcIlxuICAgICAgICBbaGFzQm9sZFJvb3RMZXZlbF09XCJoYXNCb2xkUm9vdExldmVsXCJcbiAgICAgICAgW2hhc0NvbGxhcHNlZEluaXRpYWxzXT1cImhhc0NvbGxhcHNlZEluaXRpYWxzXCJcbiAgICAgICAgKGV4cGFuZFRvZ2dsZSk9XCJvbkV4cGFuZFRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgKGl0ZW1DbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPCEtLSBpZiB0aGUgbWVudSBpdGVtIGhhcyBjaGlsZHJlbiwgcmVuZGVyIHRoZSBjaGlsZHJlbiAtLT5cbiAgICAgICAgQGlmIChpdGVtLmNoaWxkcmVuICYmIChpdGVtLmV4cGFuZGVkIHx8IChoYXNGaWx0ZXIgJiYgaXRlbS5maWx0ZXJlZCAmJiBmaWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudD8udmFsdWUubGVuZ3RoID4gMCkpKSB7XG4gICAgICAgICAgICA8dWwgZXVpTGlzdCBjbGFzcz1cImV1aS1tZW51IGV1aS1tZW51LXN1YlwiIHJvbGU9XCJtZW51XCIgW2F0dHIuYXJpYS1sYWJlbF09XCJpdGVtLmxhYmVsXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIGNoaWxkLmlkOyBsZXQgY2hpbGRJbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibWVudUl0ZW1UZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG1lbnVJdGVtOiBjaGlsZCwgaW5kZXg6IGNoaWxkSW5kZXgsIHBhcmVudDogaXRlbSB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgfVxuICAgIDwvZXVpLW1lbnUtaXRlbT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
549
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLW1lbnUvZXVpLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLW1lbnUvZXVpLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsWUFBWSxFQUdaLFNBQVMsRUFDVCxVQUFVLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUEwQixhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUFTakUsTUFBTSxPQUFPLGdCQUFnQjtJQUl6QixJQUNXLFVBQVU7UUFDakIsT0FBTztZQUNILFVBQVU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFBLENBQUMsQ0FBQyxFQUFFO1NBQ3JDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUE0QkQsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIs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cEUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUduQyxVQUFVO3NCQURwQixXQUFXO3VCQUFDLE9BQU87Z0JBVVgsS0FBSztzQkFBYixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVrQyxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLG9CQUFvQjtzQkFBM0QsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxTQUFTO3NCQUFoRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFFBQVE7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBakQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFLRSxjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLE1BQU07c0JBQTdDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsZUFBZTtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTVCLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFZUCxlQUFlO3NCQURkLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgY29uc3VtZUV2ZW50IH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aU1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9ldWktbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFdWlNZW51SXRlbSB9IGZyb20gJy4vbW9kZWxzL2V1aS1tZW51LWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1tZW51JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aU1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkcmVuKEV1aU1lbnVJdGVtQ29tcG9uZW50KSBwcm90ZWN0ZWQgbWVudUl0ZW1zQ29tcG9uZW50czogUXVlcnlMaXN0PEV1aU1lbnVJdGVtQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcm90ZWN0ZWQgZmlsdGVySW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwdWJsaWMgZ2V0IGNzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWktbWVudScsXG4gICAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID8gJ2V1aS1tZW51LS1jb2xsYXBzZWQnIDogJycsXG4gICAgICAgICAgICAhdGhpcy5oYXNJY29ucyA/ICdldWktbWVudS0tbm8taWNvbnMnIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzRmxhdCA/ICdldWktbWVudS0tZmxhdCc6ICcnLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgaXRlbXM6IEV1aU1lbnVJdGVtW107XG4gICAgQElucHV0KCkgc2VhcmNoRmlsdGVyTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBleHRlcm5hbExpbmtMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZyYWdtZW50SWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWx0ZXJWYWx1ZSA9ICcnO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGlzQ29sbGFwc2VkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0NvbGxhcHNlZEluaXRpYWxzID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc0ZpbHRlciA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNJY29ucyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNUb29sdGlwID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBFeHBhbmQgYWxsIGl0ZW1zIGluIHRoZSBtZW51LiBBZmZlY3RzIG9ubHkgaXRlbXMgdGhhdCBoYXZlIG5vIGV4cGFuZGVkIHByb3BlcnR5IHNldC5cbiAgICAgKiBlLmcuIGl0ZW1zID0gW3tsYWJlbDogdGVzdCwgZXhwYW5kZWQ6IHRydWV9LCB7bGFiZWw6IHRlc3QyLCBleHBhbmRlZDogZmFsc2V9LCB7bGFiZWw6IHRlc3QzfV0gd2lsbCBleHBhbmQgb25seSB0ZXN0My5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXhwYW5kQWxsSXRlbXMgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNGbGF0ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGhhc1Njcm9sbFRvSXRlbSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNCb2xkUm9vdExldmVsID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgaXNDbGljazogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBpdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdWlNZW51SXRlbT4gPSBuZXcgRXZlbnRFbWl0dGVyPEV1aU1lbnVJdGVtPigpO1xuXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGZvY3VzS2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEV1aU1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIGZpbmRzIGZpcnN0IGNoaWxkIHdoZW4gQXJyb3dEb3duXG4gICAgICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmNoaWxkcmVuPyB0aGlzLmZpbmRGaXJzdEZpbHRlcmVkSXRlbSh0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmNoaWxkcmVuKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmlyc3RGb2N1c2FibGVJdGVtID0gdGhpcy5maW5kRm9jdXNhYmxlSXRlbShmaXJzdENoaWxkKTtcbiAgICAgICAgLy8gZmluZHMgdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0ucGFyZW50O1xuICAgICAgICBjb25zdCBwYXJlbnRGb2N1c2FibGVJdGVtID0gdGhpcy5maW5kRm9jdXNhYmxlSXRlbShwYXJlbnQpO1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnRW50ZXInOiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5pc0xpbmtJdGVtIHx8IHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uaXNVcmxJdGVtKSAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtLm9uQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5hY3Rpb25JY29uKXtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0FjdGlvbkljb25Gb2N1c1N0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8ub25FeHBhbmRUb2dnbGUoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICAgIGlmKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uYWN0aW9uSWNvbil7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tBY3Rpb25JY29uRm9jdXNTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbS5vbkV4cGFuZFRvZ2dsZShldmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzoge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uY2hpbGRyZW4gJiYgdGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgICAvL2ZvY3VzZXMgZmlyc3QgY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGb2N1c2FibGVJdGVtPy5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKGZpcnN0Rm9jdXNhYmxlSXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZmluZHMgbGFzdCBmaWx0ZXJlZCBjaGlsZCB3aGVuIEFycm93RG93biBhbmQgbmF2aWdhdGluZyB3aXRoaW4gc3VibWVudVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maW5kRmlsdGVyZWRJdGVtcyhwYXJlbnQuY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q2hpbGRJbmRleCA9IChmaWx0ZXJlZENoaWxkcmVuPy5sZW5ndGgpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdENoaWxkID0gZmlsdGVyZWRDaGlsZHJlbltsYXN0Q2hpbGRJbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RGb2N1c2FibGVJdGVtID0gdGhpcy5maW5kRm9jdXNhYmxlSXRlbShsYXN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYWN0aXZlIGl0ZW0gaXMgdGhlIGxhc3QgY2hpbGQsIHB1dHMgdGhlIGZvY3VzIG9uIHRoZSBuZXh0IHBhcmVudFxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtID09PSBsYXN0Rm9jdXNhYmxlSXRlbSl7XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0ocGFyZW50Rm9jdXNhYmxlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnNldE5leHRJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCArMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBza2lwcyByZW1haW5pbmcgY2hpbGRyZW4gaW4gdGhlIHF1ZXJ5IGxpc3Qgd2hlbiB0aGVyZSBpcyBleHBhbmRlZCBub2RlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnNraXBQcmVkaWNhdGUobWVudUl0ZW0gPT4gbWVudUl0ZW0ucGFyZW50ICE9IHVuZGVmaW5lZCB8fCBtZW51SXRlbS5pdGVtLnZpc2libGUgPT09IGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzoge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmaW5kcyBmaXJzdCBmaWx0ZXJlZCBjaGlsZCB3aGVuIEFycm93VXBcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmluZEZpbHRlcmVkSXRlbXMocGFyZW50LmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3RDaGlsZFVwID0gZmlsdGVyZWRDaGlsZHJlblsnMCddXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0Rm9jdXNhYmxlSXRlbVVwID0gdGhpcy5maW5kRm9jdXNhYmxlSXRlbShmaXJzdENoaWxkVXApO1xuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIG5hdmlnYXRpbmcgdXAgb24gYSBzdWJtZW51IGZvY3VzZXMgdGhlIHBhcmVudCBpZiB0aGUgYWN0aXZlIGl0ZW0gaXMgdGhlIGZpcnN0IGNoaWxkXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0gPT09IGZpcnN0Rm9jdXNhYmxlSXRlbVVwKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0ocGFyZW50Rm9jdXNhYmxlSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXggLTEpO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gbmF2aWdhdGluZyB1cCBmcm9tIGEgcGFyZW50IGVsZW1lbnQgdG8gYW4gZXhwYW5kZWQgc3VibWVudSwgZmluZHMgdGhlIGxhc3QgY2hpbGQgYW5kIGZvY3VzZXMgaXRcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5mb2N1c0tleU1hbmFnZXIuYWN0aXZlSXRlbT8uaXRlbS5jaGlsZHJlbiAmJiB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtPy5pdGVtLmV4cGFuZGVkKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbmRGaWx0ZXJlZEl0ZW1zKHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/Lml0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdENoaWxkSW5kZXhVcCA9IChmaWx0ZXJlZENoaWxkcmVuLmxlbmd0aCkgLSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdEZvY3VzYWJsZUl0ZW1VcCA9dGhpcy5maW5kRm9jdXNhYmxlSXRlbShmaWx0ZXJlZENoaWxkcmVuW2xhc3RDaGlsZEluZGV4VXBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0obGFzdEZvY3VzYWJsZUl0ZW1VcCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLmNvbmZpZ3VyZUl0ZW1zKHRoaXMuaXRlbXMpO1xuICAgICAgICAgICAgLy8gZ2V0IGN1cnJlbnQgdXJsXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgICAgICAgICAgLy8gZmluZCBhbiBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCB1cmwgb3IgdGhlIG1vc3QgcmVsZXZhbnQgb25lXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kTW9zdFJlbGV2YW50SXRlbShjdXJyZW50VXJsLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgIC8vIGV4cGFuZCB0byB0aGF0IGl0ZW1cbiAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRUb0dpdmVuSXRlbShpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4cGFuZCAvIENvbGxhcHNlIEFsbCBpdGVtc1xuICAgICAgICBpZiAoY2hhbmdlcy5leHBhbmRBbGxJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuc2V0RXhwYW5kZWRUb0FsbEl0ZW1zKGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShjaGFuZ2VzLmV4cGFuZEFsbEl0ZW1zLmN1cnJlbnRWYWx1ZSksIHRoaXMuaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlsdGVyVmFsdWUgJiYgdGhpcy5oYXNGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMub25GaWx0ZXIoY2hhbmdlcy5maWx0ZXJWYWx1ZS5jdXJyZW50VmFsdWUgPz8gJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVmcmVzaCB3aGVuIGludGVyYWN0aXZlIGNvbGxhcHNlZCB0byBpbml0aWFsc1xuICAgICAgICBpZiAoY2hhbmdlcy5oYXNDb2xsYXBzZWRJbml0aWFscykge1xuICAgICAgICAgICAgdGhpcy5oYXNDb2xsYXBzZWRJbml0aWFscyA9IGNoYW5nZXMuaGFzQ29sbGFwc2VkSW5pdGlhbHMuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuY29uZmlndXJlSXRlbXModGhpcy5pdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihjaGFuZ2VzLmhhc1Njcm9sbFRvSXRlbSl7XG4gICAgICAgICAgICB0aGlzLmhhc1Njcm9sbFRvSXRlbSA9IGNoYW5nZXMuaGFzU2Nyb2xsVG9JdGVtLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGlmKHRoaXMuaGFzU2Nyb2xsVG9JdGVtKXtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvSXRlbSh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYoY2hhbmdlcy5oYXNGaWx0ZXIpe1xuICAgICAgICAgICAgdGhpcy5oYXNGaWx0ZXIgPSBjaGFuZ2VzLmhhc0ZpbHRlci5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBpZighdGhpcy5oYXNGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggYWxsIGl0ZW1zIGFuZCByZXNldCB0aGUgZmlsdGVyZWQgcHJvcGVydHlcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5maWx0ZXJNZW51SXRlbXModGhpcy5pdGVtcywgJycpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gTGFiZWxzIGRlZmF1bHQgdmFsdWVzIC0gVE9ETyA6IHRyYW5zbGF0aW9uc1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoRmlsdGVyTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoRmlsdGVyTGFiZWwgPSAnU2VhcmNoIGZpbHRlcic7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdWJzY3JpcHRpb24gdG8gcm91dGVzIHVybCBjaGFuZ2VzIGZvciBhY3RpdmF0aW5nIHRoZSBzY3JvbGxJbnRvVmlld1xuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gSGFuZGxlIHJvdXRlIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc1Njcm9sbFRvSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvSXRlbShldmVudC51cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBpbnN0YW50aWF0ZXMgRm9jdXNLZXlNYW5hZ2VyIHdpdGggdGhlIHF1ZXJ5IGxpc3Qgb2YgaXRlbXMgZW5hYmxpbmcgd3JhcHBpbmdcbiAgICAgICAgdGhpcy5mb2N1c0tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMubWVudUl0ZW1zQ29tcG9uZW50cykud2l0aFdyYXAoKTtcblxuICAgICAgICAvLyBzY3JvbGxzIHRvIHRoZSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgY3VycmVudCB1cmxcbiAgICAgICAgaWYodGhpcy5oYXNTY3JvbGxUb0l0ZW0pe1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0l0ZW0odGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6dm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKGl0ZW06IEV1aU1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICghaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGl0ZW0udXJsRXh0ZXJuYWwpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihpdGVtLnVybEV4dGVybmFsLCBpdGVtLnVybEV4dGVybmFsVGFyZ2V0IHx8ICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS51cmwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS51cmxdLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUsIGZyYWdtZW50OiB0aGlzLmZyYWdtZW50SWQgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbS5jb21tYW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY29tbWFuZCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25FeHBhbmRUb2dnbGUoaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS5saW5rKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXM/Lm1hcCgoaXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaXQuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdC5pZCA9PT0gaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXQuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQ2xpY2suZW1pdCh0cnVlKTtcbiAgICAgICAgdGhpcy5pdGVtQ2xpY2suZW1pdChpdGVtKTtcblxuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHRoaXMuZmluZEZvY3VzYWJsZUl0ZW0oaXRlbSk7XG4gICAgICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZm9jdXNlZEl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4cGFuZFRvZ2dsZShpdGVtOiBFdWlNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5vbkV4cGFuZFRvZ2dsZWQoaXRlbSwgdGhpcy5pdGVtcyk7XG4gICAgICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSB3aHkgdGhlIGFib3ZlIGlzIG5lZWRlZC4gQ2FuIGl0IGJlIHNpbXBseSBcIml0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZDtcIiA/XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25NZW51RmlsdGVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgdGhlIG1lbnUgaXRlbXMgYmFzZWQgb24gdGhlIGlucHV0IHZhbHVlXG4gICAgICogQHBhcmFtIGV2ZW50XG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvbkZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBvbkZpbHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgb25GaWx0ZXIoZXZlbnRPclZhbHVlOiBFdmVudCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50T3JWYWx1ZSBpbnN0YW5jZW9mIEV2ZW50XG4gICAgICAgICAgICA/IChldmVudE9yVmFsdWUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlXG4gICAgICAgICAgICA6IGV2ZW50T3JWYWx1ZTtcbiAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuZmlsdGVyTWVudUl0ZW1zKHRoaXMuaXRlbXMsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaW5kcyB0aGUgRXVpTWVudUl0ZW1Db21wb25lbnQgaW4gdGhlIHF1ZXJpZWQgZm9jdXNhYmxlSXRlbXNbXSB0aGF0ICBtYXRjaGVzIHRoZSBwYXNzZWQgRXVpTWVudUl0ZW0gb2JqZWN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWVudUl0ZW0gYW4gRXVpTWVudUl0ZW1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZmluZEZvY3VzYWJsZUl0ZW0obWVudUl0ZW06IEV1aU1lbnVJdGVtICk6IEV1aU1lbnVJdGVtQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudUl0ZW1zQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgKGZvY3VzYWJsZUl0ZW0pID0+IGZvY3VzYWJsZUl0ZW0uaXRlbS5sYWJlbCA9PT0gbWVudUl0ZW0/LmxhYmVsICYmIGZvY3VzYWJsZUl0ZW0uaXRlbS5pZCA9PT0gbWVudUl0ZW0uaWQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmluZHMgdGhlIGZpcnN0IGl0ZW0gdGhhdCBpcyBmaWx0ZXJlZFxuICAgICAqXG4gICAgICogQHBhcmFtIG1lbnVJdGVtcyBhbiBhcnJheSBvZiBFdWlNZW51SXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRmlyc3RGaWx0ZXJlZEl0ZW0obWVudUl0ZW1zOiBFdWlNZW51SXRlbSBbXSk6IEV1aU1lbnVJdGVtIHtcbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmZpbHRlcmVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaW5kcyBhbGwgZmlsdGVyZWQgbWVudSBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIG1lbnVJdGVtcyBhbiBhcnJheSBvZiBFdWlNZW51SXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaW5kRmlsdGVyZWRJdGVtcyhtZW51SXRlbXM6IEV1aU1lbnVJdGVtIFtdKTogRXVpTWVudUl0ZW0gW10ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zLmZpbHRlcigoaXRlbXMpID0+IGl0ZW1zLmZpbHRlcmVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGVja3MgdGhlIGZvY3VzIHN0YXRlIG9mIHRoZSBhY3Rpb24gaWNvblxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrQWN0aW9uSWNvbkZvY3VzU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBhY3Rpb24gaWNvbiBpcyBmb2N1c2VkIGFuZCBpZiBub3QgZm9jdXMgaXQsIG90aGVyd2lzZSBmb2N1cyB0aGUgYWN0aXZlIGl0ZW1cbiAgICAgICAgIXRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uaXNBY3Rpb25JY29uRm9jdXNlZCA/IHRoaXMuZm9jdXNLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uZm9jdXNBY3Rpb25JY29uKCkgOiB0aGlzLmZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZmlsdGVyIGFsbCBtZW51IGl0ZW1zIGdpdmVuIGEgdmFsdWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBtZW51SXRlbXMgYW4gYXJyYXkgb2YgbWVudSBpdGVtc1xuICAgICAqIEBwYXJhbSBmaWx0ZXJWYWx1ZSB0aGUgdmFsdWUgdG8gZmlsdGVyIG1lbnUgaXRlbXNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZmlsdGVyTWVudUl0ZW1zKG1lbnVJdGVtczogRXVpTWVudUl0ZW1bXSwgZmlsdGVyVmFsdWU6IHN0cmluZyk6IEV1aU1lbnVJdGVtW10ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zPy5tYXAoKGl0ZW06IEV1aU1lbnVJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IGl0ZW0ubGFiZWw/LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSB0aGlzLmZpbHRlck1lbnVJdGVtcyhpdGVtLmNoaWxkcmVuLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaXRlbS5maWx0ZXJlZCA9IGl0ZW0uY2hpbGRyZW4uZmlsdGVyKChsKSA9PiBsWydmaWx0ZXJlZCddID09PSB0cnVlKS5sZW5ndGggPiAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uZmlsdGVyZWQgPSBmb3VuZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXRlbS5maWx0ZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pIHx8IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4cGFuZCAvIGNvbGxhcHNlIGFsbCBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGlzRXhwYW5kZWRcbiAgICAgKiBAcGFyYW0gaXRlbXNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0RXhwYW5kZWRUb0FsbEl0ZW1zKGlzRXhwYW5kZWQ6IGJvb2xlYW4sIGl0ZW1zOiBFdWlNZW51SXRlbVtdKTogRXVpTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcz8ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIGl0ZW0uZXhwYW5kZWQgPSBpdGVtLmV4cGFuZGVkID8/IGlzRXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuc2V0RXhwYW5kZWRUb0FsbEl0ZW1zKGlzRXhwYW5kZWQsIGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oaXRlbSwgeyB2aXNpYmxlOiBpdGVtLnZpc2libGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBpdGVtLnZpc2libGUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGV4cGFuZCAvIGNvbGxhcHNlIGEgbWVudSBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSB3aGVyZSB0aGUgXCJleHBhbmRcIiBoYWQgYmVlbiB0b2dnbGVkXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyBsaXN0ICh1c2VkIGZvciByZWN1cnNpb24pXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uRXhwYW5kVG9nZ2xlZChpdGVtOiBFdWlNZW51SXRlbSwgaXRlbXM6IEV1aU1lbnVJdGVtW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbUlkeCA9IGl0ZW1zPy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICBpZiAoaXRlbUlkeCA+IC0xKSB7XG4gICAgICAgICAgICBpdGVtc1tpdGVtSWR4XS5leHBhbmRlZCA9ICFpdGVtc1tpdGVtSWR4XS5leHBhbmRlZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRXhwYW5kVG9nZ2xlZChpdGVtLCBpLmNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbmZpZ3VyZSBhbiBhcnJheSBvZiBpdGVtcyB3aXRoIHZpc2libGUsIGZpbHRlcmVkIGFuZCBleHBhbmQgKGluIGNhc2Ugb2YgZXhwYW5kQWxsSXRlbXMgZmxhZyBlbmFibGVkKSBwcm9wZXJ0aWVzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbXMgQW4gYXJyYXkgb2YgRXVpTWVudUl0ZW1cbiAgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBwYXJlbnQgaXRlbSBvZiBpdGVtcyBpZiBleGlzdHNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgY29uZmlndXJlSXRlbXMoaXRlbXM6IEV1aU1lbnVJdGVtW10sIHBhcmVudD86IEV1aU1lbnVJdGVtKTogRXVpTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiBpdGVtcz8ubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAvLyByZWN1cnNpb24gaW4gY2FzZSB0aGVyZSBhcmUgY2hpbGRyZW5cbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuY29uZmlndXJlSXRlbXMoaXRlbS5jaGlsZHJlbiwgaXRlbSk7XG4gICAgICAgICAgICAgICAgLy8gZXhwYW5kIGFsbCBwYXJlbnRzIHdpdGggY2hpbGRyZW5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5leHBhbmRBbGxJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwb2ludCB0byB0aGUgcGFyZW50XG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgaXRlbXMgYXJlIGNvbmZpZ3VyZWQgd2l0aCBhIHVuaXF1ZSBpZFxuICAgICAgICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXM/Lm1hcCgoaXRlbSkgPT4gdGhpcy5zZXRSYW5kb21JZChpdGVtKSk7XG5cbiAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsICYmIHRoaXMuaGFzQ29sbGFwc2VkSW5pdGlhbHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JkcyA9IGl0ZW0ubGFiZWwuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICBpZiAod29yZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uaW5pdGlhbHMgPSBgJHtpdGVtLmxhYmVsLnN1YnN0cmluZygwLCAxKX0ke2l0ZW0ubGFiZWwuc3Vic3RyaW5nKDEsIDEpfWA7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmluaXRpYWxzID0gYCR7d29yZHNbMF0uc3Vic3RyaW5nKDAsIDEpfSR7d29yZHNbMV0uc3Vic3RyaW5nKDAsIDEpfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihpdGVtLCB7IHZpc2libGU6IGl0ZW0udmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGl0ZW0udmlzaWJsZSwgZmlsdGVyZWQ6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgVVJMIGFuZCBhIGxpc3Qgb2YgaXRlbXMsIGl0IHdpbGwgZXhwYW5kIHRoZSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgVVJMLiBJZiBub3QgaXRlbSBtYXRjaGVzIGV4YWN0bHkgdGhlIHVybCwgdGhlbiBpdCB3aWxsXG4gICAgICogbWF0Y2ggdGhlIGl0ZW0gdGhhdCBpcyBtb3N0IHJlbGV2YW50IHRvIHRoYXQgdXJsLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVybFxuICAgICAqIEBwYXJhbSBpdGVtc1xuICAgICAqIEBwYXJhbSByZWxldmFudEl0ZW1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZmluZE1vc3RSZWxldmFudEl0ZW0odXJsOiBzdHJpbmcsIGl0ZW1zOiBFdWlNZW51SXRlbVtdLCByZWxldmFudEl0ZW0/OiBFdWlNZW51SXRlbSk6IEV1aU1lbnVJdGVtIHtcbiAgICAgICAgaWYgKCFpdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS51cmwgJiYgdXJsLmluZGV4T2YoaXRlbS51cmwuc3Vic3RyaW5nKDEpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVsZXZhbnRJdGVtID0gdGhpcy5nZXRNb3N0UmVsZXZhbnRJdGVtKHVybCwgcmVsZXZhbnRJdGVtLCBpdGVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICByZWxldmFudEl0ZW0gPSB0aGlzLmZpbmRNb3N0UmVsZXZhbnRJdGVtKHVybCwgaXRlbS5jaGlsZHJlbiwgcmVsZXZhbnRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlbGV2YW50SXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHaXZlbiB0d28gaXRlbXMgd2l0aCB1cmwgcmV0dXJuIHRoZSBvbmUgd2l0aCB0aGUgbW9zdCByZWxldmFudCB1cmwgdGhhdCBtYXRjaGVzIGdpdmVuIHVybFxuICAgICAqXG4gICAgICogQHBhcmFtIHVybCBBIFVSTCB0byBiZSBtYXRjaGVkIHdpdGggdGhlIG9uZSBvZiBnaXZlbiBpdGVtc1xuICAgICAqIEBwYXJhbSBpdGVtMVxuICAgICAqIEBwYXJhbSBpdGVtMlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRNb3N0UmVsZXZhbnRJdGVtKHVybDogc3RyaW5nLCBpdGVtMTogRXVpTWVudUl0ZW0sIGl0ZW0yOiBFdWlNZW51SXRlbSk6IEV1aU1lbnVJdGVtIHtcbiAgICAgICAgY29uc3QgcmVtYWluZGVyMSA9IHVybC5yZXBsYWNlKGl0ZW0xPy51cmwgfHwgJycsICcnKTtcbiAgICAgICAgY29uc3QgcmVtYWluZGVyMiA9IHVybC5yZXBsYWNlKGl0ZW0yPy51cmwgfHwgJycsICcnKTtcblxuICAgICAgICByZXR1cm4gcmVtYWluZGVyMS5sZW5ndGggPCByZW1haW5kZXIyLmxlbmd0aCA/IGl0ZW0xIDogaXRlbTI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYW4gaXRlbSwgaWYgdGhlcmUncyBhIHBhcmVudCBleHBhbmQgaXQgdW50aWwgeW91IHJlYWNoIHRoZSByb290IGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtIEdpdmVuIG1lbnUgaXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBleHBhbmRUb0dpdmVuSXRlbShpdGVtOiBFdWlNZW51SXRlbSk6IHZvaWQge1xuICAgICAgICBpZiAoaXRlbS5wYXJlbnQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKGl0ZW0ucGFyZW50LmV4cGFuZGVkID0gdHJ1ZSkpO1xuICAgICAgICAgICAgdGhpcy5leHBhbmRUb0dpdmVuSXRlbShpdGVtLnBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgYSByYW5kb20gaWQgdG8gYW4gaXRlbSBhbmQgaXRzIGNoaWxkIGlmIHRoZXkgZG9uJ3QgaGF2ZSBvbmVcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRSYW5kb21JZChpdGVtOiBFdWlNZW51SXRlbSk6IEV1aU1lbnVJdGVtIHtcbiAgICAgICAgaXRlbS5pZCA9IGl0ZW0uaWQgfHwgY3J5cHRvLnJhbmRvbVVVSUQoKTtcbiAgICAgICAgaWYoaXRlbS5jaGlsZHJlbil7XG4gICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbi5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0UmFuZG9tSWQoY2hpbGQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgYW4gZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydFxuICAgICAqIEBwYXJhbSBlbFxuICAgICAqIEBwYXJhbSBwYXJ0aWFsbHlWaXNpYmxlXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGVsZW1lbnRJc1Zpc2libGVJblZpZXdwb3J0KGVsOiBIVE1MRWxlbWVudCwgcGFydGlhbGx5VmlzaWJsZSA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0LCBib3R0b20sIHJpZ2h0IH0gPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgeyBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCB9ID0gd2luZG93O1xuICAgICAgICByZXR1cm4gcGFydGlhbGx5VmlzaWJsZVxuICAgICAgICAgICAgPyAoKHRvcCA+IDAgJiYgdG9wIDwgaW5uZXJIZWlnaHQpIHx8XG4gICAgICAgICAgICAgICAgKGJvdHRvbSA+IDAgJiYgYm90dG9tIDwgaW5uZXJIZWlnaHQpKSAmJlxuICAgICAgICAgICAgKChsZWZ0ID4gMCAmJiBsZWZ0IDwgaW5uZXJXaWR0aCkgfHwgKHJpZ2h0ID4gMCAmJiByaWdodCA8IGlubmVyV2lkdGgpKVxuICAgICAgICAgICAgOiB0b3AgPj0gMCAmJiBsZWZ0ID49IDAgJiYgYm90dG9tIDw9IGlubmVySGVpZ2h0ICYmIHJpZ2h0IDw9IGlubmVyV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIGFuIGl0ZW0gaWYgaXQncyBub3QgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnRcbiAgICAgKiBAcGFyYW0gdXJsXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNjcm9sbFRvSXRlbSh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kTW9zdFJlbGV2YW50SXRlbSh1cmwsIHRoaXMuaXRlbXMpO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgLy8gY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGF0IGl0ZW0gdG8gZXhwYW5kZWQgaWYgaXQncyBub3RcbiAgICAgICAgICAgIHRoaXMuZXhwYW5kVG9HaXZlbkl0ZW0oaXRlbSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KF8gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbnVJdGVtID0gdGhpcy5tZW51SXRlbXNDb21wb25lbnRzPy5maW5kKChtZW51SXRlbSkgPT4gbWVudUl0ZW0uaXRlbS5pZCA9PT0gaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgaWYobWVudUl0ZW0gJiYgIW1lbnVJdGVtLmVsZW1lbnRJc1Zpc2libGVJblZpZXdwb3J0KCkpe1xuICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAzMDApO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChoYXNGaWx0ZXIgJiYgIWlzQ29sbGFwc2VkKSB7XG4gICAgPGRpdiBjbGFzcz1cImV1aS1tZW51LWZpbHRlclwiIChjbGljayk9XCJvbk1lbnVGaWx0ZXJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxldWktaWNvbi1pbnB1dD5cbiAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1lY2wtc2VhcmNoXCIgZmlsbENvbG9yPVwibmV1dHJhbC1saWdodGVyXCIgYXJpYS1sYWJlbD1cIlNlYXJjaCBJY29uXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoRmlsdGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VhcmNoRmlsdGVyTGFiZWxcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXJWYWx1ZVwiIC8+XG4gICAgICAgIDwvZXVpLWljb24taW5wdXQ+XG4gICAgPC9kaXY+XG59XG5cbjx1bCBldWlMaXN0IGNsYXNzPVwiZXVpLW1lbnVcIiByb2xlPVwibWVudWJhclwiIGFyaWEtb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiIHRhYmluZGV4PVwiMFwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCI+XG4gICAgQGlmIChpdGVtcykge1xuICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtLmlkOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJtZW51SXRlbVRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbWVudUl0ZW06IGl0ZW0sIGluZGV4OiBpbmRleCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImV1aS1tZW51LS1uby1pdGVtc1wiPk5vIG1lbnUgaXRlbXMgZGVmaW5lZDwvc3Bhbj5cbiAgICB9XG48L3VsPlxuXG48IS0tIGRlc2NyaWJlIHRoZSByZWN1cnNpdmUgdGVtcGxhdGUgb2YgdGhlIG1lbnUgaXRlbSAtLT5cbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1UZW1wbGF0ZVJlZiBsZXQtaXRlbT1cIm1lbnVJdGVtXCIgbGV0LXBhcmVudD1cInBhcmVudFwiIGxldC1pPVwiaW5kZXhcIj5cbiAgICA8IS0tIHJlbmRlciB0aGUgbWVudSBpdGVtLS0+XG4gICAgPGV1aS1tZW51LWl0ZW1cbiAgICAgICAgKm5nSWY9XCJpdGVtLmZpbHRlcmVkXCJcbiAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgIFtwYXJlbnRdPVwicGFyZW50XCJcbiAgICAgICAgW2hhc0ljb25dPVwiaGFzSWNvbnNcIlxuICAgICAgICBbaGFzVG9vbHRpcF09XCJoYXNUb29sdGlwXCJcbiAgICAgICAgW2lzQ29sbGFwc2VkXT1cImlzQ29sbGFwc2VkXCJcbiAgICAgICAgW2hhc0JvbGRSb290TGV2ZWxdPVwiaGFzQm9sZFJvb3RMZXZlbFwiXG4gICAgICAgIFtoYXNDb2xsYXBzZWRJbml0aWFsc109XCJoYXNDb2xsYXBzZWRJbml0aWFsc1wiXG4gICAgICAgIChleHBhbmRUb2dnbGUpPVwib25FeHBhbmRUb2dnbGUoJGV2ZW50KVwiXG4gICAgICAgIChpdGVtQ2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gaWYgdGhlIG1lbnUgaXRlbSBoYXMgY2hpbGRyZW4sIHJlbmRlciB0aGUgY2hpbGRyZW4gLS0+XG4gICAgICAgIEBpZiAoaXRlbS5jaGlsZHJlbiAmJiAoaXRlbS5leHBhbmRlZCB8fCAoaGFzRmlsdGVyICYmIGl0ZW0uZmlsdGVyZWQgJiYgZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LnZhbHVlLmxlbmd0aCA+IDApKSkge1xuICAgICAgICAgICAgPHVsIGV1aUxpc3QgY2xhc3M9XCJldWktbWVudSBldWktbWVudS1zdWJcIiByb2xlPVwibWVudVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5sYWJlbFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBpdGVtLmNoaWxkcmVuOyB0cmFjayBjaGlsZC5pZDsgbGV0IGNoaWxkSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1lbnVJdGVtVGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBtZW51SXRlbTogY2hpbGQsIGluZGV4OiBjaGlsZEluZGV4LCBwYXJlbnQ6IGl0ZW0gfVwiPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIH1cbiAgICA8L2V1aS1tZW51LWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export {
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLW1lbnUtaXRlbS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2V1aS1tZW51L21vZGVscy9ldWktbWVudS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFdWlNZW51SXRlbSB9IGZyb20gJ0BldWkvY29yZSc7XG4iXX0=
|