@ngrx/signals 18.0.0-rc.1 → 18.0.0-rc.3

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.
Files changed (69) hide show
  1. package/entities/src/entity-config.d.ts +17 -0
  2. package/entities/src/helpers.d.ts +9 -9
  3. package/entities/src/index.d.ts +2 -1
  4. package/entities/src/models.d.ts +4 -7
  5. package/entities/src/updaters/add-entities.d.ts +3 -3
  6. package/entities/src/updaters/add-entity.d.ts +3 -3
  7. package/entities/src/updaters/set-all-entities.d.ts +3 -3
  8. package/entities/src/updaters/set-entities.d.ts +3 -3
  9. package/entities/src/updaters/set-entity.d.ts +3 -3
  10. package/entities/src/updaters/update-all-entities.d.ts +14 -3
  11. package/entities/src/updaters/update-entities.d.ts +45 -11
  12. package/entities/src/updaters/update-entity.d.ts +23 -6
  13. package/entities/src/with-entities.d.ts +8 -20
  14. package/esm2022/entities/src/entity-config.mjs +4 -0
  15. package/esm2022/entities/src/helpers.mjs +28 -12
  16. package/esm2022/entities/src/index.mjs +2 -1
  17. package/esm2022/entities/src/models.mjs +1 -1
  18. package/esm2022/entities/src/updaters/add-entities.mjs +4 -4
  19. package/esm2022/entities/src/updaters/add-entity.mjs +4 -4
  20. package/esm2022/entities/src/updaters/set-all-entities.mjs +4 -4
  21. package/esm2022/entities/src/updaters/set-entities.mjs +4 -4
  22. package/esm2022/entities/src/updaters/set-entity.mjs +4 -4
  23. package/esm2022/entities/src/updaters/update-all-entities.mjs +4 -3
  24. package/esm2022/entities/src/updaters/update-entities.mjs +4 -3
  25. package/esm2022/entities/src/updaters/update-entity.mjs +4 -3
  26. package/esm2022/entities/src/with-entities.mjs +1 -1
  27. package/esm2022/rxjs-interop/src/rx-method.mjs +1 -1
  28. package/esm2022/src/index.mjs +2 -3
  29. package/esm2022/src/signal-state.mjs +7 -7
  30. package/esm2022/src/signal-store-assertions.mjs +15 -0
  31. package/esm2022/src/signal-store-feature.mjs +1 -1
  32. package/esm2022/src/signal-store-models.mjs +1 -1
  33. package/esm2022/src/signal-store.mjs +16 -13
  34. package/esm2022/src/state-source.mjs +48 -0
  35. package/esm2022/src/with-computed.mjs +8 -9
  36. package/esm2022/src/with-hooks.mjs +8 -8
  37. package/esm2022/src/with-methods.mjs +7 -11
  38. package/esm2022/src/with-state.mjs +9 -12
  39. package/fesm2022/ngrx-signals-entities.mjs +48 -25
  40. package/fesm2022/ngrx-signals-entities.mjs.map +1 -1
  41. package/fesm2022/ngrx-signals-rxjs-interop.mjs.map +1 -1
  42. package/fesm2022/ngrx-signals.mjs +98 -63
  43. package/fesm2022/ngrx-signals.mjs.map +1 -1
  44. package/migrations/18_0_0-rc_3-protected-state/index.js +93 -0
  45. package/migrations/18_0_0-rc_3-protected-state/index.js.map +1 -0
  46. package/migrations/18_0_0-rc_3-writablestatesource/index.js +43 -0
  47. package/migrations/18_0_0-rc_3-writablestatesource/index.js.map +1 -0
  48. package/migrations/migration.json +12 -1
  49. package/package.json +1 -1
  50. package/rxjs-interop/src/rx-method.d.ts +1 -2
  51. package/src/index.d.ts +4 -5
  52. package/src/signal-state.d.ts +2 -3
  53. package/src/signal-store-assertions.d.ts +2 -0
  54. package/src/signal-store-feature.d.ts +26 -19
  55. package/src/signal-store-models.d.ts +9 -28
  56. package/src/signal-store.d.ts +139 -88
  57. package/src/state-source.d.ts +18 -0
  58. package/src/with-computed.d.ts +5 -3
  59. package/src/with-hooks.d.ts +4 -4
  60. package/src/with-methods.d.ts +5 -3
  61. package/src/with-state.d.ts +6 -2
  62. package/esm2022/src/get-state.mjs +0 -5
  63. package/esm2022/src/helpers.mjs +0 -9
  64. package/esm2022/src/patch-state.mjs +0 -8
  65. package/esm2022/src/state-signal.mjs +0 -2
  66. package/src/get-state.d.ts +0 -2
  67. package/src/helpers.d.ts +0 -1
  68. package/src/patch-state.d.ts +0 -4
  69. package/src/state-signal.d.ts +0 -5
@@ -1,20 +1,23 @@
1
1
  import { DestroyRef, inject, Injectable, signal } from '@angular/core';
2
- import { STATE_SIGNAL } from './state-signal';
2
+ import { STATE_SOURCE } from './state-source';
3
3
  import * as i0 from "@angular/core";
4
4
  export function signalStore(...args) {
5
5
  const signalStoreArgs = [...args];
6
- const config = 'providedIn' in signalStoreArgs[0]
7
- ? signalStoreArgs.shift()
8
- : {};
6
+ const config = typeof signalStoreArgs[0] === 'function'
7
+ ? {}
8
+ : signalStoreArgs.shift();
9
9
  const features = signalStoreArgs;
10
10
  class SignalStore {
11
11
  constructor() {
12
12
  const innerStore = features.reduce((store, feature) => feature(store), getInitialInnerStore());
13
- const { slices, signals, methods, hooks } = innerStore;
14
- const props = { ...slices, ...signals, ...methods };
15
- this[STATE_SIGNAL] = innerStore[STATE_SIGNAL];
16
- for (const key in props) {
17
- this[key] = props[key];
13
+ const { stateSignals, computedSignals, methods, hooks } = innerStore;
14
+ const storeMembers = { ...stateSignals, ...computedSignals, ...methods };
15
+ this[STATE_SOURCE] =
16
+ config.protectedState === false
17
+ ? innerStore[STATE_SOURCE]
18
+ : innerStore[STATE_SOURCE].asReadonly();
19
+ for (const key in storeMembers) {
20
+ this[key] = storeMembers[key];
18
21
  }
19
22
  const { onInit, onDestroy } = hooks;
20
23
  if (onInit) {
@@ -35,11 +38,11 @@ export function signalStore(...args) {
35
38
  }
36
39
  export function getInitialInnerStore() {
37
40
  return {
38
- [STATE_SIGNAL]: signal({}),
39
- slices: {},
40
- signals: {},
41
+ [STATE_SOURCE]: signal({}),
42
+ stateSignals: {},
43
+ computedSignals: {},
41
44
  methods: {},
42
45
  hooks: {},
43
46
  };
44
47
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBbVMzRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFHLElBQXlFO0lBRTVFLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUVsQyxNQUFNLE1BQU0sR0FDVixZQUFZLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUUsZUFBZSxDQUFDLEtBQUssRUFBd0I7UUFDaEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULE1BQU0sUUFBUSxHQUFHLGVBQXVDLENBQUM7SUFFekQsTUFDTSxXQUFXO1FBQ2Y7WUFDRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUNoQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFDbEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztZQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBRW5ELElBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFFcEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUM7WUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7OEhBeEJHLFdBQVc7a0lBQVgsV0FBVyxjQURTLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSTs7K0ZBQzdDLFdBQVc7c0JBRGhCLFVBQVU7dUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7O0lBNEJyRCxPQUFPLFdBQVcsQ0FBQztDQUNwQjtBQUVELE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsT0FBTztRQUNMLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNUQVRFX1NJR05BTCwgU3RhdGVTaWduYWwgfSBmcm9tICcuL3N0YXRlLXNpZ25hbCc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIE1lcmdlRmVhdHVyZVJlc3VsdHMsXG4gIFNpZ25hbFN0b3JlQ29uZmlnLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVQcm9wcyxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7IFByZXR0aWZ5IH0gZnJvbSAnLi90cy1oZWxwZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPEYxPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PEYxWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl1cbiAgPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFxuICAgIFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGN11cbiAgPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2XT4sIEY3PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjcsIEY4XVxuICA+XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjVdPiwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdPiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3XT4sIEY4PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOCwgRjldXG4gID5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl0+LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjddPiwgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOF0+LFxuICAgIEY5XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxGMT4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdXG4gID5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjddXG4gID5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl0+LCBGNz5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOF1cbiAgPlxuPihcbiAgY29uZmlnOiBTaWduYWxTdG9yZUNvbmZpZyxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2XT4sIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGN10+LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFxuICAgIFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGNywgRjgsIEY5XVxuICA+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjVdPiwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdPiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3XT4sIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGNywgRjhdPixcbiAgICBGOVxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmUoXG4gIC4uLmFyZ3M6IFtTaWduYWxTdG9yZUNvbmZpZywgLi4uU2lnbmFsU3RvcmVGZWF0dXJlW11dIHwgU2lnbmFsU3RvcmVGZWF0dXJlW11cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxhbnk+PiB7XG4gIGNvbnN0IHNpZ25hbFN0b3JlQXJncyA9IFsuLi5hcmdzXTtcblxuICBjb25zdCBjb25maWc6IFBhcnRpYWw8U2lnbmFsU3RvcmVDb25maWc+ID1cbiAgICAncHJvdmlkZWRJbicgaW4gc2lnbmFsU3RvcmVBcmdzWzBdXG4gICAgICA/IChzaWduYWxTdG9yZUFyZ3Muc2hpZnQoKSBhcyBTaWduYWxTdG9yZUNvbmZpZylcbiAgICAgIDoge307XG4gIGNvbnN0IGZlYXR1cmVzID0gc2lnbmFsU3RvcmVBcmdzIGFzIFNpZ25hbFN0b3JlRmVhdHVyZVtdO1xuXG4gIEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogY29uZmlnLnByb3ZpZGVkSW4gfHwgbnVsbCB9KVxuICBjbGFzcyBTaWduYWxTdG9yZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICBjb25zdCBpbm5lclN0b3JlID0gZmVhdHVyZXMucmVkdWNlKFxuICAgICAgICAoc3RvcmUsIGZlYXR1cmUpID0+IGZlYXR1cmUoc3RvcmUpLFxuICAgICAgICBnZXRJbml0aWFsSW5uZXJTdG9yZSgpXG4gICAgICApO1xuICAgICAgY29uc3QgeyBzbGljZXMsIHNpZ25hbHMsIG1ldGhvZHMsIGhvb2tzIH0gPSBpbm5lclN0b3JlO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLnNsaWNlcywgLi4uc2lnbmFscywgLi4ubWV0aG9kcyB9O1xuXG4gICAgICAodGhpcyBhcyBhbnkpW1NUQVRFX1NJR05BTF0gPSBpbm5lclN0b3JlW1NUQVRFX1NJR05BTF07XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSlba2V5XSA9IHByb3BzW2tleV07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb25Jbml0LCBvbkRlc3Ryb3kgfSA9IGhvb2tzO1xuXG4gICAgICBpZiAob25Jbml0KSB7XG4gICAgICAgIG9uSW5pdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAob25EZXN0cm95KSB7XG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3kob25EZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2lnbmFsU3RvcmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsSW5uZXJTdG9yZSgpOiBJbm5lclNpZ25hbFN0b3JlIHtcbiAgcmV0dXJuIHtcbiAgICBbU1RBVEVfU0lHTkFMXTogc2lnbmFsKHt9KSxcbiAgICBzbGljZXM6IHt9LFxuICAgIHNpZ25hbHM6IHt9LFxuICAgIG1ldGhvZHM6IHt9LFxuICAgIGhvb2tzOiB7fSxcbiAgfTtcbn1cbiJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGdCQUFnQixDQUFDOztBQW94Q2hGLE1BQU0sVUFBVSxXQUFXLENBQ3pCLEdBQUcsSUFBeUU7SUFFNUUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRWxDLE1BQU0sTUFBTSxHQUNWLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVU7UUFDdEMsQ0FBQyxDQUFDLEVBQUU7UUFDSixDQUFDLENBQUUsZUFBZSxDQUFDLEtBQUssRUFBd0IsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxlQUF1QyxDQUFDO0lBRXpELE1BQ00sV0FBVztRQUNmO1lBQ0UsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQ2xDLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7WUFDRixNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUV4RSxJQUFZLENBQUMsWUFBWSxDQUFDO2dCQUN6QixNQUFNLENBQUMsY0FBYyxLQUFLLEtBQUs7b0JBQzdCLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO29CQUMxQixDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRTVDLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzlCLElBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDO1lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDOzhIQTNCRyxXQUFXO2tJQUFYLFdBQVcsY0FEUyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUk7OytGQUM3QyxXQUFXO3NCQURoQixVQUFVO3VCQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFOztJQStCckQsT0FBTyxXQUFXLENBQUM7Q0FDcEI7QUFFRCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU87UUFDTCxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsZUFBZSxFQUFFLEVBQUU7UUFDbkIsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNUQVRFX1NPVVJDRSwgU3RhdGVTb3VyY2UsIFdyaXRhYmxlU3RhdGVTb3VyY2UgfSBmcm9tICcuL3N0YXRlLXNvdXJjZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbnR5cGUgU2lnbmFsU3RvcmVDb25maWcgPSB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogYm9vbGVhbiB9O1xuXG50eXBlIFNpZ25hbFN0b3JlTWVtYmVyczxGZWF0dXJlUmVzdWx0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9XG4gIFByZXR0aWZ5PFxuICAgIFN0YXRlU2lnbmFsczxGZWF0dXJlUmVzdWx0WydzdGF0ZSddPiAmXG4gICAgICBGZWF0dXJlUmVzdWx0Wydjb21wdXRlZCddICZcbiAgICAgIEZlYXR1cmVSZXN1bHRbJ21ldGhvZHMnXVxuICA+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8RjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxGMT4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGM1xuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjRcbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGN1xuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLCBGMTE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMiAmXG4gICAgRjEzXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjE0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyICZcbiAgICBGMTMgJlxuICAgIEYxNCAmXG4gICAgRjE1XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+LFxuICBmMTU6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMgJiBGMTQsXG4gICAgRjE1XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxGMT4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjZcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjdcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjlcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMFxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsIEYxMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTJcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxM1xuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsXG4gICAgRjExXG4gID4sXG4gIGYxMjogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSxcbiAgICBGMTJcbiAgPixcbiAgZjEzOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyLFxuICAgIEYxM1xuICA+LFxuICBmMTQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMsXG4gICAgRjE0XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0ICZcbiAgICBGMTVcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+LFxuICBmMTM6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIsXG4gICAgRjEzXG4gID4sXG4gIGYxNDogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMiAmIEYxMyxcbiAgICBGMTRcbiAgPixcbiAgZjE1OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzICYgRjE0LFxuICAgIEYxNVxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8RjE+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBXcml0YWJsZVN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjNcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNFxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBXcml0YWJsZVN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOVxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTBcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsIEYxMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyICZcbiAgICBGMTNcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+LFxuICBmMTM6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIsXG4gICAgRjEzXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsXG4gICAgRjExXG4gID4sXG4gIGYxMjogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSxcbiAgICBGMTJcbiAgPixcbiAgZjEzOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyLFxuICAgIEYxM1xuICA+LFxuICBmMTQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMsXG4gICAgRjE0XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjE1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMiAmXG4gICAgRjEzICZcbiAgICBGMTQgJlxuICAgIEYxNVxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+LFxuICBmMTU6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMgJiBGMTQsXG4gICAgRjE1XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmUoXG4gIC4uLmFyZ3M6IFtTaWduYWxTdG9yZUNvbmZpZywgLi4uU2lnbmFsU3RvcmVGZWF0dXJlW11dIHwgU2lnbmFsU3RvcmVGZWF0dXJlW11cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPGFueT4+IHtcbiAgY29uc3Qgc2lnbmFsU3RvcmVBcmdzID0gWy4uLmFyZ3NdO1xuXG4gIGNvbnN0IGNvbmZpZyA9XG4gICAgdHlwZW9mIHNpZ25hbFN0b3JlQXJnc1swXSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB7fVxuICAgICAgOiAoc2lnbmFsU3RvcmVBcmdzLnNoaWZ0KCkgYXMgU2lnbmFsU3RvcmVDb25maWcpO1xuICBjb25zdCBmZWF0dXJlcyA9IHNpZ25hbFN0b3JlQXJncyBhcyBTaWduYWxTdG9yZUZlYXR1cmVbXTtcblxuICBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IGNvbmZpZy5wcm92aWRlZEluIHx8IG51bGwgfSlcbiAgY2xhc3MgU2lnbmFsU3RvcmUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgY29uc3QgaW5uZXJTdG9yZSA9IGZlYXR1cmVzLnJlZHVjZShcbiAgICAgICAgKHN0b3JlLCBmZWF0dXJlKSA9PiBmZWF0dXJlKHN0b3JlKSxcbiAgICAgICAgZ2V0SW5pdGlhbElubmVyU3RvcmUoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgc3RhdGVTaWduYWxzLCBjb21wdXRlZFNpZ25hbHMsIG1ldGhvZHMsIGhvb2tzIH0gPSBpbm5lclN0b3JlO1xuICAgICAgY29uc3Qgc3RvcmVNZW1iZXJzID0geyAuLi5zdGF0ZVNpZ25hbHMsIC4uLmNvbXB1dGVkU2lnbmFscywgLi4ubWV0aG9kcyB9O1xuXG4gICAgICAodGhpcyBhcyBhbnkpW1NUQVRFX1NPVVJDRV0gPVxuICAgICAgICBjb25maWcucHJvdGVjdGVkU3RhdGUgPT09IGZhbHNlXG4gICAgICAgICAgPyBpbm5lclN0b3JlW1NUQVRFX1NPVVJDRV1cbiAgICAgICAgICA6IGlubmVyU3RvcmVbU1RBVEVfU09VUkNFXS5hc1JlYWRvbmx5KCk7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHN0b3JlTWVtYmVycykge1xuICAgICAgICAodGhpcyBhcyBhbnkpW2tleV0gPSBzdG9yZU1lbWJlcnNba2V5XTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBvbkluaXQsIG9uRGVzdHJveSB9ID0gaG9va3M7XG5cbiAgICAgIGlmIChvbkluaXQpIHtcbiAgICAgICAgb25Jbml0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbkRlc3Ryb3kpIHtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveShvbkRlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTaWduYWxTdG9yZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbm5lclN0b3JlKCk6IElubmVyU2lnbmFsU3RvcmUge1xuICByZXR1cm4ge1xuICAgIFtTVEFURV9TT1VSQ0VdOiBzaWduYWwoe30pLFxuICAgIHN0YXRlU2lnbmFsczoge30sXG4gICAgY29tcHV0ZWRTaWduYWxzOiB7fSxcbiAgICBtZXRob2RzOiB7fSxcbiAgICBob29rczoge30sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,48 @@
1
+ import { assertInInjectionContext, DestroyRef, inject, Injector, untracked, } from '@angular/core';
2
+ import { SIGNAL } from '@angular/core/primitives/signals';
3
+ const STATE_WATCHERS = new WeakMap();
4
+ export const STATE_SOURCE = Symbol('STATE_SOURCE');
5
+ export function patchState(stateSource, ...updaters) {
6
+ stateSource[STATE_SOURCE].update((currentState) => updaters.reduce((nextState, updater) => ({
7
+ ...nextState,
8
+ ...(typeof updater === 'function' ? updater(nextState) : updater),
9
+ }), currentState));
10
+ notifyWatchers(stateSource);
11
+ }
12
+ export function getState(stateSource) {
13
+ return stateSource[STATE_SOURCE]();
14
+ }
15
+ export function watchState(stateSource, watcher, config) {
16
+ if (!config?.injector) {
17
+ assertInInjectionContext(watchState);
18
+ }
19
+ const injector = config?.injector ?? inject(Injector);
20
+ const destroyRef = injector.get(DestroyRef);
21
+ addWatcher(stateSource, watcher);
22
+ watcher(getState(stateSource));
23
+ const destroy = () => removeWatcher(stateSource, watcher);
24
+ destroyRef.onDestroy(destroy);
25
+ return { destroy };
26
+ }
27
+ function getWatchers(stateSource) {
28
+ return STATE_WATCHERS.get(stateSource[STATE_SOURCE][SIGNAL]) || [];
29
+ }
30
+ function notifyWatchers(stateSource) {
31
+ const watchers = getWatchers(stateSource);
32
+ for (const watcher of watchers) {
33
+ const state = untracked(() => getState(stateSource));
34
+ watcher(state);
35
+ }
36
+ }
37
+ function addWatcher(stateSource, watcher) {
38
+ const watchers = getWatchers(stateSource);
39
+ STATE_WATCHERS.set(stateSource[STATE_SOURCE][SIGNAL], [
40
+ ...watchers,
41
+ watcher,
42
+ ]);
43
+ }
44
+ function removeWatcher(stateSource, watcher) {
45
+ const watchers = getWatchers(stateSource);
46
+ STATE_WATCHERS.set(stateSource[STATE_SOURCE][SIGNAL], watchers.filter((w) => w !== watcher));
47
+ }
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zdGF0ZS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFFUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRzFELE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFvQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFrQm5ELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQXVDLEVBQ3ZDLEdBQUcsUUFFRjtJQUVELFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNoRCxRQUFRLENBQUMsTUFBTSxDQUNiLENBQUMsU0FBZ0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsR0FBRyxTQUFTO1FBQ1osR0FBRyxDQUFDLE9BQU8sT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDbEUsQ0FBQyxFQUNGLFlBQVksQ0FDYixDQUNGLENBQUM7SUFFRixjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLFdBQStCO0lBRS9CLE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQStCLEVBQy9CLE9BQTRCLEVBQzVCLE1BQWdDO0lBRWhDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDdEIsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFNUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFL0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLFdBQStCO0lBRS9CLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixXQUErQjtJQUUvQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQ2pCLFdBQStCLEVBQy9CLE9BQTRCO0lBRTVCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQVcsRUFBRTtRQUM5RCxHQUFHLFFBQVE7UUFDWCxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixXQUErQixFQUMvQixPQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsY0FBYyxDQUFDLEdBQUcsQ0FDaEIsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBVyxFQUMzQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LFxuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBTaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0lHTkFMIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMnO1xuaW1wb3J0IHsgUHJldHRpZnkgfSBmcm9tICcuL3RzLWhlbHBlcnMnO1xuXG5jb25zdCBTVEFURV9XQVRDSEVSUyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgQXJyYXk8U3RhdGVXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY29uc3QgU1RBVEVfU09VUkNFID0gU3ltYm9sKCdTVEFURV9TT1VSQ0UnKTtcblxuZXhwb3J0IHR5cGUgV3JpdGFibGVTdGF0ZVNvdXJjZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtTVEFURV9TT1VSQ0VdOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT47XG59O1xuXG5leHBvcnQgdHlwZSBTdGF0ZVNvdXJjZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtTVEFURV9TT1VSQ0VdOiBTaWduYWw8U3RhdGU+O1xufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFN0YXRlVXBkYXRlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSAoXG4gIHN0YXRlOiBTdGF0ZVxuKSA9PiBQYXJ0aWFsPFN0YXRlPjtcblxuZXhwb3J0IHR5cGUgU3RhdGVXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9IChcbiAgc3RhdGU6IE5vSW5mZXI8U3RhdGU+XG4pID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+LFxuICAuLi51cGRhdGVyczogQXJyYXk8XG4gICAgUGFydGlhbDxQcmV0dGlmeTxTdGF0ZT4+IHwgUGFydGlhbFN0YXRlVXBkYXRlcjxQcmV0dGlmeTxTdGF0ZT4+XG4gID5cbik6IHZvaWQge1xuICBzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdLnVwZGF0ZSgoY3VycmVudFN0YXRlKSA9PlxuICAgIHVwZGF0ZXJzLnJlZHVjZShcbiAgICAgIChuZXh0U3RhdGU6IFN0YXRlLCB1cGRhdGVyKSA9PiAoe1xuICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgIC4uLih0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIobmV4dFN0YXRlKSA6IHVwZGF0ZXIpLFxuICAgICAgfSksXG4gICAgICBjdXJyZW50U3RhdGVcbiAgICApXG4gICk7XG5cbiAgbm90aWZ5V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZVNvdXJjZTogU3RhdGVTb3VyY2U8U3RhdGU+XG4pOiBTdGF0ZSB7XG4gIHJldHVybiBzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPixcbiAgY29uZmlnPzogeyBpbmplY3Rvcj86IEluamVjdG9yIH1cbik6IHsgZGVzdHJveSgpOiB2b2lkIH0ge1xuICBpZiAoIWNvbmZpZz8uaW5qZWN0b3IpIHtcbiAgICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQod2F0Y2hTdGF0ZSk7XG4gIH1cblxuICBjb25zdCBpbmplY3RvciA9IGNvbmZpZz8uaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdG9yLmdldChEZXN0cm95UmVmKTtcblxuICBhZGRXYXRjaGVyKHN0YXRlU291cmNlLCB3YXRjaGVyKTtcbiAgd2F0Y2hlcihnZXRTdGF0ZShzdGF0ZVNvdXJjZSkpO1xuXG4gIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiByZW1vdmVXYXRjaGVyKHN0YXRlU291cmNlLCB3YXRjaGVyKTtcbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koZGVzdHJveSk7XG5cbiAgcmV0dXJuIHsgZGVzdHJveSB9O1xufVxuXG5mdW5jdGlvbiBnZXRXYXRjaGVyczxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlU291cmNlOiBTdGF0ZVNvdXJjZTxTdGF0ZT5cbik6IEFycmF5PFN0YXRlV2F0Y2hlcjxTdGF0ZT4+IHtcbiAgcmV0dXJuIFNUQVRFX1dBVENIRVJTLmdldChzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdW1NJR05BTF0gYXMgb2JqZWN0KSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gbm90aWZ5V2F0Y2hlcnM8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZVNvdXJjZTogU3RhdGVTb3VyY2U8U3RhdGU+XG4pOiB2b2lkIHtcbiAgY29uc3Qgd2F0Y2hlcnMgPSBnZXRXYXRjaGVycyhzdGF0ZVNvdXJjZSk7XG5cbiAgZm9yIChjb25zdCB3YXRjaGVyIG9mIHdhdGNoZXJzKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gZ2V0U3RhdGUoc3RhdGVTb3VyY2UpKTtcbiAgICB3YXRjaGVyKHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPlxuKTogdm9pZCB7XG4gIGNvbnN0IHdhdGNoZXJzID0gZ2V0V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xuICBTVEFURV9XQVRDSEVSUy5zZXQoc3RhdGVTb3VyY2VbU1RBVEVfU09VUkNFXVtTSUdOQUxdIGFzIG9iamVjdCwgW1xuICAgIC4uLndhdGNoZXJzLFxuICAgIHdhdGNoZXIsXG4gIF0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPlxuKTogdm9pZCB7XG4gIGNvbnN0IHdhdGNoZXJzID0gZ2V0V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xuICBTVEFURV9XQVRDSEVSUy5zZXQoXG4gICAgc3RhdGVTb3VyY2VbU1RBVEVfU09VUkNFXVtTSUdOQUxdIGFzIG9iamVjdCxcbiAgICB3YXRjaGVycy5maWx0ZXIoKHcpID0+IHcgIT09IHdhdGNoZXIpXG4gICk7XG59XG4iXX0=
@@ -1,16 +1,15 @@
1
- import { excludeKeys } from './helpers';
1
+ import { assertUniqueStoreMembers } from './signal-store-assertions';
2
2
  export function withComputed(signalsFactory) {
3
3
  return (store) => {
4
- const signals = signalsFactory({ ...store.slices, ...store.signals });
5
- const signalsKeys = Object.keys(signals);
6
- const slices = excludeKeys(store.slices, signalsKeys);
7
- const methods = excludeKeys(store.methods, signalsKeys);
4
+ const computedSignals = signalsFactory({
5
+ ...store.stateSignals,
6
+ ...store.computedSignals,
7
+ });
8
+ assertUniqueStoreMembers(store, Object.keys(computedSignals));
8
9
  return {
9
10
  ...store,
10
- slices,
11
- signals: { ...store.signals, ...signals },
12
- methods,
11
+ computedSignals: { ...store.computedSignals, ...computedSignals },
13
12
  };
14
13
  };
15
14
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb21wdXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBV3hDLE1BQU0sVUFBVSxZQUFZLENBSTFCLGNBRVk7SUFFWixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN0RSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXhELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixNQUFNO1lBQ04sT0FBTyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFO1lBQ3pDLE9BQU87U0FDOEMsQ0FBQztJQUMxRCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhjbHVkZUtleXMgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBJbm5lclNpZ25hbFN0b3JlLFxuICBTaWduYWxzRGljdGlvbmFyeSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlU2xpY2VzLFxufSBmcm9tICcuL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgUHJldHRpZnkgfSBmcm9tICcuL3RzLWhlbHBlcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENvbXB1dGVkPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFscyBleHRlbmRzIFNpZ25hbHNEaWN0aW9uYXJ5XG4+KFxuICBzaWduYWxzRmFjdG9yeTogKFxuICAgIHN0b3JlOiBQcmV0dGlmeTxTaWduYWxTdG9yZVNsaWNlczxJbnB1dFsnc3RhdGUnXT4gJiBJbnB1dFsnc2lnbmFscyddPlxuICApID0+IFNpZ25hbHNcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzaWduYWxzOiBTaWduYWxzIH0+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHNpZ25hbHMgPSBzaWduYWxzRmFjdG9yeSh7IC4uLnN0b3JlLnNsaWNlcywgLi4uc3RvcmUuc2lnbmFscyB9KTtcbiAgICBjb25zdCBzaWduYWxzS2V5cyA9IE9iamVjdC5rZXlzKHNpZ25hbHMpO1xuICAgIGNvbnN0IHNsaWNlcyA9IGV4Y2x1ZGVLZXlzKHN0b3JlLnNsaWNlcywgc2lnbmFsc0tleXMpO1xuICAgIGNvbnN0IG1ldGhvZHMgPSBleGNsdWRlS2V5cyhzdG9yZS5tZXRob2RzLCBzaWduYWxzS2V5cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBzbGljZXMsXG4gICAgICBzaWduYWxzOiB7IC4uLnN0b3JlLnNpZ25hbHMsIC4uLnNpZ25hbHMgfSxcbiAgICAgIG1ldGhvZHMsXG4gICAgfSBhcyBJbm5lclNpZ25hbFN0b3JlPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBTaWduYWxzPjtcbiAgfTtcbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb21wdXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVVyRSxNQUFNLFVBQVUsWUFBWSxDQUkxQixjQUVvQjtJQUtwQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUM7WUFDckMsR0FBRyxLQUFLLENBQUMsWUFBWTtZQUNyQixHQUFHLEtBQUssQ0FBQyxlQUFlO1NBQ3pCLENBQUMsQ0FBQztRQUNILHdCQUF3QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFOUQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLGVBQWUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxHQUFHLGVBQWUsRUFBRTtTQUNKLENBQUM7SUFDbEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyB9IGZyb20gJy4vc2lnbmFsLXN0b3JlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHtcbiAgSW5uZXJTaWduYWxTdG9yZSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29tcHV0ZWQ8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBDb21wdXRlZFNpZ25hbHMgZXh0ZW5kcyBTaWduYWxzRGljdGlvbmFyeVxuPihcbiAgc2lnbmFsc0ZhY3Rvcnk6IChcbiAgICBzdG9yZTogUHJldHRpZnk8U3RhdGVTaWduYWxzPElucHV0WydzdGF0ZSddPiAmIElucHV0Wydjb21wdXRlZCddPlxuICApID0+IENvbXB1dGVkU2lnbmFsc1xuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgeyBzdGF0ZToge307IGNvbXB1dGVkOiBDb21wdXRlZFNpZ25hbHM7IG1ldGhvZHM6IHt9IH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3QgY29tcHV0ZWRTaWduYWxzID0gc2lnbmFsc0ZhY3Rvcnkoe1xuICAgICAgLi4uc3RvcmUuc3RhdGVTaWduYWxzLFxuICAgICAgLi4uc3RvcmUuY29tcHV0ZWRTaWduYWxzLFxuICAgIH0pO1xuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgT2JqZWN0LmtleXMoY29tcHV0ZWRTaWduYWxzKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBjb21wdXRlZFNpZ25hbHM6IHsgLi4uc3RvcmUuY29tcHV0ZWRTaWduYWxzLCAuLi5jb21wdXRlZFNpZ25hbHMgfSxcbiAgICB9IGFzIElubmVyU2lnbmFsU3RvcmU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIENvbXB1dGVkU2lnbmFscz47XG4gIH07XG59XG4iXX0=
@@ -1,14 +1,14 @@
1
- import { STATE_SIGNAL } from './state-signal';
1
+ import { STATE_SOURCE } from './state-source';
2
2
  export function withHooks(hooksOrFactory) {
3
3
  return (store) => {
4
- const storeProps = {
5
- [STATE_SIGNAL]: store[STATE_SIGNAL],
6
- ...store.slices,
7
- ...store.signals,
4
+ const storeMembers = {
5
+ [STATE_SOURCE]: store[STATE_SOURCE],
6
+ ...store.stateSignals,
7
+ ...store.computedSignals,
8
8
  ...store.methods,
9
9
  };
10
10
  const hooks = typeof hooksOrFactory === 'function'
11
- ? hooksOrFactory(storeProps)
11
+ ? hooksOrFactory(storeMembers)
12
12
  : hooksOrFactory;
13
13
  const createHook = (name) => {
14
14
  const hook = hooks[name];
@@ -18,7 +18,7 @@ export function withHooks(hooksOrFactory) {
18
18
  if (currentHook) {
19
19
  currentHook();
20
20
  }
21
- hook(storeProps);
21
+ hook(storeMembers);
22
22
  }
23
23
  : currentHook;
24
24
  };
@@ -31,4 +31,4 @@ export function withHooks(hooksOrFactory) {
31
31
  };
32
32
  };
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFzQzNELE1BQU0sVUFBVSxTQUFTLENBQ3ZCLGNBS3VCO0lBRXZCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNuQyxHQUFHLEtBQUssQ0FBQyxNQUFNO1lBQ2YsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixHQUFHLEtBQUssQ0FBQyxPQUFPO1NBQ2pCLENBQUM7UUFDRixNQUFNLEtBQUssR0FDVCxPQUFPLGNBQWMsS0FBSyxVQUFVO1lBQ2xDLENBQUMsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDckIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsT0FBTyxJQUFJO2dCQUNULENBQUMsQ0FBQyxHQUFHLEVBQUU7b0JBQ0gsSUFBSSxXQUFXLEVBQUUsQ0FBQzt3QkFDaEIsV0FBVyxFQUFFLENBQUM7b0JBQ2hCLENBQUM7b0JBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNuQixDQUFDO2dCQUNILENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbEIsQ0FBQyxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRTtnQkFDTCxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztnQkFDNUIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUM7YUFDbkM7U0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNUQVRFX1NJR05BTCwgU3RhdGVTaWduYWwgfSBmcm9tICcuL3N0YXRlLXNpZ25hbCc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZVNsaWNlcyxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7IFByZXR0aWZ5IH0gZnJvbSAnLi90cy1oZWxwZXJzJztcblxudHlwZSBIb29rRm48SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+ID0gKFxuICBzdG9yZTogUHJldHRpZnk8XG4gICAgU2lnbmFsU3RvcmVTbGljZXM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIElucHV0WydzaWduYWxzJ10gJlxuICAgICAgSW5wdXRbJ21ldGhvZHMnXSAmXG4gICAgICBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gID5cbikgPT4gdm9pZDtcblxudHlwZSBIb29rc0ZhY3Rvcnk8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+ID0gKFxuICBzdG9yZTogUHJldHRpZnk8XG4gICAgU2lnbmFsU3RvcmVTbGljZXM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIElucHV0WydzaWduYWxzJ10gJlxuICAgICAgSW5wdXRbJ21ldGhvZHMnXSAmXG4gICAgICBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gID5cbikgPT4ge1xuICBvbkluaXQ/OiAoKSA9PiB2b2lkO1xuICBvbkRlc3Ryb3k/OiAoKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIb29rczxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oaG9va3M6IHtcbiAgb25Jbml0PzogSG9va0ZuPElucHV0PjtcbiAgb25EZXN0cm95PzogSG9va0ZuPElucHV0Pjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEVtcHR5RmVhdHVyZVJlc3VsdD47XG5leHBvcnQgZnVuY3Rpb24gd2l0aEhvb2tzPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgaG9va3M6IEhvb2tzRmFjdG9yeTxJbnB1dD5cbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgRW1wdHlGZWF0dXJlUmVzdWx0PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIb29rczxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGhvb2tzT3JGYWN0b3J5OlxuICAgIHwge1xuICAgICAgICBvbkluaXQ/OiBIb29rRm48SW5wdXQ+O1xuICAgICAgICBvbkRlc3Ryb3k/OiBIb29rRm48SW5wdXQ+O1xuICAgICAgfVxuICAgIHwgSG9va3NGYWN0b3J5PElucHV0PlxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBFbXB0eUZlYXR1cmVSZXN1bHQ+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHN0b3JlUHJvcHMgPSB7XG4gICAgICBbU1RBVEVfU0lHTkFMXTogc3RvcmVbU1RBVEVfU0lHTkFMXSxcbiAgICAgIC4uLnN0b3JlLnNsaWNlcyxcbiAgICAgIC4uLnN0b3JlLnNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5tZXRob2RzLFxuICAgIH07XG4gICAgY29uc3QgaG9va3MgPVxuICAgICAgdHlwZW9mIGhvb2tzT3JGYWN0b3J5ID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gaG9va3NPckZhY3Rvcnkoc3RvcmVQcm9wcylcbiAgICAgICAgOiBob29rc09yRmFjdG9yeTtcbiAgICBjb25zdCBjcmVhdGVIb29rID0gKG5hbWU6IGtleW9mIHR5cGVvZiBob29rcykgPT4ge1xuICAgICAgY29uc3QgaG9vayA9IGhvb2tzW25hbWVdO1xuICAgICAgY29uc3QgY3VycmVudEhvb2sgPSBzdG9yZS5ob29rc1tuYW1lXTtcblxuICAgICAgcmV0dXJuIGhvb2tcbiAgICAgICAgPyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEhvb2spIHtcbiAgICAgICAgICAgICAgY3VycmVudEhvb2soKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaG9vayhzdG9yZVByb3BzKTtcbiAgICAgICAgICB9XG4gICAgICAgIDogY3VycmVudEhvb2s7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIGhvb2tzOiB7XG4gICAgICAgIG9uSW5pdDogY3JlYXRlSG9vaygnb25Jbml0JyksXG4gICAgICAgIG9uRGVzdHJveTogY3JlYXRlSG9vaygnb25EZXN0cm95JyksXG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBc0NuRSxNQUFNLFVBQVUsU0FBUyxDQUN2QixjQUt1QjtJQUV2QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLFlBQVksR0FBRztZQUNuQixDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDbkMsR0FBRyxLQUFLLENBQUMsWUFBWTtZQUNyQixHQUFHLEtBQUssQ0FBQyxlQUFlO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLE9BQU87U0FDakIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUNULE9BQU8sY0FBYyxLQUFLLFVBQVU7WUFDbEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNyQixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQXdCLEVBQUUsRUFBRTtZQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0QyxPQUFPLElBQUk7Z0JBQ1QsQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDSCxJQUFJLFdBQVcsRUFBRSxDQUFDO3dCQUNoQixXQUFXLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQztvQkFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsQixDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFO2dCQUNMLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUM1QixTQUFTLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQzthQUNuQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1RBVEVfU09VUkNFLCBXcml0YWJsZVN0YXRlU291cmNlIH0gZnJvbSAnLi9zdGF0ZS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxufSBmcm9tICcuL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgUHJldHRpZnkgfSBmcm9tICcuL3RzLWhlbHBlcnMnO1xuXG50eXBlIEhvb2tGbjxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4gPSAoXG4gIHN0b3JlOiBQcmV0dGlmeTxcbiAgICBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIElucHV0Wydjb21wdXRlZCddICZcbiAgICAgIElucHV0WydtZXRob2RzJ10gJlxuICAgICAgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gID5cbikgPT4gdm9pZDtcblxudHlwZSBIb29rc0ZhY3Rvcnk8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+ID0gKFxuICBzdG9yZTogUHJldHRpZnk8XG4gICAgU3RhdGVTaWduYWxzPElucHV0WydzdGF0ZSddPiAmXG4gICAgICBJbnB1dFsnY29tcHV0ZWQnXSAmXG4gICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8SW5wdXRbJ3N0YXRlJ10+PlxuICA+XG4pID0+IHtcbiAgb25Jbml0PzogKCkgPT4gdm9pZDtcbiAgb25EZXN0cm95PzogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSG9va3M8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KGhvb2tzOiB7XG4gIG9uSW5pdD86IEhvb2tGbjxJbnB1dD47XG4gIG9uRGVzdHJveT86IEhvb2tGbjxJbnB1dD47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBFbXB0eUZlYXR1cmVSZXN1bHQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIb29rczxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGhvb2tzOiBIb29rc0ZhY3Rvcnk8SW5wdXQ+XG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEVtcHR5RmVhdHVyZVJlc3VsdD47XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSG9va3M8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBob29rc09yRmFjdG9yeTpcbiAgICB8IHtcbiAgICAgICAgb25Jbml0PzogSG9va0ZuPElucHV0PjtcbiAgICAgICAgb25EZXN0cm95PzogSG9va0ZuPElucHV0PjtcbiAgICAgIH1cbiAgICB8IEhvb2tzRmFjdG9yeTxJbnB1dD5cbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgRW1wdHlGZWF0dXJlUmVzdWx0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBzdG9yZU1lbWJlcnMgPSB7XG4gICAgICBbU1RBVEVfU09VUkNFXTogc3RvcmVbU1RBVEVfU09VUkNFXSxcbiAgICAgIC4uLnN0b3JlLnN0YXRlU2lnbmFscyxcbiAgICAgIC4uLnN0b3JlLmNvbXB1dGVkU2lnbmFscyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgfTtcbiAgICBjb25zdCBob29rcyA9XG4gICAgICB0eXBlb2YgaG9va3NPckZhY3RvcnkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBob29rc09yRmFjdG9yeShzdG9yZU1lbWJlcnMpXG4gICAgICAgIDogaG9va3NPckZhY3Rvcnk7XG4gICAgY29uc3QgY3JlYXRlSG9vayA9IChuYW1lOiBrZXlvZiB0eXBlb2YgaG9va3MpID0+IHtcbiAgICAgIGNvbnN0IGhvb2sgPSBob29rc1tuYW1lXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRIb29rID0gc3RvcmUuaG9va3NbbmFtZV07XG5cbiAgICAgIHJldHVybiBob29rXG4gICAgICAgID8gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRIb29rKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRIb29rKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhvb2soc3RvcmVNZW1iZXJzKTtcbiAgICAgICAgICB9XG4gICAgICAgIDogY3VycmVudEhvb2s7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIGhvb2tzOiB7XG4gICAgICAgIG9uSW5pdDogY3JlYXRlSG9vaygnb25Jbml0JyksXG4gICAgICAgIG9uRGVzdHJveTogY3JlYXRlSG9vaygnb25EZXN0cm95JyksXG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=
@@ -1,22 +1,18 @@
1
- import { excludeKeys } from './helpers';
2
- import { STATE_SIGNAL } from './state-signal';
1
+ import { STATE_SOURCE } from './state-source';
2
+ import { assertUniqueStoreMembers } from './signal-store-assertions';
3
3
  export function withMethods(methodsFactory) {
4
4
  return (store) => {
5
5
  const methods = methodsFactory({
6
- [STATE_SIGNAL]: store[STATE_SIGNAL],
7
- ...store.slices,
8
- ...store.signals,
6
+ [STATE_SOURCE]: store[STATE_SOURCE],
7
+ ...store.stateSignals,
8
+ ...store.computedSignals,
9
9
  ...store.methods,
10
10
  });
11
- const methodsKeys = Object.keys(methods);
12
- const slices = excludeKeys(store.slices, methodsKeys);
13
- const signals = excludeKeys(store.signals, methodsKeys);
11
+ assertUniqueStoreMembers(store, Object.keys(methods));
14
12
  return {
15
13
  ...store,
16
- slices,
17
- signals,
18
14
  methods: { ...store.methods, ...methods },
19
15
  };
20
16
  };
21
17
  }
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tZXRob2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy93aXRoLW1ldGhvZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFZM0QsTUFBTSxVQUFVLFdBQVcsQ0FJekIsY0FPWTtJQUVaLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQztZQUM3QixDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDbkMsR0FBRyxLQUFLLENBQUMsTUFBTTtZQUNmLEdBQUcsS0FBSyxDQUFDLE9BQU87WUFDaEIsR0FBRyxLQUFLLENBQUMsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRXhELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixNQUFNO1lBQ04sT0FBTztZQUNQLE9BQU8sRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRTtTQUMrQixDQUFDO0lBQzdFLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGNsdWRlS2V5cyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTVEFURV9TSUdOQUwsIFN0YXRlU2lnbmFsIH0gZnJvbSAnLi9zdGF0ZS1zaWduYWwnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBJbm5lclNpZ25hbFN0b3JlLFxuICBNZXRob2RzRGljdGlvbmFyeSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZVNsaWNlcyxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7IFByZXR0aWZ5IH0gZnJvbSAnLi90cy1oZWxwZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNZXRob2RzPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgTWV0aG9kcyBleHRlbmRzIE1ldGhvZHNEaWN0aW9uYXJ5XG4+KFxuICBtZXRob2RzRmFjdG9yeTogKFxuICAgIHN0b3JlOiBQcmV0dGlmeTxcbiAgICAgIFNpZ25hbFN0b3JlU2xpY2VzPElucHV0WydzdGF0ZSddPiAmXG4gICAgICAgIElucHV0WydzaWduYWxzJ10gJlxuICAgICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgICAgU3RhdGVTaWduYWw8UHJldHRpZnk8SW5wdXRbJ3N0YXRlJ10+PlxuICAgID5cbiAgKSA9PiBNZXRob2RzXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHsgbWV0aG9kczogTWV0aG9kcyB9PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBtZXRob2RzID0gbWV0aG9kc0ZhY3Rvcnkoe1xuICAgICAgW1NUQVRFX1NJR05BTF06IHN0b3JlW1NUQVRFX1NJR05BTF0sXG4gICAgICAuLi5zdG9yZS5zbGljZXMsXG4gICAgICAuLi5zdG9yZS5zaWduYWxzLFxuICAgICAgLi4uc3RvcmUubWV0aG9kcyxcbiAgICB9KTtcbiAgICBjb25zdCBtZXRob2RzS2V5cyA9IE9iamVjdC5rZXlzKG1ldGhvZHMpO1xuICAgIGNvbnN0IHNsaWNlcyA9IGV4Y2x1ZGVLZXlzKHN0b3JlLnNsaWNlcywgbWV0aG9kc0tleXMpO1xuICAgIGNvbnN0IHNpZ25hbHMgPSBleGNsdWRlS2V5cyhzdG9yZS5zaWduYWxzLCBtZXRob2RzS2V5cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBzbGljZXMsXG4gICAgICBzaWduYWxzLFxuICAgICAgbWV0aG9kczogeyAuLi5zdG9yZS5tZXRob2RzLCAuLi5tZXRob2RzIH0sXG4gICAgfSBhcyBJbm5lclNpZ25hbFN0b3JlPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBTaWduYWxzRGljdGlvbmFyeSwgTWV0aG9kcz47XG4gIH07XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tZXRob2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy93aXRoLW1ldGhvZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVdyRSxNQUFNLFVBQVUsV0FBVyxDQUl6QixjQU9ZO0lBRVosT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDO1lBQzdCLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNuQyxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLGVBQWU7WUFDeEIsR0FBRyxLQUFLLENBQUMsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXRELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUU7U0FDK0IsQ0FBQztJQUM3RSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1RBVEVfU09VUkNFLCBXcml0YWJsZVN0YXRlU291cmNlIH0gZnJvbSAnLi9zdGF0ZS1zb3VyY2UnO1xuaW1wb3J0IHsgYXNzZXJ0VW5pcXVlU3RvcmVNZW1iZXJzIH0gZnJvbSAnLi9zaWduYWwtc3RvcmUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQge1xuICBJbm5lclNpZ25hbFN0b3JlLFxuICBNZXRob2RzRGljdGlvbmFyeSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTWV0aG9kczxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIE1ldGhvZHMgZXh0ZW5kcyBNZXRob2RzRGljdGlvbmFyeVxuPihcbiAgbWV0aG9kc0ZhY3Rvcnk6IChcbiAgICBzdG9yZTogUHJldHRpZnk8XG4gICAgICBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgICAgSW5wdXRbJ2NvbXB1dGVkJ10gJlxuICAgICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgICAgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gICAgPlxuICApID0+IE1ldGhvZHNcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgeyBzdGF0ZToge307IGNvbXB1dGVkOiB7fTsgbWV0aG9kczogTWV0aG9kcyB9PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBtZXRob2RzID0gbWV0aG9kc0ZhY3Rvcnkoe1xuICAgICAgW1NUQVRFX1NPVVJDRV06IHN0b3JlW1NUQVRFX1NPVVJDRV0sXG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5jb21wdXRlZFNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5tZXRob2RzLFxuICAgIH0pO1xuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgT2JqZWN0LmtleXMobWV0aG9kcykpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgbWV0aG9kczogeyAuLi5zdG9yZS5tZXRob2RzLCAuLi5tZXRob2RzIH0sXG4gICAgfSBhcyBJbm5lclNpZ25hbFN0b3JlPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBTaWduYWxzRGljdGlvbmFyeSwgTWV0aG9kcz47XG4gIH07XG59XG4iXX0=
@@ -1,27 +1,24 @@
1
1
  import { computed } from '@angular/core';
2
+ import { assertUniqueStoreMembers } from './signal-store-assertions';
2
3
  import { toDeepSignal } from './deep-signal';
3
- import { excludeKeys } from './helpers';
4
- import { STATE_SIGNAL } from './state-signal';
4
+ import { STATE_SOURCE } from './state-source';
5
5
  export function withState(stateOrFactory) {
6
6
  return (store) => {
7
7
  const state = typeof stateOrFactory === 'function' ? stateOrFactory() : stateOrFactory;
8
8
  const stateKeys = Object.keys(state);
9
- store[STATE_SIGNAL].update((currentState) => ({
9
+ assertUniqueStoreMembers(store, stateKeys);
10
+ store[STATE_SOURCE].update((currentState) => ({
10
11
  ...currentState,
11
12
  ...state,
12
13
  }));
13
- const slices = stateKeys.reduce((acc, key) => {
14
- const slice = computed(() => store[STATE_SIGNAL]()[key]);
15
- return { ...acc, [key]: toDeepSignal(slice) };
14
+ const stateSignals = stateKeys.reduce((acc, key) => {
15
+ const sliceSignal = computed(() => store[STATE_SOURCE]()[key]);
16
+ return { ...acc, [key]: toDeepSignal(sliceSignal) };
16
17
  }, {});
17
- const signals = excludeKeys(store.signals, stateKeys);
18
- const methods = excludeKeys(store.methods, stateKeys);
19
18
  return {
20
19
  ...store,
21
- slices: { ...store.slices, ...slices },
22
- signals,
23
- methods,
20
+ stateSignals: { ...store.stateSignals, ...stateSignals },
24
21
  };
25
22
  };
26
23
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFxQjlDLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLGNBQXFDO0lBS3JDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sS0FBSyxHQUNULE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUMzRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsR0FBRyxZQUFZO1lBQ2YsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDLENBQUM7UUFFSixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FDcEIsR0FBRyxFQUFFLENBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUM5RCxDQUFDO1lBQ0YsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxFQUFFLEVBQXVCLENBQUMsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN0RCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUV0RCxPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFO1lBQ3RDLE9BQU87WUFDUCxPQUFPO1NBQ21CLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b0RlZXBTaWduYWwgfSBmcm9tICcuL2RlZXAtc2lnbmFsJztcbmltcG9ydCB7IGV4Y2x1ZGVLZXlzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IFNUQVRFX1NJR05BTCB9IGZyb20gJy4vc3RhdGUtc2lnbmFsJztcbmltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgSW5uZXJTaWduYWxTdG9yZSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxufSBmcm9tICcuL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVGYWN0b3J5OiAoKSA9PiBTdGF0ZVxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHsgc3RhdGU6IFN0YXRlIH1cbj47XG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGU6IFN0YXRlXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZU9yRmFjdG9yeTogU3RhdGUgfCAoKCkgPT4gU3RhdGUpXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9XG4gICAgICB0eXBlb2Ygc3RhdGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgPyBzdGF0ZU9yRmFjdG9yeSgpIDogc3RhdGVPckZhY3Rvcnk7XG4gICAgY29uc3Qgc3RhdGVLZXlzID0gT2JqZWN0LmtleXMoc3RhdGUpO1xuXG4gICAgc3RvcmVbU1RBVEVfU0lHTkFMXS51cGRhdGUoKGN1cnJlbnRTdGF0ZSkgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRTdGF0ZSxcbiAgICAgIC4uLnN0YXRlLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IHNsaWNlcyA9IHN0YXRlS2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBjb25zdCBzbGljZSA9IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiAoc3RvcmVbU1RBVEVfU0lHTkFMXSgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgLi4uYWNjLCBba2V5XTogdG9EZWVwU2lnbmFsKHNsaWNlKSB9O1xuICAgIH0sIHt9IGFzIFNpZ25hbHNEaWN0aW9uYXJ5KTtcbiAgICBjb25zdCBzaWduYWxzID0gZXhjbHVkZUtleXMoc3RvcmUuc2lnbmFscywgc3RhdGVLZXlzKTtcbiAgICBjb25zdCBtZXRob2RzID0gZXhjbHVkZUtleXMoc3RvcmUubWV0aG9kcywgc3RhdGVLZXlzKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIHNsaWNlczogeyAuLi5zdG9yZS5zbGljZXMsIC4uLnNsaWNlcyB9LFxuICAgICAgc2lnbmFscyxcbiAgICAgIG1ldGhvZHMsXG4gICAgfSBhcyBJbm5lclNpZ25hbFN0b3JlPFN0YXRlPjtcbiAgfTtcbn1cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBcUI5QyxNQUFNLFVBQVUsU0FBUyxDQUN2QixjQUFxQztJQUtyQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLEtBQUssR0FDVCxPQUFPLGNBQWMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDM0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxHQUFHLFlBQVk7WUFDZixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDakQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUUsQ0FBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQThCLENBQUMsR0FBRyxDQUFDLENBQzlELENBQUM7WUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDLEVBQUUsRUFBdUIsQ0FBQyxDQUFDO1FBRTVCLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixZQUFZLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxZQUFZLEVBQUU7U0FDOUIsQ0FBQztJQUMvQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyB9IGZyb20gJy4vc2lnbmFsLXN0b3JlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHsgdG9EZWVwU2lnbmFsIH0gZnJvbSAnLi9kZWVwLXNpZ25hbCc7XG5pbXBvcnQgeyBTVEFURV9TT1VSQ0UgfSBmcm9tICcuL3N0YXRlLXNvdXJjZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIFNpZ25hbHNEaWN0aW9uYXJ5LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlRmFjdG9yeTogKCkgPT4gU3RhdGVcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICB7IHN0YXRlOiBTdGF0ZTsgY29tcHV0ZWQ6IHt9OyBtZXRob2RzOiB7fSB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlOiBTdGF0ZVxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIHsgc3RhdGU6IFN0YXRlOyBjb21wdXRlZDoge307IG1ldGhvZHM6IHt9IH1cbj47XG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVPckZhY3Rvcnk6IFN0YXRlIHwgKCgpID0+IFN0YXRlKVxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIHsgc3RhdGU6IFN0YXRlOyBjb21wdXRlZDoge307IG1ldGhvZHM6IHt9IH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPVxuICAgICAgdHlwZW9mIHN0YXRlT3JGYWN0b3J5ID09PSAnZnVuY3Rpb24nID8gc3RhdGVPckZhY3RvcnkoKSA6IHN0YXRlT3JGYWN0b3J5O1xuICAgIGNvbnN0IHN0YXRlS2V5cyA9IE9iamVjdC5rZXlzKHN0YXRlKTtcblxuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgc3RhdGVLZXlzKTtcblxuICAgIHN0b3JlW1NUQVRFX1NPVVJDRV0udXBkYXRlKChjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAuLi5zdGF0ZSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBzdGF0ZVNpZ25hbHMgPSBzdGF0ZUtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgY29uc3Qgc2xpY2VTaWduYWwgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gKHN0b3JlW1NUQVRFX1NPVVJDRV0oKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XVxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IC4uLmFjYywgW2tleV06IHRvRGVlcFNpZ25hbChzbGljZVNpZ25hbCkgfTtcbiAgICB9LCB7fSBhcyBTaWduYWxzRGljdGlvbmFyeSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBzdGF0ZVNpZ25hbHM6IHsgLi4uc3RvcmUuc3RhdGVTaWduYWxzLCAuLi5zdGF0ZVNpZ25hbHMgfSxcbiAgICB9IGFzIElubmVyU2lnbmFsU3RvcmU8U3RhdGU+O1xuICB9O1xufVxuIl19