wacom 18.2.2 → 18.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/esm2022/lib/components/alert/alert.component.mjs +3 -3
  2. package/esm2022/lib/components/alert/wrapper/wrapper.component.mjs +3 -3
  3. package/esm2022/lib/components/files/files.component.mjs +3 -3
  4. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  5. package/esm2022/lib/components/modal/modal.component.mjs +3 -3
  6. package/esm2022/lib/directives/click-outside.directive.mjs +3 -3
  7. package/esm2022/lib/guard/meta.guard.mjs +3 -3
  8. package/esm2022/lib/pipes/arr.pipe.mjs +3 -3
  9. package/esm2022/lib/pipes/mongodate.pipe.mjs +3 -3
  10. package/esm2022/lib/pipes/pagination.pipe.mjs +3 -3
  11. package/esm2022/lib/pipes/safe.pipe.mjs +3 -3
  12. package/esm2022/lib/pipes/search.pipe.mjs +3 -3
  13. package/esm2022/lib/pipes/splice.pipe.mjs +3 -3
  14. package/esm2022/lib/services/alert.service.mjs +3 -3
  15. package/esm2022/lib/services/base.service.mjs +3 -3
  16. package/esm2022/lib/services/core.service.mjs +3 -3
  17. package/esm2022/lib/services/dom.service.mjs +3 -3
  18. package/esm2022/lib/services/file.service.mjs +3 -3
  19. package/esm2022/lib/services/hash.service.mjs +3 -3
  20. package/esm2022/lib/services/http.service.mjs +84 -18
  21. package/esm2022/lib/services/loader.service.mjs +3 -3
  22. package/esm2022/lib/services/meta.service.mjs +3 -3
  23. package/esm2022/lib/services/modal.service.mjs +3 -3
  24. package/esm2022/lib/services/mongo.service.mjs +3 -3
  25. package/esm2022/lib/services/render.service.mjs +3 -3
  26. package/esm2022/lib/services/socket.service.mjs +3 -3
  27. package/esm2022/lib/services/store.service.mjs +3 -3
  28. package/esm2022/lib/services/time.service.mjs +3 -3
  29. package/esm2022/lib/services/ui.service.mjs +3 -3
  30. package/esm2022/lib/wacom.module.mjs +5 -5
  31. package/fesm2022/wacom.mjs +171 -105
  32. package/fesm2022/wacom.mjs.map +1 -1
  33. package/lib/services/http.service.d.ts +38 -0
  34. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { Injectable, Inject, Optional } from '@angular/core';
2
2
  import { CONFIG_TOKEN } from '../interfaces/config';
3
3
  import { HttpHeaders } from '@angular/common/http';
4
- import { EMPTY, Subject } from 'rxjs';
4
+ import { EMPTY, Observable, ReplaySubject } from 'rxjs';
5
5
  import { catchError, first } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./store.service";
@@ -10,17 +10,25 @@ export class HttpService {
10
10
  store;
11
11
  http;
12
12
  _config;
13
+ // An array of error handling callbacks
13
14
  errors = [];
15
+ // Base URL for HTTP requests
14
16
  url = '';
17
+ // Flag to lock the service to prevent multiple requests
15
18
  locked = false;
19
+ // Array to store setTimeout IDs for managing request locks
16
20
  awaitLocked = [];
21
+ // Configuration object for HTTP settings
17
22
  _http;
23
+ // Object to store HTTP headers
18
24
  _headers = {};
25
+ // Instance of HttpHeaders with current headers
19
26
  _http_headers = new HttpHeaders(this._headers);
20
27
  constructor(store, http, _config) {
21
28
  this.store = store;
22
29
  this.http = http;
23
30
  this._config = _config;
31
+ // Initialize HTTP configuration and headers from injected config
24
32
  this._http = this._config.http || {};
25
33
  if (typeof this._http.headers === 'object') {
26
34
  for (const header in this._http.headers) {
@@ -28,6 +36,7 @@ export class HttpService {
28
36
  }
29
37
  this._http_headers = new HttpHeaders(this._headers);
30
38
  }
39
+ // Retrieve and set the base URL and headers from the store
31
40
  this.store.get('http_url', (url) => {
32
41
  this.url = url || this._http.url || '';
33
42
  });
@@ -40,27 +49,33 @@ export class HttpService {
40
49
  }
41
50
  });
42
51
  }
52
+ // Set a new base URL and save it in the store
43
53
  setUrl(url) {
44
54
  this.url = url;
45
55
  this.store.set('http_url', url);
46
56
  }
57
+ // Remove the base URL and revert to the default or stored one
47
58
  removeUrl() {
48
59
  this.url = this._http.url || '';
49
60
  this.store.remove('http_url');
50
61
  }
62
+ // Set a new HTTP header and update the stored headers
51
63
  set(key, value) {
52
64
  this._headers[key] = value;
53
65
  this.store.setJson('http_headers', this._headers);
54
66
  this._http_headers = new HttpHeaders(this._headers);
55
67
  }
68
+ // Get the value of a specific HTTP header
56
69
  header(key) {
57
70
  return this._headers[key];
58
71
  }
72
+ // Remove a specific HTTP header and update the stored headers
59
73
  remove(key) {
60
74
  delete this._headers[key];
61
75
  this._http_headers = new HttpHeaders(this._headers);
62
76
  this.store.setJson('http_headers', this._headers);
63
77
  }
78
+ // Internal method to make HTTP requests based on the method type
64
79
  _httpMethod(method, _url, doc, headers) {
65
80
  if (method === 'post') {
66
81
  return this.http.post(_url, doc, headers);
@@ -78,6 +93,12 @@ export class HttpService {
78
93
  return this.http.get(_url, headers);
79
94
  }
80
95
  }
96
+ /**
97
+ * Internal method to handle HTTP POST requests.
98
+ * - Manages request locking to prevent simultaneous requests.
99
+ * - Returns an Observable that emits the HTTP response.
100
+ * - Supports callback functions for legacy code.
101
+ */
81
102
  _post(url, doc, callback = (resp) => { }, opts = {}, method = 'post') {
82
103
  if (typeof opts === 'function') {
83
104
  opts = { err: opts };
@@ -85,57 +106,97 @@ export class HttpService {
85
106
  if (!opts.err) {
86
107
  opts.err = (err) => { };
87
108
  }
109
+ // Handle request locking to avoid multiple simultaneous requests
88
110
  if (this.locked && !opts.skipLock) {
89
- const wait = setTimeout(() => {
90
- this._post(url, doc, callback, opts, method);
91
- }, 100);
92
- this.awaitLocked.push(wait);
93
- return new Subject().asObservable();
111
+ return new Observable(observer => {
112
+ const wait = setTimeout(() => {
113
+ this._post(url, doc, callback, opts, method).subscribe(observer);
114
+ }, 100);
115
+ this.awaitLocked.push(wait);
116
+ });
94
117
  }
95
118
  const _url = (opts.url || this.url) + url;
96
119
  this.prepare_handle(_url, doc);
97
- const observable = this._httpMethod(method, _url, doc, { headers: this._http_headers });
98
- observable
120
+ // Using ReplaySubject to allow multiple subscriptions without re-triggering the HTTP request
121
+ const responseSubject = new ReplaySubject(1);
122
+ this._httpMethod(method, _url, doc, { headers: this._http_headers })
99
123
  .pipe(first(), catchError((error) => {
100
124
  this.handleError(opts.err, () => {
101
- this._post(url, doc, callback, opts, method);
125
+ this._post(url, doc, callback, opts, method).subscribe(responseSubject);
102
126
  })(error);
127
+ responseSubject.error(error);
103
128
  return EMPTY;
104
129
  }))
105
- .subscribe((resp) => {
106
- this.response_handle(_url, resp, () => {
107
- callback(resp);
108
- });
130
+ .subscribe({
131
+ next: (resp) => {
132
+ this.response_handle(_url, resp, () => callback(resp));
133
+ responseSubject.next(resp);
134
+ responseSubject.complete();
135
+ },
136
+ error: (err) => responseSubject.error(err),
137
+ complete: () => responseSubject.complete(),
109
138
  });
110
- return observable;
139
+ return responseSubject.asObservable();
111
140
  }
141
+ /**
142
+ * Public method to perform a POST request.
143
+ * - Supports legacy callback usage.
144
+ * - Returns an Observable for reactive programming.
145
+ */
112
146
  post(url, doc, callback = (resp) => { }, opts = {}) {
113
147
  return this._post(url, doc, callback, opts);
114
148
  }
149
+ /**
150
+ * Public method to perform a PUT request.
151
+ * - Supports legacy callback usage.
152
+ * - Returns an Observable for reactive programming.
153
+ */
115
154
  put(url, doc, callback = (resp) => { }, opts = {}) {
116
155
  return this._post(url, doc, callback, opts, 'put');
117
156
  }
157
+ /**
158
+ * Public method to perform a PATCH request.
159
+ * - Supports legacy callback usage.
160
+ * - Returns an Observable for reactive programming.
161
+ */
118
162
  patch(url, doc, callback = (resp) => { }, opts = {}) {
119
163
  return this._post(url, doc, callback, opts, 'patch');
120
164
  }
165
+ /**
166
+ * Public method to perform a DELETE request.
167
+ * - Supports legacy callback usage.
168
+ * - Returns an Observable for reactive programming.
169
+ */
121
170
  delete(url, callback = (resp) => { }, opts = {}) {
122
171
  return this._post(url, null, callback, opts, 'delete');
123
172
  }
173
+ /**
174
+ * Public method to perform a GET request.
175
+ * - Supports legacy callback usage.
176
+ * - Returns an Observable for reactive programming.
177
+ */
124
178
  get(url, callback = (resp) => { }, opts = {}) {
125
179
  return this._post(url, null, callback, opts, 'get');
126
180
  }
181
+ // Clear all pending request locks
127
182
  clearLocked() {
128
183
  for (const awaitLocked of this.awaitLocked) {
129
184
  clearTimeout(awaitLocked);
130
185
  }
131
186
  this.awaitLocked = [];
132
187
  }
188
+ // Lock the service to prevent multiple simultaneous requests
133
189
  lock() {
134
190
  this.locked = true;
135
191
  }
192
+ // Unlock the service to allow new requests
136
193
  unlock() {
137
194
  this.locked = false;
138
195
  }
196
+ /**
197
+ * Handles HTTP errors.
198
+ * - Calls provided error callback and retries the request if needed.
199
+ */
139
200
  handleError(callback, retry) {
140
201
  return (error) => {
141
202
  return new Promise((resolve) => {
@@ -144,6 +205,9 @@ export class HttpService {
144
205
  });
145
206
  };
146
207
  }
208
+ /**
209
+ * Internal method to trigger error handling callbacks.
210
+ */
147
211
  err_handle(err, next, retry) {
148
212
  if (typeof next === 'function') {
149
213
  next(err);
@@ -154,16 +218,18 @@ export class HttpService {
154
218
  }
155
219
  }
156
220
  }
221
+ // Placeholder method for handling request preparation (can be customized)
157
222
  prepare_handle(url, body) { }
223
+ // Placeholder method for handling the response (can be customized)
158
224
  response_handle(url, body, next) {
159
225
  if (typeof next === 'function') {
160
226
  next();
161
227
  }
162
228
  }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
164
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, providedIn: 'root' });
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: HttpService, deps: [{ token: i1.StoreService }, { token: i2.HttpClient }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
230
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: HttpService, providedIn: 'root' });
165
231
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: HttpService, decorators: [{
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: HttpService, decorators: [{
167
233
  type: Injectable,
168
234
  args: [{
169
235
  providedIn: 'root',
@@ -174,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
174
240
  }, {
175
241
  type: Optional
176
242
  }] }] });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFVZDtJQUNBO0lBQ2tDO0lBWDNDLE1BQU0sR0FBMkQsRUFBRSxDQUFDO0lBQ3BFLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDVCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUNoQixLQUFLLENBQU07SUFDWCxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdkQsWUFDUyxLQUFtQixFQUNuQixJQUFnQixFQUNrQixPQUFlO1FBRmpELFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNrQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRXpELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxLQUFL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LE1BQU07aUJBQ2xCOzswQkFhRSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuXHRlcnJvcnM6ICgoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgcmV0cnk/OiAoKSA9PiB2b2lkKSA9PiB7fSlbXSA9IFtdO1xyXG5cdHVybCA9ICcnO1xyXG5cdGxvY2tlZCA9IGZhbHNlO1xyXG5cdGF3YWl0TG9ja2VkOiBhbnlbXSA9IFtdO1xyXG5cdHByaXZhdGUgX2h0dHA6IGFueTtcclxuXHRwcml2YXRlIF9oZWFkZXJzOiBhbnkgPSB7fTtcclxuXHRwcml2YXRlIF9odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5faGVhZGVycyk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBzdG9yZTogU3RvcmVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbmZpZzogQ29uZmlnXHJcblx0KSB7XHJcblx0XHR0aGlzLl9odHRwID0gdGhpcy5fY29uZmlnLmh0dHAgfHwge307XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB0aGlzLl9odHRwLmhlYWRlcnMgPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdGZvciAoY29uc3QgaGVhZGVyIGluIHRoaXMuX2h0dHAuaGVhZGVycykge1xyXG5cdFx0XHRcdHRoaXMuX2hlYWRlcnNbaGVhZGVyXSA9IHRoaXMuX2h0dHAuaGVhZGVyc1toZWFkZXJdO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLnN0b3JlLmdldCgnaHR0cF91cmwnLCAodXJsOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy51cmwgPSB1cmwgfHwgdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnN0b3JlLmdldEpzb24oJ2h0dHBfaGVhZGVycycsIChoZWFkZXJzOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGhlYWRlcnMpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiBoZWFkZXJzKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9oZWFkZXJzW2hlYWRlcl0gPSBoZWFkZXJzW2hlYWRlcl07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRzZXRVcmwodXJsOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMudXJsID0gdXJsO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXQoJ2h0dHBfdXJsJywgdXJsKTtcclxuXHR9XHJcblxyXG5cdHJlbW92ZVVybCgpIHtcclxuXHRcdHRoaXMudXJsID0gdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR0aGlzLnN0b3JlLnJlbW92ZSgnaHR0cF91cmwnKTtcclxuXHR9XHJcblxyXG5cdHNldChrZXk6IGFueSwgdmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5faGVhZGVyc1trZXldID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdH1cclxuXHJcblx0aGVhZGVyKGtleTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5faGVhZGVyc1trZXldO1xyXG5cdH1cclxuXHJcblx0cmVtb3ZlKGtleTogYW55KSB7XHJcblx0XHRkZWxldGUgdGhpcy5faGVhZGVyc1trZXldO1xyXG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLl9oZWFkZXJzKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgX2h0dHBNZXRob2QobWV0aG9kOiBzdHJpbmcsIF91cmw6IHN0cmluZywgZG9jOiB1bmtub3duLCBoZWFkZXJzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKG1ldGhvZCA9PT0gJ3Bvc3QnKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KF91cmwsIGRvYywgaGVhZGVycyk7XHJcblx0XHR9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ3B1dCcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xyXG5cdFx0fSBlbHNlIGlmIChtZXRob2QgPT09ICdwYXRjaCcpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxhbnk+KF91cmwsIGRvYywgaGVhZGVycyk7XHJcblx0XHR9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ2RlbGV0ZScpIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8YW55PihfdXJsLCBoZWFkZXJzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oX3VybCwgaGVhZGVycyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9wb3N0KFxyXG5cdFx0dXJsOiBzdHJpbmcsXHJcblx0XHRkb2M6IHVua25vd24sXHJcblx0XHRjYWxsYmFjayA9IChyZXNwOiB1bmtub3duKSA9PiB7IH0sXHJcblx0XHRvcHRzOiBhbnkgPSB7fSxcclxuXHRcdG1ldGhvZCA9ICdwb3N0J1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0b3B0cyA9IHsgZXJyOiBvcHRzIH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFvcHRzLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMubG9ja2VkICYmICFvcHRzLnNraXBMb2NrKSB7XHJcblx0XHRcdGNvbnN0IHdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgbWV0aG9kKTtcclxuXHRcdFx0fSwgMTAwKTtcclxuXHJcblx0XHRcdHRoaXMuYXdhaXRMb2NrZWQucHVzaCh3YWl0KTtcclxuXHRcdFx0cmV0dXJuIG5ldyBTdWJqZWN0KCkuYXNPYnNlcnZhYmxlKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgX3VybCA9IChvcHRzLnVybCB8fCB0aGlzLnVybCkgKyB1cmw7XHJcblxyXG5cdFx0dGhpcy5wcmVwYXJlX2hhbmRsZShfdXJsLCBkb2MpO1xyXG5cclxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLl9odHRwTWV0aG9kKG1ldGhvZCwgX3VybCwgZG9jLCB7IGhlYWRlcnM6IHRoaXMuX2h0dHBfaGVhZGVycyB9KTtcclxuXHJcblx0XHRvYnNlcnZhYmxlXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGZpcnN0KCksXHJcblx0XHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyLCAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzLCBtZXRob2QpO1xyXG5cdFx0XHRcdFx0fSkoZXJyb3IpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIEVNUFRZO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdHRoaXMucmVzcG9uc2VfaGFuZGxlKF91cmwsIHJlc3AsICgpID0+IHtcclxuXHRcdFx0XHRcdGNhbGxiYWNrKHJlc3ApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gb2JzZXJ2YWJsZTtcclxuXHR9XHJcblxyXG5cdHBvc3QodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHR9XHJcblxyXG5cdHB1dCh1cmw6IHN0cmluZywgZG9jOiBhbnksIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMsICdwdXQnKTtcclxuXHR9XHJcblxyXG5cdHBhdGNoKHVybDogc3RyaW5nLCBkb2M6IGFueSwgY2FsbGJhY2sgPSAocmVzcDogYW55KSA9PiB7IH0sIG9wdHM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgJ3BhdGNoJyk7XHJcblx0fVxyXG5cclxuXHRkZWxldGUodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZGVsZXRlJyk7XHJcblx0fVxyXG5cclxuXHRnZXQodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZ2V0Jyk7XHJcblx0fVxyXG5cclxuXHRjbGVhckxvY2tlZCgpIHtcclxuXHRcdGZvciAoY29uc3QgYXdhaXRMb2NrZWQgb2YgdGhpcy5hd2FpdExvY2tlZCkge1xyXG5cdFx0XHRjbGVhclRpbWVvdXQoYXdhaXRMb2NrZWQpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5hd2FpdExvY2tlZCA9IFtdO1xyXG5cdH1cclxuXHJcblx0bG9jaygpIHtcclxuXHRcdHRoaXMubG9ja2VkID0gdHJ1ZTtcclxuXHR9XHJcblxyXG5cdHVubG9jaygpIHtcclxuXHRcdHRoaXMubG9ja2VkID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZUVycm9yKGNhbGxiYWNrOiBhbnksIHJldHJ5OiAoKSA9PiB2b2lkKSB7XHJcblx0XHRyZXR1cm4gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0XHR0aGlzLmVycl9oYW5kbGUoZXJyb3IsIGNhbGxiYWNrLCByZXRyeSk7XHJcblx0XHRcdFx0cmVzb2x2ZSgpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGVycl9oYW5kbGUoXHJcblx0XHRlcnI6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG5cdFx0bmV4dDogKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsXHJcblx0XHRyZXRyeTogKCkgPT4gdm9pZFxyXG5cdCkge1xyXG5cdFx0aWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdG5leHQoZXJyKTtcclxuXHRcdH1cclxuXHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuZXJyb3JzKSB7XHJcblx0XHRcdGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHRjYWxsYmFjayhlcnIsIHJldHJ5KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBwcmVwYXJlX2hhbmRsZSh1cmw6IHN0cmluZywgYm9keTogdW5rbm93bikgeyB9XHJcblxyXG5cdHByaXZhdGUgcmVzcG9uc2VfaGFuZGxlKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duLCBuZXh0OiAoKSA9PiB2b2lkKSB7XHJcblx0XHRpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0bmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTW5ELE1BQU0sT0FBTyxXQUFXO0lBdUJkO0lBQ0E7SUFDa0M7SUF4QjNDLHVDQUF1QztJQUN2QyxNQUFNLEdBQTJELEVBQUUsQ0FBQztJQUVwRSw2QkFBNkI7SUFDN0IsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVULHdEQUF3RDtJQUN4RCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRWYsMkRBQTJEO0lBQzNELFdBQVcsR0FBVSxFQUFFLENBQUM7SUFFeEIseUNBQXlDO0lBQ2pDLEtBQUssQ0FBTTtJQUVuQiwrQkFBK0I7SUFDdkIsUUFBUSxHQUFRLEVBQUUsQ0FBQztJQUUzQiwrQ0FBK0M7SUFDdkMsYUFBYSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2RCxZQUNTLEtBQW1CLEVBQ25CLElBQWdCLEVBQ2tCLE9BQWU7UUFGakQsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2tCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFFekQsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxLQUFL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SUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssVUFBVSxDQUNqQixHQUFzQixFQUN0QixJQUFzQyxFQUN0QyxLQUFpQjtRQUVqQixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELDBFQUEwRTtJQUNsRSxjQUFjLENBQUMsR0FBVyxFQUFFLElBQWEsSUFBSSxDQUFDO0lBRXRELG1FQUFtRTtJQUMzRCxlQUFlLENBQUMsR0FBVyxFQUFFLElBQWEsRUFBRSxJQUFnQjtRQUNuRSxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksRUFBRSxDQUFDO1FBQ1IsQ0FBQztJQUNGLENBQUM7dUdBdFFXLFdBQVcsd0VBeUJkLFlBQVk7MkdBekJULFdBQVcsY0FGWCxNQUFNOzsyRkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBMEJFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ09ORklHX1RPS0VOLCBDb25maWcgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcblx0cHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xyXG5cdC8vIEFuIGFycmF5IG9mIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrc1xyXG5cdGVycm9yczogKChlcnI6IEh0dHBFcnJvclJlc3BvbnNlLCByZXRyeT86ICgpID0+IHZvaWQpID0+IHt9KVtdID0gW107XHJcblxyXG5cdC8vIEJhc2UgVVJMIGZvciBIVFRQIHJlcXVlc3RzXHJcblx0dXJsID0gJyc7XHJcblxyXG5cdC8vIEZsYWcgdG8gbG9jayB0aGUgc2VydmljZSB0byBwcmV2ZW50IG11bHRpcGxlIHJlcXVlc3RzXHJcblx0bG9ja2VkID0gZmFsc2U7XHJcblxyXG5cdC8vIEFycmF5IHRvIHN0b3JlIHNldFRpbWVvdXQgSURzIGZvciBtYW5hZ2luZyByZXF1ZXN0IGxvY2tzXHJcblx0YXdhaXRMb2NrZWQ6IGFueVtdID0gW107XHJcblxyXG5cdC8vIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBIVFRQIHNldHRpbmdzXHJcblx0cHJpdmF0ZSBfaHR0cDogYW55O1xyXG5cclxuXHQvLyBPYmplY3QgdG8gc3RvcmUgSFRUUCBoZWFkZXJzXHJcblx0cHJpdmF0ZSBfaGVhZGVyczogYW55ID0ge307XHJcblxyXG5cdC8vIEluc3RhbmNlIG9mIEh0dHBIZWFkZXJzIHdpdGggY3VycmVudCBoZWFkZXJzXHJcblx0cHJpdmF0ZSBfaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdEBJbmplY3QoQ09ORklHX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIF9jb25maWc6IENvbmZpZ1xyXG5cdCkge1xyXG5cdFx0Ly8gSW5pdGlhbGl6ZSBIVFRQIGNvbmZpZ3VyYXRpb24gYW5kIGhlYWRlcnMgZnJvbSBpbmplY3RlZCBjb25maWdcclxuXHRcdHRoaXMuX2h0dHAgPSB0aGlzLl9jb25maWcuaHR0cCB8fCB7fTtcclxuXHJcblx0XHRpZiAodHlwZW9mIHRoaXMuX2h0dHAuaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0Zm9yIChjb25zdCBoZWFkZXIgaW4gdGhpcy5faHR0cC5oZWFkZXJzKSB7XHJcblx0XHRcdFx0dGhpcy5faGVhZGVyc1toZWFkZXJdID0gdGhpcy5faHR0cC5oZWFkZXJzW2hlYWRlcl07XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFJldHJpZXZlIGFuZCBzZXQgdGhlIGJhc2UgVVJMIGFuZCBoZWFkZXJzIGZyb20gdGhlIHN0b3JlXHJcblx0XHR0aGlzLnN0b3JlLmdldCgnaHR0cF91cmwnLCAodXJsOiBhbnkpID0+IHtcclxuXHRcdFx0dGhpcy51cmwgPSB1cmwgfHwgdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnN0b3JlLmdldEpzb24oJ2h0dHBfaGVhZGVycycsIChoZWFkZXJzOiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKGhlYWRlcnMpIHtcclxuXHRcdFx0XHRmb3IgKGNvbnN0IGhlYWRlciBpbiBoZWFkZXJzKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9oZWFkZXJzW2hlYWRlcl0gPSBoZWFkZXJzW2hlYWRlcl07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHRoaXMuX2h0dHBfaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh0aGlzLl9oZWFkZXJzKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvLyBTZXQgYSBuZXcgYmFzZSBVUkwgYW5kIHNhdmUgaXQgaW4gdGhlIHN0b3JlXHJcblx0c2V0VXJsKHVybDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVybCA9IHVybDtcclxuXHRcdHRoaXMuc3RvcmUuc2V0KCdodHRwX3VybCcsIHVybCk7XHJcblx0fVxyXG5cclxuXHQvLyBSZW1vdmUgdGhlIGJhc2UgVVJMIGFuZCByZXZlcnQgdG8gdGhlIGRlZmF1bHQgb3Igc3RvcmVkIG9uZVxyXG5cdHJlbW92ZVVybCgpIHtcclxuXHRcdHRoaXMudXJsID0gdGhpcy5faHR0cC51cmwgfHwgJyc7XHJcblx0XHR0aGlzLnN0b3JlLnJlbW92ZSgnaHR0cF91cmwnKTtcclxuXHR9XHJcblxyXG5cdC8vIFNldCBhIG5ldyBIVFRQIGhlYWRlciBhbmQgdXBkYXRlIHRoZSBzdG9yZWQgaGVhZGVyc1xyXG5cdHNldChrZXk6IGFueSwgdmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy5faGVhZGVyc1trZXldID0gdmFsdWU7XHJcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuX2hlYWRlcnMpO1xyXG5cdFx0dGhpcy5faHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuX2hlYWRlcnMpO1xyXG5cdH1cclxuXHJcblx0Ly8gR2V0IHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEhUVFAgaGVhZGVyXHJcblx0aGVhZGVyKGtleTogYW55KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5faGVhZGVyc1trZXldO1xyXG5cdH1cclxuXHJcblx0Ly8gUmVtb3ZlIGEgc3BlY2lmaWMgSFRUUCBoZWFkZXIgYW5kIHVwZGF0ZSB0aGUgc3RvcmVkIGhlYWRlcnNcclxuXHRyZW1vdmUoa2V5OiBhbnkpIHtcclxuXHRcdGRlbGV0ZSB0aGlzLl9oZWFkZXJzW2tleV07XHJcblx0XHR0aGlzLl9odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5faGVhZGVycyk7XHJcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuX2hlYWRlcnMpO1xyXG5cdH1cclxuXHJcblx0Ly8gSW50ZXJuYWwgbWV0aG9kIHRvIG1ha2UgSFRUUCByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgbWV0aG9kIHR5cGVcclxuXHRwcml2YXRlIF9odHRwTWV0aG9kKG1ldGhvZDogc3RyaW5nLCBfdXJsOiBzdHJpbmcsIGRvYzogdW5rbm93biwgaGVhZGVyczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGlmIChtZXRob2QgPT09ICdwb3N0Jykge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xyXG5cdFx0fSBlbHNlIGlmIChtZXRob2QgPT09ICdwdXQnKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAucHV0PGFueT4oX3VybCwgZG9jLCBoZWFkZXJzKTtcclxuXHRcdH0gZWxzZSBpZiAobWV0aG9kID09PSAncGF0Y2gnKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAucGF0Y2g8YW55PihfdXJsLCBkb2MsIGhlYWRlcnMpO1xyXG5cdFx0fSBlbHNlIGlmIChtZXRob2QgPT09ICdkZWxldGUnKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPGFueT4oX3VybCwgaGVhZGVycyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KF91cmwsIGhlYWRlcnMpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW50ZXJuYWwgbWV0aG9kIHRvIGhhbmRsZSBIVFRQIFBPU1QgcmVxdWVzdHMuXHJcblx0ICogLSBNYW5hZ2VzIHJlcXVlc3QgbG9ja2luZyB0byBwcmV2ZW50IHNpbXVsdGFuZW91cyByZXF1ZXN0cy5cclxuXHQgKiAtIFJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBIVFRQIHJlc3BvbnNlLlxyXG5cdCAqIC0gU3VwcG9ydHMgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciBsZWdhY3kgY29kZS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9wb3N0KFxyXG5cdFx0dXJsOiBzdHJpbmcsXHJcblx0XHRkb2M6IHVua25vd24sXHJcblx0XHRjYWxsYmFjayA9IChyZXNwOiB1bmtub3duKSA9PiB7IH0sXHJcblx0XHRvcHRzOiBhbnkgPSB7fSxcclxuXHRcdG1ldGhvZCA9ICdwb3N0J1xyXG5cdCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0b3B0cyA9IHsgZXJyOiBvcHRzIH07XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFvcHRzLmVycikge1xyXG5cdFx0XHRvcHRzLmVyciA9IChlcnI6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7IH07XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gSGFuZGxlIHJlcXVlc3QgbG9ja2luZyB0byBhdm9pZCBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHNcclxuXHRcdGlmICh0aGlzLmxvY2tlZCAmJiAhb3B0cy5za2lwTG9jaykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHdhaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzLCBtZXRob2QpLnN1YnNjcmliZShvYnNlcnZlcik7XHJcblx0XHRcdFx0fSwgMTAwKTtcclxuXHRcdFx0XHR0aGlzLmF3YWl0TG9ja2VkLnB1c2god2FpdCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IF91cmwgPSAob3B0cy51cmwgfHwgdGhpcy51cmwpICsgdXJsO1xyXG5cdFx0dGhpcy5wcmVwYXJlX2hhbmRsZShfdXJsLCBkb2MpO1xyXG5cclxuXHRcdC8vIFVzaW5nIFJlcGxheVN1YmplY3QgdG8gYWxsb3cgbXVsdGlwbGUgc3Vic2NyaXB0aW9ucyB3aXRob3V0IHJlLXRyaWdnZXJpbmcgdGhlIEhUVFAgcmVxdWVzdFxyXG5cdFx0Y29uc3QgcmVzcG9uc2VTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcclxuXHJcblx0XHR0aGlzLl9odHRwTWV0aG9kKG1ldGhvZCwgX3VybCwgZG9jLCB7IGhlYWRlcnM6IHRoaXMuX2h0dHBfaGVhZGVycyB9KVxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRmaXJzdCgpLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVFcnJvcihvcHRzLmVyciwgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLl9wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cywgbWV0aG9kKS5zdWJzY3JpYmUocmVzcG9uc2VTdWJqZWN0KTtcclxuXHRcdFx0XHRcdH0pKGVycm9yKTtcclxuXHRcdFx0XHRcdHJlc3BvbnNlU3ViamVjdC5lcnJvcihlcnJvcik7XHJcblx0XHRcdFx0XHRyZXR1cm4gRU1QVFk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRuZXh0OiAocmVzcDogdW5rbm93bikgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5yZXNwb25zZV9oYW5kbGUoX3VybCwgcmVzcCwgKCkgPT4gY2FsbGJhY2socmVzcCkpO1xyXG5cdFx0XHRcdFx0cmVzcG9uc2VTdWJqZWN0Lm5leHQocmVzcCk7XHJcblx0XHRcdFx0XHRyZXNwb25zZVN1YmplY3QuY29tcGxldGUoKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiByZXNwb25zZVN1YmplY3QuZXJyb3IoZXJyKSxcclxuXHRcdFx0XHRjb21wbGV0ZTogKCkgPT4gcmVzcG9uc2VTdWJqZWN0LmNvbXBsZXRlKCksXHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiByZXNwb25zZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQdWJsaWMgbWV0aG9kIHRvIHBlcmZvcm0gYSBQT1NUIHJlcXVlc3QuXHJcblx0ICogLSBTdXBwb3J0cyBsZWdhY3kgY2FsbGJhY2sgdXNhZ2UuXHJcblx0ICogLSBSZXR1cm5zIGFuIE9ic2VydmFibGUgZm9yIHJlYWN0aXZlIHByb2dyYW1taW5nLlxyXG5cdCAqL1xyXG5cdHBvc3QodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFB1YmxpYyBtZXRob2QgdG8gcGVyZm9ybSBhIFBVVCByZXF1ZXN0LlxyXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxyXG5cdCAqIC0gUmV0dXJucyBhbiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBwcm9ncmFtbWluZy5cclxuXHQgKi9cclxuXHRwdXQodXJsOiBzdHJpbmcsIGRvYzogYW55LCBjYWxsYmFjayA9IChyZXNwOiBhbnkpID0+IHsgfSwgb3B0czogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3Bvc3QodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzLCAncHV0Jyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQdWJsaWMgbWV0aG9kIHRvIHBlcmZvcm0gYSBQQVRDSCByZXF1ZXN0LlxyXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxyXG5cdCAqIC0gUmV0dXJucyBhbiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBwcm9ncmFtbWluZy5cclxuXHQgKi9cclxuXHRwYXRjaCh1cmw6IHN0cmluZywgZG9jOiBhbnksIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMsICdwYXRjaCcpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHVibGljIG1ldGhvZCB0byBwZXJmb3JtIGEgREVMRVRFIHJlcXVlc3QuXHJcblx0ICogLSBTdXBwb3J0cyBsZWdhY3kgY2FsbGJhY2sgdXNhZ2UuXHJcblx0ICogLSBSZXR1cm5zIGFuIE9ic2VydmFibGUgZm9yIHJlYWN0aXZlIHByb2dyYW1taW5nLlxyXG5cdCAqL1xyXG5cdGRlbGV0ZSh1cmw6IHN0cmluZywgY2FsbGJhY2sgPSAocmVzcDogYW55KSA9PiB7IH0sIG9wdHM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLl9wb3N0KHVybCwgbnVsbCwgY2FsbGJhY2ssIG9wdHMsICdkZWxldGUnKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFB1YmxpYyBtZXRob2QgdG8gcGVyZm9ybSBhIEdFVCByZXF1ZXN0LlxyXG5cdCAqIC0gU3VwcG9ydHMgbGVnYWN5IGNhbGxiYWNrIHVzYWdlLlxyXG5cdCAqIC0gUmV0dXJucyBhbiBPYnNlcnZhYmxlIGZvciByZWFjdGl2ZSBwcm9ncmFtbWluZy5cclxuXHQgKi9cclxuXHRnZXQodXJsOiBzdHJpbmcsIGNhbGxiYWNrID0gKHJlc3A6IGFueSkgPT4geyB9LCBvcHRzOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcG9zdCh1cmwsIG51bGwsIGNhbGxiYWNrLCBvcHRzLCAnZ2V0Jyk7XHJcblx0fVxyXG5cclxuXHQvLyBDbGVhciBhbGwgcGVuZGluZyByZXF1ZXN0IGxvY2tzXHJcblx0Y2xlYXJMb2NrZWQoKSB7XHJcblx0XHRmb3IgKGNvbnN0IGF3YWl0TG9ja2VkIG9mIHRoaXMuYXdhaXRMb2NrZWQpIHtcclxuXHRcdFx0Y2xlYXJUaW1lb3V0KGF3YWl0TG9ja2VkKTtcclxuXHRcdH1cclxuXHRcdHRoaXMuYXdhaXRMb2NrZWQgPSBbXTtcclxuXHR9XHJcblxyXG5cdC8vIExvY2sgdGhlIHNlcnZpY2UgdG8gcHJldmVudCBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHNcclxuXHRsb2NrKCkge1xyXG5cdFx0dGhpcy5sb2NrZWQgPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0Ly8gVW5sb2NrIHRoZSBzZXJ2aWNlIHRvIGFsbG93IG5ldyByZXF1ZXN0c1xyXG5cdHVubG9jaygpIHtcclxuXHRcdHRoaXMubG9ja2VkID0gZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIEhUVFAgZXJyb3JzLlxyXG5cdCAqIC0gQ2FsbHMgcHJvdmlkZWQgZXJyb3IgY2FsbGJhY2sgYW5kIHJldHJpZXMgdGhlIHJlcXVlc3QgaWYgbmVlZGVkLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgaGFuZGxlRXJyb3IoY2FsbGJhY2s6IGFueSwgcmV0cnk6ICgpID0+IHZvaWQpIHtcclxuXHRcdHJldHVybiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiA9PiB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuZXJyX2hhbmRsZShlcnJvciwgY2FsbGJhY2ssIHJldHJ5KTtcclxuXHRcdFx0XHRyZXNvbHZlKCk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byB0cmlnZ2VyIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIGVycl9oYW5kbGUoXHJcblx0XHRlcnI6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG5cdFx0bmV4dDogKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHZvaWQsXHJcblx0XHRyZXRyeTogKCkgPT4gdm9pZFxyXG5cdCkge1xyXG5cdFx0aWYgKHR5cGVvZiBuZXh0ID09PSAnZnVuY3Rpb24nKSB7XHJcblx0XHRcdG5leHQoZXJyKTtcclxuXHRcdH1cclxuXHJcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMuZXJyb3JzKSB7XHJcblx0XHRcdGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0XHRjYWxsYmFjayhlcnIsIHJldHJ5KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Ly8gUGxhY2Vob2xkZXIgbWV0aG9kIGZvciBoYW5kbGluZyByZXF1ZXN0IHByZXBhcmF0aW9uIChjYW4gYmUgY3VzdG9taXplZClcclxuXHRwcml2YXRlIHByZXBhcmVfaGFuZGxlKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duKSB7IH1cclxuXHJcblx0Ly8gUGxhY2Vob2xkZXIgbWV0aG9kIGZvciBoYW5kbGluZyB0aGUgcmVzcG9uc2UgKGNhbiBiZSBjdXN0b21pemVkKVxyXG5cdHByaXZhdGUgcmVzcG9uc2VfaGFuZGxlKHVybDogc3RyaW5nLCBib2R5OiB1bmtub3duLCBuZXh0OiAoKSA9PiB2b2lkKSB7XHJcblx0XHRpZiAodHlwZW9mIG5leHQgPT09ICdmdW5jdGlvbicpIHtcclxuXHRcdFx0bmV4dCgpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
@@ -35,10 +35,10 @@ export class LoaderService {
35
35
  this.loaders.splice(i, 1);
36
36
  }
37
37
  }
38
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, deps: [{ token: i1.DomService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
39
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, providedIn: 'root' });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: LoaderService, deps: [{ token: i1.DomService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
39
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: LoaderService, providedIn: 'root' });
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: LoaderService, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: LoaderService, decorators: [{
42
42
  type: Injectable,
43
43
  args: [{
44
44
  providedIn: 'root'
@@ -125,10 +125,10 @@ export class MetaService {
125
125
  console.warn(`To disable these warnings, set metaConfig.warnMissingGuard: false in your MetaConfig passed to MetaModule.forRoot()`);
126
126
  }
127
127
  }
128
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, deps: [{ token: i1.Router }, { token: i2.Meta }, { token: i3.CoreService }, { token: i2.Title }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
129
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, providedIn: 'root' });
128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MetaService, deps: [{ token: i1.Router }, { token: i2.Meta }, { token: i3.CoreService }, { token: i2.Title }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
129
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MetaService, providedIn: 'root' });
130
130
  }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MetaService, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MetaService, decorators: [{
132
132
  type: Injectable,
133
133
  args: [{
134
134
  providedIn: 'root',
@@ -117,10 +117,10 @@ export class ModalService {
117
117
  }
118
118
  this.core.document.body.classList.remove("modalOpened");
119
119
  }
120
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: ModalService, deps: [{ token: i1.DomService }, { token: i2.CoreService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
121
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: ModalService, providedIn: 'root' });
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ModalService, deps: [{ token: i1.DomService }, { token: i2.CoreService }, { token: CONFIG_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
121
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ModalService, providedIn: 'root' });
122
122
  }
123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: ModalService, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: ModalService, decorators: [{
124
124
  type: Injectable,
125
125
  args: [{
126
126
  providedIn: 'root'
@@ -961,10 +961,10 @@ export class MongoService {
961
961
  });
962
962
  });
963
963
  }
964
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MongoService, deps: [{ token: i1.StoreService }, { token: i2.HttpService }, { token: i3.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
965
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MongoService, providedIn: 'root' });
964
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MongoService, deps: [{ token: i1.StoreService }, { token: i2.HttpService }, { token: i3.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
965
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MongoService, providedIn: 'root' });
966
966
  }
967
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: MongoService, decorators: [{
967
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: MongoService, decorators: [{
968
968
  type: Injectable,
969
969
  args: [{
970
970
  providedIn: 'root'
@@ -21,10 +21,10 @@ export class RenderService {
21
21
  }
22
22
  }
23
23
  }
24
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: RenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: RenderService, providedIn: 'root' });
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RenderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
25
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RenderService, providedIn: 'root' });
26
26
  }
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: RenderService, decorators: [{
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: RenderService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'
@@ -87,10 +87,10 @@ export class SocketService {
87
87
  }
88
88
  this._io.emit(to, message, room);
89
89
  }
90
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: SocketService, deps: [{ token: CONFIG_TOKEN, optional: true }, { token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
91
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: SocketService, providedIn: 'root' });
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SocketService, deps: [{ token: CONFIG_TOKEN, optional: true }, { token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
91
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SocketService, providedIn: 'root' });
92
92
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: SocketService, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SocketService, decorators: [{
94
94
  type: Injectable,
95
95
  args: [{
96
96
  providedIn: 'root'
@@ -223,10 +223,10 @@ export class StoreService {
223
223
  }
224
224
  return key;
225
225
  }
226
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: StoreService, deps: [{ token: CONFIG_TOKEN, optional: true }, { token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
227
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: StoreService, providedIn: 'root' });
226
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: StoreService, deps: [{ token: CONFIG_TOKEN, optional: true }, { token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
227
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: StoreService, providedIn: 'root' });
228
228
  }
229
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: StoreService, decorators: [{
229
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: StoreService, decorators: [{
230
230
  type: Injectable,
231
231
  args: [{
232
232
  providedIn: 'root'
@@ -160,10 +160,10 @@ export class TimeService {
160
160
  date1.getMonth() === date2.getMonth() &&
161
161
  date1.getDate() === date2.getDate());
162
162
  }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: TimeService, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
164
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: TimeService, providedIn: 'root' });
163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TimeService, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
164
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TimeService, providedIn: 'root' });
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: TimeService, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: TimeService, decorators: [{
167
167
  type: Injectable,
168
168
  args: [{
169
169
  providedIn: 'root'
@@ -185,10 +185,10 @@ export class UiService {
185
185
  }
186
186
  return result;
187
187
  }
188
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: UiService, deps: [{ token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
189
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: UiService, providedIn: 'root' });
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UiService, deps: [{ token: i1.CoreService }], target: i0.ɵɵFactoryTarget.Injectable });
189
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UiService, providedIn: 'root' });
190
190
  }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: UiService, decorators: [{
191
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: UiService, decorators: [{
192
192
  type: Injectable,
193
193
  args: [{
194
194
  providedIn: 'root',
@@ -50,8 +50,8 @@ export class WacomModule {
50
50
  }]
51
51
  };
52
52
  }
53
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: WacomModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
54
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.3", ngImport: i0, type: WacomModule, declarations: [WrapperComponent,
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WacomModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
54
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.4", ngImport: i0, type: WacomModule, declarations: [WrapperComponent,
55
55
  FilesComponent, ArrPipe,
56
56
  SafePipe,
57
57
  SplicePipe,
@@ -67,14 +67,14 @@ export class WacomModule {
67
67
  PaginationPipe, LoaderComponent,
68
68
  ModalComponent,
69
69
  AlertComponent, ClickOutsideDirective] });
70
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: WacomModule, providers: [
70
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WacomModule, providers: [
71
71
  { provide: CONFIG_TOKEN, useValue: DEFAULT_CONFIG },
72
72
  MetaGuard,
73
73
  MetaService,
74
74
  provideHttpClient(withInterceptorsFromDi())
75
75
  ], imports: [CommonModule, FormsModule] });
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: WacomModule, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: WacomModule, decorators: [{
78
78
  type: NgModule,
79
79
  args: [{ declarations: [...LOCAL_COMPONENTS, ...PIPES, ...COMPONENTS, ...DIRECTIVES],
80
80
  exports: [...PIPES, ...COMPONENTS, ...DIRECTIVES], imports: [CommonModule, FormsModule], providers: [
@@ -84,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
84
84
  provideHttpClient(withInterceptorsFromDi())
85
85
  ] }]
86
86
  }] });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fjb20ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi93YWNvbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxZQUFZLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc3RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVekQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUF2QnBFLE1BQU0sVUFBVSxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQVMzQyxNQUFNLEtBQUssR0FBRztJQUNiLE9BQU87SUFDUCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFVBQVU7SUFDVixhQUFhO0lBQ2IsY0FBYztDQUNkLENBQUM7QUFRRixNQUFNLGdCQUFnQixHQUFHO0lBQ3hCLGdCQUFnQjtJQUNoQixjQUFjO0NBQ2QsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixjQUFjO0lBQ2QsY0FBYztDQUNkLENBQUM7QUFTRixNQUFNLE9BQU8sV0FBVztJQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLGNBQWM7UUFDN0MsT0FBTztZQUNOLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxZQUFZO29CQUNyQixRQUFRLEVBQUUsTUFBTTtpQkFDaEIsQ0FBQztTQUNGLENBQUE7SUFDRixDQUFDO3VHQVRXLFdBQVc7d0dBQVgsV0FBVyxpQkFoQnZCLGdCQUFnQjtZQUNoQixjQUFjLEVBaEJkLE9BQU87WUFDUCxRQUFRO1lBQ1IsVUFBVTtZQUNWLFVBQVU7WUFDVixhQUFhO1lBQ2IsY0FBYyxFQWNkLGVBQWU7WUFDZixjQUFjO1lBQ2QsY0FBYyxFQS9CSyxxQkFBcUIsYUFtQ3dCLFlBQVksRUFBRSxXQUFXLGFBekJ6RixPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixVQUFVO1lBQ1YsYUFBYTtZQUNiLGNBQWMsRUFjZCxlQUFlO1lBQ2YsY0FBYztZQUNkLGNBQWMsRUEvQksscUJBQXFCO3dHQXlDNUIsV0FBVyxhQU5nRjtZQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtZQUNuRCxTQUFTO1lBQ1QsV0FBVztZQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDOUMsWUFMNEQsWUFBWSxFQUFFLFdBQVc7OzJGQU03RSxXQUFXO2tCQVB2QixRQUFRO21CQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQztvQkFDbkYsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFO3dCQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTt3QkFDbkQsU0FBUzt3QkFDVCxXQUFXO3dCQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7cUJBQzlDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpbml0aWFsaXplICovXHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWV0YVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21ldGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1ldGFHdWFyZCB9IGZyb20gJy4vZ3VhcmQvbWV0YS5ndWFyZCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyogZGlyZWN0aXZlcyAqL1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5jb25zdCBESVJFQ1RJVkVTID0gW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV07XHJcblxyXG4vKiBwaXBlcyAqL1xyXG5pbXBvcnQgeyBBcnJQaXBlIH0gZnJvbSAnLi9waXBlcy9hcnIucGlwZSc7XHJcbmltcG9ydCB7IFNhZmVQaXBlIH0gZnJvbSAnLi9waXBlcy9zYWZlLnBpcGUnO1xyXG5pbXBvcnQgeyBTcGxpY2VQaXBlIH0gZnJvbSAnLi9waXBlcy9zcGxpY2UucGlwZSc7XHJcbmltcG9ydCB7IFNlYXJjaFBpcGUgfSBmcm9tICcuL3BpcGVzL3NlYXJjaC5waXBlJztcclxuaW1wb3J0IHsgTW9uZ29kYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvbW9uZ29kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvcGFnaW5hdGlvbi5waXBlJztcclxuY29uc3QgUElQRVMgPSBbXHJcblx0QXJyUGlwZSxcclxuXHRTYWZlUGlwZSxcclxuXHRTcGxpY2VQaXBlLFxyXG5cdFNlYXJjaFBpcGUsXHJcblx0TW9uZ29kYXRlUGlwZSxcclxuXHRQYWdpbmF0aW9uUGlwZSxcclxuXTtcclxuXHJcbi8qIGNvbXBvbmVudHMgKi9cclxuaW1wb3J0IHsgV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydC93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZXMvZmlsZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50JztcclxuY29uc3QgTE9DQUxfQ09NUE9ORU5UUyA9IFtcclxuXHRXcmFwcGVyQ29tcG9uZW50LFxyXG5cdEZpbGVzQ29tcG9uZW50XHJcbl07XHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcblx0TG9hZGVyQ29tcG9uZW50LFxyXG5cdE1vZGFsQ29tcG9uZW50LFxyXG5cdEFsZXJ0Q29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoeyBkZWNsYXJhdGlvbnM6IFsuLi5MT0NBTF9DT01QT05FTlRTLCAuLi5QSVBFUywgLi4uQ09NUE9ORU5UUywgLi4uRElSRUNUSVZFU10sXG4gICAgZXhwb3J0czogWy4uLlBJUEVTLCAuLi5DT01QT05FTlRTLCAuLi5ESVJFQ1RJVkVTXSwgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLCBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBDT05GSUdfVE9LRU4sIHVzZVZhbHVlOiBERUZBVUxUX0NPTkZJRyB9LFxuICAgICAgICBNZXRhR3VhcmQsXG4gICAgICAgIE1ldGFTZXJ2aWNlLFxuICAgICAgICBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzRnJvbURpKCkpXG4gICAgXSB9KVxyXG5leHBvcnQgY2xhc3MgV2Fjb21Nb2R1bGUge1xyXG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlnID0gREVGQVVMVF9DT05GSUcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdhY29tTW9kdWxlPiB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuZ01vZHVsZTogV2Fjb21Nb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVyczogW3tcclxuXHRcdFx0XHRwcm92aWRlOiBDT05GSUdfVE9LRU4sXHJcblx0XHRcdFx0dXNlVmFsdWU6IGNvbmZpZ1xyXG5cdFx0XHR9XVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fjb20ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi93YWNvbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxZQUFZLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc3RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVekQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUF2QnBFLE1BQU0sVUFBVSxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQVMzQyxNQUFNLEtBQUssR0FBRztJQUNiLE9BQU87SUFDUCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFVBQVU7SUFDVixhQUFhO0lBQ2IsY0FBYztDQUNkLENBQUM7QUFRRixNQUFNLGdCQUFnQixHQUFHO0lBQ3hCLGdCQUFnQjtJQUNoQixjQUFjO0NBQ2QsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixjQUFjO0lBQ2QsY0FBYztDQUNkLENBQUM7QUFTRixNQUFNLE9BQU8sV0FBVztJQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLGNBQWM7UUFDN0MsT0FBTztZQUNOLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxZQUFZO29CQUNyQixRQUFRLEVBQUUsTUFBTTtpQkFDaEIsQ0FBQztTQUNGLENBQUE7SUFDRixDQUFDO3VHQVRXLFdBQVc7d0dBQVgsV0FBVyxpQkFoQnZCLGdCQUFnQjtZQUNoQixjQUFjLEVBaEJkLE9BQU87WUFDUCxRQUFRO1lBQ1IsVUFBVTtZQUNWLFVBQVU7WUFDVixhQUFhO1lBQ2IsY0FBYyxFQWNkLGVBQWU7WUFDZixjQUFjO1lBQ2QsY0FBYyxFQS9CSyxxQkFBcUIsYUFtQ3dCLFlBQVksRUFBRSxXQUFXLGFBekJ6RixPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixVQUFVO1lBQ1YsYUFBYTtZQUNiLGNBQWMsRUFjZCxlQUFlO1lBQ2YsY0FBYztZQUNkLGNBQWMsRUEvQksscUJBQXFCO3dHQXlDNUIsV0FBVyxhQU5nRjtZQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtZQUNuRCxTQUFTO1lBQ1QsV0FBVztZQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDOUMsWUFMNEQsWUFBWSxFQUFFLFdBQVc7OzJGQU03RSxXQUFXO2tCQVB2QixRQUFRO21CQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQztvQkFDbkYsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFO3dCQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTt3QkFDbkQsU0FBUzt3QkFDVCxXQUFXO3dCQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7cUJBQzlDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpbml0aWFsaXplICovXHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWV0YVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21ldGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1ldGFHdWFyZCB9IGZyb20gJy4vZ3VhcmQvbWV0YS5ndWFyZCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyogZGlyZWN0aXZlcyAqL1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5jb25zdCBESVJFQ1RJVkVTID0gW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV07XHJcblxyXG4vKiBwaXBlcyAqL1xyXG5pbXBvcnQgeyBBcnJQaXBlIH0gZnJvbSAnLi9waXBlcy9hcnIucGlwZSc7XHJcbmltcG9ydCB7IFNhZmVQaXBlIH0gZnJvbSAnLi9waXBlcy9zYWZlLnBpcGUnO1xyXG5pbXBvcnQgeyBTcGxpY2VQaXBlIH0gZnJvbSAnLi9waXBlcy9zcGxpY2UucGlwZSc7XHJcbmltcG9ydCB7IFNlYXJjaFBpcGUgfSBmcm9tICcuL3BpcGVzL3NlYXJjaC5waXBlJztcclxuaW1wb3J0IHsgTW9uZ29kYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvbW9uZ29kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvcGFnaW5hdGlvbi5waXBlJztcclxuY29uc3QgUElQRVMgPSBbXHJcblx0QXJyUGlwZSxcclxuXHRTYWZlUGlwZSxcclxuXHRTcGxpY2VQaXBlLFxyXG5cdFNlYXJjaFBpcGUsXHJcblx0TW9uZ29kYXRlUGlwZSxcclxuXHRQYWdpbmF0aW9uUGlwZSxcclxuXTtcclxuXHJcbi8qIGNvbXBvbmVudHMgKi9cclxuaW1wb3J0IHsgV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydC93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZXMvZmlsZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50JztcclxuY29uc3QgTE9DQUxfQ09NUE9ORU5UUyA9IFtcclxuXHRXcmFwcGVyQ29tcG9uZW50LFxyXG5cdEZpbGVzQ29tcG9uZW50XHJcbl07XHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcblx0TG9hZGVyQ29tcG9uZW50LFxyXG5cdE1vZGFsQ29tcG9uZW50LFxyXG5cdEFsZXJ0Q29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoeyBkZWNsYXJhdGlvbnM6IFsuLi5MT0NBTF9DT01QT05FTlRTLCAuLi5QSVBFUywgLi4uQ09NUE9ORU5UUywgLi4uRElSRUNUSVZFU10sXHJcbiAgICBleHBvcnRzOiBbLi4uUElQRVMsIC4uLkNPTVBPTkVOVFMsIC4uLkRJUkVDVElWRVNdLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogREVGQVVMVF9DT05GSUcgfSxcclxuICAgICAgICBNZXRhR3VhcmQsXHJcbiAgICAgICAgTWV0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKVxyXG4gICAgXSB9KVxyXG5leHBvcnQgY2xhc3MgV2Fjb21Nb2R1bGUge1xyXG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlnID0gREVGQVVMVF9DT05GSUcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdhY29tTW9kdWxlPiB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuZ01vZHVsZTogV2Fjb21Nb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVyczogW3tcclxuXHRcdFx0XHRwcm92aWRlOiBDT05GSUdfVE9LRU4sXHJcblx0XHRcdFx0dXNlVmFsdWU6IGNvbmZpZ1xyXG5cdFx0XHR9XVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=