@cqa-lib/cqa-ui 1.1.380 → 1.1.382
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/esm2020/lib/detail-side-panel/detail-side-panel.component.mjs +3 -3
- package/esm2020/lib/test-case-details/run-execution-alert/run-execution-alert.component.mjs +48 -6
- package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +48 -7
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +47 -7
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/test-case-details/run-execution-alert/run-execution-alert.component.d.ts +24 -1
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -65,13 +65,13 @@ export class DetailSidePanelComponent {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
DetailSidePanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailSidePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
-
DetailSidePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailSidePanelComponent, selector: "cqa-detail-side-panel", inputs: { tabs: "tabs", activeTab: "activeTab", showCloseButton: "showCloseButton", expanded: "expanded", expandedWidth: "expandedWidth", collapsedWidth: "collapsedWidth", expandTooltip: "expandTooltip", collapseTooltip: "collapseTooltip", closeTooltip: "closeTooltip" }, outputs: { back: "back", tabChange: "tabChange", expandToggle: "expandToggle", close: "close" }, host: { properties: { "style.width": "this.hostWidth", "style.min-width": "this.hostMinWidth", "style.max-width": "this.hostMaxWidth", "style.overflow": "this.hostOverflow" }, styleAttribute: "transition: width 0.3s ease-in-out", classAttribute: "cqa-ui-root cqa-flex cqa-flex-col cqa-h-full cqa-flex-shrink-0 cqa-flex-grow-0 cqa-bg-white cqa-shadow-[-4px_0_6px_-1px_rgba(0,0,0,0.05)]" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">{{ expanded ? 'chevron_left' : 'chevron_right' }}</mat-icon>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">{{ tab.icon || 'circle' }}</mat-icon>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Tab content: fully provided by host via content projection. Host uses *ngIf per tab so only active content is projected. Add/remove tabs in the host without changing cqa-ui-lib. -->\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [".detail-side-panel-scroll{overflow-y:auto!important;overflow-x:hidden!important;min-height:0!important;-webkit-overflow-scrolling:touch}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
68
|
+
DetailSidePanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailSidePanelComponent, selector: "cqa-detail-side-panel", inputs: { tabs: "tabs", activeTab: "activeTab", showCloseButton: "showCloseButton", expanded: "expanded", expandedWidth: "expandedWidth", collapsedWidth: "collapsedWidth", expandTooltip: "expandTooltip", collapseTooltip: "collapseTooltip", closeTooltip: "closeTooltip" }, outputs: { back: "back", tabChange: "tabChange", expandToggle: "expandToggle", close: "close" }, host: { properties: { "style.width": "this.hostWidth", "style.min-width": "this.hostMinWidth", "style.max-width": "this.hostMaxWidth", "style.overflow": "this.hostOverflow" }, styleAttribute: "transition: width 0.3s ease-in-out", classAttribute: "cqa-ui-root cqa-flex cqa-flex-col cqa-h-full cqa-flex-shrink-0 cqa-flex-grow-0 cqa-bg-white cqa-shadow-[-4px_0_6px_-1px_rgba(0,0,0,0.05)]" }, ngImport: i0, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <!-- Chevron left when expanded, right when collapsed -->\n <svg\n *ngIf=\"expanded\"\n class=\"cqa-w-4 cqa-h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 12L6 8L10 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg\n *ngIf=\"!expanded\"\n class=\"cqa-w-4 cqa-h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6 4L10 8L6 12\"\n stroke=\"currentColor\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <!-- Custom SVGs for specific tabs to match Figma icons, centered -->\n <ng-container *ngIf=\"tab.icon === 'description'; else codeTabIcon\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.5002 1.66663H5.00016C4.55814 1.66663 4.13421 1.84222 3.82165 2.15478C3.50909 2.46734 3.3335 2.89127 3.3335 3.33329V16.6666C3.3335 17.1087 3.50909 17.5326 3.82165 17.8451C4.13421 18.1577 4.55814 18.3333 5.00016 18.3333H15.0002C15.4422 18.3333 15.8661 18.1577 16.1787 17.8451C16.4912 17.5326 16.6668 17.1087 16.6668 16.6666V5.83329L12.5002 1.66663Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.6665 1.66663V4.99996C11.6665 5.44199 11.8421 5.86591 12.1547 6.17847C12.4672 6.49103 12.8911 6.66663 13.3332 6.66663H16.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M8.33317 7.5H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M13.3332 10.8334H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M13.3332 14.1666H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </ng-container>\n <ng-template #codeTabIcon>\n <ng-container *ngIf=\"tab.icon === 'code'; else defaultTabIcon\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4.99984 11.6666L6.24984 9.24996C6.38573 8.98007 6.59244 8.75221 6.84785 8.59075C7.10325 8.42928 7.39775 8.34029 7.69984 8.33329H16.6665M16.6665 8.33329C16.9211 8.33284 17.1724 8.39074 17.4012 8.50253C17.63 8.61432 17.8301 8.77703 17.9861 8.97818C18.1422 9.17933 18.2502 9.41357 18.3017 9.66292C18.3531 9.91227 18.3468 10.1701 18.2832 10.4166L16.9998 15.4166C16.907 15.7763 16.6967 16.0946 16.4023 16.321C16.1079 16.5475 15.7463 16.6691 15.3748 16.6666H3.33317C2.89114 16.6666 2.46722 16.491 2.15466 16.1785C1.8421 15.8659 1.6665 15.442 1.6665 15V4.16662C1.6665 3.7246 1.8421 3.30067 2.15466 2.98811C2.46722 2.67555 2.89114 2.49996 3.33317 2.49996H6.58317C6.86191 2.49723 7.13688 2.56445 7.38292 2.69547C7.62896 2.8265 7.8382 3.01715 7.9915 3.24996L8.6665 4.24996C8.81826 4.4804 9.02486 4.66956 9.26775 4.80046C9.51065 4.93136 9.78225 4.99991 10.0582 4.99996H14.9998C15.4419 4.99996 15.8658 5.17555 16.1783 5.48811C16.4909 5.80067 16.6665 6.2246 16.6665 6.66662V8.33329Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </ng-container>\n </ng-template>\n <ng-template #defaultTabIcon>\n <!-- History and other icons fallback -->\n <ng-container *ngIf=\"tab.icon === 'history'; else matIconFallback\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M25.99 6C16.04 6 8 14.06 8 24H2l7.79 7.79.14.29L18 24h-6c0-7.73 6.27-14 14-14s14 6.27 14 14-6.27 14-14 14c-3.87 0-7.36-1.58-9.89-4.11l-2.83 2.83C16.53 39.98 21.02 42 25.99 42 35.94 42 44 33.94 44 24S35.94 6 25.99 6zM24 16v10l8.56 5.08L34 28.65l-7-4.15V16h-3z\"\n fill=\"currentColor\" />\n </svg>\n </ng-container>\n <ng-template #matIconFallback>\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">{{ tab.icon || 'circle' }}</mat-icon>\n </ng-template>\n </ng-template>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Tab content: fully provided by host via content projection. Host uses *ngIf per tab so only active content is projected. Add/remove tabs in the host without changing cqa-ui-lib. -->\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n", styles: [".detail-side-panel-scroll{overflow-y:auto!important;overflow-x:hidden!important;min-height:0!important;-webkit-overflow-scrolling:touch}\n"], components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
69
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailSidePanelComponent, decorators: [{
|
|
70
70
|
type: Component,
|
|
71
71
|
args: [{ selector: 'cqa-detail-side-panel', styles: [DETAIL_SIDE_PANEL_SCROLL_STYLES], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
72
72
|
class: 'cqa-ui-root cqa-flex cqa-flex-col cqa-h-full cqa-flex-shrink-0 cqa-flex-grow-0 cqa-bg-white cqa-shadow-[-4px_0_6px_-1px_rgba(0,0,0,0.05)]',
|
|
73
73
|
style: 'transition: width 0.3s ease-in-out',
|
|
74
|
-
}, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <
|
|
74
|
+
}, template: "<div class=\"cqa-flex cqa-flex-col cqa-h-full cqa-min-w-0 cqa-bg-white\">\n <!-- Main content: Side menu + Scrollable content -->\n <div\n class=\"cqa-grid cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden\"\n [style.grid-template-columns]=\"expanded ? 'auto 1fr' : 'auto 0fr'\"\n style=\"transition: grid-template-columns 0.3s ease-in-out\">\n <!-- Left vertical icon menu -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-items-center cqa-gap-2 cqa-py-4 cqa-px-2 cqa-border-r cqa-border-[#F5F5F5] cqa-flex-shrink-0 cqa-text-[#0A0A0A]\"\n style=\"box-shadow: 1px 4px 12px 1px rgba(0, 0, 0, 0.05);\">\n <!-- Expand / Collapse button (always visible) -->\n <button\n type=\"button\"\n [matTooltip]=\"expanded ? collapseTooltip : expandTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onExpandToggle()\">\n <!-- Chevron left when expanded, right when collapsed -->\n <svg\n *ngIf=\"expanded\"\n class=\"cqa-w-4 cqa-h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M10 12L6 8L10 4\"\n stroke=\"currentColor\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n <svg\n *ngIf=\"!expanded\"\n class=\"cqa-w-4 cqa-h-4\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6 4L10 8L6 12\"\n stroke=\"currentColor\"\n stroke-width=\"1.33333\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n <!-- Close button -->\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n [matTooltip]=\"closeTooltip\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg cqa-text-[#64748B] hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onClose()\">\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">close</mat-icon>\n </button>\n <!-- Tab buttons (1:1 with tabs) -->\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n [matTooltip]=\"tab.label\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-9 cqa-h-9 cqa-rounded-lg hover:cqa-bg-[#E2E8F0] hover:cqa-text-[#334155] cqa-transition-colors focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n <!-- Custom SVGs for specific tabs to match Figma icons, centered -->\n <ng-container *ngIf=\"tab.icon === 'description'; else codeTabIcon\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.5002 1.66663H5.00016C4.55814 1.66663 4.13421 1.84222 3.82165 2.15478C3.50909 2.46734 3.3335 2.89127 3.3335 3.33329V16.6666C3.3335 17.1087 3.50909 17.5326 3.82165 17.8451C4.13421 18.1577 4.55814 18.3333 5.00016 18.3333H15.0002C15.4422 18.3333 15.8661 18.1577 16.1787 17.8451C16.4912 17.5326 16.6668 17.1087 16.6668 16.6666V5.83329L12.5002 1.66663Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M11.6665 1.66663V4.99996C11.6665 5.44199 11.8421 5.86591 12.1547 6.17847C12.4672 6.49103 12.8911 6.66663 13.3332 6.66663H16.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M8.33317 7.5H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M13.3332 10.8334H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M13.3332 14.1666H6.6665\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </ng-container>\n <ng-template #codeTabIcon>\n <ng-container *ngIf=\"tab.icon === 'code'; else defaultTabIcon\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M4.99984 11.6666L6.24984 9.24996C6.38573 8.98007 6.59244 8.75221 6.84785 8.59075C7.10325 8.42928 7.39775 8.34029 7.69984 8.33329H16.6665M16.6665 8.33329C16.9211 8.33284 17.1724 8.39074 17.4012 8.50253C17.63 8.61432 17.8301 8.77703 17.9861 8.97818C18.1422 9.17933 18.2502 9.41357 18.3017 9.66292C18.3531 9.91227 18.3468 10.1701 18.2832 10.4166L16.9998 15.4166C16.907 15.7763 16.6967 16.0946 16.4023 16.321C16.1079 16.5475 15.7463 16.6691 15.3748 16.6666H3.33317C2.89114 16.6666 2.46722 16.491 2.15466 16.1785C1.8421 15.8659 1.6665 15.442 1.6665 15V4.16662C1.6665 3.7246 1.8421 3.30067 2.15466 2.98811C2.46722 2.67555 2.89114 2.49996 3.33317 2.49996H6.58317C6.86191 2.49723 7.13688 2.56445 7.38292 2.69547C7.62896 2.8265 7.8382 3.01715 7.9915 3.24996L8.6665 4.24996C8.81826 4.4804 9.02486 4.66956 9.26775 4.80046C9.51065 4.93136 9.78225 4.99991 10.0582 4.99996H14.9998C15.4419 4.99996 15.8658 5.17555 16.1783 5.48811C16.4909 5.80067 16.6665 6.2246 16.6665 6.66662V8.33329Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.66667\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </ng-container>\n </ng-template>\n <ng-template #defaultTabIcon>\n <!-- History and other icons fallback -->\n <ng-container *ngIf=\"tab.icon === 'history'; else matIconFallback\">\n <svg\n class=\"cqa-w-5 cqa-h-5\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M25.99 6C16.04 6 8 14.06 8 24H2l7.79 7.79.14.29L18 24h-6c0-7.73 6.27-14 14-14s14 6.27 14 14-6.27 14-14 14c-3.87 0-7.36-1.58-9.89-4.11l-2.83 2.83C16.53 39.98 21.02 42 25.99 42 35.94 42 44 33.94 44 24S35.94 6 25.99 6zM24 16v10l8.56 5.08L34 28.65l-7-4.15V16h-3z\"\n fill=\"currentColor\" />\n </svg>\n </ng-container>\n <ng-template #matIconFallback>\n <mat-icon class=\"cqa-text-[20px] cqa-w-5 cqa-h-5 cqa-leading-[19px]\">{{ tab.icon || 'circle' }}</mat-icon>\n </ng-template>\n </ng-template>\n </button>\n </div>\n\n <!-- Scrollable content area (collapses with animation when expanded is false) -->\n <div class=\"cqa-flex cqa-flex-col cqa-min-h-0 cqa-min-w-0 cqa-overflow-hidden cqa-w-full cqa-h-full\">\n <div class=\"detail-side-panel-scroll cqa-flex-1 cqa-min-h-0 cqa-min-w-0 cqa-overflow-y-auto cqa-overflow-x-hidden cqa-p-4 cqa-space-y-4\" style=\"overflow-y: auto; overflow-x: hidden; min-height: 0; -webkit-overflow-scrolling: touch;\">\n <!-- Tabs: equally distributed (Figma: purple active, gray inactive) -->\n <div class=\"cqa-flex cqa-gap-[3.5px] cqa-p-[3.5px] cqa-bg-[#F1F5F9] cqa-rounded-lg cqa-w-full\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackByTabValue\"\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"activeTab === tab.value\"\n [class.cqa-bg-[#3F43EE]]=\"activeTab === tab.value\"\n [class.cqa-text-white]=\"activeTab === tab.value\"\n [class.cqa-text-[#64748B]]=\"activeTab !== tab.value\"\n class=\"cqa-flex-1 cqa-flex cqa-justify-center cqa-items-center cqa-py-2 cqa-rounded-lg cqa-text-xs cqa-font-medium cqa-transition-colors hover:cqa-opacity-90 focus:cqa-outline-none focus-visible:cqa-ring-2 focus-visible:cqa-ring-[#3F43EE] focus-visible:cqa-ring-offset-2\"\n (click)=\"onTabClick(tab)\">\n {{ tab.label }}\n </button>\n </div>\n\n <!-- Tab content: fully provided by host via content projection. Host uses *ngIf per tab so only active content is projected. Add/remove tabs in the host without changing cqa-ui-lib. -->\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
75
75
|
}], propDecorators: { tabs: [{
|
|
76
76
|
type: Input
|
|
77
77
|
}], activeTab: [{
|
|
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
111
111
|
}], close: [{
|
|
112
112
|
type: Output
|
|
113
113
|
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFlN0UsTUFBTSxPQUFPLHdCQUF3QjtJQVhyQztRQVlFLDZHQUE2RztRQUNwRyxTQUFJLEdBQXlCO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0QsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3pELENBQUM7UUFFRixpQ0FBaUM7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUVqQyx3REFBd0Q7UUFDL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsaUZBQWlGO1FBQ3hFLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsc0RBQXNEO1FBQzdDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBRWpDLDZFQUE2RTtRQUNwRSxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQWNGLGlCQUFZLEdBQUcsUUFBUSxDQUFD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XG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV0YWlsU2lkZVBhbmVsVGFiIH0gZnJvbSAnLi9kZXRhaWwtc2lkZS1wYW5lbC5tb2RlbHMnO1xuaW1wb3J0IHsgREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFUyB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwuc3R5bGVzJztcblxuZXhwb3J0IHR5cGUgeyBEZXRhaWxTaWRlUGFuZWxUYWIsIERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSwgRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbiB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRldGFpbC1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFU10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6XG4gICAgICAnY3FhLXVpLXJvb3QgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1oLWZ1bGwgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWZsZXgtZ3Jvdy0wIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LVstNHB4XzBfNnB4Xy0xcHhfcmdiYSgwLDAsMCwwLjA1KV0nLFxuICAgIHN0eWxlOiAndHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLWluLW91dCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIERldGFpbFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIC8qKiBUYWJzIC0gZWFjaCB0YWIgaGFzIGEgc2lkZSBwYW5lbCBpY29uIGJ1dHRvbjsgdGFicyBhbmQgYnV0dG9ucyBhcmUgMToxLiBIb3N0IGRlZmluZXMgdGFicyBhbmQgY29udGVudC4gKi9cbiAgQElucHV0KCkgdGFiczogRGV0YWlsU2lkZVBhbmVsVGFiW10gPSBbXG4gICAgeyBsYWJlbDogJ1Rlc3QgQ2FzZScsIHZhbHVlOiAndGVzdC1jYXNlJywgaWNvbjogJ2Rlc2NyaXB0aW9uJyB9LFxuICAgIHsgbGFiZWw6ICdEYXRhIExpYnJhcnknLCB2YWx1ZTogJ2RhdGEtbGlicmFyeScsIGljb246ICdmb2xkZXInIH0sXG4gICAgeyBsYWJlbDogJ1ZhcmlhYmxlcycsIHZhbHVlOiAndmFyaWFibGVzJywgaWNvbjogJ2NvZGUnIH0sXG4gIF07XG5cbiAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdGFiIHZhbHVlICovXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYiA9ICd0ZXN0LWNhc2UnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgc2lkZSBtZW51ICovXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZCAoYWZmZWN0cyBleHBhbmQgYnV0dG9uIGljb24gYW5kIHBhbmVsIHdpZHRoKSAqL1xuICBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqIFBhbmVsIHdpZHRoIHdoZW4gZXhwYW5kZWQgKGUuZy4gJzQ4MHB4JywgJzI1JScpICovXG4gIEBJbnB1dCgpIGV4cGFuZGVkV2lkdGggPSAnMzgwcHgnO1xuXG4gIC8qKiBQYW5lbCB3aWR0aCB3aGVuIGNvbGxhcHNlZCAoZS5nLiAnNTZweCcgLSBmaXRzIGljb24gYmFyICsgYmFjayBidXR0b24pICovXG4gIEBJbnB1dCgpIGNvbGxhcHNlZFdpZHRoID0gJzU2cHgnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBnZXQgaG9zdFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBnZXQgaG9zdE1pbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBnZXQgaG9zdE1heFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpIGhvc3RPdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIC8qKiBUb29sdGlwIGZvciBleHBhbmQgYnV0dG9uIHdoZW4gcGFuZWwgaXMgY29sbGFwc2VkICovXG4gIEBJbnB1dCgpIGV4cGFuZFRvb2x0aXAgPSAnRXhwYW5kJztcblxuICAvKiogVG9vbHRpcCBmb3IgZXhwYW5kIGJ1dHRvbiB3aGVuIHBhbmVsIGlzIGV4cGFuZGVkIChjb2xsYXBzZSkgKi9cbiAgQElucHV0KCkgY29sbGFwc2VUb29sdGlwID0gJ0NvbGxhcHNlJztcblxuICAvKiogVG9vbHRpcCBmb3IgY2xvc2UgYnV0dG9uICovXG4gIEBJbnB1dCgpIGNsb3NlVG9vbHRpcCA9ICdDbG9zZSc7XG5cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRyYWNrQnlUYWJWYWx1ZShfaTogbnVtYmVyLCB0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi52YWx1ZTtcbiAgfVxuXG4gIG9uQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHZvaWQge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5leHBhbmRUb2dnbGUuZW1pdCgpO1xuICAgIH1cbiAgICBpZiAodGFiLnZhbHVlICE9PSB0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh0YWIudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRXhwYW5kVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWgtZnVsbCBjcWEtbWluLXctMCBjcWEtYmctd2hpdGVcIj5cbiAgPCEtLSBNYWluIGNvbnRlbnQ6IFNpZGUgbWVudSArIFNjcm9sbGFibGUgY29udGVudCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWdyaWQgY3FhLWZsZXgtMSBjcWEtbWluLWgtMCBjcWEtbWluLXctMCBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImV4cGFuZGVkID8gJ2F1dG8gMWZyJyA6ICdhdXRvIDBmcidcIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIDAuM3MgZWFzZS1pbi1vdXRcIj5cbiAgICA8IS0tIExlZnQgdmVydGljYWwgaWNvbiBtZW51IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1weS00IGNxYS1weC0yIGNxYS1ib3JkZXItciBjcWEtYm9yZGVyLVsjRjVGNUY1XSBjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bIzBBMEEwQV1cIlxuICAgICAgc3R5bGU9XCJib3gtc2hhZG93OiAxcHggNHB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XCI+XG4gICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGJ1dHRvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZXhwYW5kZWQgPyBjb2xsYXBzZVRvb2x0aXAgOiBleHBhbmRUb29sdGlwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWyM2NDc0OEJdIGhvdmVyOmNxYS1iZy1bI0UyRThGMF0gaG92ZXI6Y3FhLXRleHQtWyMzMzQxNTVdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kVG9nZ2xlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNSBjcWEtbGVhZGluZy1bMTlweF1cIj57eyBleHBhbmRlZCA/ICdjaGV2cm9uX2xlZnQnIDogJ2NoZXZyb25fcmlnaHQnIH19PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBDbG9zZSBidXR0b24gLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImNsb3NlVG9vbHRpcFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctOSBjcWEtaC05IGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsjNjQ3NDhCXSBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNSBjcWEtbGVhZGluZy1bMTlweF1cIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gVGFiIGJ1dHRvbnMgKDE6MSB3aXRoIHRhYnMpIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlUYWJWYWx1ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ0YWIubGFiZWxcIlxuICAgICAgICBbY2xhc3MuY3FhLWJnLVsjM0Y0M0VFXV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtdGV4dC13aGl0ZV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtdGV4dC1bIzY0NzQ4Ql1dPVwiYWN0aXZlVGFiICE9PSB0YWIudmFsdWVcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTkgY3FhLWgtOSBjcWEtcm91bmRlZC1sZyBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvblRhYkNsaWNrKHRhYilcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNSBjcWEtbGVhZGluZy1bMTlweF1cIj57eyB0YWIuaWNvbiB8fCAnY2lyY2xlJyB9fTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gU2Nyb2xsYWJsZSBjb250ZW50IGFyZWEgKGNvbGxhcHNlcyB3aXRoIGFuaW1hdGlvbiB3aGVuIGV4cGFuZGVkIGlzIGZhbHNlKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1taW4taC0wIGNxYS1taW4tdy0wIGNxYS1vdmVyZmxvdy1oaWRkZW4gY3FhLXctZnVsbCBjcWEtaC1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXNpZGUtcGFuZWwtc2Nyb2xsIGNxYS1mbGV4LTEgY3FhLW1pbi1oLTAgY3FhLW1pbi13LTAgY3FhLW92ZXJmbG93LXktYXV0byBjcWEtb3ZlcmZsb3cteC1oaWRkZW4gY3FhLXAtNCBjcWEtc3BhY2UteS00XCIgc3R5bGU9XCJvdmVyZmxvdy15OiBhdXRvOyBvdmVyZmxvdy14OiBoaWRkZW47IG1pbi1oZWlnaHQ6IDA7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcIj5cbiAgICAgIDwhLS0gVGFiczogZXF1YWxseSBkaXN0cmlidXRlZCAoRmlnbWE6IHB1cnBsZSBhY3RpdmUsIGdyYXkgaW5hY3RpdmUpIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1nYXAtWzMuNXB4XSBjcWEtcC1bMy41cHhdIGNxYS1iZy1bI0YxRjVGOV0gY3FhLXJvdW5kZWQtbGcgY3FhLXctZnVsbFwiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlUYWJWYWx1ZVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgW2NsYXNzLmNxYS1iZy1bIzNGNDNFRV1dPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtdGV4dC13aGl0ZV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgW2NsYXNzLmNxYS10ZXh0LVsjNjQ3NDhCXV09XCJhY3RpdmVUYWIgIT09IHRhYi52YWx1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1mbGV4IGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtY2VudGVyIGNxYS1weS0yIGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LXhzIGNxYS1mb250LW1lZGl1bSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6Y3FhLW9wYWNpdHktOTAgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2sodGFiKVwiPlxuICAgICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFRhYiBjb250ZW50OiBmdWxseSBwcm92aWRlZCBieSBob3N0IHZpYSBjb250ZW50IHByb2plY3Rpb24uIEhvc3QgdXNlcyAqbmdJZiBwZXIgdGFiIHNvIG9ubHkgYWN0aXZlIGNvbnRlbnQgaXMgcHJvamVjdGVkLiBBZGQvcmVtb3ZlIHRhYnMgaW4gdGhlIGhvc3Qgd2l0aG91dCBjaGFuZ2luZyBjcWEtdWktbGliLiAtLT5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFlN0UsTUFBTSxPQUFPLHdCQUF3QjtJQVhyQztRQVlFLDZHQUE2RztRQUNwRyxTQUFJLEdBQXlCO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0QsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3pELENBQUM7UUFFRixpQ0FBaUM7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUVqQyx3REFBd0Q7UUFDL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsaUZBQWlGO1FBQ3hFLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsc0RBQXNEO1FBQzdDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBRWpDLDZFQUE2RTtRQUNwRSxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQWNGLGlCQUFZLEdBQUcsUUFBUSxDQUFDO1FBRXZELHdEQUF3RDtRQUMvQyxrQkFBYSxHQUFHLFFBQVEsQ0FBQztRQUVsQyxrRUFBa0U7UUFDekQsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFFdEMsK0JBQStCO1FBQ3RCLGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBRXRCLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN4QyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQTBCNUM7SUFwREMsSUFBZ0MsU0FBUztRQUN2QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQW9DLFlBQVk7UUFDOUMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFvQyxZQUFZO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNsRSxDQUFDO0lBa0JELGVBQWUsQ0FBQyxFQUFVLEVBQUUsR0FBdUI7UUFDakQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXVCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7O3FIQTFFVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixtekJDeEJyQyxtZ1RBNktBOzJGRHJKYSx3QkFBd0I7a0JBWHBDLFNBQVM7K0JBQ0UsdUJBQXVCLFVBRXpCLENBQUMsK0JBQStCLENBQUMsbUJBQ3hCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osS0FBSyxFQUNILDJJQUEySTt3QkFDN0ksS0FBSyxFQUFFLG9DQUFvQztxQkFDNUM7OEJBSVEsSUFBSTtzQkFBWixLQUFLO2dCQU9HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFFMEIsU0FBUztzQkFBeEMsV0FBVzt1QkFBQyxhQUFhO2dCQUlVLFlBQVk7c0JBQS9DLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUlNLFlBQVk7c0JBQS9DLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUlDLFlBQVk7c0JBQTFDLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQUdwQixhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV0YWlsU2lkZVBhbmVsVGFiIH0gZnJvbSAnLi9kZXRhaWwtc2lkZS1wYW5lbC5tb2RlbHMnO1xuaW1wb3J0IHsgREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFUyB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwuc3R5bGVzJztcblxuZXhwb3J0IHR5cGUgeyBEZXRhaWxTaWRlUGFuZWxUYWIsIERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSwgRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbiB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRldGFpbC1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFU10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6XG4gICAgICAnY3FhLXVpLXJvb3QgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1oLWZ1bGwgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWZsZXgtZ3Jvdy0wIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LVstNHB4XzBfNnB4Xy0xcHhfcmdiYSgwLDAsMCwwLjA1KV0nLFxuICAgIHN0eWxlOiAndHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLWluLW91dCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIERldGFpbFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIC8qKiBUYWJzIC0gZWFjaCB0YWIgaGFzIGEgc2lkZSBwYW5lbCBpY29uIGJ1dHRvbjsgdGFicyBhbmQgYnV0dG9ucyBhcmUgMToxLiBIb3N0IGRlZmluZXMgdGFicyBhbmQgY29udGVudC4gKi9cbiAgQElucHV0KCkgdGFiczogRGV0YWlsU2lkZVBhbmVsVGFiW10gPSBbXG4gICAgeyBsYWJlbDogJ1Rlc3QgQ2FzZScsIHZhbHVlOiAndGVzdC1jYXNlJywgaWNvbjogJ2Rlc2NyaXB0aW9uJyB9LFxuICAgIHsgbGFiZWw6ICdEYXRhIExpYnJhcnknLCB2YWx1ZTogJ2RhdGEtbGlicmFyeScsIGljb246ICdmb2xkZXInIH0sXG4gICAgeyBsYWJlbDogJ1ZhcmlhYmxlcycsIHZhbHVlOiAndmFyaWFibGVzJywgaWNvbjogJ2NvZGUnIH0sXG4gIF07XG5cbiAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdGFiIHZhbHVlICovXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYiA9ICd0ZXN0LWNhc2UnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgc2lkZSBtZW51ICovXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZCAoYWZmZWN0cyBleHBhbmQgYnV0dG9uIGljb24gYW5kIHBhbmVsIHdpZHRoKSAqL1xuICBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqIFBhbmVsIHdpZHRoIHdoZW4gZXhwYW5kZWQgKGUuZy4gJzQ4MHB4JywgJzI1JScpICovXG4gIEBJbnB1dCgpIGV4cGFuZGVkV2lkdGggPSAnMzgwcHgnO1xuXG4gIC8qKiBQYW5lbCB3aWR0aCB3aGVuIGNvbGxhcHNlZCAoZS5nLiAnNTZweCcgLSBmaXRzIGljb24gYmFyICsgYmFjayBidXR0b24pICovXG4gIEBJbnB1dCgpIGNvbGxhcHNlZFdpZHRoID0gJzU2cHgnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBnZXQgaG9zdFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBnZXQgaG9zdE1pbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBnZXQgaG9zdE1heFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpIGhvc3RPdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIC8qKiBUb29sdGlwIGZvciBleHBhbmQgYnV0dG9uIHdoZW4gcGFuZWwgaXMgY29sbGFwc2VkICovXG4gIEBJbnB1dCgpIGV4cGFuZFRvb2x0aXAgPSAnRXhwYW5kJztcblxuICAvKiogVG9vbHRpcCBmb3IgZXhwYW5kIGJ1dHRvbiB3aGVuIHBhbmVsIGlzIGV4cGFuZGVkIChjb2xsYXBzZSkgKi9cbiAgQElucHV0KCkgY29sbGFwc2VUb29sdGlwID0gJ0NvbGxhcHNlJztcblxuICAvKiogVG9vbHRpcCBmb3IgY2xvc2UgYnV0dG9uICovXG4gIEBJbnB1dCgpIGNsb3NlVG9vbHRpcCA9ICdDbG9zZSc7XG5cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSB0YWJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGV4cGFuZFRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRyYWNrQnlUYWJWYWx1ZShfaTogbnVtYmVyLCB0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi52YWx1ZTtcbiAgfVxuXG4gIG9uQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLmJhY2suZW1pdCgpO1xuICB9XG5cbiAgb25UYWJDbGljayh0YWI6IERldGFpbFNpZGVQYW5lbFRhYik6IHZvaWQge1xuICAgIGlmICghdGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5leHBhbmRUb2dnbGUuZW1pdCgpO1xuICAgIH1cbiAgICBpZiAodGFiLnZhbHVlICE9PSB0aGlzLmFjdGl2ZVRhYikge1xuICAgICAgdGhpcy50YWJDaGFuZ2UuZW1pdCh0YWIudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRXhwYW5kVG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwYW5kVG9nZ2xlLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWgtZnVsbCBjcWEtbWluLXctMCBjcWEtYmctd2hpdGVcIj5cbiAgPCEtLSBNYWluIGNvbnRlbnQ6IFNpZGUgbWVudSArIFNjcm9sbGFibGUgY29udGVudCAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiY3FhLWdyaWQgY3FhLWZsZXgtMSBjcWEtbWluLWgtMCBjcWEtbWluLXctMCBjcWEtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICBbc3R5bGUuZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zXT1cImV4cGFuZGVkID8gJ2F1dG8gMWZyJyA6ICdhdXRvIDBmcidcIlxuICAgIHN0eWxlPVwidHJhbnNpdGlvbjogZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIDAuM3MgZWFzZS1pbi1vdXRcIj5cbiAgICA8IS0tIExlZnQgdmVydGljYWwgaWNvbiBtZW51IC0tPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1weS00IGNxYS1weC0yIGNxYS1ib3JkZXItciBjcWEtYm9yZGVyLVsjRjVGNUY1XSBjcWEtZmxleC1zaHJpbmstMCBjcWEtdGV4dC1bIzBBMEEwQV1cIlxuICAgICAgc3R5bGU9XCJib3gtc2hhZG93OiAxcHggNHB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XCI+XG4gICAgICA8IS0tIEV4cGFuZCAvIENvbGxhcHNlIGJ1dHRvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiZXhwYW5kZWQgPyBjb2xsYXBzZVRvb2x0aXAgOiBleHBhbmRUb29sdGlwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy05IGNxYS1oLTkgY3FhLXJvdW5kZWQtbGcgY3FhLXRleHQtWyM2NDc0OEJdIGhvdmVyOmNxYS1iZy1bI0UyRThGMF0gaG92ZXI6Y3FhLXRleHQtWyMzMzQxNTVdIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBmb2N1czpjcWEtb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctMiBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLVsjM0Y0M0VFXSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLW9mZnNldC0yXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uRXhwYW5kVG9nZ2xlKClcIj5cbiAgICAgICAgPCEtLSBDaGV2cm9uIGxlZnQgd2hlbiBleHBhbmRlZCwgcmlnaHQgd2hlbiBjb2xsYXBzZWQgLS0+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICAqbmdJZj1cImV4cGFuZGVkXCJcbiAgICAgICAgICBjbGFzcz1cImNxYS13LTQgY3FhLWgtNFwiXG4gICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTAgMTJMNiA4TDEwIDRcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCIhZXhwYW5kZWRcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00XCJcbiAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICBoZWlnaHQ9XCIxNlwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk02IDRMMTAgOEw2IDEyXCJcbiAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPCEtLSBDbG9zZSBidXR0b24gLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImNsb3NlVG9vbHRpcFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctOSBjcWEtaC05IGNxYS1yb3VuZGVkLWxnIGNxYS10ZXh0LVsjNjQ3NDhCXSBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY3FhLXRleHQtWzIwcHhdIGNxYS13LTUgY3FhLWgtNSBjcWEtbGVhZGluZy1bMTlweF1cIj5jbG9zZTwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDwhLS0gVGFiIGJ1dHRvbnMgKDE6MSB3aXRoIHRhYnMpIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlUYWJWYWx1ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJ0YWIubGFiZWxcIlxuICAgICAgICBbY2xhc3MuY3FhLWJnLVsjM0Y0M0VFXV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtdGV4dC13aGl0ZV09XCJhY3RpdmVUYWIgPT09IHRhYi52YWx1ZVwiXG4gICAgICAgIFtjbGFzcy5jcWEtdGV4dC1bIzY0NzQ4Ql1dPVwiYWN0aXZlVGFiICE9PSB0YWIudmFsdWVcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTkgY3FhLWgtOSBjcWEtcm91bmRlZC1sZyBob3ZlcjpjcWEtYmctWyNFMkU4RjBdIGhvdmVyOmNxYS10ZXh0LVsjMzM0MTU1XSBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXM6Y3FhLW91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOmNxYS1yaW5nLTIgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1bIzNGNDNFRV0gZm9jdXMtdmlzaWJsZTpjcWEtcmluZy1vZmZzZXQtMlwiXG4gICAgICAgIChjbGljayk9XCJvblRhYkNsaWNrKHRhYilcIj5cbiAgICAgICAgPCEtLSBDdXN0b20gU1ZHcyBmb3Igc3BlY2lmaWMgdGFicyB0byBtYXRjaCBGaWdtYSBpY29ucywgY2VudGVyZWQgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuaWNvbiA9PT0gJ2Rlc2NyaXB0aW9uJzsgZWxzZSBjb2RlVGFiSWNvblwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXctNSBjcWEtaC01XCJcbiAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIlxuICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTEyLjUwMDIgMS42NjY2M0g1LjAwMDE2QzQuNTU4MTQgMS42NjY2MyA0LjEzNDIxIDEuODQyMjIgMy44MjE2NSAyLjE1NDc4QzMuNTA5MDkgMi40NjczNCAzLjMzMzUgMi44OTEyNyAzLjMzMzUgMy4zMzMyOVYxNi42NjY2QzMuMzMzNSAxNy4xMDg3IDMuNTA5MDkgMTcuNTMyNiAzLjgyMTY1IDE3Ljg0NTFDNC4xMzQyMSAxOC4xNTc3IDQuNTU4MTQgMTguMzMzMyA1LjAwMDE2IDE4LjMzMzNIMTUuMDAwMkMxNS40NDIyIDE4LjMzMzMgMTUuODY2MSAxOC4xNTc3IDE2LjE3ODcgMTcuODQ1MUMxNi40OTEyIDE3LjUzMjYgMTYuNjY2OCAxNy4xMDg3IDE2LjY2NjggMTYuNjY2NlY1LjgzMzI5TDEyLjUwMDIgMS42NjY2M1pcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTEuNjY2NSAxLjY2NjYzVjQuOTk5OTZDMTEuNjY2NSA1LjQ0MTk5IDExLjg0MjEgNS44NjU5MSAxMi4xNTQ3IDYuMTc4NDdDMTIuNDY3MiA2LjQ5MTAzIDEyLjg5MTEgNi42NjY2MyAxMy4zMzMyIDYuNjY2NjNIMTYuNjY2NVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk04LjMzMzE3IDcuNUg2LjY2NjVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgIGQ9XCJNMTMuMzMzMiAxMC44MzM0SDYuNjY2NVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgZD1cIk0xMy4zMzMyIDE0LjE2NjZINi42NjY1XCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvZGVUYWJJY29uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuaWNvbiA9PT0gJ2NvZGUnOyBlbHNlIGRlZmF1bHRUYWJJY29uXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXctNSBjcWEtaC01XCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNNC45OTk4NCAxMS42NjY2TDYuMjQ5ODQgOS4yNDk5NkM2LjM4NTczIDguOTgwMDcgNi41OTI0NCA4Ljc1MjIxIDYuODQ3ODUgOC41OTA3NUM3LjEwMzI1IDguNDI5MjggNy4zOTc3NSA4LjM0MDI5IDcuNjk5ODQgOC4zMzMyOUgxNi42NjY1TTE2LjY2NjUgOC4zMzMyOUMxNi45MjExIDguMzMyODQgMTcuMTcyNCA4LjM5MDc0IDE3LjQwMTIgOC41MDI1M0MxNy42MyA4LjYxNDMyIDE3LjgzMDEgOC43NzcwMyAxNy45ODYxIDguOTc4MThDMTguMTQyMiA5LjE3OTMzIDE4LjI1MDIgOS40MTM1NyAxOC4zMDE3IDkuNjYyOTJDMTguMzUzMSA5LjkxMjI3IDE4LjM0NjggMTAuMTcwMSAxOC4yODMyIDEwLjQxNjZMMTYuOTk5OCAxNS40MTY2QzE2LjkwNyAxNS43NzYzIDE2LjY5NjcgMTYuMDk0NiAxNi40MDIzIDE2LjMyMUMxNi4xMDc5IDE2LjU0NzUgMTUuNzQ2MyAxNi42NjkxIDE1LjM3NDggMTYuNjY2NkgzLjMzMzE3QzIuODkxMTQgMTYuNjY2NiAyLjQ2NzIyIDE2LjQ5MSAyLjE1NDY2IDE2LjE3ODVDMS44NDIxIDE1Ljg2NTkgMS42NjY1IDE1LjQ0MiAxLjY2NjUgMTVWNC4xNjY2MkMxLjY2NjUgMy43MjQ2IDEuODQyMSAzLjMwMDY3IDIuMTU0NjYgMi45ODgxMUMyLjQ2NzIyIDIuNjc1NTUgMi44OTExNCAyLjQ5OTk2IDMuMzMzMTcgMi40OTk5Nkg2LjU4MzE3QzYuODYxOTEgMi40OTcyMyA3LjEzNjg4IDIuNTY0NDUgNy4zODI5MiAyLjY5NTQ3QzcuNjI4OTYgMi44MjY1IDcuODM4MiAzLjAxNzE1IDcuOTkxNSAzLjI0OTk2TDguNjY2NSA0LjI0OTk2QzguODE4MjYgNC40ODA0IDkuMDI0ODYgNC42Njk1NiA5LjI2Nzc1IDQuODAwNDZDOS41MTA2NSA0LjkzMTM2IDkuNzgyMjUgNC45OTk5MSAxMC4wNTgyIDQuOTk5OTZIMTQuOTk5OEMxNS40NDE5IDQuOTk5OTYgMTUuODY1OCA1LjE3NTU1IDE2LjE3ODMgNS40ODgxMUMxNi40OTA5IDUuODAwNjcgMTYuNjY2NSA2LjIyNDYgMTYuNjY2NSA2LjY2NjYyVjguMzMzMjlaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUYWJJY29uPlxuICAgICAgICAgIDwhLS0gSGlzdG9yeSBhbmQgb3RoZXIgaWNvbnMgZmFsbGJhY2sgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYi5pY29uID09PSAnaGlzdG9yeSc7IGVsc2UgbWF0SWNvbkZhbGxiYWNrXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLXctNSBjcWEtaC01XCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA0OCA0OFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMjUuOTkgNkMxNi4wNCA2IDggMTQuMDYgOCAyNEgybDcuNzkgNy43OS4xNC4yOUwxOCAyNGgtNmMwLTcuNzMgNi4yNy0xNCAxNC0xNHMxNCA2LjI3IDE0IDE0LTYuMjcgMTQtMTQgMTRjLTMuODcgMC03LjM2LTEuNTgtOS44OS00LjExbC0yLjgzIDIuODNDMTYuNTMgMzkuOTggMjEuMDIgNDIgMjUuOTkgNDIgMzUuOTQgNDIgNDQgMzMuOTQgNDQgMjRTMzUuOTQgNiAyNS45OSA2ek0yNCAxNnYxMGw4LjU2IDUuMDhMMzQgMjguNjVsLTctNC4xNVYxNmgtM3pcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNtYXRJY29uRmFsbGJhY2s+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjcWEtdGV4dC1bMjBweF0gY3FhLXctNSBjcWEtaC01IGNxYS1sZWFkaW5nLVsxOXB4XVwiPnt7IHRhYi5pY29uIHx8ICdjaXJjbGUnIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNjcm9sbGFibGUgY29udGVudCBhcmVhIChjb2xsYXBzZXMgd2l0aCBhbmltYXRpb24gd2hlbiBleHBhbmRlZCBpcyBmYWxzZSkgLS0+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtbWluLWgtMCBjcWEtbWluLXctMCBjcWEtb3ZlcmZsb3ctaGlkZGVuIGNxYS13LWZ1bGwgY3FhLWgtZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1zaWRlLXBhbmVsLXNjcm9sbCBjcWEtZmxleC0xIGNxYS1taW4taC0wIGNxYS1taW4tdy0wIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLW92ZXJmbG93LXgtaGlkZGVuIGNxYS1wLTQgY3FhLXNwYWNlLXktNFwiIHN0eWxlPVwib3ZlcmZsb3cteTogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuOyBtaW4taGVpZ2h0OiAwOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XCI+XG4gICAgICA8IS0tIFRhYnM6IGVxdWFsbHkgZGlzdHJpYnV0ZWQgKEZpZ21hOiBwdXJwbGUgYWN0aXZlLCBncmF5IGluYWN0aXZlKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZ2FwLVszLjVweF0gY3FhLXAtWzMuNXB4XSBjcWEtYmctWyNGMUY1RjldIGNxYS1yb3VuZGVkLWxnIGNxYS13LWZ1bGxcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5VGFiVmFsdWVcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtYmctWyMzRjQzRUVdXT1cImFjdGl2ZVRhYiA9PT0gdGFiLnZhbHVlXCJcbiAgICAgICAgICBbY2xhc3MuY3FhLXRleHQtd2hpdGVdPVwiYWN0aXZlVGFiID09PSB0YWIudmFsdWVcIlxuICAgICAgICAgIFtjbGFzcy5jcWEtdGV4dC1bIzY0NzQ4Ql1dPVwiYWN0aXZlVGFiICE9PSB0YWIudmFsdWVcIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtZmxleCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcHktMiBjcWEtcm91bmRlZC1sZyBjcWEtdGV4dC14cyBjcWEtZm9udC1tZWRpdW0gY3FhLXRyYW5zaXRpb24tY29sb3JzIGhvdmVyOmNxYS1vcGFjaXR5LTkwIGZvY3VzOmNxYS1vdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpjcWEtcmluZy0yIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctWyMzRjQzRUVdIGZvY3VzLXZpc2libGU6Y3FhLXJpbmctb2Zmc2V0LTJcIlxuICAgICAgICAgIChjbGljayk9XCJvblRhYkNsaWNrKHRhYilcIj5cbiAgICAgICAgICB7eyB0YWIubGFiZWwgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUYWIgY29udGVudDogZnVsbHkgcHJvdmlkZWQgYnkgaG9zdCB2aWEgY29udGVudCBwcm9qZWN0aW9uLiBIb3N0IHVzZXMgKm5nSWYgcGVyIHRhYiBzbyBvbmx5IGFjdGl2ZSBjb250ZW50IGlzIHByb2plY3RlZC4gQWRkL3JlbW92ZSB0YWJzIGluIHRoZSBob3N0IHdpdGhvdXQgY2hhbmdpbmcgY3FhLXVpLWxpYi4gLS0+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,42 +1,84 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, Inject, Optional } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Output, Inject, Optional, Input } from '@angular/core';
|
|
2
2
|
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../
|
|
4
|
+
import * as i1 from "../../dynamic-select/dynamic-select-field.component";
|
|
5
|
+
import * as i2 from "../../button/button.component";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
5
7
|
/**
|
|
6
8
|
* Run Execution alert modal when the user clicks Execution but the test case has no prerequisites.
|
|
7
9
|
* Similar to delete-steps: two actions — "Cancel" (abort) and "Run Anyway" (proceed with execution).
|
|
8
10
|
*/
|
|
9
11
|
export class RunExecutionAlertComponent {
|
|
10
12
|
constructor(data) {
|
|
13
|
+
/**
|
|
14
|
+
* Title text shown in the header.
|
|
15
|
+
* Can be provided either via @Input() or MAT_DIALOG_DATA.
|
|
16
|
+
*/
|
|
11
17
|
this.title = 'No prerequisites';
|
|
18
|
+
/**
|
|
19
|
+
* Body message shown under the title.
|
|
20
|
+
* Can be provided either via @Input() or MAT_DIALOG_DATA.
|
|
21
|
+
*/
|
|
12
22
|
this.message = 'This test case has no prerequisites. Do you want to run execution anyway?';
|
|
23
|
+
/** Emitted when user wants to run with prerequisites. */
|
|
24
|
+
this.runWithPrerequisites = new EventEmitter();
|
|
25
|
+
/** Emitted when user confirms they want to proceed (Run Anyway). */
|
|
13
26
|
this.runAnyway = new EventEmitter();
|
|
27
|
+
/** Emitted when user cancels/closes the alert. */
|
|
14
28
|
this.cancelled = new EventEmitter();
|
|
29
|
+
// When used inside an Angular Material dialog, allow MAT_DIALOG_DATA
|
|
30
|
+
// to override the default title/message. @Input() bindings from a
|
|
31
|
+
// parent component will still run after this constructor.
|
|
15
32
|
if (data?.title)
|
|
16
33
|
this.title = data.title;
|
|
17
34
|
if (data?.message)
|
|
18
35
|
this.message = data.message;
|
|
19
36
|
}
|
|
37
|
+
/** True when "Run with Prerequisites" should be disabled (no selection). */
|
|
38
|
+
get disableRunWithPrereq() {
|
|
39
|
+
if (!this.prerequisiteForm || !this.prerequisiteSelectConfig?.key) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
const ctrl = this.prerequisiteForm.get(this.prerequisiteSelectConfig.key);
|
|
43
|
+
const value = ctrl?.value;
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
return value.length === 0;
|
|
46
|
+
}
|
|
47
|
+
return !value;
|
|
48
|
+
}
|
|
20
49
|
onCancel() {
|
|
21
50
|
this.cancelled.emit();
|
|
22
51
|
}
|
|
23
52
|
onRunAnyway() {
|
|
24
53
|
this.runAnyway.emit();
|
|
25
54
|
}
|
|
55
|
+
onRunWithPrerequisites() {
|
|
56
|
+
this.runWithPrerequisites.emit();
|
|
57
|
+
}
|
|
26
58
|
}
|
|
27
59
|
RunExecutionAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunExecutionAlertComponent, deps: [{ token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
RunExecutionAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunExecutionAlertComponent, selector: "cqa-run-execution-alert", outputs: { runAnyway: "runAnyway", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-font-medium cqa-text-[22px] cqa-leading-[28px] cqa-tracking-normal cqa-text-[#101828] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-font-normal cqa-text-[14px] cqa-leading-[21px] cqa-tracking-[-0.15px] cqa-text-[#4A5565] cqa-m-0\">\n {{ message }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Actions: Cancel | Run Anyway (right-aligned) -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-w-full cqa-gap-3\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-bg-white cqa-border cqa-border-solid cqa-border-[#414146] cqa-text-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run Anyway\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n (clicked)=\"onRunAnyway()\">\n </cqa-button>\n </div>\n</div>\n", components: [{ type: i1.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }] });
|
|
60
|
+
RunExecutionAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: RunExecutionAlertComponent, selector: "cqa-run-execution-alert", inputs: { title: "title", message: "message", prerequisiteForm: "prerequisiteForm", prerequisiteSelectConfig: "prerequisiteSelectConfig" }, outputs: { runWithPrerequisites: "runWithPrerequisites", runAnyway: "runAnyway", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-font-medium cqa-text-[22px] cqa-leading-[28px] cqa-tracking-normal cqa-text-[#101828] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-font-normal cqa-text-[14px] cqa-leading-[21px] cqa-tracking-[-0.15px] cqa-text-[#4A5565] cqa-m-0\">\n {{ message }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Optional prerequisite selector (rendered when inputs are provided) -->\n <div *ngIf=\"prerequisiteForm && prerequisiteSelectConfig\" class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <label class=\"cqa-font-medium cqa-text-[13px] cqa-text-[#374151]\">Select Prerequisites</label>\n <cqa-dynamic-select\n [form]=\"prerequisiteForm\"\n [config]=\"prerequisiteSelectConfig\">\n </cqa-dynamic-select>\n </div>\n\n <!-- Actions: Cancel | Run Anyway (right-aligned) -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-w-full cqa-gap-3\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-bg-white cqa-border cqa-border-solid cqa-border-[#414146] cqa-text-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run Anyway\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n (clicked)=\"onRunAnyway()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run with Prerequisites\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n [disabled]=\"disableRunWithPrereq\"\n (clicked)=\"onRunWithPrerequisites()\">\n </cqa-button>\n </div>\n</div>\n", components: [{ type: i1.DynamicSelectFieldComponent, selector: "cqa-dynamic-select", inputs: ["form", "config"], outputs: ["selectionChange", "selectClick", "searchChange", "loadMore", "addCustomValue"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
29
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: RunExecutionAlertComponent, decorators: [{
|
|
30
62
|
type: Component,
|
|
31
|
-
args: [{ selector: 'cqa-run-execution-alert', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-font-medium cqa-text-[22px] cqa-leading-[28px] cqa-tracking-normal cqa-text-[#101828] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-font-normal cqa-text-[14px] cqa-leading-[21px] cqa-tracking-[-0.15px] cqa-text-[#4A5565] cqa-m-0\">\n {{ message }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Actions: Cancel | Run Anyway (right-aligned) -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-w-full cqa-gap-3\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-bg-white cqa-border cqa-border-solid cqa-border-[#414146] cqa-text-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run Anyway\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n (clicked)=\"onRunAnyway()\">\n </cqa-button>\n </div>\n</div>\n" }]
|
|
63
|
+
args: [{ selector: 'cqa-run-execution-alert', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-font-medium cqa-text-[22px] cqa-leading-[28px] cqa-tracking-normal cqa-text-[#101828] cqa-m-0\">\n {{ title }}\n </h2>\n <p class=\"cqa-font-normal cqa-text-[14px] cqa-leading-[21px] cqa-tracking-[-0.15px] cqa-text-[#4A5565] cqa-m-0\">\n {{ message }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Optional prerequisite selector (rendered when inputs are provided) -->\n <div *ngIf=\"prerequisiteForm && prerequisiteSelectConfig\" class=\"cqa-flex cqa-flex-col cqa-gap-1\">\n <label class=\"cqa-font-medium cqa-text-[13px] cqa-text-[#374151]\">Select Prerequisites</label>\n <cqa-dynamic-select\n [form]=\"prerequisiteForm\"\n [config]=\"prerequisiteSelectConfig\">\n </cqa-dynamic-select>\n </div>\n\n <!-- Actions: Cancel | Run Anyway (right-aligned) -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-end cqa-w-full cqa-gap-3\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-bg-white cqa-border cqa-border-solid cqa-border-[#414146] cqa-text-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run Anyway\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n (clicked)=\"onRunAnyway()\">\n </cqa-button>\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Run with Prerequisites\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-rounded-[8px] cqa-border-0 cqa-bg-[#3F43EE] cqa-text-white'\"\n [disabled]=\"disableRunWithPrereq\"\n (clicked)=\"onRunWithPrerequisites()\">\n </cqa-button>\n </div>\n</div>\n" }]
|
|
32
64
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
33
65
|
type: Optional
|
|
34
66
|
}, {
|
|
35
67
|
type: Inject,
|
|
36
68
|
args: [MAT_DIALOG_DATA]
|
|
37
|
-
}] }]; }, propDecorators: {
|
|
69
|
+
}] }]; }, propDecorators: { title: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}], message: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], prerequisiteForm: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], prerequisiteSelectConfig: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], runWithPrerequisites: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], runAnyway: [{
|
|
38
80
|
type: Output
|
|
39
81
|
}], cancelled: [{
|
|
40
82
|
type: Output
|
|
41
83
|
}] } });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3J1bi1leGVjdXRpb24tYWxlcnQvcnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL3J1bi1leGVjdXRpb24tYWxlcnQvcnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUkzRDs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sMEJBQTBCO0lBdUJyQyxZQUN1QyxJQUEyQztRQXZCbEY7OztXQUdHO1FBQ00sVUFBSyxHQUFHLGtCQUFrQixDQUFDO1FBRXBDOzs7V0FHRztRQUNNLFlBQU8sR0FBRywyRUFBMkUsQ0FBQztRQVMvRix5REFBeUQ7UUFDL0MseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVkxRCxvRUFBb0U7UUFDMUQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFL0Msa0RBQWtEO1FBQ3hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBWDdDLHFFQUFxRTtRQUNyRSxrRUFBa0U7UUFDbEUsMERBQTBEO1FBQzFELElBQUksSUFBSSxFQUFFLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekMsSUFBSSxJQUFJLEVBQUUsT0FBTztZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNqRCxDQUFDO0lBUUQsNEVBQTRFO0lBQzVFLElBQUksb0JBQW9CO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1lBQ2pFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxRSxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1NBQzNCO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7O3VIQTlEVSwwQkFBMEIsa0JBd0JmLGVBQWU7MkdBeEIxQiwwQkFBMEIsK1ZDZHZDLG9yRkEyREE7MkZEN0NhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUIsUUFFN0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFOzswQkEwQjNCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs0Q0FuQjVCLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFHSSxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBYUcsU0FBUztzQkFBbEIsTUFBTTtnQkFHRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgSW5qZWN0LCBPcHRpb25hbCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuXG4vKipcbiAqIFJ1biBFeGVjdXRpb24gYWxlcnQgbW9kYWwgd2hlbiB0aGUgdXNlciBjbGlja3MgRXhlY3V0aW9uIGJ1dCB0aGUgdGVzdCBjYXNlIGhhcyBubyBwcmVyZXF1aXNpdGVzLlxuICogU2ltaWxhciB0byBkZWxldGUtc3RlcHM6IHR3byBhY3Rpb25zIOKAlCBcIkNhbmNlbFwiIChhYm9ydCkgYW5kIFwiUnVuIEFueXdheVwiIChwcm9jZWVkIHdpdGggZXhlY3V0aW9uKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLXJ1bi1leGVjdXRpb24tYWxlcnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjcWEtdWktcm9vdCcgfSxcbn0pXG5leHBvcnQgY2xhc3MgUnVuRXhlY3V0aW9uQWxlcnRDb21wb25lbnQge1xuICAvKipcbiAgICogVGl0bGUgdGV4dCBzaG93biBpbiB0aGUgaGVhZGVyLlxuICAgKiBDYW4gYmUgcHJvdmlkZWQgZWl0aGVyIHZpYSBASW5wdXQoKSBvciBNQVRfRElBTE9HX0RBVEEuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZSA9ICdObyBwcmVyZXF1aXNpdGVzJztcblxuICAvKipcbiAgICogQm9keSBtZXNzYWdlIHNob3duIHVuZGVyIHRoZSB0aXRsZS5cbiAgICogQ2FuIGJlIHByb3ZpZGVkIGVpdGhlciB2aWEgQElucHV0KCkgb3IgTUFUX0RJQUxPR19EQVRBLlxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZSA9ICdUaGlzIHRlc3QgY2FzZSBoYXMgbm8gcHJlcmVxdWlzaXRlcy4gRG8geW91IHdhbnQgdG8gcnVuIGV4ZWN1dGlvbiBhbnl3YXk/JztcblxuICAvKipcbiAgICogT3B0aW9uYWwgZm9ybSBhbmQgY29uZmlnIGZvciBhIHByZXJlcXVpc2l0ZSBzZWxlY3QgZmllbGQuXG4gICAqIFdoZW4gcHJvdmlkZWQsIGEgY3FhLWR5bmFtaWMtc2VsZWN0IHdpbGwgYmUgcmVuZGVyZWQgaW5zaWRlIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlRm9ybT86IEZvcm1Hcm91cCB8IG51bGw7XG4gIEBJbnB1dCgpIHByZXJlcXVpc2l0ZVNlbGVjdENvbmZpZz86IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZyB8IG51bGw7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIHdhbnRzIHRvIHJ1biB3aXRoIHByZXJlcXVpc2l0ZXMuICovXG4gIEBPdXRwdXQoKSBydW5XaXRoUHJlcmVxdWlzaXRlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YT86IHsgdGl0bGU/OiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICApIHtcbiAgICAvLyBXaGVuIHVzZWQgaW5zaWRlIGFuIEFuZ3VsYXIgTWF0ZXJpYWwgZGlhbG9nLCBhbGxvdyBNQVRfRElBTE9HX0RBVEFcbiAgICAvLyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCB0aXRsZS9tZXNzYWdlLiBASW5wdXQoKSBiaW5kaW5ncyBmcm9tIGFcbiAgICAvLyBwYXJlbnQgY29tcG9uZW50IHdpbGwgc3RpbGwgcnVuIGFmdGVyIHRoaXMgY29uc3RydWN0b3IuXG4gICAgaWYgKGRhdGE/LnRpdGxlKSB0aGlzLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICBpZiAoZGF0YT8ubWVzc2FnZSkgdGhpcy5tZXNzYWdlID0gZGF0YS5tZXNzYWdlO1xuICB9XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiB1c2VyIGNvbmZpcm1zIHRoZXkgd2FudCB0byBwcm9jZWVkIChSdW4gQW55d2F5KS4gKi9cbiAgQE91dHB1dCgpIHJ1bkFueXdheSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHRlZCB3aGVuIHVzZXIgY2FuY2Vscy9jbG9zZXMgdGhlIGFsZXJ0LiAqL1xuICBAT3V0cHV0KCkgY2FuY2VsbGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKiBUcnVlIHdoZW4gXCJSdW4gd2l0aCBQcmVyZXF1aXNpdGVzXCIgc2hvdWxkIGJlIGRpc2FibGVkIChubyBzZWxlY3Rpb24pLiAqL1xuICBnZXQgZGlzYWJsZVJ1bldpdGhQcmVyZXEoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnByZXJlcXVpc2l0ZUZvcm0gfHwgIXRoaXMucHJlcmVxdWlzaXRlU2VsZWN0Q29uZmlnPy5rZXkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjdHJsID0gdGhpcy5wcmVyZXF1aXNpdGVGb3JtLmdldCh0aGlzLnByZXJlcXVpc2l0ZVNlbGVjdENvbmZpZy5rZXkpO1xuICAgIGNvbnN0IHZhbHVlID0gY3RybD8udmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUubGVuZ3RoID09PSAwO1xuICAgIH1cbiAgICByZXR1cm4gIXZhbHVlO1xuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgb25SdW5Bbnl3YXkoKTogdm9pZCB7XG4gICAgdGhpcy5ydW5Bbnl3YXkuZW1pdCgpO1xuICB9XG5cbiAgb25SdW5XaXRoUHJlcmVxdWlzaXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJ1bldpdGhQcmVyZXF1aXNpdGVzLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTJweF0gY3FhLXNoYWRvdy1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXctZnVsbCBjcWEtbWF4LXctWzUwMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1wLTYgY3FhLWJveC1ib3JkZXIgY3FhLW1pbi1oLTBcIj5cbiAgPCEtLSBIZWFkZXI6IHRpdGxlICsgY2xvc2UgKFgpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxoMiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMjJweF0gY3FhLWxlYWRpbmctWzI4cHhdIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLXRleHQtWyMxMDE4MjhdIGNxYS1tLTBcIj5cbiAgICAgICAge3sgdGl0bGUgfX1cbiAgICAgIDwvaDI+XG4gICAgICA8cCBjbGFzcz1cImNxYS1mb250LW5vcm1hbCBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIxcHhdIGNxYS10cmFja2luZy1bLTAuMTVweF0gY3FhLXRleHQtWyM0QTU1NjVdIGNxYS1tLTBcIj5cbiAgICAgICAge3sgbWVzc2FnZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtbWluLWgtNyBjcWEtbWluLXctNyBjcWEtcm91bmRlZCBjcWEtdGV4dC1bIzZCNzI4MF0gaG92ZXI6Y3FhLWJnLVsjRjNGNEY2XSBjcWEtcC0wIGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xOCA2TDYgMThNNiA2bDEyIDEyXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIE9wdGlvbmFsIHByZXJlcXVpc2l0ZSBzZWxlY3RvciAocmVuZGVyZWQgd2hlbiBpbnB1dHMgYXJlIHByb3ZpZGVkKSAtLT5cbiAgPGRpdiAqbmdJZj1cInByZXJlcXVpc2l0ZUZvcm0gJiYgcHJlcmVxdWlzaXRlU2VsZWN0Q29uZmlnXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsxM3B4XSBjcWEtdGV4dC1bIzM3NDE1MV1cIj5TZWxlY3QgUHJlcmVxdWlzaXRlczwvbGFiZWw+XG4gICAgPGNxYS1keW5hbWljLXNlbGVjdFxuICAgICAgW2Zvcm1dPVwicHJlcmVxdWlzaXRlRm9ybVwiXG4gICAgICBbY29uZmlnXT1cInByZXJlcXVpc2l0ZVNlbGVjdENvbmZpZ1wiPlxuICAgIDwvY3FhLWR5bmFtaWMtc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbnM6IENhbmNlbCB8IFJ1biBBbnl3YXkgKHJpZ2h0LWFsaWduZWQpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1lbmQgY3FhLXctZnVsbCBjcWEtZ2FwLTNcIj5cbiAgICA8Y3FhLWJ1dHRvblxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICB0ZXh0PVwiQ2FuY2VsXCJcbiAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXRleHQtWzE0cHhdIGNxYS1weS1bOXB4XSBjcWEtYmctd2hpdGUgY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyM0MTQxNDZdIGNxYS10ZXh0LVsjNDE0MTQ2XSdcIlxuICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8Y3FhLWJ1dHRvblxuICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICBidG5TaXplPVwibGdcIlxuICAgICAgdGV4dD1cIlJ1biBBbnl3YXlcIlxuICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1yb3VuZGVkLVs4cHhdIGNxYS1ib3JkZXItMCBjcWEtYmctWyMzRjQzRUVdIGNxYS10ZXh0LXdoaXRlJ1wiXG4gICAgICAoY2xpY2tlZCk9XCJvblJ1bkFueXdheSgpXCI+XG4gICAgPC9jcWEtYnV0dG9uPlxuICAgIDxjcWEtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICB0ZXh0PVwiUnVuIHdpdGggUHJlcmVxdWlzaXRlc1wiXG4gICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLXJvdW5kZWQtWzhweF0gY3FhLWJvcmRlci0wIGNxYS1iZy1bIzNGNDNFRV0gY3FhLXRleHQtd2hpdGUnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlUnVuV2l0aFByZXJlcVwiXG4gICAgICAoY2xpY2tlZCk9XCJvblJ1bldpdGhQcmVyZXF1aXNpdGVzKClcIj5cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|