@bravobit/bb-foundation 0.42.0 → 0.42.2

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 (194) hide show
  1. package/auth/lib/auth.interceptor.d.ts +3 -6
  2. package/auth/lib/auth.service.d.ts +11 -16
  3. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -5
  4. package/dialog/lib/dialog-container/dialog-container.component.d.ts +4 -6
  5. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +5 -7
  6. package/esm2022/auth/lib/auth.interceptor.mjs +36 -42
  7. package/esm2022/auth/lib/auth.module.mjs +4 -4
  8. package/esm2022/auth/lib/auth.service.mjs +25 -41
  9. package/esm2022/auth/lib/auth.session.mjs +26 -22
  10. package/esm2022/auth/lib/directives/authenticated.directive.mjs +16 -12
  11. package/esm2022/auth/lib/helpers/jwt.helper.mjs +29 -31
  12. package/esm2022/auth/lib/providers/email.provider.mjs +4 -1
  13. package/esm2022/auth/lib/providers/verify.provider.mjs +4 -1
  14. package/esm2022/collections/lib/collection.mjs +17 -7
  15. package/esm2022/collections/lib/collections.module.mjs +6 -6
  16. package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +7 -9
  17. package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +11 -11
  18. package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +10 -10
  19. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +16 -16
  20. package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +9 -11
  21. package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +12 -9
  22. package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
  23. package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +6 -3
  24. package/esm2022/collections/lib/directives/collections-data.directive.mjs +6 -3
  25. package/esm2022/collections/lib/directives/collections-empty.directive.mjs +6 -3
  26. package/esm2022/collections/lib/directives/collections-error.directive.mjs +6 -3
  27. package/esm2022/collections/lib/directives/collections-initial.directive.mjs +4 -3
  28. package/esm2022/collections/lib/directives/collections-item.directive.mjs +6 -3
  29. package/esm2022/collections/lib/providers/api-collection.provider.mjs +6 -4
  30. package/esm2022/collections/lib/providers/local-collection.provider.mjs +2 -2
  31. package/esm2022/combobox/combobox/combobox-container.directive.mjs +12 -7
  32. package/esm2022/combobox/combobox/combobox.component.mjs +23 -20
  33. package/esm2022/combobox/combobox-label.directive.mjs +3 -3
  34. package/esm2022/combobox/combobox-option.directive.mjs +3 -3
  35. package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +10 -6
  36. package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +13 -13
  37. package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +5 -7
  38. package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +8 -10
  39. package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +5 -7
  40. package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +12 -13
  41. package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +13 -12
  42. package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +7 -5
  43. package/esm2022/dashboard/lib/dashboard.module.mjs +5 -5
  44. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  45. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +21 -20
  46. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +19 -24
  47. package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -7
  48. package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  49. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +9 -6
  50. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +19 -26
  51. package/esm2022/dialog/lib/dialog.insertion.mjs +4 -3
  52. package/esm2022/dialog/lib/dialog.interfaces.mjs +4 -1
  53. package/esm2022/dialog/lib/dialog.module.mjs +6 -6
  54. package/esm2022/dialog/lib/dialog.ref.mjs +4 -6
  55. package/esm2022/dialog/lib/dialog.service.mjs +5 -3
  56. package/esm2022/dialog/lib/directives/confirm.directive.mjs +12 -14
  57. package/esm2022/elements/lib/avatar/avatar.component.mjs +75 -77
  58. package/esm2022/elements/lib/button/button.component.mjs +12 -10
  59. package/esm2022/elements/lib/checkbox/checkbox.component.mjs +21 -17
  60. package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +8 -10
  61. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +82 -76
  62. package/esm2022/elements/lib/directives/addon.directive.mjs +5 -5
  63. package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +7 -9
  64. package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -3
  65. package/esm2022/elements/lib/directives/form-submitter.directive.mjs +5 -7
  66. package/esm2022/elements/lib/directives/image-upload.directive.mjs +14 -11
  67. package/esm2022/elements/lib/directives/input.directive.mjs +6 -4
  68. package/esm2022/elements/lib/elements.module.mjs +6 -6
  69. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +52 -51
  70. package/esm2022/elements/lib/form-control/form-control.component.mjs +14 -14
  71. package/esm2022/elements/lib/form-error/form-error.component.mjs +16 -8
  72. package/esm2022/elements/lib/form-group/form-group.component.mjs +5 -7
  73. package/esm2022/elements/lib/icon/icon.component.mjs +14 -13
  74. package/esm2022/elements/lib/image-picker/image-picker.component.mjs +20 -17
  75. package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +28 -24
  76. package/esm2022/elements/lib/pipes/date.pipe.mjs +6 -8
  77. package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -3
  78. package/esm2022/elements/lib/pipes/file-size.pipe.mjs +13 -15
  79. package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +37 -35
  80. package/esm2022/elements/lib/radio-button/radio-button.component.mjs +8 -7
  81. package/esm2022/elements/lib/radio-group/radio-group.component.mjs +21 -20
  82. package/esm2022/elements/lib/spinner/spinner.component.mjs +7 -9
  83. package/esm2022/http/lib/classes/http.config.mjs +19 -15
  84. package/esm2022/http/lib/http.interfaces.mjs +1 -1
  85. package/esm2022/http/lib/http.module.mjs +5 -4
  86. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +12 -20
  87. package/esm2022/http/lib/interceptors/error.interceptor.mjs +9 -14
  88. package/esm2022/lib/core/services/exif.service.mjs +102 -100
  89. package/esm2022/lib/core/services/file-loader.service.mjs +15 -17
  90. package/esm2022/lib/core/services/files.service.mjs +9 -17
  91. package/esm2022/lib/core/services/image-converter.service.mjs +33 -30
  92. package/esm2022/lib/core/services/languages.service.mjs +25 -24
  93. package/esm2022/lib/core/services/network.service.mjs +8 -5
  94. package/esm2022/lib/core/services/patch.service.mjs +9 -6
  95. package/esm2022/localize/lib/dictionary/dictionary.class.mjs +7 -1
  96. package/esm2022/localize/lib/dictionary/dictionary.context.mjs +2 -4
  97. package/esm2022/localize/lib/dictionary/dictionary.data.mjs +2 -1
  98. package/esm2022/localize/lib/handlers/missing.handler.mjs +2 -4
  99. package/esm2022/localize/lib/localize.module.mjs +5 -5
  100. package/esm2022/localize/lib/localize.pipe.mjs +4 -3
  101. package/esm2022/localize/lib/localize.service.mjs +36 -62
  102. package/esm2022/localize/lib/transforms/interpolate.transform.mjs +12 -22
  103. package/esm2022/localize/lib/transforms/plural.transform.mjs +9 -18
  104. package/esm2022/localize/lib/transforms/reference.transform.mjs +7 -15
  105. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +14 -11
  106. package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
  107. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +11 -6
  108. package/esm2022/masking/lib/directives/date-mask.directive.mjs +11 -6
  109. package/esm2022/masking/lib/directives/input-mask.directive.mjs +21 -14
  110. package/esm2022/masking/lib/masking.module.mjs +5 -5
  111. package/esm2022/masking/lib/masking.service.mjs +4 -3
  112. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +50 -36
  113. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -7
  114. package/esm2022/notifications/lib/notifications.interfaces.mjs +10 -1
  115. package/esm2022/notifications/lib/notifications.module.mjs +4 -4
  116. package/esm2022/notifications/lib/notifications.service.mjs +24 -10
  117. package/esm2022/permissions/lib/directives/permission.directive.mjs +20 -14
  118. package/esm2022/permissions/lib/handlers/local.handler.mjs +3 -1
  119. package/esm2022/permissions/lib/permissions.interface.mjs +4 -1
  120. package/esm2022/permissions/lib/permissions.module.mjs +4 -4
  121. package/esm2022/permissions/lib/permissions.service.mjs +8 -7
  122. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +35 -28
  123. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +15 -15
  124. package/esm2022/recaptcha/lib/recaptcha.module.mjs +4 -4
  125. package/esm2022/select/lib/select/select.component.mjs +52 -47
  126. package/esm2022/select/lib/select-label.directive.mjs +4 -3
  127. package/esm2022/select/lib/select-multi-label.directive.mjs +4 -3
  128. package/esm2022/select/lib/select-option-group.directive.mjs +4 -3
  129. package/esm2022/select/lib/select-option.directive.mjs +4 -3
  130. package/esm2022/select/lib/select.module.mjs +5 -5
  131. package/esm2022/storage/lib/storage.service.mjs +25 -21
  132. package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +66 -64
  133. package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +16 -18
  134. package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +31 -30
  135. package/esm2022/table/lib/components/table/table.component.mjs +30 -20
  136. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  137. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +15 -11
  138. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +18 -16
  139. package/esm2022/table/lib/data/datasource.data.mjs +4 -6
  140. package/esm2022/table/lib/data/generic.data.mjs +38 -36
  141. package/esm2022/table/lib/table.module.mjs +6 -6
  142. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +5 -7
  143. package/esm2022/tooltip/lib/tooltip.directive.mjs +15 -15
  144. package/esm2022/tooltip/lib/tooltip.module.mjs +4 -4
  145. package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
  146. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +24 -22
  147. package/esm2022/utils/lib/directives/focus.directive.mjs +8 -5
  148. package/esm2022/utils/lib/directives/template.directive.mjs +7 -3
  149. package/esm2022/utils/lib/utils.module.mjs +5 -5
  150. package/fesm2022/bravobit-bb-foundation-auth.mjs +134 -144
  151. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  152. package/fesm2022/bravobit-bb-foundation-collections.mjs +123 -93
  153. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  154. package/fesm2022/bravobit-bb-foundation-combobox.mjs +46 -34
  155. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  156. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +60 -64
  157. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  158. package/fesm2022/bravobit-bb-foundation-dialog.mjs +97 -103
  159. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  160. package/fesm2022/bravobit-bb-foundation-elements.mjs +468 -440
  161. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  162. package/fesm2022/bravobit-bb-foundation-http.mjs +40 -46
  163. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  164. package/fesm2022/bravobit-bb-foundation-localize.mjs +91 -130
  165. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  166. package/fesm2022/bravobit-bb-foundation-masking.mjs +47 -29
  167. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  168. package/fesm2022/bravobit-bb-foundation-notifications.mjs +91 -53
  169. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  170. package/fesm2022/bravobit-bb-foundation-permissions.mjs +34 -22
  171. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  172. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +51 -44
  173. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  174. package/fesm2022/bravobit-bb-foundation-select.mjs +67 -58
  175. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  176. package/fesm2022/bravobit-bb-foundation-storage.mjs +134 -129
  177. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  178. package/fesm2022/bravobit-bb-foundation-table.mjs +107 -91
  179. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  180. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +21 -23
  181. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  182. package/fesm2022/bravobit-bb-foundation-utils.mjs +48 -37
  183. package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
  184. package/fesm2022/bravobit-bb-foundation.mjs +194 -191
  185. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  186. package/http/lib/http.interfaces.d.ts +2 -1
  187. package/http/lib/interceptors/base-url.interceptor.d.ts +2 -4
  188. package/http/lib/interceptors/error.interceptor.d.ts +1 -3
  189. package/lib/core/services/files.service.d.ts +3 -7
  190. package/localize/lib/localize.service.d.ts +10 -14
  191. package/localize/lib/transforms/interpolate.transform.d.ts +4 -5
  192. package/localize/lib/transforms/plural.transform.d.ts +5 -6
  193. package/localize/lib/transforms/reference.transform.d.ts +2 -3
  194. package/package.json +39 -39
@@ -6,27 +6,15 @@ import { COOKIE } from '@bravobit/bb-foundation';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/cdk/platform";
8
8
  export class Storage {
9
+ _platform;
10
+ _cookieString;
11
+ // All available strategies (sorted best to last).
12
+ _strategies;
13
+ // Current selected storage strategy.
14
+ _current = null;
9
15
  constructor(_platform, _cookieString) {
10
16
  this._platform = _platform;
11
17
  this._cookieString = _cookieString;
12
- // Current selected storage strategy.
13
- this._current = null;
14
- this.getLocalStorage = () => {
15
- try {
16
- return (typeof window !== 'undefined') ? window?.localStorage : null;
17
- }
18
- catch {
19
- return null;
20
- }
21
- };
22
- this.getSessionStorage = () => {
23
- try {
24
- return (typeof window !== 'undefined') ? window?.sessionStorage : null;
25
- }
26
- catch {
27
- return null;
28
- }
29
- };
30
18
  this._strategies = {
31
19
  ["local" /* StorageOption.Local */]: new PolyfillStorage(this.getLocalStorage()),
32
20
  ["cookie" /* StorageOption.Cookie */]: new CookieStorage(this._platform.isBrowser, this._cookieString),
@@ -92,8 +80,24 @@ export class Storage {
92
80
  }
93
81
  return this._strategies.memory;
94
82
  }
95
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Storage, deps: [{ token: i1.Platform }, { token: COOKIE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
96
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Storage, providedIn: 'root' }); }
83
+ getLocalStorage = () => {
84
+ try {
85
+ return (typeof window !== 'undefined') ? window?.localStorage : null;
86
+ }
87
+ catch {
88
+ return null;
89
+ }
90
+ };
91
+ getSessionStorage = () => {
92
+ try {
93
+ return (typeof window !== 'undefined') ? window?.sessionStorage : null;
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ };
99
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Storage, deps: [{ token: i1.Platform }, { token: COOKIE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
100
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Storage, providedIn: 'root' });
97
101
  }
98
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: Storage, decorators: [{
99
103
  type: Injectable,
@@ -106,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
106
110
  type: Inject,
107
111
  args: [COOKIE]
108
112
  }] }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zdG9yYWdlL3NyYy9saWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQU8vQyxNQUFNLE9BQU8sT0FBTztJQVFoQixZQUFvQixTQUFtQixFQUNTLGFBQXNCO1FBRGxELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDUyxrQkFBYSxHQUFiLGFBQWEsQ0FBUztRQUp0RSxxQ0FBcUM7UUFDcEIsYUFBUSxHQUEyQixJQUFJLENBQUM7UUF1RmpELG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQztnQkFDRCxPQUFPLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUN6RSxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNMLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFTSxzQkFBaUIsR0FBRyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDO2dCQUNELE9BQU8sQ0FBQyxPQUFPLE1BQU0sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzNFLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ0wsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztRQUNMLENBQUMsQ0FBQztRQWpHRSxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsbUNBQXFCLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xFLHFDQUFzQixFQUFFLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkYsdUNBQXVCLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdEUscUNBQXNCLEVBQUUsSUFBSSxhQUFhLEVBQUU7U0FDOUMsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUF1QztRQUMxQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQ2xELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLFFBQVEsQ0FBQztZQUNwQixDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBRUQsc0ZBQXNGO1FBQ3RGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELEdBQUcsQ0FBVSxLQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEdBQUcsQ0FBVSxLQUFhLEVBQUUsS0FBUSxFQUFFLFVBQThCO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsVUFBOEI7UUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBOEI7UUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsMERBQTBEO1FBQzFELEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUxQyw0Q0FBNEM7WUFDNUMsSUFBSSxRQUFRLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDMUIsT0FBTyxRQUFRLENBQUM7WUFDcEIsQ0FBQztRQUNMLENBQUM7UUFFRCxvREFBb0Q7UUFDcEQsK0NBQStDO1FBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsMkVBQTJFLENBQUMsQ0FBQztRQUNqRyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxDQUFDOzhHQTNGUSxPQUFPLDBDQVNnQixNQUFNO2tIQVQ3QixPQUFPLGNBRkosTUFBTTs7MkZBRVQsT0FBTztrQkFIbkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQVVnQixRQUFROzswQkFBSSxNQUFNOzJCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0b3JhZ2VPcHRpb24sIFN0b3JhZ2VTdHJhdGVneX0gZnJvbSAnLi9pbnRlcmZhY2VzL3N0cmF0ZWd5LmludGVyZmFjZSc7XG5pbXBvcnQge1BvbHlmaWxsU3RvcmFnZX0gZnJvbSAnLi9zdHJhdGVnaWVzL3BvbHlmaWxsLXN0b3JhZ2Uuc3RyYXRlZ3knO1xuaW1wb3J0IHtTdG9yYWdlQXR0cmlidXRlc30gZnJvbSAnLi9pbnRlcmZhY2VzL2F0dHJpYnV0ZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7Q29va2llU3RvcmFnZX0gZnJvbSAnLi9zdHJhdGVnaWVzL2Nvb2tpZS1zdG9yYWdlLnN0cmF0ZWd5JztcbmltcG9ydCB7TWVtb3J5U3RvcmFnZX0gZnJvbSAnLi9zdHJhdGVnaWVzL21lbW9yeS1zdG9yYWdlLnN0cmF0ZWd5JztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtDT09LSUV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcblxuZGVjbGFyZSBsZXQgbmdEZXZNb2RlO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN0b3JhZ2UgaW1wbGVtZW50cyBTdG9yYWdlU3RyYXRlZ3kge1xuXG4gICAgLy8gQWxsIGF2YWlsYWJsZSBzdHJhdGVnaWVzIChzb3J0ZWQgYmVzdCB0byBsYXN0KS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdHJhdGVnaWVzOiB7IFtrZXkgaW4gYCR7U3RvcmFnZU9wdGlvbn1gXTogU3RvcmFnZVN0cmF0ZWd5IH07XG5cbiAgICAvLyBDdXJyZW50IHNlbGVjdGVkIHN0b3JhZ2Ugc3RyYXRlZ3kuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudDogU3RvcmFnZVN0cmF0ZWd5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChDT09LSUUpIHByaXZhdGUgX2Nvb2tpZVN0cmluZz86IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zdHJhdGVnaWVzID0ge1xuICAgICAgICAgICAgW1N0b3JhZ2VPcHRpb24uTG9jYWxdOiBuZXcgUG9seWZpbGxTdG9yYWdlKHRoaXMuZ2V0TG9jYWxTdG9yYWdlKCkpLFxuICAgICAgICAgICAgW1N0b3JhZ2VPcHRpb24uQ29va2llXTogbmV3IENvb2tpZVN0b3JhZ2UodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLCB0aGlzLl9jb29raWVTdHJpbmcpLFxuICAgICAgICAgICAgW1N0b3JhZ2VPcHRpb24uU2Vzc2lvbl06IG5ldyBQb2x5ZmlsbFN0b3JhZ2UodGhpcy5nZXRTZXNzaW9uU3RvcmFnZSgpKSxcbiAgICAgICAgICAgIFtTdG9yYWdlT3B0aW9uLk1lbW9yeV06IG5ldyBNZW1vcnlTdG9yYWdlKClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9jdXJyZW50ID0gdGhpcy5maW5kQmVzdFN0b3JhZ2VTdHJhdGVneSgpO1xuICAgIH1cblxuICAgIHNlbGVjdChvcHRpb246IFN0b3JhZ2VPcHRpb24gfCBTdG9yYWdlT3B0aW9uW10pIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KG9wdGlvbikgPyBvcHRpb24gOiBbb3B0aW9uXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX3N0cmF0ZWdpZXM/LltpdGVtXSA/PyBudWxsO1xuICAgICAgICAgICAgaWYgKHN0cmF0ZWd5ICYmIHN0cmF0ZWd5LmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyYXRlZ3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oJ1tTdG9yYWdlXTogQ291bGQgbm90IHNlbGVjdCBwcm9wZXIgc3RvcmFnZSBvcHRpb24sIHVzaW5nIG1lbW9yeSBmYWxsYmFjay4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsd2F5cyByZXR1cm4gYXMgYSBmYWxsYmFjayB0aGUgbWVtb3J5IHN0b3JhZ2Ugc2luY2UgaXQgc2hvdWxkIGJlIGFsd2F5cyBhdmFpbGFibGUuXG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJhdGVnaWVzLm1lbW9yeTtcbiAgICB9XG5cbiAgICBnZXQgbG9jYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJhdGVnaWVzLmxvY2FsO1xuICAgIH1cblxuICAgIGdldCBjb29raWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJhdGVnaWVzLmNvb2tpZTtcbiAgICB9XG5cbiAgICBnZXQgc2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWdpZXMuc2Vzc2lvbjtcbiAgICB9XG5cbiAgICBnZXQgbWVtb3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ2llcy5tZW1vcnk7XG4gICAgfVxuXG4gICAgZ2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQuZ2V0KHRva2VuKTtcbiAgICB9XG5cbiAgICBzZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZywgdmFsdWU6IFQsIGF0dHJpYnV0ZXM/OiBTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLl9jdXJyZW50LnNldDxUPih0b2tlbiwgdmFsdWUsIGF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIHJlbW92ZSh0b2tlbjogc3RyaW5nLCBhdHRyaWJ1dGVzPzogU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudC5yZW1vdmUodG9rZW4sIGF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIGNsZWFyKGF0dHJpYnV0ZXM/OiBTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICB0aGlzLl9jdXJyZW50LmNsZWFyKGF0dHJpYnV0ZXMpO1xuICAgIH1cblxuICAgIGlzU3VwcG9ydGVkKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9jdXJyZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEJlc3RTdG9yYWdlU3RyYXRlZ3koKSB7XG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgYXZhaWxhYmxlIHN0cmF0ZWdpZXMgdG8gZmluZCB0aGUgYmVzdC5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMuX3N0cmF0ZWdpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fc3RyYXRlZ2llcz8uW3R5cGVdO1xuXG4gICAgICAgICAgICAvLyBUaGUgZmlyc3Qgc3VwcG9ydGVkIHN0cmF0ZWd5IGlzIHRoZSBiZXN0LlxuICAgICAgICAgICAgaWYgKHN0cmF0ZWd5Py5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgbm8gc3RyYXRlZ3kgd2FzIHJldHVybmVkIHdlIGZhbGxiYWNrIHRvIG1lbW9yeVxuICAgICAgICAvLyBzdG9yYWdlIHNpbmNlIGl0IHNob3VsZCBiZSBhdmFpbGFibGUgYWx3YXlzLlxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oJ1tTdG9yYWdlXTogQ291bGQgbm90IHNlbGVjdCBwcm9wZXIgc3RvcmFnZSBvcHRpb24sIHVzaW5nIG1lbW9yeSBmYWxsYmFjay4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJhdGVnaWVzLm1lbW9yeTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvY2FsU3RvcmFnZSA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpID8gd2luZG93Py5sb2NhbFN0b3JhZ2UgOiBudWxsO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0U2Vzc2lvblN0b3JhZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSA/IHdpbmRvdz8uc2Vzc2lvblN0b3JhZ2UgOiBudWxsO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfTtcblxufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9zdG9yYWdlL3NyYy9saWIvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUV2RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0seUJBQXlCLENBQUM7OztBQU8vQyxNQUFNLE9BQU8sT0FBTztJQVFJO0lBQzRCO0lBUGhELGtEQUFrRDtJQUNqQyxXQUFXLENBQW1EO0lBRS9FLHFDQUFxQztJQUNwQixRQUFRLEdBQTJCLElBQUksQ0FBQztJQUV6RCxZQUFvQixTQUFtQixFQUNTLGFBQXNCO1FBRGxELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDUyxrQkFBYSxHQUFiLGFBQWEsQ0FBUztRQUNsRSxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2YsbUNBQXFCLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xFLHFDQUFzQixFQUFFLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkYsdUNBQXVCLEVBQUUsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdEUscUNBQXNCLEVBQUUsSUFBSSxhQUFhLEVBQUU7U0FDOUMsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFF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T0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN6RSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUM3QixJQUFJLENBQUM7WUFDRCxPQUFPLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUMsQ0FBQzt1R0EzR08sT0FBTywwQ0FTZ0IsTUFBTTsyR0FUN0IsT0FBTyxjQUZKLE1BQU07OzJGQUVULE9BQU87a0JBSG5CLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFVZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdG9yYWdlT3B0aW9uLCBTdG9yYWdlU3RyYXRlZ3l9IGZyb20gJy4vaW50ZXJmYWNlcy9zdHJhdGVneS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtQb2x5ZmlsbFN0b3JhZ2V9IGZyb20gJy4vc3RyYXRlZ2llcy9wb2x5ZmlsbC1zdG9yYWdlLnN0cmF0ZWd5JztcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZXN9IGZyb20gJy4vaW50ZXJmYWNlcy9hdHRyaWJ1dGVzLmludGVyZmFjZSc7XG5pbXBvcnQge0Nvb2tpZVN0b3JhZ2V9IGZyb20gJy4vc3RyYXRlZ2llcy9jb29raWUtc3RvcmFnZS5zdHJhdGVneSc7XG5pbXBvcnQge01lbW9yeVN0b3JhZ2V9IGZyb20gJy4vc3RyYXRlZ2llcy9tZW1vcnktc3RvcmFnZS5zdHJhdGVneSc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQbGF0Zm9ybX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7Q09PS0lFfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbmRlY2xhcmUgbGV0IG5nRGV2TW9kZTtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBTdG9yYWdlIGltcGxlbWVudHMgU3RvcmFnZVN0cmF0ZWd5IHtcblxuICAgIC8vIEFsbCBhdmFpbGFibGUgc3RyYXRlZ2llcyAoc29ydGVkIGJlc3QgdG8gbGFzdCkuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RyYXRlZ2llczogeyBba2V5IGluIGAke1N0b3JhZ2VPcHRpb259YF06IFN0b3JhZ2VTdHJhdGVneSB9O1xuXG4gICAgLy8gQ3VycmVudCBzZWxlY3RlZCBzdG9yYWdlIHN0cmF0ZWd5LlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnQ6IFN0b3JhZ2VTdHJhdGVneSB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQ09PS0lFKSBwcml2YXRlIF9jb29raWVTdHJpbmc/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc3RyYXRlZ2llcyA9IHtcbiAgICAgICAgICAgIFtTdG9yYWdlT3B0aW9uLkxvY2FsXTogbmV3IFBvbHlmaWxsU3RvcmFnZSh0aGlzLmdldExvY2FsU3RvcmFnZSgpKSxcbiAgICAgICAgICAgIFtTdG9yYWdlT3B0aW9uLkNvb2tpZV06IG5ldyBDb29raWVTdG9yYWdlKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciwgdGhpcy5fY29va2llU3RyaW5nKSxcbiAgICAgICAgICAgIFtTdG9yYWdlT3B0aW9uLlNlc3Npb25dOiBuZXcgUG9seWZpbGxTdG9yYWdlKHRoaXMuZ2V0U2Vzc2lvblN0b3JhZ2UoKSksXG4gICAgICAgICAgICBbU3RvcmFnZU9wdGlvbi5NZW1vcnldOiBuZXcgTWVtb3J5U3RvcmFnZSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY3VycmVudCA9IHRoaXMuZmluZEJlc3RTdG9yYWdlU3RyYXRlZ3koKTtcbiAgICB9XG5cbiAgICBzZWxlY3Qob3B0aW9uOiBTdG9yYWdlT3B0aW9uIHwgU3RvcmFnZU9wdGlvbltdKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheShvcHRpb24pID8gb3B0aW9uIDogW29wdGlvbl07XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9zdHJhdGVnaWVzPy5baXRlbV0gPz8gbnVsbDtcbiAgICAgICAgICAgIGlmIChzdHJhdGVneSAmJiBzdHJhdGVneS5pc1N1cHBvcnRlZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmF0ZWd5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKCdbU3RvcmFnZV06IENvdWxkIG5vdCBzZWxlY3QgcHJvcGVyIHN0b3JhZ2Ugb3B0aW9uLCB1c2luZyBtZW1vcnkgZmFsbGJhY2suJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBbHdheXMgcmV0dXJuIGFzIGEgZmFsbGJhY2sgdGhlIG1lbW9yeSBzdG9yYWdlIHNpbmNlIGl0IHNob3VsZCBiZSBhbHdheXMgYXZhaWxhYmxlLlxuICAgICAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ2llcy5tZW1vcnk7XG4gICAgfVxuXG4gICAgZ2V0IGxvY2FsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ2llcy5sb2NhbDtcbiAgICB9XG5cbiAgICBnZXQgY29va2llKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ2llcy5jb29raWU7XG4gICAgfVxuXG4gICAgZ2V0IHNlc3Npb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHJhdGVnaWVzLnNlc3Npb247XG4gICAgfVxuXG4gICAgZ2V0IG1lbW9yeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0cmF0ZWdpZXMubWVtb3J5O1xuICAgIH1cblxuICAgIGdldDxUID0gYW55Pih0b2tlbjogc3RyaW5nKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50LmdldCh0b2tlbik7XG4gICAgfVxuXG4gICAgc2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcsIHZhbHVlOiBULCBhdHRyaWJ1dGVzPzogU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudC5zZXQ8VD4odG9rZW4sIHZhbHVlLCBhdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICByZW1vdmUodG9rZW46IHN0cmluZywgYXR0cmlidXRlcz86IFN0b3JhZ2VBdHRyaWJ1dGVzKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQucmVtb3ZlKHRva2VuLCBhdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICBjbGVhcihhdHRyaWJ1dGVzPzogU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudC5jbGVhcihhdHRyaWJ1dGVzKTtcbiAgICB9XG5cbiAgICBpc1N1cHBvcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fY3VycmVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRCZXN0U3RvcmFnZVN0cmF0ZWd5KCkge1xuICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIGF2YWlsYWJsZSBzdHJhdGVnaWVzIHRvIGZpbmQgdGhlIGJlc3QuXG4gICAgICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLl9zdHJhdGVnaWVzKSB7XG4gICAgICAgICAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX3N0cmF0ZWdpZXM/Llt0eXBlXTtcblxuICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHN1cHBvcnRlZCBzdHJhdGVneSBpcyB0aGUgYmVzdC5cbiAgICAgICAgICAgIGlmIChzdHJhdGVneT8uaXNTdXBwb3J0ZWQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdHJhdGVneTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIG5vIHN0cmF0ZWd5IHdhcyByZXR1cm5lZCB3ZSBmYWxsYmFjayB0byBtZW1vcnlcbiAgICAgICAgLy8gc3RvcmFnZSBzaW5jZSBpdCBzaG91bGQgYmUgYXZhaWxhYmxlIGFsd2F5cy5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKCdbU3RvcmFnZV06IENvdWxkIG5vdCBzZWxlY3QgcHJvcGVyIHN0b3JhZ2Ugb3B0aW9uLCB1c2luZyBtZW1vcnkgZmFsbGJhY2suJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fc3RyYXRlZ2llcy5tZW1vcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSA/IHdpbmRvdz8ubG9jYWxTdG9yYWdlIDogbnVsbDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwcml2YXRlIGdldFNlc3Npb25TdG9yYWdlID0gKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgPyB3aW5kb3c/LnNlc3Npb25TdG9yYWdlIDogbnVsbDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG5cbn1cbiJdfQ==
@@ -1,70 +1,11 @@
1
1
  export class CookieStorage {
2
+ _isBrowser;
3
+ _cookieString;
4
+ // State.
5
+ _isSupported = false;
2
6
  constructor(_isBrowser, _cookieString) {
3
7
  this._isBrowser = _isBrowser;
4
8
  this._cookieString = _cookieString;
5
- // State.
6
- this._isSupported = false;
7
- this.decode = (cookieString) => {
8
- const result = {};
9
- const cookies = cookieString ? cookieString.split('; ') : [];
10
- const rdecode = /(%[0-9A-Z]{2})+/g;
11
- for (let index = 0; index < cookies.length; index++) {
12
- const parts = cookies[index].split('=');
13
- let cookie = parts.slice(1).join('=');
14
- if (cookie.charAt(0) === '"') {
15
- cookie = cookie.slice(1, -1);
16
- }
17
- try {
18
- const name = parts[0].replace(rdecode, decodeURIComponent);
19
- const value = cookie.replace(rdecode, decodeURIComponent);
20
- result[name] = this.jsonParse(value);
21
- }
22
- catch {
23
- // Ignore cookies with an invalid name/value encoding.
24
- }
25
- }
26
- return result;
27
- };
28
- this.jsonParse = (rawValue) => {
29
- // Try to parse the data.
30
- let parsedValue = undefined;
31
- // Only parse the value when it is not null.
32
- if (rawValue !== undefined) {
33
- try {
34
- parsedValue = JSON.parse(rawValue);
35
- }
36
- catch {
37
- // The string could not be parsed to JSON.
38
- }
39
- }
40
- // Return the parsed value.
41
- return parsedValue;
42
- };
43
- this.stringifyAttribute = (token, value) => {
44
- if (!value) {
45
- return '';
46
- }
47
- const stringified = `; ${token}`;
48
- // Boolean attributes should not have a value.
49
- if (value === true) {
50
- return stringified;
51
- }
52
- return stringified + `= ${value}`;
53
- };
54
- this.testIfSupported = () => {
55
- // We are using an aggressive test here, because we cannot rely on navigator.cookieEnabled
56
- // it does not return the correct value at all times.
57
- const testCookieString = `bbcookietest`;
58
- try {
59
- document.cookie = `${testCookieString}=1`;
60
- const result = document.cookie.indexOf(`${testCookieString}=`) !== -1;
61
- document.cookie = `${testCookieString}=1; expires=Thu, 01-Jan-1970 00:00:01 GMT`;
62
- return result;
63
- }
64
- catch {
65
- return false;
66
- }
67
- };
68
9
  // Check if the storage is supported.
69
10
  this._isSupported = this.testIfSupported();
70
11
  }
@@ -119,6 +60,42 @@ export class CookieStorage {
119
60
  // Return the completed encoded string.
120
61
  return [encodedToken, '=', encodedValue, this.stringifyCookie(attributes)].join('');
121
62
  }
63
+ decode = (cookieString) => {
64
+ const result = {};
65
+ const cookies = cookieString ? cookieString.split('; ') : [];
66
+ const rdecode = /(%[0-9A-Z]{2})+/g;
67
+ for (let index = 0; index < cookies.length; index++) {
68
+ const parts = cookies[index].split('=');
69
+ let cookie = parts.slice(1).join('=');
70
+ if (cookie.charAt(0) === '"') {
71
+ cookie = cookie.slice(1, -1);
72
+ }
73
+ try {
74
+ const name = parts[0].replace(rdecode, decodeURIComponent);
75
+ const value = cookie.replace(rdecode, decodeURIComponent);
76
+ result[name] = this.jsonParse(value);
77
+ }
78
+ catch {
79
+ // Ignore cookies with an invalid name/value encoding.
80
+ }
81
+ }
82
+ return result;
83
+ };
84
+ jsonParse = (rawValue) => {
85
+ // Try to parse the data.
86
+ let parsedValue = undefined;
87
+ // Only parse the value when it is not null.
88
+ if (rawValue !== undefined) {
89
+ try {
90
+ parsedValue = JSON.parse(rawValue);
91
+ }
92
+ catch {
93
+ // The string could not be parsed to JSON.
94
+ }
95
+ }
96
+ // Return the parsed value.
97
+ return parsedValue;
98
+ };
122
99
  stringifyCookie(attributes) {
123
100
  // Make sure the expires attribute is a date and not a number.
124
101
  if (typeof attributes.expires === 'number') {
@@ -138,5 +115,30 @@ export class CookieStorage {
138
115
  + this.stringifyAttribute('Secure', attributes.secure)
139
116
  + this.stringifyAttribute('SameSite', attributes.sameSite);
140
117
  }
118
+ stringifyAttribute = (token, value) => {
119
+ if (!value) {
120
+ return '';
121
+ }
122
+ const stringified = `; ${token}`;
123
+ // Boolean attributes should not have a value.
124
+ if (value === true) {
125
+ return stringified;
126
+ }
127
+ return stringified + `= ${value}`;
128
+ };
129
+ testIfSupported = () => {
130
+ // We are using an aggressive test here, because we cannot rely on navigator.cookieEnabled
131
+ // it does not return the correct value at all times.
132
+ const testCookieString = `bbcookietest`;
133
+ try {
134
+ document.cookie = `${testCookieString}=1`;
135
+ const result = document.cookie.indexOf(`${testCookieString}=`) !== -1;
136
+ document.cookie = `${testCookieString}=1; expires=Thu, 01-Jan-1970 00:00:01 GMT`;
137
+ return result;
138
+ }
139
+ catch {
140
+ return false;
141
+ }
142
+ };
141
143
  }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3N0b3JhZ2Uvc3JjL2xpYi9zdHJhdGVnaWVzL2Nvb2tpZS1zdG9yYWdlLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFVBQW1CLEVBQ25CLGFBQXNCO1FBRHRCLGVBQVUsR0FBVixVQUFVLENBQVM7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQVM7UUFKMUMsU0FBUztRQUNRLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBMEV2QyxXQUFNLEdBQUcsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDdEMsTUFBTSxNQUFNLEdBQTZCLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQztZQUVuQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO29CQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMs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USxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUM7Y0FDcEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDO2NBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQztjQUNwRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBK0JKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb29raWVTdG9yYWdlQXR0cmlidXRlc30gZnJvbSAnLi4vaW50ZXJmYWNlcy9hdHRyaWJ1dGVzLmludGVyZmFjZSc7XG5pbXBvcnQge1N0b3JhZ2VTdHJhdGVneX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zdHJhdGVneS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgQ29va2llU3RvcmFnZSBpbXBsZW1lbnRzIFN0b3JhZ2VTdHJhdGVneSB7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfaXNCcm93c2VyOiBib29sZWFuLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2Nvb2tpZVN0cmluZz86IHN0cmluZykge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIHRoaXMuX2lzU3VwcG9ydGVkID0gdGhpcy50ZXN0SWZTdXBwb3J0ZWQoKTtcbiAgICB9XG5cbiAgICBnZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZykge1xuICAgICAgICAvLyBHZXQgYWxsIHZhbHVlcyBhbmQgcGljayBvbmUgb3V0LlxuICAgICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmFsbCgpO1xuICAgICAgICByZXR1cm4gdmFsdWVzPy5bdG9rZW5dIGFzIFQ7XG4gICAgfVxuXG4gICAgc2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcsIHZhbHVlOiBULCBhdHRyaWJ1dGVzPzogQ29va2llU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdyaXRlIGEgbmV3IGNvb2tpZS5cbiAgICAgICAgZG9jdW1lbnQuY29va2llID0gdGhpcy5lbmNvZGUodG9rZW4sIHZhbHVlLCB7cGF0aDogJy8nLCBzYW1lU2l0ZTogJ0xheCcsIC4uLmF0dHJpYnV0ZXN9KTtcbiAgICB9XG5cbiAgICByZW1vdmUodG9rZW46IHN0cmluZywgYXR0cmlidXRlcz86IENvb2tpZVN0b3JhZ2VBdHRyaWJ1dGVzKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHN0b3JhZ2UgaXMgc3VwcG9ydGVkLlxuICAgICAgICBpZiAoIXRoaXMuX2lzU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldCh0b2tlbiwgJycsIHsuLi5hdHRyaWJ1dGVzLCBleHBpcmVzOiAtMX0pO1xuICAgIH1cblxuICAgIGNsZWFyKGF0dHJpYnV0ZXM/OiBDb29raWVTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmFsbCgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdG9rZW4gaW4gaXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKHRva2VuLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3VwcG9ydGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhbGwoKSB7XG4gICAgICAgIGNvbnN0IGNvb2tpZVN0cmluZyA9IHRoaXMuX2lzQnJvd3NlclxuICAgICAgICAgICAgPyBkb2N1bWVudD8uY29va2llXG4gICAgICAgICAgICA6IHRoaXMuX2Nvb2tpZVN0cmluZztcblxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGUoY29va2llU3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuY29kZSh0b2tlbjogc3RyaW5nLCB2YWx1ZTogYW55LCBhdHRyaWJ1dGVzOiBDb29raWVTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBFbmNvZGUgdGhlIHRva2VuLlxuICAgICAgICBjb25zdCBlbmNvZGVkVG9rZW4gPSBlbmNvZGVVUklDb21wb25lbnQodG9rZW4pXG4gICAgICAgICAgICAucmVwbGFjZSgvJSgyM3wyNHwyNnwyQnw1RXw2MHw3QykvZywgZGVjb2RlVVJJQ29tcG9uZW50KVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcKC9nLCAnJTI4JykucmVwbGFjZSgvXFwpL2csICclMjknKTtcblxuICAgICAgICBjb25zdCByYXdWYWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICAgICAgICAvLyBFbmNvZGUgdGhlIHZhbHVlLlxuICAgICAgICBjb25zdCBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQocmF3VmFsdWUpXG4gICAgICAgICAgICAucmVwbGFjZSgvJSgyM3wyNHwyNnwyQnwzQXwzQ3wzRXwzRHwyRnwzRnw0MHw1Qnw1RHw1RXw2MHw3Qnw3RHw3QykvZywgZGVjb2RlVVJJQ29tcG9uZW50KTtcblxuICAgICAgICAvLyBSZXR1cm4gdGhlIGNvbXBsZXRlZCBlbmNvZGVkIHN0cmluZy5cbiAgICAgICAgcmV0dXJuIFtlbmNvZGVkVG9rZW4sICc9JywgZW5jb2RlZFZhbHVlLCB0aGlzLnN0cmluZ2lmeUNvb2tpZShhdHRyaWJ1dGVzKV0uam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWNvZGUgPSAoY29va2llU3RyaW5nOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiB7IFt0b2tlbjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgY29va2llcyA9IGNvb2tpZVN0cmluZyA/IGNvb2tpZVN0cmluZy5zcGxpdCgnOyAnKSA6IFtdO1xuICAgICAgICBjb25zdCByZGVjb2RlID0gLyglWzAtOUEtWl17Mn0pKy9nO1xuXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb29raWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBjb29raWVzW2luZGV4XS5zcGxpdCgnPScpO1xuICAgICAgICAgICAgbGV0IGNvb2tpZSA9IHBhcnRzLnNsaWNlKDEpLmpvaW4oJz0nKTtcblxuICAgICAgICAgICAgaWYgKGNvb2tpZS5jaGFyQXQoMCkgPT09ICdcIicpIHtcbiAgICAgICAgICAgICAgICBjb29raWUgPSBjb29raWUuc2xpY2UoMSwgLTEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBwYXJ0c1swXS5yZXBsYWNlKHJkZWNvZGUsIGRlY29kZVVSSUNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjb29raWUucmVwbGFjZShyZGVjb2RlLCBkZWNvZGVVUklDb21wb25lbnQpO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtuYW1lXSA9IHRoaXMuanNvblBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSBjb29raWVzIHdpdGggYW4gaW52YWxpZCBuYW1lL3ZhbHVlIGVuY29kaW5nLlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBqc29uUGFyc2UgPSA8VCA9IGFueT4ocmF3VmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyBUcnkgdG8gcGFyc2UgdGhlIGRhdGEuXG4gICAgICAgIGxldCBwYXJzZWRWYWx1ZTogVCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IHBhcnNlIHRoZSB2YWx1ZSB3aGVuIGl0IGlzIG5vdCBudWxsLlxuICAgICAgICBpZiAocmF3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IEpTT04ucGFyc2UocmF3VmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gVGhlIHN0cmluZyBjb3VsZCBub3QgYmUgcGFyc2VkIHRvIEpTT04uXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHBhcnNlZCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIHBhcnNlZFZhbHVlO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHN0cmluZ2lmeUNvb2tpZShhdHRyaWJ1dGVzOiBDb29raWVTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGV4cGlyZXMgYXR0cmlidXRlIGlzIGEgZGF0ZSBhbmQgbm90IGEgbnVtYmVyLlxuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGlyZXMgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgZXhwaXJlcy5zZXRNaWxsaXNlY29uZHMoZXhwaXJlcy5nZXRNaWxsaXNlY29uZHMoKSArIGF0dHJpYnV0ZXMuZXhwaXJlcyAqIDg2NGUrNSk7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmV4cGlyZXMgPSBleHBpcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yY2Ugc2VjdXJlIHdoZW4gc2FtZVNpdGU9Tm9uZS5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMuc2FtZVNpdGUgPT09ICdOb25lJykge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5zZWN1cmUgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZT8ud2Fybj8uKCdDb29rZSB3YXMgZm9yY2VkIHdpdGggc2VjdXJlIGZsYWcgYmVjYXVzZSBzYW1lU2l0ZT1Ob25lJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdHJpbmdpZnkgYWxsIGF0dHJpYnV0ZXMuXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeUF0dHJpYnV0ZSgnRXhwaXJlcycsIGF0dHJpYnV0ZXMuZXhwaXJlcyA/IGF0dHJpYnV0ZXMuZXhwaXJlcy50b1VUQ1N0cmluZygpIDogJycpXG4gICAgICAgICAgICArIHRoaXMuc3RyaW5naWZ5QXR0cmlidXRlKCdEb21haW4nLCBhdHRyaWJ1dGVzLmRvbWFpbilcbiAgICAgICAgICAgICsgdGhpcy5zdHJpbmdpZnlBdHRyaWJ1dGUoJ1BhdGgnLCBhdHRyaWJ1dGVzLnBhdGgpXG4gICAgICAgICAgICArIHRoaXMuc3RyaW5naWZ5QXR0cmlidXRlKCdTZWN1cmUnLCBhdHRyaWJ1dGVzLnNlY3VyZSlcbiAgICAgICAgICAgICsgdGhpcy5zdHJpbmdpZnlBdHRyaWJ1dGUoJ1NhbWVTaXRlJywgYXR0cmlidXRlcy5zYW1lU2l0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdHJpbmdpZnlBdHRyaWJ1dGUgPSAodG9rZW46IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RyaW5naWZpZWQgPSBgOyAke3Rva2VufWA7XG5cbiAgICAgICAgLy8gQm9vbGVhbiBhdHRyaWJ1dGVzIHNob3VsZCBub3QgaGF2ZSBhIHZhbHVlLlxuICAgICAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZmllZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHJpbmdpZmllZCArIGA9ICR7dmFsdWV9YDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSB0ZXN0SWZTdXBwb3J0ZWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIFdlIGFyZSB1c2luZyBhbiBhZ2dyZXNzaXZlIHRlc3QgaGVyZSwgYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZFxuICAgICAgICAvLyBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIGNvcnJlY3QgdmFsdWUgYXQgYWxsIHRpbWVzLlxuICAgICAgICBjb25zdCB0ZXN0Q29va2llU3RyaW5nID0gYGJiY29va2lldGVzdGA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBgJHt0ZXN0Q29va2llU3RyaW5nfT0xYDtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKGAke3Rlc3RDb29raWVTdHJpbmd9PWApICE9PSAtMTtcbiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke3Rlc3RDb29raWVTdHJpbmd9PTE7IGV4cGlyZXM9VGh1LCAwMS1KYW4tMTk3MCAwMDowMDowMSBHTVRgO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9O1xuXG59XG4iXX0=
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3N0b3JhZ2Uvc3JjL2xpYi9zdHJhdGVnaWVzL2Nvb2tpZS1zdG9yYWdlLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxhQUFhO0lBS0Y7SUFDQTtJQUpwQixTQUFTO0lBQ1EsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUUvQyxZQUFvQixVQUFtQixFQUNuQixhQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFTO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFTO1FBQ3RDLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsR0FBRyxDQUFVLEtBQWE7UUFDdEIsbUNBQW1DO1FBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxHQUFHLENBQVUsS0FBYSxFQUFFLEtBQVEsRUFBRSxVQUFvQztRQUN0RSwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLFVBQVUsRUFBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsVUFBb0M7UUFDdEQsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFB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TSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RSxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLDJDQUEyQyxDQUFDO1lBQ2pGLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDTCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQyxDQUFDO0NBRUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Nvb2tpZVN0b3JhZ2VBdHRyaWJ1dGVzfSBmcm9tICcuLi9pbnRlcmZhY2VzL2F0dHJpYnV0ZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7U3RvcmFnZVN0cmF0ZWd5fSBmcm9tICcuLi9pbnRlcmZhY2VzL3N0cmF0ZWd5LmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBDb29raWVTdG9yYWdlIGltcGxlbWVudHMgU3RvcmFnZVN0cmF0ZWd5IHtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pc0Jyb3dzZXI6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfY29va2llU3RyaW5nPzogc3RyaW5nKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgdGhpcy5faXNTdXBwb3J0ZWQgPSB0aGlzLnRlc3RJZlN1cHBvcnRlZCgpO1xuICAgIH1cblxuICAgIGdldDxUID0gYW55Pih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIC8vIEdldCBhbGwgdmFsdWVzIGFuZCBwaWNrIG9uZSBvdXQuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuYWxsKCk7XG4gICAgICAgIHJldHVybiB2YWx1ZXM/Llt0b2tlbl0gYXMgVDtcbiAgICB9XG5cbiAgICBzZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZywgdmFsdWU6IFQsIGF0dHJpYnV0ZXM/OiBDb29raWVTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV3JpdGUgYSBuZXcgY29va2llLlxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSB0aGlzLmVuY29kZSh0b2tlbiwgdmFsdWUsIHtwYXRoOiAnLycsIHNhbWVTaXRlOiAnTGF4JywgLi4uYXR0cmlidXRlc30pO1xuICAgIH1cblxuICAgIHJlbW92ZSh0b2tlbjogc3RyaW5nLCBhdHRyaWJ1dGVzPzogQ29va2llU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0KHRva2VuLCAnJywgey4uLmF0dHJpYnV0ZXMsIGV4cGlyZXM6IC0xfSk7XG4gICAgfVxuXG4gICAgY2xlYXIoYXR0cmlidXRlcz86IENvb2tpZVN0b3JhZ2VBdHRyaWJ1dGVzKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHN0b3JhZ2UgaXMgc3VwcG9ydGVkLlxuICAgICAgICBpZiAoIXRoaXMuX2lzU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuYWxsKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBpbiBpdGVtcykge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmUodG9rZW4sIGF0dHJpYnV0ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTdXBwb3J0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFsbCgpIHtcbiAgICAgICAgY29uc3QgY29va2llU3RyaW5nID0gdGhpcy5faXNCcm93c2VyXG4gICAgICAgICAgICA/IGRvY3VtZW50Py5jb29raWVcbiAgICAgICAgICAgIDogdGhpcy5fY29va2llU3RyaW5nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZShjb29raWVTdHJpbmcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5jb2RlKHRva2VuOiBzdHJpbmcsIHZhbHVlOiBhbnksIGF0dHJpYnV0ZXM6IENvb2tpZVN0b3JhZ2VBdHRyaWJ1dGVzKSB7XG4gICAgICAgIC8vIEVuY29kZSB0aGUgdG9rZW4uXG4gICAgICAgIGNvbnN0IGVuY29kZWRUb2tlbiA9IGVuY29kZVVSSUNvbXBvbmVudCh0b2tlbilcbiAgICAgICAgICAgIC5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDVFfDYwfDdDKS9nLCBkZWNvZGVVUklDb21wb25lbnQpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwoL2csICclMjgnKS5yZXBsYWNlKC9cXCkvZywgJyUyOScpO1xuXG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG4gICAgICAgIC8vIEVuY29kZSB0aGUgdmFsdWUuXG4gICAgICAgIGNvbnN0IGVuY29kZWRWYWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudChyYXdWYWx1ZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDNBfDNDfDNFfDNEfDJGfDNGfDQwfDVCfDVEfDVFfDYwfDdCfDdEfDdDKS9nLCBkZWNvZGVVUklDb21wb25lbnQpO1xuXG4gICAgICAgIC8vIFJldHVybiB0aGUgY29tcGxldGVkIGVuY29kZWQgc3RyaW5nLlxuICAgICAgICByZXR1cm4gW2VuY29kZWRUb2tlbiwgJz0nLCBlbmNvZGVkVmFsdWUsIHRoaXMuc3RyaW5naWZ5Q29va2llKGF0dHJpYnV0ZXMpXS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlY29kZSA9IChjb29raWVTdHJpbmc6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHsgW3Rva2VuOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBjb25zdCBjb29raWVzID0gY29va2llU3RyaW5nID8gY29va2llU3RyaW5nLnNwbGl0KCc7ICcpIDogW107XG4gICAgICAgIGNvbnN0IHJkZWNvZGUgPSAvKCVbMC05QS1aXXsyfSkrL2c7XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvb2tpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IGNvb2tpZXNbaW5kZXhdLnNwbGl0KCc9Jyk7XG4gICAgICAgICAgICBsZXQgY29va2llID0gcGFydHMuc2xpY2UoMSkuam9pbignPScpO1xuXG4gICAgICAgICAgICBpZiAoY29va2llLmNoYXJBdCgwKSA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICAgIGNvb2tpZSA9IGNvb2tpZS5zbGljZSgxLCAtMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHBhcnRzWzBdLnJlcGxhY2UocmRlY29kZSwgZGVjb2RlVVJJQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvb2tpZS5yZXBsYWNlKHJkZWNvZGUsIGRlY29kZVVSSUNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0W25hbWVdID0gdGhpcy5qc29uUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIGNvb2tpZXMgd2l0aCBhbiBpbnZhbGlkIG5hbWUvdmFsdWUgZW5jb2RpbmcuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICBwcml2YXRlIGpzb25QYXJzZSA9IDxUID0gYW55PihyYXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIFRyeSB0byBwYXJzZSB0aGUgZGF0YS5cbiAgICAgICAgbGV0IHBhcnNlZFZhbHVlOiBUIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIE9ubHkgcGFyc2UgdGhlIHZhbHVlIHdoZW4gaXQgaXMgbm90IG51bGwuXG4gICAgICAgIGlmIChyYXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gSlNPTi5wYXJzZShyYXdWYWx1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgc3RyaW5nIGNvdWxkIG5vdCBiZSBwYXJzZWQgdG8gSlNPTi5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgcGFyc2VkIHZhbHVlLlxuICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc3RyaW5naWZ5Q29va2llKGF0dHJpYnV0ZXM6IENvb2tpZVN0b3JhZ2VBdHRyaWJ1dGVzKSB7XG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZXhwaXJlcyBhdHRyaWJ1dGUgaXMgYSBkYXRlIGFuZCBub3QgYSBudW1iZXIuXG4gICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRlcy5leHBpcmVzID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgY29uc3QgZXhwaXJlcyA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBleHBpcmVzLnNldE1pbGxpc2Vjb25kcyhleHBpcmVzLmdldE1pbGxpc2Vjb25kcygpICsgYXR0cmlidXRlcy5leHBpcmVzICogODY0ZSs1KTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuZXhwaXJlcyA9IGV4cGlyZXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3JjZSBzZWN1cmUgd2hlbiBzYW1lU2l0ZT1Ob25lLlxuICAgICAgICBpZiAoYXR0cmlidXRlcy5zYW1lU2l0ZSA9PT0gJ05vbmUnKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnNlY3VyZSA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlPy53YXJuPy4oJ0Nvb2tlIHdhcyBmb3JjZWQgd2l0aCBzZWN1cmUgZmxhZyBiZWNhdXNlIHNhbWVTaXRlPU5vbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmluZ2lmeSBhbGwgYXR0cmlidXRlcy5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5QXR0cmlidXRlKCdFeHBpcmVzJywgYXR0cmlidXRlcy5leHBpcmVzID8gYXR0cmlidXRlcy5leHBpcmVzLnRvVVRDU3RyaW5nKCkgOiAnJylcbiAgICAgICAgICAgICsgdGhpcy5zdHJpbmdpZnlBdHRyaWJ1dGUoJ0RvbWFpbicsIGF0dHJpYnV0ZXMuZG9tYWluKVxuICAgICAgICAgICAgKyB0aGlzLnN0cmluZ2lmeUF0dHJpYnV0ZSgnUGF0aCcsIGF0dHJpYnV0ZXMucGF0aClcbiAgICAgICAgICAgICsgdGhpcy5zdHJpbmdpZnlBdHRyaWJ1dGUoJ1NlY3VyZScsIGF0dHJpYnV0ZXMuc2VjdXJlKVxuICAgICAgICAgICAgKyB0aGlzLnN0cmluZ2lmeUF0dHJpYnV0ZSgnU2FtZVNpdGUnLCBhdHRyaWJ1dGVzLnNhbWVTaXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0cmluZ2lmeUF0dHJpYnV0ZSA9ICh0b2tlbjogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdHJpbmdpZmllZCA9IGA7ICR7dG9rZW59YDtcblxuICAgICAgICAvLyBCb29sZWFuIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBoYXZlIGEgdmFsdWUuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmaWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmaWVkICsgYD0gJHt2YWx1ZX1gO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHRlc3RJZlN1cHBvcnRlZCA9ICgpID0+IHtcbiAgICAgICAgLy8gV2UgYXJlIHVzaW5nIGFuIGFnZ3Jlc3NpdmUgdGVzdCBoZXJlLCBiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIG5hdmlnYXRvci5jb29raWVFbmFibGVkXG4gICAgICAgIC8vIGl0IGRvZXMgbm90IHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSBhdCBhbGwgdGltZXMuXG4gICAgICAgIGNvbnN0IHRlc3RDb29raWVTdHJpbmcgPSBgYmJjb29raWV0ZXN0YDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGAke3Rlc3RDb29raWVTdHJpbmd9PTFgO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZG9jdW1lbnQuY29va2llLmluZGV4T2YoYCR7dGVzdENvb2tpZVN0cmluZ309YCkgIT09IC0xO1xuICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gYCR7dGVzdENvb2tpZVN0cmluZ309MTsgZXhwaXJlcz1UaHUsIDAxLUphbi0xOTcwIDAwOjAwOjAxIEdNVGA7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbn1cbiJdfQ==
@@ -1,21 +1,6 @@
1
1
  export class MemoryStorage {
2
- constructor() {
3
- // State.
4
- this._storage = {};
5
- this.encode = (value, attributes) => {
6
- const data = { value };
7
- // Make sure the expires is a date object.
8
- if (typeof attributes.expires === 'number') {
9
- attributes.expires = new Date(attributes.expires);
10
- }
11
- // Add the expire date if it was set.
12
- if (attributes.expires) {
13
- data['expires'] = attributes.expires;
14
- }
15
- // Return the encoded data.
16
- return data;
17
- };
18
- }
2
+ // State.
3
+ _storage = {};
19
4
  get(token) {
20
5
  // Grab the data from the memory storage.
21
6
  const result = this._storage[token];
@@ -52,5 +37,18 @@ export class MemoryStorage {
52
37
  // The memory storage is always supported.
53
38
  return true;
54
39
  }
40
+ encode = (value, attributes) => {
41
+ const data = { value };
42
+ // Make sure the expires is a date object.
43
+ if (typeof attributes.expires === 'number') {
44
+ attributes.expires = new Date(attributes.expires);
45
+ }
46
+ // Add the expire date if it was set.
47
+ if (attributes.expires) {
48
+ data['expires'] = attributes.expires;
49
+ }
50
+ // Return the encoded data.
51
+ return data;
52
+ };
55
53
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0b3JhZ2Uuc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3N0b3JhZ2Uvc3JjL2xpYi9zdHJhdGVnaWVzL21lbW9yeS1zdG9yYWdlLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBRUksU0FBUztRQUNELGFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBZ0RqQyxXQUFNLEdBQUcsQ0FBSSxLQUFRLEVBQUUsVUFBbUMsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sSUFBSSxHQUFHLEVBQUMsS0FBSyxFQUFDLENBQUM7WUFFckIsMENBQTBDO1lBQzFDLElBQUksT0FBTyxVQUFVLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxDQUFDO1lBRUQscUNBQXFDO1lBQ3JDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBRUQsMkJBQTJCO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztJQUVOLENBQUM7SUEvREcsR0FBRyxDQUFVLEtBQWE7UUFDdEIseUNBQXlDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsNEJBQTRCO1FBQzVCLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxxQ0FBcUM7UUFDckMsTUFBTSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsR0FBRyxNQUFNLENBQUM7UUFFaEMscUNBQXFDO1FBQ3JDLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUvQyxxQ0FBcUM7WUFDckMsSUFBSSxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25CLE9BQU8sU0FBUyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxHQUFHLENBQVUsS0FBYSxFQUFFLEtBQVEsRUFBRSxVQUFvQztRQUN0RSw4Q0FBOEM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFJLEtBQUssRUFBRSxFQUFDLEdBQUcsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWE7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDUCwwQ0FBMEM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQW1CSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWVtb3J5U3RvcmFnZUF0dHJpYnV0ZXN9IGZyb20gJy4uL2ludGVyZmFjZXMvYXR0cmlidXRlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtNZW1vcnlTdG9yYWdlRGF0YX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9tZW1vcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7U3RvcmFnZVN0cmF0ZWd5fSBmcm9tICcuLi9pbnRlcmZhY2VzL3N0cmF0ZWd5LmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlTdG9yYWdlIGltcGxlbWVudHMgU3RvcmFnZVN0cmF0ZWd5IHtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgX3N0b3JhZ2U6IE1lbW9yeVN0b3JhZ2VEYXRhID0ge307XG5cbiAgICBnZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZyk6IFQge1xuICAgICAgICAvLyBHcmFiIHRoZSBkYXRhIGZyb20gdGhlIG1lbW9yeSBzdG9yYWdlLlxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9zdG9yYWdlW3Rva2VuXTtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZGF0YSBleGlzdHMuXG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlIGFuZCBleHBpcmUgZGF0ZS5cbiAgICAgICAgY29uc3Qge3ZhbHVlLCBleHBpcmVzfSA9IHJlc3VsdDtcblxuICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgdmFsdWUgaXMgc3RpbGwgdmFsaWQuXG4gICAgICAgIGlmIChleHBpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBjb25zdCBleHBpcmVEYXRlID0gbmV3IERhdGUoZXhwaXJlcykuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHZhbHVlIGlmIGl0IGlzIGV4cGlyZWQuXG4gICAgICAgICAgICBpZiAoZXhwaXJlRGF0ZSA8PSBub3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgdmFsdWUuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZywgdmFsdWU6IFQsIGF0dHJpYnV0ZXM/OiBNZW1vcnlTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBTYXZlIHRoZSBlbmNvZGVkIHZhbHVlIHdpdGggdGhlIGF0dHJpYnV0ZXMuXG4gICAgICAgIHRoaXMuX3N0b3JhZ2VbdG9rZW5dID0gdGhpcy5lbmNvZGU8VD4odmFsdWUsIHsuLi5hdHRyaWJ1dGVzfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMuX3N0b3JhZ2VbdG9rZW5dO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLl9zdG9yYWdlID0ge307XG4gICAgfVxuXG4gICAgaXNTdXBwb3J0ZWQoKSB7XG4gICAgICAgIC8vIFRoZSBtZW1vcnkgc3RvcmFnZSBpcyBhbHdheXMgc3VwcG9ydGVkLlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuY29kZSA9IDxUPih2YWx1ZTogVCwgYXR0cmlidXRlczogTWVtb3J5U3RvcmFnZUF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHt2YWx1ZX07XG5cbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBleHBpcmVzIGlzIGEgZGF0ZSBvYmplY3QuXG4gICAgICAgIGlmICh0eXBlb2YgYXR0cmlidXRlcy5leHBpcmVzID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgYXR0cmlidXRlcy5leHBpcmVzID0gbmV3IERhdGUoYXR0cmlidXRlcy5leHBpcmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCB0aGUgZXhwaXJlIGRhdGUgaWYgaXQgd2FzIHNldC5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZXhwaXJlcykge1xuICAgICAgICAgICAgZGF0YVsnZXhwaXJlcyddID0gYXR0cmlidXRlcy5leHBpcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBlbmNvZGVkIGRhdGEuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH07XG5cbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXN0b3JhZ2Uuc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL3N0b3JhZ2Uvc3JjL2xpYi9zdHJhdGVnaWVzL21lbW9yeS1zdG9yYWdlLnN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBTyxhQUFhO0lBRXRCLFNBQVM7SUFDRCxRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUV6QyxHQUFHLENBQVUsS0FBYTtRQUN0Qix5Q0FBeUM7UUFDekMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyw0QkFBNEI7UUFDNUIsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUVELHFDQUFxQztRQUNyQyxNQUFNLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxHQUFHLE1BQU0sQ0FBQztRQUVoQyxxQ0FBcUM7UUFDckMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRS9DLHFDQUFxQztZQUNyQyxJQUFJLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQztRQUNMLENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELEdBQUcsQ0FBVSxLQUFhLEVBQUUsS0FBUSxFQUFFLFVBQW9DO1FBQ3RFLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUksS0FBSyxFQUFFLEVBQUMsR0FBRyxVQUFVLEVBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVztRQUNQLDBDQUEwQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTSxHQUFHLENBQUksS0FBUSxFQUFFLFVBQW1DLEVBQUUsRUFBRTtRQUNsRSxNQUFNLElBQUksR0FBRyxFQUFDLEtBQUssRUFBQyxDQUFDO1FBRXJCLDBDQUEwQztRQUMxQyxJQUFJLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN6QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3pDLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0NBRUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01lbW9yeVN0b3JhZ2VBdHRyaWJ1dGVzfSBmcm9tICcuLi9pbnRlcmZhY2VzL2F0dHJpYnV0ZXMuaW50ZXJmYWNlJztcbmltcG9ydCB7TWVtb3J5U3RvcmFnZURhdGF9IGZyb20gJy4uL2ludGVyZmFjZXMvbWVtb3J5LmludGVyZmFjZSc7XG5pbXBvcnQge1N0b3JhZ2VTdHJhdGVneX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zdHJhdGVneS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgTWVtb3J5U3RvcmFnZSBpbXBsZW1lbnRzIFN0b3JhZ2VTdHJhdGVneSB7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBwcml2YXRlIF9zdG9yYWdlOiBNZW1vcnlTdG9yYWdlRGF0YSA9IHt9O1xuXG4gICAgZ2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcpOiBUIHtcbiAgICAgICAgLy8gR3JhYiB0aGUgZGF0YSBmcm9tIHRoZSBtZW1vcnkgc3RvcmFnZS5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fc3RvcmFnZVt0b2tlbl07XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGRhdGEgZXhpc3RzLlxuICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSB2YWx1ZSBhbmQgZXhwaXJlIGRhdGUuXG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgZXhwaXJlc30gPSByZXN1bHQ7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIHZhbHVlIGlzIHN0aWxsIHZhbGlkLlxuICAgICAgICBpZiAoZXhwaXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSB2YWx1ZSBpZiBpdCBpcyBleHBpcmVkLlxuICAgICAgICAgICAgaWYgKGV4cGlyZURhdGUgPD0gbm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHZhbHVlLlxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcsIHZhbHVlOiBULCBhdHRyaWJ1dGVzPzogTWVtb3J5U3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgLy8gU2F2ZSB0aGUgZW5jb2RlZCB2YWx1ZSB3aXRoIHRoZSBhdHRyaWJ1dGVzLlxuICAgICAgICB0aGlzLl9zdG9yYWdlW3Rva2VuXSA9IHRoaXMuZW5jb2RlPFQ+KHZhbHVlLCB7Li4uYXR0cmlidXRlc30pO1xuICAgIH1cblxuICAgIHJlbW92ZSh0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLl9zdG9yYWdlW3Rva2VuXTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIGlzU3VwcG9ydGVkKCkge1xuICAgICAgICAvLyBUaGUgbWVtb3J5IHN0b3JhZ2UgaXMgYWx3YXlzIHN1cHBvcnRlZC5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmNvZGUgPSA8VD4odmFsdWU6IFQsIGF0dHJpYnV0ZXM6IE1lbW9yeVN0b3JhZ2VBdHRyaWJ1dGVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB7dmFsdWV9O1xuXG4gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZXhwaXJlcyBpcyBhIGRhdGUgb2JqZWN0LlxuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuZXhwaXJlcyA9IG5ldyBEYXRlKGF0dHJpYnV0ZXMuZXhwaXJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgdGhlIGV4cGlyZSBkYXRlIGlmIGl0IHdhcyBzZXQuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVzLmV4cGlyZXMpIHtcbiAgICAgICAgICAgIGRhdGFbJ2V4cGlyZXMnXSA9IGF0dHJpYnV0ZXMuZXhwaXJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiB0aGUgZW5jb2RlZCBkYXRhLlxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9O1xuXG59XG4iXX0=
@@ -1,35 +1,9 @@
1
1
  export class PolyfillStorage {
2
+ _storage;
3
+ // State.
4
+ _isSupported = false;
2
5
  constructor(_storage) {
3
6
  this._storage = _storage;
4
- // State.
5
- this._isSupported = false;
6
- this.encode = (value, attributes) => {
7
- // Make sure the expires attribute is a date and not a number.
8
- const data = { value };
9
- if (typeof attributes.expires === 'number') {
10
- attributes.expires = new Date(attributes.expires);
11
- }
12
- if (attributes.expires) {
13
- data['expires'] = attributes.expires;
14
- }
15
- return JSON.stringify(data);
16
- };
17
- this.testIfSupported = () => {
18
- if (typeof this._storage === 'undefined') {
19
- return false;
20
- }
21
- try {
22
- const x = '__storage_test__';
23
- this._storage.setItem(x, x);
24
- this._storage.removeItem(x);
25
- return true;
26
- }
27
- catch (error) {
28
- return error instanceof DOMException
29
- && (error.name === 'QuotaExceededError' || error.name === 'NS_ERROR_DOM_QUOTA_REACHED')
30
- && (this._storage && this._storage.length !== 0);
31
- }
32
- };
33
7
  // Check if the storage is supported.
34
8
  this._isSupported = this.testIfSupported();
35
9
  }
@@ -95,5 +69,32 @@ export class PolyfillStorage {
95
69
  // Return the parsed data.
96
70
  return parsedData;
97
71
  }
72
+ encode = (value, attributes) => {
73
+ // Make sure the expires attribute is a date and not a number.
74
+ const data = { value };
75
+ if (typeof attributes.expires === 'number') {
76
+ attributes.expires = new Date(attributes.expires);
77
+ }
78
+ if (attributes.expires) {
79
+ data['expires'] = attributes.expires;
80
+ }
81
+ return JSON.stringify(data);
82
+ };
83
+ testIfSupported = () => {
84
+ if (typeof this._storage === 'undefined') {
85
+ return false;
86
+ }
87
+ try {
88
+ const x = '__storage_test__';
89
+ this._storage.setItem(x, x);
90
+ this._storage.removeItem(x);
91
+ return true;
92
+ }
93
+ catch (error) {
94
+ return error instanceof DOMException
95
+ && (error.name === 'QuotaExceededError' || error.name === 'NS_ERROR_DOM_QUOTA_REACHED')
96
+ && (this._storage && this._storage.length !== 0);
97
+ }
98
+ };
98
99
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWZpbGwtc3RvcmFnZS5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3RvcmFnZS9zcmMvbGliL3N0cmF0ZWdpZXMvcG9seWZpbGwtc3RvcmFnZS5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZUFBZTtJQUt4QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSHRDLFNBQVM7UUFDUSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQXFGdkMsV0FBTSxHQUFHLENBQUksS0FBUSxFQUFFLFVBQXFDLEVBQUUsRUFBRTtZQUNwRSw4REFBOEQ7WUFDOUQsTUFBTSxJQUFJLEdBQUcsRUFBQyxLQUFLLEVBQUMsQ0FBQztZQUVyQixJQUFJLE9BQU8sVUFBVSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsQ0FBQztZQUVELElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUVNLG9CQUFlLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNELE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDO2dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FB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RyxLQUFLLENBQUM7WUFDdkIsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDTCwyQ0FBMkM7WUFDL0MsQ0FBQztRQUNMLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQWtDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UG9seWZpbGxTdG9yYWdlQXR0cmlidXRlc30gZnJvbSAnLi4vaW50ZXJmYWNlcy9hdHRyaWJ1dGVzLmludGVyZmFjZSc7XG5pbXBvcnQge1N0b3JhZ2VTdHJhdGVneX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zdHJhdGVneS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgUG9seWZpbGxTdG9yYWdlIGltcGxlbWVudHMgU3RvcmFnZVN0cmF0ZWd5IHtcblxuICAgIC8vIFN0YXRlLlxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzU3VwcG9ydGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zdG9yYWdlPzogU3RvcmFnZSkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIHRoaXMuX2lzU3VwcG9ydGVkID0gdGhpcy50ZXN0SWZTdXBwb3J0ZWQoKTtcbiAgICB9XG5cbiAgICBnZXQ8VCA9IGFueT4odG9rZW46IHN0cmluZykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmRlY29kZTxUPih0b2tlbik7XG4gICAgfVxuXG4gICAgc2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcsIHZhbHVlOiBULCBhdHRyaWJ1dGVzPzogUG9seWZpbGxTdG9yYWdlQXR0cmlidXRlcykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3RyaW5naWZ5IHRoZSBkYXRhLlxuICAgICAgICBjb25zdCByYXdEYXRhID0gdGhpcy5lbmNvZGU8VD4odmFsdWUsIHsuLi5hdHRyaWJ1dGVzfSk7XG5cbiAgICAgICAgLy8gU2V0IHRoZSByYXcgZGF0YSBpbiB0aGUgc3RvcmFnZS5cbiAgICAgICAgdGhpcy5fc3RvcmFnZS5zZXRJdGVtKHRva2VuLCByYXdEYXRhKTtcbiAgICB9XG5cbiAgICByZW1vdmUodG9rZW46IHN0cmluZykge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBpdGVtIGluIHRoZSBzdG9yYWdlLlxuICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0odG9rZW4pO1xuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBzdG9yYWdlIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1N1cHBvcnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIHN0b3JhZ2UuXG4gICAgICAgIHRoaXMuX3N0b3JhZ2UuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBpc1N1cHBvcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU3VwcG9ydGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVjb2RlPFQ+KHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIHJhdyBkYXRhIGZyb20gdGhlIHN0b3JhZ2UuXG4gICAgICAgIGNvbnN0IHJhd0RhdGEgPSB0aGlzLl9zdG9yYWdlLmdldEl0ZW0odG9rZW4pO1xuXG4gICAgICAgIC8vIFRyeSB0byBwYXJzZSB0aGUgZGF0YS5cbiAgICAgICAgbGV0IHBhcnNlZERhdGE6IFQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gT25seSBwYXJzZSB0aGUgZGF0YSB3aGVuIGl0IGlzIG5vdCBudWxsLlxuICAgICAgICBpZiAocmF3RGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7dmFsdWUsIGV4cGlyZXN9ID0gSlNPTi5wYXJzZShyYXdEYXRhKTtcblxuICAgICAgICAgICAgICAgIGlmIChleHBpcmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwaXJlRGF0ZSA9IG5ldyBEYXRlKGV4cGlyZXMpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXhwaXJlRGF0ZSA8PSBub3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlKHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBwYXJzZWREYXRhID0gdmFsdWU7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBkb250IGRvIGFueXRoaW5nIHdpdGggZmFpbGVkIHBhcnNpbmcuXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gdGhlIHBhcnNlZCBkYXRhLlxuICAgICAgICByZXR1cm4gcGFyc2VkRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuY29kZSA9IDxUPih2YWx1ZTogVCwgYXR0cmlidXRlczogUG9seWZpbGxTdG9yYWdlQXR0cmlidXRlcykgPT4ge1xuICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGV4cGlyZXMgYXR0cmlidXRlIGlzIGEgZGF0ZSBhbmQgbm90IGEgbnVtYmVyLlxuICAgICAgICBjb25zdCBkYXRhID0ge3ZhbHVlfTtcblxuICAgICAgICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMuZXhwaXJlcyA9IG5ldyBEYXRlKGF0dHJpYnV0ZXMuZXhwaXJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlcy5leHBpcmVzKSB7XG4gICAgICAgICAgICBkYXRhWydleHBpcmVzJ10gPSBhdHRyaWJ1dGVzLmV4cGlyZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgdGVzdElmU3VwcG9ydGVkID0gKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3N0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeCA9ICdfX3N0b3JhZ2VfdGVzdF9fJztcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbSh4LCB4KTtcbiAgICAgICAgICAgIHRoaXMuX3N0b3JhZ2UucmVtb3ZlSXRlbSh4KTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uXG4gICAgICAgICAgICAgICAgJiYgKGVycm9yLm5hbWUgPT09ICdRdW90YUV4Y2VlZGVkRXJyb3InIHx8IGVycm9yLm5hbWUgPT09ICdOU19FUlJPUl9ET01fUVVPVEFfUkVBQ0hFRCcpXG4gICAgICAgICAgICAgICAgJiYgKHRoaXMuX3N0b3JhZ2UgJiYgdGhpcy5fc3RvcmFnZS5sZW5ndGggIT09IDApO1xuICAgICAgICB9XG4gICAgfTtcblxufVxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9seWZpbGwtc3RvcmFnZS5zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vc3RvcmFnZS9zcmMvbGliL3N0cmF0ZWdpZXMvcG9seWZpbGwtc3RvcmFnZS5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZUFBZTtJQUtKO0lBSHBCLFNBQVM7SUFDUSxZQUFZLEdBQVksS0FBSyxDQUFDO0lBRS9DLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEMscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCxHQUFHLENBQVUsS0FBYTtRQUN0QiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQVUsS0FBYSxFQUFFLEtBQVEsRUFBRSxVQUFzQztRQUN4RSwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFJLEtBQUssRUFBRSxFQUFDLEdBQUcsVUFBVSxFQUFDLENBQUMsQ0FBQztRQUV2RCxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNoQiwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZ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LENBQUM7bUJBQ3BGLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0NBRUwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BvbHlmaWxsU3RvcmFnZUF0dHJpYnV0ZXN9IGZyb20gJy4uL2ludGVyZmFjZXMvYXR0cmlidXRlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTdG9yYWdlU3RyYXRlZ3l9IGZyb20gJy4uL2ludGVyZmFjZXMvc3RyYXRlZ3kuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFBvbHlmaWxsU3RvcmFnZSBpbXBsZW1lbnRzIFN0b3JhZ2VTdHJhdGVneSB7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pc1N1cHBvcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RvcmFnZT86IFN0b3JhZ2UpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHN0b3JhZ2UgaXMgc3VwcG9ydGVkLlxuICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZCA9IHRoaXMudGVzdElmU3VwcG9ydGVkKCk7XG4gICAgfVxuXG4gICAgZ2V0PFQgPSBhbnk+KHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGU8VD4odG9rZW4pO1xuICAgIH1cblxuICAgIHNldDxUID0gYW55Pih0b2tlbjogc3RyaW5nLCB2YWx1ZTogVCwgYXR0cmlidXRlcz86IFBvbHlmaWxsU3RvcmFnZUF0dHJpYnV0ZXMpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFN0cmluZ2lmeSB0aGUgZGF0YS5cbiAgICAgICAgY29uc3QgcmF3RGF0YSA9IHRoaXMuZW5jb2RlPFQ+KHZhbHVlLCB7Li4uYXR0cmlidXRlc30pO1xuXG4gICAgICAgIC8vIFNldCB0aGUgcmF3IGRhdGEgaW4gdGhlIHN0b3JhZ2UuXG4gICAgICAgIHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbSh0b2tlbiwgcmF3RGF0YSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgaXRlbSBpbiB0aGUgc3RvcmFnZS5cbiAgICAgICAgdGhpcy5fc3RvcmFnZS5yZW1vdmVJdGVtKHRva2VuKTtcbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgc3RvcmFnZSBpcyBzdXBwb3J0ZWQuXG4gICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENsZWFyIHRoZSBzdG9yYWdlLlxuICAgICAgICB0aGlzLl9zdG9yYWdlLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgaXNTdXBwb3J0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N1cHBvcnRlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlY29kZTxUPih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIC8vIFJldHJpZXZlIHRoZSByYXcgZGF0YSBmcm9tIHRoZSBzdG9yYWdlLlxuICAgICAgICBjb25zdCByYXdEYXRhID0gdGhpcy5fc3RvcmFnZS5nZXRJdGVtKHRva2VuKTtcblxuICAgICAgICAvLyBUcnkgdG8gcGFyc2UgdGhlIGRhdGEuXG4gICAgICAgIGxldCBwYXJzZWREYXRhOiBUIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIC8vIE9ubHkgcGFyc2UgdGhlIGRhdGEgd2hlbiBpdCBpcyBub3QgbnVsbC5cbiAgICAgICAgaWYgKHJhd0RhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge3ZhbHVlLCBleHBpcmVzfSA9IEpTT04ucGFyc2UocmF3RGF0YSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZXhwaXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGlyZURhdGUgPSBuZXcgRGF0ZShleHBpcmVzKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGlyZURhdGUgPD0gbm93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcGFyc2VkRGF0YSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgICAgLy8gV2UgZG9udCBkbyBhbnl0aGluZyB3aXRoIGZhaWxlZCBwYXJzaW5nLlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBwYXJzZWQgZGF0YS5cbiAgICAgICAgcmV0dXJuIHBhcnNlZERhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmNvZGUgPSA8VD4odmFsdWU6IFQsIGF0dHJpYnV0ZXM6IFBvbHlmaWxsU3RvcmFnZUF0dHJpYnV0ZXMpID0+IHtcbiAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBleHBpcmVzIGF0dHJpYnV0ZSBpcyBhIGRhdGUgYW5kIG5vdCBhIG51bWJlci5cbiAgICAgICAgY29uc3QgZGF0YSA9IHt2YWx1ZX07XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLmV4cGlyZXMgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmV4cGlyZXMgPSBuZXcgRGF0ZShhdHRyaWJ1dGVzLmV4cGlyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMuZXhwaXJlcykge1xuICAgICAgICAgICAgZGF0YVsnZXhwaXJlcyddID0gYXR0cmlidXRlcy5leHBpcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHRlc3RJZlN1cHBvcnRlZCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdG9yYWdlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHggPSAnX19zdG9yYWdlX3Rlc3RfXyc7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnNldEl0ZW0oeCwgeCk7XG4gICAgICAgICAgICB0aGlzLl9zdG9yYWdlLnJlbW92ZUl0ZW0oeCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvblxuICAgICAgICAgICAgICAgICYmIChlcnJvci5uYW1lID09PSAnUXVvdGFFeGNlZWRlZEVycm9yJyB8fCBlcnJvci5uYW1lID09PSAnTlNfRVJST1JfRE9NX1FVT1RBX1JFQUNIRUQnKVxuICAgICAgICAgICAgICAgICYmICh0aGlzLl9zdG9yYWdlICYmIHRoaXMuX3N0b3JhZ2UubGVuZ3RoICE9PSAwKTtcbiAgICAgICAgfVxuICAgIH07XG5cbn1cbiJdfQ==