bways-report 0.1.5 → 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 +291 -422
- 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/index.mjs +2 -1
- package/esm2022/lib/core/services/report-data-discovery.service.mjs +138 -0
- 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/identifier-humanizer.mjs +15 -4
- 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 +20 -30
- 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 +71 -13
- 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 +403 -222
- package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +41 -34
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +142 -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 +154 -5
- 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/property-editor/property-editor.component.mjs +112 -39
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +204 -10
- package/esm2022/lib/features/designer/designer.component.mjs +44 -3
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +70 -3
- 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 +121 -15
- package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +28 -5
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +113 -20
- 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 +156 -11
- package/fesm2022/bways-report.mjs +5703 -1766
- 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/index.d.ts +1 -0
- package/lib/core/services/report-data-discovery.service.d.ts +38 -0
- package/lib/core/services/report-session-context.service.d.ts +1 -0
- package/lib/core/tokens/reporting-config.token.d.ts +18 -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/http-lookup.adapter.d.ts +2 -1
- 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 +6 -2
- 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 +6 -0
- package/lib/features/designer/components/property-editor/property-editor-action.component.d.ts +3 -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 +41 -1
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +19 -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/designer/services/designer-state.service.d.ts +12 -1
- 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 +8 -59
- package/lib/primitives/components/button/rpt-button.component.d.ts +3 -0
- package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +18 -2
- 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 +28 -6
- package/package.json +1 -1
|
@@ -7,6 +7,19 @@ export class RptButtonComponent {
|
|
|
7
7
|
onAction = input();
|
|
8
8
|
actionTriggered = output();
|
|
9
9
|
elementId = computed(() => this.config().id);
|
|
10
|
+
showFieldLabel = computed(() => {
|
|
11
|
+
return this.config().properties?.['showLabel'] === true && !!this.config().properties?.['fieldLabel'];
|
|
12
|
+
});
|
|
13
|
+
fieldLabel = computed(() => {
|
|
14
|
+
return this.config().properties?.['fieldLabel'] || '';
|
|
15
|
+
});
|
|
16
|
+
hasLabelSpacer = computed(() => {
|
|
17
|
+
if (this.showFieldLabel())
|
|
18
|
+
return false;
|
|
19
|
+
if (this.config().properties?.['alignWithInputs'] === false)
|
|
20
|
+
return false;
|
|
21
|
+
return true;
|
|
22
|
+
});
|
|
10
23
|
buttonLabel = computed(() => this.config().label || this.config().properties?.['text'] || 'Submit');
|
|
11
24
|
buttonHtmlType = computed(() => {
|
|
12
25
|
const action = this.config().properties?.['action'];
|
|
@@ -61,7 +74,12 @@ export class RptButtonComponent {
|
|
|
61
74
|
}
|
|
62
75
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
63
76
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RptButtonComponent, isStandalone: true, selector: "rpt-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: false, transformFunction: null }, onAction: { classPropertyName: "onAction", publicName: "onAction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionTriggered: "actionTriggered" }, ngImport: i0, template: `
|
|
64
|
-
<div class="rpt-button-container">
|
|
77
|
+
<div class="rpt-button-container" [class.has-label-spacer]="hasLabelSpacer()">
|
|
78
|
+
@if (showFieldLabel()) {
|
|
79
|
+
<label [for]="elementId()" class="rpt-label">{{ fieldLabel() }}</label>
|
|
80
|
+
} @else if (hasLabelSpacer()) {
|
|
81
|
+
<div class="rpt-button-label-spacer" aria-hidden="true"> </div>
|
|
82
|
+
}
|
|
65
83
|
<button
|
|
66
84
|
[id]="elementId()"
|
|
67
85
|
[type]="buttonHtmlType()"
|
|
@@ -78,12 +96,17 @@ export class RptButtonComponent {
|
|
|
78
96
|
<span>{{ buttonLabel() }}</span>
|
|
79
97
|
</button>
|
|
80
98
|
</div>
|
|
81
|
-
`, isInline: true, styles: [":host{display:block;width:100%;
|
|
99
|
+
`, isInline: true, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-button-container{display:flex;flex-direction:column;justify-content:flex-start;width:100%;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0;line-height:1.3;margin-bottom:4px}.rpt-button-label-spacer{height:16px;margin-bottom:4px;font-size:var(--rpt-font-size-sm, .75rem);line-height:1.3;-webkit-user-select:none;user-select:none;visibility:hidden;flex-shrink:0}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;width:auto;max-width:100%;box-sizing:border-box;padding:0 20px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border-radius:var(--rpt-border-radius, 6px);border:1px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.rpt-btn:focus-visible{outline:none;box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-btn:disabled{opacity:.6;cursor:not-allowed}.rpt-btn-primary{background-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-text-inverse, #ffffff);border-color:var(--rpt-color-primary, #2563eb)}.rpt-btn-primary:hover:not(:disabled){background-color:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-secondary{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border, #cbd5e1)}.rpt-btn-secondary:hover:not(:disabled){background-color:var(--rpt-color-surface-hover, #f1f5f9);border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-btn-outline{background-color:transparent;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-btn-outline:hover:not(:disabled){background-color:var(--rpt-color-primary-focus, rgba(37, 99, 235, .1))}.rpt-btn-danger{background-color:var(--rpt-color-danger, #ef4444);color:var(--rpt-color-text-inverse, #ffffff);border-color:var(--rpt-color-danger, #ef4444)}.rpt-btn-danger:hover:not(:disabled){background-color:#dc2626;border-color:#dc2626}.rpt-btn.rpt-btn-full{width:100%}.rpt-btn-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "component", type: RptIconComponent, selector: "rpt-icon", inputs: ["name", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
100
|
}
|
|
83
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RptButtonComponent, decorators: [{
|
|
84
102
|
type: Component,
|
|
85
103
|
args: [{ selector: 'rpt-button', standalone: true, imports: [RptIconComponent], template: `
|
|
86
|
-
<div class="rpt-button-container">
|
|
104
|
+
<div class="rpt-button-container" [class.has-label-spacer]="hasLabelSpacer()">
|
|
105
|
+
@if (showFieldLabel()) {
|
|
106
|
+
<label [for]="elementId()" class="rpt-label">{{ fieldLabel() }}</label>
|
|
107
|
+
} @else if (hasLabelSpacer()) {
|
|
108
|
+
<div class="rpt-button-label-spacer" aria-hidden="true"> </div>
|
|
109
|
+
}
|
|
87
110
|
<button
|
|
88
111
|
[id]="elementId()"
|
|
89
112
|
[type]="buttonHtmlType()"
|
|
@@ -100,6 +123,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
100
123
|
<span>{{ buttonLabel() }}</span>
|
|
101
124
|
</button>
|
|
102
125
|
</div>
|
|
103
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;
|
|
126
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;width:100%;box-sizing:border-box;font-family:var(--rpt-font-family, inherit)}.rpt-button-container{display:flex;flex-direction:column;justify-content:flex-start;width:100%;box-sizing:border-box}.rpt-label{font-size:var(--rpt-font-size-sm, .75rem);font-weight:500;color:var(--rpt-color-text, #0f172a);flex-shrink:0;line-height:1.3;margin-bottom:4px}.rpt-button-label-spacer{height:16px;margin-bottom:4px;font-size:var(--rpt-font-size-sm, .75rem);line-height:1.3;-webkit-user-select:none;user-select:none;visibility:hidden;flex-shrink:0}.rpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;width:auto;max-width:100%;box-sizing:border-box;padding:0 20px;font-size:var(--rpt-font-size-base, .875rem);font-weight:500;border-radius:var(--rpt-border-radius, 6px);border:1px solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all var(--rpt-transition-speed, .15s) ease;white-space:nowrap}.rpt-btn:focus-visible{outline:none;box-shadow:var(--rpt-box-shadow-focus, 0 0 0 3px rgba(37, 99, 235, .25))}.rpt-btn:disabled{opacity:.6;cursor:not-allowed}.rpt-btn-primary{background-color:var(--rpt-color-primary, #2563eb);color:var(--rpt-color-text-inverse, #ffffff);border-color:var(--rpt-color-primary, #2563eb)}.rpt-btn-primary:hover:not(:disabled){background-color:var(--rpt-color-primary-hover, #1d4ed8);border-color:var(--rpt-color-primary-hover, #1d4ed8)}.rpt-btn-secondary{background-color:var(--rpt-color-surface, #f8fafc);color:var(--rpt-color-text, #0f172a);border-color:var(--rpt-color-border, #cbd5e1)}.rpt-btn-secondary:hover:not(:disabled){background-color:var(--rpt-color-surface-hover, #f1f5f9);border-color:var(--rpt-color-border-hover, #94a3b8)}.rpt-btn-outline{background-color:transparent;color:var(--rpt-color-primary, #2563eb);border-color:var(--rpt-color-primary, #2563eb)}.rpt-btn-outline:hover:not(:disabled){background-color:var(--rpt-color-primary-focus, rgba(37, 99, 235, .1))}.rpt-btn-danger{background-color:var(--rpt-color-danger, #ef4444);color:var(--rpt-color-text-inverse, #ffffff);border-color:var(--rpt-color-danger, #ef4444)}.rpt-btn-danger:hover:not(:disabled){background-color:#dc2626;border-color:#dc2626}.rpt-btn.rpt-btn-full{width:100%}.rpt-btn-icon{display:flex;align-items:center}\n"] }]
|
|
104
127
|
}] });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcmltaXRpdmVzL2NvbXBvbmVudHMvYnV0dG9uL3JwdC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQW1IOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNkIsQ0FBQztJQUNyRCxPQUFPLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQy9CLFFBQVEsR0FBRyxLQUFLLEVBQStDLENBQUM7SUFFaEUsZUFBZSxHQUFHLE1BQU0sRUFBNkIsQ0FBQztJQUV0RCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxXQUFXLEdBQUcsUUFBUSxDQUM3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxJQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQVksSUFBSSxRQUFRLENBQ3hGLENBQUM7SUFDTyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFXLENBQUM7UUFDOUQsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxnQkFBZ0IsSUFBSSxDQUFD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QUFVLEVBQUUsQ0FBQyxjQUFjLENBQTZCLElBQUksRUFBRSxDQUFDO1FBQzdGLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDeEIsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO3dHQXJFVSxrQkFBa0I7NEZBQWxCLGtCQUFrQiw0ZkE3R25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsbWdFQW5CUyxnQkFBZ0I7OzRGQThHZixrQkFBa0I7a0JBakg5QixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUNqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULG1CQXlGZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9jb21wb25lbnQtZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgUnB0SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vcnB0LWljb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnB0LWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtScHRJY29uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicnB0LWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2lkXT1cImVsZW1lbnRJZCgpXCJcbiAgICAgICAgW3R5cGVdPVwiYnV0dG9uSHRtbFR5cGUoKVwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc2VzKClcIlxuICAgICAgICBbY2xhc3MucnB0LWJ0bi1mdWxsXT1cImlzRnVsbFdpZHRoKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJjdXN0b21IZWlnaHQoKVwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJjdXN0b21XaWR0aCgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoaWNvbigpKSB7XG4gICAgICAgICAgPHJwdC1pY29uIFtuYW1lXT1cImljb24oKVwiIFtzaXplXT1cIjE1XCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8c3Bhbj57eyBidXR0b25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG5cbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgICB9XG4gICAgLnJwdC1idG4ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBnYXA6IDZweDtcbiAgICAgIGhlaWdodDogMzhweDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tcnB0LWZvbnQtc2l6ZS1iYXNlLCAwLjg3NXJlbSk7XG4gICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcnB0LWJvcmRlci1yYWRpdXMsIDZweCk7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXJwdC10cmFuc2l0aW9uLXNwZWVkLCAxNTBtcykgZWFzZTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuICAgIC5ycHQtYnRuOmZvY3VzLXZpc2libGUge1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIGJveC1zaGFkb3c6IHZhcigtLXJwdC1ib3gtc2hhZG93LWZvY3VzLCAwIDAgMCAzcHggcmdiYSgzNywgOTksIDIzNSwgMC4yNSkpO1xuICAgIH1cbiAgICAucnB0LWJ0bjpkaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIH1cbiAgICAvKiBWYXJpYW50cyAqL1xuICAgIC5ycHQtYnRuLXByaW1hcnkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LWludmVyc2UsICNmZmZmZmYpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5ycHQtYnRuLXByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeS1ob3ZlciwgIzFkNGVkOCk7XG4gICAgfVxuICAgIC5ycHQtYnRuLXNlY29uZGFyeSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZSwgI2Y4ZmFmYyk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQsICMwZjE3MmEpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItYm9yZGVyLCAjY2JkNWUxKTtcbiAgICB9XG4gICAgLnJwdC1idG4tc2Vjb25kYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1zdXJmYWNlLWhvdmVyLCAjZjFmNWY5KTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLWJvcmRlci1ob3ZlciwgIzk0YTNiOCk7XG4gICAgfVxuICAgIC5ycHQtYnRuLW91dGxpbmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItcHJpbWFyeSwgIzI1NjNlYik7XG4gICAgfVxuICAgIC5ycHQtYnRuLW91dGxpbmU6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktZm9jdXMsIHJnYmEoMzcsIDk5LCAyMzUsIDAuMSkpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1kYW5nZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLWRhbmdlciwgI2VmNDQ0NCk7XG4gICAgICBjb2xvcjogdmFyKC0tcnB0LWNvbG9yLXRleHQtaW52ZXJzZSwgI2ZmZmZmZik7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1kYW5nZXIsICNlZjQ0NDQpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1kYW5nZXI6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2RjMjYyNjtcbiAgICAgIGJvcmRlci1jb2xvcjogI2RjMjYyNjtcbiAgICB9XG4gICAgLnJwdC1idG4ucnB0LWJ0bi1mdWxsIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgICAucnB0LWJ0bi1pY29uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cbiAgYF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBScHRCdXR0b25Db21wb25lbnQge1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxSZXBvcnRDb21wb25lbnREZWZpbml0aW9uPigpO1xuICByZWFkb25seSBjb250cm9sID0gaW5wdXQ8dW5rbm93bj4obnVsbCk7XG4gIHJlYWRvbmx5IG9uQWN0aW9uID0gaW5wdXQ8KGFjdGlvbjogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbikgPT4gdm9pZD4oKTtcblxuICByZWFkb25seSBhY3Rpb25UcmlnZ2VyZWQgPSBvdXRwdXQ8Q29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbj4oKTtcblxuICByZWFkb25seSBlbGVtZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbmZpZygpLmlkKTtcbiAgcmVhZG9ubHkgYnV0dG9uTGFiZWwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmNvbmZpZygpLmxhYmVsIHx8ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsndGV4dCddIGFzIHN0cmluZykgfHwgJ1N1Ym1pdCdcbiAgKTtcbiAgcmVhZG9ubHkgYnV0dG9uSHRtbFR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maWcoKS5wcm9wZXJ0aWVzPy5bJ2FjdGlvbiddIGFzIHN0cmluZztcbiAgICBpZiAoYWN0aW9uID09PSAnc3VibWl0JyB8fCBhY3Rpb24gPT09ICdleGVjdXRlLXJlcG9ydCcgfHwgIWFjdGlvbikge1xuICAgICAgcmV0dXJuICdzdWJtaXQnO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzZXQnKSB7XG4gICAgICByZXR1cm4gJ3Jlc2V0JztcbiAgICB9XG4gICAgcmV0dXJuICdidXR0b24nO1xuICB9KTtcbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZW5hYmxlZCA9PT0gZmFsc2UpO1xuICByZWFkb25seSBpY29uID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY29uZmlnKCkucHJvcGVydGllcz8uWydpY29uJ10gYXMgc3RyaW5nKSB8fCAnJyk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YXJpYW50ID0gKHRoaXMuY29uZmlnKCkucHJvcGVydGllcz8uWyd2YXJpYW50J10gYXMgc3RyaW5nKSB8fCAncHJpbWFyeSc7XG4gICAgcmV0dXJuIGBycHQtYnRuIHJwdC1idG4tJHt2YXJpYW50fWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGlzRnVsbFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnZnVsbFdpZHRoJ10gPT09IHRydWUgfHxcbiAgICAgIHRoaXMuY29uZmlnKCkubGF5b3V0Py53aWR0aCA9PT0gJzEwMCUnXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VzdG9tSGVpZ2h0ID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xuICAgIGNvbnN0IGggPSB0aGlzLmNvbmZpZygpLmxheW91dD8uaGVpZ2h0O1xuICAgIHJldHVybiBoICYmIGggIT09ICdhdXRvJyA/IGggOiBudWxsO1xuICB9KTtcblxuICByZWFkb25seSBjdXN0b21XaWR0aCA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCB3ID0gdGhpcy5jb25maWcoKS5sYXlvdXQ/LndpZHRoO1xuICAgIHJldHVybiB3ICYmIHcgIT09ICdhdXRvJyA/IHcgOiBudWxsO1xuICB9KTtcblxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uRGVmID0gdGhpcy5yZXNvbHZlQWN0aW9uKCk7XG4gICAgaWYgKHRoaXMub25BY3Rpb24oKSkge1xuICAgICAgdGhpcy5vbkFjdGlvbigpIShhY3Rpb25EZWYpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblRyaWdnZXJlZC5lbWl0KGFjdGlvbkRlZik7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVBY3Rpb24oKTogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5jb25maWcoKS5ldmVudHM7XG4gICAgaWYgKGV2ZW50cyAmJiBldmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY2xpY2tFdmVudCA9IGV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50ID09PSAnY2xpY2snKTtcbiAgICAgIGlmIChjbGlja0V2ZW50KSB7XG4gICAgICAgIHJldHVybiBjbGlja0V2ZW50LmFjdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYWN0aW9uVHlwZSA9ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnYWN0aW9uJ10gYXMgc3RyaW5nKSB8fCAnZXhlY3V0ZS1yZXBvcnQnO1xuICAgIGNvbnN0IHBhcmFtcyA9ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnYWN0aW9uUGFyYW1zJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHx8IHt9O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBhY3Rpb25UeXBlLFxuICAgICAgdGFyZ2V0OiB0aGlzLmNvbmZpZygpLmlkLFxuICAgICAgcGFyYW1zLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnB0LWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9wcmltaXRpdmVzL2NvbXBvbmVudHMvYnV0dG9uL3JwdC1idXR0b24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQXVJOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBNkIsQ0FBQztJQUNyRCxPQUFPLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQy9CLFFBQVEsR0FBRyxLQUFLLEVBQStDLENBQUM7SUFFaEUsZUFBZSxHQUFHLE1BQU0sRUFBNkIsQ0FBQztJQUV0RCxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUN0QyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNNLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ2xDLE9BQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBWSxJQUFJLEVBQUUsQ0FBQztJQUNwRSxD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LE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQgeyBDb21wb25lbnRBY3Rpb25EZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvY29tcG9uZW50LWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IFJwdEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL3JwdC1pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JwdC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUnB0SWNvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJwdC1idXR0b24tY29udGFpbmVyXCIgW2NsYXNzLmhhcy1sYWJlbC1zcGFjZXJdPVwiaGFzTGFiZWxTcGFjZXIoKVwiPlxuICAgICAgQGlmIChzaG93RmllbGRMYWJlbCgpKSB7XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImVsZW1lbnRJZCgpXCIgY2xhc3M9XCJycHQtbGFiZWxcIj57eyBmaWVsZExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfSBAZWxzZSBpZiAoaGFzTGFiZWxTcGFjZXIoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicnB0LWJ1dHRvbi1sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj4mbmJzcDs8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2lkXT1cImVsZW1lbnRJZCgpXCJcbiAgICAgICAgW3R5cGVdPVwiYnV0dG9uSHRtbFR5cGUoKVwiXG4gICAgICAgIFtjbGFzc109XCJidXR0b25DbGFzc2VzKClcIlxuICAgICAgICBbY2xhc3MucnB0LWJ0bi1mdWxsXT1cImlzRnVsbFdpZHRoKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZCgpXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJjdXN0b21IZWlnaHQoKVwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJjdXN0b21XaWR0aCgpXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoaWNvbigpKSB7XG4gICAgICAgICAgPHJwdC1pY29uIFtuYW1lXT1cImljb24oKVwiIFtzaXplXT1cIjE1XCIgLz5cbiAgICAgICAgfVxuICAgICAgICA8c3Bhbj57eyBidXR0b25MYWJlbCgpIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG5cbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXJwdC1mb250LWZhbWlseSwgaW5oZXJpdCk7XG4gICAgfVxuICAgIC5ycHQtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB9XG4gICAgLnJwdC1sYWJlbCB7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dCwgIzBmMTcyYSk7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgfVxuICAgIC5ycHQtYnV0dG9uLWxhYmVsLXNwYWNlciB7XG4gICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtc20sIDAuNzVyZW0pO1xuICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuICAgIC5ycHQtYnRuIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgZ2FwOiA2cHg7XG4gICAgICBoZWlnaHQ6IDM4cHg7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBwYWRkaW5nOiAwIDIwcHg7XG4gICAgICBmb250LXNpemU6IHZhcigtLXJwdC1mb250LXNpemUtYmFzZSwgMC44NzVyZW0pO1xuICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJwdC1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1ycHQtdHJhbnNpdGlvbi1zcGVlZCwgMTUwbXMpIGVhc2U7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgICAucnB0LWJ0bjpmb2N1cy12aXNpYmxlIHtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1ycHQtYm94LXNoYWRvdy1mb2N1cywgMCAwIDAgM3B4IHJnYmEoMzcsIDk5LCAyMzUsIDAuMjUpKTtcbiAgICB9XG4gICAgLnJwdC1idG46ZGlzYWJsZWQge1xuICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG4gICAgLyogVmFyaWFudHMgKi9cbiAgICAucnB0LWJ0bi1wcmltYXJ5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGNvbG9yOiB2YXIoLS1ycHQtY29sb3ItdGV4dC1pbnZlcnNlLCAjZmZmZmZmKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWhvdmVyLCAjMWQ0ZWQ4KTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnktaG92ZXIsICMxZDRlZDgpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1zZWNvbmRhcnkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXN1cmZhY2UsICNmOGZhZmMpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LCAjMGYxNzJhKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLWJvcmRlciwgI2NiZDVlMSk7XG4gICAgfVxuICAgIC5ycHQtYnRuLXNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ycHQtY29sb3Itc3VyZmFjZS1ob3ZlciwgI2YxZjVmOSk7XG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLXJwdC1jb2xvci1ib3JkZXItaG92ZXIsICM5NGEzYjgpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1vdXRsaW5lIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LCAjMjU2M2ViKTtcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcnB0LWNvbG9yLXByaW1hcnksICMyNTYzZWIpO1xuICAgIH1cbiAgICAucnB0LWJ0bi1vdXRsaW5lOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1wcmltYXJ5LWZvY3VzLCByZ2JhKDM3LCA5OSwgMjM1LCAwLjEpKTtcbiAgICB9XG4gICAgLnJwdC1idG4tZGFuZ2VyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJwdC1jb2xvci1kYW5nZXIsICNlZjQ0NDQpO1xuICAgICAgY29sb3I6IHZhcigtLXJwdC1jb2xvci10ZXh0LWludmVyc2UsICNmZmZmZmYpO1xuICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ycHQtY29sb3ItZGFuZ2VyLCAjZWY0NDQ0KTtcbiAgICB9XG4gICAgLnJwdC1idG4tZGFuZ2VyOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzI2MjY7XG4gICAgICBib3JkZXItY29sb3I6ICNkYzI2MjY7XG4gICAgfVxuICAgIC5ycHQtYnRuLnJwdC1idG4tZnVsbCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLnJwdC1idG4taWNvbiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIGBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUnB0QnV0dG9uQ29tcG9uZW50IHtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQucmVxdWlyZWQ8UmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbj4oKTtcbiAgcmVhZG9ubHkgY29udHJvbCA9IGlucHV0PHVua25vd24+KG51bGwpO1xuICByZWFkb25seSBvbkFjdGlvbiA9IGlucHV0PChhY3Rpb246IENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24pID0+IHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgYWN0aW9uVHJpZ2dlcmVkID0gb3V0cHV0PENvbXBvbmVudEFjdGlvbkRlZmluaXRpb24+KCk7XG5cbiAgcmVhZG9ubHkgZWxlbWVudElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb25maWcoKS5pZCk7XG4gIHJlYWRvbmx5IHNob3dGaWVsZExhYmVsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/Llsnc2hvd0xhYmVsJ10gPT09IHRydWUgJiYgISF0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnZmllbGRMYWJlbCddO1xuICB9KTtcbiAgcmVhZG9ubHkgZmllbGRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnKCkucHJvcGVydGllcz8uWydmaWVsZExhYmVsJ10gYXMgc3RyaW5nKSB8fCAnJztcbiAgfSk7XG4gIHJlYWRvbmx5IGhhc0xhYmVsU3BhY2VyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICh0aGlzLnNob3dGaWVsZExhYmVsKCkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5jb25maWcoKS5wcm9wZXJ0aWVzPy5bJ2FsaWduV2l0aElucHV0cyddID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgcmVhZG9ubHkgYnV0dG9uTGFiZWwgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmNvbmZpZygpLmxhYmVsIHx8ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsndGV4dCddIGFzIHN0cmluZykgfHwgJ1N1Ym1pdCdcbiAgKTtcbiAgcmVhZG9ubHkgYnV0dG9uSHRtbFR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5jb25maWcoKS5wcm9wZXJ0aWVzPy5bJ2FjdGlvbiddIGFzIHN0cmluZztcbiAgICBpZiAoYWN0aW9uID09PSAnc3VibWl0JyB8fCBhY3Rpb24gPT09ICdleGVjdXRlLXJlcG9ydCcgfHwgIWFjdGlvbikge1xuICAgICAgcmV0dXJuICdzdWJtaXQnO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAncmVzZXQnKSB7XG4gICAgICByZXR1cm4gJ3Jlc2V0JztcbiAgICB9XG4gICAgcmV0dXJuICdidXR0b24nO1xuICB9KTtcbiAgcmVhZG9ubHkgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29uZmlnKCkuZW5hYmxlZCA9PT0gZmFsc2UpO1xuICByZWFkb25seSBpY29uID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY29uZmlnKCkucHJvcGVydGllcz8uWydpY29uJ10gYXMgc3RyaW5nKSB8fCAnJyk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uQ2xhc3NlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2YXJpYW50ID0gKHRoaXMuY29uZmlnKCkucHJvcGVydGllcz8uWyd2YXJpYW50J10gYXMgc3RyaW5nKSB8fCAncHJpbWFyeSc7XG4gICAgcmV0dXJuIGBycHQtYnRuIHJwdC1idG4tJHt2YXJpYW50fWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGlzRnVsbFdpZHRoID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnZnVsbFdpZHRoJ10gPT09IHRydWUgfHxcbiAgICAgIHRoaXMuY29uZmlnKCkubGF5b3V0Py53aWR0aCA9PT0gJzEwMCUnXG4gICAgKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3VzdG9tSGVpZ2h0ID0gY29tcHV0ZWQ8c3RyaW5nIHwgbnVsbD4oKCkgPT4ge1xuICAgIGNvbnN0IGggPSB0aGlzLmNvbmZpZygpLmxheW91dD8uaGVpZ2h0O1xuICAgIHJldHVybiBoICYmIGggIT09ICdhdXRvJyA/IGggOiBudWxsO1xuICB9KTtcblxuICByZWFkb25seSBjdXN0b21XaWR0aCA9IGNvbXB1dGVkPHN0cmluZyB8IG51bGw+KCgpID0+IHtcbiAgICBjb25zdCB3ID0gdGhpcy5jb25maWcoKS5sYXlvdXQ/LndpZHRoO1xuICAgIHJldHVybiB3ICYmIHcgIT09ICdhdXRvJyA/IHcgOiBudWxsO1xuICB9KTtcblxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9uRGVmID0gdGhpcy5yZXNvbHZlQWN0aW9uKCk7XG4gICAgaWYgKHRoaXMub25BY3Rpb24oKSkge1xuICAgICAgdGhpcy5vbkFjdGlvbigpIShhY3Rpb25EZWYpO1xuICAgIH1cbiAgICB0aGlzLmFjdGlvblRyaWdnZXJlZC5lbWl0KGFjdGlvbkRlZik7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVBY3Rpb24oKTogQ29tcG9uZW50QWN0aW9uRGVmaW5pdGlvbiB7XG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5jb25maWcoKS5ldmVudHM7XG4gICAgaWYgKGV2ZW50cyAmJiBldmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY2xpY2tFdmVudCA9IGV2ZW50cy5maW5kKChlKSA9PiBlLmV2ZW50ID09PSAnY2xpY2snKTtcbiAgICAgIGlmIChjbGlja0V2ZW50KSB7XG4gICAgICAgIHJldHVybiBjbGlja0V2ZW50LmFjdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYWN0aW9uVHlwZSA9ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnYWN0aW9uJ10gYXMgc3RyaW5nKSB8fCAnZXhlY3V0ZS1yZXBvcnQnO1xuICAgIGNvbnN0IHBhcmFtcyA9ICh0aGlzLmNvbmZpZygpLnByb3BlcnRpZXM/LlsnYWN0aW9uUGFyYW1zJ10gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHx8IHt9O1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBhY3Rpb25UeXBlLFxuICAgICAgdGFyZ2V0OiB0aGlzLmNvbmZpZygpLmlkLFxuICAgICAgcGFyYW1zLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|