UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

234 lines 42 kB
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core'; import { Router } from '@angular/router'; import { get } from 'lodash-es'; import { combineLatest, map, switchMap } from 'rxjs'; import { redirectSSOEntry } from '../../../../authorization/authorization'; import { publishRef, } from '../../../../core/public-api'; import { K8sPermissionService } from '../../../../permission/k8s-permission.service'; import { ProductEntryName } from '../context.service'; import { CommonLayoutStoreService } from '../store.service'; import { ProductSelectService } from './service'; import * as i0 from "@angular/core"; import * as i1 from "../store.service"; import * as i2 from "@angular/router"; import * as i3 from "../../../../permission/k8s-permission.service"; import * as i4 from "./service"; const _c0 = a0 => ({ "acl-product-select--disabled": a0 }); const _c1 = a0 => ({ "menu__item--active": a0 }); const _c2 = a0 => ({ "portal--active": a0 }); function ProductSelectComponent_span_7_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span", 6); i0.ɵɵtext(1); i0.ɵɵpipe(2, "translate"); i0.ɵɵelementEnd(); } if (rf & 2) { const productTitle_r1 = ctx.ngIf; i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, productTitle_r1), " "); } } function ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelement(1, "aui-icon", 15); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const item_r3 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); i0.ɵɵadvance(); i0.ɵɵproperty("icon", "bicolor:" + ctx_r3.PRODUCT_ICON_MAP[item_r3.metadata.name]); } } function ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_template_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "img", 16); i0.ɵɵpipe(1, "aclImageHeader"); i0.ɵɵpipe(2, "aclSafe"); } if (rf & 2) { const item_r3 = i0.ɵɵnextContext().$implicit; i0.ɵɵproperty("src", i0.ɵɵpipeBind2(2, 3, i0.ɵɵpipeBind1(1, 1, item_r3.spec.logo) || "images/product-default-logo.png", "url"), i0.ɵɵsanitizeUrl); } } function ProductSelectComponent_ng_template_13_ng_container_1_div_1_aui_icon_9_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "aui-icon", 17); } } function ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) { const _r2 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 11); i0.ɵɵpipe(1, "pure"); i0.ɵɵlistener("click", function ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template_div_click_0_listener($event) { const item_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.navigateToProduct(item_r3, $event)); }); i0.ɵɵelementStart(2, "div", 12); i0.ɵɵtemplate(3, ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_container_3_Template, 2, 1, "ng-container", 8)(4, ProductSelectComponent_ng_template_13_ng_container_1_div_1_ng_template_4_Template, 3, 6, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor); i0.ɵɵelementEnd(); i0.ɵɵelementStart(6, "div", 13); i0.ɵɵtext(7); i0.ɵɵpipe(8, "translate"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(9, ProductSelectComponent_ng_template_13_ng_container_1_div_1_aui_icon_9_Template, 1, 0, "aui-icon", 14); i0.ɵɵpipe(10, "pure"); i0.ɵɵelementEnd(); } if (rf & 2) { const item_r3 = ctx.$implicit; const logo_r5 = i0.ɵɵreference(5); const ctx_r3 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1, i0.ɵɵpipeBind3(1, 5, item_r3, ctx_r3.isProductActive, ctx_r3.current))); i0.ɵɵadvance(3); i0.ɵɵproperty("ngIf", item_r3.spec.packType !== "Integrated" && !item_r3.spec.logo)("ngIfElse", logo_r5); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 9, item_r3.spec.displayName), " "); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(10, 11, item_r3, ctx_r3.isProductActive, ctx_r3.current)); } } function ProductSelectComponent_ng_template_13_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, ProductSelectComponent_ng_template_13_ng_container_1_div_1_Template, 11, 17, "div", 10); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const products_r6 = ctx.ngIf; const ctx_r3 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngForOf", products_r6)("ngForTrackBy", ctx_r3.trackFn); } } function ProductSelectComponent_ng_template_13_div_3_Template(rf, ctx) { if (rf & 1) { const _r7 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 18)(1, "div", 19); i0.ɵɵlistener("click", function ProductSelectComponent_ng_template_13_div_3_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.navigateToPortal($event)); }); i0.ɵɵelement(2, "aui-icon", 20); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { const portalMenu_r8 = ctx.ngIf; const ctx_r3 = i0.ɵɵnextContext(2); i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c2, ctx_r3.isPortal)); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 2, portalMenu_r8.spec.displayName), " "); } } function ProductSelectComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 7); i0.ɵɵtemplate(1, ProductSelectComponent_ng_template_13_ng_container_1_Template, 2, 2, "ng-container", 8); i0.ɵɵpipe(2, "async"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(3, ProductSelectComponent_ng_template_13_div_3_Template, 5, 6, "div", 9); i0.ɵɵpipe(4, "async"); } if (rf & 2) { const ctx_r3 = i0.ɵɵnextContext(); const loading_r9 = i0.ɵɵreference(16); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 3, ctx_r3.selectableProducts$))("ngIfElse", loading_r9); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 5, ctx_r3.portalProduct$)); } } function ProductSelectComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "acl-loading-mask", 21); } if (rf & 2) { i0.ɵɵproperty("loading", true); } } const VIEW = { type: 'views', apiGroup: 'auth.alauda.io', }; const PREFIX = 'console-'; export const PRODUCT_ICON_MAP = { 'console-acp': 'acp', 'console-asm': 'asm', 'console-devops': 'devops', // console-e-aam prefix 为了兼容默认排序,等后续排序方案出来可以改成console-aam 'console-e-aam': 'app_store', 'console-security': 'bug_search', 'console-platform': 'platform_management', 'console-project': 'project_management', 'console-dataservices': 'data_services', 'console-cec': 'cloud_edge_collaboration', }; export class ProductSelectComponent { constructor(store, router, k8sPermission, productSelectService) { this.store = store; this.router = router; this.k8sPermission = k8sPermission; this.productSelectService = productSelectService; this.PRODUCT_ICON_MAP = PRODUCT_ICON_MAP; this.allProducts$ = combineLatest([ this.productSelectService.reload$.pipe(switchMap(() => this.store.selectAllProducts())), this.k8sPermission.isAllowed({ type: VIEW, name: ['platformview', 'projectview'], }), ]).pipe(map(([products, [consolePlatform, consoleProject]]) => { const permissions = { 'console-platform': consolePlatform, 'console-project': consoleProject, }; return products.filter(p => permissions[p.metadata.name] ?? true); }), publishRef()); this.selectableProducts$ = this.allProducts$.pipe(map(products => (products || []).filter(product => !this.isPortalProduct(product) && (!product.status || product.status.hiddenOnPortal !== true))), publishRef()); this.portalProduct$ = this.allProducts$.pipe(map(res => res.find(p => this.isPortalProduct(p))), publishRef()); this.disabled$ = this.selectableProducts$.pipe(map(products => !products.length), publishRef()); this.isPortal = false; this.trackFn = (_, item) => item.metadata.name; this.getProductTitle = (products, title, current) => title || get((products || []).find(p => this.isProductActive(p, current)), ['spec', 'displayName']); } ngOnInit() { this.isPortal = this.router.url.startsWith('/portal'); } jump(entrypoint, ssoEnabled, target = '_self') { window.open(ssoEnabled ? redirectSSOEntry(entrypoint) : entrypoint, target); } navigateToPortal(event) { event.stopPropagation(); event.preventDefault(); window.open('/console-portal', '_self'); } navigateToProduct(item, event) { event.stopPropagation(); if (this.isProductActive(item, this.current)) { return; } if (item.spec.packType === 'Integrated') { this.jump(item.spec.entrypoint, item.spec.ssoEnabled, '_blank'); } else { this.jump(item.spec.entrypoint, false); } } isProductActive(item, current) { return (current && item.metadata.name === (current.startsWith(PREFIX) ? current : PREFIX + current)); } isPortalProduct(item) { return item.metadata.name === 'console-portal'; } static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductSelectComponent, selectors: [["acl-product-select"]], inputs: { current: "current", title: "title" }, decls: 17, vars: 36, consts: [["menu", ""], ["loading", ""], ["logo", ""], ["auiTooltipType", "plain", "auiTooltipTrigger", "click", "auiTooltipPosition", "bottom start", "auiTooltipClass", "aui-product-select-tooltip", 1, "acl-product-select", 3, "auiTooltip", "auiTooltipHideOnClick", "disabled", "title", "ngClass"], ["class", "acl-product-select__title", 4, "ngIf"], ["icon", "menu_dot_s", "size", "16px", "auiTooltipPosition", "bottom start", 3, "auiTooltip", "auiTooltipDisabled"], [1, "acl-product-select__title"], [1, "menu"], [4, "ngIf", "ngIfElse"], ["class", "portal", 3, "ngClass", 4, "ngIf"], ["class", "menu__item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "menu__item", 3, "click", "ngClass"], [1, "menu__item-icon"], [1, "menu__item-info"], ["class", "check-triangle-badge", "icon", "check", 4, "ngIf"], [1, "acl-colorful-icon", 3, "icon"], [1, "default", 3, "src"], ["icon", "check", 1, "check-triangle-badge"], [1, "portal", 3, "ngClass"], [1, "portal__item", 3, "click"], ["icon", "home_s"], [2, "height", "148px", 3, "loading"]], template: function ProductSelectComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "button", 3); i0.ɵɵpipe(1, "async"); i0.ɵɵpipe(2, "async"); i0.ɵɵpipe(3, "async"); i0.ɵɵpipe(4, "pure"); i0.ɵɵpipe(5, "translate"); i0.ɵɵpipe(6, "async"); i0.ɵɵtemplate(7, ProductSelectComponent_span_7_Template, 3, 3, "span", 4); i0.ɵɵpipe(8, "async"); i0.ɵɵpipe(9, "pure"); i0.ɵɵelement(10, "aui-icon", 5); i0.ɵɵpipe(11, "translate"); i0.ɵɵpipe(12, "async"); i0.ɵɵelementEnd(); i0.ɵɵtemplate(13, ProductSelectComponent_ng_template_13_Template, 5, 7, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(15, ProductSelectComponent_ng_template_15_Template, 1, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor); } if (rf & 2) { const menu_r10 = i0.ɵɵreference(14); i0.ɵɵproperty("auiTooltip", menu_r10)("auiTooltipHideOnClick", true)("disabled", i0.ɵɵpipeBind1(1, 8, ctx.disabled$))("title", i0.ɵɵpipeBind1(2, 10, ctx.disabled$) ? "" : i0.ɵɵpipeBind1(5, 19, i0.ɵɵpipeBind4(4, 14, i0.ɵɵpipeBind1(3, 12, ctx.allProducts$), ctx.getProductTitle, ctx.title, ctx.current)))("ngClass", i0.ɵɵpureFunction1(34, _c0, i0.ɵɵpipeBind1(6, 21, ctx.disabled$))); i0.ɵɵadvance(7); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind4(9, 25, i0.ɵɵpipeBind1(8, 23, ctx.allProducts$), ctx.getProductTitle, ctx.title, ctx.current)); i0.ɵɵadvance(3); i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(11, 30, "no_product_and_contact_admin"))("auiTooltipDisabled", !i0.ɵɵpipeBind1(12, 32, ctx.disabled$)); } }, styles: [".aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l)}.portal[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}.portal__item[_ngcontent-%COMP%]{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item[_ngcontent-%COMP%]:hover{color:rgb(var(--aui-color-p-1))}.portal[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select[_ngcontent-%COMP%]{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled[_ngcontent-%COMP%]{opacity:.3;cursor:default}.acl-product-select[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%]{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive[_ngcontent-%COMP%] aui-icon[_ngcontent-%COMP%], .acl-product-select.isActive[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover aui-icon[_ngcontent-%COMP%], .acl-product-select[_ngcontent-%COMP%]:not(.acl-product-select--disabled):hover span[_ngcontent-%COMP%]{color:#fff} .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu[_ngcontent-%COMP%]{margin-bottom:8px;margin-right:-12px;display:flex;flex-flow:column wrap;max-height:360px}.menu__item[_ngcontent-%COMP%]{margin-bottom:12px;margin-right:12px;width:300px;height:48px;display:flex;align-items:center;position:relative;border-radius:var(--aui-border-radius-l);padding:0 20px;background-color:rgb(var(--aui-color-n-9));cursor:pointer}.menu__item[_ngcontent-%COMP%]:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active){position:relative}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item[_ngcontent-%COMP%]:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon[_ngcontent-%COMP%]{height:24px;width:24px;font-size:24px;margin-right:8px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary))}.menu__item-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{display:block;width:24px}.menu__item-icon[_ngcontent-%COMP%] img.activated[_ngcontent-%COMP%]{display:none}.menu__item-info[_ngcontent-%COMP%]{min-width:0;font-size:16px;color:rgb(var(--aui-color-n-1));text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.menu__item--active[_ngcontent-%COMP%]{border:1px solid rgb(var(--aui-color-primary));position:relative;cursor:default}.menu__item--active[_ngcontent-%COMP%]:hover{box-shadow:none}.menu__item--active[_ngcontent-%COMP%] .check-triangle-badge[_ngcontent-%COMP%]{right:0;bottom:0;border-bottom-right-radius:var(--aui-border-radius-m);color:#fff;background-image:linear-gradient(to bottom right,transparent 50%,rgb(var(--aui-color-primary)) 50%)}acl-loading-mask[_ngcontent-%COMP%]{height:148px;width:800px;display:flex;align-items:center;justify-content:center}"], changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductSelectComponent, [{ type: Component, args: [{ selector: 'acl-product-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"acl-product-select\"\n [auiTooltip]=\"menu\"\n auiTooltipType=\"plain\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipClass=\"aui-product-select-tooltip\"\n [auiTooltipHideOnClick]=\"true\"\n [disabled]=\"disabled$ | async\"\n [title]=\"\n (disabled$ | async)\n ? ''\n : (allProducts$\n | async\n | pure: getProductTitle : title : current\n | translate)\n \"\n [ngClass]=\"{ 'acl-product-select--disabled': disabled$ | async }\"\n>\n <span\n *ngIf=\"\n allProducts$\n | async\n | pure: getProductTitle : title : current as productTitle\n \"\n class=\"acl-product-select__title\"\n >\n {{ productTitle | translate }}\n </span>\n <aui-icon\n icon=\"menu_dot_s\"\n size=\"16px\"\n [auiTooltip]=\"'no_product_and_contact_admin' | translate\"\n [auiTooltipDisabled]=\"!(disabled$ | async)\"\n auiTooltipPosition=\"bottom start\"\n ></aui-icon>\n</button>\n<ng-template #menu>\n <div class=\"menu\">\n <ng-container *ngIf=\"selectableProducts$ | async as products; else loading\">\n <div\n class=\"menu__item\"\n [ngClass]=\"{\n 'menu__item--active': item | pure: isProductActive : current,\n }\"\n *ngFor=\"let item of products; trackBy: trackFn\"\n (click)=\"navigateToProduct(item, $event)\"\n >\n <div class=\"menu__item-icon\">\n <ng-container\n *ngIf=\"\n item.spec.packType !== 'Integrated' && !item.spec.logo;\n else logo\n \"\n >\n <aui-icon\n class=\"acl-colorful-icon\"\n [icon]=\"'bicolor:' + PRODUCT_ICON_MAP[item.metadata.name]\"\n ></aui-icon>\n </ng-container>\n <ng-template #logo>\n <img\n [src]=\"\n (item.spec.logo | aclImageHeader) ||\n 'images/product-default-logo.png' | aclSafe: 'url'\n \"\n class=\"default\"\n />\n </ng-template>\n </div>\n <div class=\"menu__item-info\">\n {{ item.spec.displayName | translate }}\n </div>\n <aui-icon\n *ngIf=\"item | pure: isProductActive : current\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"portalProduct$ | async as portalMenu\"\n class=\"portal\"\n [ngClass]=\"{ 'portal--active': isPortal }\"\n >\n <div\n class=\"portal__item\"\n (click)=\"navigateToPortal($event)\"\n >\n <aui-icon icon=\"home_s\"></aui-icon>\n {{ portalMenu.spec.displayName | translate }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <acl-loading-mask\n style=\"height: 148px\"\n [loading]=\"true\"\n ></acl-loading-mask>\n</ng-template>\n", styles: ["::ng-deep .aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l)}.portal{display:flex;justify-content:flex-end}.portal__item{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item:hover{color:rgb(var(--aui-color-p-1))}.portal aui-icon{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled{opacity:.3;cursor:default}.acl-product-select span{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select aui-icon{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive,.acl-product-select:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive aui-icon,.acl-product-select.isActive span,.acl-product-select:not(.acl-product-select--disabled):hover aui-icon,.acl-product-select:not(.acl-product-select--disabled):hover span{color:#fff}::ng-deep .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu{margin-bottom:8px;margin-right:-12px;display:flex;flex-flow:column wrap;max-height:360px}.menu__item{margin-bottom:12px;margin-right:12px;width:300px;height:48px;display:flex;align-items:center;position:relative;border-radius:var(--aui-border-radius-l);padding:0 20px;background-color:rgb(var(--aui-color-n-9));cursor:pointer}.menu__item:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active){position:relative}.menu__item:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon{height:24px;width:24px;font-size:24px;margin-right:8px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary))}.menu__item-icon img{display:block;width:24px}.menu__item-icon img.activated{display:none}.menu__item-info{min-width:0;font-size:16px;color:rgb(var(--aui-color-n-1));text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.menu__item--active{border:1px solid rgb(var(--aui-color-primary));position:relative;cursor:default}.menu__item--active:hover{box-shadow:none}.menu__item--active .check-triangle-badge{right:0;bottom:0;border-bottom-right-radius:var(--aui-border-radius-m);color:#fff;background-image:linear-gradient(to bottom right,transparent 50%,rgb(var(--aui-color-primary)) 50%)}acl-loading-mask{height:148px;width:800px;display:flex;align-items:center;justify-content:center}\n"] }] }], () => [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }], { current: [{ type: Input }], title: [{ type: Input }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProductSelectComponent, { className: "ProductSelectComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7OztJQ0QvQywrQkFPQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGNBQ0Y7SUFERSxzRUFDRjs7O0lBcUJRLDZCQUtDO0lBQ0MsK0JBR1k7Ozs7O0lBRFYsY0FBMEQ7SUFBMUQsa0ZBQTBE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ZUFBZSxDQUFDLElBQWtCLEVBQUUsT0FBeUI7UUFDM0QsT0FBTyxDQUNMLE9BQU87WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWtCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUM7SUFDakQsQ0FBQzt1RkFoR1Usc0JBQXNCO29FQUF0QixzQkFBc0I7WUNoRG5DLGlDQWtCQzs7Ozs7OztZQUNDLHlFQU9DOzs7WUFHRCwrQkFNWTs7O1lBQ2QsaUJBQVM7WUE0RFQsQUEzREEsMEhBQW1CLDZHQTJERzs7O1lBL0VwQixBQVJBLEFBREEsQUFEQSxBQUxBLHFDQUFtQiwrQkFLVyxpREFDQSx5TEFRN0IsOEVBQ2dFO1lBRzlELGVBR29EO1lBSHBELGtJQUdvRDtZQVNyRCxlQUF5RDtZQUN6RCxBQURBLG1GQUF5RCw4REFDZDs7O2lGRGVsQyxzQkFBc0I7Y0FObEMsU0FBUzsyQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTtvSkFJL0MsT0FBTztrQkFETixLQUFLO1lBSU4sS0FBSztrQkFESixLQUFLOztrRkFKSyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgcmVkaXJlY3RTU09FbnRyeSB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbic7XG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIFByb2R1Y3RFbnRyeSxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEs4c1Blcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGVybWlzc2lvbi9rOHMtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFbnRyeU5hbWUgfSBmcm9tICcuLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2R1Y3RTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuY29uc3QgVklFVyA9IHtcbiAgdHlwZTogJ3ZpZXdzJyxcbiAgYXBpR3JvdXA6ICdhdXRoLmFsYXVkYS5pbycsXG59O1xuXG5jb25zdCBQUkVGSVggPSAnY29uc29sZS0nO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9JQ09OX01BUDogU3RyaW5nTWFwID0ge1xuICAnY29uc29sZS1hY3AnOiAnYWNwJyxcbiAgJ2NvbnNvbGUtYXNtJzogJ2FzbScsXG4gICdjb25zb2xlLWRldm9wcyc6ICdkZXZvcHMnLFxuICAvLyBjb25zb2xlLWUtYWFtIHByZWZpeCDkuLrkuoblhbzlrrnpu5jorqTmjpLluo/vvIznrYnlkI7nu63mjpLluo/mlrnmoYjlh7rmnaXlj6/ku6XmlLnmiJBjb25zb2xlLWFhbVxuICAnY29uc29sZS1lLWFhbSc6ICdhcHBfc3RvcmUnLFxuICAnY29uc29sZS1zZWN1cml0eSc6ICdidWdfc2VhcmNoJyxcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiAncGxhdGZvcm1fbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLXByb2plY3QnOiAncHJvamVjdF9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtZGF0YXNlcnZpY2VzJzogJ2RhdGFfc2VydmljZXMnLFxuICAnY29uc29sZS1jZWMnOiAnY2xvdWRfZWRnZV9jb2xsYWJvcmF0aW9uJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wcm9kdWN0LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgY3VycmVudD86IFByb2R1Y3RFbnRyeU5hbWU7XG5cbiAgQElucHV0KClcbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgUFJPRFVDVF9JQ09OX01BUCA9IFBST0RVQ1RfSUNPTl9NQVA7XG5cbiAgYWxsUHJvZHVjdHMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5wcm9kdWN0U2VsZWN0U2VydmljZS5yZWxvYWQkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdG9yZS5zZWxlY3RBbGxQcm9kdWN0cygpKSxcbiAgICApLFxuICAgIHRoaXMuazhzUGVybWlzc2lvbi5pc0FsbG93ZWQoe1xuICAgICAgdHlwZTogVklFVyxcbiAgICAgIG5hbWU6IFsncGxhdGZvcm12aWV3JywgJ3Byb2plY3R2aWV3J10sXG4gICAgfSksXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbcHJvZHVjdHMsIFtjb25zb2xlUGxhdGZvcm0sIGNvbnNvbGVQcm9qZWN0XV0pID0+IHtcbiAgICAgIGNvbnN0IHBlcm1pc3Npb25zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgICAgICAgJ2NvbnNvbGUtcGxhdGZvcm0nOiBjb25zb2xlUGxhdGZvcm0sXG4gICAgICAgICdjb25zb2xlLXByb2plY3QnOiBjb25zb2xlUHJvamVjdCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gcHJvZHVjdHMuZmlsdGVyKHAgPT4gcGVybWlzc2lvbnNbcC5tZXRhZGF0YS5uYW1lXSA/PyB0cnVlKTtcbiAgICB9KSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgc2VsZWN0YWJsZVByb2R1Y3RzJCA9IHRoaXMuYWxsUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHByb2R1Y3RzID0+XG4gICAgICAocHJvZHVjdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgcHJvZHVjdCA9PlxuICAgICAgICAgICF0aGlzLmlzUG9ydGFsUHJvZHVjdChwcm9kdWN0KSAmJlxuICAgICAgICAgICghcHJvZHVjdC5zdGF0dXMgfHwgcHJvZHVjdC5zdGF0dXMuaGlkZGVuT25Qb3J0YWwgIT09IHRydWUpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBwb3J0YWxQcm9kdWN0JCA9IHRoaXMuYWxsUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHJlcyA9PiByZXMuZmluZChwID0+IHRoaXMuaXNQb3J0YWxQcm9kdWN0KHApKSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGRpc2FibGVkJCA9IHRoaXMuc2VsZWN0YWJsZVByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChwcm9kdWN0cyA9PiAhcHJvZHVjdHMubGVuZ3RoKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgaXNQb3J0YWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBDb21tb25MYXlvdXRTdG9yZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1Blcm1pc3Npb246IEs4c1Blcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFNlbGVjdFNlcnZpY2U6IFByb2R1Y3RTZWxlY3RTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1BvcnRhbCA9IHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKCcvcG9ydGFsJyk7XG4gIH1cblxuICBqdW1wKGVudHJ5cG9pbnQ6IHN0cmluZywgc3NvRW5hYmxlZDogYm9vbGVhbiwgdGFyZ2V0ID0gJ19zZWxmJykge1xuICAgIHdpbmRvdy5vcGVuKHNzb0VuYWJsZWQgPyByZWRpcmVjdFNTT0VudHJ5KGVudHJ5cG9pbnQpIDogZW50cnlwb2ludCwgdGFyZ2V0KTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9Qb3J0YWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHdpbmRvdy5vcGVuKCcvY29uc29sZS1wb3J0YWwnLCAnX3NlbGYnKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9Qcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5pc1Byb2R1Y3RBY3RpdmUoaXRlbSwgdGhpcy5jdXJyZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXRlbS5zcGVjLnBhY2tUeXBlID09PSAnSW50ZWdyYXRlZCcpIHtcbiAgICAgIHRoaXMuanVtcChpdGVtLnNwZWMuZW50cnlwb2ludCwgaXRlbS5zcGVjLnNzb0VuYWJsZWQsICdfYmxhbmsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qdW1wKGl0ZW0uc3BlYy5lbnRyeXBvaW50LCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyRcbiAgICAgICAgfCBhc3luY1xuICAgICAgICB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZSA6IHRpdGxlIDogY3VycmVudFxuICAgICAgICB8IHRyYW5zbGF0ZSlcbiAgXCJcbiAgW25nQ2xhc3NdPVwieyAnYWNsLXByb2R1Y3Qtc2VsZWN0LS1kaXNhYmxlZCc6IGRpc2FibGVkJCB8IGFzeW5jIH1cIlxuPlxuICA8c3BhblxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxQcm9kdWN0cyRcbiAgICAgICAgfCBhc3luY1xuICAgICAgICB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZSA6IHRpdGxlIDogY3VycmVudCBhcyBwcm9kdWN0VGl0bGVcbiAgICBcIlxuICAgIGNsYXNzPVwiYWNsLXByb2R1Y3Qtc2VsZWN0X190aXRsZVwiXG4gID5cbiAgICB7eyBwcm9kdWN0VGl0bGUgfCB0cmFuc2xhdGUgfX1cbiAgPC9zcGFuPlxuICA8YXVpLWljb25cbiAgICBpY29uPVwibWVudV9kb3Rfc1wiXG4gICAgc2l6ZT1cIjE2cHhcIlxuICAgIFthdWlUb29sdGlwXT1cIidub19wcm9kdWN0X2FuZF9jb250YWN0X2FkbWluJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2F1aVRvb2x0aXBEaXNhYmxlZF09XCIhKGRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgYXVpVG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tIHN0YXJ0XCJcbiAgPjwvYXVpLWljb24+XG48L2J1dHRvbj5cbjxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgPGRpdiBjbGFzcz1cIm1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0YWJsZVByb2R1Y3RzJCB8IGFzeW5jIGFzIHByb2R1Y3RzOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtZW51X19pdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdtZW51X19pdGVtLS1hY3RpdmUnOiBpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlIDogY3VycmVudCxcbiAgICAgICAgfVwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByb2R1Y3RzOyB0cmFja0J5OiB0cmFja0ZuXCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qcm9kdWN0KGl0ZW0sICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pY29uXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgaXRlbS5zcGVjLnBhY2tUeXBlICE9PSAnSW50ZWdyYXRlZCcgJiYgIWl0ZW0uc3BlYy5sb2dvO1xuICAgICAgICAgICAgICBlbHNlIGxvZ29cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWNsLWNvbG9yZnVsLWljb25cIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvXCI+XG4gICAgICAgICAge3sgaXRlbS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAqbmdJZj1cIml0ZW0gfCBwdXJlOiBpc1Byb2R1Y3RBY3RpdmUgOiBjdXJyZW50XCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrLXRyaWFuZ2xlLWJhZGdlXCJcbiAgICAgICAgICBpY29uPVwiY2hlY2tcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwicG9ydGFsUHJvZHVjdCQgfCBhc3luYyBhcyBwb3J0YWxNZW51XCJcbiAgICBjbGFzcz1cInBvcnRhbFwiXG4gICAgW25nQ2xhc3NdPVwieyAncG9ydGFsLS1hY3RpdmUnOiBpc1BvcnRhbCB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9ydGFsX19pdGVtXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUG9ydGFsKCRldmVudClcIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiaG9tZV9zXCI+PC9hdWktaWNvbj5cbiAgICAgIHt7IHBvcnRhbE1lbnUuc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGFjbC1sb2FkaW5nLW1hc2tcbiAgICBzdHlsZT1cImhlaWdodDogMTQ4cHhcIlxuICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICA+PC9hY2wtbG9hZGluZy1tYXNrPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==