http-request-manager 18.3.2 → 18.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +478 -255
  2. package/esm2022/lib/http-request-manager.module.mjs +23 -47
  3. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +113 -32
  4. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +12 -7
  5. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +3 -6
  6. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.mjs +13 -0
  7. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.mjs +13 -0
  8. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.mjs +128 -0
  9. package/esm2022/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.mjs +74 -0
  10. package/esm2022/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.mjs +12 -0
  11. package/esm2022/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.mjs +39 -0
  12. package/esm2022/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.mjs +34 -0
  13. package/esm2022/lib/models/database-storage.model.mjs +1 -1
  14. package/esm2022/lib/services/database-manager-service/database.manager.service.mjs +171 -0
  15. package/esm2022/lib/services/database-manager-service/db.storage.service.mjs +183 -0
  16. package/esm2022/lib/services/database-manager-service/index.mjs +4 -0
  17. package/esm2022/lib/services/database-manager-service/models/table-schema.mjs +19 -0
  18. package/esm2022/lib/services/index.mjs +1 -2
  19. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +7 -1
  20. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +4 -3
  21. package/esm2022/lib/services/request-manager-services/request.service.mjs +2 -2
  22. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +272 -84
  23. package/esm2022/lib/services/request-manager-state-service/models/ws-options.model.mjs +6 -3
  24. package/esm2022/lib/services/request-manager-state-service/models/ws-user.model.mjs +10 -0
  25. package/esm2022/lib/services/store-state-manager-service/store-state-manager.service.mjs +4 -4
  26. package/esm2022/lib/services/utils/utils.service.mjs +14 -14
  27. package/esm2022/lib/services/ws-manager-service/index.mjs +2 -2
  28. package/esm2022/lib/services/ws-manager-service/models/channel-notification.model.mjs +5 -3
  29. package/esm2022/lib/services/ws-manager-service/models/communication-type.enum.mjs +7 -0
  30. package/esm2022/lib/services/ws-manager-service/models/index.mjs +2 -3
  31. package/esm2022/lib/services/ws-manager-service/models/user-message.model.mjs +1 -1
  32. package/esm2022/lib/services/ws-manager-service/services/websocket.service.mjs +178 -0
  33. package/fesm2022/http-request-manager.mjs +2444 -1796
  34. package/fesm2022/http-request-manager.mjs.map +1 -1
  35. package/http-request-manager-18.4.0.tgz +0 -0
  36. package/lib/http-request-manager.module.d.ts +25 -21
  37. package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +39 -12
  38. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -1
  39. package/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.d.ts +16 -0
  40. package/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.d.ts +14 -0
  41. package/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.d.ts +39 -0
  42. package/lib/http-request-services-demo/request-manager-ws-demo/services/state-request.service.d.ts +14 -0
  43. package/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.d.ts +14 -0
  44. package/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.d.ts +11 -0
  45. package/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.d.ts +14 -0
  46. package/lib/services/{database-manager-services → database-manager-service}/database.manager.service.d.ts +9 -7
  47. package/lib/services/{database-manager-services → database-manager-service}/db.storage.service.d.ts +14 -14
  48. package/lib/services/index.d.ts +0 -1
  49. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +3 -1
  50. package/lib/services/request-manager-services/request.service.d.ts +1 -1
  51. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +34 -19
  52. package/lib/services/request-manager-state-service/models/ws-options.model.d.ts +9 -1
  53. package/lib/services/request-manager-state-service/models/ws-user.model.d.ts +10 -0
  54. package/lib/services/store-state-manager-service/store-state-manager.service.d.ts +3 -2
  55. package/lib/services/ws-manager-service/index.d.ts +1 -1
  56. package/lib/services/ws-manager-service/models/channel-notification.model.d.ts +4 -1
  57. package/lib/services/ws-manager-service/models/communication-type.enum.d.ts +5 -0
  58. package/lib/services/ws-manager-service/models/index.d.ts +1 -2
  59. package/lib/services/ws-manager-service/models/user-message.model.d.ts +5 -6
  60. package/lib/services/ws-manager-service/{websocket.service.d.ts → services/websocket.service.d.ts} +5 -2
  61. package/package.json +1 -1
  62. package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +0 -119
  63. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +0 -143
  64. package/esm2022/lib/services/database-manager-services/index.mjs +0 -4
  65. package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +0 -20
  66. package/esm2022/lib/services/ws-manager-service/models/user-info.model.mjs +0 -11
  67. package/esm2022/lib/services/ws-manager-service/models/user-name-info.model.mjs +0 -12
  68. package/esm2022/lib/services/ws-manager-service/websocket.service.mjs +0 -133
  69. package/http-request-manager-18.3.2.tgz +0 -0
  70. package/lib/services/ws-manager-service/models/user-info.model.d.ts +0 -11
  71. package/lib/services/ws-manager-service/models/user-name-info.model.d.ts +0 -14
  72. /package/lib/services/{database-manager-services → database-manager-service}/index.d.ts +0 -0
  73. /package/lib/services/{database-manager-services → database-manager-service}/models/table-schema.d.ts +0 -0
@@ -2,10 +2,6 @@ import { HTTP_INTERCEPTORS } from '@angular/common/http';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { WithCredentialsInterceptor, RequestHeadersInterceptor } from './interceptors';
4
4
  import { TranslateModule } from '@ngx-translate/core';
5
- import { RequestManagerDemoComponent } from './http-request-services-demo/request-manager-demo/request-manager-demo.component';
6
- import { RequestManagerStateDemoComponent } from './http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component';
7
- import { LocalStorageDemoComponent } from './http-request-services-demo/local-storage-demo/local-storage-demo.component';
8
- // import { DatabaseDataDemoComponent } from './global-data-demo/database-data-demo/database-data-demo.component';
9
5
  import { CommonModule } from '@angular/common';
10
6
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
11
7
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
@@ -24,16 +20,21 @@ import { MatToolbarModule } from '@angular/material/toolbar';
24
20
  import { MatTableModule } from '@angular/material/table';
25
21
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
26
22
  import { ProxyDebuggerInterceptor } from './interceptors/proxy-debugger.interceptor';
27
- import { HttpRequestServicesDemoComponent } from './http-request-services-demo/http-request-services-demo.component';
28
- import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
29
23
  import { ConfigOptions } from './models';
30
24
  import { CONFIG_SETTINGS_TOKEN } from './models/config-token.model';
31
25
  import { HTTPManagerService, LocalStorageManagerService } from './services';
32
26
  import { FileDownloaderModule } from './http-request-services-demo/request-manager-demo/file-downloader/file-download.module';
33
- import { LocalStorageSignalsDemoComponent } from './http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component';
34
27
  import { ToastMessageDisplayModule } from 'toast-message-display';
28
+ import { MatTabsModule } from '@angular/material/tabs';
29
+ import { DatabaseDataDemoComponent, HttpRequestServicesDemoComponent, LocalStorageDemoComponent, RequestManagerDemoComponent, RequestManagerStateDemoComponent } from '../public-api';
30
+ import { LocalStorageSignalsDemoComponent } from './http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component';
31
+ import { RequestManagerWsDemoComponent } from './http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component';
32
+ import { RequestSignalsManagerDemoComponent } from './http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component';
33
+ import { StoreStateManagerDemoComponent } from './http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component';
35
34
  import * as i0 from "@angular/core";
36
35
  import * as i1 from "@ngx-translate/core";
36
+ // import { MessengerChatModule } from 'src/app/components/messenger-chat/messenger-chat.module';
37
+ // import { StoreStateManagerModule } from "src/app/beta_components/store-state-manager/store-state-manager.module";
37
38
  export class HttpRequestManagerModule {
38
39
  static forRoot(config = ConfigOptions.adapt()) {
39
40
  return {
@@ -50,11 +51,15 @@ export class HttpRequestManagerModule {
50
51
  RequestManagerDemoComponent,
51
52
  RequestSignalsManagerDemoComponent,
52
53
  LocalStorageDemoComponent,
53
- LocalStorageSignalsDemoComponent], imports: [CommonModule,
54
+ LocalStorageSignalsDemoComponent,
55
+ RequestManagerWsDemoComponent,
56
+ StoreStateManagerDemoComponent,
57
+ DatabaseDataDemoComponent], imports: [CommonModule,
54
58
  ToastMessageDisplayModule,
55
59
  FormsModule,
56
60
  ReactiveFormsModule,
57
61
  MatButtonModule,
62
+ MatTabsModule,
58
63
  MatSelectModule,
59
64
  MatChipsModule,
60
65
  MatMenuModule,
@@ -69,19 +74,7 @@ export class HttpRequestManagerModule {
69
74
  MatInputModule,
70
75
  MatToolbarModule,
71
76
  MatSlideToggleModule, i1.TranslateModule, MatSidenavModule,
72
- FileDownloaderModule], exports: [HttpRequestServicesDemoComponent,
73
- // Re-export commonly used modules so demo component templates have access to
74
- // Angular common pipes and Material components when the library is imported.
75
- CommonModule,
76
- MatButtonToggleModule,
77
- MatFormFieldModule,
78
- MatSelectModule,
79
- MatInputModule,
80
- MatIconModule,
81
- MatTableModule,
82
- MatSlideToggleModule,
83
- MatProgressBarModule,
84
- MatDividerModule] }); }
77
+ FileDownloaderModule], exports: [HttpRequestServicesDemoComponent] }); }
85
78
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestManagerModule, providers: [
86
79
  { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },
87
80
  { provide: HTTP_INTERCEPTORS, useClass: RequestHeadersInterceptor, multi: true },
@@ -93,6 +86,7 @@ export class HttpRequestManagerModule {
93
86
  FormsModule,
94
87
  ReactiveFormsModule,
95
88
  MatButtonModule,
89
+ MatTabsModule,
96
90
  MatSelectModule,
97
91
  MatChipsModule,
98
92
  MatMenuModule,
@@ -109,19 +103,7 @@ export class HttpRequestManagerModule {
109
103
  MatSlideToggleModule,
110
104
  TranslateModule.forRoot(),
111
105
  MatSidenavModule,
112
- FileDownloaderModule,
113
- // Re-export commonly used modules so demo component templates have access to
114
- // Angular common pipes and Material components when the library is imported.
115
- CommonModule,
116
- MatButtonToggleModule,
117
- MatFormFieldModule,
118
- MatSelectModule,
119
- MatInputModule,
120
- MatIconModule,
121
- MatTableModule,
122
- MatSlideToggleModule,
123
- MatProgressBarModule,
124
- MatDividerModule] }); }
106
+ FileDownloaderModule] }); }
125
107
  }
126
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestManagerModule, decorators: [{
127
109
  type: NgModule,
@@ -132,6 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
132
114
  FormsModule,
133
115
  ReactiveFormsModule,
134
116
  MatButtonModule,
117
+ MatTabsModule,
135
118
  MatSelectModule,
136
119
  MatChipsModule,
137
120
  MatMenuModule,
@@ -149,6 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
149
132
  TranslateModule.forRoot(),
150
133
  MatSidenavModule,
151
134
  FileDownloaderModule,
135
+ // MessengerChatModule,
136
+ // StoreStateManagerModule
152
137
  ],
153
138
  declarations: [
154
139
  HttpRequestServicesDemoComponent,
@@ -157,22 +142,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
157
142
  RequestSignalsManagerDemoComponent,
158
143
  LocalStorageDemoComponent,
159
144
  LocalStorageSignalsDemoComponent,
145
+ RequestManagerWsDemoComponent,
146
+ StoreStateManagerDemoComponent,
147
+ DatabaseDataDemoComponent,
160
148
  // DatabaseDataDemoComponent,
161
149
  ],
162
150
  exports: [
163
151
  HttpRequestServicesDemoComponent,
164
- // Re-export commonly used modules so demo component templates have access to
165
- // Angular common pipes and Material components when the library is imported.
166
- CommonModule,
167
- MatButtonToggleModule,
168
- MatFormFieldModule,
169
- MatSelectModule,
170
- MatInputModule,
171
- MatIconModule,
172
- MatTableModule,
173
- MatSlideToggleModule,
174
- MatProgressBarModule,
175
- MatDividerModule,
176
152
  ],
177
153
  providers: [
178
154
  { provide: HTTP_INTERCEPTORS, useClass: WithCredentialsInterceptor, multi: true },
@@ -183,4 +159,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
183
159
  ],
184
160
  }]
185
161
  }] });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQy9ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQ2hKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3pILGtIQUFrSDtBQUVsSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxj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Qzt3QkFDaEMsZ0NBQWdDO3dCQUNoQywyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMseUJBQXlCO3dCQUN6QixnQ0FBZ0M7d0JBQ2hDLDZCQUE2QjtxQkFDOUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdDQUFnQzt3QkFDaEMsNkVBQTZFO3dCQUM3RSw2RUFBNkU7d0JBQzdFLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjtxQkFDakI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNqRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDaEYsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQy9FLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ25FLGtCQUFrQixFQUFFLDBCQUEwQjtxQkFDL0M7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuaW1wb3J0IHsgV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJTdGF0ZURlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vL3JlcXVlc3QtbWFuYWdlci1zdGF0ZS1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLWRlbW8vbG9jYWwtc3RvcmFnZS1kZW1vLmNvbXBvbmVudCc7XG4vLyBpbXBvcnQgeyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9nbG9iYWwtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50JztcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xuaW1wb3J0IHsgUHJveHlEZWJ1Z2dlckludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcnMvcHJveHktZGVidWdnZXIuaW50ZXJjZXB0b3InO1xuXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFNlcnZpY2VzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFJlcXVlc3RTaWduYWxzTWFuYWdlckRlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8vcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBDb25maWdPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ09ORklHX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcblxuaW1wb3J0IHsgRmlsZURvd25sb2FkZXJNb2R1bGUgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci1kZW1vL2ZpbGUtZG93bmxvYWRlci9maWxlLWRvd25sb2FkLm1vZHVsZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTaWduYWxzRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8vbG9jYWwtc3RvcmFnZS1zaWduYWxzLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFRvYXN0TWVzc2FnZURpc3BsYXlNb2R1bGUgfSBmcm9tICd0b2FzdC1tZXNzYWdlLWRpc3BsYXknO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXG4gICAgRmlsZURvd25sb2FkZXJNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyRGVtb0NvbXBvbmVudCxcbiAgICBSZXF1ZXN0U2lnbmFsc01hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIExvY2FsU3RvcmFnZURlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlU2lnbmFsc0RlbW9Db21wb25lbnQsXG4gICAgLy8gRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIC8vIFJlLWV4cG9ydCBjb21tb25seSB1c2VkIG1vZHVsZXMgc28gZGVtbyBjb21wb25lbnQgdGVtcGxhdGVzIGhhdmUgYWNjZXNzIHRvXG4gICAgLy8gQW5ndWxhciBjb21tb24gcGlwZXMgYW5kIE1hdGVyaWFsIGNvbXBvbmVudHMgd2hlbiB0aGUgbGlicmFyeSBpcyBpbXBvcnRlZC5cbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoKSB9LFxuICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2VcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IENvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KCkpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdChjb25maWcpIH0sXG4gICAgICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgLy9hbGwgc2VydmljZXMgdGhhdCBuZWVkIGFjY2VzcyB0byBjb25maWdcbiAgICAgIF0sXG4gICAgfTtcbiAgICB9XG5cbn1cblxuXG4iXX0=
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LW1hbmFnZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3QtbWFuYWdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHOUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwy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QTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZ0NBQWdDO3FCQUNqQztvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7d0JBQ2pGLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUNoRixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTt3QkFDL0UsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDbkUsa0JBQWtCLEVBQUUsMEJBQTBCO3FCQUMvQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG5pbXBvcnQgeyBXaXRoQ3JlZGVudGlhbHNJbnRlcmNlcHRvciwgUmVxdWVzdEhlYWRlcnNJbnRlcmNlcHRvciB9IGZyb20gJy4vaW50ZXJjZXB0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBQcm94eURlYnVnZ2VySW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9ycy9wcm94eS1kZWJ1Z2dlci5pbnRlcmNlcHRvcic7XG5cblxuaW1wb3J0IHsgQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IENPTkZJR19TRVRUSU5HU19UT0tFTiB9IGZyb20gJy4vbW9kZWxzL2NvbmZpZy10b2tlbi5tb2RlbCc7XG5pbXBvcnQgeyBIVFRQTWFuYWdlclNlcnZpY2UsIExvY2FsU3RvcmFnZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbmltcG9ydCB7IEZpbGVEb3dubG9hZGVyTW9kdWxlIH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LW1hbmFnZXItZGVtby9maWxlLWRvd25sb2FkZXIvZmlsZS1kb3dubG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVG9hc3RNZXNzYWdlRGlzcGxheU1vZHVsZSB9IGZyb20gJ3RvYXN0LW1lc3NhZ2UtZGlzcGxheSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LCBMb2NhbFN0b3JhZ2VEZW1vQ29tcG9uZW50LCBSZXF1ZXN0TWFuYWdlckRlbW9Db21wb25lbnQsIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi4vcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IExvY2FsU3RvcmFnZVNpZ25hbHNEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby9sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtby5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVxdWVzdE1hbmFnZXJXc0RlbW9Db21wb25lbnQgfSBmcm9tICcuL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL3JlcXVlc3QtbWFuYWdlci13cy1kZW1vL3JlcXVlc3QtbWFuYWdlci13cy1kZW1vLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXF1ZXN0U2lnbmFsc01hbmFnZXJEZW1vQ29tcG9uZW50IH0gZnJvbSAnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vL3JlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8uY29tcG9uZW50JztcbmltcG9ydCB7IFN0b3JlU3RhdGVNYW5hZ2VyRGVtb0NvbXBvbmVudCB9IGZyb20gJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vL3N0b3JlLXN0YXRlLW1hbmFnZXItZGVtby5jb21wb25lbnQnO1xuXG4vLyBpbXBvcnQgeyBNZXNzZW5nZXJDaGF0TW9kdWxlIH0gZnJvbSAnc3JjL2FwcC9jb21wb25lbnRzL21lc3Nlbmdlci1jaGF0L21lc3Nlbmdlci1jaGF0Lm1vZHVsZSc7XG4vLyBpbXBvcnQgeyBTdG9yZVN0YXRlTWFuYWdlck1vZHVsZSB9IGZyb20gXCJzcmMvYXBwL2JldGFfY29tcG9uZW50cy9zdG9yZS1zdGF0ZS1tYW5hZ2VyL3N0b3JlLXN0YXRlLW1hbmFnZXIubW9kdWxlXCI7XG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUb2FzdE1lc3NhZ2VEaXNwbGF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRCdXR0b25Ub2dnbGVNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgIEZpbGVEb3dubG9hZGVyTW9kdWxlLFxuICAgIC8vIE1lc3NlbmdlckNoYXRNb2R1bGUsXG4gICAgLy8gU3RvcmVTdGF0ZU1hbmFnZXJNb2R1bGVcbl0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyU3RhdGVEZW1vQ29tcG9uZW50LFxuICAgIFJlcXVlc3RNYW5hZ2VyRGVtb0NvbXBvbmVudCxcbiAgICBSZXF1ZXN0U2lnbmFsc01hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIExvY2FsU3RvcmFnZURlbW9Db21wb25lbnQsXG4gICAgTG9jYWxTdG9yYWdlU2lnbmFsc0RlbW9Db21wb25lbnQsXG4gICAgUmVxdWVzdE1hbmFnZXJXc0RlbW9Db21wb25lbnQsXG4gICAgU3RvcmVTdGF0ZU1hbmFnZXJEZW1vQ29tcG9uZW50LFxuICAgIERhdGFiYXNlRGF0YURlbW9Db21wb25lbnQsXG4gICAgLy8gRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogV2l0aENyZWRlbnRpYWxzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFJlcXVlc3RIZWFkZXJzSW50ZXJjZXB0b3IsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFByb3h5RGVidWdnZXJJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IENPTkZJR19TRVRUSU5HU19UT0tFTiwgdXNlVmFsdWU6IENvbmZpZ09wdGlvbnMuYWRhcHQoKSB9LFxuICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2VcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlIHtcblxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IENvbmZpZ09wdGlvbnMgPSBDb25maWdPcHRpb25zLmFkYXB0KCkpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEh0dHBSZXF1ZXN0TWFuYWdlck1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSHR0cFJlcXVlc3RNYW5hZ2VyTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1NFVFRJTkdTX1RPS0VOLCB1c2VWYWx1ZTogQ29uZmlnT3B0aW9ucy5hZGFwdChjb25maWcpIH0sXG4gICAgICAgIEhUVFBNYW5hZ2VyU2VydmljZSwgTG9jYWxTdG9yYWdlTWFuYWdlclNlcnZpY2UgLy9hbGwgc2VydmljZXMgdGhhdCBuZWVkIGFjY2VzcyB0byBjb25maWdcbiAgICAgIF0sXG4gICAgfTtcbiAgICB9XG5cbn1cblxuXG4iXX0=
@@ -1,46 +1,99 @@
1
1
  import { Component, inject } from '@angular/core';
2
- import { TableSchemaDef } from '../../services/database-manager-services/models/table-schema';
3
- import { DatabaseManagerService } from '../../services/database-manager-services';
2
+ import { Subject, ReplaySubject } from 'rxjs';
3
+ import { tap } from 'rxjs/operators';
4
+ import { DataSource } from '@angular/cdk/collections';
5
+ import { TableSchemaDef } from '../../services/database-manager-service/models/table-schema';
6
+ import { DatabaseManagerService } from '../../services/database-manager-service';
4
7
  import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/button";
9
+ import * as i2 from "@angular/material/table";
10
+ import * as i3 from "@angular/common";
5
11
  export class DatabaseDataDemoComponent {
6
12
  constructor() {
7
13
  this.db = inject(DatabaseManagerService);
14
+ this.destroy$ = new Subject();
15
+ this.dataToDisplay = [];
16
+ this.dataSource = new DatabaseDataSource(this.dataToDisplay);
17
+ this.displayedColumns = ['id', 'last_name', 'age', 'amount'];
18
+ this.names = ['Smith', 'Johnson', 'Williams', 'Brown', 'Jones', 'Garcia', 'Miller', 'Davis'];
19
+ }
20
+ ngOnDestroy() {
21
+ this.destroy$.next();
22
+ this.destroy$.complete();
23
+ }
24
+ addData() {
25
+ const newRecord = {
26
+ id: Math.max(...this.dataToDisplay.map(r => r.id), 0) + 1,
27
+ last_name: this.names[Math.floor(Math.random() * this.names.length)],
28
+ age: Math.floor(Math.random() * 80) + 18,
29
+ amount: Math.floor(Math.random() * 1000)
30
+ };
31
+ this.dataToDisplay = [...this.dataToDisplay, newRecord];
32
+ this.db.createTableRecord('sample_table', newRecord).subscribe(() => this.refreshData());
33
+ }
34
+ removeData() {
35
+ if (this.dataToDisplay.length > 0) {
36
+ const removedRecord = this.dataToDisplay[this.dataToDisplay.length - 1];
37
+ this.dataToDisplay = this.dataToDisplay.slice(0, -1);
38
+ this.db.deleteTableRecord('sample_table', removedRecord.id).subscribe(() => this.refreshData());
39
+ }
40
+ }
41
+ updateData() {
42
+ if (this.dataToDisplay.length === 0)
43
+ return;
44
+ const randomIndex = Math.floor(Math.random() * this.dataToDisplay.length);
45
+ const recordToUpdate = this.dataToDisplay[randomIndex];
46
+ const updatedRecord = {
47
+ ...recordToUpdate,
48
+ last_name: this.names[Math.floor(Math.random() * this.names.length)],
49
+ age: Math.floor(Math.random() * 80) + 18,
50
+ amount: Math.floor(Math.random() * 1000)
51
+ };
52
+ this.dataToDisplay = this.dataToDisplay.map((r, index) => index === randomIndex ? updatedRecord : r);
53
+ this.db.updateTableRecord('sample_table', updatedRecord).subscribe(() => this.refreshData());
54
+ }
55
+ clearAllData() {
56
+ if (this.dataToDisplay.length === 0)
57
+ return;
58
+ const idsToDelete = this.dataToDisplay.map(r => r.id);
59
+ this.dataToDisplay = [];
60
+ this.db.deleteTableRecords('sample_table', idsToDelete).subscribe(() => this.refreshData());
61
+ }
62
+ refreshData() {
63
+ this.db.getTableRecords('sample_table').subscribe((records) => {
64
+ this.dataToDisplay = records || [];
65
+ this.dataSource.setData(this.dataToDisplay);
66
+ });
8
67
  }
9
68
  ngOnInit() {
10
- const tableDef = TableSchemaDef.adapt({ table: 'Sample Table', schema: ['id', 'lastName', 'age'] });
11
- console.log(tableDef);
12
- this.createTable(tableDef).subscribe(() => {
69
+ const tableDef = TableSchemaDef.adapt({
70
+ table: 'sample_table',
71
+ schema: '++id, last_name, age, amount'
72
+ });
73
+ this.db.createDatabaseTable(tableDef).subscribe(() => {
74
+ console.log('Database Table Initialized');
13
75
  // hasTable
14
- this.db.hasDatabaseTable('Sample Table').subscribe(data => console.log(data));
76
+ this.db.hasDatabaseTable('sample_table')
77
+ .subscribe(data => console.log('hasDatabaseTable:', data));
15
78
  // Tables
16
- this.db.getDatabaseTables().subscribe(data => console.log(data));
79
+ this.db.getDatabaseTables()
80
+ .subscribe(data => console.log('getDatabaseTables:', data));
17
81
  // getTable
18
- this.db.getDatabaseTable('Sample Table').subscribe(data => console.log(data));
82
+ this.db.getDatabaseTable('sample_table')
83
+ .subscribe(data => console.log('getDatabaseTable:', data));
19
84
  // Table Schema
20
- this.db.getDatabaseTableSchema('Sample Table').subscribe(data => console.log(data));
21
- // Update Table Schema
22
- // const newTableDef = TableSchemaDef.adapt({table: 'sample', schema: ['id', 'name', 'age', 'amount']})
23
- // this.db.updateDatabaseTableSchema(newTableDef)
24
- // Insert Table Record
25
- const record = { id: 12, age: 45, last_name: 'Bonifacio', amount: 1200 };
26
- this.db.createTableRecord('Sample Table', record).subscribe(data => console.log(data));
85
+ this.db.getDatabaseTableSchema('sample_table')
86
+ .subscribe(data => console.log('getDatabaseTableSchema:', data));
27
87
  // Insert Table Records
28
88
  const records = [
29
- { id: 12, age: 12, last_name: 'Bonifacio', amount: 80 },
30
- { id: 10, age: 15, last_name: 'Johns', amount: 700 },
31
- { id: 1, age: 22, last_name: 'Kims', amount: 234 },
32
- { id: 2, age: 45, last_name: 'Harrys', amount: 1200 },
89
+ { id: 1, age: 12, last_name: 'Bonifacio', amount: 80 },
90
+ { id: 2, age: 15, last_name: 'Johns', amount: 700 },
91
+ { id: 3, age: 22, last_name: 'Kims', amount: 234 },
92
+ { id: 4, age: 45, last_name: 'Harrys', amount: 1200 },
33
93
  ];
34
- this.db.createTableRecords('Sample Table', records).subscribe(data => console.log(data));
35
- // Update Table Record
36
- const recordUpdate = { id: 12, age: 45, last_name: 'Bonifacio', amount: 5000 };
37
- this.db.createTableRecord('Sample Table', record).subscribe(data => console.log(data));
38
- // Update Table Records
39
- // const recordsUpdate = [
40
- // { id: 12, age: 12, last_name: 'Bonifacio', amount: 5000 },
41
- // { id: 10, age: 15, last_name: 'Johns', amount: 5000 },
42
- // ]
43
- // this.db.updateTableRecords('sample_table', records).subscribe(data => console.log(data))
94
+ this.db.createTableRecords('sample_table', records).subscribe(() => {
95
+ this.refreshData();
96
+ });
44
97
  });
45
98
  }
46
99
  createTable(tableDef) {
@@ -48,24 +101,52 @@ export class DatabaseDataDemoComponent {
48
101
  }
49
102
  // CRUD
50
103
  findTableRecords(table, column, value) {
104
+ return this.db.findTableRecords(table, column, value)
105
+ .pipe(tap((data) => console.log('findTableRecords:', data)));
51
106
  }
52
107
  findTableRecord(table, column, value) {
108
+ return this.db.findTableRecord(table, column, value)
109
+ .pipe(tap((data) => console.log('findTableRecord:', data)));
53
110
  }
54
111
  getTableRecords(table) {
112
+ return this.db.getTableRecords(table)
113
+ .pipe(tap((data) => console.log('getTableRecords:', data)));
55
114
  }
56
115
  getTableRecord(table, id) {
116
+ return this.db.getTableRecord(table, id)
117
+ .pipe(tap((data) => console.log('getTableRecord:', data)));
57
118
  }
58
119
  createTableRecord(table, record) {
120
+ return this.db.createTableRecord(table, record)
121
+ .pipe(tap((data) => console.log('createTableRecord:', data)));
59
122
  }
60
123
  updateTableRecord(table, record) {
124
+ return this.db.updateTableRecord(table, record)
125
+ .pipe(tap((data) => console.log('updateTableRecord:', data)));
61
126
  }
62
127
  deleteTableRecord(table, id) {
128
+ return this.db.deleteTableRecord(table, id)
129
+ .pipe(tap((data) => console.log('deleteTableRecord:', data)));
63
130
  }
64
131
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseDataDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatabaseDataDemoComponent, selector: "app-database-data-demo", ngImport: i0, template: "<p>\n database-data-demo works!\n</p>\n", styles: [""] }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatabaseDataDemoComponent, selector: "app-database-data-demo", ngImport: i0, template: "<div style=\"padding: 2rem;\">\n\n <h2>\n Database Manager Service Demo\n </h2>\n\n <div style=\"margin-bottom: 1rem; display: flex; gap: 1rem;\">\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"clearAllData()\"\n >\n Clear Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"updateData()\"\n >\n Update Data\n </button>\n <div style=\"flex:1\"></div>\n <button\n mat-stroked-button\n color=\"warn\"\n [disabled]=\"!dataToDisplay.length\"\n (click)=\"removeData()\"\n >\n Remove Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"addData()\"\n >\n Add Data\n </button>\n </div>\n\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef>ID</th>\n <td mat-cell *matCellDef=\"let element\">{{element.id}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"last_name\">\n <th mat-header-cell *matHeaderCellDef>Last Name</th>\n <td mat-cell *matCellDef=\"let element\">{{element.last_name}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"age\">\n <th mat-header-cell *matHeaderCellDef>Age</th>\n <td mat-cell *matCellDef=\"let element\">{{element.age}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef>Amount</th>\n <td mat-cell *matCellDef=\"let element\">{{element.amount | currency}}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }] }); }
66
133
  }
67
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatabaseDataDemoComponent, decorators: [{
68
135
  type: Component,
69
- args: [{ selector: 'app-database-data-demo', template: "<p>\n database-data-demo works!\n</p>\n" }]
136
+ args: [{ selector: 'app-database-data-demo', template: "<div style=\"padding: 2rem;\">\n\n <h2>\n Database Manager Service Demo\n </h2>\n\n <div style=\"margin-bottom: 1rem; display: flex; gap: 1rem;\">\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"clearAllData()\"\n >\n Clear Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"updateData()\"\n >\n Update Data\n </button>\n <div style=\"flex:1\"></div>\n <button\n mat-stroked-button\n color=\"warn\"\n [disabled]=\"!dataToDisplay.length\"\n (click)=\"removeData()\"\n >\n Remove Data\n </button>\n <button mat-stroked-button\n color=\"primary\"\n (click)=\"addData()\"\n >\n Add Data\n </button>\n </div>\n\n <div class=\"table-container\">\n <table mat-table [dataSource]=\"dataSource\">\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef>ID</th>\n <td mat-cell *matCellDef=\"let element\">{{element.id}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"last_name\">\n <th mat-header-cell *matHeaderCellDef>Last Name</th>\n <td mat-cell *matCellDef=\"let element\">{{element.last_name}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"age\">\n <th mat-header-cell *matHeaderCellDef>Age</th>\n <td mat-cell *matCellDef=\"let element\">{{element.age}}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"amount\">\n <th mat-header-cell *matHeaderCellDef>Amount</th>\n <td mat-cell *matCellDef=\"let element\">{{element.amount | currency}}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>\n" }]
70
137
  }], ctorParameters: () => [] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vZGF0YWJhc2UtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQU9sRixNQUFNLE9BQU8seUJBQXlCO0lBSXBDO1FBRkEsT0FBRSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBRW5CLENBQUM7SUFFakIsUUFBUTtRQUVOLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQyxDQUFBO1FBQ2pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBRXhDLFdBQVc7WUFDWCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUU3RSxTQUFTO1lBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUVoRSxXQUFXO1lBQ1gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFFN0UsZUFBZTtZQUNmLElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBRW5GLHNCQUFzQjtZQUN0Qix1R0FBdUc7WUFDdkcsaURBQWlEO1lBRWpELHNCQUFzQjtZQUN0QixNQUFNLE1BQU0sR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUV4RSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFFdEYsdUJBQXVCO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHO2dCQUNkLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtnQkFDdkQsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNwRCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUU7Z0JBQ2xELEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTthQUN0RCxDQUFBO1lBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBRXhGLHNCQUFzQjtZQUN0QixNQUFNLFlBQVksR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQTtZQUU5RSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFFdEYsdUJBQXVCO1lBQ3ZCLDBCQUEwQjtZQUMxQiwrREFBK0Q7WUFDL0QsMkRBQTJEO1lBQzNELElBQUk7WUFFSiwyRkFBMkY7UUFFN0YsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQXdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsT0FBTztJQUNQLGdCQUFnQixDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBVTtJQUUxRCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsS0FBVTtJQUV6RCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7SUFFN0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhLEVBQUUsRUFBVTtJQUV4QyxDQUFDO0lBRUQsaUJBQWlCLENBQUksS0FBYSxFQUFFLE1BQVM7SUFFN0MsQ0FBQztJQUVELGlCQUFpQixDQUFJLEtBQWEsRUFBRSxNQUFTO0lBRTdDLENBQUM7SUFFRCxpQkFBaUIsQ0FBSSxLQUFhLEVBQUUsRUFBVTtJQUU5QyxDQUFDOytHQTVGVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qiw4RENWdEMsMENBR0E7OzRGRE9hLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRhYmxlU2NoZW1hRGVmIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWJhc2UtbWFuYWdlci1zZXJ2aWNlcy9tb2RlbHMvdGFibGUtc2NoZW1hJztcbmltcG9ydCB7IERhdGFiYXNlTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRhdGFiYXNlLWRhdGEtZGVtbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhYmFzZURhdGFEZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBkYiA9IGluamVjdChEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICBjb25zdCB0YWJsZURlZiA9IFRhYmxlU2NoZW1hRGVmLmFkYXB0KHt0YWJsZTogJ1NhbXBsZSBUYWJsZScsIHNjaGVtYTogWydpZCcsICdsYXN0TmFtZScsICdhZ2UnXX0pXG4gICAgY29uc29sZS5sb2codGFibGVEZWYpXG5cbiAgICB0aGlzLmNyZWF0ZVRhYmxlKHRhYmxlRGVmKS5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAvLyBoYXNUYWJsZVxuICAgICAgdGhpcy5kYi5oYXNEYXRhYmFzZVRhYmxlKCdTYW1wbGUgVGFibGUnKS5zdWJzY3JpYmUoZGF0YSA9PiBjb25zb2xlLmxvZyhkYXRhKSlcblxuICAgICAgLy8gVGFibGVzXG4gICAgICB0aGlzLmRiLmdldERhdGFiYXNlVGFibGVzKCkuc3Vic2NyaWJlKGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSkpXG5cbiAgICAgIC8vIGdldFRhYmxlXG4gICAgICB0aGlzLmRiLmdldERhdGFiYXNlVGFibGUoJ1NhbXBsZSBUYWJsZScpLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKGRhdGEpKVxuXG4gICAgICAvLyBUYWJsZSBTY2hlbWFcbiAgICAgIHRoaXMuZGIuZ2V0RGF0YWJhc2VUYWJsZVNjaGVtYSgnU2FtcGxlIFRhYmxlJykuc3Vic2NyaWJlKGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSkpXG5cbiAgICAgIC8vIFVwZGF0ZSBUYWJsZSBTY2hlbWFcbiAgICAgIC8vIGNvbnN0IG5ld1RhYmxlRGVmID0gVGFibGVTY2hlbWFEZWYuYWRhcHQoe3RhYmxlOiAnc2FtcGxlJywgc2NoZW1hOiBbJ2lkJywgJ25hbWUnLCAnYWdlJywgJ2Ftb3VudCddfSlcbiAgICAgIC8vIHRoaXMuZGIudXBkYXRlRGF0YWJhc2VUYWJsZVNjaGVtYShuZXdUYWJsZURlZilcblxuICAgICAgLy8gSW5zZXJ0IFRhYmxlIFJlY29yZFxuICAgICAgY29uc3QgcmVjb3JkID0geyBpZDogMTIsIGFnZTogNDUsIGxhc3RfbmFtZTogJ0JvbmlmYWNpbycsIGFtb3VudDogMTIwMCB9XG5cbiAgICAgIHRoaXMuZGIuY3JlYXRlVGFibGVSZWNvcmQoJ1NhbXBsZSBUYWJsZScsIHJlY29yZCkuc3Vic2NyaWJlKGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSkpXG5cbiAgICAgIC8vIEluc2VydCBUYWJsZSBSZWNvcmRzXG4gICAgICBjb25zdCByZWNvcmRzID0gW1xuICAgICAgICB7IGlkOiAxMiwgYWdlOiAxMiwgbGFzdF9uYW1lOiAnQm9uaWZhY2lvJywgYW1vdW50OiA4MCB9LFxuICAgICAgICB7IGlkOiAxMCwgYWdlOiAxNSwgbGFzdF9uYW1lOiAnSm9obnMnLCBhbW91bnQ6IDcwMCB9LFxuICAgICAgICB7IGlkOiAxLCBhZ2U6IDIyLCBsYXN0X25hbWU6ICdLaW1zJywgYW1vdW50OiAyMzQgfSxcbiAgICAgICAgeyBpZDogMiwgYWdlOiA0NSwgbGFzdF9uYW1lOiAnSGFycnlzJywgYW1vdW50OiAxMjAwIH0sXG4gICAgICBdXG5cbiAgICAgIHRoaXMuZGIuY3JlYXRlVGFibGVSZWNvcmRzKCdTYW1wbGUgVGFibGUnLCByZWNvcmRzKS5zdWJzY3JpYmUoZGF0YSA9PiBjb25zb2xlLmxvZyhkYXRhKSlcblxuICAgICAgLy8gVXBkYXRlIFRhYmxlIFJlY29yZFxuICAgICAgY29uc3QgcmVjb3JkVXBkYXRlID0geyBpZDogMTIsIGFnZTogNDUsIGxhc3RfbmFtZTogJ0JvbmlmYWNpbycsIGFtb3VudDogNTAwMCB9XG5cbiAgICAgIHRoaXMuZGIuY3JlYXRlVGFibGVSZWNvcmQoJ1NhbXBsZSBUYWJsZScsIHJlY29yZCkuc3Vic2NyaWJlKGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSkpXG5cbiAgICAgIC8vIFVwZGF0ZSBUYWJsZSBSZWNvcmRzXG4gICAgICAvLyBjb25zdCByZWNvcmRzVXBkYXRlID0gW1xuICAgICAgLy8gICB7IGlkOiAxMiwgYWdlOiAxMiwgbGFzdF9uYW1lOiAnQm9uaWZhY2lvJywgYW1vdW50OiA1MDAwIH0sXG4gICAgICAvLyAgIHsgaWQ6IDEwLCBhZ2U6IDE1LCBsYXN0X25hbWU6ICdKb2hucycsIGFtb3VudDogNTAwMCB9LFxuICAgICAgLy8gXVxuXG4gICAgICAvLyB0aGlzLmRiLnVwZGF0ZVRhYmxlUmVjb3Jkcygnc2FtcGxlX3RhYmxlJywgcmVjb3Jkcykuc3Vic2NyaWJlKGRhdGEgPT4gY29uc29sZS5sb2coZGF0YSkpXG5cbiAgICB9KVxuXG4gIH1cblxuICBjcmVhdGVUYWJsZSh0YWJsZURlZjogVGFibGVTY2hlbWFEZWYpIHtcbiAgICByZXR1cm4gdGhpcy5kYi5jcmVhdGVEYXRhYmFzZVRhYmxlKHRhYmxlRGVmKVxuICB9XG5cbiAgLy8gQ1JVRFxuICBmaW5kVGFibGVSZWNvcmRzKHRhYmxlOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG5cbiAgfVxuXG4gIGZpbmRUYWJsZVJlY29yZCh0YWJsZTogc3RyaW5nLCBjb2x1bW46IHN0cmluZywgdmFsdWU6IGFueSkge1xuXG4gIH1cblxuICBnZXRUYWJsZVJlY29yZHModGFibGU6IHN0cmluZykge1xuXG4gIH1cblxuICBnZXRUYWJsZVJlY29yZCh0YWJsZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XG5cbiAgfVxuXG4gIGNyZWF0ZVRhYmxlUmVjb3JkPFQ+KHRhYmxlOiBzdHJpbmcsIHJlY29yZDogVCkge1xuXG4gIH1cblxuICB1cGRhdGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCByZWNvcmQ6IFQpIHtcblxuICB9XG5cbiAgZGVsZXRlVGFibGVSZWNvcmQ8VD4odGFibGU6IHN0cmluZywgaWQ6IG51bWJlcikge1xuXG4gIH1cblxufVxuIiwiPHA+XG4gIGRhdGFiYXNlLWRhdGEtZGVtbyB3b3JrcyFcbjwvcD5cbiJdfQ==
138
+ class DatabaseDataSource extends DataSource {
139
+ constructor(initialData) {
140
+ super();
141
+ this._dataStream = new ReplaySubject();
142
+ this.setData(initialData);
143
+ }
144
+ connect() {
145
+ return this._dataStream;
146
+ }
147
+ disconnect() { }
148
+ setData(data) {
149
+ this._dataStream.next(data);
150
+ }
151
+ }
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h0dHAtcmVxdWVzdC1tYW5hZ2VyL3NyYy9saWIvaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8vZGF0YWJhc2UtZGF0YS1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2RhdGFiYXNlLWRhdGEtZGVtby9kYXRhYmFzZS1kYXRhLWRlbW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLE9BQU8sRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDN0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBY2pGLE1BQU0sT0FBTyx5QkFBeUI7SUFXcEM7UUFUQSxPQUFFLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDM0IsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLGVBQVUsR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxxQkFBZ0IsR0FBYSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxF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QUFDLENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUksS0FBYSxFQUFFLEVBQVU7UUFDNUMsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7YUFDMUMsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUM1RCxDQUFBO0lBQ0gsQ0FBQzsrR0FwTFUseUJBQXlCO21HQUF6Qix5QkFBeUIsOERDcEJ0QyxnMERBaUVBOzs0RkQ3Q2EseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3Qjs7QUE0THBDLE1BQU0sa0JBQW1CLFNBQVEsVUFBdUI7SUFHdEQsWUFBWSxXQUEwQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUhGLGdCQUFXLEdBQUcsSUFBSSxhQUFhLEVBQWlCLENBQUM7UUFJdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsVUFBVSxLQUFJLENBQUM7SUFFZixPQUFPLENBQUMsSUFBbUI7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcblxuaW1wb3J0IHsgVGFibGVTY2hlbWFEZWYgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhYmFzZS1tYW5hZ2VyLXNlcnZpY2UvbW9kZWxzL3RhYmxlLXNjaGVtYSc7XG5pbXBvcnQgeyBEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YWJhc2UtbWFuYWdlci1zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVJlY29yZCB7XG4gIGlkOiBudW1iZXI7XG4gIGxhc3RfbmFtZTogc3RyaW5nO1xuICBhZ2U6IG51bWJlcjtcbiAgYW1vdW50OiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXRhYmFzZS1kYXRhLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YWJhc2UtZGF0YS1kZW1vLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YWJhc2VEYXRhRGVtb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBkYiA9IGluamVjdChEYXRhYmFzZU1hbmFnZXJTZXJ2aWNlKVxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBkYXRhVG9EaXNwbGF5OiBUYWJsZVJlY29yZFtdID0gW107XG4gIGRhdGFTb3VyY2UgPSBuZXcgRGF0YWJhc2VEYXRhU291cmNlKHRoaXMuZGF0YVRvRGlzcGxheSk7XG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gWydpZCcsICdsYXN0X25hbWUnLCAnYWdlJywgJ2Ftb3VudCddO1xuXG4gIG5hbWVzID0gWydTbWl0aCcsICdKb2huc29uJywgJ1dpbGxpYW1zJywgJ0Jyb3duJywgJ0pvbmVzJywgJ0dhcmNpYScsICdNaWxsZXInLCAnRGF2aXMnXTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFkZERhdGEoKSB7XG5cbiAgICBjb25zdCBuZXdSZWNvcmQ6IFRhYmxlUmVjb3JkID0ge1xuICAgICAgaWQ6IE1hdGgubWF4KC4uLnRoaXMuZGF0YVRvRGlzcGxheS5tYXAociA9PiByLmlkKSwgMCkgKyAxLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLm5hbWVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubmFtZXMubGVuZ3RoKV0sXG4gICAgICBhZ2U6IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgwKSArIDE4LFxuICAgICAgYW1vdW50OiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuICAgIH07XG5cbiAgICB0aGlzLmRhdGFUb0Rpc3BsYXkgPSBbLi4udGhpcy5kYXRhVG9EaXNwbGF5LCBuZXdSZWNvcmRdO1xuICAgIHRoaXMuZGIuY3JlYXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIG5ld1JlY29yZCkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4gdGhpcy5yZWZyZXNoRGF0YSgpXG4gICAgKTtcblxuICB9XG5cbiAgcmVtb3ZlRGF0YSgpIHtcbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRSZWNvcmQgPSB0aGlzLmRhdGFUb0Rpc3BsYXlbdGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCAtIDFdO1xuICAgICAgdGhpcy5kYXRhVG9EaXNwbGF5ID0gdGhpcy5kYXRhVG9EaXNwbGF5LnNsaWNlKDAsIC0xKTtcbiAgICAgIHRoaXMuZGIuZGVsZXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIHJlbW92ZWRSZWNvcmQuaWQpLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4gdGhpcy5yZWZyZXNoRGF0YSgpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZURhdGEoKSB7XG5cbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiB0aGlzLmRhdGFUb0Rpc3BsYXkubGVuZ3RoKTtcbiAgICBjb25zdCByZWNvcmRUb1VwZGF0ZSA9IHRoaXMuZGF0YVRvRGlzcGxheVtyYW5kb21JbmRleF07XG5cbiAgICBjb25zdCB1cGRhdGVkUmVjb3JkOiBUYWJsZVJlY29yZCA9IHtcbiAgICAgIC4uLnJlY29yZFRvVXBkYXRlLFxuICAgICAgbGFzdF9uYW1lOiB0aGlzLm5hbWVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMubmFtZXMubGVuZ3RoKV0sXG4gICAgICBhZ2U6IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgwKSArIDE4LFxuICAgICAgYW1vdW50OiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMDAwKVxuICAgIH07XG5cbiAgICB0aGlzLmRhdGFUb0Rpc3BsYXkgPSB0aGlzLmRhdGFUb0Rpc3BsYXkubWFwKChyLCBpbmRleCkgPT5cbiAgICAgIGluZGV4ID09PSByYW5kb21JbmRleCA/IHVwZGF0ZWRSZWNvcmQgOiByXG4gICAgKTtcblxuICAgIHRoaXMuZGIudXBkYXRlVGFibGVSZWNvcmQoJ3NhbXBsZV90YWJsZScsIHVwZGF0ZWRSZWNvcmQpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHRoaXMucmVmcmVzaERhdGEoKVxuICAgICk7XG5cbiAgfVxuXG4gIGNsZWFyQWxsRGF0YSgpIHtcbiAgICBpZiAodGhpcy5kYXRhVG9EaXNwbGF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgaWRzVG9EZWxldGUgPSB0aGlzLmRhdGFUb0Rpc3BsYXkubWFwKHIgPT4gci5pZCk7XG4gICAgdGhpcy5kYXRhVG9EaXNwbGF5ID0gW107XG5cbiAgICB0aGlzLmRiLmRlbGV0ZVRhYmxlUmVjb3Jkcygnc2FtcGxlX3RhYmxlJywgaWRzVG9EZWxldGUpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHRoaXMucmVmcmVzaERhdGEoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXRhKCkge1xuICAgIHRoaXMuZGIuZ2V0VGFibGVSZWNvcmRzKCdzYW1wbGVfdGFibGUnKS5zdWJzY3JpYmUoXG4gICAgICAocmVjb3JkczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YVRvRGlzcGxheSA9IHJlY29yZHMgfHwgW107XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXREYXRhKHRoaXMuZGF0YVRvRGlzcGxheSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgY29uc3QgdGFibGVEZWYgPSBUYWJsZVNjaGVtYURlZi5hZGFwdCh7XG4gICAgICB0YWJsZTogJ3NhbXBsZV90YWJsZScsXG4gICAgICBzY2hlbWE6ICcrK2lkLCBsYXN0X25hbWUsIGFnZSwgYW1vdW50J1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYi5jcmVhdGVEYXRhYmFzZVRhYmxlKHRhYmxlRGVmKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ0RhdGFiYXNlIFRhYmxlIEluaXRpYWxpemVkJyk7XG5cbiAgICAgIC8vIGhhc1RhYmxlXG4gICAgICB0aGlzLmRiLmhhc0RhdGFiYXNlVGFibGUoJ3NhbXBsZV90YWJsZScpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiBjb25zb2xlLmxvZygnaGFzRGF0YWJhc2VUYWJsZTonLCBkYXRhKSlcblxuICAgICAgLy8gVGFibGVzXG4gICAgICB0aGlzLmRiLmdldERhdGFiYXNlVGFibGVzKClcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlczonLCBkYXRhKSlcblxuICAgICAgLy8gZ2V0VGFibGVcbiAgICAgIHRoaXMuZGIuZ2V0RGF0YWJhc2VUYWJsZSgnc2FtcGxlX3RhYmxlJylcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlOicsIGRhdGEpKVxuXG4gICAgICAvLyBUYWJsZSBTY2hlbWFcbiAgICAgIHRoaXMuZGIuZ2V0RGF0YWJhc2VUYWJsZVNjaGVtYSgnc2FtcGxlX3RhYmxlJylcbiAgICAgICAgLnN1YnNjcmliZShkYXRhID0+IGNvbnNvbGUubG9nKCdnZXREYXRhYmFzZVRhYmxlU2NoZW1hOicsIGRhdGEpKVxuXG4gICAgICAvLyBJbnNlcnQgVGFibGUgUmVjb3Jkc1xuICAgICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgICAgeyBpZDogMSwgYWdlOiAxMiwgbGFzdF9uYW1lOiAnQm9uaWZhY2lvJywgYW1vdW50OiA4MCB9LFxuICAgICAgICB7IGlkOiAyLCBhZ2U6IDE1LCBsYXN0X25hbWU6ICdKb2hucycsIGFtb3VudDogNzAwIH0sXG4gICAgICAgIHsgaWQ6IDMsIGFnZTogMjIsIGxhc3RfbmFtZTogJ0tpbXMnLCBhbW91bnQ6IDIzNCB9LFxuICAgICAgICB7IGlkOiA0LCBhZ2U6IDQ1LCBsYXN0X25hbWU6ICdIYXJyeXMnLCBhbW91bnQ6IDEyMDAgfSxcbiAgICAgIF1cblxuICAgICAgdGhpcy5kYi5jcmVhdGVUYWJsZVJlY29yZHMoJ3NhbXBsZV90YWJsZScsIHJlY29yZHMpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVmcmVzaERhdGEoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlVGFibGUodGFibGVEZWY6IFRhYmxlU2NoZW1hRGVmKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuY3JlYXRlRGF0YWJhc2VUYWJsZSh0YWJsZURlZilcbiAgfVxuXG4gIC8vIENSVURcbiAgZmluZFRhYmxlUmVjb3Jkcyh0YWJsZTogc3RyaW5nLCBjb2x1bW46IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmRiLmZpbmRUYWJsZVJlY29yZHModGFibGUsIGNvbHVtbiwgdmFsdWUpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGRhdGE6IGFueSkgPT4gY29uc29sZS5sb2coJ2ZpbmRUYWJsZVJlY29yZHM6JywgZGF0YSkpXG4gICAgKVxuICB9XG5cbiAgZmluZFRhYmxlUmVjb3JkKHRhYmxlOiBzdHJpbmcsIGNvbHVtbjogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZmluZFRhYmxlUmVjb3JkKHRhYmxlLCBjb2x1bW4sIHZhbHVlKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdmaW5kVGFibGVSZWNvcmQ6JywgZGF0YSkpXG4gICAgKVxuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmRzKHRhYmxlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kYi5nZXRUYWJsZVJlY29yZHModGFibGUpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGRhdGE6IGFueSkgPT4gY29uc29sZS5sb2coJ2dldFRhYmxlUmVjb3JkczonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBnZXRUYWJsZVJlY29yZCh0YWJsZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZ2V0VGFibGVSZWNvcmQodGFibGUsIGlkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdnZXRUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBjcmVhdGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCByZWNvcmQ6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5kYi5jcmVhdGVUYWJsZVJlY29yZCh0YWJsZSwgcmVjb3JkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdjcmVhdGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICB1cGRhdGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCByZWNvcmQ6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5kYi51cGRhdGVUYWJsZVJlY29yZCh0YWJsZSwgcmVjb3JkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCd1cGRhdGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxuICBkZWxldGVUYWJsZVJlY29yZDxUPih0YWJsZTogc3RyaW5nLCBpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuZGIuZGVsZXRlVGFibGVSZWNvcmQodGFibGUsIGlkKVxuICAgIC5waXBlKFxuICAgICAgdGFwKChkYXRhOiBhbnkpID0+IGNvbnNvbGUubG9nKCdkZWxldGVUYWJsZVJlY29yZDonLCBkYXRhKSlcbiAgICApXG4gIH1cblxufVxuXG5jbGFzcyBEYXRhYmFzZURhdGFTb3VyY2UgZXh0ZW5kcyBEYXRhU291cmNlPFRhYmxlUmVjb3JkPiB7XG4gIHByaXZhdGUgX2RhdGFTdHJlYW0gPSBuZXcgUmVwbGF5U3ViamVjdDxUYWJsZVJlY29yZFtdPigpO1xuXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxEYXRhOiBUYWJsZVJlY29yZFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNldERhdGEoaW5pdGlhbERhdGEpO1xuICB9XG5cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPFRhYmxlUmVjb3JkW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVN0cmVhbTtcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKSB7fVxuXG4gIHNldERhdGEoZGF0YTogVGFibGVSZWNvcmRbXSkge1xuICAgIHRoaXMuX2RhdGFTdHJlYW0ubmV4dChkYXRhKTtcbiAgfVxuXG59XG4iLCI8ZGl2IHN0eWxlPVwicGFkZGluZzogMnJlbTtcIj5cblxuICA8aDI+XG4gICAgRGF0YWJhc2UgTWFuYWdlciBTZXJ2aWNlIERlbW9cbiAgPC9oMj5cblxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMXJlbTsgZGlzcGxheTogZmxleDsgZ2FwOiAxcmVtO1wiPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRGF0YSgpXCJcbiAgICA+XG4gICAgICBDbGVhciBEYXRhXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwidXBkYXRlRGF0YSgpXCJcbiAgICA+XG4gICAgICBVcGRhdGUgRGF0YVxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgc3R5bGU9XCJmbGV4OjFcIj48L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGFUb0Rpc3BsYXkubGVuZ3RoXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZURhdGEoKVwiXG4gICAgPlxuICAgICAgUmVtb3ZlIERhdGFcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJhZGREYXRhKClcIlxuICAgID5cbiAgICAgIEFkZCBEYXRhXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpZFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPklEPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj57e2VsZW1lbnQuaWR9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYXN0X25hbWVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5MYXN0IE5hbWU8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5sYXN0X25hbWV9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhZ2VcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BZ2U8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5hZ2V9fTwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhbW91bnRcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5BbW91bnQ8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPnt7ZWxlbWVudC5hbW91bnQgfCBjdXJyZW5jeX19PC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnNcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCI+PC90cj5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=
@@ -11,7 +11,10 @@ import * as i7 from "./request-manager-demo/request-manager-demo.component";
11
11
  import * as i8 from "./request-signals-manager-demo/request-signals-manager-demo.component";
12
12
  import * as i9 from "./local-storage-demo/local-storage-demo.component";
13
13
  import * as i10 from "./local-storage-signals-demo/local-storage-signals-demo.component";
14
- import * as i11 from "../models/config-options.model";
14
+ import * as i11 from "./request-manager-ws-demo/request-manager-ws-demo.component";
15
+ import * as i12 from "./store-state-manager-demo/store-state-manager-demo.component";
16
+ import * as i13 from "./database-data-demo/database-data-demo.component";
17
+ import * as i14 from "../models/config-options.model";
15
18
  export class HttpRequestServicesDemoComponent {
16
19
  constructor(configOptions) {
17
20
  this.configOptions = configOptions;
@@ -19,11 +22,13 @@ export class HttpRequestServicesDemoComponent {
19
22
  { name: "Http Service", value: 'http_service' },
20
23
  { name: "Http Signals Service", value: 'http_signals_service', new: true },
21
24
  { name: "Http State Service", value: 'http_state_service' },
22
- { name: "Database Service", value: 'database_service', divider: true, disabled: true },
25
+ { name: "Http State Service - Websockets", value: 'http_state_service_ws', new: false },
26
+ { name: "Database Service", value: 'database_service', divider: true, disabled: false },
23
27
  { name: "Local Storage Service", value: 'local_storage_service' },
24
28
  { name: "Local Signals Storage Service", value: 'local_storage_signals_service', new: true },
29
+ { name: "Store State Manager Service", value: 'store_state_manager', new: true },
25
30
  ];
26
- this.selectedService = this.requestTypes[0].value;
31
+ this.selectedService = this.requestTypes[3].value; //menu selection default
27
32
  }
28
33
  ngOnInit() {
29
34
  if (this.configOptions)
@@ -33,13 +38,13 @@ export class HttpRequestServicesDemoComponent {
33
38
  this.selectedService = this.requestTypes[type].value;
34
39
  }
35
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, deps: [{ token: CONFIG_SETTINGS_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
36
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <!-- <app-database-data-demo></app-database-data-demo> -->\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.RequestManagerStateDemoComponent, selector: "app-request-manager-state-demo" }, { kind: "component", type: i7.RequestManagerDemoComponent, selector: "app-request-manager-demo" }, { kind: "component", type: i8.RequestSignalsManagerDemoComponent, selector: "app-request-signals-manager-demo" }, { kind: "component", type: i9.LocalStorageDemoComponent, selector: "app-local-storage-demo" }, { kind: "component", type: i10.LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HttpRequestServicesDemoComponent, selector: "app-http-request-services-demo", ngImport: i0, template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i6.RequestManagerStateDemoComponent, selector: "app-request-manager-state-demo" }, { kind: "component", type: i7.RequestManagerDemoComponent, selector: "app-request-manager-demo" }, { kind: "component", type: i8.RequestSignalsManagerDemoComponent, selector: "app-request-signals-manager-demo" }, { kind: "component", type: i9.LocalStorageDemoComponent, selector: "app-local-storage-demo" }, { kind: "component", type: i10.LocalStorageSignalsDemoComponent, selector: "app-local-storage-signals-demo" }, { kind: "component", type: i11.RequestManagerWsDemoComponent, selector: "app-request-manager-ws-demo" }, { kind: "component", type: i12.StoreStateManagerDemoComponent, selector: "app-store-state-manager-demo" }, { kind: "component", type: i13.DatabaseDataDemoComponent, selector: "app-database-data-demo" }, { kind: "pipe", type: i1.JsonPipe, name: "json" }] }); }
37
42
  }
38
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpRequestServicesDemoComponent, decorators: [{
39
44
  type: Component,
40
- args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <!-- <app-database-data-demo></app-database-data-demo> -->\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"] }]
41
- }], ctorParameters: () => [{ type: i11.ConfigOptions, decorators: [{
45
+ args: [{ selector: 'app-http-request-services-demo', template: "<mat-toolbar style=\"display:flex\">\n <div>Http Request Manager Services</div>\n <div style=\"flex:1\"></div>\n <button mat-stroked-button [matMenuTriggerFor]=\"menu\">Services</button>\n <mat-menu #menu=\"matMenu\">\n <ng-container *ngFor=\"let type of requestTypes; index as i\">\n <div\n *ngIf=\"type?.divider\"\n style=\"margin-top: .5rem; margin-bottom: .5rem;\"\n >\n <mat-divider></mat-divider>\n </div>\n <button\n mat-menu-item\n (click)=\"onSelected(i)\"\n [disabled]=\"type.disabled\"\n >\n {{ type.name }}\n </button>\n </ng-container>\n\n </mat-menu>\n</mat-toolbar>\n\n<span [ngSwitch]=\"selectedService\">\n <p *ngSwitchCase=\"'http_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-demo></app-request-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_signals_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-signals-manager-demo></app-request-signals-manager-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-state-demo></app-request-manager-state-demo>\n </p>\n <p *ngSwitchCase=\"'http_state_service_ws'\">\n <ng-container *ngTemplateOutlet=\"HTTP_OPTIONS\"></ng-container>\n <app-request-manager-ws-demo></app-request-manager-ws-demo>\n </p>\n <p *ngSwitchCase=\"'database_service'\">\n <app-database-data-demo></app-database-data-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-demo></app-local-storage-demo>\n </p>\n <p *ngSwitchCase=\"'local_storage_signals_service'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-local-storage-signals-demo></app-local-storage-signals-demo>\n </p>\n <p *ngSwitchCase=\"'store_state_manager'\">\n <ng-container *ngTemplateOutlet=\"LOCAL_OPTIONS\"></ng-container>\n <app-store-state-manager-demo></app-store-state-manager-demo>\n </p>\n <p *ngSwitchDefault>\n Other\n </p>\n</span>\n\n<ng-template #HTTP_OPTIONS>\n <ng-container *ngIf=\"injectionOptions?.httpRequestOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - HTTP Options</h3>\n {{ injectionOptions?.httpRequestOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #LOCAL_OPTIONS>\n <ng-container class=\"box\" *ngIf=\"injectionOptions?.LocalStorageOptions\">\n <div class=\"box\">\n <h3 style=\"font-weight: bold;\">Injection Token Detected - LocalStorage Options</h3>\n {{ injectionOptions?.LocalStorageOptions| json }}\n </div>\n </ng-container>\n</ng-template>\n\n\n", styles: [".box{padding:1rem;background-color:#f5f5f5;border:thin gray solid;margin-top:1rem}\n"] }]
46
+ }], ctorParameters: () => [{ type: i14.ConfigOptions, decorators: [{
42
47
  type: Inject,
43
48
  args: [CONFIG_SETTINGS_TOKEN]
44
49
  }] }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFlM0MsWUFBbUQsYUFBNkI7UUFBN0Isa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBYmhGLGlCQUFZLEdBQUc7WUFDYixFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtZQUMvQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtZQUMxRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7WUFDM0QsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUN0RixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7WUFDakUsRUFBRSxJQUFJLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7U0FDN0YsQ0FBQTtRQUVELG9CQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFJd0MsQ0FBQztJQUVyRixRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsYUFBYTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQ25FLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ3RELENBQUM7K0dBdkJVLGdDQUFnQyxrQkFldkIscUJBQXFCO21HQWY5QixnQ0FBZ0Msc0VDVjdDLGc4RUF3RUE7OzRGRDlEYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFtQjdCLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLW9wdGlvbnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZXF1ZXN0VHlwZXMgPSBbXG4gICAgeyBuYW1lOiBcIkh0dHAgU2VydmljZVwiLCB2YWx1ZTogJ2h0dHBfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiSHR0cCBTaWduYWxzIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJIdHRwIFN0YXRlIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2UnIH0sXG4gICAgeyBuYW1lOiBcIkRhdGFiYXNlIFNlcnZpY2VcIiwgdmFsdWU6ICdkYXRhYmFzZV9zZXJ2aWNlJywgZGl2aWRlcjogdHJ1ZSwgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB7IG5hbWU6IFwiTG9jYWwgU3RvcmFnZSBTZXJ2aWNlXCIsIHZhbHVlOiAnbG9jYWxfc3RvcmFnZV9zZXJ2aWNlJyB9LFxuICAgIHsgbmFtZTogXCJMb2NhbCBTaWduYWxzIFN0b3JhZ2UgU2VydmljZVwiLCB2YWx1ZTogJ2xvY2FsX3N0b3JhZ2Vfc2lnbmFsc19zZXJ2aWNlJywgbmV3OiB0cnVlIH0sXG4gIF1cblxuICBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1swXS52YWx1ZVxuXG4gIGluamVjdGlvbk9wdGlvbnM/OiBDb25maWdPcHRpb25zXG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05GSUdfU0VUVElOR1NfVE9LRU4pIHByaXZhdGUgY29uZmlnT3B0aW9ucz86IENvbmZpZ09wdGlvbnMpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmKHRoaXMuY29uZmlnT3B0aW9ucykgdGhpcy5pbmplY3Rpb25PcHRpb25zID0gdGhpcy5jb25maWdPcHRpb25zXG4gIH1cblxuICBvblNlbGVjdGVkKHR5cGU6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlID0gdGhpcy5yZXF1ZXN0VHlwZXNbdHlwZV0udmFsdWVcbiAgfVxuXG59XG4iLCI8bWF0LXRvb2xiYXIgIHN0eWxlPVwiZGlzcGxheTpmbGV4XCI+XG4gIDxkaXY+SHR0cCBSZXF1ZXN0IE1hbmFnZXIgU2VydmljZXM8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImZsZXg6MVwiPjwvZGl2PlxuICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiPlNlcnZpY2VzPC9idXR0b24+XG4gIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0eXBlIG9mIHJlcXVlc3RUeXBlczsgaW5kZXggYXMgaVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInR5cGU/LmRpdmlkZXJcIlxuICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAuNXJlbTtcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdGVkKGkpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInR5cGUuZGlzYWJsZWRcIlxuICAgICAgICA+XG4gICAgICAgIHt7IHR5cGUubmFtZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC9tYXQtbWVudT5cbjwvbWF0LXRvb2xiYXI+XG5cbjxzcGFuIFtuZ1N3aXRjaF09XCJzZWxlY3RlZFNlcnZpY2VcIj5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkhUVFBfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtcmVxdWVzdC1tYW5hZ2VyLWRlbW8+PC9hcHAtcmVxdWVzdC1tYW5hZ2VyLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3NpZ25hbHNfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LXNpZ25hbHMtbWFuYWdlci1kZW1vPjwvYXBwLXJlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidodHRwX3N0YXRlX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkhUVFBfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8+PC9hcHAtcmVxdWVzdC1tYW5hZ2VyLXN0YXRlLWRlbW8+XG4gIDwvcD5cbiAgPHAgKm5nU3dpdGNoQ2FzZT1cIidkYXRhYmFzZV9zZXJ2aWNlJ1wiPlxuICAgIDwhLS0gPGFwcC1kYXRhYmFzZS1kYXRhLWRlbW8+PC9hcHAtZGF0YWJhc2UtZGF0YS1kZW1vPiAtLT5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2xvY2FsX3N0b3JhZ2Vfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtbG9jYWwtc3RvcmFnZS1kZW1vPjwvYXBwLWxvY2FsLXN0b3JhZ2UtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2xvY2FsX3N0b3JhZ2Vfc2lnbmFsc19zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMT0NBTF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtbz48L2FwcC1sb2NhbC1zdG9yYWdlLXNpZ25hbHMtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIE90aGVyXG4gIDwvcD5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNIVFRQX09QVElPTlM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8aDMgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj5JbmplY3Rpb24gVG9rZW4gRGV0ZWN0ZWQgLSBIVFRQIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uaHR0cFJlcXVlc3RPcHRpb25zfCBqc29uIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNMT0NBTF9PUFRJT05TPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwiYm94XCIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+SW5qZWN0aW9uIFRva2VuIERldGVjdGVkIC0gTG9jYWxTdG9yYWdlIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc3wganNvbiB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaHR0cC1yZXF1ZXN0LW1hbmFnZXIvc3JjL2xpYi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9odHRwLXJlcXVlc3QtbWFuYWdlci9zcmMvbGliL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vL2h0dHAtcmVxdWVzdC1zZXJ2aWNlcy1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFpQjNDLFlBQ3lDLGFBQTZCO1FBQTdCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQWhCdEUsaUJBQVksR0FBRztZQUNiLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQy9DLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO1lBQzFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLElBQUksRUFBRSxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUN2RixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ3ZGLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRTtZQUNqRSxFQUFFLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtZQUM1RixFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtTQUNqRixDQUFBO1FBRUQsb0JBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQSxDQUFDLHdCQUF3QjtJQU1qRSxDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLGFBQWE7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUN0RCxDQUFDOytHQTNCVSxnQ0FBZ0Msa0JBa0JqQyxxQkFBcUI7bUdBbEJwQixnQ0FBZ0Msc0VDVjdDLHd6RkFnRkE7OzRGRHRFYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFzQnZDLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDT05GSUdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLXRva2VuLm1vZGVsJztcbmltcG9ydCB7IENvbmZpZ09wdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnLW9wdGlvbnMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vaHR0cC1yZXF1ZXN0LXNlcnZpY2VzLWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9odHRwLXJlcXVlc3Qtc2VydmljZXMtZGVtby5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U2VydmljZXNEZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICByZXF1ZXN0VHlwZXMgPSBbXG4gICAgeyBuYW1lOiBcIkh0dHAgU2VydmljZVwiLCB2YWx1ZTogJ2h0dHBfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiSHR0cCBTaWduYWxzIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJIdHRwIFN0YXRlIFNlcnZpY2VcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2UnIH0sXG4gICAgeyBuYW1lOiBcIkh0dHAgU3RhdGUgU2VydmljZSAtIFdlYnNvY2tldHNcIiwgdmFsdWU6ICdodHRwX3N0YXRlX3NlcnZpY2Vfd3MnLCBuZXc6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkRhdGFiYXNlIFNlcnZpY2VcIiwgdmFsdWU6ICdkYXRhYmFzZV9zZXJ2aWNlJywgZGl2aWRlcjogdHJ1ZSwgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgeyBuYW1lOiBcIkxvY2FsIFN0b3JhZ2UgU2VydmljZVwiLCB2YWx1ZTogJ2xvY2FsX3N0b3JhZ2Vfc2VydmljZScgfSxcbiAgICB7IG5hbWU6IFwiTG9jYWwgU2lnbmFscyBTdG9yYWdlIFNlcnZpY2VcIiwgdmFsdWU6ICdsb2NhbF9zdG9yYWdlX3NpZ25hbHNfc2VydmljZScsIG5ldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogXCJTdG9yZSBTdGF0ZSBNYW5hZ2VyIFNlcnZpY2VcIiwgdmFsdWU6ICdzdG9yZV9zdGF0ZV9tYW5hZ2VyJywgbmV3OiB0cnVlIH0sXG4gIF1cblxuICBzZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1szXS52YWx1ZSAvL21lbnUgc2VsZWN0aW9uIGRlZmF1bHRcblxuICBpbmplY3Rpb25PcHRpb25zPzogQ29uZmlnT3B0aW9uc1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQ09ORklHX1NFVFRJTkdTX1RPS0VOKSBwcml2YXRlIGNvbmZpZ09wdGlvbnM/OiBDb25maWdPcHRpb25zXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYodGhpcy5jb25maWdPcHRpb25zKSB0aGlzLmluamVjdGlvbk9wdGlvbnMgPSB0aGlzLmNvbmZpZ09wdGlvbnNcbiAgfVxuXG4gIG9uU2VsZWN0ZWQodHlwZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZFNlcnZpY2UgPSB0aGlzLnJlcXVlc3RUeXBlc1t0eXBlXS52YWx1ZVxuICB9XG5cbn1cbiIsIjxtYXQtdG9vbGJhciAgc3R5bGU9XCJkaXNwbGF5OmZsZXhcIj5cbiAgPGRpdj5IdHRwIFJlcXVlc3QgTWFuYWdlciBTZXJ2aWNlczwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZmxleDoxXCI+PC9kaXY+XG4gIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCI+U2VydmljZXM8L2J1dHRvbj5cbiAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHR5cGUgb2YgcmVxdWVzdFR5cGVzOyBpbmRleCBhcyBpXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidHlwZT8uZGl2aWRlclwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IC41cmVtO1wiXG4gICAgICA+XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0ZWQoaSlcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidHlwZS5kaXNhYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAge3sgdHlwZS5uYW1lIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICA8L21hdC1tZW51PlxuPC9tYXQtdG9vbGJhcj5cblxuPHNwYW4gW25nU3dpdGNoXT1cInNlbGVjdGVkU2VydmljZVwiPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc2lnbmFsc19zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJIVFRQX09QVElPTlNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8YXBwLXJlcXVlc3Qtc2lnbmFscy1tYW5hZ2VyLWRlbW8+PC9hcHAtcmVxdWVzdC1zaWduYWxzLW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc3RhdGVfc2VydmljZSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItc3RhdGUtZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItc3RhdGUtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2h0dHBfc3RhdGVfc2VydmljZV93cydcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiSFRUUF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1yZXF1ZXN0LW1hbmFnZXItd3MtZGVtbz48L2FwcC1yZXF1ZXN0LW1hbmFnZXItd3MtZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGFiYXNlX3NlcnZpY2UnXCI+XG4gICAgPGFwcC1kYXRhYmFzZS1kYXRhLWRlbW8+PC9hcHAtZGF0YWJhc2UtZGF0YS1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInbG9jYWxfc3RvcmFnZV9zZXJ2aWNlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJMT0NBTF9PUFRJT05TXCI+PC9uZy1jb250YWluZXI+XG4gICAgPGFwcC1sb2NhbC1zdG9yYWdlLWRlbW8+PC9hcHAtbG9jYWwtc3RvcmFnZS1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInbG9jYWxfc3RvcmFnZV9zaWduYWxzX3NlcnZpY2UnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIkxPQ0FMX09QVElPTlNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8YXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vPjwvYXBwLWxvY2FsLXN0b3JhZ2Utc2lnbmFscy1kZW1vPlxuICA8L3A+XG4gIDxwICpuZ1N3aXRjaENhc2U9XCInc3RvcmVfc3RhdGVfbWFuYWdlcidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiTE9DQUxfT1BUSU9OU1wiPjwvbmctY29udGFpbmVyPlxuICAgIDxhcHAtc3RvcmUtc3RhdGUtbWFuYWdlci1kZW1vPjwvYXBwLXN0b3JlLXN0YXRlLW1hbmFnZXItZGVtbz5cbiAgPC9wPlxuICA8cCAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgIE90aGVyXG4gIDwvcD5cbjwvc3Bhbj5cblxuPG5nLXRlbXBsYXRlICNIVFRQX09QVElPTlM+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5odHRwUmVxdWVzdE9wdGlvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYm94XCI+XG4gICAgICA8aDMgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZDtcIj5JbmplY3Rpb24gVG9rZW4gRGV0ZWN0ZWQgLSBIVFRQIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uaHR0cFJlcXVlc3RPcHRpb25zfCBqc29uIH19XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNMT0NBTF9PUFRJT05TPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwiYm94XCIgKm5nSWY9XCJpbmplY3Rpb25PcHRpb25zPy5Mb2NhbFN0b3JhZ2VPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGgzIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCI+SW5qZWN0aW9uIFRva2VuIERldGVjdGVkIC0gTG9jYWxTdG9yYWdlIE9wdGlvbnM8L2gzPlxuICAgICAge3sgaW5qZWN0aW9uT3B0aW9ucz8uTG9jYWxTdG9yYWdlT3B0aW9uc3wganNvbiB9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cblxuIl19