@cqa-lib/cqa-ui 1.1.381 → 1.1.383
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/step-builder/step-builder-action/step-builder-action.component.mjs +5 -1
- package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +5 -1
- package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +19 -9
- package/esm2020/lib/step-builder/template-variables-form/template-variables-form.component.mjs +3 -3
- package/esm2020/lib/test-case-details/run-execution-alert/run-execution-alert.component.mjs +3 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +32 -14
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +32 -14
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/step-builder/step-builder-database/step-builder-database.component.d.ts +6 -1
- package/package.json +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RldGFpbC1zaWRlLXBhbmVsL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFlN0UsTUFBTSxPQUFPLHdCQUF3QjtJQVhyQztRQVlFLDZHQUE2RztRQUNwRyxTQUFJLEdBQXlCO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0QsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3pELENBQUM7UUFFRixpQ0FBaUM7UUFDeEIsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUVqQyx3REFBd0Q7UUFDL0Msb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFakMsaUZBQWlGO1FBQ3hFLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsc0RBQXNEO1FBQzdDLGtCQUFhLEdBQUcsT0FBTyxDQUFDO1FBRWpDLDZFQUE2RTtRQUNwRSxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQWNGLGlCQUFZLEdBQUcsUUFBUSxDQUFD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XG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSG9zdEJpbmRpbmcsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGV0YWlsU2lkZVBhbmVsVGFiIH0gZnJvbSAnLi9kZXRhaWwtc2lkZS1wYW5lbC5tb2RlbHMnO1xuaW1wb3J0IHsgREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFUyB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwuc3R5bGVzJztcblxuZXhwb3J0IHR5cGUgeyBEZXRhaWxTaWRlUGFuZWxUYWIsIERldGFpbFNpZGVQYW5lbE1ldGFkYXRhSXRlbSwgRGV0YWlsU2lkZVBhbmVsQ29uZmlnU2VjdGlvbiB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWRldGFpbC1zaWRlLXBhbmVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RldGFpbC1zaWRlLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbREVUQUlMX1NJREVfUEFORUxfU0NST0xMX1NUWUxFU10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6XG4gICAgICAnY3FhLXVpLXJvb3QgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1oLWZ1bGwgY3FhLWZsZXgtc2hyaW5rLTAgY3FhLWZsZXgtZ3Jvdy0wIGNxYS1iZy13aGl0ZSBjcWEtc2hhZG93LVstNHB4XzBfNnB4Xy0xcHhfcmdiYSgwLDAsMCwwLjA1KV0nLFxuICAgIHN0eWxlOiAndHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLWluLW91dCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIERldGFpbFNpZGVQYW5lbENvbXBvbmVudCB7XG4gIC8qKiBUYWJzIC0gZWFjaCB0YWIgaGFzIGEgc2lkZSBwYW5lbCBpY29uIGJ1dHRvbjsgdGFicyBhbmQgYnV0dG9ucyBhcmUgMToxLiBIb3N0IGRlZmluZXMgdGFicyBhbmQgY29udGVudC4gKi9cbiAgQElucHV0KCkgdGFiczogRGV0YWlsU2lkZVBhbmVsVGFiW10gPSBbXG4gICAgeyBsYWJlbDogJ1Rlc3QgQ2FzZScsIHZhbHVlOiAndGVzdC1jYXNlJywgaWNvbjogJ2Rlc2NyaXB0aW9uJyB9LFxuICAgIHsgbGFiZWw6ICdEYXRhIExpYnJhcnknLCB2YWx1ZTogJ2RhdGEtbGlicmFyeScsIGljb246ICdmb2xkZXInIH0sXG4gICAgeyBsYWJlbDogJ1ZhcmlhYmxlcycsIHZhbHVlOiAndmFyaWFibGVzJywgaWNvbjogJ2NvZGUnIH0sXG4gIF07XG5cbiAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdGFiIHZhbHVlICovXG4gIEBJbnB1dCgpIGFjdGl2ZVRhYiA9ICd0ZXN0LWNhc2UnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNsb3NlIGJ1dHRvbiBpbiB0aGUgc2lkZSBtZW51ICovXG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBwYW5lbCBpcyBleHBhbmRlZCAoYWZmZWN0cyBleHBhbmQgYnV0dG9uIGljb24gYW5kIHBhbmVsIHdpZHRoKSAqL1xuICBASW5wdXQoKSBleHBhbmRlZCA9IHRydWU7XG5cbiAgLyoqIFBhbmVsIHdpZHRoIHdoZW4gZXhwYW5kZWQgKGUuZy4gJzQ4MHB4JywgJzI1JScpICovXG4gIEBJbnB1dCgpIGV4cGFuZGVkV2lkdGggPSAnMzgwcHgnO1xuXG4gIC8qKiBQYW5lbCB3aWR0aCB3aGVuIGNvbGxhcHNlZCAoZS5nLiAnNTZweCcgLSBmaXRzIGljb24gYmFyICsgYmFjayBidXR0b24pICovXG4gIEBJbnB1dCgpIGNvbGxhcHNlZFdpZHRoID0gJzU2cHgnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKSBnZXQgaG9zdFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5taW4td2lkdGgnKSBnZXQgaG9zdE1pbldpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgnKSBnZXQgaG9zdE1heFdpZHRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWQgPyB0aGlzLmV4cGFuZGVkV2lkdGggOiB0aGlzLmNvbGxhcHNlZFdpZHRoO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5vdmVyZmxvdycpIGhvc3RPdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIC8qKiBUb29sdGlwIGZvciBleHBhbmQgYnV0dG9uIHdoZW4gcGFuZWwgaXMgY29sbGFwc2VkICovXG4gIEBJbnB1dCgpIGV4cGFuZFRvb2x0aXAgPSAnRXhwYW5kJztcblxuICAvKiogVG9vbHRpcCBmb3IgZXhwYW5kIGJ1dHRvbiB3aGVuIHBhbmVsIGlzIGV4cGFuZGVkIChjb2xsYXBzZSkgKi9cbiAgQElucHV0KCkgY29sbGFwc2VUb29sdGlwID0gJ0NvbGxhcHNlJztcblxuICAvKiogVG9vbHRpcCBmb3IgY2xvc2UgYnV0dG9uICovXG4gIEBJbnB1dCgpIGNsb3NlVG9vbHRpcCA9ICdDbG9zZSc7XG5cbiAgQE91dHB1dCgpIGJhY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+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==
|