@ngxsmk/theme 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,6 @@
1
1
  # @ngxsmk/theme
2
2
 
3
- The design-token engine of the [NGXSMK UI kit](https://github.com/NGXSMK/ngxsmk-ui-kit).
4
- `ThemeConfig` maps to `--ngxsmk-*` CSS custom properties, ships 4 presets with
5
- light/dark strategies, and supports runtime theme switching via
6
- `NgxsmkThemeService`.
3
+ The design-token engine of the [NGXSMK UI kit](https://github.com/NGXSMK/ngxsmk-ui-kit). A `ThemeConfig` maps to a flat set of `--ngxsmk-*` CSS custom properties that every `@ngxsmk/core` component reads. Ships 4 presets, light/dark/system strategies, and runtime theme switching via `NgxsmkThemeService`.
7
4
 
8
5
  ## Compatibility
9
6
 
@@ -20,22 +17,63 @@ npm install @ngxsmk/theme
20
17
 
21
18
  ## Usage
22
19
 
20
+ ### 1. Load the base stylesheet
21
+
22
+ In your global stylesheet or `angular.json` `styles`:
23
+
23
24
  ```scss
24
25
  @import '@ngxsmk/theme/styles/ngxsmk.css';
25
26
  ```
26
27
 
28
+ This ships a single base stylesheet for the default (emerald) preset. Themes are generated on demand at runtime, so you never ship every preset.
29
+
30
+ ### 2. Apply a theme
31
+
27
32
  ```ts
28
- import { NgxsmkThemeService } from '@ngxsmk/theme';
33
+ import { NgxsmkThemeService, emeraldPreset } from '@ngxsmk/theme';
34
+
35
+ constructor(private theme: NgxsmkThemeService) {}
36
+
37
+ ngOnInit() {
38
+ this.theme.applyTheme(emeraldPreset); // emerald | violet | neutral | rose
39
+ this.theme.setMode('dark'); // 'light' | 'dark' | 'system'
40
+ }
29
41
  ```
30
42
 
31
- `@ngxsmk/theme` emits a flat set of CSS custom properties that every NGXSMK
32
- component reads — no per-component theming required.
43
+ ## Presets
33
44
 
34
- ## Building & publishing
45
+ | Preset | Primary color |
46
+ | --------- | ------------------- |
47
+ | `emerald` | `#059669` (default) |
48
+ | `violet` | `#7C3AED` |
49
+ | `neutral` | `#18181B` |
50
+ | `rose` | `#E11D48` |
35
51
 
36
- Built with the rest of the workspace via `npm run build:libs`. The published
37
- artifact lives in `dist/ngxsmk/theme`. To publish all packages:
52
+ Presets are plain `ThemeConfig` objects exported from the package, so you can spread and override any of them.
38
53
 
39
- ```bash
40
- npm run publish
54
+ ## Token model
55
+
56
+ `ThemeConfig` drives a full token set:
57
+
58
+ - **Color** — `brand` (primary/secondary, with a derived 50–950 scale), `neutral`, and `semantic` (success / warning / error / info).
59
+ - **Radius** — global `borderRadius` (`none` / `sm` / `md` / `lg` / `xl`) plus per-corner tokens.
60
+ - **Typography** — font families and a Material-inspired display / headline / title / body / label scale.
61
+ - **Layout** — spacing, shadow, duration, easing, and a shared `z-index` ladder that overlays must respect.
62
+
63
+ ## Custom themes
64
+
65
+ Pass any `ThemeConfig` to `applyTheme` — set a brand color and the engine derives the full scale:
66
+
67
+ ```ts
68
+ this.theme.applyTheme({
69
+ name: 'brand',
70
+ brand: { primary: '#0EA5E9' },
71
+ borderRadius: 'lg',
72
+ });
41
73
  ```
74
+
75
+ Per-mode token overrides are supported via the `overrides: { light, dark }` field for fine control in light and dark modes.
76
+
77
+ ## Tree-shaking & deep imports
78
+
79
+ Prefer deep entry points (e.g. `@ngxsmk/theme/styles/ngxsmk.css`) and import only what you use. The package is side-effect-free except for its stylesheets.
@@ -101,7 +101,7 @@ function lightVars(theme) {
101
101
  '--ngxsmk-color-secondary-active': shiftLightness(theme.secondaryBase, -14),
102
102
  '--ngxsmk-color-secondary-container': theme.secondary[100],
103
103
  '--ngxsmk-color-on-secondary-container': theme.secondary[900],
104
- // Astryx: cool-grey body, white cards floating on top, hairline borders.
104
+ // Default light theme: cool-grey body, white cards floating on top, hairline borders.
105
105
  '--ngxsmk-color-background': theme.neutral[50],
106
106
  '--ngxsmk-color-on-background': '#0A1317',
107
107
  '--ngxsmk-color-surface': '#FFFFFF',
@@ -154,7 +154,7 @@ function darkVars(theme) {
154
154
  '--ngxsmk-color-secondary-active': theme.secondary[200],
155
155
  '--ngxsmk-color-secondary-container': theme.secondary[900],
156
156
  '--ngxsmk-color-on-secondary-container': theme.secondary[100],
157
- // Astryx dark: near-neutral charcoal body, slightly lighter card,
157
+ // Default dark theme: near-neutral charcoal body, slightly lighter card,
158
158
  // lighter still for popovers; hairline light-on-dark borders.
159
159
  '--ngxsmk-color-background': '#111112',
160
160
  '--ngxsmk-color-on-background': '#DFE2E5',
@@ -235,4 +235,4 @@ export function buildThemeCss(config) {
235
235
  const reducedMotion = `@media (prefers-reduced-motion: reduce) {\n :root {\n --ngxsmk-motion-duration: 0ms;\n }\n}`;
236
236
  return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
237
237
  }
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTFDLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELFNBQVMsVUFBVSxDQUFDLEtBQW9CO0lBQ3RDLE1BQU0sSUFBSSxHQUFTO1FBQ2pCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUMzQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3RELHlCQUF5QixFQUFFLGNBQWM7UUFFekMsZ0JBQWdCO1FBQ2hCLDBCQUEwQixFQUFFLCtCQUErQjtRQUMzRCxzQkFBc0IsRUFBRSwyQkFBMkI7UUFFbkQsc0NBQXNDO1FBQ3RDLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7UUFFekMsb0NBQW9DO1FBQ3BDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxzQkFBc0IsRUFBRSx5QkFBeUI7UUFDakQsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELDRCQUE0QixFQUFFLDZCQUE2QjtRQUUzRCx3Q0FBd0M7UUFDeEMsdUJBQXVCLEVBQUUsNkJBQTZCO1FBQ3RELDJCQUEyQixFQUFFLHlCQUF5QjtRQUN0RCxpQ0FBaUMsRUFBRSw2QkFBNkI7UUFFaEUsdUNBQXVDO1FBQ3ZDLDBCQUEwQixFQUFFLFFBQVE7UUFDcEMsc0JBQXNCLEVBQUUscUNBQXFDO1FBQzdELHlCQUF5QixFQUFFLDZCQUE2QjtRQUN4RCwwQkFBMEIsRUFBRSwyQkFBMkI7UUFFdkQscUNBQXFDO1FBQ3JDLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsd0JBQXdCLEVBQUUsU0FBUztRQUNuQyx3QkFBd0IsRUFBRSwyQkFBMkI7UUFDckQsb0JBQW9CLEVBQUUsb0NBQW9DO1FBQzFELDRCQUE0QixFQUFFLFVBQVU7UUFDeEMsMEJBQTBCLEVBQUUsNkJBQTZCO1FBQ3pELDRCQUE0QixFQUFFLDZCQUE2QjtLQUM1RCxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJ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LElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsa0dBQWtHLENBQUM7SUFDekgsT0FBTyw0REFBNEQsSUFBSSxPQUFPLFNBQVMsT0FBTyxhQUFhLElBQUksQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVyaXZlU2NhbGUsIHJvdGF0ZUh1ZSwgc2hpZnRMaWdodG5lc3MgfSBmcm9tICcuL2NvbG9yJztcbmltcG9ydCB7IHJlc29sdmVUaGVtZSB9IGZyb20gJy4vZGVmaW5lLWNvbmZpZyc7XG5pbXBvcnQgeyBDb2xvclNjYWxlLCBSZXNvbHZlZFRoZW1lLCBUaGVtZUNvbmZpZywgVHlwZVJvbGVTaXplLCBUeXBlU3R5bGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENPTlRST0xfSEVJR0hUIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNwYWNpbmcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstc3BhY2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5yYWRpdXMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstcmFkaXVzLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2hhZG93KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNoYWRvdy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmR1cmF0aW9uKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuZWFzaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWVhc2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS56SW5kZXgpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstei0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2l6ZXMgPSB7IGxhcmdlOiAnbGcnLCBtZWRpdW06ICdtZCcsIHNtYWxsOiAnc20nIH0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgW3JvbGUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhlbWUudHlwb2dyYXBoeSkpIHtcbiAgICBmb3IgKGNvbnN0IFtzaXplLCBzdWZmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHNpemVzKSkge1xuICAgICAgY29uc3Qgc3R5bGU6IFR5cGVTdHlsZSA9IHN0eWxlc1tzaXplIGFzIFR5cGVSb2xlU2l6ZV07XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXNpemVgXSA9IHN0eWxlLnNpemU7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LWxpbmVgXSA9IHN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXdlaWdodGBdID0gc3R5bGUud2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJhLXNtYWxsIGJvZHkgdGV4dCBmb3IgZGVuc2UgbWV0YWRhdGEgcm93czsgYmVsb3cgdGhlIHNtYWxsZXN0XG4gIC8vIFR5cGVSb2xlU2l6ZSBzbyBpdCBpcyBlbWl0dGVkIG91dHNpZGUgdGhlIHJvbGUgbG9vcC5cbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXNpemUnXSA9ICcwLjY4NzVyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtbGluZSddID0gJzFyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtd2VpZ2h0J10gPSAnNDAwJztcblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBsaWdodCBtb2RlLiAqL1xuZnVuY3Rpb24gbGlnaHRWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdsaWdodCcsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5QmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtOCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtMTQpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcblxuICAgIC8vIEFzdHJ5eDogY29vbC1ncmV5IGJvZHksIHdoaXRlIGNhcmRzIGZsb2F0aW5nIG9uIHRvcCwgaGFpcmxpbmUgYm9yZGVycy5cbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2dyb3VuZCc6IHRoZW1lLm5ldXRyYWxbNTBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1iYWNrZ3JvdW5kJzogJyMwQTEzMTcnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlJzogJyMwQTEzMTcnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLXZhcmlhbnQnOiB0aGVtZS5uZXV0cmFsWzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UtdmFyaWFudCc6IHRoZW1lLm5ldXRyYWxbNTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1ob3Zlcic6ICdyZ2IoNSA1NCA4OSAvIDAuMDUpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1hY3RpdmUnOiAncmdiKDUgNTQgODkgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1jb250YWluZXInOiAnI0ZGRkZGRicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUnOiAncmdiKDUgNTQgODkgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS1zdHJvbmcnOiB0aGVtZS5uZXV0cmFsWzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtdmFyaWFudCc6ICdyZ2IoNSA1NCA4OSAvIDAuMDYpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0zJzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTQnOiB0aGVtZS5uZXV0cmFsWzIwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNSc6IHRoZW1lLm5ldXRyYWxbMzAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1yaW5nJzogdGhlbWUuYnJhbmRCYXNlLFxuICAgICctLW5neHNtay1jb2xvci1iYWNrZHJvcCc6ICdyZ2IoMSAxOCA0MCAvIDAuNCknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4ICR7dGhlbWUuYnJhbmRbMTAwXX0sIDAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZEJhc2V9IDQ1JSwgdHJhbnNwYXJlbnQpYCxcbiAgfTtcblxuICBjb25zdCB0ZXJ0aWFyeSA9IGRlcml2ZVNjYWxlKHJvdGF0ZUh1ZSh0aGVtZS5icmFuZEJhc2UsIDY0KSk7XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs1MDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeSddID0gJyNGRkZGRkYnO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzEwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBoZXg7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gJyNGRkZGRkYnO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX0tY29udGFpbmVyYF0gPSBzY2FsZVsxMDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX0tY29udGFpbmVyYF0gPSBzY2FsZVs4MDBdO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4udmFycywgLi4udGhlbWUub3ZlcnJpZGVzLmxpZ2h0IH07XG59XG5cbi8qKiBTZW1hbnRpYyByb2xlIHRva2VucyBmb3IgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gZGFya1ZhcnModGhlbWU6IFJlc29sdmVkVGhlbWUpOiBWYXJzIHtcbiAgY29uc3QgdmFyczogVmFycyA9IHtcbiAgICAnY29sb3Itc2NoZW1lJzogJ2RhcmsnLFxuXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiB0aGVtZS5icmFuZFs0MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWhvdmVyJzogdGhlbWUuYnJhbmRbMzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiB0aGVtZS5icmFuZFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXByaW1hcnktY29udGFpbmVyJzogdGhlbWUuYnJhbmRbMTAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnknOiB0aGVtZS5zZWNvbmRhcnlbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiB0aGVtZS5zZWNvbmRhcnlbMzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWFjdGl2ZSc6IHRoZW1lLnNlY29uZGFyeVsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzkwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbMTAwXSxcblxuICAgIC8vIEFzdHJ5eCBkYXJrOiBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgYm9keSwgc2xpZ2h0bHkgbGlnaHRlciBjYXJkLFxuICAgIC8vIGxpZ2h0ZXIgc3RpbGwgZm9yIHBvcG92ZXJzOyBoYWlybGluZSBsaWdodC1vbi1kYXJrIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiAnIzExMTExMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLWJhY2tncm91bmQnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UnOiAnIzFGMUYyMicsXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXN1cmZhY2UnOiAnI0RGRTJFNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCc6ICcjMjgyOTJDJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZS12YXJpYW50JzogJyNBQUFGQjUnLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWhvdmVyJzogJ3JnYigyNTUgMjU1IDI1NSAvIDAuMDUpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1hY3RpdmUnOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMSknLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyc6ICcjNDk0RDUzJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb3V0bGluZS12YXJpYW50JzogJ3JnYigyNDIgMjQ0IDI0NiAvIDAuMDYpJyxcblxuICAgIC8vIEVsZXZhdGlvbiBsYWRkZXJcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0xJzogdGhlbWUubmV1dHJhbFs4MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTInOiB0aGVtZS5uZXV0cmFsWzcwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbNjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFs1MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzQwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kWzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tkcm9wJzogJ3JnYigxNyAxNyAxOCAvIDAuNiknLFxuICAgICctLW5neHNtay1zaGFkb3ctZm9jdXMnOiBgMCAwIDAgMnB4IGNvbG9yLW1peChpbiBzcmdiLCAke3RoZW1lLmJyYW5kWzQwMF19IDI1JSwgdHJhbnNwYXJlbnQpLCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gNDUlLCB0cmFuc3BhcmVudClgLFxuICB9O1xuXG4gIGNvbnN0IHRlcnRpYXJ5ID0gZGVyaXZlU2NhbGUocm90YXRlSHVlKHRoZW1lLmJyYW5kQmFzZSwgNjQpKTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnknXSA9IHRlcnRpYXJ5WzQwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5J10gPSB0ZXJ0aWFyeVs5NTBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLW9uLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbMTAwXTtcblxuICBmb3IgKGNvbnN0IFtuYW1lLCBoZXhdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNlbWFudGljKSkge1xuICAgIGNvbnN0IHNjYWxlID0gZGVyaXZlU2NhbGUoaGV4KTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9YF0gPSBzY2FsZVs0MDBdO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzk1MF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfS1jb250YWluZXJgXSA9IHNjYWxlWzMwMF07XG4gIH1cblxuICByZXR1cm4geyAuLi52YXJzLCAuLi50aGVtZS5vdmVycmlkZXMuZGFyayB9O1xufVxuXG5mdW5jdGlvbiBibG9jayhzZWxlY3Rvcjogc3RyaW5nLCB2YXJzOiBWYXJzLCBpbmRlbnQgPSAnJyk6IHN0cmluZyB7XG4gIGNvbnN0IGxpbmVzID0gT2JqZWN0LmVudHJpZXModmFycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBgJHtpbmRlbnR9ICAke25hbWV9OiAke3ZhbHVlfTtgKTtcbiAgcmV0dXJuIGAke2luZGVudH0ke3NlbGVjdG9yfSB7XFxuJHtsaW5lcy5qb2luKCdcXG4nKX1cXG4ke2luZGVudH19YDtcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSB0aGVtZSBjb25maWcgaW50byBhIENTUyBzdHlsZXNoZWV0IG9mIGAtLW5neHNtay0qYCBjdXN0b21cbiAqIHByb3BlcnRpZXMuIEVtaXRzIHN0YXRpYyB0b2tlbnMgcGx1cyBsaWdodC1tb2RlIHJvbGVzIG9uIGA6cm9vdGAsIGFuZFxuICogZGFyay1tb2RlIHJvbGVzIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJlZCBkYXJrLW1vZGUgc3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRoZW1lQ3NzKGNvbmZpZzogVGhlbWVDb25maWcgfCBSZXNvbHZlZFRoZW1lKTogc3RyaW5nIHtcbiAgY29uc3QgdGhlbWUgPVxuICAgICdicmFuZCcgaW4gY29uZmlnICYmICdzcGFjaW5nJyBpbiAoY29uZmlnIGFzIG9iamVjdClcbiAgICAgID8gKGNvbmZpZyBhcyBSZXNvbHZlZFRoZW1lKVxuICAgICAgOiByZXNvbHZlVGhlbWUoY29uZmlnIGFzIFRoZW1lQ29uZmlnKTtcblxuICBjb25zdCByb290ID0gYmxvY2soJzpyb290JywgeyAuLi5zdGF0aWNWYXJzKHRoZW1lKSwgLi4ubGlnaHRWYXJzKHRoZW1lKSB9KTtcbiAgY29uc3QgZGFyayA9IGRhcmtWYXJzKHRoZW1lKTtcblxuICBsZXQgZGFya0Jsb2NrOiBzdHJpbmc7XG4gIHN3aXRjaCAodGhlbWUuZGFya01vZGUuc3RyYXRlZ3kpIHtcbiAgICBjYXNlICdtZWRpYSc6XG4gICAgICBkYXJrQmxvY2sgPSBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzeXN0ZW0nOiB7XG4gICAgICAvLyBgbGlnaHQtZGFyaygpYCBzdXBwb3J0IGlzIHBlci1wcm9wZXJ0eTsgdGhlIGNsYXNzIGJsb2NrIHN0aWxsIHNlcnZlc1xuICAgICAgLy8gYXMgdGhlIG92ZXJyaWRlIGhvb2ssIHNvIGBzeXN0ZW1gIGJlaGF2ZXMgYXMgbWVkaWEgKyBjbGFzcy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gW1xuICAgICAgICBgQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xcbiR7YmxvY2soJzpyb290JywgZGFyaywgJyAgJyl9XFxufWAsXG4gICAgICAgIGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayksXG4gICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIC8vIGA6cm9vdC48Y2xhc3M+YCAoc3BlY2lmaWNpdHkgMCwyLDApIHBsdXMgYSBgYm9keWAgdmFyaWFudCBkZWZlbmQgdGhlXG4gICAgICAvLyBkYXJrIHRva2VucyBhZ2FpbnN0IHRoaXJkLXBhcnR5IHN0eWxlc2hlZXRzIHRoYXQgcmVkZWZpbmUgYC0tbmd4c21rLSpgXG4gICAgICAvLyBvbiBhIHBsYWluIGA6cm9vdGAgKDAsMSwwKSDigJQgdGhvc2Ugd291bGQgb3RoZXJ3aXNlIHdpbiBieSBzb3VyY2Ugb3JkZXJcbiAgICAgIC8vIHdoZW4gaW5qZWN0ZWQgaW50byA8aGVhZD4gYWZ0ZXIgdGhpcyBzaGVldC4gVGhlIGJhcmUgYC48Y2xhc3M+YCBrZWVwc1xuICAgICAgLy8gc2NvcGVkIChub24tcm9vdCkgZGFyayByZWdpb25zIHdvcmtpbmcuXG4gICAgICBjb25zdCBjbiA9IHRoZW1lLmRhcmtNb2RlLmNsYXNzTmFtZTtcbiAgICAgIGRhcmtCbG9jayA9IGJsb2NrKGA6cm9vdC4ke2NufSwgOnJvb3QuJHtjbn0gYm9keSwgLiR7Y259YCwgZGFyayk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVkdWNlZE1vdGlvbiA9IGBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xcbiAgOnJvb3Qge1xcbiAgICAtLW5neHNtay1tb3Rpb24tZHVyYXRpb246IDBtcztcXG4gIH1cXG59YDtcbiAgcmV0dXJuIGAvKiBHZW5lcmF0ZWQgYnkgQG5neHNtay90aGVtZSDigJQgZG8gbm90IGVkaXQgYnkgaGFuZC4gKi9cXG4ke3Jvb3R9XFxuXFxuJHtkYXJrQmxvY2t9XFxuXFxuJHtyZWR1Y2VkTW90aW9ufVxcbmA7XG59XG4iXX0=
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi9jc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSTFDLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFpQjtJQUNsRCxNQUFNLElBQUksR0FBUyxFQUFFLENBQUM7SUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsNkRBQTZEO0FBQzdELFNBQVMsVUFBVSxDQUFDLEtBQW9CO0lBQ3RDLE1BQU0sSUFBSSxHQUFTO1FBQ2pCLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xDLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQzFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3RDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSTtRQUMzQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDM0Msc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3RELHlCQUF5QixFQUFFLGNBQWM7UUFFekMsZ0JBQWdCO1FBQ2hCLDBCQUEwQixFQUFFLCtCQUErQjtRQUMzRCxzQkFBc0IsRUFBRSwyQkFBMkI7UUFFbkQsc0NBQXNDO1FBQ3RDLG9CQUFvQixFQUFFLDZCQUE2QjtRQUNuRCx1QkFBdUIsRUFBRSxnQ0FBZ0M7UUFDekQsNkJBQTZCLEVBQUUseUJBQXlCO1FBQ3hELDZCQUE2QixFQUFFLEtBQUs7UUFDcEMsd0JBQXdCLEVBQUUsMkJBQTJCO1FBQ3JELGtDQUFrQyxFQUFFLEtBQUs7UUFFekMsb0NBQW9DO1FBQ3BDLGtCQUFrQixFQUFFLDZCQUE2QjtRQUNqRCxzQkFBc0IsRUFBRSx5QkFBeUI7UUFDakQsc0JBQXNCLEVBQUUseUJBQXlCO1FBQ2pELDRCQUE0QixFQUFFLDZCQUE2QjtRQUUzRCx3Q0FBd0M7UUFDeEMsdUJBQXVCLEVBQUUsNkJBQTZCO1FBQ3RELDJCQUEyQixFQUFFLHlCQUF5QjtRQUN0RCxpQ0FBaUMsRUFBRSw2QkFBNkI7UUFFaEUsdUNBQXVDO1FBQ3ZDLDBCQUEwQixFQUFFLFFBQVE7UUFDcEMsc0JBQXNCLEVBQUUscUNBQXFDO1FBQzdELHlCQUF5QixFQUFFLDZCQUE2QjtRQUN4RCwwQkFBMEIsRUFBRSwyQkFBMkI7UUFFdkQscUNBQXFDO1FBQ3JDLHVCQUF1QixFQUFFLFNBQVM7UUFDbEMsd0JBQXdCLEVBQUUsU0FBUztRQUNuQyx3QkFBd0IsRUFBRSwyQkFBMkI7UUFDckQsb0JBQW9CLEVBQUUsb0NBQW9DO1FBQzFELDRCQUE0QixFQUFFLFVBQVU7UUFDeEMsMEJBQTBCLEVBQUUsNkJBQTZCO1FBQ3pELDRCQUE0QixFQUFFLDZCQUE2QjtLQUM1RCxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBQ0QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVcsQ0FBQztJQUNsRSxLQUFLLE1BQU0sQ0FBQyxJ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LElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsa0dBQWtHLENBQUM7SUFDekgsT0FBTyw0REFBNEQsSUFBSSxPQUFPLFNBQVMsT0FBTyxhQUFhLElBQUksQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVyaXZlU2NhbGUsIHJvdGF0ZUh1ZSwgc2hpZnRMaWdodG5lc3MgfSBmcm9tICcuL2NvbG9yJztcbmltcG9ydCB7IHJlc29sdmVUaGVtZSB9IGZyb20gJy4vZGVmaW5lLWNvbmZpZyc7XG5pbXBvcnQgeyBDb2xvclNjYWxlLCBSZXNvbHZlZFRoZW1lLCBUaGVtZUNvbmZpZywgVHlwZVJvbGVTaXplLCBUeXBlU3R5bGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IENPTlRST0xfSEVJR0hUIH0gZnJvbSAnLi90b2tlbnMnO1xuXG50eXBlIFZhcnMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG5mdW5jdGlvbiBzY2FsZVZhcnMocHJlZml4OiBzdHJpbmcsIHNjYWxlOiBDb2xvclNjYWxlKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7fTtcbiAgZm9yIChjb25zdCBbc3RlcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNjYWxlKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7cHJlZml4fS0ke3N0ZXB9YF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFRva2VucyB0aGF0IGRvIG5vdCBjaGFuZ2UgYmV0d2VlbiBsaWdodCBhbmQgZGFyayBtb2RlLiAqL1xuZnVuY3Rpb24gc3RhdGljVmFycyh0aGVtZTogUmVzb2x2ZWRUaGVtZSk6IFZhcnMge1xuICBjb25zdCB2YXJzOiBWYXJzID0ge1xuICAgIC4uLnNjYWxlVmFycygnYnJhbmQnLCB0aGVtZS5icmFuZCksXG4gICAgLi4uc2NhbGVWYXJzKCdzZWNvbmRhcnknLCB0aGVtZS5zZWNvbmRhcnkpLFxuICAgIC4uLnNjYWxlVmFycygnbmV1dHJhbCcsIHRoZW1lLm5ldXRyYWwpLFxuICAgICctLW5neHNtay1mb250LXNhbnMnOiB0aGVtZS5mb250RmFtaWx5LnNhbnMsXG4gICAgJy0tbmd4c21rLWZvbnQtbW9ubyc6IHRoZW1lLmZvbnRGYW1pbHkubW9ubyxcbiAgICAnLS1uZ3hzbWstcmFkaXVzLWJhc2UnOiB0aGVtZS5yYWRpdXNbdGhlbWUucmFkaXVzQmFzZV0sXG4gICAgJy0tbmd4c21rLWNvbnRyb2wtaGVpZ2h0JzogQ09OVFJPTF9IRUlHSFQsXG5cbiAgICAvLyBNb3Rpb24gVG9rZW5zXG4gICAgJy0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbic6ICd2YXIoLS1uZ3hzbWstZHVyYXRpb24tbm9ybWFsKScsXG4gICAgJy0tbmd4c21rLW1vdGlvbi1lYXNlJzogJ3ZhcigtLW5neHNtay1lYXNlLWluLW91dCknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQnV0dG9ucylcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1wcmltYXJ5KScsXG4gICAgJy0tbmd4c21rLWJ1dHRvbi1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC1mYW1pbHknOiAndmFyKC0tbmd4c21rLWZvbnQtc2FucyknLFxuICAgICctLW5neHNtay1idXR0b24tZm9udC13ZWlnaHQnOiAnNTAwJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWJhc2UpJyxcbiAgICAnLS1uZ3hzbWstYnV0dG9uLWRpc2FibGVkLW9wYWNpdHknOiAnMC41JyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKENhcmRzKVxuICAgICctLW5neHNtay1jYXJkLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1zdXJmYWNlKScsXG4gICAgJy0tbmd4c21rLWNhcmQtcmFkaXVzJzogJ3ZhcigtLW5neHNtay1yYWRpdXMteGwpJyxcbiAgICAnLS1uZ3hzbWstY2FyZC1zaGFkb3cnOiAndmFyKC0tbmd4c21rLXNoYWRvdy1zbSknLFxuICAgICctLW5neHNtay1jYXJkLWJvcmRlci1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3Itb3V0bGluZSknLFxuXG4gICAgLy8gQ29tcG9uZW50LXNwZWNpZmljIFRva2VucyAoQWNjb3JkaW9uKVxuICAgICctLW5neHNtay1hY2NvcmRpb24tYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UpJyxcbiAgICAnLS1uZ3hzbWstYWNjb3JkaW9uLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWxnKScsXG4gICAgJy0tbmd4c21rLWFjY29yZGlvbi1ib3JkZXItY29sb3InOiAndmFyKC0tbmd4c21rLWNvbG9yLW91dGxpbmUpJyxcblxuICAgIC8vIENvbXBvbmVudC1zcGVjaWZpYyBUb2tlbnMgKFByb2dyZXNzKVxuICAgICctLW5neHNtay1wcm9ncmVzcy1oZWlnaHQnOiAnMC41cmVtJyxcbiAgICAnLS1uZ3hzbWstcHJvZ3Jlc3MtYmcnOiAndmFyKC0tbmd4c21rLWNvbG9yLXN1cmZhY2UtdmFyaWFudCknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1jb2xvcic6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICAgICctLW5neHNtay1wcm9ncmVzcy1yYWRpdXMnOiAndmFyKC0tbmd4c21rLXJhZGl1cy1mdWxsKScsXG5cbiAgICAvLyBDb21wb25lbnQtc3BlY2lmaWMgVG9rZW5zIChTd2l0Y2gpXG4gICAgJy0tbmd4c21rLXN3aXRjaC13aWR0aCc6ICcyLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWhlaWdodCc6ICcxLjI1cmVtJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLXJhZGl1cyc6ICd2YXIoLS1uZ3hzbWstcmFkaXVzLWZ1bGwpJyxcbiAgICAnLS1uZ3hzbWstc3dpdGNoLWJnJzogJ3ZhcigtLW5neHNtay1jb2xvci1vdXRsaW5lLXN0cm9uZyknLFxuICAgICctLW5neHNtay1zd2l0Y2gtdGh1bWItc2l6ZSc6ICcwLjg3NXJlbScsXG4gICAgJy0tbmd4c21rLXN3aXRjaC10aHVtYi1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3Itc3VyZmFjZSknLFxuICAgICctLW5neHNtay1zd2l0Y2gtY2hlY2tlZC1iZyc6ICd2YXIoLS1uZ3hzbWstY29sb3ItcHJpbWFyeSknLFxuICB9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLnNwYWNpbmcpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstc3BhY2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5yYWRpdXMpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstcmFkaXVzLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2hhZG93KSkge1xuICAgIHZhcnNbYC0tbmd4c21rLXNoYWRvdy0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoZW1lLmR1cmF0aW9uKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWR1cmF0aW9uLSR7a2V5fWBdID0gdmFsdWU7XG4gIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuZWFzaW5nKSkge1xuICAgIHZhcnNbYC0tbmd4c21rLWVhc2UtJHtrZXl9YF0gPSB2YWx1ZTtcbiAgfVxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS56SW5kZXgpKSB7XG4gICAgdmFyc1tgLS1uZ3hzbWstei0ke2tleX1gXSA9IHZhbHVlO1xuICB9XG5cbiAgY29uc3Qgc2l6ZXMgPSB7IGxhcmdlOiAnbGcnLCBtZWRpdW06ICdtZCcsIHNtYWxsOiAnc20nIH0gYXMgY29uc3Q7XG4gIGZvciAoY29uc3QgW3JvbGUsIHN0eWxlc10gb2YgT2JqZWN0LmVudHJpZXModGhlbWUudHlwb2dyYXBoeSkpIHtcbiAgICBmb3IgKGNvbnN0IFtzaXplLCBzdWZmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHNpemVzKSkge1xuICAgICAgY29uc3Qgc3R5bGU6IFR5cGVTdHlsZSA9IHN0eWxlc1tzaXplIGFzIFR5cGVSb2xlU2l6ZV07XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXNpemVgXSA9IHN0eWxlLnNpemU7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LWxpbmVgXSA9IHN0eWxlLmxpbmVIZWlnaHQ7XG4gICAgICB2YXJzW2AtLW5neHNtay10ZXh0LSR7cm9sZX0tJHtzdWZmaXh9LXdlaWdodGBdID0gc3R5bGUud2VpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEV4dHJhLXNtYWxsIGJvZHkgdGV4dCBmb3IgZGVuc2UgbWV0YWRhdGEgcm93czsgYmVsb3cgdGhlIHNtYWxsZXN0XG4gIC8vIFR5cGVSb2xlU2l6ZSBzbyBpdCBpcyBlbWl0dGVkIG91dHNpZGUgdGhlIHJvbGUgbG9vcC5cbiAgdmFyc1snLS1uZ3hzbWstdGV4dC1ib2R5LXhzLXNpemUnXSA9ICcwLjY4NzVyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtbGluZSddID0gJzFyZW0nO1xuICB2YXJzWyctLW5neHNtay10ZXh0LWJvZHkteHMtd2VpZ2h0J10gPSAnNDAwJztcblxuICByZXR1cm4gdmFycztcbn1cblxuLyoqIFNlbWFudGljIHJvbGUgdG9rZW5zIGZvciBsaWdodCBtb2RlLiAqL1xuZnVuY3Rpb24gbGlnaHRWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdsaWdodCcsXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTgpLFxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWFjdGl2ZSc6IHNoaWZ0TGlnaHRuZXNzKHRoZW1lLmJyYW5kQmFzZSwgLTE0KSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzkwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5QmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc2Vjb25kYXJ5JzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktaG92ZXInOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtOCksXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiBzaGlmdExpZ2h0bmVzcyh0aGVtZS5zZWNvbmRhcnlCYXNlLCAtMTQpLFxuICAgICctLW5neHNtay1jb2xvci1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeS1jb250YWluZXInOiB0aGVtZS5zZWNvbmRhcnlbOTAwXSxcblxuICAgIC8vIERlZmF1bHQgbGlnaHQgdGhlbWU6IGNvb2wtZ3JleSBib2R5LCB3aGl0ZSBjYXJkcyBmbG9hdGluZyBvbiB0b3AsIGhhaXJsaW5lIGJvcmRlcnMuXG4gICAgJy0tbmd4c21rLWNvbG9yLWJhY2tncm91bmQnOiB0aGVtZS5uZXV0cmFsWzUwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjMEExMzE3JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogdGhlbWUubmV1dHJhbFsxMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDUgNTQgODkgLyAwLjA1KScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtYWN0aXZlJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtY29udGFpbmVyJzogJyNGRkZGRkYnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lJzogJ3JnYig1IDU0IDg5IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDUgNTQgODkgLyAwLjA2KScsXG5cbiAgICAvLyBFbGV2YXRpb24gbGFkZGVyXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0yJzogdGhlbWUubmV1dHJhbFs1MF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMyc6IHRoZW1lLm5ldXRyYWxbMTAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS00JzogdGhlbWUubmV1dHJhbFsyMDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTUnOiB0aGVtZS5uZXV0cmFsWzMwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6IHRoZW1lLmJyYW5kQmFzZSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDEgMTggNDAgLyAwLjQpJyxcbiAgICAnLS1uZ3hzbWstc2hhZG93LWZvY3VzJzogYDAgMCAwIDJweCAke3RoZW1lLmJyYW5kWzEwMF19LCAwIDAgMCA0cHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRCYXNlfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9ICcjRkZGRkZGJztcbiAgdmFyc1snLS1uZ3hzbWstY29sb3ItdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuICB2YXJzWyctLW5neHNtay1jb2xvci1vbi10ZXJ0aWFyeS1jb250YWluZXInXSA9IHRlcnRpYXJ5WzkwMF07XG5cbiAgZm9yIChjb25zdCBbbmFtZSwgaGV4XSBvZiBPYmplY3QuZW50cmllcyh0aGVtZS5zZW1hbnRpYykpIHtcbiAgICBjb25zdCBzY2FsZSA9IGRlcml2ZVNjYWxlKGhleCk7XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3ItJHtuYW1lfWBdID0gaGV4O1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLW9uLSR7bmFtZX1gXSA9ICcjRkZGRkZGJztcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMTAwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbODAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5saWdodCB9O1xufVxuXG4vKiogU2VtYW50aWMgcm9sZSB0b2tlbnMgZm9yIGRhcmsgbW9kZS4gKi9cbmZ1bmN0aW9uIGRhcmtWYXJzKHRoZW1lOiBSZXNvbHZlZFRoZW1lKTogVmFycyB7XG4gIGNvbnN0IHZhcnM6IFZhcnMgPSB7XG4gICAgJ2NvbG9yLXNjaGVtZSc6ICdkYXJrJyxcblxuICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5JzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1ob3Zlcic6IHRoZW1lLmJyYW5kWzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktYWN0aXZlJzogdGhlbWUuYnJhbmRbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1jb250YWluZXInOiB0aGVtZS5icmFuZFs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5LWNvbnRhaW5lcic6IHRoZW1lLmJyYW5kWzEwMF0sXG5cbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5JzogdGhlbWUuc2Vjb25kYXJ5WzQwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLW9uLXNlY29uZGFyeSc6ICcjRkZGRkZGJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWhvdmVyJzogdGhlbWUuc2Vjb25kYXJ5WzMwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUnOiB0aGVtZS5zZWNvbmRhcnlbMjAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc2Vjb25kYXJ5LWNvbnRhaW5lcic6IHRoZW1lLnNlY29uZGFyeVs5MDBdLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zZWNvbmRhcnktY29udGFpbmVyJzogdGhlbWUuc2Vjb25kYXJ5WzEwMF0sXG5cbiAgICAvLyBEZWZhdWx0IGRhcmsgdGhlbWU6IG5lYXItbmV1dHJhbCBjaGFyY29hbCBib2R5LCBzbGlnaHRseSBsaWdodGVyIGNhcmQsXG4gICAgLy8gbGlnaHRlciBzdGlsbCBmb3IgcG9wb3ZlcnM7IGhhaXJsaW5lIGxpZ2h0LW9uLWRhcmsgYm9yZGVycy5cbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2dyb3VuZCc6ICcjMTExMTEyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tYmFja2dyb3VuZCc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZSc6ICcjMUYxRjIyJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itb24tc3VyZmFjZSc6ICcjREZFMkU1JyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS12YXJpYW50JzogJyMyODI5MkMnLFxuICAgICctLW5neHNtay1jb2xvci1vbi1zdXJmYWNlLXZhcmlhbnQnOiAnI0FBQUZCNScsXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtaG92ZXInOiAncmdiKDI1NSAyNTUgMjU1IC8gMC4wNSknLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLWFjdGl2ZSc6ICdyZ2IoMjU1IDI1NSAyNTUgLyAwLjEpJyxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS1jb250YWluZXInOiAnIzI4MjkyQycsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4xKScsXG4gICAgJy0tbmd4c21rLWNvbG9yLW91dGxpbmUtc3Ryb25nJzogJyM0OTRENTMnLFxuICAgICctLW5neHNtay1jb2xvci1vdXRsaW5lLXZhcmlhbnQnOiAncmdiKDI0MiAyNDQgMjQ2IC8gMC4wNiknLFxuXG4gICAgLy8gRWxldmF0aW9uIGxhZGRlclxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTEnOiB0aGVtZS5uZXV0cmFsWzgwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtMic6IHRoZW1lLm5ldXRyYWxbNzAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3Itc3VyZmFjZS0zJzogdGhlbWUubmV1dHJhbFs2MDBdLFxuICAgICctLW5neHNtay1jb2xvci1zdXJmYWNlLTQnOiB0aGVtZS5uZXV0cmFsWzUwMF0sXG4gICAgJy0tbmd4c21rLWNvbG9yLXN1cmZhY2UtNSc6IHRoZW1lLm5ldXRyYWxbNDAwXSxcblxuICAgICctLW5neHNtay1jb2xvci1yaW5nJzogdGhlbWUuYnJhbmRbNDAwXSxcbiAgICAnLS1uZ3hzbWstY29sb3ItYmFja2Ryb3AnOiAncmdiKDE3IDE3IDE4IC8gMC42KScsXG4gICAgJy0tbmd4c21rLXNoYWRvdy1mb2N1cyc6IGAwIDAgMCAycHggY29sb3ItbWl4KGluIHNyZ2IsICR7dGhlbWUuYnJhbmRbNDAwXX0gMjUlLCB0cmFuc3BhcmVudCksIDAgMCAwIDRweCBjb2xvci1taXgoaW4gc3JnYiwgJHt0aGVtZS5icmFuZFs0MDBdfSA0NSUsIHRyYW5zcGFyZW50KWAsXG4gIH07XG5cbiAgY29uc3QgdGVydGlhcnkgPSBkZXJpdmVTY2FsZShyb3RhdGVIdWUodGhlbWUuYnJhbmRCYXNlLCA2NCkpO1xuICB2YXJzWyctLW5neHNtay1jb2xvci10ZXJ0aWFyeSddID0gdGVydGlhcnlbNDAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnknXSA9IHRlcnRpYXJ5Wzk1MF07XG4gIHZhcnNbJy0tbmd4c21rLWNvbG9yLXRlcnRpYXJ5LWNvbnRhaW5lciddID0gdGVydGlhcnlbOTAwXTtcbiAgdmFyc1snLS1uZ3hzbWstY29sb3Itb24tdGVydGlhcnktY29udGFpbmVyJ10gPSB0ZXJ0aWFyeVsxMDBdO1xuXG4gIGZvciAoY29uc3QgW25hbWUsIGhleF0gb2YgT2JqZWN0LmVudHJpZXModGhlbWUuc2VtYW50aWMpKSB7XG4gICAgY29uc3Qgc2NhbGUgPSBkZXJpdmVTY2FsZShoZXgpO1xuICAgIHZhcnNbYC0tbmd4c21rLWNvbG9yLSR7bmFtZX1gXSA9IHNjYWxlWzQwMF07XG4gICAgdmFyc1tgLS1uZ3hzbWstY29sb3Itb24tJHtuYW1lfWBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbOTUwXTtcbiAgICB2YXJzW2AtLW5neHNtay1jb2xvci1vbi0ke25hbWV9LWNvbnRhaW5lcmBdID0gc2NhbGVbMzAwXTtcbiAgfVxuXG4gIHJldHVybiB7IC4uLnZhcnMsIC4uLnRoZW1lLm92ZXJyaWRlcy5kYXJrIH07XG59XG5cbmZ1bmN0aW9uIGJsb2NrKHNlbGVjdG9yOiBzdHJpbmcsIHZhcnM6IFZhcnMsIGluZGVudCA9ICcnKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBPYmplY3QuZW50cmllcyh2YXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IGAke2luZGVudH0gICR7bmFtZX06ICR7dmFsdWV9O2ApO1xuICByZXR1cm4gYCR7aW5kZW50fSR7c2VsZWN0b3J9IHtcXG4ke2xpbmVzLmpvaW4oJ1xcbicpfVxcbiR7aW5kZW50fX1gO1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhIHRoZW1lIGNvbmZpZyBpbnRvIGEgQ1NTIHN0eWxlc2hlZXQgb2YgYC0tbmd4c21rLSpgIGN1c3RvbVxuICogcHJvcGVydGllcy4gRW1pdHMgc3RhdGljIHRva2VucyBwbHVzIGxpZ2h0LW1vZGUgcm9sZXMgb24gYDpyb290YCwgYW5kXG4gKiBkYXJrLW1vZGUgcm9sZXMgYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmVkIGRhcmstbW9kZSBzdHJhdGVneS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVGhlbWVDc3MoY29uZmlnOiBUaGVtZUNvbmZpZyB8IFJlc29sdmVkVGhlbWUpOiBzdHJpbmcge1xuICBjb25zdCB0aGVtZSA9XG4gICAgJ2JyYW5kJyBpbiBjb25maWcgJiYgJ3NwYWNpbmcnIGluIChjb25maWcgYXMgb2JqZWN0KVxuICAgICAgPyAoY29uZmlnIGFzIFJlc29sdmVkVGhlbWUpXG4gICAgICA6IHJlc29sdmVUaGVtZShjb25maWcgYXMgVGhlbWVDb25maWcpO1xuXG4gIGNvbnN0IHJvb3QgPSBibG9jaygnOnJvb3QnLCB7IC4uLnN0YXRpY1ZhcnModGhlbWUpLCAuLi5saWdodFZhcnModGhlbWUpIH0pO1xuICBjb25zdCBkYXJrID0gZGFya1ZhcnModGhlbWUpO1xuXG4gIGxldCBkYXJrQmxvY2s6IHN0cmluZztcbiAgc3dpdGNoICh0aGVtZS5kYXJrTW9kZS5zdHJhdGVneSkge1xuICAgIGNhc2UgJ21lZGlhJzpcbiAgICAgIGRhcmtCbG9jayA9IGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3N5c3RlbSc6IHtcbiAgICAgIC8vIGBsaWdodC1kYXJrKClgIHN1cHBvcnQgaXMgcGVyLXByb3BlcnR5OyB0aGUgY2xhc3MgYmxvY2sgc3RpbGwgc2VydmVzXG4gICAgICAvLyBhcyB0aGUgb3ZlcnJpZGUgaG9vaywgc28gYHN5c3RlbWAgYmVoYXZlcyBhcyBtZWRpYSArIGNsYXNzLlxuICAgICAgY29uc3QgY24gPSB0aGVtZS5kYXJrTW9kZS5jbGFzc05hbWU7XG4gICAgICBkYXJrQmxvY2sgPSBbXG4gICAgICAgIGBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuJHtibG9jaygnOnJvb3QnLCBkYXJrLCAnICAnKX1cXG59YCxcbiAgICAgICAgYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKSxcbiAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgLy8gYDpyb290LjxjbGFzcz5gIChzcGVjaWZpY2l0eSAwLDIsMCkgcGx1cyBhIGBib2R5YCB2YXJpYW50IGRlZmVuZCB0aGVcbiAgICAgIC8vIGRhcmsgdG9rZW5zIGFnYWluc3QgdGhpcmQtcGFydHkgc3R5bGVzaGVldHMgdGhhdCByZWRlZmluZSBgLS1uZ3hzbWstKmBcbiAgICAgIC8vIG9uIGEgcGxhaW4gYDpyb290YCAoMCwxLDApIOKAlCB0aG9zZSB3b3VsZCBvdGhlcndpc2Ugd2luIGJ5IHNvdXJjZSBvcmRlclxuICAgICAgLy8gd2hlbiBpbmplY3RlZCBpbnRvIDxoZWFkPiBhZnRlciB0aGlzIHNoZWV0LiBUaGUgYmFyZSBgLjxjbGFzcz5gIGtlZXBzXG4gICAgICAvLyBzY29wZWQgKG5vbi1yb290KSBkYXJrIHJlZ2lvbnMgd29ya2luZy5cbiAgICAgIGNvbnN0IGNuID0gdGhlbWUuZGFya01vZGUuY2xhc3NOYW1lO1xuICAgICAgZGFya0Jsb2NrID0gYmxvY2soYDpyb290LiR7Y259LCA6cm9vdC4ke2NufSBib2R5LCAuJHtjbn1gLCBkYXJrKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWR1Y2VkTW90aW9uID0gYEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XFxuICA6cm9vdCB7XFxuICAgIC0tbmd4c21rLW1vdGlvbi1kdXJhdGlvbjogMG1zO1xcbiAgfVxcbn1gO1xuICByZXR1cm4gYC8qIEdlbmVyYXRlZCBieSBAbmd4c21rL3RoZW1lIOKAlCBkbyBub3QgZWRpdCBieSBoYW5kLiAqL1xcbiR7cm9vdH1cXG5cXG4ke2RhcmtCbG9ja31cXG5cXG4ke3JlZHVjZWRNb3Rpb259XFxuYDtcbn1cbiJdfQ==
@@ -1,27 +1,3 @@
1
- /**
2
- * Default preset: Astryx (Meta) blue. Light-mode primary is the exact
3
- * Astryx accent (#0064E0); dark mode brightens it to #2694FE via the
4
- * scale, matching astryx.atmeta.com.
5
- */
6
- export const astryxPreset = {
7
- name: 'astryx',
8
- brand: {
9
- primary: '#0064E0',
10
- primaryScale: {
11
- 50: '#E7F1FE',
12
- 100: '#CFE3FD',
13
- 200: '#9AC6FC',
14
- 300: '#5CA5FB',
15
- 400: '#2694FE',
16
- 500: '#0064E0',
17
- 600: '#0057C2',
18
- 700: '#0046A0',
19
- 800: '#00397F',
20
- 900: '#002C63',
21
- 950: '#001A3D',
22
- },
23
- },
24
- };
25
1
  /** Retained alias so existing violet-themed demos keep working. */
26
2
  export const violetPreset = {
27
3
  name: 'violet',
@@ -58,6 +34,10 @@ export const neutralPreset = {
58
34
  },
59
35
  },
60
36
  };
37
+ /**
38
+ * Default preset: Emerald green. This preset generates the prebuilt
39
+ * `ngxsmk.css` stylesheet shipped with @ngxsmk/theme.
40
+ */
61
41
  export const emeraldPreset = {
62
42
  name: 'emerald',
63
43
  brand: { primary: '#059669' },
@@ -67,10 +47,9 @@ export const rosePreset = {
67
47
  brand: { primary: '#E11D48' },
68
48
  };
69
49
  export const presets = {
70
- astryx: astryxPreset,
71
50
  violet: violetPreset,
72
51
  neutral: neutralPreset,
73
52
  emerald: emeraldPreset,
74
53
  rose: rosePreset,
75
54
  };
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9saWIvcHJlc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQjtJQUN2QyxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRTtRQUNMLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFlBQVksRUFBRTtZQUNaLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtLQUNGO0NBQ0YsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQWdCO0lBQ3ZDLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtDQUM5QixDQUFDO0FBRUYsbUVBQW1FO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0I7SUFDeEMsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUU7UUFDTCxPQUFPLEVBQUUsU0FBUztRQUNsQiwwRUFBMEU7UUFDMUUsWUFBWSxFQUFFO1lBQ1osRUFBRSxFQUFFLFNBQVM7WUFDYixHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztTQUNmO0tBQ0Y7SUFDRCxTQUFTLEVBQUU7UUFDVCwrREFBK0Q7UUFDL0QsSUFBSSxFQUFFO1lBQ0osd0JBQXdCLEVBQUUsU0FBUztZQUNuQywyQkFBMkIsRUFBRSxTQUFTO1lBQ3RDLDhCQUE4QixFQUFFLFNBQVM7WUFDekMsK0JBQStCLEVBQUUsU0FBUztZQUMxQyxxQkFBcUIsRUFBRSxTQUFTO1NBQ2pDO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFnQjtJQUN4QyxJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7Q0FDOUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBZ0I7SUFDckMsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0NBQzlCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQWdDO0lBQ2xELE1BQU0sRUFBRSxZQUFZO0lBQ3BCLE1BQU0sRUFBRSxZQUFZO0lBQ3BCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLElBQUksRUFBRSxVQUFVO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaGVtZUNvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHQgcHJlc2V0OiBBc3RyeXggKE1ldGEpIGJsdWUuIExpZ2h0LW1vZGUgcHJpbWFyeSBpcyB0aGUgZXhhY3RcbiAqIEFzdHJ5eCBhY2NlbnQgKCMwMDY0RTApOyBkYXJrIG1vZGUgYnJpZ2h0ZW5zIGl0IHRvICMyNjk0RkUgdmlhIHRoZVxuICogc2NhbGUsIG1hdGNoaW5nIGFzdHJ5eC5hdG1ldGEuY29tLlxuICovXG5leHBvcnQgY29uc3QgYXN0cnl4UHJlc2V0OiBUaGVtZUNvbmZpZyA9IHtcbiAgbmFtZTogJ2FzdHJ5eCcsXG4gIGJyYW5kOiB7XG4gICAgcHJpbWFyeTogJyMwMDY0RTAnLFxuICAgIHByaW1hcnlTY2FsZToge1xuICAgICAgNTA6ICcjRTdGMUZFJyxcbiAgICAgIDEwMDogJyNDRkUzRkQnLFxuICAgICAgMjAwOiAnIzlBQzZGQycsXG4gICAgICAzMDA6ICcjNUNBNUZCJyxcbiAgICAgIDQwMDogJyMyNjk0RkUnLFxuICAgICAgNTAwOiAnIzAwNjRFMCcsXG4gICAgICA2MDA6ICcjMDA1N0MyJyxcbiAgICAgIDcwMDogJyMwMDQ2QTAnLFxuICAgICAgODAwOiAnIzAwMzk3RicsXG4gICAgICA5MDA6ICcjMDAyQzYzJyxcbiAgICAgIDk1MDogJyMwMDFBM0QnLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vKiogUmV0YWluZWQgYWxpYXMgc28gZXhpc3RpbmcgdmlvbGV0LXRoZW1lZCBkZW1vcyBrZWVwIHdvcmtpbmcuICovXG5leHBvcnQgY29uc3QgdmlvbGV0UHJlc2V0OiBUaGVtZUNvbmZpZyA9IHtcbiAgbmFtZTogJ3Zpb2xldCcsXG4gIGJyYW5kOiB7IHByaW1hcnk6ICcjN0MzQUVEJyB9LFxufTtcblxuLyoqIE1vbm9jaHJvbWUgcHJlc2V0IGluIHRoZSBzcGlyaXQgb2Ygc2hhZGNuL3VpJ3MgZGVmYXVsdCBsb29rLiAqL1xuZXhwb3J0IGNvbnN0IG5ldXRyYWxQcmVzZXQ6IFRoZW1lQ29uZmlnID0ge1xuICBuYW1lOiAnbmV1dHJhbCcsXG4gIGJyYW5kOiB7XG4gICAgcHJpbWFyeTogJyMxODE4MUInLFxuICAgIC8vIEEgbmV1dHJhbCBicmFuZCBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tIGxpZ2h0bmVzcyBhbG9uZSDigJQgcGluIHRoZSBzY2FsZS5cbiAgICBwcmltYXJ5U2NhbGU6IHtcbiAgICAgIDUwOiAnI0ZBRkFGQScsXG4gICAgICAxMDA6ICcjRjRGNEY1JyxcbiAgICAgIDIwMDogJyNFNEU0RTcnLFxuICAgICAgMzAwOiAnI0Q0RDREOCcsXG4gICAgICA0MDA6ICcjQTFBMUFBJyxcbiAgICAgIDUwMDogJyM3MTcxN0EnLFxuICAgICAgNjAwOiAnIzNGM0Y0NicsXG4gICAgICA3MDA6ICcjMjcyNzJBJyxcbiAgICAgIDgwMDogJyMxRjFGMjMnLFxuICAgICAgOTAwOiAnIzE4MTgxQicsXG4gICAgICA5NTA6ICcjMDkwOTBCJyxcbiAgICB9LFxuICB9LFxuICBvdmVycmlkZXM6IHtcbiAgICAvLyBBIG5lYXItYmxhY2sgYnJhbmQgbXVzdCBpbnZlcnQgaW4gZGFyayBtb2RlIHRvIHN0YXkgdmlzaWJsZS5cbiAgICBkYXJrOiB7XG4gICAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeSc6ICcjRkFGQUZBJyxcbiAgICAgICctLW5neHNtay1jb2xvci1vbi1wcmltYXJ5JzogJyMxODE4MUInLFxuICAgICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktaG92ZXInOiAnI0U0RTRFNycsXG4gICAgICAnLS1uZ3hzbWstY29sb3ItcHJpbWFyeS1hY3RpdmUnOiAnI0Q0RDREOCcsXG4gICAgICAnLS1uZ3hzbWstY29sb3ItcmluZyc6ICcjRDRENEQ4JyxcbiAgICB9LFxuICB9LFxufTtcblxuZXhwb3J0IGNvbnN0IGVtZXJhbGRQcmVzZXQ6IFRoZW1lQ29uZmlnID0ge1xuICBuYW1lOiAnZW1lcmFsZCcsXG4gIGJyYW5kOiB7IHByaW1hcnk6ICcjMDU5NjY5JyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHJvc2VQcmVzZXQ6IFRoZW1lQ29uZmlnID0ge1xuICBuYW1lOiAncm9zZScsXG4gIGJyYW5kOiB7IHByaW1hcnk6ICcjRTExRDQ4JyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IHByZXNldHM6IFJlY29yZDxzdHJpbmcsIFRoZW1lQ29uZmlnPiA9IHtcbiAgYXN0cnl4OiBhc3RyeXhQcmVzZXQsXG4gIHZpb2xldDogdmlvbGV0UHJlc2V0LFxuICBuZXV0cmFsOiBuZXV0cmFsUHJlc2V0LFxuICBlbWVyYWxkOiBlbWVyYWxkUHJlc2V0LFxuICByb3NlOiByb3NlUHJlc2V0LFxufTtcbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2V0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3RoZW1lL3NyYy9saWIvcHJlc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxtRUFBbUU7QUFDbkUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFnQjtJQUN2QyxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7Q0FDOUIsQ0FBQztBQUVGLG1FQUFtRTtBQUNuRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWdCO0lBQ3hDLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFO1FBQ0wsT0FBTyxFQUFFLFNBQVM7UUFDbEIsMEVBQTBFO1FBQzFFLFlBQVksRUFBRTtZQUNaLEVBQUUsRUFBRSxTQUFTO1lBQ2IsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsR0FBRyxFQUFFLFNBQVM7U0FDZjtLQUNGO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsK0RBQStEO1FBQy9ELElBQUksRUFBRTtZQUNKLHdCQUF3QixFQUFFLFNBQVM7WUFDbkMsMkJBQTJCLEVBQUUsU0FBUztZQUN0Qyw4QkFBOEIsRUFBRSxTQUFTO1lBQ3pDLCtCQUErQixFQUFFLFNBQVM7WUFDMUMscUJBQXFCLEVBQUUsU0FBUztTQUNqQztLQUNGO0NBQ0YsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBZ0I7SUFDeEMsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0NBQzlCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWdCO0lBQ3JDLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtDQUM5QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFnQztJQUNsRCxNQUFNLEVBQUUsWUFBWTtJQUNwQixPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsYUFBYTtJQUN0QixJQUFJLEVBQUUsVUFBVTtDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGhlbWVDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqIFJldGFpbmVkIGFsaWFzIHNvIGV4aXN0aW5nIHZpb2xldC10aGVtZWQgZGVtb3Mga2VlcCB3b3JraW5nLiAqL1xuZXhwb3J0IGNvbnN0IHZpb2xldFByZXNldDogVGhlbWVDb25maWcgPSB7XG4gIG5hbWU6ICd2aW9sZXQnLFxuICBicmFuZDogeyBwcmltYXJ5OiAnIzdDM0FFRCcgfSxcbn07XG5cbi8qKiBNb25vY2hyb21lIHByZXNldCBpbiB0aGUgc3Bpcml0IG9mIHNoYWRjbi91aSdzIGRlZmF1bHQgbG9vay4gKi9cbmV4cG9ydCBjb25zdCBuZXV0cmFsUHJlc2V0OiBUaGVtZUNvbmZpZyA9IHtcbiAgbmFtZTogJ25ldXRyYWwnLFxuICBicmFuZDoge1xuICAgIHByaW1hcnk6ICcjMTgxODFCJyxcbiAgICAvLyBBIG5ldXRyYWwgYnJhbmQgY2Fubm90IGJlIGRlcml2ZWQgZnJvbSBsaWdodG5lc3MgYWxvbmUg4oCUIHBpbiB0aGUgc2NhbGUuXG4gICAgcHJpbWFyeVNjYWxlOiB7XG4gICAgICA1MDogJyNGQUZBRkEnLFxuICAgICAgMTAwOiAnI0Y0RjRGNScsXG4gICAgICAyMDA6ICcjRTRFNEU3JyxcbiAgICAgIDMwMDogJyNENEQ0RDgnLFxuICAgICAgNDAwOiAnI0ExQTFBQScsXG4gICAgICA1MDA6ICcjNzE3MTdBJyxcbiAgICAgIDYwMDogJyMzRjNGNDYnLFxuICAgICAgNzAwOiAnIzI3MjcyQScsXG4gICAgICA4MDA6ICcjMUYxRjIzJyxcbiAgICAgIDkwMDogJyMxODE4MUInLFxuICAgICAgOTUwOiAnIzA5MDkwQicsXG4gICAgfSxcbiAgfSxcbiAgb3ZlcnJpZGVzOiB7XG4gICAgLy8gQSBuZWFyLWJsYWNrIGJyYW5kIG11c3QgaW52ZXJ0IGluIGRhcmsgbW9kZSB0byBzdGF5IHZpc2libGUuXG4gICAgZGFyazoge1xuICAgICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnknOiAnI0ZBRkFGQScsXG4gICAgICAnLS1uZ3hzbWstY29sb3Itb24tcHJpbWFyeSc6ICcjMTgxODFCJyxcbiAgICAgICctLW5neHNtay1jb2xvci1wcmltYXJ5LWhvdmVyJzogJyNFNEU0RTcnLFxuICAgICAgJy0tbmd4c21rLWNvbG9yLXByaW1hcnktYWN0aXZlJzogJyNENEQ0RDgnLFxuICAgICAgJy0tbmd4c21rLWNvbG9yLXJpbmcnOiAnI0Q0RDREOCcsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogRGVmYXVsdCBwcmVzZXQ6IEVtZXJhbGQgZ3JlZW4uIFRoaXMgcHJlc2V0IGdlbmVyYXRlcyB0aGUgcHJlYnVpbHRcbiAqIGBuZ3hzbWsuY3NzYCBzdHlsZXNoZWV0IHNoaXBwZWQgd2l0aCBAbmd4c21rL3RoZW1lLlxuICovXG5leHBvcnQgY29uc3QgZW1lcmFsZFByZXNldDogVGhlbWVDb25maWcgPSB7XG4gIG5hbWU6ICdlbWVyYWxkJyxcbiAgYnJhbmQ6IHsgcHJpbWFyeTogJyMwNTk2NjknIH0sXG59O1xuXG5leHBvcnQgY29uc3Qgcm9zZVByZXNldDogVGhlbWVDb25maWcgPSB7XG4gIG5hbWU6ICdyb3NlJyxcbiAgYnJhbmQ6IHsgcHJpbWFyeTogJyNFMTFENDgnIH0sXG59O1xuXG5leHBvcnQgY29uc3QgcHJlc2V0czogUmVjb3JkPHN0cmluZywgVGhlbWVDb25maWc+ID0ge1xuICB2aW9sZXQ6IHZpb2xldFByZXNldCxcbiAgbmV1dHJhbDogbmV1dHJhbFByZXNldCxcbiAgZW1lcmFsZDogZW1lcmFsZFByZXNldCxcbiAgcm9zZTogcm9zZVByZXNldCxcbn07XG4iXX0=
@@ -1,8 +1,7 @@
1
1
  /**
2
- * Cool blue-grey neutral scale matching the Astryx (Meta) design language.
3
- * Light steps carry a subtle blue tint; the darkest steps flatten toward
4
- * a near-neutral charcoal so dark-mode surfaces read like Astryx's
5
- * (#111112 body / #1F1F22 card) rather than a saturated navy.
2
+ * Cool blue-grey neutral scale. Light steps carry a subtle blue tint; the
3
+ * darkest steps flatten toward a near-neutral charcoal so dark-mode
4
+ * surfaces read like a soft, desaturated navy rather than a saturated one.
6
5
  */
7
6
  export const DEFAULT_NEUTRAL = {
8
7
  50: '#F1F4F7',
@@ -21,7 +20,7 @@ export const DEFAULT_SEMANTIC = {
21
20
  success: '#0D8626',
22
21
  warning: '#E9AF08',
23
22
  error: '#E3193B',
24
- info: '#0064E0',
23
+ info: '#2563EB',
25
24
  };
26
25
  export const DEFAULT_FONT_FAMILY = {
27
26
  sans: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
@@ -79,9 +78,9 @@ export const SPACING = {
79
78
  '32': '8rem',
80
79
  };
81
80
  /**
82
- * Astryx radius scale: inner 4px, element 8px (buttons/inputs, the base),
81
+ * Radius scale: inner 4px, element 8px (buttons/inputs, the base),
83
82
  * container 12px (cards), then progressively larger through 28px "page"
84
- * rounding. Deliberately generous — Astryx reads soft and rounded.
83
+ * rounding. Deliberately generous so surfaces read soft and rounded.
85
84
  */
86
85
  export const RADIUS = {
87
86
  none: '0px',
@@ -94,9 +93,9 @@ export const RADIUS = {
94
93
  full: '9999px',
95
94
  };
96
95
  /**
97
- * Soft, diffuse, layered shadows in the Astryx style (two stacked blurs,
98
- * low alpha). Overlay CSS resolves these to slightly stronger values in
99
- * dark mode via the elevation tokens on each surface.
96
+ * Soft, diffuse, layered shadows (two stacked blurs, low alpha). Overlay
97
+ * CSS resolves these to slightly stronger values in dark mode via the
98
+ * elevation tokens on each surface.
100
99
  */
101
100
  export const SHADOW = {
102
101
  sm: '0 1px 1px rgb(0 0 0 / 0.08), 0 2px 8px rgb(0 0 0 / 0.08)',
@@ -134,4 +133,4 @@ export const EASING = {
134
133
  'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',
135
134
  emphasized: 'cubic-bezier(0.2, 0, 0, 1)',
136
135
  };
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWU7SUFDekMsRUFBRSxFQUFFLFNBQVM7SUFDYixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBbUI7SUFDOUMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsSUFBSSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFpQjtJQUMvQyxJQUFJLEVBQUUsMkRBQTJEO0lBQ2pFLElBQUksRUFBRSwyREFBMkQ7Q0FDbEUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFvQjtJQUNqRCxPQUFPLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUMvRCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNuRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUNqRTtJQUNELFFBQVEsRUFBRTtRQUNSLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2pFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzdEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxJQUFJLEVBQUU7UUFDSixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUM1RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNsRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM5RDtJQUNELEtBQUssRUFBRTtRQUNMLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2pFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzlELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2hFO0NBQ0YsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBMkI7SUFDN0MsR0FBRyxFQUFFLEtBQUs7SUFDVixLQUFLLEVBQUUsVUFBVTtJQUNqQixHQUFHLEVBQUUsU0FBUztJQUNkLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxRQUFRO0lBQ2IsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsTUFBTTtJQUNYLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsTUFBTTtJQUNYLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUEyQjtJQUM1QyxJQUFJLEVBQUUsS0FBSztJQUNYLEVBQUUsRUFBRSxTQUFTLEVBQUUsMENBQTBDO0lBQ3pELEVBQUUsRUFBRSxRQUFRLEVBQUUsa0RBQWtEO0lBQ2hFLEVBQUUsRUFBRSxTQUFTLEVBQUUscUNBQXFDO0lBQ3BELEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTztJQUNuQixLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU87SUFDekIsS0FBSyxFQUFFLFNBQVMsRUFBRSw4QkFBOEI7SUFDaEQsSUFBSSxFQUFFLFFBQVE7Q0FDZixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsRUFBRSxFQUFFLDBEQUEwRDtJQUM5RCxFQUFFLEVBQUUseURBQXlEO0lBQzdELEVBQUUsRUFBRSwwREFBMEQ7SUFDOUQsRUFBRSxFQUFFLDJEQUEyRDtJQUMvRCxLQUFLLEVBQUUsNkRBQTZEO0NBQ3JFLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUEyQjtJQUM3QyxRQUFRLEVBQUUsTUFBTTtJQUNoQixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxNQUFNO0lBQ2QsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0lBQ2YsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsTUFBTTtDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUEyQjtJQUM5QyxPQUFPLEVBQUUsS0FBSztJQUNkLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87SUFDZixJQUFJLEVBQUUsT0FBTztJQUNiLE1BQU0sRUFBRSxPQUFPO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCO0lBQzVDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEVBQUUsRUFBRSw0QkFBNEI7SUFDaEMsR0FBRyxFQUFFLDRCQUE0QjtJQUNqQyxRQUFRLEVBQUUsOEJBQThCO0lBQ3hDLFVBQVUsRUFBRSw0QkFBNEI7Q0FDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yU2NhbGUsIEZvbnRGYW1pbGllcywgU2VtYW50aWNDb2xvcnMsIFR5cG9ncmFwaHlTY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIENvb2wgYmx1ZS1ncmV5IG5ldXRyYWwgc2NhbGUgbWF0Y2hpbmcgdGhlIEFzdHJ5eCAoTWV0YSkgZGVzaWduIGxhbmd1YWdlLlxuICogTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGUgZGFya2VzdCBzdGVwcyBmbGF0dGVuIHRvd2FyZFxuICogYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlIHN1cmZhY2VzIHJlYWQgbGlrZSBBc3RyeXgnc1xuICogKCMxMTExMTIgYm9keSAvICMxRjFGMjIgY2FyZCkgcmF0aGVyIHRoYW4gYSBzYXR1cmF0ZWQgbmF2eS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzAwNjRFMCcsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbmV4cG9ydCBjb25zdCBTUEFDSU5HOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnMCc6ICcwcHgnLFxuICAnMC01JzogJzAuMTI1cmVtJyxcbiAgJzEnOiAnMC4yNXJlbScsXG4gICcxLTUnOiAnMC4zNzVyZW0nLFxuICAnMic6ICcwLjVyZW0nLFxuICAnMyc6ICcwLjc1cmVtJyxcbiAgJzQnOiAnMXJlbScsXG4gICc1JzogJzEuMjVyZW0nLFxuICAnNic6ICcxLjVyZW0nLFxuICAnOCc6ICcycmVtJyxcbiAgJzEwJzogJzIuNXJlbScsXG4gICcxMic6ICczcmVtJyxcbiAgJzE2JzogJzRyZW0nLFxuICAnMjAnOiAnNXJlbScsXG4gICcyNCc6ICc2cmVtJyxcbiAgJzMyJzogJzhyZW0nLFxufTtcblxuLyoqXG4gKiBBc3RyeXggcmFkaXVzIHNjYWxlOiBpbm5lciA0cHgsIGVsZW1lbnQgOHB4IChidXR0b25zL2lucHV0cywgdGhlIGJhc2UpLFxuICogY29udGFpbmVyIDEycHggKGNhcmRzKSwgdGhlbiBwcm9ncmVzc2l2ZWx5IGxhcmdlciB0aHJvdWdoIDI4cHggXCJwYWdlXCJcbiAqIHJvdW5kaW5nLiBEZWxpYmVyYXRlbHkgZ2VuZXJvdXMg4oCUIEFzdHJ5eCByZWFkcyBzb2Z0IGFuZCByb3VuZGVkLlxuICovXG5leHBvcnQgY29uc3QgUkFESVVTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBub25lOiAnMHB4JyxcbiAgc206ICcwLjI1cmVtJywgLy8gNHB4ICDigJQgaW5uZXIgKG5lc3RlZCBjaGlwcywgY2hlY2tib3hlcylcbiAgbWQ6ICcwLjVyZW0nLCAvLyA4cHggIOKAlCBlbGVtZW50IChidXR0b25zLCBpbnB1dHMpIOKAlCBkZWZhdWx0IGJhc2VcbiAgbGc6ICcwLjc1cmVtJywgLy8gMTJweCDigJQgY29udGFpbmVyIChjYXJkcywgcG9wb3ZlcnMpXG4gIHhsOiAnMXJlbScsIC8vIDE2cHhcbiAgJzJ4bCc6ICcxLjI1cmVtJywgLy8gMjBweFxuICAnM3hsJzogJzEuNzVyZW0nLCAvLyAyOHB4IOKAlCBwYWdlIC8gaGVybyBzdXJmYWNlc1xuICBmdWxsOiAnOTk5OXB4Jyxcbn07XG5cbi8qKlxuICogU29mdCwgZGlmZnVzZSwgbGF5ZXJlZCBzaGFkb3dzIGluIHRoZSBBc3RyeXggc3R5bGUgKHR3byBzdGFja2VkIGJsdXJzLFxuICogbG93IGFscGhhKS4gT3ZlcmxheSBDU1MgcmVzb2x2ZXMgdGhlc2UgdG8gc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluXG4gKiBkYXJrIG1vZGUgdmlhIHRoZSBlbGV2YXRpb24gdG9rZW5zIG9uIGVhY2ggc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wOCksIDAgMnB4IDhweCByZ2IoMCAwIDAgLyAwLjA4KScsXG4gIG1kOiAnMCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDEycHggcmdiKDAgMCAwIC8gMC4xKScsXG4gIGxnOiAnMCAycHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgOHB4IDI0cHggcmdiKDAgMCAwIC8gMC4xMiknLFxuICB4bDogJzAgNHB4IDZweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDEycHggMzJweCByZ2IoMCAwIDAgLyAwLjE2KScsXG4gICcyeGwnOiAnMCA4cHggMTJweCByZ2IoMCAwIDAgLyAwLjE0KSwgMCAyNHB4IDQ4cHggcmdiKDAgMCAwIC8gMC4yMiknLFxufTtcblxuLyoqXG4gKiBTdGFja2luZyBsYWRkZXIgZm9yIG92ZXJsYXkgY29tcG9uZW50cy4gQW5jaG9yZWQgcG9wdXBzIHNpdCBsb3dlc3Q7XG4gKiB0b29sdGlwcyBhbHdheXMgd2luLiBDb21wb25lbnRzIG11c3QgdXNlIHRoZXNlIGluc3RlYWQgb2YgYWQtaG9jIHZhbHVlc1xuICogc28gb3ZlcmxheXMgbmV2ZXIgZmlnaHQgZWFjaCBvdGhlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFpfSU5ERVg6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRyb3Bkb3duOiAnMTAwMCcsXG4gIHN0aWNreTogJzExMDAnLFxuICBiYW5uZXI6ICcxMjAwJyxcbiAgb3ZlcmxheTogJzEzMDAnLFxuICBtb2RhbDogJzE0MDAnLFxuICBwb3BvdmVyOiAnMTUwMCcsXG4gIHRvYXN0OiAnMTYwMCcsXG4gIHRvb2x0aXA6ICcxNzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgaW5zdGFudDogJzBtcycsXG4gIGZhc3Q6ICcxMDBtcycsXG4gIG5vcm1hbDogJzIwMG1zJyxcbiAgc2xvdzogJzMwMG1zJyxcbiAgc2xvd2VyOiAnNTAwbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEVBU0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbGluZWFyOiAnbGluZWFyJyxcbiAgaW46ICdjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKScsXG4gIG91dDogJ2N1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgJ2luLW91dCc6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgZW1waGFzaXplZDogJ2N1YmljLWJlemllcigwLjIsIDAsIDAsIDEpJyxcbn07XG4iXX0=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGhlbWUvc3JjL2xpYi90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBZTtJQUN6QyxFQUFFLEVBQUUsU0FBUztJQUNiLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFtQjtJQUM5QyxPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsU0FBUztJQUNsQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWlCO0lBQy9DLElBQUksRUFBRSwyREFBMkQ7SUFDakUsSUFBSSxFQUFFLDJEQUEyRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELE9BQU8sRUFBRTtRQUNQLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQy9ELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ25FLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQ2pFO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDNUQsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDN0Q7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtRQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtLQUM3RDtJQUNELElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO0tBQzlEO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDakUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7UUFDOUQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7S0FDaEU7Q0FDRixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUEyQjtJQUM3QyxHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxVQUFVO0lBQ2pCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsS0FBSyxFQUFFLFVBQVU7SUFDakIsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxNQUFNO0lBQ1gsSUFBSSxFQUFFLFFBQVE7SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQTJCO0lBQzVDLElBQUksRUFBRSxLQUFLO0lBQ1gsRUFBRSxFQUFFLFNBQVMsRUFBRSwwQ0FBMEM7SUFDekQsRUFBRSxFQUFFLFFBQVEsRUFBRSxrREFBa0Q7SUFDaEUsRUFBRSxFQUFFLFNBQVMsRUFBRSxxQ0FBcUM7SUFDcEQsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztJQUN6QixLQUFLLEVBQUUsU0FBUyxFQUFFLDhCQUE4QjtJQUNoRCxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUEyQjtJQUM1QyxFQUFFLEVBQUUsMERBQTBEO0lBQzlELEVBQUUsRUFBRSx5REFBeUQ7SUFDN0QsRUFBRSxFQUFFLDBEQUEwRDtJQUM5RCxFQUFFLEVBQUUsMkRBQTJEO0lBQy9ELEtBQUssRUFBRSw2REFBNkQ7Q0FDckUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTJCO0lBQzdDLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE1BQU07SUFDZCxPQUFPLEVBQUUsTUFBTTtJQUNmLEtBQUssRUFBRSxNQUFNO0lBQ2IsT0FBTyxFQUFFLE1BQU07SUFDZixLQUFLLEVBQUUsTUFBTTtJQUNiLE9BQU8sRUFBRSxNQUFNO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQTJCO0lBQzlDLE9BQU8sRUFBRSxLQUFLO0lBQ2QsSUFBSSxFQUFFLE9BQU87SUFDYixNQUFNLEVBQUUsT0FBTztJQUNmLElBQUksRUFBRSxPQUFPO0lBQ2IsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBMkI7SUFDNUMsTUFBTSxFQUFFLFFBQVE7SUFDaEIsRUFBRSxFQUFFLDRCQUE0QjtJQUNoQyxHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsVUFBVSxFQUFFLDRCQUE0QjtDQUN6QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sb3JTY2FsZSwgRm9udEZhbWlsaWVzLCBTZW1hbnRpY0NvbG9ycywgVHlwb2dyYXBoeVNjYWxlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29vbCBibHVlLWdyZXkgbmV1dHJhbCBzY2FsZS4gTGlnaHQgc3RlcHMgY2FycnkgYSBzdWJ0bGUgYmx1ZSB0aW50OyB0aGVcbiAqIGRhcmtlc3Qgc3RlcHMgZmxhdHRlbiB0b3dhcmQgYSBuZWFyLW5ldXRyYWwgY2hhcmNvYWwgc28gZGFyay1tb2RlXG4gKiBzdXJmYWNlcyByZWFkIGxpa2UgYSBzb2Z0LCBkZXNhdHVyYXRlZCBuYXZ5IHJhdGhlciB0aGFuIGEgc2F0dXJhdGVkIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTkVVVFJBTDogQ29sb3JTY2FsZSA9IHtcbiAgNTA6ICcjRjFGNEY3JyxcbiAgMTAwOiAnI0U0RTlFRScsXG4gIDIwMDogJyNDQ0QzREInLFxuICAzMDA6ICcjQTRCMEJDJyxcbiAgNDAwOiAnIzc3ODU5MycsXG4gIDUwMDogJyM0RTYwNkYnLFxuICA2MDA6ICcjM0E0NjUwJyxcbiAgNzAwOiAnIzJBMzMzQicsXG4gIDgwMDogJyMxRjFGMjInLFxuICA5MDA6ICcjMTgxODFBJyxcbiAgOTUwOiAnIzExMTExMicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRU1BTlRJQzogU2VtYW50aWNDb2xvcnMgPSB7XG4gIHN1Y2Nlc3M6ICcjMEQ4NjI2JyxcbiAgd2FybmluZzogJyNFOUFGMDgnLFxuICBlcnJvcjogJyNFMzE5M0InLFxuICBpbmZvOiAnIzI1NjNFQicsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX0ZBTUlMWTogRm9udEZhbWlsaWVzID0ge1xuICBzYW5zOiBcIidJbnRlcicsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgJ1NlZ29lIFVJJywgc2Fucy1zZXJpZlwiLFxuICBtb25vOiBcIidKZXRCcmFpbnMgTW9ubycsICdGaXJhIENvZGUnLCAnQ2FzY2FkaWEgQ29kZScsIG1vbm9zcGFjZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQT0dSQVBIWTogVHlwb2dyYXBoeVNjYWxlID0ge1xuICBkaXNwbGF5OiB7XG4gICAgbGFyZ2U6IHsgc2l6ZTogJzMuNTYyNXJlbScsIGxpbmVIZWlnaHQ6ICc0cmVtJywgd2VpZ2h0OiAnNzAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMi44MTI1cmVtJywgbGluZUhlaWdodDogJzMuMjVyZW0nLCB3ZWlnaHQ6ICc3MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzIuMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMi43NXJlbScsIHdlaWdodDogJzcwMCcgfSxcbiAgfSxcbiAgaGVhZGxpbmU6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMnJlbScsIGxpbmVIZWlnaHQ6ICcyLjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgbWVkaXVtOiB7IHNpemU6ICcxLjc1cmVtJywgbGluZUhlaWdodDogJzIuMjVyZW0nLCB3ZWlnaHQ6ICc2MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzEuNXJlbScsIGxpbmVIZWlnaHQ6ICcycmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICB9LFxuICB0aXRsZToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxLjM3NXJlbScsIGxpbmVIZWlnaHQ6ICcxLjc1cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIG1lZGl1bTogeyBzaXplOiAnMS4xMjVyZW0nLCBsaW5lSGVpZ2h0OiAnMS41cmVtJywgd2VpZ2h0OiAnNjAwJyB9LFxuICAgIHNtYWxsOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzYwMCcgfSxcbiAgfSxcbiAgYm9keToge1xuICAgIGxhcmdlOiB7IHNpemU6ICcxcmVtJywgbGluZUhlaWdodDogJzEuNXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuODc1cmVtJywgbGluZUhlaWdodDogJzEuMjVyZW0nLCB3ZWlnaHQ6ICc0MDAnIH0sXG4gICAgc21hbGw6IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzQwMCcgfSxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBsYXJnZTogeyBzaXplOiAnMC44NzVyZW0nLCBsaW5lSGVpZ2h0OiAnMS4yNXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBtZWRpdW06IHsgc2l6ZTogJzAuNzVyZW0nLCBsaW5lSGVpZ2h0OiAnMXJlbScsIHdlaWdodDogJzUwMCcgfSxcbiAgICBzbWFsbDogeyBzaXplOiAnMC42ODc1cmVtJywgbGluZUhlaWdodDogJzFyZW0nLCB3ZWlnaHQ6ICc1MDAnIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIFN0YW5kYXJkIGhlaWdodCBmb3Igc2luZ2xlLWxpbmUgdGV4dCBjb250cm9scyAoaW5wdXQsIHNlbGVjdCwgbnVtYmVyLWlucHV0LFxuICogY29tYm9ib3gsIGlucHV0LWdyb3VwLCBwb3dlci1zZWFyY2gsIG11bHRpLXNlbGVjdCkuIEFsbCBjb250cm9scyBpbiB0aGVcbiAqIGZhbWlseSB1c2UgdGhpcyBzbyB0aGV5IHJlYWQgYXMgb25lIGNvbnNpc3RlbnQgc2l6ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRST0xfSEVJR0hUID0gJzIuNXJlbSc7XG5cbmV4cG9ydCBjb25zdCBTUEFDSU5HOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnMCc6ICcwcHgnLFxuICAnMC01JzogJzAuMTI1cmVtJyxcbiAgJzEnOiAnMC4yNXJlbScsXG4gICcxLTUnOiAnMC4zNzVyZW0nLFxuICAnMic6ICcwLjVyZW0nLFxuICAnMyc6ICcwLjc1cmVtJyxcbiAgJzQnOiAnMXJlbScsXG4gICc1JzogJzEuMjVyZW0nLFxuICAnNic6ICcxLjVyZW0nLFxuICAnOCc6ICcycmVtJyxcbiAgJzEwJzogJzIuNXJlbScsXG4gICcxMic6ICczcmVtJyxcbiAgJzE2JzogJzRyZW0nLFxuICAnMjAnOiAnNXJlbScsXG4gICcyNCc6ICc2cmVtJyxcbiAgJzMyJzogJzhyZW0nLFxufTtcblxuLyoqXG4gKiBSYWRpdXMgc2NhbGU6IGlubmVyIDRweCwgZWxlbWVudCA4cHggKGJ1dHRvbnMvaW5wdXRzLCB0aGUgYmFzZSksXG4gKiBjb250YWluZXIgMTJweCAoY2FyZHMpLCB0aGVuIHByb2dyZXNzaXZlbHkgbGFyZ2VyIHRocm91Z2ggMjhweCBcInBhZ2VcIlxuICogcm91bmRpbmcuIERlbGliZXJhdGVseSBnZW5lcm91cyBzbyBzdXJmYWNlcyByZWFkIHNvZnQgYW5kIHJvdW5kZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBSQURJVVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIG5vbmU6ICcwcHgnLFxuICBzbTogJzAuMjVyZW0nLCAvLyA0cHggIOKAlCBpbm5lciAobmVzdGVkIGNoaXBzLCBjaGVja2JveGVzKVxuICBtZDogJzAuNXJlbScsIC8vIDhweCAg4oCUIGVsZW1lbnQgKGJ1dHRvbnMsIGlucHV0cykg4oCUIGRlZmF1bHQgYmFzZVxuICBsZzogJzAuNzVyZW0nLCAvLyAxMnB4IOKAlCBjb250YWluZXIgKGNhcmRzLCBwb3BvdmVycylcbiAgeGw6ICcxcmVtJywgLy8gMTZweFxuICAnMnhsJzogJzEuMjVyZW0nLCAvLyAyMHB4XG4gICczeGwnOiAnMS43NXJlbScsIC8vIDI4cHgg4oCUIHBhZ2UgLyBoZXJvIHN1cmZhY2VzXG4gIGZ1bGw6ICc5OTk5cHgnLFxufTtcblxuLyoqXG4gKiBTb2Z0LCBkaWZmdXNlLCBsYXllcmVkIHNoYWRvd3MgKHR3byBzdGFja2VkIGJsdXJzLCBsb3cgYWxwaGEpLiBPdmVybGF5XG4gKiBDU1MgcmVzb2x2ZXMgdGhlc2UgdG8gc2xpZ2h0bHkgc3Ryb25nZXIgdmFsdWVzIGluIGRhcmsgbW9kZSB2aWEgdGhlXG4gKiBlbGV2YXRpb24gdG9rZW5zIG9uIGVhY2ggc3VyZmFjZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNIQURPVzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgc206ICcwIDFweCAxcHggcmdiKDAgMCAwIC8gMC4wOCksIDAgMnB4IDhweCByZ2IoMCAwIDAgLyAwLjA4KScsXG4gIG1kOiAnMCAxcHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDEycHggcmdiKDAgMCAwIC8gMC4xKScsXG4gIGxnOiAnMCAycHggMnB4IHJnYigwIDAgMCAvIDAuMSksIDAgOHB4IDI0cHggcmdiKDAgMCAwIC8gMC4xMiknLFxuICB4bDogJzAgNHB4IDZweCByZ2IoMCAwIDAgLyAwLjEpLCAwIDEycHggMzJweCByZ2IoMCAwIDAgLyAwLjE2KScsXG4gICcyeGwnOiAnMCA4cHggMTJweCByZ2IoMCAwIDAgLyAwLjE0KSwgMCAyNHB4IDQ4cHggcmdiKDAgMCAwIC8gMC4yMiknLFxufTtcblxuLyoqXG4gKiBTdGFja2luZyBsYWRkZXIgZm9yIG92ZXJsYXkgY29tcG9uZW50cy4gQW5jaG9yZWQgcG9wdXBzIHNpdCBsb3dlc3Q7XG4gKiB0b29sdGlwcyBhbHdheXMgd2luLiBDb21wb25lbnRzIG11c3QgdXNlIHRoZXNlIGluc3RlYWQgb2YgYWQtaG9jIHZhbHVlc1xuICogc28gb3ZlcmxheXMgbmV2ZXIgZmlnaHQgZWFjaCBvdGhlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFpfSU5ERVg6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGRyb3Bkb3duOiAnMTAwMCcsXG4gIHN0aWNreTogJzExMDAnLFxuICBiYW5uZXI6ICcxMjAwJyxcbiAgb3ZlcmxheTogJzEzMDAnLFxuICBtb2RhbDogJzE0MDAnLFxuICBwb3BvdmVyOiAnMTUwMCcsXG4gIHRvYXN0OiAnMTYwMCcsXG4gIHRvb2x0aXA6ICcxNzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgaW5zdGFudDogJzBtcycsXG4gIGZhc3Q6ICcxMDBtcycsXG4gIG5vcm1hbDogJzIwMG1zJyxcbiAgc2xvdzogJzMwMG1zJyxcbiAgc2xvd2VyOiAnNTAwbXMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEVBU0lORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgbGluZWFyOiAnbGluZWFyJyxcbiAgaW46ICdjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKScsXG4gIG91dDogJ2N1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJyxcbiAgJ2luLW91dCc6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgZW1waGFzaXplZDogJ2N1YmljLWJlemllcigwLjIsIDAsIDAsIDEpJyxcbn07XG4iXX0=
@@ -126,10 +126,9 @@ function deriveScale(baseHex) {
126
126
  }
127
127
 
128
128
  /**
129
- * Cool blue-grey neutral scale matching the Astryx (Meta) design language.
130
- * Light steps carry a subtle blue tint; the darkest steps flatten toward
131
- * a near-neutral charcoal so dark-mode surfaces read like Astryx's
132
- * (#111112 body / #1F1F22 card) rather than a saturated navy.
129
+ * Cool blue-grey neutral scale. Light steps carry a subtle blue tint; the
130
+ * darkest steps flatten toward a near-neutral charcoal so dark-mode
131
+ * surfaces read like a soft, desaturated navy rather than a saturated one.
133
132
  */
134
133
  const DEFAULT_NEUTRAL = {
135
134
  50: '#F1F4F7',
@@ -148,7 +147,7 @@ const DEFAULT_SEMANTIC = {
148
147
  success: '#0D8626',
149
148
  warning: '#E9AF08',
150
149
  error: '#E3193B',
151
- info: '#0064E0',
150
+ info: '#2563EB',
152
151
  };
153
152
  const DEFAULT_FONT_FAMILY = {
154
153
  sans: "'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif",
@@ -206,9 +205,9 @@ const SPACING = {
206
205
  '32': '8rem',
207
206
  };
208
207
  /**
209
- * Astryx radius scale: inner 4px, element 8px (buttons/inputs, the base),
208
+ * Radius scale: inner 4px, element 8px (buttons/inputs, the base),
210
209
  * container 12px (cards), then progressively larger through 28px "page"
211
- * rounding. Deliberately generous — Astryx reads soft and rounded.
210
+ * rounding. Deliberately generous so surfaces read soft and rounded.
212
211
  */
213
212
  const RADIUS = {
214
213
  none: '0px',
@@ -221,9 +220,9 @@ const RADIUS = {
221
220
  full: '9999px',
222
221
  };
223
222
  /**
224
- * Soft, diffuse, layered shadows in the Astryx style (two stacked blurs,
225
- * low alpha). Overlay CSS resolves these to slightly stronger values in
226
- * dark mode via the elevation tokens on each surface.
223
+ * Soft, diffuse, layered shadows (two stacked blurs, low alpha). Overlay
224
+ * CSS resolves these to slightly stronger values in dark mode via the
225
+ * elevation tokens on each surface.
227
226
  */
228
227
  const SHADOW = {
229
228
  sm: '0 1px 1px rgb(0 0 0 / 0.08), 0 2px 8px rgb(0 0 0 / 0.08)',
@@ -404,7 +403,7 @@ function lightVars(theme) {
404
403
  '--ngxsmk-color-secondary-active': shiftLightness(theme.secondaryBase, -14),
405
404
  '--ngxsmk-color-secondary-container': theme.secondary[100],
406
405
  '--ngxsmk-color-on-secondary-container': theme.secondary[900],
407
- // Astryx: cool-grey body, white cards floating on top, hairline borders.
406
+ // Default light theme: cool-grey body, white cards floating on top, hairline borders.
408
407
  '--ngxsmk-color-background': theme.neutral[50],
409
408
  '--ngxsmk-color-on-background': '#0A1317',
410
409
  '--ngxsmk-color-surface': '#FFFFFF',
@@ -457,7 +456,7 @@ function darkVars(theme) {
457
456
  '--ngxsmk-color-secondary-active': theme.secondary[200],
458
457
  '--ngxsmk-color-secondary-container': theme.secondary[900],
459
458
  '--ngxsmk-color-on-secondary-container': theme.secondary[100],
460
- // Astryx dark: near-neutral charcoal body, slightly lighter card,
459
+ // Default dark theme: near-neutral charcoal body, slightly lighter card,
461
460
  // lighter still for popovers; hairline light-on-dark borders.
462
461
  '--ngxsmk-color-background': '#111112',
463
462
  '--ngxsmk-color-on-background': '#DFE2E5',
@@ -539,30 +538,6 @@ function buildThemeCss(config) {
539
538
  return `/* Generated by @ngxsmk/theme — do not edit by hand. */\n${root}\n\n${darkBlock}\n\n${reducedMotion}\n`;
540
539
  }
541
540
 
542
- /**
543
- * Default preset: Astryx (Meta) blue. Light-mode primary is the exact
544
- * Astryx accent (#0064E0); dark mode brightens it to #2694FE via the
545
- * scale, matching astryx.atmeta.com.
546
- */
547
- const astryxPreset = {
548
- name: 'astryx',
549
- brand: {
550
- primary: '#0064E0',
551
- primaryScale: {
552
- 50: '#E7F1FE',
553
- 100: '#CFE3FD',
554
- 200: '#9AC6FC',
555
- 300: '#5CA5FB',
556
- 400: '#2694FE',
557
- 500: '#0064E0',
558
- 600: '#0057C2',
559
- 700: '#0046A0',
560
- 800: '#00397F',
561
- 900: '#002C63',
562
- 950: '#001A3D',
563
- },
564
- },
565
- };
566
541
  /** Retained alias so existing violet-themed demos keep working. */
567
542
  const violetPreset = {
568
543
  name: 'violet',
@@ -599,6 +574,10 @@ const neutralPreset = {
599
574
  },
600
575
  },
601
576
  };
577
+ /**
578
+ * Default preset: Emerald green. This preset generates the prebuilt
579
+ * `ngxsmk.css` stylesheet shipped with @ngxsmk/theme.
580
+ */
602
581
  const emeraldPreset = {
603
582
  name: 'emerald',
604
583
  brand: { primary: '#059669' },
@@ -608,7 +587,6 @@ const rosePreset = {
608
587
  brand: { primary: '#E11D48' },
609
588
  };
610
589
  const presets = {
611
- astryx: astryxPreset,
612
590
  violet: violetPreset,
613
591
  neutral: neutralPreset,
614
592
  emerald: emeraldPreset,
@@ -699,5 +677,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
699
677
  * Generated bundle index. Do not edit.
700
678
  */
701
679
 
702
- export { CONTROL_HEIGHT, DEFAULT_FONT_FAMILY, DEFAULT_NEUTRAL, DEFAULT_SEMANTIC, DEFAULT_TYPOGRAPHY, DURATION, EASING, NgxsmkThemeService, RADIUS, SHADOW, SPACING, Z_INDEX, astryxPreset, buildThemeCss, defineConfig, deriveScale, emeraldPreset, hexToHsl, hslToHex, neutralPreset, presets, resolveTheme, rosePreset, rotateHue, shiftLightness, violetPreset };
680
+ export { CONTROL_HEIGHT, DEFAULT_FONT_FAMILY, DEFAULT_NEUTRAL, DEFAULT_SEMANTIC, DEFAULT_TYPOGRAPHY, DURATION, EASING, NgxsmkThemeService, RADIUS, SHADOW, SPACING, Z_INDEX, buildThemeCss, defineConfig, deriveScale, emeraldPreset, hexToHsl, hslToHex, neutralPreset, presets, resolveTheme, rosePreset, rotateHue, shiftLightness, violetPreset };
703
681
  //# sourceMappingURL=ngxsmk-theme.mjs.map