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.
- package/esm2022/lib/components/alert/alert.component.mjs +3 -3
- package/esm2022/lib/components/alert/wrapper/wrapper.component.mjs +3 -3
- package/esm2022/lib/components/files/files.component.mjs +3 -3
- package/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/components/modal/modal.component.mjs +3 -3
- package/esm2022/lib/directives/click-outside.directive.mjs +3 -3
- package/esm2022/lib/guard/meta.guard.mjs +3 -3
- package/esm2022/lib/pipes/arr.pipe.mjs +3 -3
- package/esm2022/lib/pipes/mongodate.pipe.mjs +3 -3
- package/esm2022/lib/pipes/pagination.pipe.mjs +3 -3
- package/esm2022/lib/pipes/safe.pipe.mjs +3 -3
- package/esm2022/lib/pipes/search.pipe.mjs +3 -3
- package/esm2022/lib/pipes/splice.pipe.mjs +3 -3
- package/esm2022/lib/services/alert.service.mjs +3 -3
- package/esm2022/lib/services/base.service.mjs +3 -3
- package/esm2022/lib/services/core.service.mjs +3 -3
- package/esm2022/lib/services/dom.service.mjs +3 -3
- package/esm2022/lib/services/file.service.mjs +3 -3
- package/esm2022/lib/services/hash.service.mjs +3 -3
- package/esm2022/lib/services/http.service.mjs +84 -18
- package/esm2022/lib/services/loader.service.mjs +3 -3
- package/esm2022/lib/services/meta.service.mjs +3 -3
- package/esm2022/lib/services/modal.service.mjs +3 -3
- package/esm2022/lib/services/mongo.service.mjs +3 -3
- package/esm2022/lib/services/render.service.mjs +3 -3
- package/esm2022/lib/services/socket.service.mjs +3 -3
- package/esm2022/lib/services/store.service.mjs +3 -3
- package/esm2022/lib/services/time.service.mjs +3 -3
- package/esm2022/lib/services/ui.service.mjs +3 -3
- package/esm2022/lib/wacom.module.mjs +5 -5
- package/fesm2022/wacom.mjs +171 -105
- package/fesm2022/wacom.mjs.map +1 -1
- package/lib/services/http.service.d.ts +38 -0
- 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,
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
98
|
-
|
|
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(
|
|
106
|
-
|
|
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
|
|
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.
|
|
164
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFVZDtJQUNBO0lBQ2tDO0lBWDNDLE1BQU0sR0FBMkQsRUFBRSxDQUFDO0lBQ3BFLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDVCxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ2YsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUNoQixLQUFLLENBQU07SUFDWCxRQUFRLEdBQVEsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdkQsWUFDUyxLQUFtQixFQUNuQixJQUFnQixFQUNrQixPQUFlO1FBRmpELFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNrQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBRXpELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXJDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUNuRCxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNiLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVztRQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsU0FBUztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBUSxFQUFFLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVE7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEdBQVksRUFBRSxPQUFZO1FBQzNFLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sSUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFNLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLElBQUksTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQU0sSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNGLENBQUM7SUFFTyxLQUFLLENBQ1osR0FBVyxFQUNYLEdBQVksRUFDWixXQUFXLENBQUMsSUFBYSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQ2pDLE9BQVksRUFBRSxFQUNkLE1BQU0sR0FBRyxNQUFNO1FBRWYsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBc0IsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRVIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUUxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRXhGLFVBQVU7YUFDUixJQUFJLENBQ0osS0FBSyxFQUFFLEVBQ1AsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ1YsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDRjthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUosT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFXLEVBQUUsR0FBUSxFQUFFLFdBQVcsQ0FBQyxJQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFZLEVBQUU7UUFDeEUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQVEsRUFBRSxXQUFXLENBQUMsSUFBUyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBWSxFQUFFO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFXLEVBQUUsR0FBUSxFQUFFLFdBQVcsQ0FBQyxJQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFZLEVBQUU7UUFDekUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVcsRUFBRSxXQUFXLENBQUMsSUFBUyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBWSxFQUFFO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFXLEVBQUUsV0FBVyxDQUFDLElBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQVksRUFBRTtRQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXO1FBQ1YsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDNUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSTtRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNO1FBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxRQUFhLEVBQUUsS0FBaUI7UUFDbkQsT0FBTyxDQUFDLEtBQXdCLEVBQWlCLEVBQUU7WUFDbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUNqQixHQUFzQixFQUN0QixJQUFzQyxFQUN0QyxLQUFpQjtRQUVqQixJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNwQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RCLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXLEVBQUUsSUFBYSxJQUFJLENBQUM7SUFFOUMsZUFBZSxDQUFDLEdBQVcsRUFBRSxJQUFhLEVBQUUsSUFBZ0I7UUFDbkUsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNoQyxJQUFJLEVBQUUsQ0FBQztRQUNSLENBQUM7SUFDRixDQUFDO3VHQWhNVyxXQUFXLHdFQVlkLFlBQVk7MkdBWlQsV0FBVyxjQUZYLE1BQU07OzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFhRSxNQUFNOzJCQUFDLFlBQVk7OzBCQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuXHRlcnJvcnM6ICgoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSwgcmV0cnk/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.
|
|
39
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
129
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
121
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
965
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
25
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
91
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
227
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
164
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
189
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
54
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.
|
|
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.
|
|
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.
|
|
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,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fjb20ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi93YWNvbS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxZQUFZLEVBQVUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLGdCQUFnQjtBQUNoQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc3RSxXQUFXO0FBQ1gsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFVekQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUF2QnBFLE1BQU0sVUFBVSxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQVMzQyxNQUFNLEtBQUssR0FBRztJQUNiLE9BQU87SUFDUCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFVBQVU7SUFDVixhQUFhO0lBQ2IsY0FBYztDQUNkLENBQUM7QUFRRixNQUFNLGdCQUFnQixHQUFHO0lBQ3hCLGdCQUFnQjtJQUNoQixjQUFjO0NBQ2QsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLGVBQWU7SUFDZixjQUFjO0lBQ2QsY0FBYztDQUNkLENBQUM7QUFTRixNQUFNLE9BQU8sV0FBVztJQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLGNBQWM7UUFDN0MsT0FBTztZQUNOLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxZQUFZO29CQUNyQixRQUFRLEVBQUUsTUFBTTtpQkFDaEIsQ0FBQztTQUNGLENBQUE7SUFDRixDQUFDO3VHQVRXLFdBQVc7d0dBQVgsV0FBVyxpQkFoQnZCLGdCQUFnQjtZQUNoQixjQUFjLEVBaEJkLE9BQU87WUFDUCxRQUFRO1lBQ1IsVUFBVTtZQUNWLFVBQVU7WUFDVixhQUFhO1lBQ2IsY0FBYyxFQWNkLGVBQWU7WUFDZixjQUFjO1lBQ2QsY0FBYyxFQS9CSyxxQkFBcUIsYUFtQ3dCLFlBQVksRUFBRSxXQUFXLGFBekJ6RixPQUFPO1lBQ1AsUUFBUTtZQUNSLFVBQVU7WUFDVixVQUFVO1lBQ1YsYUFBYTtZQUNiLGNBQWMsRUFjZCxlQUFlO1lBQ2YsY0FBYztZQUNkLGNBQWMsRUEvQksscUJBQXFCO3dHQXlDNUIsV0FBVyxhQU5nRjtZQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTtZQUNuRCxTQUFTO1lBQ1QsV0FBVztZQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDOUMsWUFMNEQsWUFBWSxFQUFFLFdBQVc7OzJGQU03RSxXQUFXO2tCQVB2QixRQUFRO21CQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLFVBQVUsRUFBRSxHQUFHLFVBQVUsQ0FBQztvQkFDbkYsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFO3dCQUNoRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTt3QkFDbkQsU0FBUzt3QkFDVCxXQUFXO3dCQUNYLGlCQUFpQixDQUFDLHNCQUFzQixFQUFFLENBQUM7cUJBQzlDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpbml0aWFsaXplICovXHJcbmltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb25maWcnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTWV0YVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21ldGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1ldGFHdWFyZCB9IGZyb20gJy4vZ3VhcmQvbWV0YS5ndWFyZCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyogZGlyZWN0aXZlcyAqL1xyXG5pbXBvcnQgeyBDbGlja091dHNpZGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5jb25zdCBESVJFQ1RJVkVTID0gW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV07XHJcblxyXG4vKiBwaXBlcyAqL1xyXG5pbXBvcnQgeyBBcnJQaXBlIH0gZnJvbSAnLi9waXBlcy9hcnIucGlwZSc7XHJcbmltcG9ydCB7IFNhZmVQaXBlIH0gZnJvbSAnLi9waXBlcy9zYWZlLnBpcGUnO1xyXG5pbXBvcnQgeyBTcGxpY2VQaXBlIH0gZnJvbSAnLi9waXBlcy9zcGxpY2UucGlwZSc7XHJcbmltcG9ydCB7IFNlYXJjaFBpcGUgfSBmcm9tICcuL3BpcGVzL3NlYXJjaC5waXBlJztcclxuaW1wb3J0IHsgTW9uZ29kYXRlUGlwZSB9IGZyb20gJy4vcGlwZXMvbW9uZ29kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUGlwZSB9IGZyb20gJy4vcGlwZXMvcGFnaW5hdGlvbi5waXBlJztcclxuY29uc3QgUElQRVMgPSBbXHJcblx0QXJyUGlwZSxcclxuXHRTYWZlUGlwZSxcclxuXHRTcGxpY2VQaXBlLFxyXG5cdFNlYXJjaFBpcGUsXHJcblx0TW9uZ29kYXRlUGlwZSxcclxuXHRQYWdpbmF0aW9uUGlwZSxcclxuXTtcclxuXHJcbi8qIGNvbXBvbmVudHMgKi9cclxuaW1wb3J0IHsgV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hbGVydC93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmlsZXMvZmlsZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50JztcclxuY29uc3QgTE9DQUxfQ09NUE9ORU5UUyA9IFtcclxuXHRXcmFwcGVyQ29tcG9uZW50LFxyXG5cdEZpbGVzQ29tcG9uZW50XHJcbl07XHJcbmNvbnN0IENPTVBPTkVOVFMgPSBbXHJcblx0TG9hZGVyQ29tcG9uZW50LFxyXG5cdE1vZGFsQ29tcG9uZW50LFxyXG5cdEFsZXJ0Q29tcG9uZW50XHJcbl07XHJcblxyXG5ATmdNb2R1bGUoeyBkZWNsYXJhdGlvbnM6IFsuLi5MT0NBTF9DT01QT05FTlRTLCAuLi5QSVBFUywgLi4uQ09NUE9ORU5UUywgLi4uRElSRUNUSVZFU10sXHJcbiAgICBleHBvcnRzOiBbLi4uUElQRVMsIC4uLkNPTVBPTkVOVFMsIC4uLkRJUkVDVElWRVNdLCBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZV0sIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogREVGQVVMVF9DT05GSUcgfSxcclxuICAgICAgICBNZXRhR3VhcmQsXHJcbiAgICAgICAgTWV0YVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdmlkZUh0dHBDbGllbnQod2l0aEludGVyY2VwdG9yc0Zyb21EaSgpKVxyXG4gICAgXSB9KVxyXG5leHBvcnQgY2xhc3MgV2Fjb21Nb2R1bGUge1xyXG5cdHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlnID0gREVGQVVMVF9DT05GSUcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFdhY29tTW9kdWxlPiB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRuZ01vZHVsZTogV2Fjb21Nb2R1bGUsXHJcblx0XHRcdHByb3ZpZGVyczogW3tcclxuXHRcdFx0XHRwcm92aWRlOiBDT05GSUdfVE9LRU4sXHJcblx0XHRcdFx0dXNlVmFsdWU6IGNvbmZpZ1xyXG5cdFx0XHR9XVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=
|