wacom 13.0.8 → 13.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { CONFIG_TOKEN, DEFAULT_CONFIG } from '../interfaces/config';
2
2
  import { Injectable, Inject, Optional } from '@angular/core';
3
3
  import { HttpHeaders } from '@angular/common/http';
4
4
  import { throwError } from 'rxjs';
5
- import { catchError } from 'rxjs/operators';
5
+ import { catchError, first } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./store.service";
8
8
  import * as i2 from "@angular/common/http";
@@ -55,15 +55,17 @@ export class HttpService {
55
55
  this.post(url, doc, callback, opts);
56
56
  }, 100);
57
57
  }
58
- this.http.post((opts.url || this.url) + url, doc, {
58
+ const observable = this.http.post((opts.url || this.url) + url, doc, {
59
59
  headers: this.http_headers
60
- }).pipe(catchError(this.handleError(opts.err))).subscribe(resp => {
60
+ });
61
+ observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
61
62
  if (typeof this._http.replace == 'function') {
62
63
  this._http.replace(resp, callback);
63
64
  }
64
65
  else
65
66
  callback(resp);
66
67
  });
68
+ return observable;
67
69
  }
68
70
  put(url, doc, callback = (resp) => { }, opts = {}) {
69
71
  if (typeof opts == 'function') {
@@ -78,15 +80,17 @@ export class HttpService {
78
80
  this.put(url, doc, callback, opts);
79
81
  }, 100);
80
82
  }
81
- this.http.put((opts.url || this.url) + url, doc, {
83
+ const observable = this.http.put((opts.url || this.url) + url, doc, {
82
84
  headers: this.http_headers
83
- }).pipe(catchError(this.handleError(opts.err))).subscribe(resp => {
85
+ });
86
+ observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
84
87
  if (typeof this._http.replace == 'function') {
85
88
  this._http.replace(resp, callback);
86
89
  }
87
90
  else
88
91
  callback(resp);
89
92
  });
93
+ return observable;
90
94
  }
91
95
  patch(url, doc, callback = (resp) => { }, opts = {}) {
92
96
  if (typeof opts == 'function') {
@@ -101,15 +105,17 @@ export class HttpService {
101
105
  this.patch(url, doc, callback, opts);
102
106
  }, 100);
103
107
  }
104
- this.http.patch((opts.url || this.url) + url, doc, {
108
+ const observable = this.http.patch((opts.url || this.url) + url, doc, {
105
109
  headers: this.http_headers
106
- }).pipe(catchError(this.handleError(opts.err))).subscribe(resp => {
110
+ });
111
+ observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
107
112
  if (typeof this._http.replace == 'function') {
108
113
  this._http.replace(resp, callback);
109
114
  }
110
115
  else
111
116
  callback(resp);
112
117
  });
118
+ return observable;
113
119
  }
114
120
  delete(url, doc, callback = (resp) => { }, opts = {}) {
115
121
  if (typeof opts == 'function') {
@@ -124,16 +130,18 @@ export class HttpService {
124
130
  this.delete(url, doc, callback, opts);
125
131
  }, 100);
126
132
  }
127
- this.http.request('delete', (opts.url || this.url) + url, {
133
+ const observable = this.http.request('delete', (opts.url || this.url) + url, {
128
134
  headers: this.http_headers,
129
135
  body: doc || {}
130
- }).pipe(catchError(this.handleError(opts.err))).subscribe(resp => {
136
+ });
137
+ observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
131
138
  if (typeof this._http.replace == 'function') {
132
139
  this._http.replace(resp, callback);
133
140
  }
134
141
  else
135
142
  callback(resp);
136
143
  });
144
+ return observable;
137
145
  }
138
146
  get(url, callback = (resp) => { }, opts = {}) {
139
147
  if (typeof opts == 'function') {
@@ -154,13 +162,15 @@ export class HttpService {
154
162
  if (opts.params) {
155
163
  params.params = opts.params;
156
164
  }
157
- this.http.get((opts.url || this.url) + url, params).pipe(catchError(this.handleError(opts.err))).subscribe(resp => {
165
+ const observable = this.http.get((opts.url || this.url) + url, params);
166
+ observable.pipe(first(), catchError(this.handleError(opts.err))).subscribe(resp => {
158
167
  if (typeof this._http.replace == 'function') {
159
168
  this._http.replace(resp, callback);
160
169
  }
161
170
  else
162
171
  callback(resp);
163
172
  });
173
+ return observable;
164
174
  }
165
175
  lock() {
166
176
  this.locked = true;
@@ -194,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
194
204
  }, {
195
205
  type: Optional
196
206
  }] }]; } });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBVSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU01QyxNQUFNLE9BQU8sV0FBVztJQWtCdkIsWUFBb0IsS0FBbUIsRUFBVSxJQUFnQixFQUN0QixNQUFjO1FBRHJDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqQmpELFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxZQUFPLEdBQU8sRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBb0lyRCxrQkFBa0I7UUFDVixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBckh0QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMs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QUksVUFBVSxFQUFDO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztTQUMxQjtJQUNGLENBQUM7SUFDTyxXQUFXLENBQUMsS0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUc7UUFDMUMsT0FBTyxVQUFTLEtBQXdCO1lBQ3ZDLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEIsT0FBTyxVQUFVLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUE7SUFDRixDQUFDO0lBQUEsQ0FBQzs7d0dBMUpVLFdBQVcsd0VBbUJkLFlBQVk7NEdBbkJULFdBQVcsY0FGWCxNQUFNOzJGQUVOLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCOzswQkFvQkUsTUFBTTsyQkFBQyxZQUFZOzswQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09ORklHX1RPS0VOLCBDb25maWcsIERFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25maWcnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcblx0cHJpdmF0ZSBfaHR0cDogYW55O1xuXHRwcml2YXRlIHVybCA9ICcnO1xuXHRwcml2YXRlIGhlYWRlcnM6YW55ID0ge307XG5cdHByaXZhdGUgaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cdHNldChrZXk6YW55LCB2YWx1ZTphbnkpe1xuXHRcdHRoaXMuaGVhZGVyc1trZXldID0gdmFsdWU7XG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xuXHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cdH1cblx0aGVhZGVyKGtleTphbnkpe1xuXHRcdHJldHVybiB0aGlzLmhlYWRlcnNba2V5XTtcblx0fVxuXHRyZW1vdmUoa2V5OmFueSl7XG5cdFx0ZGVsZXRlIHRoaXMuaGVhZGVyc1trZXldO1xuXHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cdFx0dGhpcy5zdG9yZS5zZXRKc29uKCdodHRwX2hlYWRlcnMnLCB0aGlzLmhlYWRlcnMpO1xuXHR9XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuXHRcdEBJbmplY3QoQ09ORklHX1RPS0VOKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZzogQ29uZmlnKSB7XG5cdFx0dGhpcy5faHR0cCA9IGNvbmZpZy5odHRwO1xuXHRcdGlmICghdGhpcy5jb25maWcpIHRoaXMuY29uZmlnID0gREVGQVVMVF9DT05GSUc7XG5cdFx0aWYgKCF0aGlzLl9odHRwKSB0aGlzLl9odHRwID0ge307XG5cdFx0dGhpcy5zdG9yZS5nZXRKc29uKCdodHRwX2hlYWRlcnMnLCAoaGVhZGVyczphbnkpPT57XG5cdFx0XHRpZihoZWFkZXJzKSB7XG5cdFx0XHRcdHRoaXMuaGVhZGVycyA9IGhlYWRlcnM7XG5cdFx0XHRcdHRoaXMuaHR0cF9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnVybCA9IHRoaXMuX2h0dHAudXJsIHx8ICcnO1xuXHRcdH0pO1xuXHR9XG5cdHBvc3QodXJsOmFueSwgZG9jOmFueSwgY2FsbGJhY2s9KHJlc3A6YW55KSA9PiB7fSwgb3B0czphbnk9e30pOmFueXtcblx0XHRpZih0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdG9wdHMgPSB7XG5cdFx0XHRcdGVycjogb3B0c1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZighb3B0cy5lcnIpIG9wdHMuZXJyID0gKGVycjpIdHRwRXJyb3JSZXNwb25zZSk9Pnt9O1xuXHRcdGlmKHRoaXMubG9ja2VkKXtcblx0XHRcdHJldHVybiBzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdHRoaXMucG9zdCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdFx0dGhpcy5odHRwLnBvc3Q8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpKS5zdWJzY3JpYmUocmVzcD0+e1xuXHRcdFx0aWYodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xuXHRcdH0pO1xuXHR9XG5cdHB1dCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xuXHRcdGlmKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpe1xuXHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0ZXJyOiBvcHRzXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKCFvcHRzLmVycikgb3B0cy5lcnIgPSAoZXJyOkh0dHBFcnJvclJlc3BvbnNlKT0+e307XG5cdFx0aWYodGhpcy5sb2NrZWQpe1xuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0dGhpcy5wdXQodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcblx0XHRcdH0sIDEwMCk7XG5cdFx0fVxuXHRcdHRoaXMuaHR0cC5wdXQ8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpKS5zdWJzY3JpYmUocmVzcD0+e1xuXHRcdFx0aWYodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xuXHRcdH0pO1xuXHR9XG5cdHBhdGNoKHVybDphbnksIGRvYzphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRvcHRzID0ge1xuXHRcdFx0XHRlcnI6IG9wdHNcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoIW9wdHMuZXJyKSBvcHRzLmVyciA9IChlcnI6SHR0cEVycm9yUmVzcG9uc2UpPT57fTtcblx0XHRpZih0aGlzLmxvY2tlZCl7XG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR0aGlzLnBhdGNoKHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cyk7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH1cblx0XHR0aGlzLmh0dHAucGF0Y2g8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpKS5zdWJzY3JpYmUocmVzcD0+e1xuXHRcdFx0aWYodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xuXHRcdH0pO1xuXHR9XG5cdGRlbGV0ZSh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xuXHRcdGlmKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpe1xuXHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0ZXJyOiBvcHRzXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKCFvcHRzLmVycikgb3B0cy5lcnIgPSAoZXJyOkh0dHBFcnJvclJlc3BvbnNlKT0+e307XG5cdFx0aWYodGhpcy5sb2NrZWQpe1xuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0dGhpcy5kZWxldGUodXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcblx0XHRcdH0sIDEwMCk7XG5cdFx0fVxuXHRcdHRoaXMuaHR0cC5yZXF1ZXN0PGFueT4oJ2RlbGV0ZScsIChvcHRzLnVybHx8dGhpcy51cmwpK3VybCwge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnMsXG5cdFx0XHRib2R5OiBkb2MgfHwge31cblx0XHR9KS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcihvcHRzLmVycikpKS5zdWJzY3JpYmUocmVzcD0+e1xuXHRcdFx0aWYodHlwZW9mIHRoaXMuX2h0dHAucmVwbGFjZSA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdFx0dGhpcy5faHR0cC5yZXBsYWNlKHJlc3AsIGNhbGxiYWNrKTtcblx0XHRcdH1lbHNlIGNhbGxiYWNrKHJlc3ApO1xuXHRcdH0pO1xuXHR9XG5cdGdldCh1cmw6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xuXHRcdGlmKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpe1xuXHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0ZXJyOiBvcHRzXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKCFvcHRzLmVycikgb3B0cy5lcnIgPSAoZXJyOkh0dHBFcnJvclJlc3BvbnNlKT0+e307XG5cdFx0aWYodGhpcy5sb2NrZWQpe1xuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0dGhpcy5nZXQodXJsLCBjYWxsYmFjaywgb3B0cyk7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH1cblx0XHRsZXQgcGFyYW1zOmFueSA9IHtcblx0XHRcdGhlYWRlcnM6IHRoaXMuaHR0cF9oZWFkZXJzXG5cdFx0fTtcblx0XHRpZihvcHRzLnBhcmFtcyl7XG5cdFx0XHRwYXJhbXMucGFyYW1zID0gb3B0cy5wYXJhbXM7XG5cdFx0fVxuXHRcdHRoaXMuaHR0cC5nZXQ8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIHBhcmFtcykucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3Iob3B0cy5lcnIpKSkuc3Vic2NyaWJlKHJlc3A9Pntcblx0XHRcdGlmKHR5cGVvZiB0aGlzLl9odHRwLnJlcGxhY2UgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRcdHRoaXMuX2h0dHAucmVwbGFjZShyZXNwLCBjYWxsYmFjayk7XG5cdFx0XHR9ZWxzZSBjYWxsYmFjayhyZXNwKTtcblx0XHR9KTtcblx0fVxuXHQvLyBodHRwIG1hbmFnZW1lbnRcblx0cHJpdmF0ZSBsb2NrZWQgPSBmYWxzZTtcblx0bG9jaygpe1xuXHRcdHRoaXMubG9ja2VkID0gdHJ1ZTtcblx0fVxuXHR1bmxvY2soKXtcblx0XHR0aGlzLmxvY2tlZCA9IGZhbHNlO1xuXHR9XG5cdGVycihjYWxsYmFjazphbnkpe1xuXHRcdGlmKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdHRoaXMuX2h0dHAuZXJyID0gY2FsbGJhY2s7XG5cdFx0fVxuXHR9XG5cdHByaXZhdGUgaGFuZGxlRXJyb3IoY2I6YW55ID0gdGhpcy5faHR0cC5lcnIpIHtcblx0XHRyZXR1cm4gZnVuY3Rpb24oZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKXtcblx0XHRcdGNiICYmIGNiKGVycm9yKTtcblx0XHRcdHJldHVybiB0aHJvd0Vycm9yKFwiV2UgY2FuJ3QgY29ubmVjdCB0byB0aGUgc2VydmVyXCIpO1xuXHRcdH1cblx0fTtcbn1cbiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd2Fjb20vc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBVSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFpQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNbkQsTUFBTSxPQUFPLFdBQVc7SUFrQnZCLFlBQW9CLEtBQW1CLEVBQVUsSUFBZ0IsRUFDdEIsTUFBYztRQURyQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakJqRCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsWUFBTyxHQUFPLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQTZKckQsa0JBQWtCO1FBQ1YsV0FBTSxHQUFHLEtBQUssQ0FBQztRQTlJdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMs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SUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBVSxFQUFDO2dCQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDbkM7O2dCQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFJO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUNELE1BQU07UUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBQ0QsR0FBRyxDQUFDLFFBQVk7UUFDZixJQUFHLE9BQU8sUUFBUSxJQUFJLFVBQVUsRUFBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7U0FDMUI7SUFDRixDQUFDO0lBQ08sV0FBVyxDQUFDLEtBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHO1FBQzFDLE9BQU8sVUFBUyxLQUF3QjtZQUN2QyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sVUFBVSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFBO0lBQ0YsQ0FBQztJQUFBLENBQUM7O3dHQW5MVSxXQUFXLHdFQW1CZCxZQUFZOzRHQW5CVCxXQUFXLGNBRlgsTUFBTTsyRkFFTixXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQjs7MEJBb0JFLE1BQU07MkJBQUMsWUFBWTs7MEJBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTkZJR19UT0tFTiwgQ29uZmlnLCBERUZBVUxUX0NPTkZJRyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xuXHRwcml2YXRlIF9odHRwOiBhbnk7XG5cdHByaXZhdGUgdXJsID0gJyc7XG5cdHByaXZhdGUgaGVhZGVyczphbnkgPSB7fTtcblx0cHJpdmF0ZSBodHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcblx0c2V0KGtleTphbnksIHZhbHVlOmFueSl7XG5cdFx0dGhpcy5oZWFkZXJzW2tleV0gPSB2YWx1ZTtcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuaGVhZGVycyk7XG5cdFx0dGhpcy5odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcblx0fVxuXHRoZWFkZXIoa2V5OmFueSl7XG5cdFx0cmV0dXJuIHRoaXMuaGVhZGVyc1trZXldO1xuXHR9XG5cdHJlbW92ZShrZXk6YW55KXtcblx0XHRkZWxldGUgdGhpcy5oZWFkZXJzW2tleV07XG5cdFx0dGhpcy5odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcblx0XHR0aGlzLnN0b3JlLnNldEpzb24oJ2h0dHBfaGVhZGVycycsIHRoaXMuaGVhZGVycyk7XG5cdH1cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmVTZXJ2aWNlLCBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG5cdFx0QEluamVjdChDT05GSUdfVE9LRU4pIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcblx0XHR0aGlzLl9odHRwID0gY29uZmlnLmh0dHA7XG5cdFx0aWYgKCF0aGlzLmNvbmZpZykgdGhpcy5jb25maWcgPSBERUZBVUxUX0NPTkZJRztcblx0XHRpZiAoIXRoaXMuX2h0dHApIHRoaXMuX2h0dHAgPSB7fTtcblx0XHR0aGlzLnN0b3JlLmdldEpzb24oJ2h0dHBfaGVhZGVycycsIChoZWFkZXJzOmFueSk9Pntcblx0XHRcdGlmKGhlYWRlcnMpIHtcblx0XHRcdFx0dGhpcy5oZWFkZXJzID0gaGVhZGVycztcblx0XHRcdFx0dGhpcy5odHRwX2hlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudXJsID0gdGhpcy5faHR0cC51cmwgfHwgJyc7XG5cdFx0fSk7XG5cdH1cblx0cG9zdCh1cmw6YW55LCBkb2M6YW55LCBjYWxsYmFjaz0ocmVzcDphbnkpID0+IHt9LCBvcHRzOmFueT17fSk6YW55e1xuXHRcdGlmKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpe1xuXHRcdFx0b3B0cyA9IHtcblx0XHRcdFx0ZXJyOiBvcHRzXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKCFvcHRzLmVycikgb3B0cy5lcnIgPSAoZXJyOkh0dHBFcnJvclJlc3BvbnNlKT0+e307XG5cdFx0aWYodGhpcy5sb2NrZWQpe1xuXHRcdFx0cmV0dXJuIHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0dGhpcy5wb3N0KHVybCwgZG9jLCBjYWxsYmFjaywgb3B0cyk7XG5cdFx0XHR9LCAxMDApO1xuXHRcdH1cblx0XHRjb25zdCBvYnNlcnZhYmxlID0gdGhpcy5odHRwLnBvc3Q8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KTtcblx0XHRvYnNlcnZhYmxlLnBpcGUoXG5cdFx0XHRmaXJzdCgpLFxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblx0cHV0KHVybDphbnksIGRvYzphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRvcHRzID0ge1xuXHRcdFx0XHRlcnI6IG9wdHNcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoIW9wdHMuZXJyKSBvcHRzLmVyciA9IChlcnI6SHR0cEVycm9yUmVzcG9uc2UpPT57fTtcblx0XHRpZih0aGlzLmxvY2tlZCl7XG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR0aGlzLnB1dCh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuaHR0cC5wdXQ8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KTtcblx0XHRvYnNlcnZhYmxlLnBpcGUoXG5cdFx0XHRmaXJzdCgpLFxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblx0cGF0Y2godXJsOmFueSwgZG9jOmFueSwgY2FsbGJhY2s9KHJlc3A6YW55KSA9PiB7fSwgb3B0czphbnk9e30pOmFueXtcblx0XHRpZih0eXBlb2Ygb3B0cyA9PSAnZnVuY3Rpb24nKXtcblx0XHRcdG9wdHMgPSB7XG5cdFx0XHRcdGVycjogb3B0c1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZighb3B0cy5lcnIpIG9wdHMuZXJyID0gKGVycjpIdHRwRXJyb3JSZXNwb25zZSk9Pnt9O1xuXHRcdGlmKHRoaXMubG9ja2VkKXtcblx0XHRcdHJldHVybiBzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdHRoaXMucGF0Y2godXJsLCBkb2MsIGNhbGxiYWNrLCBvcHRzKTtcblx0XHRcdH0sIDEwMCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAucGF0Y2g8YW55Pigob3B0cy51cmx8fHRoaXMudXJsKSt1cmwsIGRvYywge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9KTtcblx0XHRvYnNlcnZhYmxlLnBpcGUoXG5cdFx0XHRmaXJzdCgpLFxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblx0ZGVsZXRlKHVybDphbnksIGRvYzphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRvcHRzID0ge1xuXHRcdFx0XHRlcnI6IG9wdHNcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoIW9wdHMuZXJyKSBvcHRzLmVyciA9IChlcnI6SHR0cEVycm9yUmVzcG9uc2UpPT57fTtcblx0XHRpZih0aGlzLmxvY2tlZCl7XG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR0aGlzLmRlbGV0ZSh1cmwsIGRvYywgY2FsbGJhY2ssIG9wdHMpO1xuXHRcdFx0fSwgMTAwKTtcblx0XHR9XG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZSA9IHRoaXMuaHR0cC5yZXF1ZXN0PGFueT4oJ2RlbGV0ZScsIChvcHRzLnVybHx8dGhpcy51cmwpK3VybCwge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnMsXG5cdFx0XHRib2R5OiBkb2MgfHwge31cblx0XHR9KTtcblx0XHRvYnNlcnZhYmxlLnBpcGUoXG5cdFx0XHRmaXJzdCgpLFxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblx0Z2V0KHVybDphbnksIGNhbGxiYWNrPShyZXNwOmFueSkgPT4ge30sIG9wdHM6YW55PXt9KTphbnl7XG5cdFx0aWYodHlwZW9mIG9wdHMgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHRvcHRzID0ge1xuXHRcdFx0XHRlcnI6IG9wdHNcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoIW9wdHMuZXJyKSBvcHRzLmVyciA9IChlcnI6SHR0cEVycm9yUmVzcG9uc2UpPT57fTtcblx0XHRpZih0aGlzLmxvY2tlZCl7XG5cdFx0XHRyZXR1cm4gc2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHR0aGlzLmdldCh1cmwsIGNhbGxiYWNrLCBvcHRzKTtcblx0XHRcdH0sIDEwMCk7XG5cdFx0fVxuXHRcdGxldCBwYXJhbXM6YW55ID0ge1xuXHRcdFx0aGVhZGVyczogdGhpcy5odHRwX2hlYWRlcnNcblx0XHR9O1xuXHRcdGlmIChvcHRzLnBhcmFtcyl7XG5cdFx0XHRwYXJhbXMucGFyYW1zID0gb3B0cy5wYXJhbXM7XG5cdFx0fVxuXHRcdGNvbnN0IG9ic2VydmFibGUgPSB0aGlzLmh0dHAuZ2V0PGFueT4oKG9wdHMudXJsIHx8IHRoaXMudXJsKSArIHVybCwgcGFyYW1zKTtcblx0XHRvYnNlcnZhYmxlLnBpcGUoXG5cdFx0XHRmaXJzdCgpLFxuXHRcdFx0Y2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKG9wdHMuZXJyKSlcblx0XHQpLnN1YnNjcmliZShyZXNwPT57XG5cdFx0XHRpZih0eXBlb2YgdGhpcy5faHR0cC5yZXBsYWNlID09ICdmdW5jdGlvbicpe1xuXHRcdFx0XHR0aGlzLl9odHRwLnJlcGxhY2UocmVzcCwgY2FsbGJhY2spO1xuXHRcdFx0fWVsc2UgY2FsbGJhY2socmVzcCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIG9ic2VydmFibGU7XG5cdH1cblx0Ly8gaHR0cCBtYW5hZ2VtZW50XG5cdHByaXZhdGUgbG9ja2VkID0gZmFsc2U7XG5cdGxvY2soKXtcblx0XHR0aGlzLmxvY2tlZCA9IHRydWU7XG5cdH1cblx0dW5sb2NrKCl7XG5cdFx0dGhpcy5sb2NrZWQgPSBmYWxzZTtcblx0fVxuXHRlcnIoY2FsbGJhY2s6YW55KXtcblx0XHRpZih0eXBlb2YgY2FsbGJhY2sgPT0gJ2Z1bmN0aW9uJyl7XG5cdFx0XHR0aGlzLl9odHRwLmVyciA9IGNhbGxiYWNrO1xuXHRcdH1cblx0fVxuXHRwcml2YXRlIGhhbmRsZUVycm9yKGNiOmFueSA9IHRoaXMuX2h0dHAuZXJyKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSl7XG5cdFx0XHRjYiAmJiBjYihlcnJvcik7XG5cdFx0XHRyZXR1cm4gdGhyb3dFcnJvcihcIldlIGNhbid0IGNvbm5lY3QgdG8gdGhlIHNlcnZlclwiKTtcblx0XHR9XG5cdH07XG59XG4iXX0=