bways-report 0.1.6 → 0.1.7
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/README.md +293 -464
- package/esm2022/lib/core/config/bways-report-config.mjs +83 -0
- package/esm2022/lib/core/index.mjs +2 -1
- package/esm2022/lib/core/models/report-definition.model.mjs +1 -1
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +6 -3
- package/esm2022/lib/core/services/report-session-context.service.mjs +11 -7
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/data-normalization.util.mjs +87 -1
- package/esm2022/lib/core/utils/report-parameter.util.mjs +119 -3
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +69 -0
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +98 -0
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +57 -0
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +85 -0
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +163 -0
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +12 -0
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +4 -23
- package/esm2022/lib/data-access/adapters/index.mjs +8 -1
- package/esm2022/lib/data-access/contracts/lookup.contract.mjs +1 -1
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +12 -2
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +5 -5
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +407 -0
- package/esm2022/lib/features/designer/components/property-editor/parameter-binding-editor.component.mjs +109 -60
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +110 -20
- package/esm2022/lib/features/designer/components/property-editor/property-editor-general.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +60 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-layout.component.mjs +11 -5
- package/esm2022/lib/features/designer/components/property-editor/property-editor-report.component.mjs +3 -3
- package/esm2022/lib/features/designer/components/property-editor/property-editor-validation.component.mjs +15 -3
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +204 -10
- package/esm2022/lib/features/designer/designer.component.mjs +43 -2
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +9 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +207 -0
- package/esm2022/lib/features/embed/bways-report-menu.component.mjs +433 -0
- package/esm2022/lib/features/embed/bways-report-page.component.mjs +204 -0
- package/esm2022/lib/features/embed/index.mjs +5 -0
- package/esm2022/lib/features/embed/inject-report-menu.mjs +99 -0
- package/esm2022/lib/features/index.mjs +2 -1
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +43 -5
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +4 -4
- package/esm2022/lib/features/routing/index.mjs +2 -2
- package/esm2022/lib/features/routing/models/report-route.models.mjs +1 -1
- package/esm2022/lib/features/routing/report-routes.mjs +42 -1
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +6 -8
- package/esm2022/lib/features/routing/services/report-menu.service.mjs +14 -4
- package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +22 -3
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +16 -2
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +28 -5
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +86 -19
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +8 -1
- package/esm2022/lib/primitives/components/index.mjs +2 -1
- package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +9 -3
- package/esm2022/lib/primitives/components/searchable-select/rpt-searchable-select.component.mjs +386 -0
- package/esm2022/lib/provide-reporting.mjs +137 -7
- package/fesm2022/bways-report.mjs +4053 -840
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +161 -0
- package/lib/core/index.d.ts +1 -0
- package/lib/core/models/report-definition.model.d.ts +16 -0
- package/lib/core/services/report-session-context.service.d.ts +1 -0
- package/lib/core/tokens/reporting-config.token.d.ts +16 -0
- package/lib/core/utils/data-normalization.util.d.ts +10 -0
- package/lib/core/utils/report-parameter.util.d.ts +18 -1
- package/lib/data-access/adapters/endpoint-datasource.adapter.d.ts +13 -0
- package/lib/data-access/adapters/endpoint-lookup.adapter.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-masterdata.adapter.d.ts +11 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +15 -0
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +21 -0
- package/lib/data-access/adapters/endpoint-tokens.d.ts +21 -0
- package/lib/data-access/adapters/index.d.ts +7 -0
- package/lib/data-access/contracts/lookup.contract.d.ts +2 -2
- package/lib/features/designer/components/component-palette/component-palette.component.d.ts +1 -0
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +1 -1
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +34 -0
- package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +12 -2
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +10 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +13 -1
- package/lib/features/designer/designer.component.d.ts +4 -0
- package/lib/features/embed/bways-report-builder.component.d.ts +48 -0
- package/lib/features/embed/bways-report-menu.component.d.ts +40 -0
- package/lib/features/embed/bways-report-page.component.d.ts +61 -0
- package/lib/features/embed/index.d.ts +4 -0
- package/lib/features/embed/inject-report-menu.d.ts +44 -0
- package/lib/features/index.d.ts +1 -0
- package/lib/features/persistence/services/report-store.service.d.ts +5 -0
- package/lib/features/routing/index.d.ts +1 -1
- package/lib/features/routing/models/report-route.models.d.ts +3 -0
- package/lib/features/routing/report-routes.d.ts +40 -0
- package/lib/features/routing/resolvers/report.resolver.d.ts +1 -1
- package/lib/features/runtime/dynamic-renderer.component.d.ts +1 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -1
- package/lib/primitives/components/button/rpt-button.component.d.ts +3 -0
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +16 -3
- package/lib/primitives/components/index.d.ts +2 -0
- package/lib/primitives/components/searchable-select/rpt-searchable-select.component.d.ts +89 -0
- package/lib/provide-reporting.d.ts +22 -6
- package/package.json +1 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, output, signal, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { ReportStoreService } from '../persistence/services/report-store.service';
|
|
5
|
+
import { RptReportComponent } from '../runtime/rpt-report.component';
|
|
6
|
+
import { RptIconComponent } from '../../primitives/components/icon/rpt-icon.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
/**
|
|
9
|
+
* `<bways-report-page>`
|
|
10
|
+
*
|
|
11
|
+
* Drop-in standalone component that loads a saved report by its slug (or ID)
|
|
12
|
+
* and renders the complete interactive live form, data filters, and grid.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```html
|
|
16
|
+
* <!-- By slug (recommended) -->
|
|
17
|
+
* <bways-report-page slug="sale-report" />
|
|
18
|
+
*
|
|
19
|
+
* <!-- Or pass parameters & overrides -->
|
|
20
|
+
* <bways-report-page
|
|
21
|
+
* [slug]="currentSlug"
|
|
22
|
+
* [parameters]="{ BranchId: 5 }"
|
|
23
|
+
* [showExport]="true"
|
|
24
|
+
* (rowClick)="onRowSelected($event)"
|
|
25
|
+
* />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export class BwaysReportPageComponent {
|
|
29
|
+
store = inject(ReportStoreService);
|
|
30
|
+
destroyRef = inject(DestroyRef);
|
|
31
|
+
/** Report slug (e.g. 'sale-report') or unique ID */
|
|
32
|
+
slug = input(undefined);
|
|
33
|
+
/** Alternative alias for ID or slug */
|
|
34
|
+
id = input(undefined);
|
|
35
|
+
/** Explicit in-memory ReportDefinition if already loaded */
|
|
36
|
+
report = input(null);
|
|
37
|
+
/** Default input parameter values for the report */
|
|
38
|
+
parameters = input({});
|
|
39
|
+
/** Whether to show export controls (Excel, CSV, Print) */
|
|
40
|
+
showExport = input(true);
|
|
41
|
+
/** Whether to enable saved view presets */
|
|
42
|
+
enablePresets = input(true);
|
|
43
|
+
/** Whether to automatically execute the query when the page opens */
|
|
44
|
+
autoExecute = input(true);
|
|
45
|
+
/** Container width */
|
|
46
|
+
width = input('100%');
|
|
47
|
+
/** Container height */
|
|
48
|
+
height = input('100%');
|
|
49
|
+
// Outputs
|
|
50
|
+
rowClick = output();
|
|
51
|
+
dataLoaded = output();
|
|
52
|
+
selectionChange = output();
|
|
53
|
+
selectionChanged = output();
|
|
54
|
+
// Internal states
|
|
55
|
+
loading = signal(false);
|
|
56
|
+
error = signal(null);
|
|
57
|
+
reportDefinition = signal(null);
|
|
58
|
+
constructor() {
|
|
59
|
+
effect(() => {
|
|
60
|
+
// If an explicit report object is passed, use it directly
|
|
61
|
+
const directDef = this.report();
|
|
62
|
+
if (directDef) {
|
|
63
|
+
this.reportDefinition.set(directDef);
|
|
64
|
+
this.loading.set(false);
|
|
65
|
+
this.error.set(null);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const identifier = this.slug() || this.id();
|
|
69
|
+
if (identifier) {
|
|
70
|
+
this.fetchReport(identifier);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.reportDefinition.set(null);
|
|
74
|
+
this.loading.set(false);
|
|
75
|
+
}
|
|
76
|
+
}, { allowSignalWrites: true });
|
|
77
|
+
}
|
|
78
|
+
reloadReport() {
|
|
79
|
+
const identifier = this.slug() || this.id();
|
|
80
|
+
if (identifier) {
|
|
81
|
+
this.fetchReport(identifier, true);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
fetchReport(identifier, force = false) {
|
|
85
|
+
this.loading.set(true);
|
|
86
|
+
this.error.set(null);
|
|
87
|
+
this.store
|
|
88
|
+
.loadReportBySlug(identifier, force)
|
|
89
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
90
|
+
.subscribe({
|
|
91
|
+
next: (def) => {
|
|
92
|
+
this.reportDefinition.set(def);
|
|
93
|
+
this.loading.set(false);
|
|
94
|
+
},
|
|
95
|
+
error: (err) => {
|
|
96
|
+
this.error.set(err?.message || `Could not find report "${identifier}".`);
|
|
97
|
+
this.loading.set(false);
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BwaysReportPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: BwaysReportPageComponent, isStandalone: true, selector: "bways-report-page", inputs: { slug: { classPropertyName: "slug", publicName: "slug", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, report: { classPropertyName: "report", publicName: "report", isSignal: true, isRequired: false, transformFunction: null }, parameters: { classPropertyName: "parameters", publicName: "parameters", isSignal: true, isRequired: false, transformFunction: null }, showExport: { classPropertyName: "showExport", publicName: "showExport", isSignal: true, isRequired: false, transformFunction: null }, enablePresets: { classPropertyName: "enablePresets", publicName: "enablePresets", isSignal: true, isRequired: false, transformFunction: null }, autoExecute: { classPropertyName: "autoExecute", publicName: "autoExecute", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick", dataLoaded: "dataLoaded", selectionChange: "selectionChange", selectionChanged: "selectionChanged" }, ngImport: i0, template: `
|
|
103
|
+
<div
|
|
104
|
+
class="rpt-page-container"
|
|
105
|
+
[style.width]="width()"
|
|
106
|
+
[style.height]="height()"
|
|
107
|
+
>
|
|
108
|
+
@if (loading()) {
|
|
109
|
+
<div class="rpt-page-loading">
|
|
110
|
+
<div class="rpt-spinner"></div>
|
|
111
|
+
<p>Loading report definition...</p>
|
|
112
|
+
</div>
|
|
113
|
+
} @else if (error()) {
|
|
114
|
+
<div class="rpt-page-error">
|
|
115
|
+
<div class="rpt-error-box">
|
|
116
|
+
<rpt-icon name="alert-circle" [size]="24" class="rpt-error-icon" />
|
|
117
|
+
<div class="rpt-error-content">
|
|
118
|
+
<h3>Report Not Available</h3>
|
|
119
|
+
<p>{{ error() }}</p>
|
|
120
|
+
<button
|
|
121
|
+
type="button"
|
|
122
|
+
class="rpt-retry-btn"
|
|
123
|
+
(click)="reloadReport()"
|
|
124
|
+
>
|
|
125
|
+
Retry
|
|
126
|
+
</button>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
} @else if (reportDefinition()) {
|
|
131
|
+
<div class="rpt-page-body">
|
|
132
|
+
<rpt-report
|
|
133
|
+
[report]="reportDefinition()!"
|
|
134
|
+
[parameters]="parameters()"
|
|
135
|
+
[showExport]="showExport()"
|
|
136
|
+
[enablePresets]="enablePresets()"
|
|
137
|
+
[autoExecute]="autoExecute()"
|
|
138
|
+
(rowClick)="rowClick.emit($event)"
|
|
139
|
+
(dataLoaded)="dataLoaded.emit($event)"
|
|
140
|
+
(selectionChange)="selectionChange.emit($event)"
|
|
141
|
+
(selectionChanged)="selectionChanged.emit($event)"
|
|
142
|
+
/>
|
|
143
|
+
</div>
|
|
144
|
+
} @else {
|
|
145
|
+
<div class="rpt-page-empty">
|
|
146
|
+
<p>Please provide a valid report slug or ID.</p>
|
|
147
|
+
</div>
|
|
148
|
+
}
|
|
149
|
+
</div>
|
|
150
|
+
`, isInline: true, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-page-container{display:flex;flex-direction:column;position:relative;box-sizing:border-box;overflow:auto;background:var(--rpt-page-bg, #ffffff)}.rpt-page-body{display:flex;flex-direction:column;width:100%;height:100%;box-sizing:border-box}.rpt-page-loading,.rpt-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--rpt-text-muted, #64748b);font-size:.875rem;min-height:200px}.rpt-spinner{width:32px;height:32px;border:3px solid #e2e8f0;border-top-color:var(--rpt-color-primary, #2563eb);border-radius:50%;animation:rpt-page-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-page-spin{to{transform:rotate(360deg)}}.rpt-page-error{display:flex;align-items:center;justify-content:center;padding:40px 20px}.rpt-error-box{display:flex;align-items:flex-start;gap:16px;max-width:500px;padding:20px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b}.rpt-error-icon{color:#ef4444;flex-shrink:0;margin-top:2px}.rpt-error-content h3{margin:0 0 6px;font-size:.95rem;font-weight:600}.rpt-error-content p{margin:0 0 12px;font-size:.835rem;color:#7f1d1d}.rpt-retry-btn{padding:5px 12px;background:#fff;border:1px solid #fca5a5;color:#b91c1c;border-radius:6px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .15s ease}.rpt-retry-btn:hover{background:#fee2e2}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: RptReportComponent, selector: "rpt-report, rpt-view", inputs: ["id", "report", "parameters", "showExport", "enablePresets", "autoExecute"], outputs: ["rowClick", "dataLoaded", "gridStateChange", "selectionChange", "selectionChanged", "presetSaved", "presetChange", "exportRequested", "printRequested"] }, { kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BwaysReportPageComponent, decorators: [{
|
|
153
|
+
type: Component,
|
|
154
|
+
args: [{ selector: 'bways-report-page', standalone: true, imports: [CommonModule, RptReportComponent, RptIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
155
|
+
<div
|
|
156
|
+
class="rpt-page-container"
|
|
157
|
+
[style.width]="width()"
|
|
158
|
+
[style.height]="height()"
|
|
159
|
+
>
|
|
160
|
+
@if (loading()) {
|
|
161
|
+
<div class="rpt-page-loading">
|
|
162
|
+
<div class="rpt-spinner"></div>
|
|
163
|
+
<p>Loading report definition...</p>
|
|
164
|
+
</div>
|
|
165
|
+
} @else if (error()) {
|
|
166
|
+
<div class="rpt-page-error">
|
|
167
|
+
<div class="rpt-error-box">
|
|
168
|
+
<rpt-icon name="alert-circle" [size]="24" class="rpt-error-icon" />
|
|
169
|
+
<div class="rpt-error-content">
|
|
170
|
+
<h3>Report Not Available</h3>
|
|
171
|
+
<p>{{ error() }}</p>
|
|
172
|
+
<button
|
|
173
|
+
type="button"
|
|
174
|
+
class="rpt-retry-btn"
|
|
175
|
+
(click)="reloadReport()"
|
|
176
|
+
>
|
|
177
|
+
Retry
|
|
178
|
+
</button>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
} @else if (reportDefinition()) {
|
|
183
|
+
<div class="rpt-page-body">
|
|
184
|
+
<rpt-report
|
|
185
|
+
[report]="reportDefinition()!"
|
|
186
|
+
[parameters]="parameters()"
|
|
187
|
+
[showExport]="showExport()"
|
|
188
|
+
[enablePresets]="enablePresets()"
|
|
189
|
+
[autoExecute]="autoExecute()"
|
|
190
|
+
(rowClick)="rowClick.emit($event)"
|
|
191
|
+
(dataLoaded)="dataLoaded.emit($event)"
|
|
192
|
+
(selectionChange)="selectionChange.emit($event)"
|
|
193
|
+
(selectionChanged)="selectionChanged.emit($event)"
|
|
194
|
+
/>
|
|
195
|
+
</div>
|
|
196
|
+
} @else {
|
|
197
|
+
<div class="rpt-page-empty">
|
|
198
|
+
<p>Please provide a valid report slug or ID.</p>
|
|
199
|
+
</div>
|
|
200
|
+
}
|
|
201
|
+
</div>
|
|
202
|
+
`, styles: [":host{display:block;width:100%;height:100%;box-sizing:border-box}.rpt-page-container{display:flex;flex-direction:column;position:relative;box-sizing:border-box;overflow:auto;background:var(--rpt-page-bg, #ffffff)}.rpt-page-body{display:flex;flex-direction:column;width:100%;height:100%;box-sizing:border-box}.rpt-page-loading,.rpt-page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--rpt-text-muted, #64748b);font-size:.875rem;min-height:200px}.rpt-spinner{width:32px;height:32px;border:3px solid #e2e8f0;border-top-color:var(--rpt-color-primary, #2563eb);border-radius:50%;animation:rpt-page-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-page-spin{to{transform:rotate(360deg)}}.rpt-page-error{display:flex;align-items:center;justify-content:center;padding:40px 20px}.rpt-error-box{display:flex;align-items:flex-start;gap:16px;max-width:500px;padding:20px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b}.rpt-error-icon{color:#ef4444;flex-shrink:0;margin-top:2px}.rpt-error-content h3{margin:0 0 6px;font-size:.95rem;font-weight:600}.rpt-error-content p{margin:0 0 12px;font-size:.835rem;color:#7f1d1d}.rpt-retry-btn{padding:5px 12px;background:#fff;border:1px solid #fca5a5;color:#b91c1c;border-radius:6px;font-size:.775rem;font-weight:600;cursor:pointer;transition:all .15s ease}.rpt-retry-btn:hover{background:#fee2e2}\n"] }]
|
|
203
|
+
}], ctorParameters: () => [] });
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYndheXMtcmVwb3J0LXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvZW1iZWQvYndheXMtcmVwb3J0LXBhZ2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFHdkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFnS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixLQUFLLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbkMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCxvREFBb0Q7SUFDM0MsSUFBSSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFckQsdUNBQXVDO0lBQzlCLEVBQUUsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBRW5ELDREQUE0RDtJQUNuRCxNQUFNLEdBQUcsS0FBSyxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUV2RCxvREFBb0Q7SUFDM0MsVUFBVSxHQUFHLEtBQUssQ0FBMEIsRUFBRSxDQUFDLENBQUM7SUFFekQs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RTtnQkFDYixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDWixHQUFHLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixVQUFVLElBQUksQ0FDekQsQ0FBQztnQkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FoR1Usd0JBQXdCOzRGQUF4Qix3QkFBd0IsMDFDQTFKekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCw4OUNBbERTLFlBQVksK0JBQUUsa0JBQWtCLDBUQUFFLGdCQUFnQjs7NEZBNEpqRCx3QkFBd0I7a0JBL0pwQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsbUJBQzVDLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZS9zZXJ2aWNlcy9yZXBvcnQtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBScHRSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuLi9ydW50aW1lL3JwdC1yZXBvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZFJvd0NsaWNrQWN0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWdyaWQubW9kZWwnO1xuXG4vKipcbiAqIGA8YndheXMtcmVwb3J0LXBhZ2U+YFxuICpcbiAqIERyb3AtaW4gc3RhbmRhbG9uZSBjb21wb25lbnQgdGhhdCBsb2FkcyBhIHNhdmVkIHJlcG9ydCBieSBpdHMgc2x1ZyAob3IgSUQpXG4gKiBhbmQgcmVuZGVycyB0aGUgY29tcGxldGUgaW50ZXJhY3RpdmUgbGl2ZSBmb3JtLCBkYXRhIGZpbHRlcnMsIGFuZCBncmlkLlxuICpcbiAqIFVzYWdlOlxuICogYGBgaHRtbFxuICogPCEtLSBCeSBzbHVnIChyZWNvbW1lbmRlZCkgLS0+XG4gKiA8YndheXMtcmVwb3J0LXBhZ2Ugc2x1Zz1cInNhbGUtcmVwb3J0XCIgLz5cbiAqXG4gKiA8IS0tIE9yIHBhc3MgcGFyYW1ldGVycyAmIG92ZXJyaWRlcyAtLT5cbiAqIDxid2F5cy1yZXBvcnQtcGFnZVxuICogICBbc2x1Z109XCJjdXJyZW50U2x1Z1wiXG4gKiAgIFtwYXJhbWV0ZXJzXT1cInsgQnJhbmNoSWQ6IDUgfVwiXG4gKiAgIFtzaG93RXhwb3J0XT1cInRydWVcIlxuICogICAocm93Q2xpY2spPVwib25Sb3dTZWxlY3RlZCgkZXZlbnQpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYndheXMtcmVwb3J0LXBhZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBScHRSZXBvcnRDb21wb25lbnQsIFJwdEljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInJwdC1wYWdlLWNvbnRhaW5lclwiXG4gICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGgoKVwiXG4gICAgICBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodCgpXCJcbiAgICA+XG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXBhZ2UtbG9hZGluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtc3Bpbm5lclwiPjwvZGl2PlxuICAgICAgICAgIDxwPkxvYWRpbmcgcmVwb3J0IGRlZmluaXRpb24uLi48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSBpZiAoZXJyb3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXBhZ2UtZXJyb3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWJveFwiPlxuICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBbc2l6ZV09XCIyNFwiIGNsYXNzPVwicnB0LWVycm9yLWljb25cIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1lcnJvci1jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxoMz5SZXBvcnQgTm90IEF2YWlsYWJsZTwvaDM+XG4gICAgICAgICAgICAgIDxwPnt7IGVycm9yKCkgfX08L3A+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJwdC1yZXRyeS1idG5cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWxvYWRSZXBvcnQoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBSZXRyeVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlcG9ydERlZmluaXRpb24oKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXBhZ2UtYm9keVwiPlxuICAgICAgICAgIDxycHQtcmVwb3J0XG4gICAgICAgICAgICBbcmVwb3J0XT1cInJlcG9ydERlZmluaXRpb24oKSFcIlxuICAgICAgICAgICAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnQoKVwiXG4gICAgICAgICAgICBbZW5hYmxlUHJlc2V0c109XCJlbmFibGVQcmVzZXRzKClcIlxuICAgICAgICAgICAgW2F1dG9FeGVjdXRlXT1cImF1dG9FeGVjdXRlKClcIlxuICAgICAgICAgICAgKHJvd0NsaWNrKT1cInJvd0NsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGF0YUxvYWRlZCk9XCJkYXRhTG9hZGVkLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdGlvbkNoYW5nZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwic2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcGFnZS1lbXB0eVwiPlxuICAgICAgICAgIDxwPlBsZWFzZSBwcm92aWRlIGEgdmFsaWQgcmVwb3J0IHNsdWcgb3IgSUQuPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgIC5ycHQtcGFnZS1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtcGFnZS1iZywgI2ZmZmZmZik7XG4gICAgfVxuXG4gICAgLnJwdC1wYWdlLWJvZHkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgfVxuXG4gICAgLnJwdC1wYWdlLWxvYWRpbmcsXG4gICAgLnJwdC1wYWdlLWVtcHR5IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogNjBweCAyMHB4O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgICB9XG5cbiAgICAucnB0LXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAjZTJlOGYwO1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYW5pbWF0aW9uOiBycHQtcGFnZS1zcGluIDAuOHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJwdC1wYWdlLXNwaW4ge1xuICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gICAgfVxuXG4gICAgLnJwdC1wYWdlLWVycm9yIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA0MHB4IDIwcHg7XG4gICAgfVxuXG4gICAgLnJwdC1lcnJvci1ib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgZ2FwOiAxNnB4O1xuICAgICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kOiAjZmVmMmYyO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgI2ZlY2FjYTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgIGNvbG9yOiAjOTkxYjFiO1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItaWNvbiB7XG4gICAgICBjb2xvcjogI2VmNDQ0NDtcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItY29udGVudCBoMyB7XG4gICAgICBtYXJnaW46IDAgMCA2cHggMDtcbiAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLnJwdC1lcnJvci1jb250ZW50IHAge1xuICAgICAgbWFyZ2luOiAwIDAgMTJweCAwO1xuICAgICAgZm9udC1zaXplOiAwLjgzNXJlbTtcbiAgICAgIGNvbG9yOiAjN2YxZDFkO1xuICAgIH1cblxuICAgIC5ycHQtcmV0cnktYnRuIHtcbiAgICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNmY2E1YTU7XG4gICAgICBjb2xvcjogI2I5MWMxYztcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgfVxuXG4gICAgLnJwdC1yZXRyeS1idG46aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogI2ZlZTJlMjtcbiAgICB9XG4gIGBdLFxufSlcbmV4cG9ydCBjbGFzcyBCd2F5c1JlcG9ydFBhZ2VDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KFJlcG9ydFN0b3JlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAvKiogUmVwb3J0IHNsdWcgKGUuZy4gJ3NhbGUtcmVwb3J0Jykgb3IgdW5pcXVlIElEICovXG4gIHJlYWRvbmx5IHNsdWcgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgLyoqIEFsdGVybmF0aXZlIGFsaWFzIGZvciBJRCBvciBzbHVnICovXG4gIHJlYWRvbmx5IGlkID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8qKiBFeHBsaWNpdCBpbi1tZW1vcnkgUmVwb3J0RGVmaW5pdGlvbiBpZiBhbHJlYWR5IGxvYWRlZCAqL1xuICByZWFkb25seSByZXBvcnQgPSBpbnB1dDxSZXBvcnREZWZpbml0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIERlZmF1bHQgaW5wdXQgcGFyYW1ldGVyIHZhbHVlcyBmb3IgdGhlIHJlcG9ydCAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcblxuICAvKiogV2hldGhlciB0byBzaG93IGV4cG9ydCBjb250cm9scyAoRXhjZWwsIENTViwgUHJpbnQpICovXG4gIHJlYWRvbmx5IHNob3dFeHBvcnQgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvKiogV2hldGhlciB0byBlbmFibGUgc2F2ZWQgdmlldyBwcmVzZXRzICovXG4gIHJlYWRvbmx5IGVuYWJsZVByZXNldHMgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvKiogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IGV4ZWN1dGUgdGhlIHF1ZXJ5IHdoZW4gdGhlIHBhZ2Ugb3BlbnMgKi9cbiAgcmVhZG9ubHkgYXV0b0V4ZWN1dGUgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcblxuICAvKiogQ29udGFpbmVyIHdpZHRoICovXG4gIHJlYWRvbmx5IHdpZHRoID0gaW5wdXQ8c3RyaW5nPignMTAwJScpO1xuXG4gIC8qKiBDb250YWluZXIgaGVpZ2h0ICovXG4gIHJlYWRvbmx5IGhlaWdodCA9IGlucHV0PHN0cmluZz4oJzEwMCUnKTtcblxuICAvLyBPdXRwdXRzXG4gIHJlYWRvbmx5IHJvd0NsaWNrID0gb3V0cHV0PHtcbiAgICByb3c6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHBhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGFjdGlvbj86IEdyaWRSb3dDbGlja0FjdGlvbjtcbiAgfT4oKTtcbiAgcmVhZG9ubHkgZGF0YUxvYWRlZCA9IG91dHB1dDx1bmtub3duW10+KCk7XG4gIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG91dHB1dDxhbnlbXT4oKTtcbiAgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlZCA9IG91dHB1dDxhbnlbXT4oKTtcblxuICAvLyBJbnRlcm5hbCBzdGF0ZXNcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSByZXBvcnREZWZpbml0aW9uID0gc2lnbmFsPFJlcG9ydERlZmluaXRpb24gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIElmIGFuIGV4cGxpY2l0IHJlcG9ydCBvYmplY3QgaXMgcGFzc2VkLCB1c2UgaXQgZGlyZWN0bHlcbiAgICAgICAgY29uc3QgZGlyZWN0RGVmID0gdGhpcy5yZXBvcnQoKTtcbiAgICAgICAgaWYgKGRpcmVjdERlZikge1xuICAgICAgICAgIHRoaXMucmVwb3J0RGVmaW5pdGlvbi5zZXQoZGlyZWN0RGVmKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yLnNldChudWxsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5zbHVnKCkgfHwgdGhpcy5pZCgpO1xuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSZXBvcnQoaWRlbnRpZmllcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXBvcnREZWZpbml0aW9uLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICByZWxvYWRSZXBvcnQoKTogdm9pZCB7XG4gICAgY29uc3QgaWRlbnRpZmllciA9IHRoaXMuc2x1ZygpIHx8IHRoaXMuaWQoKTtcbiAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgdGhpcy5mZXRjaFJlcG9ydChpZGVudGlmaWVyLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZldGNoUmVwb3J0KGlkZW50aWZpZXI6IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5lcnJvci5zZXQobnVsbCk7XG5cbiAgICB0aGlzLnN0b3JlXG4gICAgICAubG9hZFJlcG9ydEJ5U2x1ZyhpZGVudGlmaWVyLCBmb3JjZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkZWYpID0+IHtcbiAgICAgICAgICB0aGlzLnJlcG9ydERlZmluaXRpb24uc2V0KGRlZik7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQoXG4gICAgICAgICAgICBlcnI/Lm1lc3NhZ2UgfHwgYENvdWxkIG5vdCBmaW5kIHJlcG9ydCBcIiR7aWRlbnRpZmllcn1cIi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { BwaysReportBuilderComponent } from './bways-report-builder.component';
|
|
2
|
+
export { BwaysReportPageComponent } from './bways-report-page.component';
|
|
3
|
+
export { BwaysReportMenuComponent } from './bways-report-menu.component';
|
|
4
|
+
export { injectReportMenu, injectReportMenuGroups, } from './inject-report-menu';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9lbWJlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTBCLE1BQU0sK0JBQStCLENBQUM7QUFDakcsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixzQkFBc0IsR0FFdkIsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEJ3YXlzUmVwb3J0QnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4vYndheXMtcmVwb3J0LWJ1aWxkZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IEJ3YXlzUmVwb3J0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vYndheXMtcmVwb3J0LXBhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IEJ3YXlzUmVwb3J0TWVudUNvbXBvbmVudCwgdHlwZSBSZXBvcnRNZW51VmFyaWFudCB9IGZyb20gJy4vYndheXMtcmVwb3J0LW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gIGluamVjdFJlcG9ydE1lbnUsXG4gIGluamVjdFJlcG9ydE1lbnVHcm91cHMsXG4gIHR5cGUgSW5qZWN0UmVwb3J0TWVudU9wdGlvbnMsXG59IGZyb20gJy4vaW5qZWN0LXJlcG9ydC1tZW51JztcbiJdfQ==
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { computed, inject } from '@angular/core';
|
|
2
|
+
import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
|
|
3
|
+
import { ReportStoreService } from '../persistence/services/report-store.service';
|
|
4
|
+
import { groupReportsByCategory } from '../routing/services/report-menu.service';
|
|
5
|
+
/**
|
|
6
|
+
* Injects a reactive signal of published report menu items.
|
|
7
|
+
*
|
|
8
|
+
* Automatically triggers loading of report metadata from the persistence store/endpoint
|
|
9
|
+
* if not already loaded.
|
|
10
|
+
*
|
|
11
|
+
* Usage in component:
|
|
12
|
+
* ```typescript
|
|
13
|
+
* @Component({ ... })
|
|
14
|
+
* export class AppSidebarComponent {
|
|
15
|
+
* readonly reportMenu = injectReportMenu();
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
* Usage in template:
|
|
19
|
+
* ```html
|
|
20
|
+
* @for (item of reportMenu(); track item.slug) {
|
|
21
|
+
* <a [routerLink]="item.route">{{ item.name }}</a>
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function injectReportMenu(options) {
|
|
26
|
+
const store = inject(ReportStoreService);
|
|
27
|
+
const reportingConfig = inject(REPORTING_CONFIG, { optional: true });
|
|
28
|
+
const rawBase = options?.basePath ?? reportingConfig?.routeBase ?? '/reports';
|
|
29
|
+
const cleanBase = rawBase.startsWith('/') ? rawBase : `/${rawBase}`;
|
|
30
|
+
const normalizedBase = cleanBase.endsWith('/') ? cleanBase.slice(0, -1) : cleanBase;
|
|
31
|
+
// Trigger initial fetch if store has not loaded summaries yet
|
|
32
|
+
if (store.summaries().length === 0 && !store.isLoading()) {
|
|
33
|
+
store.loadSummaries().subscribe({
|
|
34
|
+
error: (err) => console.warn('[bways-report] Failed to load menu reports:', err)
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return computed(() => {
|
|
38
|
+
const allSummaries = store.summaries();
|
|
39
|
+
const includeDrafts = options?.includeDrafts === true;
|
|
40
|
+
const visible = includeDrafts
|
|
41
|
+
? allSummaries
|
|
42
|
+
: allSummaries.filter((s) => s.isPublished !== false);
|
|
43
|
+
const items = visible.map((report) => {
|
|
44
|
+
const category = report.menuGroup || report.category || 'General';
|
|
45
|
+
const slug = report.slug || report.id;
|
|
46
|
+
return {
|
|
47
|
+
id: report.id,
|
|
48
|
+
code: report.id,
|
|
49
|
+
name: report.name,
|
|
50
|
+
category,
|
|
51
|
+
slug,
|
|
52
|
+
menuGroup: report.menuGroup,
|
|
53
|
+
menuOrder: report.menuOrder,
|
|
54
|
+
icon: report.icon,
|
|
55
|
+
route: `${normalizedBase}/${slug}`,
|
|
56
|
+
isDraft: !report.isPublished,
|
|
57
|
+
version: report.version,
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
// Sort by menuGroup/category, then by menuOrder, then by name
|
|
61
|
+
return items.sort((a, b) => {
|
|
62
|
+
const groupCompare = (a.menuGroup || a.category).localeCompare(b.menuGroup || b.category);
|
|
63
|
+
if (groupCompare !== 0)
|
|
64
|
+
return groupCompare;
|
|
65
|
+
if (a.menuOrder !== undefined && b.menuOrder !== undefined) {
|
|
66
|
+
return a.menuOrder - b.menuOrder;
|
|
67
|
+
}
|
|
68
|
+
if (a.menuOrder !== undefined)
|
|
69
|
+
return -1;
|
|
70
|
+
if (b.menuOrder !== undefined)
|
|
71
|
+
return 1;
|
|
72
|
+
return a.name.localeCompare(b.name);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Injects a reactive signal of published report menu groups (hierarchical).
|
|
78
|
+
*
|
|
79
|
+
* Useful for sidebars that organize reports under collapsible group headings.
|
|
80
|
+
*/
|
|
81
|
+
export function injectReportMenuGroups(options) {
|
|
82
|
+
const store = inject(ReportStoreService);
|
|
83
|
+
const reportingConfig = inject(REPORTING_CONFIG, { optional: true });
|
|
84
|
+
const rawBase = options?.basePath ?? reportingConfig?.routeBase ?? '/reports';
|
|
85
|
+
const cleanBase = rawBase.startsWith('/') ? rawBase : `/${rawBase}`;
|
|
86
|
+
if (store.summaries().length === 0 && !store.isLoading()) {
|
|
87
|
+
store.loadSummaries().subscribe({
|
|
88
|
+
error: (err) => console.warn('[bways-report] Failed to load menu reports:', err)
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return computed(() => {
|
|
92
|
+
const allSummaries = store.summaries();
|
|
93
|
+
const visible = options?.includeDrafts
|
|
94
|
+
? allSummaries
|
|
95
|
+
: allSummaries.filter((s) => s.isPublished !== false);
|
|
96
|
+
return groupReportsByCategory(visible, cleanBase);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXJlcG9ydC1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvZW1iZWQvaW5qZWN0LXJlcG9ydC1tZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBbUJqRjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFpQztJQUNoRSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRSxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLGVBQWUsRUFBRSxTQUFTLElBQUksVUFBVSxDQUFDO0lBQzlFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNwRSxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFcEYsOERBQThEO0lBQzlELElBQUksS0FBSyxD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QWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRSxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLGVBQWUsRUFBRSxTQUFTLElBQUksVUFBVSxDQUFDO0lBQzlFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVwRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDekQsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUM5QixLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxDQUFDO1NBQ2pGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBb0IsR0FBRyxFQUFFO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsYUFBYTtZQUNwQyxDQUFDLENBQUMsWUFBWTtZQUNkLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBRXhELE9BQU8sc0JBQXNCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUkVQT1JUSU5HX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvcmUvdG9rZW5zL3JlcG9ydGluZy1jb25maWcudG9rZW4nO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGVyc2lzdGVuY2Uvc2VydmljZXMvcmVwb3J0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0TWVudUdyb3VwLCBSZXBvcnRNZW51SXRlbSB9IGZyb20gJy4uL3JvdXRpbmcvbW9kZWxzL3JlcG9ydC1yb3V0ZS5tb2RlbHMnO1xuaW1wb3J0IHsgZ3JvdXBSZXBvcnRzQnlDYXRlZ29yeSB9IGZyb20gJy4uL3JvdXRpbmcvc2VydmljZXMvcmVwb3J0LW1lbnUuc2VydmljZSc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGluamVjdFJlcG9ydE1lbnVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdFJlcG9ydE1lbnVPcHRpb25zIHtcbiAgLyoqXG4gICAqIEJhc2Ugcm91dGUgcGF0aCBmb3IgZ2VuZXJhdGVkIGxpbmtzLlxuICAgKiBEZWZhdWx0cyB0byBjb25maWd1cmVkIGByb3V0ZUJhc2VgIChlLmcuICdyZXBvcnRzJykgb3IgJy9yZXBvcnRzJy5cbiAgICovXG4gIGJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluY2x1ZGUgZHJhZnQvdW5wdWJsaXNoZWQgcmVwb3J0cy5cbiAgICogRGVmYXVsdDogZmFsc2UgKG9ubHkgcHVibGlzaGVkIHJlcG9ydHMgYXBwZWFyIGluIG1lbnVzKS5cbiAgICovXG4gIGluY2x1ZGVEcmFmdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEluamVjdHMgYSByZWFjdGl2ZSBzaWduYWwgb2YgcHVibGlzaGVkIHJlcG9ydCBtZW51IGl0ZW1zLlxuICpcbiAqIEF1dG9tYXRpY2FsbHkgdHJpZ2dlcnMgbG9hZGluZyBvZiByZXBvcnQgbWV0YWRhdGEgZnJvbSB0aGUgcGVyc2lzdGVuY2Ugc3RvcmUvZW5kcG9pbnRcbiAqIGlmIG5vdCBhbHJlYWR5IGxvYWRlZC5cbiAqXG4gKiBVc2FnZSBpbiBjb21wb25lbnQ6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsgLi4uIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwU2lkZWJhckNvbXBvbmVudCB7XG4gKiAgIHJlYWRvbmx5IHJlcG9ydE1lbnUgPSBpbmplY3RSZXBvcnRNZW51KCk7XG4gKiB9XG4gKiBgYGBcbiAqIFVzYWdlIGluIHRlbXBsYXRlOlxuICogYGBgaHRtbFxuICogQGZvciAoaXRlbSBvZiByZXBvcnRNZW51KCk7IHRyYWNrIGl0ZW0uc2x1Zykge1xuICogICA8YSBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlXCI+e3sgaXRlbS5uYW1lIH19PC9hPlxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXBvcnRNZW51KG9wdGlvbnM/OiBJbmplY3RSZXBvcnRNZW51T3B0aW9ucyk6IFNpZ25hbDxSZXBvcnRNZW51SXRlbVtdPiB7XG4gIGNvbnN0IHN0b3JlID0gaW5qZWN0KFJlcG9ydFN0b3JlU2VydmljZSk7XG4gIGNvbnN0IHJlcG9ydGluZ0NvbmZpZyA9IGluamVjdChSRVBPUlRJTkdfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHJhd0Jhc2UgPSBvcHRpb25zPy5iYXNlUGF0aCA/PyByZXBvcnRpbmdDb25maWc/LnJvdXRlQmFzZSA/PyAnL3JlcG9ydHMnO1xuICBjb25zdCBjbGVhbkJhc2UgPSByYXdCYXNlLnN0YXJ0c1dpdGgoJy8nKSA/IHJhd0Jhc2UgOiBgLyR7cmF3QmFzZX1gO1xuICBjb25zdCBub3JtYWxpemVkQmFzZSA9IGNsZWFuQmFzZS5lbmRzV2l0aCgnLycpID8gY2xlYW5CYXNlLnNsaWNlKDAsIC0xKSA6IGNsZWFuQmFzZTtcblxuICAvLyBUcmlnZ2VyIGluaXRpYWwgZmV0Y2ggaWYgc3RvcmUgaGFzIG5vdCBsb2FkZWQgc3VtbWFyaWVzIHlldFxuICBpZiAoc3RvcmUuc3VtbWFyaWVzKCkubGVuZ3RoID09PSAwICYmICFzdG9yZS5pc0xvYWRpbmcoKSkge1xuICAgIHN0b3JlLmxvYWRTdW1tYXJpZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgZXJyb3I6IChlcnIpID0+IGNvbnNvbGUud2FybignW2J3YXlzLXJlcG9ydF0gRmFpbGVkIHRvIGxvYWQgbWVudSByZXBvcnRzOicsIGVycilcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBjb21wdXRlZDxSZXBvcnRNZW51SXRlbVtdPigoKSA9PiB7XG4gICAgY29uc3QgYWxsU3VtbWFyaWVzID0gc3RvcmUuc3VtbWFyaWVzKCk7XG4gICAgY29uc3QgaW5jbHVkZURyYWZ0cyA9IG9wdGlvbnM/LmluY2x1ZGVEcmFmdHMgPT09IHRydWU7XG5cbiAgICBjb25zdCB2aXNpYmxlID0gaW5jbHVkZURyYWZ0c1xuICAgICAgPyBhbGxTdW1tYXJpZXNcbiAgICAgIDogYWxsU3VtbWFyaWVzLmZpbHRlcigocykgPT4gcy5pc1B1Ymxpc2hlZCAhPT0gZmFsc2UpO1xuXG4gICAgY29uc3QgaXRlbXM6IFJlcG9ydE1lbnVJdGVtW10gPSB2aXNpYmxlLm1hcCgocmVwb3J0KSA9PiB7XG4gICAgICBjb25zdCBjYXRlZ29yeSA9IHJlcG9ydC5tZW51R3JvdXAgfHwgcmVwb3J0LmNhdGVnb3J5IHx8ICdHZW5lcmFsJztcbiAgICAgIGNvbnN0IHNsdWcgPSByZXBvcnQuc2x1ZyB8fCByZXBvcnQuaWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVwb3J0LmlkLFxuICAgICAgICBjb2RlOiByZXBvcnQuaWQsXG4gICAgICAgIG5hbWU6IHJlcG9ydC5uYW1lLFxuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgc2x1ZyxcbiAgICAgICAgbWVudUdyb3VwOiByZXBvcnQubWVudUdyb3VwLFxuICAgICAgICBtZW51T3JkZXI6IHJlcG9ydC5tZW51T3JkZXIsXG4gICAgICAgIGljb246IHJlcG9ydC5pY29uLFxuICAgICAgICByb3V0ZTogYCR7bm9ybWFsaXplZEJhc2V9LyR7c2x1Z31gLFxuICAgICAgICBpc0RyYWZ0OiAhcmVwb3J0LmlzUHVibGlzaGVkLFxuICAgICAgICB2ZXJzaW9uOiByZXBvcnQudmVyc2lvbixcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGJ5IG1lbnVHcm91cC9jYXRlZ29yeSwgdGhlbiBieSBtZW51T3JkZXIsIHRoZW4gYnkgbmFtZVxuICAgIHJldHVybiBpdGVtcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBncm91cENvbXBhcmUgPSAoYS5tZW51R3JvdXAgfHwgYS5jYXRlZ29yeSkubG9jYWxlQ29tcGFyZShiLm1lbnVHcm91cCB8fCBiLmNhdGVnb3J5KTtcbiAgICAgIGlmIChncm91cENvbXBhcmUgIT09IDApIHJldHVybiBncm91cENvbXBhcmU7XG5cbiAgICAgIGlmIChhLm1lbnVPcmRlciAhPT0gdW5kZWZpbmVkICYmIGIubWVudU9yZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGEubWVudU9yZGVyIC0gYi5tZW51T3JkZXI7XG4gICAgICB9XG4gICAgICBpZiAoYS5tZW51T3JkZXIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIC0xO1xuICAgICAgaWYgKGIubWVudU9yZGVyICE9PSB1bmRlZmluZWQpIHJldHVybiAxO1xuXG4gICAgICByZXR1cm4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5qZWN0cyBhIHJlYWN0aXZlIHNpZ25hbCBvZiBwdWJsaXNoZWQgcmVwb3J0IG1lbnUgZ3JvdXBzIChoaWVyYXJjaGljYWwpLlxuICpcbiAqIFVzZWZ1bCBmb3Igc2lkZWJhcnMgdGhhdCBvcmdhbml6ZSByZXBvcnRzIHVuZGVyIGNvbGxhcHNpYmxlIGdyb3VwIGhlYWRpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmVwb3J0TWVudUdyb3VwcyhvcHRpb25zPzogSW5qZWN0UmVwb3J0TWVudU9wdGlvbnMpOiBTaWduYWw8UmVwb3J0TWVudUdyb3VwW10+IHtcbiAgY29uc3Qgc3RvcmUgPSBpbmplY3QoUmVwb3J0U3RvcmVTZXJ2aWNlKTtcbiAgY29uc3QgcmVwb3J0aW5nQ29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3QgcmF3QmFzZSA9IG9wdGlvbnM/LmJhc2VQYXRoID8/IHJlcG9ydGluZ0NvbmZpZz8ucm91dGVCYXNlID8/ICcvcmVwb3J0cyc7XG4gIGNvbnN0IGNsZWFuQmFzZSA9IHJhd0Jhc2Uuc3RhcnRzV2l0aCgnLycpID8gcmF3QmFzZSA6IGAvJHtyYXdCYXNlfWA7XG5cbiAgaWYgKHN0b3JlLnN1bW1hcmllcygpLmxlbmd0aCA9PT0gMCAmJiAhc3RvcmUuaXNMb2FkaW5nKCkpIHtcbiAgICBzdG9yZS5sb2FkU3VtbWFyaWVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIGVycm9yOiAoZXJyKSA9PiBjb25zb2xlLndhcm4oJ1tid2F5cy1yZXBvcnRdIEZhaWxlZCB0byBsb2FkIG1lbnUgcmVwb3J0czonLCBlcnIpXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29tcHV0ZWQ8UmVwb3J0TWVudUdyb3VwW10+KCgpID0+IHtcbiAgICBjb25zdCBhbGxTdW1tYXJpZXMgPSBzdG9yZS5zdW1tYXJpZXMoKTtcbiAgICBjb25zdCB2aXNpYmxlID0gb3B0aW9ucz8uaW5jbHVkZURyYWZ0c1xuICAgICAgPyBhbGxTdW1tYXJpZXNcbiAgICAgIDogYWxsU3VtbWFyaWVzLmZpbHRlcigocykgPT4gcy5pc1B1Ymxpc2hlZCAhPT0gZmFsc2UpO1xuXG4gICAgcmV0dXJuIGdyb3VwUmVwb3J0c0J5Q2F0ZWdvcnkodmlzaWJsZSwgY2xlYW5CYXNlKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -3,4 +3,5 @@ export * from './designer';
|
|
|
3
3
|
export * from './persistence';
|
|
4
4
|
export * from './routing';
|
|
5
5
|
export * from './export';
|
|
6
|
-
|
|
6
|
+
export * from './embed';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcnVudGltZSc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2lnbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vcGVyc2lzdGVuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vZW1iZWQnO1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { computed, inject, Injectable, signal, } from '@angular/core';
|
|
2
|
-
import { of, tap, throwError } from 'rxjs';
|
|
2
|
+
import { of, tap, throwError, switchMap, catchError } from 'rxjs';
|
|
3
3
|
import { ReportPersistenceAdapter } from '../../../data-access/contracts/report-persistence.contract';
|
|
4
4
|
import { SchemaValidatorService } from './schema-validator.service';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
@@ -34,11 +34,15 @@ export class ReportStoreService {
|
|
|
34
34
|
if (!this.adapter) {
|
|
35
35
|
return of(this.summaries());
|
|
36
36
|
}
|
|
37
|
+
const list$ = this.adapter.list();
|
|
38
|
+
if (!list$ || typeof list$.pipe !== 'function') {
|
|
39
|
+
return of(this.summaries());
|
|
40
|
+
}
|
|
37
41
|
this.isLoading.set(true);
|
|
38
42
|
this.error.set(null);
|
|
39
|
-
return
|
|
43
|
+
return list$.pipe(tap({
|
|
40
44
|
next: (list) => {
|
|
41
|
-
this.summaries.set(list);
|
|
45
|
+
this.summaries.set(list || []);
|
|
42
46
|
this.isLoading.set(false);
|
|
43
47
|
},
|
|
44
48
|
error: (err) => {
|
|
@@ -81,6 +85,35 @@ export class ReportStoreService {
|
|
|
81
85
|
},
|
|
82
86
|
}));
|
|
83
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Loads a report definition by slug or ID.
|
|
90
|
+
* Resolves from cache, loaded summaries, or adapter.
|
|
91
|
+
*/
|
|
92
|
+
loadReportBySlug(slugOrId, forceRefresh = false) {
|
|
93
|
+
const slugLower = slugOrId.toLowerCase().trim();
|
|
94
|
+
// 1. Check in-memory cache if not forcing refresh
|
|
95
|
+
if (!forceRefresh) {
|
|
96
|
+
for (const def of this.cache().values()) {
|
|
97
|
+
if (def.id.toLowerCase() === slugLower ||
|
|
98
|
+
(def.slug && def.slug.toLowerCase() === slugLower)) {
|
|
99
|
+
this.activeReportId.set(def.id);
|
|
100
|
+
return of(def);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// 2. Check existing summaries
|
|
105
|
+
const matchedSummary = this.summaries().find((s) => s.id.toLowerCase() === slugLower ||
|
|
106
|
+
(s.slug && s.slug.toLowerCase() === slugLower));
|
|
107
|
+
if (matchedSummary) {
|
|
108
|
+
return this.loadReport(matchedSummary.id, forceRefresh);
|
|
109
|
+
}
|
|
110
|
+
// 3. If not found in summaries, refresh summaries first or fallback to loadReport directly
|
|
111
|
+
return this.loadSummaries().pipe(switchMap((list) => {
|
|
112
|
+
const found = list.find((s) => s.id.toLowerCase() === slugLower ||
|
|
113
|
+
(s.slug && s.slug.toLowerCase() === slugLower));
|
|
114
|
+
return this.loadReport(found ? found.id : slugOrId, forceRefresh);
|
|
115
|
+
}), catchError(() => this.loadReport(slugOrId, forceRefresh)));
|
|
116
|
+
}
|
|
84
117
|
/**
|
|
85
118
|
* Saves a report definition, validates it, and updates local cache.
|
|
86
119
|
*/
|
|
@@ -161,8 +194,13 @@ export class ReportStoreService {
|
|
|
161
194
|
id: def.id,
|
|
162
195
|
name: def.name,
|
|
163
196
|
description: def.description,
|
|
197
|
+
category: def.category,
|
|
198
|
+
slug: def.slug ?? def.id,
|
|
199
|
+
menuGroup: def.menuGroup,
|
|
200
|
+
menuOrder: def.menuOrder,
|
|
201
|
+
icon: def.icon,
|
|
164
202
|
version: def.version,
|
|
165
|
-
isPublished: !def.metadata?.['isDraft'],
|
|
203
|
+
isPublished: def.isPublished ?? !def.metadata?.['isDraft'],
|
|
166
204
|
lastModified: new Date().toISOString(),
|
|
167
205
|
};
|
|
168
206
|
if (idx >= 0) {
|
|
@@ -180,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
180
218
|
type: Injectable,
|
|
181
219
|
args: [{ providedIn: 'root' }]
|
|
182
220
|
}] });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXN0b3JlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9wZXJzaXN0ZW5jZS9zZXJ2aWNlcy9yZXBvcnQtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUt2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEU7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUNaLE9BQU8sR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRCxTQUFTLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFNUQseUNBQXlDO0lBQ2hDLFNBQVMsR0FBRyxNQUFNLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBRWpELDhEQUE4RDtJQUM3QyxLQUFLLEdBQUcsTUFBTSxDQUFnQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFMUUsbUNBQW1DO0lBQzFCLGNBQWMsR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRXRELDhCQUE4QjtJQUNyQixTQUFTLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBRTVDLDRCQUE0QjtJQUNuQixLQUFLLEdBQUcsTUFBTSxDQUFnQixJQUFJLENBQUMsQ0FBQztJQUU3QyxtREFBbUQ7SUFDMUMsWUFBWSxHQUFHLFFBQVEsQ0FBMEIs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QjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRhcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUmVwb3J0RGVmaW5pdGlvbixcbiAgUmVwb3J0U3VtbWFyeSxcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIH0gZnJvbSAnLi4vLi4vLi4vZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5pbXBvcnQgeyBTY2hlbWFWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zY2hlbWEtdmFsaWRhdG9yLnNlcnZpY2UnO1xuXG4vKipcbiAqIFJlcG9ydFN0b3JlU2VydmljZSBtYW5hZ2VzIGFwcGxpY2F0aW9uLXdpZGUgY2FjaGVkIHJlcG9ydCBzdGF0ZXMsXG4gKiBsaXN0aW5nLCBhbmQgcmVhY3RpdmUgYWNjZXNzIHZpYSBBbmd1bGFyIHNpZ25hbHMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUmVwb3J0U3RvcmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGFwdGVyID0gaW5qZWN0KFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0b3IgPSBpbmplY3QoU2NoZW1hVmFsaWRhdG9yU2VydmljZSk7XG5cbiAgLyoqIExpc3Qgb2YgYWxsIGtub3duIHJlcG9ydCBzdW1tYXJpZXMgKi9cbiAgcmVhZG9ubHkgc3VtbWFyaWVzID0gc2lnbmFsPFJlcG9ydFN1bW1hcnlbXT4oW10pO1xuXG4gIC8qKiBJbi1tZW1vcnkgY2FjaGUgb2YgbG9hZGVkIGZ1bGwgcmVwb3J0IGRlZmluaXRpb25zIGJ5IElEICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBzaWduYWw8TWFwPHN0cmluZywgUmVwb3J0RGVmaW5pdGlvbj4+KG5ldyBNYXAoKSk7XG5cbiAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCByZXBvcnQgSUQgKi9cbiAgcmVhZG9ubHkgYWN0aXZlUmVwb3J0SWQgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIExvYWRpbmcgc3RhdGUgaW5kaWNhdG9yICovXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgLyoqIEN1cnJlbnQgZXJyb3IgbWVzc2FnZSAqL1xuICByZWFkb25seSBlcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAvKiogQWN0aXZlIHJlcG9ydCBkZWZpbml0aW9uIGNvbXB1dGVkIGZyb20gY2FjaGUgKi9cbiAgcmVhZG9ubHkgYWN0aXZlUmVwb3J0ID0gY29tcHV0ZWQ8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCBpZCA9IHRoaXMuYWN0aXZlUmVwb3J0SWQoKTtcbiAgICBpZiAoIWlkKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gdGhpcy5jYWNoZSgpLmdldChpZCkgPz8gbnVsbDtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSByZXBvcnRzLlxuICAgKi9cbiAgbG9hZFN1bW1hcmllcygpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5zdW1tYXJpZXMoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5saXN0KCkucGlwZShcbiAgICAgIHRhcCh7XG4gICAgICAgIG5leHQ6IChsaXN0KSA9PiB7XG4gICAgICAgICAgdGhpcy5zdW1tYXJpZXMuc2V0KGxpc3QpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/ICdGYWlsZWQgdG8gbG9hZCByZXBvcnQgbGlzdC4nKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgcmVwb3J0IGRlZmluaXRpb24gYnkgSUQsIHVzaW5nIGNhY2hlZCBpbnN0YW5jZSBpZiBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSByZXBvcnRJZCAtIElEIG9mIHRoZSByZXBvcnQgdG8gbG9hZC5cbiAgICogQHBhcmFtIGZvcmNlUmVmcmVzaCAtIElmIHRydWUsIGJ5cGFzc2VzIHRoZSBpbi1tZW1vcnkgY2FjaGUuXG4gICAqL1xuICBsb2FkUmVwb3J0KHJlcG9ydElkOiBzdHJpbmcsIGZvcmNlUmVmcmVzaCA9IGZhbHNlKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgaWYgKCFmb3JjZVJlZnJlc2gpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuY2FjaGUoKS5nZXQocmVwb3J0SWQpO1xuICAgICAgaWYgKGNhY2hlZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVJlcG9ydElkLnNldChyZXBvcnRJZCk7XG4gICAgICAgIHJldHVybiBvZihjYWNoZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1JlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciBub3QgY29uZmlndXJlZC4nKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5sb2FkKHJlcG9ydElkKS5waXBlKFxuICAgICAgdGFwKHtcbiAgICAgICAgbmV4dDogKGRlZikgPT4ge1xuICAgICAgICAgIHRoaXMudmFsaWRhdG9yLmFzc2VydFZhbGlkKGRlZik7XG4gICAgICAgICAgY29uc3QgbmV4dENhY2hlID0gbmV3IE1hcCh0aGlzLmNhY2hlKCkpO1xuICAgICAgICAgIG5leHRDYWNoZS5zZXQocmVwb3J0SWQsIGRlZik7XG4gICAgICAgICAgdGhpcy5jYWNoZS5zZXQobmV4dENhY2hlKTtcbiAgICAgICAgICB0aGlzLmFjdGl2ZVJlcG9ydElkLnNldChyZXBvcnRJZCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yLnNldChlcnI/Lm1lc3NhZ2UgPz8gYEZhaWxlZCB0byBsb2FkIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIuYCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBhIHJlcG9ydCBkZWZpbml0aW9uLCB2YWxpZGF0ZXMgaXQsIGFuZCB1cGRhdGVzIGxvY2FsIGNhY2hlLlxuICAgKi9cbiAgc2F2ZVJlcG9ydChyZXBvcnQ6IFJlcG9ydERlZmluaXRpb24pOiBPYnNlcnZhYmxlPFJlcG9ydERlZmluaXRpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRvci5hc3NlcnRWYWxpZChyZXBvcnQpO1xuXG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIC8vIEluLW1lbW9yeSB1cGRhdGUgaWYgbm8gYWRhcHRlciBjb25maWd1cmVkXG4gICAgICBjb25zdCBuZXh0Q2FjaGUgPSBuZXcgTWFwKHRoaXMuY2FjaGUoKSk7XG4gICAgICBuZXh0Q2FjaGUuc2V0KHJlcG9ydC5pZCwgcmVwb3J0KTtcbiAgICAgIHRoaXMuY2FjaGUuc2V0KG5leHRDYWNoZSk7XG4gICAgICB0aGlzLnVwZGF0ZVN1bW1hcnlJbkxpc3QocmVwb3J0KTtcbiAgICAgIHJldHVybiBvZihyZXBvcnQpO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2F2ZShyZXBvcnQpLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAoc2F2ZWQpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2FjaGUgPSBuZXcgTWFwKHRoaXMuY2FjaGUoKSk7XG4gICAgICAgICAgbmV4dENhY2hlLnNldChzYXZlZC5pZCwgc2F2ZWQpO1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KG5leHRDYWNoZSk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdW1tYXJ5SW5MaXN0KHNhdmVkKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KGVycj8ubWVzc2FnZSA/PyBgRmFpbGVkIHRvIHNhdmUgcmVwb3J0IFwiJHtyZXBvcnQuaWR9XCIuYCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgcmVwb3J0IGRlZmluaXRpb24gYnkgSUQuXG4gICAqL1xuICBkZWxldGVSZXBvcnQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICBjb25zdCBuZXh0Q2FjaGUgPSBuZXcgTWFwKHRoaXMuY2FjaGUoKSk7XG4gICAgICBuZXh0Q2FjaGUuZGVsZXRlKHJlcG9ydElkKTtcbiAgICAgIHRoaXMuY2FjaGUuc2V0KG5leHRDYWNoZSk7XG4gICAgICB0aGlzLnN1bW1hcmllcy5zZXQodGhpcy5zdW1tYXJpZXMoKS5maWx0ZXIoKHMpID0+IHMuaWQgIT09IHJlcG9ydElkKSk7XG4gICAgICBpZiAodGhpcy5hY3RpdmVSZXBvcnRJZCgpID09PSByZXBvcnRJZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZVJlcG9ydElkLnNldChudWxsKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmRlbGV0ZShyZXBvcnRJZCkucGlwZShcbiAgICAgIHRhcCh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2FjaGUgPSBuZXcgTWFwKHRoaXMuY2FjaGUoKSk7XG4gICAgICAgICAgbmV4dENhY2hlLmRlbGV0ZShyZXBvcnRJZCk7XG4gICAgICAgICAgdGhpcy5jYWNoZS5zZXQobmV4dENhY2hlKTtcbiAgICAgICAgICB0aGlzLnN1bW1hcmllcy5zZXQodGhpcy5zdW1tYXJpZXMoKS5maWx0ZXIoKHMpID0+IHMuaWQgIT09IHJlcG9ydElkKSk7XG4gICAgICAgICAgaWYgKHRoaXMuYWN0aXZlUmVwb3J0SWQoKSA9PT0gcmVwb3J0SWQpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlUmVwb3J0SWQuc2V0KG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KGVycj8ubWVzc2FnZSA/PyBgRmFpbGVkIHRvIGRlbGV0ZSByZXBvcnQgXCIke3JlcG9ydElkfVwiLmApO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIHJlcG9ydCBJRC5cbiAgICovXG4gIHNldEFjdGl2ZVJlcG9ydChpZDogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlUmVwb3J0SWQuc2V0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGluLW1lbW9yeSBjYWNoZS5cbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQobmV3IE1hcCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3VtbWFyeUluTGlzdChkZWY6IFJlcG9ydERlZmluaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gWy4uLnRoaXMuc3VtbWFyaWVzKCldO1xuICAgIGNvbnN0IGlkeCA9IGxpc3QuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBkZWYuaWQpO1xuICAgIGNvbnN0IHN1bW1hcnk6IFJlcG9ydFN1bW1hcnkgPSB7XG4gICAgICBpZDogZGVmLmlkLFxuICAgICAgbmFtZTogZGVmLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgdmVyc2lvbjogZGVmLnZlcnNpb24sXG4gICAgICBpc1B1Ymxpc2hlZDogIWRlZi5tZXRhZGF0YT8uWydpc0RyYWZ0J10sXG4gICAgICBsYXN0TW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICBsaXN0W2lkeF0gPSBzdW1tYXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnB1c2goc3VtbWFyeSk7XG4gICAgfVxuICAgIHRoaXMuc3VtbWFyaWVzLnNldChsaXN0KTtcbiAgfVxufVxuIl19
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXN0b3JlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9wZXJzaXN0ZW5jZS9zZXJ2aWNlcy9yZXBvcnQtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osT0FBTyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFNBQVMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU1RCx5Q0FBeUM7SUFDaEMsU0FBUyxHQUFHLE1BQU0sQ0FBa0IsRUFBRSxDQUFDLENBQUM7SUFFakQsOERBQThEO0lBQzdDLEtBQUssR0FBRyxNQUFNLENBQWdDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUUxRSxtQ0FBbUM7SUFDMUIsY0FBYyxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7SUFFdEQsOEJBQThCO0lBQ3JCLFNBQVMsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFNUMsNEJBQTRCO0lBQ25CLEtBQUssR0FBRyxNQUFNLENBQWdCLElBQUksQ0FBQyxDQUFDO0lBRTdDLG1EQUFtRDtJQUMxQyxZ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Y3QsXG4gIEluamVjdGFibGUsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGFwLCB0aHJvd0Vycm9yLCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFJlcG9ydERlZmluaXRpb24sXG4gIFJlcG9ydFN1bW1hcnksXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciB9IGZyb20gJy4uLy4uLy4uL2RhdGEtYWNjZXNzL2NvbnRyYWN0cy9yZXBvcnQtcGVyc2lzdGVuY2UuY29udHJhY3QnO1xuaW1wb3J0IHsgU2NoZW1hVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJy4vc2NoZW1hLXZhbGlkYXRvci5zZXJ2aWNlJztcblxuLyoqXG4gKiBSZXBvcnRTdG9yZVNlcnZpY2UgbWFuYWdlcyBhcHBsaWNhdGlvbi13aWRlIGNhY2hlZCByZXBvcnQgc3RhdGVzLFxuICogbGlzdGluZywgYW5kIHJlYWN0aXZlIGFjY2VzcyB2aWEgQW5ndWxhciBzaWduYWxzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJlcG9ydFN0b3JlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlciA9IGluamVjdChSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsaWRhdG9yID0gaW5qZWN0KFNjaGVtYVZhbGlkYXRvclNlcnZpY2UpO1xuXG4gIC8qKiBMaXN0IG9mIGFsbCBrbm93biByZXBvcnQgc3VtbWFyaWVzICovXG4gIHJlYWRvbmx5IHN1bW1hcmllcyA9IHNpZ25hbDxSZXBvcnRTdW1tYXJ5W10+KFtdKTtcblxuICAvKiogSW4tbWVtb3J5IGNhY2hlIG9mIGxvYWRlZCBmdWxsIHJlcG9ydCBkZWZpbml0aW9ucyBieSBJRCAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlID0gc2lnbmFsPE1hcDxzdHJpbmcsIFJlcG9ydERlZmluaXRpb24+PihuZXcgTWFwKCkpO1xuXG4gIC8qKiBDdXJyZW50bHkgc2VsZWN0ZWQgcmVwb3J0IElEICovXG4gIHJlYWRvbmx5IGFjdGl2ZVJlcG9ydElkID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIC8qKiBMb2FkaW5nIHN0YXRlIGluZGljYXRvciAqL1xuICByZWFkb25seSBpc0xvYWRpbmcgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8qKiBDdXJyZW50IGVycm9yIG1lc3NhZ2UgKi9cbiAgcmVhZG9ubHkgZXJyb3IgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgLyoqIEFjdGl2ZSByZXBvcnQgZGVmaW5pdGlvbiBjb21wdXRlZCBmcm9tIGNhY2hlICovXG4gIHJlYWRvbmx5IGFjdGl2ZVJlcG9ydCA9IGNvbXB1dGVkPFJlcG9ydERlZmluaXRpb24gfCBudWxsPigoKSA9PiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmFjdGl2ZVJlcG9ydElkKCk7XG4gICAgaWYgKCFpZCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoKS5nZXQoaWQpID8/IG51bGw7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcmVwb3J0cy5cbiAgICovXG4gIGxvYWRTdW1tYXJpZXMoKTogT2JzZXJ2YWJsZTxSZXBvcnRTdW1tYXJ5W10+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuIG9mKHRoaXMuc3VtbWFyaWVzKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGxpc3QkID0gdGhpcy5hZGFwdGVyLmxpc3QoKTtcbiAgICBpZiAoIWxpc3QkIHx8IHR5cGVvZiBsaXN0JC5waXBlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5zdW1tYXJpZXMoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuXG4gICAgcmV0dXJuIGxpc3QkLnBpcGUoXG4gICAgICB0YXAoe1xuICAgICAgICBuZXh0OiAobGlzdCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3VtbWFyaWVzLnNldChsaXN0IHx8IFtdKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3Iuc2V0KGVycj8ubWVzc2FnZSA/PyAnRmFpbGVkIHRvIGxvYWQgcmVwb3J0IGxpc3QuJyk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBhIHJlcG9ydCBkZWZpbml0aW9uIGJ5IElELCB1c2luZyBjYWNoZWQgaW5zdGFuY2UgaWYgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVwb3J0SWQgLSBJRCBvZiB0aGUgcmVwb3J0IHRvIGxvYWQuXG4gICAqIEBwYXJhbSBmb3JjZVJlZnJlc2ggLSBJZiB0cnVlLCBieXBhc3NlcyB0aGUgaW4tbWVtb3J5IGNhY2hlLlxuICAgKi9cbiAgbG9hZFJlcG9ydChyZXBvcnRJZDogc3RyaW5nLCBmb3JjZVJlZnJlc2ggPSBmYWxzZSk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj4ge1xuICAgIGlmICghZm9yY2VSZWZyZXNoKSB7XG4gICAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlKCkuZ2V0KHJlcG9ydElkKTtcbiAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVSZXBvcnRJZC5zZXQocmVwb3J0SWQpO1xuICAgICAgICByZXR1cm4gb2YoY2FjaGVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgbm90IGNvbmZpZ3VyZWQuJykpO1xuICAgIH1cblxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yLnNldChudWxsKTtcblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIubG9hZChyZXBvcnRJZCkucGlwZShcbiAgICAgIHRhcCh7XG4gICAgICAgIG5leHQ6IChkZWYpID0+IHtcbiAgICAgICAgICB0aGlzLnZhbGlkYXRvci5hc3NlcnRWYWxpZChkZWYpO1xuICAgICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAodGhpcy5jYWNoZSgpKTtcbiAgICAgICAgICBuZXh0Q2FjaGUuc2V0KHJlcG9ydElkLCBkZWYpO1xuICAgICAgICAgIHRoaXMuY2FjaGUuc2V0KG5leHRDYWNoZSk7XG4gICAgICAgICAgdGhpcy5hY3RpdmVSZXBvcnRJZC5zZXQocmVwb3J0SWQpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/IGBGYWlsZWQgdG8gbG9hZCByZXBvcnQgXCIke3JlcG9ydElkfVwiLmApO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSByZXBvcnQgZGVmaW5pdGlvbiBieSBzbHVnIG9yIElELlxuICAgKiBSZXNvbHZlcyBmcm9tIGNhY2hlLCBsb2FkZWQgc3VtbWFyaWVzLCBvciBhZGFwdGVyLlxuICAgKi9cbiAgbG9hZFJlcG9ydEJ5U2x1ZyhzbHVnT3JJZDogc3RyaW5nLCBmb3JjZVJlZnJlc2ggPSBmYWxzZSk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IHNsdWdMb3dlciA9IHNsdWdPcklkLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXG4gICAgLy8gMS4gQ2hlY2sgaW4tbWVtb3J5IGNhY2hlIGlmIG5vdCBmb3JjaW5nIHJlZnJlc2hcbiAgICBpZiAoIWZvcmNlUmVmcmVzaCkge1xuICAgICAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5jYWNoZSgpLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkZWYuaWQudG9Mb3dlckNhc2UoKSA9PT0gc2x1Z0xvd2VyIHx8XG4gICAgICAgICAgKGRlZi5zbHVnICYmIGRlZi5zbHVnLnRvTG93ZXJDYXNlKCkgPT09IHNsdWdMb3dlcilcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVSZXBvcnRJZC5zZXQoZGVmLmlkKTtcbiAgICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDIuIENoZWNrIGV4aXN0aW5nIHN1bW1hcmllc1xuICAgIGNvbnN0IG1hdGNoZWRTdW1tYXJ5ID0gdGhpcy5zdW1tYXJpZXMoKS5maW5kKFxuICAgICAgKHMpID0+XG4gICAgICAgIHMuaWQudG9Mb3dlckNhc2UoKSA9PT0gc2x1Z0xvd2VyIHx8XG4gICAgICAgIChzLnNsdWcgJiYgcy5zbHVnLnRvTG93ZXJDYXNlKCkgPT09IHNsdWdMb3dlcilcbiAgICApO1xuXG4gICAgaWYgKG1hdGNoZWRTdW1tYXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2FkUmVwb3J0KG1hdGNoZWRTdW1tYXJ5LmlkLCBmb3JjZVJlZnJlc2gpO1xuICAgIH1cblxuICAgIC8vIDMuIElmIG5vdCBmb3VuZCBpbiBzdW1tYXJpZXMsIHJlZnJlc2ggc3VtbWFyaWVzIGZpcnN0IG9yIGZhbGxiYWNrIHRvIGxvYWRSZXBvcnQgZGlyZWN0bHlcbiAgICByZXR1cm4gdGhpcy5sb2FkU3VtbWFyaWVzKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgobGlzdCkgPT4ge1xuICAgICAgICBjb25zdCBmb3VuZCA9IGxpc3QuZmluZChcbiAgICAgICAgICAocykgPT5cbiAgICAgICAgICAgIHMuaWQudG9Mb3dlckNhc2UoKSA9PT0gc2x1Z0xvd2VyIHx8XG4gICAgICAgICAgICAocy5zbHVnICYmIHMuc2x1Zy50b0xvd2VyQ2FzZSgpID09PSBzbHVnTG93ZXIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRSZXBvcnQoZm91bmQgPyBmb3VuZC5pZCA6IHNsdWdPcklkLCBmb3JjZVJlZnJlc2gpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IHRoaXMubG9hZFJlcG9ydChzbHVnT3JJZCwgZm9yY2VSZWZyZXNoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGEgcmVwb3J0IGRlZmluaXRpb24sIHZhbGlkYXRlcyBpdCwgYW5kIHVwZGF0ZXMgbG9jYWwgY2FjaGUuXG4gICAqL1xuICBzYXZlUmVwb3J0KHJlcG9ydDogUmVwb3J0RGVmaW5pdGlvbik6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj4ge1xuICAgIHRoaXMudmFsaWRhdG9yLmFzc2VydFZhbGlkKHJlcG9ydCk7XG5cbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgLy8gSW4tbWVtb3J5IHVwZGF0ZSBpZiBubyBhZGFwdGVyIGNvbmZpZ3VyZWRcbiAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAodGhpcy5jYWNoZSgpKTtcbiAgICAgIG5leHRDYWNoZS5zZXQocmVwb3J0LmlkLCByZXBvcnQpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQobmV4dENhY2hlKTtcbiAgICAgIHRoaXMudXBkYXRlU3VtbWFyeUluTGlzdChyZXBvcnQpO1xuICAgICAgcmV0dXJuIG9mKHJlcG9ydCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5zYXZlKHJlcG9ydCkucGlwZShcbiAgICAgIHRhcCh7XG4gICAgICAgIG5leHQ6IChzYXZlZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAodGhpcy5jYWNoZSgpKTtcbiAgICAgICAgICBuZXh0Q2FjaGUuc2V0KHNhdmVkLmlkLCBzYXZlZCk7XG4gICAgICAgICAgdGhpcy5jYWNoZS5zZXQobmV4dENhY2hlKTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN1bW1hcnlJbkxpc3Qoc2F2ZWQpO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/IGBGYWlsZWQgdG8gc2F2ZSByZXBvcnQgXCIke3JlcG9ydC5pZH1cIi5gKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSByZXBvcnQgZGVmaW5pdGlvbiBieSBJRC5cbiAgICovXG4gIGRlbGV0ZVJlcG9ydChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAodGhpcy5jYWNoZSgpKTtcbiAgICAgIG5leHRDYWNoZS5kZWxldGUocmVwb3J0SWQpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQobmV4dENhY2hlKTtcbiAgICAgIHRoaXMuc3VtbWFyaWVzLnNldCh0aGlzLnN1bW1hcmllcygpLmZpbHRlcigocykgPT4gcy5pZCAhPT0gcmVwb3J0SWQpKTtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZVJlcG9ydElkKCkgPT09IHJlcG9ydElkKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlUmVwb3J0SWQuc2V0KG51bGwpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsZXRlKHJlcG9ydElkKS5waXBlKFxuICAgICAgdGFwKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHRDYWNoZSA9IG5ldyBNYXAodGhpcy5jYWNoZSgpKTtcbiAgICAgICAgICBuZXh0Q2FjaGUuZGVsZXRlKHJlcG9ydElkKTtcbiAgICAgICAgICB0aGlzLmNhY2hlLnNldChuZXh0Q2FjaGUpO1xuICAgICAgICAgIHRoaXMuc3VtbWFyaWVzLnNldCh0aGlzLnN1bW1hcmllcygpLmZpbHRlcigocykgPT4gcy5pZCAhPT0gcmVwb3J0SWQpKTtcbiAgICAgICAgICBpZiAodGhpcy5hY3RpdmVSZXBvcnRJZCgpID09PSByZXBvcnRJZCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVSZXBvcnRJZC5zZXQobnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvci5zZXQoZXJyPy5tZXNzYWdlID8/IGBGYWlsZWQgdG8gZGVsZXRlIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIuYCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgcmVwb3J0IElELlxuICAgKi9cbiAgc2V0QWN0aXZlUmVwb3J0KGlkOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVSZXBvcnRJZC5zZXQoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgaW4tbWVtb3J5IGNhY2hlLlxuICAgKi9cbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLnNldChuZXcgTWFwKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdW1tYXJ5SW5MaXN0KGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGxpc3QgPSBbLi4udGhpcy5zdW1tYXJpZXMoKV07XG4gICAgY29uc3QgaWR4ID0gbGlzdC5maW5kSW5kZXgoKHMpID0+IHMuaWQgPT09IGRlZi5pZCk7XG4gICAgY29uc3Qgc3VtbWFyeTogUmVwb3J0U3VtbWFyeSA9IHtcbiAgICAgIGlkOiBkZWYuaWQsXG4gICAgICBuYW1lOiBkZWYubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZWYuZGVzY3JpcHRpb24sXG4gICAgICBjYXRlZ29yeTogZGVmLmNhdGVnb3J5LFxuICAgICAgc2x1ZzogZGVmLnNsdWcgPz8gZGVmLmlkLFxuICAgICAgbWVudUdyb3VwOiBkZWYubWVudUdyb3VwLFxuICAgICAgbWVudU9yZGVyOiBkZWYubWVudU9yZGVyLFxuICAgICAgaWNvbjogZGVmLmljb24sXG4gICAgICB2ZXJzaW9uOiBkZWYudmVyc2lvbixcbiAgICAgIGlzUHVibGlzaGVkOiBkZWYuaXNQdWJsaXNoZWQgPz8gIWRlZi5tZXRhZGF0YT8uWydpc0RyYWZ0J10sXG4gICAgICBsYXN0TW9kaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICB9O1xuXG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICBsaXN0W2lkeF0gPSBzdW1tYXJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnB1c2goc3VtbWFyeSk7XG4gICAgfVxuICAgIHRoaXMuc3VtbWFyaWVzLnNldChsaXN0KTtcbiAgfVxufVxuIl19
|
|
@@ -25,9 +25,9 @@ export class RoutedReportRuntimeComponent {
|
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
27
|
// Otherwise fallback to resolving via paramMap
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
30
|
-
this.store.
|
|
28
|
+
const identifier = this.route.snapshot.paramMap.get('slug') ?? this.route.snapshot.paramMap.get('reportId');
|
|
29
|
+
if (identifier) {
|
|
30
|
+
this.store.loadReportBySlug(identifier)
|
|
31
31
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
32
32
|
.subscribe({
|
|
33
33
|
next: (rep) => {
|
|
@@ -160,4 +160,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
160
160
|
</div>
|
|
161
161
|
`, styles: [".rpt-routed-container{display:flex;flex-direction:column;gap:var(--rpt-space-md, 16px);width:100%;min-height:100%;box-sizing:border-box;padding:var(--rpt-space-md, 16px)}.rpt-routed-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--rpt-space-sm, 8px);border-bottom:1px solid var(--rpt-border-color, #e2e8f0)}.rpt-routed-title-row{display:flex;align-items:center;gap:12px}.rpt-routed-title{font-size:1.25rem;font-weight:700;color:var(--rpt-text-color, #0f172a);margin:0}.rpt-routed-version{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:9999px;background:var(--rpt-bg-subtle, #f1f5f9);color:var(--rpt-text-muted, #64748b)}.rpt-routed-loading,.rpt-routed-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--rpt-text-muted, #64748b)}.rpt-error-card{background:var(--rpt-surface-bg, #ffffff);border:1px solid var(--rpt-border-color, #e2e8f0);border-radius:var(--rpt-radius-md, 8px);padding:32px 40px;box-shadow:var(--rpt-shadow-sm, 0 1px 3px rgba(0,0,0,.05))}.rpt-error-card h3{color:var(--rpt-error-color, #ef4444);margin-top:0}.rpt-spinner{width:36px;height:36px;border:3px solid var(--rpt-border-color, #e2e8f0);border-top-color:var(--rpt-primary, #2563eb);border-radius:50%;animation:rpt-spin .8s linear infinite;margin-bottom:12px}@keyframes rpt-spin{to{transform:rotate(360deg)}}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;border-radius:var(--rpt-radius-md, 6px);cursor:pointer;border:1px solid transparent;transition:all .15s ease}.rpt-btn-sm{padding:5px 10px;font-size:.8125rem}.rpt-btn-primary{background:var(--rpt-primary, #2563eb);color:#fff}.rpt-btn-primary:hover{background:var(--rpt-primary-hover, #1d4ed8)}.rpt-btn-secondary{background:var(--rpt-surface-bg, #ffffff);color:var(--rpt-text-color, #1e293b);border-color:var(--rpt-border-color, #cbd5e1)}.rpt-btn-secondary:hover{background:var(--rpt-bg-subtle, #f8fafc)}.rpt-btn-ghost{background:transparent;color:var(--rpt-text-muted, #64748b)}.rpt-btn-ghost:hover{color:var(--rpt-text-color, #1e293b);background:var(--rpt-bg-subtle, #f1f5f9)}\n"] }]
|
|
162
162
|
}] });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFHVixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFxTDFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQy9DLE9BQU8sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUV6QyxRQUFRO1FBQ04scUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTthQUNaLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEIsT0FBTztZQUNULENBQUM7WUFFRCwrQ0FBK0M7WUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5RCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztxQkFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDekMsU0FBUyxDQUFDO29CQUNULElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztvQkFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO3dCQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsQ0FBQztpQkFDRixDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQTRCO1FBQzNDLGtEQUFrRDtJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBdkRVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLDhFQTlLN0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCx5dkVBbERTLFlBQVksOEJBQUUsWUFBWSwrQkFBRSxzQkFBc0IsaVVBQUUsZ0JBQWdCOzs0RkFnTG5FLDRCQUE0QjtrQkFuTHhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLENBQUMsbUJBQzlELHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIE9uSW5pdCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2Uvc2VydmljZXMvcmVwb3J0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0UnVudGltZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3J1bnRpbWUvcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50JztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wcmltaXRpdmVzL2NvbXBvbmVudHMvaWNvbi9ycHQtaWNvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdycHQtcm91dGVkLXJ1bnRpbWUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFJlcG9ydFJ1bnRpbWVDb21wb25lbnQsIFJwdEljb25Db21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC1jb250YWluZXJcIj5cbiAgICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWxvYWRpbmdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICA8cD5Mb2FkaW5nIHJlcG9ydCBkZWZpbml0aW9uLi4uPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH0gQGVsc2UgaWYgKHJlcG9ydCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLXRpdGxlLXJvd1wiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tZ2hvc3QgcnB0LWJ0bi1zbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgICAgICAgIHRpdGxlPVwiR28gYmFja1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwiYXJyb3ctbGVmdFwiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+QmFjazwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGgxIGNsYXNzPVwicnB0LXJvdXRlZC10aXRsZVwiPnt7IHJlcG9ydCgpPy5uYW1lIH19PC9oMT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicnB0LXJvdXRlZC12ZXJzaW9uXCI+dnt7IHJlcG9ydCgpPy52ZXJzaW9uID8/IDEgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKGNhbkVkaXQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tc2Vjb25kYXJ5IHJwdC1idG4tc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdFJlcG9ydCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJwdC1pY29uIG5hbWU9XCJzZXR0aW5nc1wiIFtzaXplXT1cIjE0XCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+RWRpdCBSZXBvcnQ8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxycHQtcnVudGltZSBbcmVwb3J0XT1cInJlcG9ydCgpIVwiIChleGVjdXRlKT1cIm9uUmVwb3J0RXhlY3V0ZWQoJGV2ZW50KVwiIC8+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1yb3V0ZWQtZXJyb3JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWVycm9yLWNhcmRcIj5cbiAgICAgICAgICAgIDxoMz5SZXBvcnQgTm90IEZvdW5kPC9oMz5cbiAgICAgICAgICAgIDxwPlRoZSByZXF1ZXN0ZWQgcmVwb3J0IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBoYXMgbm90IGJlZW4gcHVibGlzaGVkIHlldC48L3A+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJwdC1idG4gcnB0LWJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICAgIFJldHVybiB0byBQcmV2aW91cyBQYWdlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAucnB0LXJvdXRlZC1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBnYXA6IHZhcigtLXJwdC1zcGFjZS1tZCwgMTZweCk7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcGFkZGluZzogdmFyKC0tcnB0LXNwYWNlLW1kLCAxNnB4KTtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC1oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tcnB0LXNwYWNlLXNtLCA4cHgpO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJwdC1ib3JkZXItY29sb3IsICNlMmU4ZjApO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLXRpdGxlLXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGdhcDogMTJweDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMGYxNzJhKTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC12ZXJzaW9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogOTk5OXB4O1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LWJnLXN1YnRsZSwgI2YxZjVmOSk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtcm91dGVkLWxvYWRpbmcsXG4gICAgLnJwdC1yb3V0ZWQtZXJyb3Ige1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiA2MHB4IDIwcHg7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtbXV0ZWQsICM2NDc0OGIpO1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItY2FyZCB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1yYWRpdXMtbWQsIDhweCk7XG4gICAgICBwYWRkaW5nOiAzMnB4IDQwcHg7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtc2hhZG93LXNtLCAwIDFweCAzcHggcmdiYSgwLDAsMCwwLjA1KSk7XG4gICAgfVxuXG4gICAgLnJwdC1lcnJvci1jYXJkIGgzIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtZXJyb3ItY29sb3IsICNlZjQ0NDQpO1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAucnB0LXNwaW5uZXIge1xuICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLXJwdC1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGFuaW1hdGlvbjogcnB0LXNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgcnB0LXNwaW4ge1xuICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9XG4gICAgfVxuXG4gICAgLnJwdC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtcmFkaXVzLW1kLCA2cHgpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1zbSB7XG4gICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgfVxuICAgIC5ycHQtYnRuLXByaW1hcnk6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtc3VyZmFjZS1iZywgI2ZmZmZmZik7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LXRleHQtY29sb3IsICMxZTI5M2IpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjY2JkNWUxKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2Vjb25kYXJ5OmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmOGZhZmMpO1xuICAgIH1cblxuICAgIC5ycHQtYnRuLWdob3N0IHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICB9XG4gICAgLnJwdC1idG4tZ2hvc3Q6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmMWY1ZjkpO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgUm91dGVkUmVwb3J0UnVudGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KFJlcG9ydFN0b3JlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSByZXBvcnQgPSBzaWduYWw8UmVwb3J0RGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBjYW5FZGl0ID0gc2lnbmFsPGJvb2xlYW4+KHRydWUpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHJvdXRlIHJlc29sdmVkIHRoZSByZXBvcnRcbiAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSAmJiBkYXRhWydyZXBvcnQnXSkge1xuICAgICAgICAgIHRoaXMucmVwb3J0LnNldChkYXRhWydyZXBvcnQnXSk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3RoZXJ3aXNlIGZhbGxiYWNrIHRvIHJlc29sdmluZyB2aWEgcGFyYW1NYXBcbiAgICAgICAgY29uc3QgcmVwb3J0SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgncmVwb3J0SWQnKTtcbiAgICAgICAgaWYgKHJlcG9ydElkKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZS5sb2FkUmVwb3J0KHJlcG9ydElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChyZXApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRFeGVjdXRlZChmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgLy8gSG9zdCBjYW4gb2JzZXJ2ZSBvciBoYW5kbGUgZXhlY3V0aW9ucyBpZiBuZWVkZWRcbiAgfVxuXG4gIGVkaXRSZXBvcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVwID0gdGhpcy5yZXBvcnQoKTtcbiAgICBpZiAocmVwKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2VkaXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVkLXJlcG9ydC1ydW50aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL3JvdXRpbmcvY29tcG9uZW50cy9yb3V0ZWQtcmVwb3J0LXJ1bnRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFHVixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFxTDFGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdEIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxNQUFNLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQy9DLE9BQU8sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxHQUFHLE1BQU0sQ0FBVSxJQUFJLENB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ICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBEZXN0cm95UmVmLFxuICBPbkluaXQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzJztcbmltcG9ydCB7IFJlcG9ydFN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uL3BlcnNpc3RlbmNlL3NlcnZpY2VzL3JlcG9ydC1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydFJ1bnRpbWVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9ydW50aW1lL3JlcG9ydC1ydW50aW1lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBScHRJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vcHJpbWl0aXZlcy9jb21wb25lbnRzL2ljb24vcnB0LWljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LXJvdXRlZC1ydW50aW1lJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUm91dGVyTW9kdWxlLCBSZXBvcnRSdW50aW1lQ29tcG9uZW50LCBScHRJY29uQ29tcG9uZW50XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJwdC1yb3V0ZWQtY29udGFpbmVyXCI+XG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC1sb2FkaW5nXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1zcGlubmVyXCI+PC9kaXY+XG4gICAgICAgICAgPHA+TG9hZGluZyByZXBvcnQgZGVmaW5pdGlvbi4uLjwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIGlmIChyZXBvcnQoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC1oZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LXJvdXRlZC10aXRsZS1yb3dcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicnB0LWJ0biBycHQtYnRuLWdob3N0IHJwdC1idG4tc21cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICAgICAgICB0aXRsZT1cIkdvIGJhY2tcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cnB0LWljb24gbmFtZT1cImFycm93LWxlZnRcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPkJhY2s8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxoMSBjbGFzcz1cInJwdC1yb3V0ZWQtdGl0bGVcIj57eyByZXBvcnQoKT8ubmFtZSB9fTwvaDE+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJwdC1yb3V0ZWQtdmVyc2lvblwiPnZ7eyByZXBvcnQoKT8udmVyc2lvbiA/PyAxIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgQGlmIChjYW5FZGl0KCkpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicnB0LWJ0biBycHQtYnRuLXNlY29uZGFyeSBycHQtYnRuLXNtXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRSZXBvcnQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxycHQtaWNvbiBuYW1lPVwic2V0dGluZ3NcIiBbc2l6ZV09XCIxNFwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuPkVkaXQgUmVwb3J0PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8cnB0LXJ1bnRpbWUgW3JlcG9ydF09XCJyZXBvcnQoKSFcIiAoZXhlY3V0ZSk9XCJvblJlcG9ydEV4ZWN1dGVkKCRldmVudClcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJycHQtcm91dGVkLWVycm9yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJwdC1lcnJvci1jYXJkXCI+XG4gICAgICAgICAgICA8aDM+UmVwb3J0IE5vdCBGb3VuZDwvaDM+XG4gICAgICAgICAgICA8cD5UaGUgcmVxdWVzdGVkIHJlcG9ydCBjb3VsZCBub3QgYmUgZm91bmQgb3IgaGFzIG5vdCBiZWVuIHB1Ymxpc2hlZCB5ZXQuPC9wPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJycHQtYnRuIHJwdC1idG4tcHJpbWFyeVwiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAgICBSZXR1cm4gdG8gUHJldmlvdXMgUGFnZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtgXG4gICAgLnJwdC1yb3V0ZWQtY29udGFpbmVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZ2FwOiB2YXIoLS1ycHQtc3BhY2UtbWQsIDE2cHgpO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBhZGRpbmc6IHZhcigtLXJwdC1zcGFjZS1tZCwgMTZweCk7XG4gICAgfVxuXG4gICAgLnJwdC1yb3V0ZWQtaGVhZGVyIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXJwdC1zcGFjZS1zbSwgOHB4KTtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ycHQtYm9yZGVyLWNvbG9yLCAjZTJlOGYwKTtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC10aXRsZS1yb3cge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBnYXA6IDEycHg7XG4gICAgfVxuXG4gICAgLnJwdC1yb3V0ZWQtdGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtdGV4dC1jb2xvciwgIzBmMTcyYSk7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLnJwdC1yb3V0ZWQtdmVyc2lvbiB7XG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgcGFkZGluZzogMnB4IDhweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDk5OTlweDtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1iZy1zdWJ0bGUsICNmMWY1ZjkpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICB9XG5cbiAgICAucnB0LXJvdXRlZC1sb2FkaW5nLFxuICAgIC5ycHQtcm91dGVkLWVycm9yIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgcGFkZGluZzogNjBweCAyMHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LW11dGVkLCAjNjQ3NDhiKTtcbiAgICB9XG5cbiAgICAucnB0LWVycm9yLWNhcmQge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXN1cmZhY2UtYmcsICNmZmZmZmYpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnB0LWJvcmRlci1jb2xvciwgI2UyZThmMCk7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ycHQtcmFkaXVzLW1kLCA4cHgpO1xuICAgICAgcGFkZGluZzogMzJweCA0MHB4O1xuICAgICAgYm94LXNoYWRvdzogdmFyKC0tcnB0LXNoYWRvdy1zbSwgMCAxcHggM3B4IHJnYmEoMCwwLDAsMC4wNSkpO1xuICAgIH1cblxuICAgIC5ycHQtZXJyb3ItY2FyZCBoMyB7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWVycm9yLWNvbG9yLCAjZWY0NDQ0KTtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLnJwdC1zcGlubmVyIHtcbiAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tcnB0LWJvcmRlci1jb2xvciwgI2UyZThmMCk7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1ycHQtcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBhbmltYXRpb246IHJwdC1zcGluIDAuOHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIHJwdC1zcGluIHtcbiAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxuICAgIH1cblxuICAgIC5ycHQtYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBwYWRkaW5nOiA4cHggMTRweDtcbiAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LXJhZGl1cy1tZCwgNnB4KTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG4gICAgfVxuXG4gICAgLnJwdC1idG4tc20ge1xuICAgICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1wcmltYXJ5IHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIH1cbiAgICAucnB0LWJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXJwdC1wcmltYXJ5LWhvdmVyLCAjMWQ0ZWQ4KTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1zZWNvbmRhcnkge1xuICAgICAgYmFja2dyb3VuZDogdmFyKC0tcnB0LXN1cmZhY2UtYmcsICNmZmZmZmYpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC10ZXh0LWNvbG9yLCAjMWUyOTNiKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWJvcmRlci1jb2xvciwgI2NiZDVlMSk7XG4gICAgfVxuICAgIC5ycHQtYnRuLXNlY29uZGFyeTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtYmctc3VidGxlLCAjZjhmYWZjKTtcbiAgICB9XG5cbiAgICAucnB0LWJ0bi1naG9zdCB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtdGV4dC1tdXRlZCwgIzY0NzQ4Yik7XG4gICAgfVxuICAgIC5ycHQtYnRuLWdob3N0OmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtdGV4dC1jb2xvciwgIzFlMjkzYik7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ycHQtYmctc3VidGxlLCAjZjFmNWY5KTtcbiAgICB9XG4gIGBdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlZFJlcG9ydFJ1bnRpbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IGluamVjdChSZXBvcnRTdG9yZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcmVhZG9ubHkgcmVwb3J0ID0gc2lnbmFsPFJlcG9ydERlZmluaXRpb24gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcbiAgcmVhZG9ubHkgY2FuRWRpdCA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiByb3V0ZSByZXNvbHZlZCB0aGUgcmVwb3J0XG4gICAgdGhpcy5yb3V0ZS5kYXRhXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YVsncmVwb3J0J10pIHtcbiAgICAgICAgICB0aGlzLnJlcG9ydC5zZXQoZGF0YVsncmVwb3J0J10pO1xuICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjayB0byByZXNvbHZpbmcgdmlhIHBhcmFtTWFwXG4gICAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnc2x1ZycpID8/IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdyZXBvcnRJZCcpO1xuICAgICAgICBpZiAoaWRlbnRpZmllcikge1xuICAgICAgICAgIHRoaXMuc3RvcmUubG9hZFJlcG9ydEJ5U2x1ZyhpZGVudGlmaWVyKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgbmV4dDogKHJlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChyZXApO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0LnNldChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgb25SZXBvcnRFeGVjdXRlZChmaWx0ZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgLy8gSG9zdCBjYW4gb2JzZXJ2ZSBvciBoYW5kbGUgZXhlY3V0aW9ucyBpZiBuZWVkZWRcbiAgfVxuXG4gIGVkaXRSZXBvcnQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVwID0gdGhpcy5yZXBvcnQoKTtcbiAgICBpZiAocmVwKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2VkaXQnXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdvQmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4uLyddLCB7IHJlbGF0aXZlVG86IHRoaXMucm91dGUgfSk7XG4gIH1cbn1cbiJdfQ==
|