UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

371 lines 45.8 kB
import { __decorate, __metadata } from "tslib"; /** * @packageDocumentation * @module k8s-resource-list */ import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, TemplateRef, Injector, } from '@angular/core'; import { Observable, combineLatest, concat, debounceTime, distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil, takeWhile, } from 'rxjs'; import { publishRef, ScrollBorderObserverDirective, } from '../../core/public-api'; import { ObservableInput } from '../../core/utils/decorators'; import { TranslateService } from '../../translate/public-api'; import { LoadAction } from '../types'; import * as i0 from "@angular/core"; import * as i1 from "../../translate/public-api"; const _c0 = () => [410, 403]; const _c1 = (a0, a1) => ({ loading: a0, loadMore: a1 }); function K8SResourceListFooterComponent_div_0_ng_container_1_1_ng_template_0_Template(rf, ctx) { } function K8SResourceListFooterComponent_div_0_ng_container_1_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_div_0_ng_container_1_1_ng_template_0_Template, 0, 0, "ng-template"); } } function K8SResourceListFooterComponent_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_div_0_ng_container_1_1_Template, 1, 0, null, 4); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.noDataTemplate); } } function K8SResourceListFooterComponent_div_0_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtext(1); i0.ɵɵpipe(2, "async"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.noDataHint$), " "); } } function K8SResourceListFooterComponent_div_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 3); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_div_0_ng_container_1_Template, 2, 1, "ng-container", 1)(2, K8SResourceListFooterComponent_div_0_ng_container_2_Template, 3, 3, "ng-container", 1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r0.noDataTemplate); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", !ctx_r0.noDataTemplate); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_ng_template_0_Template(rf, ctx) { } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_ng_template_0_Template, 0, 0, "ng-template"); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_Template, 1, 0, null, 4); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.loadingErrorTemplate); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) { const _r2 = i0.ɵɵgetCurrentView(); i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "button", 7); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.retry()); }); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(3, 3, "error_loading_data"), ",", i0.ɵɵpipeBind1(4, 5, "please"), ""); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 7, "retry").toLowerCase(), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template(rf, ctx) { if (rf & 1) { const _r3 = i0.ɵɵgetCurrentView(); i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "button", 7); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.reload()); }); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(8, "span"); i0.ɵɵtext(9); i0.ɵɵpipe(10, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(11, "button", 7); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.loadMore()); }); i0.ɵɵtext(12); i0.ɵɵpipe(13, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(3, 5, "list_data_has_expired"), ", ", i0.ɵɵpipeBind1(4, 7, "please"), " "); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "refresh"), " "); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 11, "or")); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 13, "continue_load"), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "no_permission_description"), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template, 8, 9, "ng-container", 1); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template, 14, 15, "ng-container", 1); i0.ɵɵpipe(3, "async"); i0.ɵɵtemplate(4, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_4_Template, 4, 3, "ng-container", 1); i0.ɵɵpipe(5, "async"); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngIf", !i0.ɵɵpureFunction0(9, _c0).includes(i0.ɵɵpipeBind1(1, 3, ctx_r0.loadingErrorCode$))); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 5, ctx_r0.loadingErrorCode$) === 410); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 7, ctx_r0.loadingErrorCode$) === 403); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 6); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_Template, 1, 1)(2, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_Template, 6, 10); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵconditional(ctx_r0.loadingErrorTemplate ? 1 : 2); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 6); i0.ɵɵelement(1, "aui-icon", 9); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "loading_please_wait")); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 6)(1, "button", 7); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.loadMore()); }); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "load_more"), " "); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 10); i0.ɵɵelement(1, "div", 11); i0.ɵɵelementEnd(); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_1_Template, 5, 3, "div", 5)(2, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template, 4, 3, "div", 5)(3, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_3_Template, 2, 0, "div", 8); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const meta_r5 = ctx.ngIf; i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", meta_r5.loading); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", meta_r5.loadMore); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", !meta_r5.loadMore && !meta_r5.loading); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_Template, 4, 3, "ng-container", 1); i0.ɵɵpipe(2, "async"); i0.ɵɵpipe(3, "async"); i0.ɵɵpipe(4, "async"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(7, _c1, i0.ɵɵpipeBind1(2, 1, ctx_r0.list.loading$), i0.ɵɵpipeBind1(4, 5, !ctx_r0.autoLoad && !i0.ɵɵpipeBind1(3, 3, ctx_r0.list.loading$) && ctx_r0.list.hasMore$))); } } function K8SResourceListFooterComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_div_1_Template, 3, 1, "div", 5); i0.ɵɵpipe(2, "async"); i0.ɵɵtemplate(3, K8SResourceListFooterComponent_ng_container_2_ng_container_3_Template, 5, 10, "ng-container", 1); i0.ɵɵpipe(4, "async"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, ctx_r0.list.loadingError$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 4, ctx_r0.list.loadingError$)); } } function K8SResourceListFooterComponent_aui_back_top_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "aui-back-top", 12); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵproperty("target", ctx_r0.window); } } export class K8sListFooterNoDataDirective { constructor(templateRef) { this.templateRef = templateRef; } static { this.ɵfac = function K8sListFooterNoDataDirective_Factory(t) { return new (t || K8sListFooterNoDataDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: K8sListFooterNoDataDirective, selectors: [["", "aclK8sListFooterNoData", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sListFooterNoDataDirective, [{ type: Directive, args: [{ selector: '[aclK8sListFooterNoData]', }] }], () => [{ type: i0.TemplateRef }], null); })(); export class K8sListFooterLoadingErrorDirective { constructor(templateRef) { this.templateRef = templateRef; } static { this.ɵfac = function K8sListFooterLoadingErrorDirective_Factory(t) { return new (t || K8sListFooterLoadingErrorDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: K8sListFooterLoadingErrorDirective, selectors: [["", "aclK8sListFooterLoadingError", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sListFooterLoadingErrorDirective, [{ type: Directive, args: [{ selector: '[aclK8sListFooterLoadingError]', }] }], () => [{ type: i0.TemplateRef }], null); })(); export class K8SResourceListFooterComponent extends ScrollBorderObserverDirective { constructor(injector, translate) { super(injector); this.translate = translate; this.autoLoad = true; this.backTop = true; this.bottomDistance = 60; this.window = window; this.option = this.autoLoad ? '' : false; } ngOnInit() { super.ngOnInit(); this.loadingErrorCode$ = this.list.loadingError$.pipe(map(loadingError => loadingError && 'code' in loadingError && loadingError.code), distinctUntilChanged(), publishRef()); this.isEmptyList$ = combineLatest([ this.list.items$.pipe(map(items => items.length)), this.list.hasMore$, this.list.loading$, this.list.loadingError$, ]).pipe(map(([length, hasMore, loading, loadingError]) => !(length || hasMore || loading || loadingError)), distinctUntilChanged(), publishRef()); this.noDataHint$ = combineLatest([ this.list.rawResponse$, this.resourceName$, this.resourceNameTranslated$, this.translate.locale$, ]).pipe(filter(([res]) => !!res), map(([{ kind }, resourceName, resourceNameTranslated]) => { if (resourceNameTranslated) { return this.translate.get('no_named_data_hint', { name: resourceNameTranslated, }); } if (resourceName || (kind?.endsWith('List') && kind.length > 4)) { return this.translate.get('no_named_data_hint', { name: this.translate.get(resourceName || kind.slice(0, kind.lastIndexOf('List')).toLowerCase()), }); } return this.translate.get('no_data'); })); const viewEl = this.scrollEl === window ? document.documentElement : this.scrollEl; // 当数据不够一屏时自动加载更多 const autoLoadOneScreen$ = this.list.loadState$.pipe(map(state => state.rawResponse), filter(res => !!res), debounceTime(50), takeWhile(res => { return ((!!res.metadata?.continue && viewEl.scrollHeight - viewEl.clientHeight < this.bottomDistance) || (this.firstScrollLoad && (this.list.snapshot.items?.length || 0) < this.firstScrollLoad)); })); this.list.loadState$ .pipe(filter(state => state.action === LoadAction.Reload), startWith(null), switchMap(() => concat(autoLoadOneScreen$, this.scrollBottomBorder)), // list.rawResponse$ 会处理好 loading 等状态时的 loadMore 请求,但有错误时主要主动停止 filter(() => !this.list.snapshot.loadingError), takeUntil(this.destroy$$)) .subscribe(() => { this.list.loadMore(); }); } retry() { this.list.items$.pipe(take(1)).subscribe(items => { if (items.length > 0) { this.list.loadMore(); } else { this.list.reload(); } }); } static { this.ɵfac = function K8SResourceListFooterComponent_Factory(t) { return new (t || K8SResourceListFooterComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.TranslateService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8SResourceListFooterComponent, selectors: [["acl-k8s-resource-list-footer"]], contentQueries: function K8SResourceListFooterComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, K8sListFooterNoDataDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, K8sListFooterLoadingErrorDirective, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingErrorTemplate = _t.first); } }, inputs: { list: "list", autoLoad: "autoLoad", backTop: "backTop", bottomDistance: "bottomDistance", resourceNameTranslated: "resourceNameTranslated", firstScrollLoad: "firstScrollLoad", resourceName: "resourceName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 7, consts: [["class", "empty-placeholder", 4, "ngIf"], [4, "ngIf"], [3, "target", 4, "ngIf"], [1, "empty-placeholder"], [4, "ngTemplateOutlet"], ["class", "table-placeholder", 4, "ngIf"], [1, "table-placeholder"], ["aui-button", "text", "size", "small", 3, "click"], ["class", "table-last-row--empty", 4, "ngIf"], ["icon", "spinner"], [1, "table-last-row--empty"], [1, "table-last-row--empty-inner"], [3, "target"]], template: function K8SResourceListFooterComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_div_0_Template, 3, 2, "div", 0); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, K8SResourceListFooterComponent_ng_container_2_Template, 5, 6, "ng-container", 1); i0.ɵɵpipe(3, "async"); i0.ɵɵtemplate(4, K8SResourceListFooterComponent_aui_back_top_4_Template, 1, 1, "aui-back-top", 2); } if (rf & 2) { i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 3, ctx.isEmptyList$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(3, 5, ctx.isEmptyList$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx.backTop); } }, styles: ["[_nghost-%COMP%] {position:sticky;left:0;display:flex;justify-content:center;align-items:center;z-index:1;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-help-text))}[_nghost-%COMP%] .empty-placeholder, [_nghost-%COMP%] .table-placeholder{flex:1}[_nghost-%COMP%] .table-last-row--empty{height:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-n-9));position:relative;margin-top:-3px;flex:1}[_nghost-%COMP%] .table-last-row--empty-inner{background-color:rgb(var(--aui-color-n-10));height:var(--aui-border-radius-l);border:1px solid rgb(var(--aui-color-n-8));border-top:0;border-bottom-left-radius:var(--aui-border-radius-l);border-bottom-right-radius:var(--aui-border-radius-l)}[_nghost-%COMP%] .table-placeholder{box-sizing:border-box;display:flex;justify-content:center;align-items:center;padding:15px 10px;min-height:60px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-placeholder-text));background-color:rgb(var(--aui-color-n-10));border:solid 1px rgb(var(--aui-color-n-8));border-radius:var(--aui-border-radius-l);position:sticky;left:0}[_nghost-%COMP%] .table-placeholder>aui-icon:first-child{margin-right:var(--aui-spacing-m)}[_nghost-%COMP%] .aui-table .aui-table__row+.table-placeholder{border-top-left-radius:0;border-top-right-radius:0}"], changeDetection: 0 }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], K8SResourceListFooterComponent.prototype, "resourceNameTranslated$", void 0); __decorate([ ObservableInput(), __metadata("design:type", Observable) ], K8SResourceListFooterComponent.prototype, "resourceName$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8SResourceListFooterComponent, [{ type: Component, args: [{ selector: 'acl-k8s-resource-list-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"isEmptyList$ | async\"\n class=\"empty-placeholder\"\n>\n <ng-container *ngIf=\"noDataTemplate\">\n <ng-template *ngTemplateOutlet=\"noDataTemplate\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!noDataTemplate\">\n {{ noDataHint$ | async }}\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"!(isEmptyList$ | async)\">\n <div\n class=\"table-placeholder\"\n *ngIf=\"list.loadingError$ | async\"\n >\n @if (loadingErrorTemplate) {\n <ng-template *ngTemplateOutlet=\"loadingErrorTemplate\"></ng-template>\n } @else {\n <ng-container *ngIf=\"![410, 403].includes(loadingErrorCode$ | async)\">\n <span\n >{{ 'error_loading_data' | translate }},{{\n 'please' | translate\n }}</span\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"retry()\"\n >\n {{ ('retry' | translate).toLowerCase() }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 410\">\n <span>\n {{ 'list_data_has_expired' | translate }}, {{ 'please' | translate }}\n </span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.reload()\"\n >\n {{ 'refresh' | translate }}\n </button>\n <span>{{ 'or' | translate }}</span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'continue_load' | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 403\">\n <span>\n {{ 'no_permission_description' | translate }}\n </span>\n </ng-container>\n }\n </div>\n\n <ng-container *ngIf=\"!(list.loadingError$ | async)\">\n <ng-container\n *ngIf=\"{\n loading: list.loading$ | async,\n loadMore:\n !autoLoad && !(list.loading$ | async) && list.hasMore$ | async,\n } as meta\"\n >\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loading\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n <span>{{ 'loading_please_wait' | translate }}</span>\n </div>\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loadMore\"\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'load_more' | translate }}\n </button>\n </div>\n <div\n class=\"table-last-row--empty\"\n *ngIf=\"!meta.loadMore && !meta.loading\"\n >\n <div class=\"table-last-row--empty-inner\"></div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<aui-back-top\n *ngIf=\"backTop\"\n [target]=\"window\"\n></aui-back-top>\n", styles: [":host::ng-deep{position:sticky;left:0;display:flex;justify-content:center;align-items:center;z-index:1;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-help-text))}:host::ng-deep .empty-placeholder,:host::ng-deep .table-placeholder{flex:1}:host::ng-deep .table-last-row--empty{height:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-n-9));position:relative;margin-top:-3px;flex:1}:host::ng-deep .table-last-row--empty-inner{background-color:rgb(var(--aui-color-n-10));height:var(--aui-border-radius-l);border:1px solid rgb(var(--aui-color-n-8));border-top:0;border-bottom-left-radius:var(--aui-border-radius-l);border-bottom-right-radius:var(--aui-border-radius-l)}:host::ng-deep .table-placeholder{box-sizing:border-box;display:flex;justify-content:center;align-items:center;padding:15px 10px;min-height:60px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-placeholder-text));background-color:rgb(var(--aui-color-n-10));border:solid 1px rgb(var(--aui-color-n-8));border-radius:var(--aui-border-radius-l);position:sticky;left:0}:host::ng-deep .table-placeholder>aui-icon:first-child{margin-right:var(--aui-spacing-m)}:host::ng-deep .aui-table .aui-table__row+.table-placeholder{border-top-left-radius:0;border-top-right-radius:0}\n"] }] }], () => [{ type: i0.Injector }, { type: i1.TranslateService }], { list: [{ type: Input }], autoLoad: [{ type: Input }], backTop: [{ type: Input }], bottomDistance: [{ type: Input }], resourceNameTranslated: [{ type: Input }], firstScrollLoad: [{ type: Input }], resourceNameTranslated$: [], resourceName: [{ type: Input }], resourceName$: [], noDataTemplate: [{ type: ContentChild, args: [K8sListFooterNoDataDirective, { read: TemplateRef, }] }], loadingErrorTemplate: [{ type: ContentChild, args: [K8sListFooterLoadingErrorDirective, { read: TemplateRef, }] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8SResourceListFooterComponent, { className: "K8SResourceListFooterComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2s4cy1yZXNvdXJjZS1saXN0L2Zvb3Rlci9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvazhzLXJlc291cmNlLWxpc3QvZm9vdGVyL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUdMLFdBQVcsRUFDWCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUdMLFVBQVUsRUFDViw2QkFBNkIsR0FDOUIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBb0IsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7SUNsQ3BELG1IQUFnRDs7O0lBRGxELDZCQUFxQztJQUNuQywrRkFBZ0Q7Ozs7SUFBbEMsY0FBZ0M7SUFBaEMsd0RBQWdDOzs7SUFFaEQsNkJBQXNDO0lBQ3BDLFlBQ0Y7Ozs7O0lBREUsY0FDRjtJQURFLHlFQUNGOzs7SUFURiw4QkFHQztJQUlDLEFBSEEsdUdBQXFDLDBGQUdDO0lBR3hDLGlCQUFNOzs7SUFOVyxjQUFvQjtJQUFwQiw0Q0FBb0I7SUFHcEIsY0FB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RUFBRTtvQkFDMUMsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCO1lBTUQsb0JBQW9CO2tCQUhuQixZQUFZO21CQUFDLGtDQUFrQyxFQUFFO29CQUNoRCxJQUFJLEVBQUUsV0FBVztpQkFDbEI7O2tGQTNCVSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBrOHMtcmVzb3VyY2UtbGlzdFxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBJbmplY3Rvcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBjb25jYXQsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YWtlV2hpbGUsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QsXG4gIHB1Ymxpc2hSZWYsXG4gIFNjcm9sbEJvcmRlck9ic2VydmVyRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBMb2FkQWN0aW9uLCBTdHJlYW1MaXN0TG9hZGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSzhzTGlzdEZvb3Rlck5vRGF0YV0nLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNMaXN0Rm9vdGVyTm9EYXRhRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSzhzTGlzdEZvb3RlckxvYWRpbmdFcnJvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNMaXN0Rm9vdGVyTG9hZGluZ0Vycm9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtazhzLXJlc291cmNlLWxpc3QtZm9vdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLOFNSZXNvdXJjZUxpc3RGb290ZXJDb21wb25lbnRcbiAgZXh0ZW5kcyBTY3JvbGxCb3JkZXJPYnNlcnZlckRpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIGxpc3Q6IFN0cmVhbUxpc3RMb2FkZXI8S3ViZXJuZXRlc1Jlc291cmNlTGlzdCwgS3ViZXJuZXRlc1Jlc291cmNlPjtcblxuICBASW5wdXQoKSBhdXRvTG9hZCA9IHRydWU7XG4gIEBJbnB1dCgpIGJhY2tUb3AgPSB0cnVlO1xuICBASW5wdXQoKSBib3R0b21EaXN0YW5jZSA9IDYwO1xuICBASW5wdXQoKSByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpcnN0U2Nyb2xsTG9hZDogbnVtYmVyO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZXNvdXJjZU5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQENvbnRlbnRDaGlsZChLOHNMaXN0Rm9vdGVyTm9EYXRhRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gIH0pXG4gIG5vRGF0YVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoSzhzTGlzdEZvb3RlckxvYWRpbmdFcnJvckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBsb2FkaW5nRXJyb3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc0VtcHR5TGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5vRGF0YUhpbnQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGxvYWRpbmdFcnJvckNvZGUkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgd2luZG93ID0gd2luZG93O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIHRoaXMub3B0aW9uID0gdGhpcy5hdXRvTG9hZCA/ICcnIDogZmFsc2U7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5sb2FkaW5nRXJyb3JDb2RlJCA9IHRoaXMubGlzdC5sb2FkaW5nRXJyb3IkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIGxvYWRpbmdFcnJvciA9PlxuICAgICAgICAgIGxvYWRpbmdFcnJvciAmJiAnY29kZScgaW4gbG9hZGluZ0Vycm9yICYmIGxvYWRpbmdFcnJvci5jb2RlLFxuICAgICAgKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcblxuICAgIHRoaXMuaXNFbXB0eUxpc3QkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmxpc3QuaXRlbXMkLnBpcGUobWFwKGl0ZW1zID0+IGl0ZW1zLmxlbmd0aCkpLFxuICAgICAgdGhpcy5saXN0Lmhhc01vcmUkLFxuICAgICAgdGhpcy5saXN0LmxvYWRpbmckLFxuICAgICAgdGhpcy5saXN0LmxvYWRpbmdFcnJvciQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtsZW5ndGgsIGhhc01vcmUsIGxvYWRpbmcsIGxvYWRpbmdFcnJvcl0pID0+XG4gICAgICAgICAgIShsZW5ndGggfHwgaGFzTW9yZSB8fCBsb2FkaW5nIHx8IGxvYWRpbmdFcnJvciksXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuXG4gICAgdGhpcy5ub0RhdGFIaW50JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5saXN0LnJhd1Jlc3BvbnNlJCxcbiAgICAgIHRoaXMucmVzb3VyY2VOYW1lJCxcbiAgICAgIHRoaXMucmVzb3VyY2VOYW1lVHJhbnNsYXRlZCQsXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5sb2NhbGUkLFxuICAgIF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtyZXNdKSA9PiAhIXJlcyksXG4gICAgICBtYXAoKFt7IGtpbmQgfSwgcmVzb3VyY2VOYW1lLCByZXNvdXJjZU5hbWVUcmFuc2xhdGVkXSkgPT4ge1xuICAgICAgICBpZiAocmVzb3VyY2VOYW1lVHJhbnNsYXRlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ25vX25hbWVkX2RhdGFfaGludCcsIHtcbiAgICAgICAgICAgIG5hbWU6IHJlc291cmNlTmFtZVRyYW5zbGF0ZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzb3VyY2VOYW1lIHx8IChraW5kPy5lbmRzV2l0aCgnTGlzdCcpICYmIGtpbmQubGVuZ3RoID4gNCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdub19uYW1lZF9kYXRhX2hpbnQnLCB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5nZXQoXG4gICAgICAgICAgICAgIHJlc291cmNlTmFtZSB8fFxuICAgICAgICAgICAgICAgIGtpbmQuc2xpY2UoMCwga2luZC5sYXN0SW5kZXhPZignTGlzdCcpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdub19kYXRhJyk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3Qgdmlld0VsID1cbiAgICAgIHRoaXMuc2Nyb2xsRWwgPT09IHdpbmRvd1xuICAgICAgICA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICAgICAgICA6ICh0aGlzLnNjcm9sbEVsIGFzIEhUTUxFbGVtZW50KTtcblxuICAgIC8vIOW9k+aVsOaNruS4jeWkn+S4gOWxj+aXtuiHquWKqOWKoOi9veabtOWkmlxuICAgIGNvbnN0IGF1dG9Mb2FkT25lU2NyZWVuJCA9IHRoaXMubGlzdC5sb2FkU3RhdGUkLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUucmF3UmVzcG9uc2UpLFxuICAgICAgZmlsdGVyKHJlcyA9PiAhIXJlcyksXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgdGFrZVdoaWxlKHJlcyA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKCEhcmVzLm1ldGFkYXRhPy5jb250aW51ZSAmJlxuICAgICAgICAgICAgdmlld0VsLnNjcm9sbEhlaWdodCAtIHZpZXdFbC5jbGllbnRIZWlnaHQgPCB0aGlzLmJvdHRvbURpc3RhbmNlKSB8fFxuICAgICAgICAgICh0aGlzLmZpcnN0U2Nyb2xsTG9hZCAmJlxuICAgICAgICAgICAgKHRoaXMubGlzdC5zbmFwc2hvdC5pdGVtcz8ubGVuZ3RoIHx8IDApIDwgdGhpcy5maXJzdFNjcm9sbExvYWQpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMubGlzdC5sb2FkU3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlLmFjdGlvbiA9PT0gTG9hZEFjdGlvbi5SZWxvYWQpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCBhcyB2b2lkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IGNvbmNhdChhdXRvTG9hZE9uZVNjcmVlbiQsIHRoaXMuc2Nyb2xsQm90dG9tQm9yZGVyKSksXG4gICAgICAgIC8vIGxpc3QucmF3UmVzcG9uc2UkIOS8muWkhOeQhuWlvSBsb2FkaW5nIOetieeKtuaAgeaXtueahCBsb2FkTW9yZSDor7fmsYLvvIzkvYbmnInplJnor6/ml7bkuLvopoHkuLvliqjlgZzmraJcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmxpc3Quc25hcHNob3QubG9hZGluZ0Vycm9yKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3QubG9hZE1vcmUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0cnkoKSB7XG4gICAgdGhpcy5saXN0Lml0ZW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxpc3QubG9hZE1vcmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImlzRW1wdHlMaXN0JCB8IGFzeW5jXCJcbiAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm5vRGF0YVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhVGVtcGxhdGVcIj5cbiAgICB7eyBub0RhdGFIaW50JCB8IGFzeW5jIH19XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhKGlzRW1wdHlMaXN0JCB8IGFzeW5jKVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ0YWJsZS1wbGFjZWhvbGRlclwiXG4gICAgKm5nSWY9XCJsaXN0LmxvYWRpbmdFcnJvciQgfCBhc3luY1wiXG4gID5cbiAgICBAaWYgKGxvYWRpbmdFcnJvclRlbXBsYXRlKSB7XG4gICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nRXJyb3JUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVs0MTAsIDQwM10uaW5jbHVkZXMobG9hZGluZ0Vycm9yQ29kZSQgfCBhc3luYylcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA+e3sgJ2Vycm9yX2xvYWRpbmdfZGF0YScgfCB0cmFuc2xhdGUgfX0se3tcbiAgICAgICAgICAgICdwbGVhc2UnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJldHJ5KClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgKCdyZXRyeScgfCB0cmFuc2xhdGUpLnRvTG93ZXJDYXNlKCkgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihsb2FkaW5nRXJyb3JDb2RlJCB8IGFzeW5jKSA9PT0gNDEwXCI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgIHt7ICdsaXN0X2RhdGFfaGFzX2V4cGlyZWQnIHwgdHJhbnNsYXRlIH19LCB7eyAncGxlYXNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwibGlzdC5yZWxvYWQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAncmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxzcGFuPnt7ICdvcicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwibGlzdC5sb2FkTW9yZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdjb250aW51ZV9sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGxvYWRpbmdFcnJvckNvZGUkIHwgYXN5bmMpID09PSA0MDNcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAge3sgJ25vX3Blcm1pc3Npb25fZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEobGlzdC5sb2FkaW5nRXJyb3IkIHwgYXN5bmMpXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGxvYWRpbmc6IGxpc3QubG9hZGluZyQgfCBhc3luYyxcbiAgICAgICAgbG9hZE1vcmU6XG4gICAgICAgICAgIWF1dG9Mb2FkICYmICEobGlzdC5sb2FkaW5nJCB8IGFzeW5jKSAmJiBsaXN0Lmhhc01vcmUkIHwgYXN5bmMsXG4gICAgICB9IGFzIG1ldGFcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1wbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ0lmPVwibWV0YS5sb2FkaW5nXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1pY29uIGljb249XCJzcGlubmVyXCI+PC9hdWktaWNvbj5cbiAgICAgICAgPHNwYW4+e3sgJ2xvYWRpbmdfcGxlYXNlX3dhaXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFibGUtcGxhY2Vob2xkZXJcIlxuICAgICAgICAqbmdJZj1cIm1ldGEubG9hZE1vcmVcIlxuICAgICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgKGNsaWNrKT1cImxpc3QubG9hZE1vcmUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnbG9hZF9tb3JlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhYmxlLWxhc3Qtcm93LS1lbXB0eVwiXG4gICAgICAgICpuZ0lmPVwiIW1ldGEubG9hZE1vcmUgJiYgIW1ldGEubG9hZGluZ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1sYXN0LXJvdy0tZW1wdHktaW5uZXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48YXVpLWJhY2stdG9wXG4gICpuZ0lmPVwiYmFja1RvcFwiXG4gIFt0YXJnZXRdPVwid2luZG93XCJcbj48L2F1aS1iYWNrLXRvcD5cbiJdfQ==