@memberjunction/ng-dashboards 2.118.0 → 2.120.0
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/dist/Testing/components/testing-execution.component.d.ts +1 -0
- package/dist/Testing/components/testing-execution.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-execution.component.js +26 -9
- package/dist/Testing/components/testing-execution.component.js.map +1 -1
- package/dist/Testing/components/testing-feedback.component.d.ts +1 -1
- package/dist/Testing/components/testing-feedback.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-feedback.component.js +3 -4
- package/dist/Testing/components/testing-feedback.component.js.map +1 -1
- package/dist/Testing/components/testing-overview.component.js +5 -6
- package/dist/Testing/components/testing-overview.component.js.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +2 -4
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +3 -5
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +33 -34
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/module.d.ts +24 -27
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +9 -17
- package/dist/module.js.map +1 -1
- package/package.json +13 -12
- package/dist/Testing/components/widgets/cost-display.component.d.ts +0 -16
- package/dist/Testing/components/widgets/cost-display.component.d.ts.map +0 -1
- package/dist/Testing/components/widgets/cost-display.component.js +0 -88
- package/dist/Testing/components/widgets/cost-display.component.js.map +0 -1
- package/dist/Testing/components/widgets/score-indicator.component.d.ts +0 -13
- package/dist/Testing/components/widgets/score-indicator.component.d.ts.map +0 -1
- package/dist/Testing/components/widgets/score-indicator.component.js +0 -93
- package/dist/Testing/components/widgets/score-indicator.component.js.map +0 -1
- package/dist/Testing/components/widgets/test-run-dialog.component.d.ts +0 -63
- package/dist/Testing/components/widgets/test-run-dialog.component.d.ts.map +0 -1
- package/dist/Testing/components/widgets/test-run-dialog.component.js +0 -989
- package/dist/Testing/components/widgets/test-run-dialog.component.js.map +0 -1
- package/dist/Testing/components/widgets/test-status-badge.component.d.ts +0 -10
- package/dist/Testing/components/widgets/test-status-badge.component.d.ts.map +0 -1
- package/dist/Testing/components/widgets/test-status-badge.component.js +0 -68
- package/dist/Testing/components/widgets/test-status-badge.component.js.map +0 -1
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@angular/common";
|
|
4
|
-
function ScoreIndicatorComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
5
|
-
i0.ɵɵelementStart(0, "div", 5);
|
|
6
|
-
i0.ɵɵelement(1, "div", 6);
|
|
7
|
-
i0.ɵɵelementEnd();
|
|
8
|
-
} if (rf & 2) {
|
|
9
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
10
|
-
i0.ɵɵadvance();
|
|
11
|
-
i0.ɵɵstyleProp("width", ctx_r0.score * 100, "%");
|
|
12
|
-
} }
|
|
13
|
-
function ScoreIndicatorComponent_i_3_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
-
i0.ɵɵelement(0, "i");
|
|
15
|
-
} if (rf & 2) {
|
|
16
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
17
|
-
i0.ɵɵclassMap(ctx_r0.getIcon());
|
|
18
|
-
} }
|
|
19
|
-
export class ScoreIndicatorComponent {
|
|
20
|
-
score; // 0-1.0000
|
|
21
|
-
showBar = true;
|
|
22
|
-
showIcon = true;
|
|
23
|
-
decimals = 4;
|
|
24
|
-
formatScore(score) {
|
|
25
|
-
if (score == null)
|
|
26
|
-
return 'N/A';
|
|
27
|
-
return score.toFixed(this.decimals);
|
|
28
|
-
}
|
|
29
|
-
getColorClass() {
|
|
30
|
-
if (this.score >= 0.9)
|
|
31
|
-
return 'score-indicator--excellent';
|
|
32
|
-
if (this.score >= 0.8)
|
|
33
|
-
return 'score-indicator--good';
|
|
34
|
-
if (this.score >= 0.6)
|
|
35
|
-
return 'score-indicator--fair';
|
|
36
|
-
if (this.score >= 0.4)
|
|
37
|
-
return 'score-indicator--poor';
|
|
38
|
-
return 'score-indicator--fail';
|
|
39
|
-
}
|
|
40
|
-
getIcon() {
|
|
41
|
-
if (this.score >= 0.9)
|
|
42
|
-
return 'fa-solid fa-star';
|
|
43
|
-
if (this.score >= 0.8)
|
|
44
|
-
return 'fa-solid fa-check';
|
|
45
|
-
if (this.score >= 0.6)
|
|
46
|
-
return 'fa-solid fa-minus';
|
|
47
|
-
if (this.score >= 0.4)
|
|
48
|
-
return 'fa-solid fa-exclamation';
|
|
49
|
-
return 'fa-solid fa-times';
|
|
50
|
-
}
|
|
51
|
-
static ɵfac = function ScoreIndicatorComponent_Factory(t) { return new (t || ScoreIndicatorComponent)(); };
|
|
52
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ScoreIndicatorComponent, selectors: [["app-score-indicator"]], inputs: { score: "score", showBar: "showBar", showIcon: "showIcon", decimals: "decimals" }, decls: 6, vars: 5, consts: [[1, "score-indicator"], ["class", "score-bar-container", 4, "ngIf"], [1, "score-value"], [3, "class", 4, "ngIf"], [1, "score-text"], [1, "score-bar-container"], [1, "score-bar"]], template: function ScoreIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
-
i0.ɵɵelementStart(0, "div", 0);
|
|
54
|
-
i0.ɵɵtemplate(1, ScoreIndicatorComponent_div_1_Template, 2, 2, "div", 1);
|
|
55
|
-
i0.ɵɵelementStart(2, "div", 2);
|
|
56
|
-
i0.ɵɵtemplate(3, ScoreIndicatorComponent_i_3_Template, 1, 2, "i", 3);
|
|
57
|
-
i0.ɵɵelementStart(4, "span", 4);
|
|
58
|
-
i0.ɵɵtext(5);
|
|
59
|
-
i0.ɵɵelementEnd()()();
|
|
60
|
-
} if (rf & 2) {
|
|
61
|
-
i0.ɵɵclassMap(ctx.getColorClass());
|
|
62
|
-
i0.ɵɵadvance();
|
|
63
|
-
i0.ɵɵproperty("ngIf", ctx.showBar);
|
|
64
|
-
i0.ɵɵadvance(2);
|
|
65
|
-
i0.ɵɵproperty("ngIf", ctx.showIcon);
|
|
66
|
-
i0.ɵɵadvance(2);
|
|
67
|
-
i0.ɵɵtextInterpolate(ctx.formatScore(ctx.score));
|
|
68
|
-
} }, dependencies: [i1.NgIf], styles: [".score-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n }\n\n .score-bar-container[_ngcontent-%COMP%] {\n width: 60px;\n height: 6px;\n background: #e0e0e0;\n border-radius: 3px;\n overflow: hidden;\n }\n\n .score-bar[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease, background-color 0.3s ease;\n }\n\n .score-indicator--excellent[_ngcontent-%COMP%] .score-bar[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #4caf50, #66bb6a);\n }\n\n .score-indicator--good[_ngcontent-%COMP%] .score-bar[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #8bc34a, #9ccc65);\n }\n\n .score-indicator--fair[_ngcontent-%COMP%] .score-bar[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #ffc107, #ffca28);\n }\n\n .score-indicator--poor[_ngcontent-%COMP%] .score-bar[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #ff9800, #ffa726);\n }\n\n .score-indicator--fail[_ngcontent-%COMP%] .score-bar[_ngcontent-%COMP%] {\n background: linear-gradient(90deg, #f44336, #e57373);\n }\n\n .score-value[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 600;\n font-size: 13px;\n }\n\n .score-indicator--excellent[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: #4caf50;\n }\n\n .score-indicator--good[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: #8bc34a;\n }\n\n .score-indicator--fair[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: #ffc107;\n }\n\n .score-indicator--poor[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: #ff9800;\n }\n\n .score-indicator--fail[_ngcontent-%COMP%] .score-value[_ngcontent-%COMP%] {\n color: #f44336;\n }\n\n .score-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n }\n\n .score-text[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n letter-spacing: 0.5px;\n }\n\n @media (max-width: 768px) {\n .score-bar-container[_ngcontent-%COMP%] {\n width: 40px;\n }\n\n .score-value[_ngcontent-%COMP%] {\n font-size: 12px;\n }\n }"] });
|
|
69
|
-
}
|
|
70
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScoreIndicatorComponent, [{
|
|
71
|
-
type: Component,
|
|
72
|
-
args: [{ selector: 'app-score-indicator', template: `
|
|
73
|
-
<div class="score-indicator" [class]="getColorClass()">
|
|
74
|
-
<div class="score-bar-container" *ngIf="showBar">
|
|
75
|
-
<div class="score-bar" [style.width.%]="score * 100"></div>
|
|
76
|
-
</div>
|
|
77
|
-
<div class="score-value">
|
|
78
|
-
<i [class]="getIcon()" *ngIf="showIcon"></i>
|
|
79
|
-
<span class="score-text">{{ formatScore(score) }}</span>
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
`, styles: ["\n .score-indicator {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n }\n\n .score-bar-container {\n width: 60px;\n height: 6px;\n background: #e0e0e0;\n border-radius: 3px;\n overflow: hidden;\n }\n\n .score-bar {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease, background-color 0.3s ease;\n }\n\n .score-indicator--excellent .score-bar {\n background: linear-gradient(90deg, #4caf50, #66bb6a);\n }\n\n .score-indicator--good .score-bar {\n background: linear-gradient(90deg, #8bc34a, #9ccc65);\n }\n\n .score-indicator--fair .score-bar {\n background: linear-gradient(90deg, #ffc107, #ffca28);\n }\n\n .score-indicator--poor .score-bar {\n background: linear-gradient(90deg, #ff9800, #ffa726);\n }\n\n .score-indicator--fail .score-bar {\n background: linear-gradient(90deg, #f44336, #e57373);\n }\n\n .score-value {\n display: flex;\n align-items: center;\n gap: 4px;\n font-weight: 600;\n font-size: 13px;\n }\n\n .score-indicator--excellent .score-value {\n color: #4caf50;\n }\n\n .score-indicator--good .score-value {\n color: #8bc34a;\n }\n\n .score-indicator--fair .score-value {\n color: #ffc107;\n }\n\n .score-indicator--poor .score-value {\n color: #ff9800;\n }\n\n .score-indicator--fail .score-value {\n color: #f44336;\n }\n\n .score-value i {\n font-size: 11px;\n }\n\n .score-text {\n font-family: 'Courier New', monospace;\n letter-spacing: 0.5px;\n }\n\n @media (max-width: 768px) {\n .score-bar-container {\n width: 40px;\n }\n\n .score-value {\n font-size: 12px;\n }\n }\n "] }]
|
|
83
|
-
}], null, { score: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], showBar: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], showIcon: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], decimals: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}] }); })();
|
|
92
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ScoreIndicatorComponent, { className: "ScoreIndicatorComponent", filePath: "src/Testing/components/widgets/score-indicator.component.ts", lineNumber: 105 }); })();
|
|
93
|
-
//# sourceMappingURL=score-indicator.component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"score-indicator.component.js","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/score-indicator.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;;IAM3C,8BAAiD;IAC/C,yBAA2D;IAC7D,iBAAM;;;IADmB,cAA6B;IAA7B,gDAA6B;;;IAGpD,oBAA4C;;;IAAzC,+BAAmB;;AA8F9B,MAAM,OAAO,uBAAuB;IACzB,KAAK,CAAU,CAAC,WAAW;IAC3B,OAAO,GAAG,IAAI,CAAC;IACf,QAAQ,GAAG,IAAI,CAAC;IAChB,QAAQ,GAAG,CAAC,CAAC;IAEtB,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,4BAA4B,CAAC;QAC3D,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,uBAAuB,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,uBAAuB,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,uBAAuB,CAAC;QACtD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,kBAAkB,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,mBAAmB,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,mBAAmB,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG;YAAE,OAAO,yBAAyB,CAAC;QACxD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;iFAzBU,uBAAuB;6DAAvB,uBAAuB;YAnGhC,8BAAuD;YACrD,wEAAiD;YAGjD,8BAAyB;YACvB,oEAAwC;YACxC,+BAAyB;YAAA,YAAwB;YAErD,AADE,AADmD,iBAAO,EACpD,EACF;;YARuB,kCAAyB;YAClB,cAAa;YAAb,kCAAa;YAIrB,eAAc;YAAd,mCAAc;YACb,eAAwB;YAAxB,gDAAwB;;;iFA6F5C,uBAAuB;cAtGnC,SAAS;2BACE,qBAAqB,YACrB;;;;;;;;;;GAUT;gBA2FQ,KAAK;kBAAb,KAAK;YACG,OAAO;kBAAf,KAAK;YACG,QAAQ;kBAAhB,KAAK;YACG,QAAQ;kBAAhB,KAAK;;kFAJK,uBAAuB"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { DialogRef } from '@progress/kendo-angular-dialog';
|
|
3
|
-
import { TestEntity, TestSuiteEntity } from '@memberjunction/core-entities';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class TestRunDialogComponent implements OnInit, OnDestroy {
|
|
6
|
-
private dialogRef;
|
|
7
|
-
private cdr;
|
|
8
|
-
private destroy$;
|
|
9
|
-
private testingClient;
|
|
10
|
-
private engine;
|
|
11
|
-
runMode: 'test' | 'suite';
|
|
12
|
-
searchText: string;
|
|
13
|
-
selectedTestId: string | null;
|
|
14
|
-
selectedSuiteId: string | null;
|
|
15
|
-
verbose: boolean;
|
|
16
|
-
parallel: boolean;
|
|
17
|
-
allTests: TestEntity[];
|
|
18
|
-
allSuites: TestSuiteEntity[];
|
|
19
|
-
filteredTests: TestEntity[];
|
|
20
|
-
filteredSuites: TestSuiteEntity[];
|
|
21
|
-
isRunning: boolean;
|
|
22
|
-
hasCompleted: boolean;
|
|
23
|
-
hasError: boolean;
|
|
24
|
-
progress: number;
|
|
25
|
-
executionTitle: string;
|
|
26
|
-
executionStatus: string;
|
|
27
|
-
result: any;
|
|
28
|
-
progressSteps: {
|
|
29
|
-
step: string;
|
|
30
|
-
label: string;
|
|
31
|
-
message: string;
|
|
32
|
-
active: boolean;
|
|
33
|
-
completed: boolean;
|
|
34
|
-
}[];
|
|
35
|
-
executionLog: Array<{
|
|
36
|
-
timestamp: Date;
|
|
37
|
-
message: string;
|
|
38
|
-
type: 'info' | 'success' | 'error';
|
|
39
|
-
}>;
|
|
40
|
-
get dialogTitle(): string;
|
|
41
|
-
constructor(dialogRef: DialogRef, cdr: ChangeDetectorRef);
|
|
42
|
-
ngOnInit(): Promise<void>;
|
|
43
|
-
ngOnDestroy(): void;
|
|
44
|
-
setRunMode(mode: 'test' | 'suite'): void;
|
|
45
|
-
filterItems(): void;
|
|
46
|
-
clearSearch(): void;
|
|
47
|
-
selectTest(testId: string): void;
|
|
48
|
-
selectSuite(suiteId: string): void;
|
|
49
|
-
canRun(): boolean;
|
|
50
|
-
runTest(): Promise<void>;
|
|
51
|
-
private executeTest;
|
|
52
|
-
private executeSuite;
|
|
53
|
-
private updateProgress;
|
|
54
|
-
private updateProgressStep;
|
|
55
|
-
private resetProgressSteps;
|
|
56
|
-
private completeAllSteps;
|
|
57
|
-
private addLogEntry;
|
|
58
|
-
resetDialog(): void;
|
|
59
|
-
onClose(): void;
|
|
60
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TestRunDialogComponent, never>;
|
|
61
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TestRunDialogComponent, "app-test-run-dialog", never, {}, {}, never, never, false, never>;
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=test-run-dialog.component.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-run-dialog.component.d.ts","sourceRoot":"","sources":["../../../../src/Testing/components/widgets/test-run-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAK3D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;;AAW5E,qBA02Ba,sBAAuB,YAAW,MAAM,EAAE,SAAS;IA8C5D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IA9Cb,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,MAAM,CAAkB;IAGhC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAU;IACnC,UAAU,SAAM;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAQ;IACtC,OAAO,UAAQ;IACf,QAAQ,UAAS;IAGjB,QAAQ,EAAE,UAAU,EAAE,CAAM;IAC5B,SAAS,EAAE,eAAe,EAAE,CAAM;IAClC,aAAa,EAAE,UAAU,EAAE,CAAM;IACjC,cAAc,EAAE,eAAe,EAAE,CAAM;IAGvC,SAAS,UAAS;IAClB,YAAY,UAAS;IACrB,QAAQ,UAAS;IACjB,QAAQ,SAAK;IACb,cAAc,SAAM;IACpB,eAAe,SAAM;IACrB,MAAM,EAAE,GAAG,CAAQ;IAEnB,aAAa;;;;;;QAMX;IAEF,YAAY,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;KAAE,CAAC,CAAM;IAEnG,IAAI,WAAW,IAAI,MAAM,CAKxB;gBAGS,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,iBAAiB;IAO1B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B,WAAW,IAAI,IAAI;IAKnB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASxC,WAAW,IAAI,IAAI;IAkBnB,WAAW,IAAI,IAAI;IAKnB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKhC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKlC,MAAM,IAAI,OAAO;IAKX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA2BhB,WAAW;YAgDX,YAAY;IAiD1B,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAanB,WAAW,IAAI,IAAI;IAiBnB,OAAO,IAAI,IAAI;yCA9UJ,sBAAsB;2CAAtB,sBAAsB;CAmVlC"}
|