tas-uell-sdk 0.0.6 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -40,6 +40,15 @@ export class TasService {
40
40
  this.ownerHasLeft$ = this.ownerHasLeftSubject.asObservable();
41
41
  this.joinableSubject = new BehaviorSubject(false);
42
42
  this.joinable$ = this.joinableSubject.asObservable();
43
+ // Observable for when backend requests geolocation activation
44
+ this.activateGeoSubject = new BehaviorSubject(false);
45
+ this.activateGeo$ = this.activateGeoSubject.asObservable();
46
+ // Observable for when geo request is active (owner waiting for user response)
47
+ this.geoRequestActiveSubject = new BehaviorSubject(false);
48
+ this.geoRequestActive$ = this.geoRequestActiveSubject.asObservable();
49
+ // Observable for when all geo has been granted
50
+ this.allGeoGrantedSubject = new BehaviorSubject(false);
51
+ this.allGeoGranted$ = this.allGeoGrantedSubject.asObservable();
43
52
  this.statusPollingInterval = null;
44
53
  this.DEFAULT_POLL_INTERVAL_MS = 30000; // Default 30s
45
54
  this.wasOwnerPresent = false;
@@ -331,6 +340,19 @@ export class TasService {
331
340
  throw error;
332
341
  }));
333
342
  }
343
+ /**
344
+ * Get user appointments within a date range.
345
+ * @param params Date range for querying appointments
346
+ * @returns Observable of appointment array
347
+ */
348
+ getAppointments(params) {
349
+ return this.httpClient
350
+ .get(`v2/proxy/appointment/agendas/user/appointments?fromDate=${params.fromDate}&toDate=${params.toDate}`, { headers: {} })
351
+ .pipe(catchError((error) => {
352
+ console.error('TAS Service: getAppointments failed', error);
353
+ throw error;
354
+ }));
355
+ }
334
356
  /**
335
357
  * Start automatic status polling for the current session.
336
358
  * Status is polled every STATUS_POLL_INTERVAL_MS milliseconds.
@@ -367,6 +389,21 @@ export class TasService {
367
389
  }
368
390
  // Update joinable status
369
391
  this.joinableSubject.next(content.joinable);
392
+ // Update activateGeo status
393
+ if (content.activateGeo !== undefined) {
394
+ console.log('[TAS DEBUG] activateGeo received:', content.activateGeo);
395
+ this.activateGeoSubject.next(content.activateGeo);
396
+ }
397
+ // Update geoRequestActive status (owner waiting for user geo response)
398
+ if (content.geoRequestActive !== undefined) {
399
+ console.log('[TAS DEBUG] geoRequestActive received:', content.geoRequestActive);
400
+ this.geoRequestActiveSubject.next(content.geoRequestActive);
401
+ }
402
+ // Update allGeoGranted status (all users responded with geo)
403
+ if (content.allGeoGranted !== undefined) {
404
+ console.log('[TAS DEBUG] allGeoGranted received:', content.allGeoGranted);
405
+ this.allGeoGrantedSubject.next(content.allGeoGranted);
406
+ }
370
407
  // Check if owner has joined
371
408
  const ownerJoined = this.checkIfOwnerJoined(content.users);
372
409
  this.ownerHasJoinedSubject.next(ownerJoined);
@@ -570,4 +607,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
570
607
  type: Inject,
571
608
  args: [TAS_CONFIG]
572
609
  }] }]; } });
573
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9zZXJ2aWNlcy90YXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBUUwsY0FBYyxFQUNkLGNBQWMsRUFFZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxRQUFRLEdBRVQsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsR0FHaEIsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFOUIsNkNBQTZDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFLaEYsTUFBTSxPQUFPLFVBQVU7SUFpRHJCLFlBQ21DLFVBQXlCLEVBQzlCLE1BQWlCO1FBRFosZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBbER2QyxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLGVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFakQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FB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LHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7d0dBdnNCVSxVQUFVLGtCQWtEWCxlQUFlLGFBQ2YsVUFBVTs0R0FuRFQsVUFBVSxjQUZULE1BQU07NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW1ESSxNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgT1QgZnJvbSAnQG9wZW50b2svY2xpZW50JztcbmltcG9ydCB7XG4gIEdlbmVyYXRlVG9rZW5SZXNwb25zZSxcbiAgU3RhcnRTZXNzaW9uUmVxdWVzdCxcbiAgRmluaXNoU2Vzc2lvblJlc3BvbnNlLFxuICBQcm94eVZpZGVvU3RhdHVzUmVxdWVzdCxcbiAgUHJveHlWaWRlb1N0YXR1c1Jlc3BvbnNlLFxuICBQcm94eVZpZGVvRmluaXNoUmVxdWVzdCxcbiAgUHJveHlWaWRlb1VzZXJNb2RpZnlSZXF1ZXN0LFxuICBVc2VyQ2FsbEFjdGlvbixcbiAgUm9vbVVzZXJTdGF0dXMsXG4gIFRhc0N1cnJlbnRVc2VyLFxuICBUYXNCdXNpbmVzc1JvbGUsXG4gIFRhc1VzZXJSb2xlLFxuICBDYWxsU3RhdGUsXG4gIFZpZXdNb2RlLFxuICBXYWl0aW5nUm9vbVVzZXIsXG59IGZyb20gJy4uL2ludGVyZmFjZXMvdGFzLmludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgVEFTX0NPTkZJRyxcbiAgVEFTX0hUVFBfQ0xJRU5ULFxuICBUYXNDb25maWcsXG4gIFRhc0h0dHBDbGllbnQsXG59IGZyb20gJy4uL2NvbmZpZy90YXMuY29uZmlnJztcblxuLy8gUmUtZXhwb3J0IGVudW1zIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgeyBDYWxsU3RhdGUsIFZpZXdNb2RlLCBUYXNCdXNpbmVzc1JvbGUsIFVzZXJDYWxsQWN0aW9uLCBSb29tVXNlclN0YXR1cyB9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFzU2VydmljZSB7XG4gIHByaXZhdGUgc2Vzc2lvbjogT1QuU2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHB1Ymxpc2hlcjogT1QuUHVibGlzaGVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3Vic2NyaWJlcnM6IE9ULlN1YnNjcmliZXJbXSA9IFtdO1xuXG4gIHByaXZhdGUgY2FsbFN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FsbFN0YXRlPihDYWxsU3RhdGUuSURMRSk7XG4gIHB1YmxpYyBjYWxsU3RhdGUkID0gdGhpcy5jYWxsU3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgdmlld01vZGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWaWV3TW9kZT4oVmlld01vZGUuRlVMTFNDUkVFTik7XG4gIHB1YmxpYyB2aWV3TW9kZSQgPSB0aGlzLnZpZXdNb2RlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGlzTXV0ZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBpc011dGVkJCA9IHRoaXMuaXNNdXRlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8gU2Vzc2lvbiBpbmZvIGZvciBQaVAgbW9kZSByZXN0b3JhdGlvblxuICBwcml2YXRlIGN1cnJlbnRTZXNzaW9uSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgU1RPUkFHRV9LRVkgPSAndGFzX3Nlc3Npb25fc3RhdGUnO1xuICBwcml2YXRlIHJlYWRvbmx5IERJU0NPTk5FQ1RFRF9GTEFHX0tFWSA9ICd0YXNfc2Vzc2lvbl9kaXNjb25uZWN0ZWQnO1xuICBwcml2YXRlIGlzRmluaXNoaW5nU2Vzc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIFByb3h5LXZpZGVvIGNpcmN1aXQgc3RhdGVcbiAgcHJpdmF0ZSBwcm94eVZpZGVvU2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwcm94eVZpZGVvVG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRCdXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSO1xuXG4gIC8vIFdhaXRpbmcgcm9vbSBhbmQgc3RhdHVzIHBvbGxpbmdcbiAgcHJpdmF0ZSB3YWl0aW5nUm9vbVVzZXJzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2FpdGluZ1Jvb21Vc2VyW10+KFtdKTtcbiAgcHVibGljIHdhaXRpbmdSb29tVXNlcnMkID0gdGhpcy53YWl0aW5nUm9vbVVzZXJzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIG93bmVySGFzSm9pbmVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgb3duZXJIYXNKb2luZWQkID0gdGhpcy5vd25lckhhc0pvaW5lZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLy8gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRydWUgd2hlbiBvd25lciB3YXMgcHJlc2VudCBidXQgdGhlbiBsZWZ0XG4gIHByaXZhdGUgb3duZXJIYXNMZWZ0U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgb3duZXJIYXNMZWZ0JCA9IHRoaXMub3duZXJIYXNMZWZ0U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIGpvaW5hYmxlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgam9pbmFibGUkID0gdGhpcy5qb2luYWJsZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBzdGF0dXNQb2xsaW5nSW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfUE9MTF9JTlRFUlZBTF9NUyA9IDMwMDAwOyAvLyBEZWZhdWx0IDMwc1xuICBwcml2YXRlIHdhc093bmVyUHJlc2VudCA9IGZhbHNlO1xuXG4gIC8vIEN1cnJlbnQgY2FsbCBjb250ZXh0XG4gIHByaXZhdGUgY3VycmVudEFwcG9pbnRtZW50SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRWaWRlb0NhbGxJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY3VycmVudFRlbmFudDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChUQVNfSFRUUF9DTElFTlQpIHByaXZhdGUgaHR0cENsaWVudDogVGFzSHR0cENsaWVudCxcbiAgICBASW5qZWN0KFRBU19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBUYXNDb25maWdcbiAgKSB7fVxuXG4gIC8vIC4uLiAoR2V0dGVycyBhbmQgb3RoZXIgbWV0aG9kcyByZW1haW4gdW5jaGFuZ2VkKVxuXG4gIC8qKlxuICAgKiBTdGFydCBhdXRvbWF0aWMgc3RhdHVzIHBvbGxpbmcgZm9yIHRoZSBjdXJyZW50IHNlc3Npb24uXG4gICAqIFN0YXR1cyBpcyBwb2xsZWQgZXZlcnkgaW50ZXJ2YWxNcyAoZGVmYXVsdCAzMHMpLlxuICAgKi9cbiAgcHVibGljIHN0YXJ0U3RhdHVzUG9sbGluZyhcbiAgICBwYXJhbXM6IFByb3h5VmlkZW9TdGF0dXNSZXF1ZXN0LCBcbiAgICBpbnRlcnZhbE1zOiBudW1iZXIgPSB0aGlzLkRFRkFVTFRfUE9MTF9JTlRFUlZBTF9NU1xuICApOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BTdGF0dXNQb2xsaW5nKCk7IC8vIENsZWFyIGFueSBleGlzdGluZyBwb2xsaW5nXG5cbiAgICAvLyBTdG9yZSBjb250ZXh0IGZvciBwb2xsaW5nXG4gICAgaWYgKHBhcmFtcy5zZXNzaW9uSWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IHBhcmFtcy5zZXNzaW9uSWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuYXBwb2ludG1lbnRJZCkge1xuICAgICAgdGhpcy5jdXJyZW50QXBwb2ludG1lbnRJZCA9IHBhcmFtcy5hcHBvaW50bWVudElkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnRlbmFudCkge1xuICAgICAgdGhpcy5jdXJyZW50VGVuYW50ID0gcGFyYW1zLnRlbmFudDtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgW1RBUyBERUJVR10gU3RhcnRpbmcgc3RhdHVzIHBvbGxpbmcgd2l0aCBpbnRlcnZhbCAke2ludGVydmFsTXN9bXNgKTtcblxuICAgIC8vIEluaXRpYWwgc3RhdHVzIGZldGNoXG4gICAgdGhpcy5mZXRjaEFuZFByb2Nlc3NTdGF0dXMocGFyYW1zKTtcblxuICAgIC8vIFNldCB1cCBwZXJpb2RpYyBwb2xsaW5nXG4gICAgdGhpcy5zdGF0dXNQb2xsaW5nSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmZldGNoQW5kUHJvY2Vzc1N0YXR1cyhwYXJhbXMpO1xuICAgIH0sIGludGVydmFsTXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgYXV0b21hdGljIHN0YXR1cyBwb2xsaW5nLlxuICAgKi9cbiAgcHVibGljIHN0b3BTdGF0dXNQb2xsaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXR1c1BvbGxpbmdJbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnN0YXR1c1BvbGxpbmdJbnRlcnZhbCk7XG4gICAgICB0aGlzLnN0YXR1c1BvbGxpbmdJbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICAgIC8vIERvIE5PVCByZXNldCB3YWl0aW5nIHJvb20gc3RhdGUgaGVyZSwgYXMgb3RoZXIgY29tcG9uZW50cyBtaWdodCBvYnNlcnZlIGl0XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgcG9sbGluZyBzdGF0ZSAod2FpdGluZyByb29tLCBvd25lciBzdGF0dXMsIGV0YylcbiAgICogQ2FsbCB0aGlzIHdoZW4gY29tcGxldGVseSBleGl0aW5nIHRoZSBmbG93XG4gICAqL1xuICBwdWJsaWMgcmVzZXRQb2xsaW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wU3RhdHVzUG9sbGluZygpO1xuICAgIHRoaXMud2FpdGluZ1Jvb21Vc2Vyc1N1YmplY3QubmV4dChbXSk7XG4gICAgdGhpcy5vd25lckhhc0pvaW5lZFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vd25lckhhc0xlZnRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMuam9pbmFibGVTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgIHRoaXMud2FzT3duZXJQcmVzZW50ID0gZmFsc2U7XG4gIH1cblxuICAvLyBHZXR0ZXJzXG4gIHB1YmxpYyBnZXQgY3VycmVudFNlc3Npb24oKTogT1QuU2Vzc2lvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb247XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRQdWJsaXNoZXIoKTogT1QuUHVibGlzaGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucHVibGlzaGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50U3Vic2NyaWJlcnMoKTogT1QuU3Vic2NyaWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5zdWJzY3JpYmVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJveHlTZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucHJveHlWaWRlb1Nlc3Npb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJveHlUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wcm94eVZpZGVvVG9rZW47XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1c2luZXNzUm9sZSgpOiBUYXNCdXNpbmVzc1JvbGUge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRCdXNpbmVzc1JvbGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTXV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNNdXRlZFN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8vIFZpZXcgTW9kZSBNZXRob2RzXG4gIHB1YmxpYyBzZXRWaWV3TW9kZShtb2RlOiBWaWV3TW9kZSk6IHZvaWQge1xuICAgIHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQobW9kZSk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb25JZCAmJiB0aGlzLmN1cnJlbnRUb2tlbikge1xuICAgICAgdGhpcy5zYXZlU2Vzc2lvblN0YXRlKFxuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uSWQsXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLFxuICAgICAgICBtb2RlLFxuICAgICAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc1JvbGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGVudGVyUGlwTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLlBJUCk7XG4gICAgaWYgKHRoaXMuY3VycmVudFNlc3Npb25JZCAmJiB0aGlzLmN1cnJlbnRUb2tlbikge1xuICAgICAgdGhpcy5zYXZlU2Vzc2lvblN0YXRlKFxuICAgICAgICB0aGlzLmN1cnJlbnRTZXNzaW9uSWQsXG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuLFxuICAgICAgICBWaWV3TW9kZS5QSVAsXG4gICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZXhpdFBpcE1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5GVUxMU0NSRUVOKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbklkICYmIHRoaXMuY3VycmVudFRva2VuKSB7XG4gICAgICB0aGlzLnNhdmVTZXNzaW9uU3RhdGUoXG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCxcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4sXG4gICAgICAgIFZpZXdNb2RlLkZVTExTQ1JFRU4sXG4gICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQaXBNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZpZXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBWaWV3TW9kZS5QSVA7XG4gIH1cblxuICAvLyBBdWRpbyBDb250cm9sXG4gIHB1YmxpYyB0b2dnbGVNdXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnB1Ymxpc2hlcikge1xuICAgICAgY29uc3QgbmV3TXV0ZVN0YXRlID0gIXRoaXMuaXNNdXRlZFN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgIGNvbnN0IHNob3VsZEVuYWJsZUF1ZGlvID0gIW5ld011dGVTdGF0ZTtcblxuICAgICAgLy8gVXNlIE9wZW5Ub2sncyBwdWJsaXNoQXVkaW9cbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyhzaG91bGRFbmFibGVBdWRpbyk7XG5cbiAgICAgIC8vIEFsc28gZGlyZWN0bHkgY29udHJvbCB0aGUgTWVkaWFTdHJlYW1UcmFjayBhcyBiYWNrdXBcbiAgICAgIGNvbnN0IGF1ZGlvVHJhY2sgPSB0aGlzLnB1Ymxpc2hlci5nZXRBdWRpb1NvdXJjZT8uKCk7XG4gICAgICBpZiAoYXVkaW9UcmFjaykge1xuICAgICAgICBhdWRpb1RyYWNrLmVuYWJsZWQgPSBzaG91bGRFbmFibGVBdWRpbztcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG5ld011dGVTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE11dGUobXV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wdWJsaXNoZXIpIHtcbiAgICAgIHRoaXMucHVibGlzaGVyLnB1Ymxpc2hBdWRpbyghbXV0ZWQpO1xuICAgICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KG11dGVkKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXNzaW9uIE1hbmFnZW1lbnRcbiAgcHVibGljIGRpc2Nvbm5lY3RTZXNzaW9uKGNsZWFyU3RvcmFnZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICdbVEFTIERFQlVHXSBUYXNTZXJ2aWNlLmRpc2Nvbm5lY3RTZXNzaW9uIGNhbGxlZC4gY2xlYXJTdG9yYWdlOicsXG4gICAgICBjbGVhclN0b3JhZ2VcbiAgICApO1xuXG4gICAgLy8gQ2FsbCBmaW5pc2hTZXNzaW9uIGJlZm9yZSBkaXNjb25uZWN0aW5nIGlmIHdlIGhhdmUgYSBzZXNzaW9uSWRcbiAgICBjb25zdCBzZXNzaW9uSWRUb0ZpbmlzaCA9IHRoaXMuY3VycmVudFNlc3Npb25JZDtcblxuICAgIC8vIENsZWFyIHN0b3JhZ2UgRklSU1QgdG8gcHJldmVudCBhbnkgcmFjZSBjb25kaXRpb25zIHdoZXJlIHN0YXRlIG1pZ2h0IGJlIHNhdmVkIGFmdGVyIGRpc2Nvbm5lY3RcbiAgICBpZiAoY2xlYXJTdG9yYWdlKSB7XG4gICAgICB0aGlzLmNsZWFyU2Vzc2lvblN0YXRlKCk7XG4gICAgICAvLyBTZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoaXMgc2Vzc2lvbiB3YXMgaW50ZW50aW9uYWxseSBkaXNjb25uZWN0ZWRcbiAgICAgIC8vIFRoaXMgcHJldmVudHMgcmVjb25uZWN0aW9uIG9uIHBhZ2UgcmVsb2FkXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuRElTQ09OTkVDVEVEX0ZMQUdfS0VZLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLnNlc3Npb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnB1Ymxpc2hlciA9IG51bGw7XG4gICAgdGhpcy5zdWJzY3JpYmVycyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgIHRoaXMucHJveHlWaWRlb1Nlc3Npb25JZCA9IG51bGw7XG4gICAgdGhpcy5wcm94eVZpZGVvVG9rZW4gPSBudWxsO1xuICAgIHRoaXMuaXNNdXRlZFN1YmplY3QubmV4dChmYWxzZSk7IC8vIFJlc2V0IG11dGUgc3RhdGVcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5ESVNDT05ORUNURUQpO1xuXG4gICAgLy8gQ2FsbCBwcm94eSBmaW5pc2ggYWZ0ZXIgZGlzY29ubmVjdGluZyAob25seSBpZiBub3QgYWxyZWFkeSBmaW5pc2hpbmcpXG4gICAgaWYgKHNlc3Npb25JZFRvRmluaXNoICYmICF0aGlzLmlzRmluaXNoaW5nU2Vzc2lvbikge1xuICAgICAgdGhpcy5pc0ZpbmlzaGluZ1Nlc3Npb24gPSB0cnVlO1xuICAgICAgdGhpcy5maW5pc2hQcm94eVZpZGVvU2Vzc2lvbih7XG4gICAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkVG9GaW5pc2gsXG4gICAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlLFxuICAgICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNlc3Npb24gZmluaXNoZWQgc3VjY2Vzc2Z1bGx5OicsIHJlc3BvbnNlKTtcbiAgICAgICAgICB0aGlzLmlzRmluaXNoaW5nU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gRXJyb3IgZmluaXNoaW5nIHNlc3Npb246JywgZXJyb3IpO1xuICAgICAgICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDYWxsQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhbGxTdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKSA9PT0gQ2FsbFN0YXRlLkNPTk5FQ1RFRDtcbiAgfVxuXG4gIC8vIFN0YXRlIFBlcnNpc3RlbmNlXG4gIHByaXZhdGUgc2F2ZVNlc3Npb25TdGF0ZShcbiAgICBzZXNzaW9uSWQ6IHN0cmluZyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIHZpZXdNb2RlOiBWaWV3TW9kZSxcbiAgICBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgdG9rZW4sXG4gICAgICB2aWV3TW9kZSxcbiAgICAgIGJ1c2luZXNzUm9sZSxcbiAgICB9O1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSwgSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJTZXNzaW9uU3RhdGUoKTogdm9pZCB7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlNUT1JBR0VfS0VZKTtcbiAgICAvLyBBbHNvIGNsZWFyIHRoZSBkaXNjb25uZWN0ZWQgZmxhZyB3aGVuIGNsZWFyaW5nIHN0YXRlXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkRJU0NPTk5FQ1RFRF9GTEFHX0tFWSk7XG4gIH1cblxuICBwdWJsaWMgY2FuUmVzdG9yZVNlc3Npb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZKTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0b3JlU2Vzc2lvbihjb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2F2ZWRTdGF0ZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSk7XG4gICAgaWYgKCFzYXZlZFN0YXRlKSByZXR1cm47XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIHNlc3Npb24gd2FzIGludGVudGlvbmFsbHkgZGlzY29ubmVjdGVkXG4gICAgLy8gSWYgc28sIGRvbid0IHJlc3RvcmUgaXQgb24gcGFnZSByZWxvYWRcbiAgICBjb25zdCB3YXNEaXNjb25uZWN0ZWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuRElTQ09OTkVDVEVEX0ZMQUdfS0VZKTtcbiAgICBpZiAod2FzRGlzY29ubmVjdGVkID09PSAndHJ1ZScpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBTZXNzaW9uIHdhcyBpbnRlbnRpb25hbGx5IGRpc2Nvbm5lY3RlZCwgc2tpcHBpbmcgcmVzdG9yZScpO1xuICAgICAgdGhpcy5jbGVhclNlc3Npb25TdGF0ZSgpO1xuICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkRJU0NPTk5FQ1RFRF9GTEFHX0tFWSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRG9uJ3QgcmVzdG9yZSBpZiB3ZSdyZSBhbHJlYWR5IGRpc2Nvbm5lY3RlZCBvciBpZiB0aGVyZSdzIG5vIGFjdGl2ZSBzZXNzaW9uXG4gICAgLy8gVGhpcyBwcmV2ZW50cyByZXN0b3Jpbmcgc2Vzc2lvbnMgdGhhdCB3ZXJlIHByb3Blcmx5IGRpc2Nvbm5lY3RlZFxuICAgIGlmICh0aGlzLmNhbGxTdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKSA9PT0gQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIENhbGwgc3RhdGUgaXMgRElTQ09OTkVDVEVELCBza2lwcGluZyByZXN0b3JlJyk7XG4gICAgICB0aGlzLmNsZWFyU2Vzc2lvblN0YXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRlID0gSlNPTi5wYXJzZShzYXZlZFN0YXRlKTtcbiAgICAgIGlmIChzdGF0ZS5zZXNzaW9uSWQgJiYgc3RhdGUudG9rZW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFJlc3RvcmluZyBzZXNzaW9uIGZyb20gc3RvcmFnZScpO1xuICAgICAgICAvLyBGb3JjZSBQaVAgbW9kZSBmb3IgcmVzdG9yYXRpb24gdG8gZW5zdXJlIFVJIGNvbnNpc3RlbmN5XG4gICAgICAgIHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQoVmlld01vZGUuUElQKTtcblxuICAgICAgICBpZiAoc3RhdGUuYnVzaW5lc3NSb2xlKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlID0gc3RhdGUuYnVzaW5lc3NSb2xlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb25uZWN0U2Vzc2lvbihcbiAgICAgICAgICBzdGF0ZS5zZXNzaW9uSWQsXG4gICAgICAgICAgc3RhdGUudG9rZW4sXG4gICAgICAgICAgY29udGFpbmVySWQsIC8vIFVzZSB0aGUgc2FtZSBjb250YWluZXIgZm9yIGJvdGggc2luY2Ugd2UgYXJlIGluIFBpUFxuICAgICAgICAgIGNvbnRhaW5lcklkLFxuICAgICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZVxuICAgICAgICApXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNlc3Npb24gcmVzdG9yZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgICAvLyBDbGVhciB0aGUgZGlzY29ubmVjdGVkIGZsYWcgaWYgcmVzdG9yYXRpb24gc3VjY2VlZHNcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5ESVNDT05ORUNURURfRkxBR19LRVkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIEZhaWxlZCB0byByZXN0b3JlIHNlc3Npb246JywgZXJyKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RhdGUoKTsgLy8gQ2xlYXIgYmFkIHN0YXRlXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gRXJyb3IgcGFyc2luZyBzYXZlZCBzZXNzaW9uIHN0YXRlJywgZSk7XG4gICAgICB0aGlzLmNsZWFyU2Vzc2lvblN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQVBJIE1ldGhvZHNcbiAgLyoqXG4gICAqIFBST1hZIGNpcmN1aXQgdG9rZW46IC92Mi9wcm94eS92aWRlby9zdGFydFxuICAgKi9cbiAgcHVibGljIHN0YXJ0UHJveHlWaWRlb1Nlc3Npb24oXG4gICAgcGF5bG9hZDogU3RhcnRTZXNzaW9uUmVxdWVzdFxuICApOiBPYnNlcnZhYmxlPEdlbmVyYXRlVG9rZW5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wb3N0PEdlbmVyYXRlVG9rZW5SZXNwb25zZT4oJ3YyL3Byb3h5L3ZpZGVvL3N0YXJ0Jywge1xuICAgICAgICBib2R5OiBwYXlsb2FkLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBHZW5lcmF0ZVRva2VuUmVzcG9uc2UpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RBUyBTZXJ2aWNlOiBzdGFydFByb3h5VmlkZW9TZXNzaW9uIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUFJPWFkgY2lyY3VpdCBzdGF0dXM6IC92Mi9wcm94eS92aWRlby9zdGF0dXNcbiAgICovXG4gIHB1YmxpYyBnZXRQcm94eVZpZGVvU3RhdHVzKFxuICAgIHBheWxvYWQ6IFByb3h5VmlkZW9TdGF0dXNSZXF1ZXN0XG4gICk6IE9ic2VydmFibGU8UHJveHlWaWRlb1N0YXR1c1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBvc3Q8UHJveHlWaWRlb1N0YXR1c1Jlc3BvbnNlPigndjIvcHJveHkvdmlkZW8vc3RhdHVzJywge1xuICAgICAgICBib2R5OiBwYXlsb2FkLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBQcm94eVZpZGVvU3RhdHVzUmVzcG9uc2UpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RBUyBTZXJ2aWNlOiBnZXRQcm94eVZpZGVvU3RhdHVzIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUFJPWFkgY2lyY3VpdCB1c2VyIG1vZGlmaWNhdGlvbjogL3YyL3Byb3h5L3ZpZGVvL3VzZXIvbW9kaWZ5XG4gICAqL1xuICBwdWJsaWMgbW9kaWZ5UHJveHlWaWRlb1VzZXIocGF5bG9hZDogUHJveHlWaWRlb1VzZXJNb2RpZnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAucGF0Y2g8YW55PigndjIvcHJveHkvdmlkZW8vdXNlci9tb2RpZnknLCB7XG4gICAgICAgIGJvZHk6IHBheWxvYWQsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RBUyBTZXJ2aWNlOiBtb2RpZnlQcm94eVZpZGVvVXNlciBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbmlzaFByb3h5VmlkZW9TZXNzaW9uKHBheWxvYWQ6IFByb3h5VmlkZW9GaW5pc2hSZXF1ZXN0KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBvc3Q8RmluaXNoU2Vzc2lvblJlc3BvbnNlPigndjIvcHJveHkvdmlkZW8vZmluaXNoJywge1xuICAgICAgICBib2R5OiBwYXlsb2FkLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZSBhcyBGaW5pc2hTZXNzaW9uUmVzcG9uc2UpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RBUyBTZXJ2aWNlOiBmaW5pc2hQcm94eVZpZGVvU2Vzc2lvbiBmYWlsZWQnLCBlcnJvcik7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGF1dG9tYXRpYyBzdGF0dXMgcG9sbGluZyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICogU3RhdHVzIGlzIHBvbGxlZCBldmVyeSBTVEFUVVNfUE9MTF9JTlRFUlZBTF9NUyBtaWxsaXNlY29uZHMuXG4gICAqL1xuXG5cbiAgLyoqXG4gICAqIFN0b3AgYXV0b21hdGljIHN0YXR1cyBwb2xsaW5nLlxuICAgKi9cblxuXG4gIC8qKlxuICAgKiBGZXRjaCBzdGF0dXMgYW5kIHByb2Nlc3MgdGhlIHJlc3BvbnNlLlxuICAgKi9cbiAgcHJpdmF0ZSBmZXRjaEFuZFByb2Nlc3NTdGF0dXMocGFyYW1zOiBQcm94eVZpZGVvU3RhdHVzUmVxdWVzdCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UHJveHlWaWRlb1N0YXR1cyhwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RhdHVzUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUQVMgREVCVUddIFN0YXR1cyBwb2xsaW5nIGVycm9yOicsIGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3Mgc3RhdHVzIHJlc3BvbnNlIHRvIHVwZGF0ZSB3YWl0aW5nIHJvb20gdXNlcnMgYW5kIG93bmVyIGpvaW4gc3RhdHVzLlxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzU3RhdHVzUmVzcG9uc2UocmVzcG9uc2U6IFByb3h5VmlkZW9TdGF0dXNSZXNwb25zZSk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZXNwb25zZS5jb250ZW50O1xuXG4gICAgLy8gVXBkYXRlIHZpZGVvQ2FsbElkIGlmIGF2YWlsYWJsZVxuICAgIGlmIChjb250ZW50LnZpZGVvQ2FsbElkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRWaWRlb0NhbGxJZCA9IGNvbnRlbnQudmlkZW9DYWxsSWQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNlc3Npb25JZCBpZiBhdmFpbGFibGVcbiAgICBpZiAoY29udGVudC5zZXNzaW9uSWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCA9IGNvbnRlbnQuc2Vzc2lvbklkO1xuICAgICAgdGhpcy5wcm94eVZpZGVvU2Vzc2lvbklkID0gY29udGVudC5zZXNzaW9uSWQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGpvaW5hYmxlIHN0YXR1c1xuICAgIHRoaXMuam9pbmFibGVTdWJqZWN0Lm5leHQoY29udGVudC5qb2luYWJsZSk7XG5cbiAgICAvLyBDaGVjayBpZiBvd25lciBoYXMgam9pbmVkXG4gICAgY29uc3Qgb3duZXJKb2luZWQgPSB0aGlzLmNoZWNrSWZPd25lckpvaW5lZChjb250ZW50LnVzZXJzKTtcbiAgICB0aGlzLm93bmVySGFzSm9pbmVkU3ViamVjdC5uZXh0KG93bmVySm9pbmVkKTtcblxuICAgIC8vIERldGVjdCBpZiBvd25lciBsZWZ0OiB3YXMgcHJlc2VudCwgbm93IG5vdCBwcmVzZW50XG4gICAgaWYgKHRoaXMud2FzT3duZXJQcmVzZW50ICYmICFvd25lckpvaW5lZCkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIE93bmVyIGhhcyBsZWZ0IHRoZSBzZXNzaW9uJyk7XG4gICAgICB0aGlzLm93bmVySGFzTGVmdFN1YmplY3QubmV4dCh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAob3duZXJKb2luZWQpIHtcbiAgICAgIHRoaXMud2FzT3duZXJQcmVzZW50ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHdhaXRpbmcgcm9vbSB1c2VycyAoc3RhdHVzID09PSBXQUlUSU5HKVxuICAgIGNvbnN0IHdhaXRpbmdVc2VyczogV2FpdGluZ1Jvb21Vc2VyW10gPSBjb250ZW50LnVzZXJzXG4gICAgICAuZmlsdGVyKCh1KSA9PiAodS5zdGF0dXMgYXMgc3RyaW5nKSA9PT0gJ1dBSVRJTkcnKVxuICAgICAgLm1hcCgodSkgPT4gKHtcbiAgICAgICAgdXNlcklkOiB1LnVzZXJJZCxcbiAgICAgICAgbmFtZTogYFVzZXIgJHt1LnVzZXJJZH1gLCAvLyBUT0RPOiBGZXRjaCBhY3R1YWwgdXNlciBuYW1lcyBmcm9tIGEgdXNlciBzZXJ2aWNlXG4gICAgICAgIHN0YXR1czogUm9vbVVzZXJTdGF0dXMuV0FJVElORyxcbiAgICAgIH0pKTtcblxuICAgIHRoaXMud2FpdGluZ1Jvb21Vc2Vyc1N1YmplY3QubmV4dCh3YWl0aW5nVXNlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGF0IGxlYXN0IG9uZSBPV05FUiBoYXMgam9pbmVkIHRoZSBjYWxsLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0lmT3duZXJKb2luZWQoXG4gICAgdXNlcnM6IHsgdXNlcklkOiBudW1iZXI7IHJvbDogc3RyaW5nOyBzdGF0dXM6IHN0cmluZyB9W11cbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHVzZXJzLnNvbWUoXG4gICAgICAodSkgPT4gdS5yb2wgPT09IFRhc1VzZXJSb2xlLk9XTkVSICYmIHUuc3RhdHVzID09PSAnSk9JTkVEJ1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRtaXQgYSB1c2VyIGZyb20gdGhlIHdhaXRpbmcgcm9vbSBieSBjaGFuZ2luZyB0aGVpciBzdGF0dXMuXG4gICAqL1xuICBwdWJsaWMgYWRtaXRVc2VyRnJvbVdhaXRpbmdSb29tKFxuICAgIHVzZXJJZDogbnVtYmVyLFxuICAgIHZpZGVvQ2FsbElkOiBudW1iZXJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5tb2RpZnlQcm94eVZpZGVvVXNlcih7XG4gICAgICB1c2VySWQsXG4gICAgICB2aWRlb0NhbGxJZCxcbiAgICAgIGFjdGlvbjogVXNlckNhbGxBY3Rpb24uV0FJVElOR19ST09NX0xFQVZFLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gR2V0dGVycyBmb3IgY3VycmVudCBjYWxsIGNvbnRleHRcbiAgcHVibGljIGdldCBhcHBvaW50bWVudElkKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRBcHBvaW50bWVudElkO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWRlb0NhbGxJZCgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VmlkZW9DYWxsSWQ7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gYSBUb2tCb3ggdmlkZW8gc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIGNvbm5lY3RTZXNzaW9uKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgcHVibGlzaGVyRWxlbWVudDogc3RyaW5nLFxuICAgIHN1YnNjcmliZXJFbGVtZW50OiBzdHJpbmcsXG4gICAgYnVzaW5lc3NSb2xlOiBUYXNCdXNpbmVzc1JvbGUgPSBUYXNCdXNpbmVzc1JvbGUuVVNFUlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuQ09OTkVDVElORyk7XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICAgIHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlID0gYnVzaW5lc3NSb2xlO1xuICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gZmFsc2U7IC8vIFJlc2V0IGZsYWcgZm9yIG5ldyBzZXNzaW9uXG5cbiAgICAvLyBTYXZlIGluaXRpYWwgc3RhdGUgKGRlZmF1bHRpbmcgdG8gY3VycmVudCB2aWV3IG1vZGUpXG4gICAgdGhpcy5zYXZlU2Vzc2lvblN0YXRlKFxuICAgICAgc2Vzc2lvbklkLFxuICAgICAgdG9rZW4sXG4gICAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5nZXRWYWx1ZSgpLFxuICAgICAgYnVzaW5lc3NSb2xlXG4gICAgKTtcbiAgICAvLyBDbGVhciB0aGUgZGlzY29ubmVjdGVkIGZsYWcgd2hlbiBzdGFydGluZyBhIG5ldyBjb25uZWN0aW9uXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkRJU0NPTk5FQ1RFRF9GTEFHX0tFWSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCFPVC5jaGVja1N5c3RlbVJlcXVpcmVtZW50cygpKSB7XG4gICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5FUlJPUik7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ0Jyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCBUb2tCb3gnKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXNzaW9uID0gT1QuaW5pdFNlc3Npb24odGhpcy5jb25maWcudG9rQm94QXBpS2V5LCBzZXNzaW9uSWQpO1xuXG4gICAgICAvLyBIYW5kbGUgbmV3IHN0cmVhbXMgKHJlbW90ZSBwYXJ0aWNpcGFudHMgam9pbmluZylcbiAgICAgIHRoaXMuc2Vzc2lvbi5vbignc3RyZWFtQ3JlYXRlZCcsIChldmVudCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpYmVyID0gdGhpcy5zZXNzaW9uPy5zdWJzY3JpYmUoXG4gICAgICAgICAgZXZlbnQuc3RyZWFtLFxuICAgICAgICAgIHN1YnNjcmliZXJFbGVtZW50LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGluc2VydE1vZGU6ICdhcHBlbmQnLFxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc3Vic2NyaWJpbmcgdG8gc3RyZWFtOicsIGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGlmIChzdWJzY3JpYmVyKSB7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gSGFuZGxlIHN0cmVhbXMgZW5kaW5nIChyZW1vdGUgcGFydGljaXBhbnRzIGxlYXZpbmcpXG4gICAgICB0aGlzLnNlc3Npb24ub24oJ3N0cmVhbURlc3Ryb3llZCcsIChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZXJzID0gdGhpcy5zdWJzY3JpYmVycy5maWx0ZXIoXG4gICAgICAgICAgKHN1YikgPT4gc3ViLnN0cmVhbT8uc3RyZWFtSWQgIT09IGV2ZW50LnN0cmVhbS5zdHJlYW1JZFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIEhhbmRsZSBzZXNzaW9uIGRpc2Nvbm5lY3Rpb25cbiAgICAgIHRoaXMuc2Vzc2lvbi5vbignc2Vzc2lvbkRpc2Nvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCk7XG5cbiAgICAgICAgLy8gQ2FsbCBmaW5pc2hTZXNzaW9uIHdoZW4gc2Vzc2lvbiBpcyBkaXNjb25uZWN0ZWQgKGUuZy4sIGJ5IHNlcnZlcilcbiAgICAgICAgLy8gT25seSBjYWxsIGlmIG5vdCBhbHJlYWR5IGZpbmlzaGluZyAocHJldmVudHMgZHVwbGljYXRlIGNhbGxzKVxuICAgICAgICBjb25zdCBzZXNzaW9uSWRUb0ZpbmlzaCA9IHRoaXMuY3VycmVudFNlc3Npb25JZDtcbiAgICAgICAgaWYgKHNlc3Npb25JZFRvRmluaXNoICYmICF0aGlzLmlzRmluaXNoaW5nU2Vzc2lvbikge1xuICAgICAgICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZpbmlzaFByb3h5VmlkZW9TZXNzaW9uKHtcbiAgICAgICAgICAgIHNlc3Npb25JZDogc2Vzc2lvbklkVG9GaW5pc2gsXG4gICAgICAgICAgICBidXNpbmVzc1JvbGU6IHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZSxcbiAgICAgICAgICB9KS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbVEFTIERFQlVHXSBTZXNzaW9uIGZpbmlzaGVkIG9uIGRpc2Nvbm5lY3QgZXZlbnQ6JywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICB0aGlzLmlzRmluaXNoaW5nU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gRXJyb3IgZmluaXNoaW5nIHNlc3Npb24gb24gZGlzY29ubmVjdDonLCBlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQ29ubmVjdCB0byBzZXNzaW9uXG4gICAgICB0aGlzLnNlc3Npb24uY29ubmVjdCh0b2tlbiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbm5lY3RpbmcgdG8gc2Vzc2lvbjonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgcHVibGlzaGVyIChsb2NhbCB2aWRlbylcbiAgICAgICAgdGhpcy5wdWJsaXNoZXIgPSBPVC5pbml0UHVibGlzaGVyKFxuICAgICAgICAgIHB1Ymxpc2hlckVsZW1lbnQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zZXJ0TW9kZTogJ2FwcGVuZCcsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluaXRpYWxpemluZyBwdWJsaXNoZXI6JywgZXJyKTtcbiAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gUHVibGlzaCB0byBzZXNzaW9uXG4gICAgICAgICAgICB0aGlzLnNlc3Npb24/LnB1Ymxpc2godGhpcy5wdWJsaXNoZXIsIChwdWJFcnIpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHB1YkVycikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHB1Ymxpc2hpbmcgc3RyZWFtOicsIHB1YkVycik7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgICAgICAgICByZWplY3QocHViRXJyKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuQ09OTkVDVEVEKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVmlkZW8gRWxlbWVudCBNb3ZlbWVudCBNZXRob2RzXG4gIHB1YmxpYyBtb3ZlUHVibGlzaGVyVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wdWJsaXNoZXIpIHJldHVybjtcblxuICAgIGNvbnN0IHB1Ymxpc2hlckVsZW1lbnQgPSB0aGlzLnB1Ymxpc2hlci5lbGVtZW50O1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcblxuICAgIGlmIChwdWJsaXNoZXJFbGVtZW50ICYmIG5ld0NvbnRhaW5lcikge1xuICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHB1Ymxpc2hlckVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb3ZlU3Vic2NyaWJlcnNUbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmV3Q29udGFpbmVySWQpO1xuICAgIGlmICghbmV3Q29udGFpbmVyKSByZXR1cm47XG5cbiAgICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2goKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmliZXJFbGVtZW50ID0gc3Vic2NyaWJlci5lbGVtZW50O1xuICAgICAgaWYgKHN1YnNjcmliZXJFbGVtZW50KSB7XG4gICAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdWJzY3JpYmVyRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdGhlIG1haW4gdmlkZW8gKHN1YnNjcmliZXIgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgcHVibGlzaGVyKSB0byBhIGNvbnRhaW5lci5cbiAgICogVXNlZCBmb3IgUGlQIG1vZGUgdG8gc2hvdyBvbmx5IG9uZSB2aWRlby5cbiAgICovXG4gIHB1YmxpYyBtb3ZlTWFpblZpZGVvVG8obmV3Q29udGFpbmVySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5ld0NvbnRhaW5lcklkKTtcbiAgICBpZiAoIW5ld0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgLy8gUHJlZmVyIHJlbW90ZSB2aWRlbyAoc3Vic2NyaWJlcikgYXMgbWFpblxuICAgIGlmICh0aGlzLnN1YnNjcmliZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5zdWJzY3JpYmVyc1swXS5lbGVtZW50KSB7XG4gICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zdWJzY3JpYmVyc1swXS5lbGVtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBGYWxsIGJhY2sgdG8gbG9jYWwgdmlkZW8gKHB1Ymxpc2hlcilcbiAgICBpZiAodGhpcy5wdWJsaXNoZXI/LmVsZW1lbnQpIHtcbiAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnB1Ymxpc2hlci5lbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW92ZXMgdmlkZW9zIGJhY2sgdG8gZnVsbHNjcmVlbiBjb250YWluZXJzXG4gICAqL1xuICBwdWJsaWMgbW92ZVZpZGVvc1RvRnVsbHNjcmVlbigpOiB2b2lkIHtcbiAgICB0aGlzLm1vdmVTdWJzY3JpYmVyc1RvKCdzdWJzY3JpYmVyLWNvbnRhaW5lcicpO1xuICAgIHRoaXMubW92ZVB1Ymxpc2hlclRvKCdwdWJsaXNoZXItY29udGFpbmVyJyk7XG4gIH1cbn1cbiJdfQ==
610
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YXMtdWVsbC1zZGsvc3JjL2xpYi9zZXJ2aWNlcy90YXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEVBUUwsY0FBYyxFQUNkLGNBQWMsRUFFZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFNBQVMsRUFDVCxRQUFRLEdBSVQsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsR0FHaEIsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFOUIsNkNBQTZDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFLaEYsTUFBTSxPQUFPLFVBQVU7SUE2RHJCLFlBQ21DLFVBQXlCLEVBQzlCLE1BQWlCO1FBRFosZUFBVSxHQUFWLFVBQVUsQ0FBZTtRQUM5QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBOUR2QyxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFFbEMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLGVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFakQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FB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LEVBQUU7WUFDOUQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE9BQU87U0FDUjtRQUVELHVDQUF1QztRQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFO1lBQzNCLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsQ0FBQzs7d0dBeHZCVSxVQUFVLGtCQThEWCxlQUFlLGFBQ2YsVUFBVTs0R0EvRFQsVUFBVSxjQUZULE1BQU07NEZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQStESSxNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgT1QgZnJvbSAnQG9wZW50b2svY2xpZW50JztcbmltcG9ydCB7XG4gIEdlbmVyYXRlVG9rZW5SZXNwb25zZSxcbiAgU3RhcnRTZXNzaW9uUmVxdWVzdCxcbiAgRmluaXNoU2Vzc2lvblJlc3BvbnNlLFxuICBQcm94eVZpZGVvU3RhdHVzUmVxdWVzdCxcbiAgUHJveHlWaWRlb1N0YXR1c1Jlc3BvbnNlLFxuICBQcm94eVZpZGVvRmluaXNoUmVxdWVzdCxcbiAgUHJveHlWaWRlb1VzZXJNb2RpZnlSZXF1ZXN0LFxuICBVc2VyQ2FsbEFjdGlvbixcbiAgUm9vbVVzZXJTdGF0dXMsXG4gIFRhc0N1cnJlbnRVc2VyLFxuICBUYXNCdXNpbmVzc1JvbGUsXG4gIFRhc1VzZXJSb2xlLFxuICBDYWxsU3RhdGUsXG4gIFZpZXdNb2RlLFxuICBXYWl0aW5nUm9vbVVzZXIsXG4gIFRhc0FwcG9pbnRtZW50LFxuICBHZXRBcHBvaW50bWVudHNSZXF1ZXN0LFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFRBU19DT05GSUcsXG4gIFRBU19IVFRQX0NMSUVOVCxcbiAgVGFzQ29uZmlnLFxuICBUYXNIdHRwQ2xpZW50LFxufSBmcm9tICcuLi9jb25maWcvdGFzLmNvbmZpZyc7XG5cbi8vIFJlLWV4cG9ydCBlbnVtcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHsgQ2FsbFN0YXRlLCBWaWV3TW9kZSwgVGFzQnVzaW5lc3NSb2xlLCBVc2VyQ2FsbEFjdGlvbiwgUm9vbVVzZXJTdGF0dXMgfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhc1NlcnZpY2Uge1xuICBwcml2YXRlIHNlc3Npb246IE9ULlNlc3Npb24gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwdWJsaXNoZXI6IE9ULlB1Ymxpc2hlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHN1YnNjcmliZXJzOiBPVC5TdWJzY3JpYmVyW10gPSBbXTtcblxuICBwcml2YXRlIGNhbGxTdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhbGxTdGF0ZT4oQ2FsbFN0YXRlLklETEUpO1xuICBwdWJsaWMgY2FsbFN0YXRlJCA9IHRoaXMuY2FsbFN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHZpZXdNb2RlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld01vZGU+KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICBwdWJsaWMgdmlld01vZGUkID0gdGhpcy52aWV3TW9kZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBpc011dGVkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgaXNNdXRlZCQgPSB0aGlzLmlzTXV0ZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIFNlc3Npb24gaW5mbyBmb3IgUGlQIG1vZGUgcmVzdG9yYXRpb25cbiAgcHJpdmF0ZSBjdXJyZW50U2Vzc2lvbklkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IFNUT1JBR0VfS0VZID0gJ3Rhc19zZXNzaW9uX3N0YXRlJztcbiAgcHJpdmF0ZSByZWFkb25seSBESVNDT05ORUNURURfRkxBR19LRVkgPSAndGFzX3Nlc3Npb25fZGlzY29ubmVjdGVkJztcbiAgcHJpdmF0ZSBpc0ZpbmlzaGluZ1Nlc3Npb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBQcm94eS12aWRlbyBjaXJjdWl0IHN0YXRlXG4gIHByaXZhdGUgcHJveHlWaWRlb1Nlc3Npb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcHJveHlWaWRlb1Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50QnVzaW5lc3NSb2xlOiBUYXNCdXNpbmVzc1JvbGUgPSBUYXNCdXNpbmVzc1JvbGUuVVNFUjtcblxuICAvLyBXYWl0aW5nIHJvb20gYW5kIHN0YXR1cyBwb2xsaW5nXG4gIHByaXZhdGUgd2FpdGluZ1Jvb21Vc2Vyc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFdhaXRpbmdSb29tVXNlcltdPihbXSk7XG4gIHB1YmxpYyB3YWl0aW5nUm9vbVVzZXJzJCA9IHRoaXMud2FpdGluZ1Jvb21Vc2Vyc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBvd25lckhhc0pvaW5lZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIG93bmVySGFzSm9pbmVkJCA9IHRoaXMub3duZXJIYXNKb2luZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0cnVlIHdoZW4gb3duZXIgd2FzIHByZXNlbnQgYnV0IHRoZW4gbGVmdFxuICBwcml2YXRlIG93bmVySGFzTGVmdFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIG93bmVySGFzTGVmdCQgPSB0aGlzLm93bmVySGFzTGVmdFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBqb2luYWJsZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGpvaW5hYmxlJCA9IHRoaXMuam9pbmFibGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIE9ic2VydmFibGUgZm9yIHdoZW4gYmFja2VuZCByZXF1ZXN0cyBnZW9sb2NhdGlvbiBhY3RpdmF0aW9uXG4gIHByaXZhdGUgYWN0aXZhdGVHZW9TdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBhY3RpdmF0ZUdlbyQgPSB0aGlzLmFjdGl2YXRlR2VvU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAvLyBPYnNlcnZhYmxlIGZvciB3aGVuIGdlbyByZXF1ZXN0IGlzIGFjdGl2ZSAob3duZXIgd2FpdGluZyBmb3IgdXNlciByZXNwb25zZSlcbiAgcHJpdmF0ZSBnZW9SZXF1ZXN0QWN0aXZlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgZ2VvUmVxdWVzdEFjdGl2ZSQgPSB0aGlzLmdlb1JlcXVlc3RBY3RpdmVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8vIE9ic2VydmFibGUgZm9yIHdoZW4gYWxsIGdlbyBoYXMgYmVlbiBncmFudGVkXG4gIHByaXZhdGUgYWxsR2VvR3JhbnRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGFsbEdlb0dyYW50ZWQkID0gdGhpcy5hbGxHZW9HcmFudGVkU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHN0YXR1c1BvbGxpbmdJbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9QT0xMX0lOVEVSVkFMX01TID0gMzAwMDA7IC8vIERlZmF1bHQgMzBzXG4gIHByaXZhdGUgd2FzT3duZXJQcmVzZW50ID0gZmFsc2U7XG5cbiAgLy8gQ3VycmVudCBjYWxsIGNvbnRleHRcbiAgcHJpdmF0ZSBjdXJyZW50QXBwb2ludG1lbnRJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY3VycmVudFZpZGVvQ2FsbElkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjdXJyZW50VGVuYW50OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRBU19IVFRQX0NMSUVOVCkgcHJpdmF0ZSBodHRwQ2xpZW50OiBUYXNIdHRwQ2xpZW50LFxuICAgIEBJbmplY3QoVEFTX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFRhc0NvbmZpZ1xuICApIHt9XG5cbiAgLy8gLi4uIChHZXR0ZXJzIGFuZCBvdGhlciBtZXRob2RzIHJlbWFpbiB1bmNoYW5nZWQpXG5cbiAgLyoqXG4gICAqIFN0YXJ0IGF1dG9tYXRpYyBzdGF0dXMgcG9sbGluZyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5cbiAgICogU3RhdHVzIGlzIHBvbGxlZCBldmVyeSBpbnRlcnZhbE1zIChkZWZhdWx0IDMwcykuXG4gICAqL1xuICBwdWJsaWMgc3RhcnRTdGF0dXNQb2xsaW5nKFxuICAgIHBhcmFtczogUHJveHlWaWRlb1N0YXR1c1JlcXVlc3QsIFxuICAgIGludGVydmFsTXM6IG51bWJlciA9IHRoaXMuREVGQVVMVF9QT0xMX0lOVEVSVkFMX01TXG4gICk6IHZvaWQge1xuICAgIHRoaXMuc3RvcFN0YXR1c1BvbGxpbmcoKTsgLy8gQ2xlYXIgYW55IGV4aXN0aW5nIHBvbGxpbmdcblxuICAgIC8vIFN0b3JlIGNvbnRleHQgZm9yIHBvbGxpbmdcbiAgICBpZiAocGFyYW1zLnNlc3Npb25JZCkge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkID0gcGFyYW1zLnNlc3Npb25JZDtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5hcHBvaW50bWVudElkKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBcHBvaW50bWVudElkID0gcGFyYW1zLmFwcG9pbnRtZW50SWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMudGVuYW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnRUZW5hbnQgPSBwYXJhbXMudGVuYW50O1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKGBbVEFTIERFQlVHXSBTdGFydGluZyBzdGF0dXMgcG9sbGluZyB3aXRoIGludGVydmFsICR7aW50ZXJ2YWxNc31tc2ApO1xuXG4gICAgLy8gSW5pdGlhbCBzdGF0dXMgZmV0Y2hcbiAgICB0aGlzLmZldGNoQW5kUHJvY2Vzc1N0YXR1cyhwYXJhbXMpO1xuXG4gICAgLy8gU2V0IHVwIHBlcmlvZGljIHBvbGxpbmdcbiAgICB0aGlzLnN0YXR1c1BvbGxpbmdJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuZmV0Y2hBbmRQcm9jZXNzU3RhdHVzKHBhcmFtcyk7XG4gICAgfSwgaW50ZXJ2YWxNcyk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBhdXRvbWF0aWMgc3RhdHVzIHBvbGxpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RvcFN0YXR1c1BvbGxpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsKTtcbiAgICAgIHRoaXMuc3RhdHVzUG9sbGluZ0ludGVydmFsID0gbnVsbDtcbiAgICB9XG4gICAgLy8gRG8gTk9UIHJlc2V0IHdhaXRpbmcgcm9vbSBzdGF0ZSBoZXJlLCBhcyBvdGhlciBjb21wb25lbnRzIG1pZ2h0IG9ic2VydmUgaXRcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCBwb2xsaW5nIHN0YXRlICh3YWl0aW5nIHJvb20sIG93bmVyIHN0YXR1cywgZXRjKVxuICAgKiBDYWxsIHRoaXMgd2hlbiBjb21wbGV0ZWx5IGV4aXRpbmcgdGhlIGZsb3dcbiAgICovXG4gIHB1YmxpYyByZXNldFBvbGxpbmdTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BTdGF0dXNQb2xsaW5nKCk7XG4gICAgdGhpcy53YWl0aW5nUm9vbVVzZXJzU3ViamVjdC5uZXh0KFtdKTtcbiAgICB0aGlzLm93bmVySGFzSm9pbmVkU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLm93bmVySGFzTGVmdFN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy5qb2luYWJsZVN1YmplY3QubmV4dChmYWxzZSk7XG4gICAgdGhpcy53YXNPd25lclByZXNlbnQgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIEdldHRlcnNcbiAgcHVibGljIGdldCBjdXJyZW50U2Vzc2lvbigpOiBPVC5TZXNzaW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFB1Ymxpc2hlcigpOiBPVC5QdWJsaXNoZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wdWJsaXNoZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRTdWJzY3JpYmVycygpOiBPVC5TdWJzY3JpYmVyW10ge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFNlc3Npb25JZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRva2VuO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm94eVNlc3Npb25JZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5wcm94eVZpZGVvU2Vzc2lvbklkO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm94eVRva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnByb3h5VmlkZW9Ub2tlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnVzaW5lc3NSb2xlKCk6IFRhc0J1c2luZXNzUm9sZSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNNdXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8gVmlldyBNb2RlIE1ldGhvZHNcbiAgcHVibGljIHNldFZpZXdNb2RlKG1vZGU6IFZpZXdNb2RlKTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChtb2RlKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbklkICYmIHRoaXMuY3VycmVudFRva2VuKSB7XG4gICAgICB0aGlzLnNhdmVTZXNzaW9uU3RhdGUoXG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCxcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4sXG4gICAgICAgIG1vZGUsXG4gICAgICAgIHRoaXMuY3VycmVudEJ1c2luZXNzUm9sZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW50ZXJQaXBNb2RlKCk6IHZvaWQge1xuICAgIHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQoVmlld01vZGUuUElQKTtcbiAgICBpZiAodGhpcy5jdXJyZW50U2Vzc2lvbklkICYmIHRoaXMuY3VycmVudFRva2VuKSB7XG4gICAgICB0aGlzLnNhdmVTZXNzaW9uU3RhdGUoXG4gICAgICAgIHRoaXMuY3VycmVudFNlc3Npb25JZCxcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4sXG4gICAgICAgIFZpZXdNb2RlLlBJUCxcbiAgICAgICAgdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBleGl0UGlwTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdNb2RlU3ViamVjdC5uZXh0KFZpZXdNb2RlLkZVTExTQ1JFRU4pO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTZXNzaW9uSWQgJiYgdGhpcy5jdXJyZW50VG9rZW4pIHtcbiAgICAgIHRoaXMuc2F2ZVNlc3Npb25TdGF0ZShcbiAgICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkLFxuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbixcbiAgICAgICAgVmlld01vZGUuRlVMTFNDUkVFTixcbiAgICAgICAgdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1BpcE1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCkgPT09IFZpZXdNb2RlLlBJUDtcbiAgfVxuXG4gIC8vIEF1ZGlvIENvbnRyb2xcbiAgcHVibGljIHRvZ2dsZU11dGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHVibGlzaGVyKSB7XG4gICAgICBjb25zdCBuZXdNdXRlU3RhdGUgPSAhdGhpcy5pc011dGVkU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgY29uc3Qgc2hvdWxkRW5hYmxlQXVkaW8gPSAhbmV3TXV0ZVN0YXRlO1xuXG4gICAgICAvLyBVc2UgT3BlblRvaydzIHB1Ymxpc2hBdWRpb1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaEF1ZGlvKHNob3VsZEVuYWJsZUF1ZGlvKTtcblxuICAgICAgLy8gQWxzbyBkaXJlY3RseSBjb250cm9sIHRoZSBNZWRpYVN0cmVhbVRyYWNrIGFzIGJhY2t1cFxuICAgICAgY29uc3QgYXVkaW9UcmFjayA9IHRoaXMucHVibGlzaGVyLmdldEF1ZGlvU291cmNlPy4oKTtcbiAgICAgIGlmIChhdWRpb1RyYWNrKSB7XG4gICAgICAgIGF1ZGlvVHJhY2suZW5hYmxlZCA9IHNob3VsZEVuYWJsZUF1ZGlvO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzTXV0ZWRTdWJqZWN0Lm5leHQobmV3TXV0ZVN0YXRlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0TXV0ZShtdXRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLnB1Ymxpc2hlcikge1xuICAgICAgdGhpcy5wdWJsaXNoZXIucHVibGlzaEF1ZGlvKCFtdXRlZCk7XG4gICAgICB0aGlzLmlzTXV0ZWRTdWJqZWN0Lm5leHQobXV0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlc3Npb24gTWFuYWdlbWVudFxuICBwdWJsaWMgZGlzY29ubmVjdFNlc3Npb24oY2xlYXJTdG9yYWdlOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ1tUQVMgREVCVUddIFRhc1NlcnZpY2UuZGlzY29ubmVjdFNlc3Npb24gY2FsbGVkLiBjbGVhclN0b3JhZ2U6JyxcbiAgICAgIGNsZWFyU3RvcmFnZVxuICAgICk7XG5cbiAgICAvLyBDYWxsIGZpbmlzaFNlc3Npb24gYmVmb3JlIGRpc2Nvbm5lY3RpbmcgaWYgd2UgaGF2ZSBhIHNlc3Npb25JZFxuICAgIGNvbnN0IHNlc3Npb25JZFRvRmluaXNoID0gdGhpcy5jdXJyZW50U2Vzc2lvbklkO1xuXG4gICAgLy8gQ2xlYXIgc3RvcmFnZSBGSVJTVCB0byBwcmV2ZW50IGFueSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgc3RhdGUgbWlnaHQgYmUgc2F2ZWQgYWZ0ZXIgZGlzY29ubmVjdFxuICAgIGlmIChjbGVhclN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RhdGUoKTtcbiAgICAgIC8vIFNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhpcyBzZXNzaW9uIHdhcyBpbnRlbnRpb25hbGx5IGRpc2Nvbm5lY3RlZFxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyByZWNvbm5lY3Rpb24gb24gcGFnZSByZWxvYWRcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0odGhpcy5ESVNDT05ORUNURURfRkxBR19LRVksICd0cnVlJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2Vzc2lvbikge1xuICAgICAgdGhpcy5zZXNzaW9uLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMuc2Vzc2lvbiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMucHVibGlzaGVyID0gbnVsbDtcbiAgICB0aGlzLnN1YnNjcmliZXJzID0gW107XG4gICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgdGhpcy5wcm94eVZpZGVvU2Vzc2lvbklkID0gbnVsbDtcbiAgICB0aGlzLnByb3h5VmlkZW9Ub2tlbiA9IG51bGw7XG4gICAgdGhpcy5pc011dGVkU3ViamVjdC5uZXh0KGZhbHNlKTsgLy8gUmVzZXQgbXV0ZSBzdGF0ZVxuICAgIHRoaXMudmlld01vZGVTdWJqZWN0Lm5leHQoVmlld01vZGUuRlVMTFNDUkVFTik7XG4gICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkRJU0NPTk5FQ1RFRCk7XG5cbiAgICAvLyBDYWxsIHByb3h5IGZpbmlzaCBhZnRlciBkaXNjb25uZWN0aW5nIChvbmx5IGlmIG5vdCBhbHJlYWR5IGZpbmlzaGluZylcbiAgICBpZiAoc2Vzc2lvbklkVG9GaW5pc2ggJiYgIXRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uKSB7XG4gICAgICB0aGlzLmlzRmluaXNoaW5nU2Vzc2lvbiA9IHRydWU7XG4gICAgICB0aGlzLmZpbmlzaFByb3h5VmlkZW9TZXNzaW9uKHtcbiAgICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRUb0ZpbmlzaCxcbiAgICAgICAgYnVzaW5lc3NSb2xlOiB0aGlzLmN1cnJlbnRCdXNpbmVzc1JvbGUsXG4gICAgICB9KS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2Vzc2lvbiBmaW5pc2hlZCBzdWNjZXNzZnVsbHk6JywgcmVzcG9uc2UpO1xuICAgICAgICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBFcnJvciBmaW5pc2hpbmcgc2Vzc2lvbjonLCBlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc0ZpbmlzaGluZ1Nlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0NhbGxBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBDYWxsU3RhdGUuQ09OTkVDVEVEO1xuICB9XG5cbiAgLy8gU3RhdGUgUGVyc2lzdGVuY2VcbiAgcHJpdmF0ZSBzYXZlU2Vzc2lvblN0YXRlKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIHRva2VuOiBzdHJpbmcsXG4gICAgdmlld01vZGU6IFZpZXdNb2RlLFxuICAgIGJ1c2luZXNzUm9sZTogVGFzQnVzaW5lc3NSb2xlID0gVGFzQnVzaW5lc3NSb2xlLlVTRVJcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB0b2tlbixcbiAgICAgIHZpZXdNb2RlLFxuICAgICAgYnVzaW5lc3NSb2xlLFxuICAgIH07XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclNlc3Npb25TdGF0ZSgpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuU1RPUkFHRV9LRVkpO1xuICAgIC8vIEFsc28gY2xlYXIgdGhlIGRpc2Nvbm5lY3RlZCBmbGFnIHdoZW4gY2xlYXJpbmcgc3RhdGVcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuRElTQ09OTkVDVEVEX0ZMQUdfS0VZKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5SZXN0b3JlU2Vzc2lvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHRoaXMuU1RPUkFHRV9LRVkpO1xuICB9XG5cbiAgcHVibGljIHJlc3RvcmVTZXNzaW9uKGNvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzYXZlZFN0YXRlID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZKTtcbiAgICBpZiAoIXNhdmVkU3RhdGUpIHJldHVybjtcblxuICAgIC8vIENoZWNrIGlmIHRoaXMgc2Vzc2lvbiB3YXMgaW50ZW50aW9uYWxseSBkaXNjb25uZWN0ZWRcbiAgICAvLyBJZiBzbywgZG9uJ3QgcmVzdG9yZSBpdCBvbiBwYWdlIHJlbG9hZFxuICAgIGNvbnN0IHdhc0Rpc2Nvbm5lY3RlZCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0odGhpcy5ESVNDT05ORUNURURfRkxBR19LRVkpO1xuICAgIGlmICh3YXNEaXNjb25uZWN0ZWQgPT09ICd0cnVlJykge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNlc3Npb24gd2FzIGludGVudGlvbmFsbHkgZGlzY29ubmVjdGVkLCBza2lwcGluZyByZXN0b3JlJyk7XG4gICAgICB0aGlzLmNsZWFyU2Vzc2lvblN0YXRlKCk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuRElTQ09OTkVDVEVEX0ZMQUdfS0VZKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBEb24ndCByZXN0b3JlIGlmIHdlJ3JlIGFscmVhZHkgZGlzY29ubmVjdGVkIG9yIGlmIHRoZXJlJ3Mgbm8gYWN0aXZlIHNlc3Npb25cbiAgICAvLyBUaGlzIHByZXZlbnRzIHJlc3RvcmluZyBzZXNzaW9ucyB0aGF0IHdlcmUgcHJvcGVybHkgZGlzY29ubmVjdGVkXG4gICAgaWYgKHRoaXMuY2FsbFN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpID09PSBDYWxsU3RhdGUuRElTQ09OTkVDVEVEKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gQ2FsbCBzdGF0ZSBpcyBESVNDT05ORUNURUQsIHNraXBwaW5nIHJlc3RvcmUnKTtcbiAgICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdGUgPSBKU09OLnBhcnNlKHNhdmVkU3RhdGUpO1xuICAgICAgaWYgKHN0YXRlLnNlc3Npb25JZCAmJiBzdGF0ZS50b2tlbikge1xuICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gUmVzdG9yaW5nIHNlc3Npb24gZnJvbSBzdG9yYWdlJyk7XG4gICAgICAgIC8vIEZvcmNlIFBpUCBtb2RlIGZvciByZXN0b3JhdGlvbiB0byBlbnN1cmUgVUkgY29uc2lzdGVuY3lcbiAgICAgICAgdGhpcy52aWV3TW9kZVN1YmplY3QubmV4dChWaWV3TW9kZS5QSVApO1xuXG4gICAgICAgIGlmIChzdGF0ZS5idXNpbmVzc1JvbGUpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc1JvbGUgPSBzdGF0ZS5idXNpbmVzc1JvbGU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbm5lY3RTZXNzaW9uKFxuICAgICAgICAgIHN0YXRlLnNlc3Npb25JZCxcbiAgICAgICAgICBzdGF0ZS50b2tlbixcbiAgICAgICAgICBjb250YWluZXJJZCwgLy8gVXNlIHRoZSBzYW1lIGNvbnRhaW5lciBmb3IgYm90aCBzaW5jZSB3ZSBhcmUgaW4gUGlQXG4gICAgICAgICAgY29udGFpbmVySWQsXG4gICAgICAgICAgdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlXG4gICAgICAgIClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gU2Vzc2lvbiByZXN0b3JlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICAgIC8vIENsZWFyIHRoZSBkaXNjb25uZWN0ZWQgZmxhZyBpZiByZXN0b3JhdGlvbiBzdWNjZWVkc1xuICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkRJU0NPTk5FQ1RFRF9GTEFHX0tFWSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gRmFpbGVkIHRvIHJlc3RvcmUgc2Vzc2lvbjonLCBlcnIpO1xuICAgICAgICAgICAgdGhpcy5jbGVhclNlc3Npb25TdGF0ZSgpOyAvLyBDbGVhciBiYWQgc3RhdGVcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBFcnJvciBwYXJzaW5nIHNhdmVkIHNlc3Npb24gc3RhdGUnLCBlKTtcbiAgICAgIHRoaXMuY2xlYXJTZXNzaW9uU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBBUEkgTWV0aG9kc1xuICAvKipcbiAgICogUFJPWFkgY2lyY3VpdCB0b2tlbjogL3YyL3Byb3h5L3ZpZGVvL3N0YXJ0XG4gICAqL1xuICBwdWJsaWMgc3RhcnRQcm94eVZpZGVvU2Vzc2lvbihcbiAgICBwYXlsb2FkOiBTdGFydFNlc3Npb25SZXF1ZXN0XG4gICk6IE9ic2VydmFibGU8R2VuZXJhdGVUb2tlblJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLnBvc3Q8R2VuZXJhdGVUb2tlblJlc3BvbnNlPigndjIvcHJveHkvdmlkZW8vc3RhcnQnLCB7XG4gICAgICAgIGJvZHk6IHBheWxvYWQsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIEdlbmVyYXRlVG9rZW5SZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVEFTIFNlcnZpY2U6IHN0YXJ0UHJveHlWaWRlb1Nlc3Npb24gZmFpbGVkJywgZXJyb3IpO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQUk9YWSBjaXJjdWl0IHN0YXR1czogL3YyL3Byb3h5L3ZpZGVvL3N0YXR1c1xuICAgKi9cbiAgcHVibGljIGdldFByb3h5VmlkZW9TdGF0dXMoXG4gICAgcGF5bG9hZDogUHJveHlWaWRlb1N0YXR1c1JlcXVlc3RcbiAgKTogT2JzZXJ2YWJsZTxQcm94eVZpZGVvU3RhdHVzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAucG9zdDxQcm94eVZpZGVvU3RhdHVzUmVzcG9uc2U+KCd2Mi9wcm94eS92aWRlby9zdGF0dXMnLCB7XG4gICAgICAgIGJvZHk6IHBheWxvYWQsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIFByb3h5VmlkZW9TdGF0dXNSZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVEFTIFNlcnZpY2U6IGdldFByb3h5VmlkZW9TdGF0dXMgZmFpbGVkJywgZXJyb3IpO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQUk9YWSBjaXJjdWl0IHVzZXIgbW9kaWZpY2F0aW9uOiAvdjIvcHJveHkvdmlkZW8vdXNlci9tb2RpZnlcbiAgICovXG4gIHB1YmxpYyBtb2RpZnlQcm94eVZpZGVvVXNlcihwYXlsb2FkOiBQcm94eVZpZGVvVXNlck1vZGlmeVJlcXVlc3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgIC5wYXRjaDxhbnk+KCd2Mi9wcm94eS92aWRlby91c2VyL21vZGlmeScsIHtcbiAgICAgICAgYm9keTogcGF5bG9hZCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVEFTIFNlcnZpY2U6IG1vZGlmeVByb3h5VmlkZW9Vc2VyIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluaXNoUHJveHlWaWRlb1Nlc3Npb24ocGF5bG9hZDogUHJveHlWaWRlb0ZpbmlzaFJlcXVlc3QpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAucG9zdDxGaW5pc2hTZXNzaW9uUmVzcG9uc2U+KCd2Mi9wcm94eS92aWRlby9maW5pc2gnLCB7XG4gICAgICAgIGJvZHk6IHBheWxvYWQsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlIGFzIEZpbmlzaFNlc3Npb25SZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVEFTIFNlcnZpY2U6IGZpbmlzaFByb3h5VmlkZW9TZXNzaW9uIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHVzZXIgYXBwb2ludG1lbnRzIHdpdGhpbiBhIGRhdGUgcmFuZ2UuXG4gICAqIEBwYXJhbSBwYXJhbXMgRGF0ZSByYW5nZSBmb3IgcXVlcnlpbmcgYXBwb2ludG1lbnRzXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgYXBwb2ludG1lbnQgYXJyYXlcbiAgICovXG4gIHB1YmxpYyBnZXRBcHBvaW50bWVudHMocGFyYW1zOiBHZXRBcHBvaW50bWVudHNSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUYXNBcHBvaW50bWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLmdldDxUYXNBcHBvaW50bWVudFtdPihcbiAgICAgICAgYHYyL3Byb3h5L2FwcG9pbnRtZW50L2FnZW5kYXMvdXNlci9hcHBvaW50bWVudHM/ZnJvbURhdGU9JHtwYXJhbXMuZnJvbURhdGV9JnRvRGF0ZT0ke3BhcmFtcy50b0RhdGV9YCxcbiAgICAgICAgeyBoZWFkZXJzOiB7fSB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdUQVMgU2VydmljZTogZ2V0QXBwb2ludG1lbnRzIGZhaWxlZCcsIGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgYXV0b21hdGljIHN0YXR1cyBwb2xsaW5nIGZvciB0aGUgY3VycmVudCBzZXNzaW9uLlxuICAgKiBTdGF0dXMgaXMgcG9sbGVkIGV2ZXJ5IFNUQVRVU19QT0xMX0lOVEVSVkFMX01TIG1pbGxpc2Vjb25kcy5cbiAgICovXG5cblxuICAvKipcbiAgICogU3RvcCBhdXRvbWF0aWMgc3RhdHVzIHBvbGxpbmcuXG4gICAqL1xuXG5cbiAgLyoqXG4gICAqIEZldGNoIHN0YXR1cyBhbmQgcHJvY2VzcyB0aGUgcmVzcG9uc2UuXG4gICAqL1xuICBwcml2YXRlIGZldGNoQW5kUHJvY2Vzc1N0YXR1cyhwYXJhbXM6IFByb3h5VmlkZW9TdGF0dXNSZXF1ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5nZXRQcm94eVZpZGVvU3RhdHVzKHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdGF0dXNSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RBUyBERUJVR10gU3RhdHVzIHBvbGxpbmcgZXJyb3I6JywgZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBzdGF0dXMgcmVzcG9uc2UgdG8gdXBkYXRlIHdhaXRpbmcgcm9vbSB1c2VycyBhbmQgb3duZXIgam9pbiBzdGF0dXMuXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NTdGF0dXNSZXNwb25zZShyZXNwb25zZTogUHJveHlWaWRlb1N0YXR1c1Jlc3BvbnNlKTogdm9pZCB7XG4gICAgY29uc3QgY29udGVudCA9IHJlc3BvbnNlLmNvbnRlbnQ7XG5cbiAgICAvLyBVcGRhdGUgdmlkZW9DYWxsSWQgaWYgYXZhaWxhYmxlXG4gICAgaWYgKGNvbnRlbnQudmlkZW9DYWxsSWQpIHtcbiAgICAgIHRoaXMuY3VycmVudFZpZGVvQ2FsbElkID0gY29udGVudC52aWRlb0NhbGxJZDtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgc2Vzc2lvbklkIGlmIGF2YWlsYWJsZVxuICAgIGlmIChjb250ZW50LnNlc3Npb25JZCkge1xuICAgICAgdGhpcy5jdXJyZW50U2Vzc2lvbklkID0gY29udGVudC5zZXNzaW9uSWQ7XG4gICAgICB0aGlzLnByb3h5VmlkZW9TZXNzaW9uSWQgPSBjb250ZW50LnNlc3Npb25JZDtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgam9pbmFibGUgc3RhdHVzXG4gICAgdGhpcy5qb2luYWJsZVN1YmplY3QubmV4dChjb250ZW50LmpvaW5hYmxlKTtcblxuICAgIC8vIFVwZGF0ZSBhY3RpdmF0ZUdlbyBzdGF0dXNcbiAgICBpZiAoY29udGVudC5hY3RpdmF0ZUdlbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gYWN0aXZhdGVHZW8gcmVjZWl2ZWQ6JywgY29udGVudC5hY3RpdmF0ZUdlbyk7XG4gICAgICB0aGlzLmFjdGl2YXRlR2VvU3ViamVjdC5uZXh0KGNvbnRlbnQuYWN0aXZhdGVHZW8pO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBnZW9SZXF1ZXN0QWN0aXZlIHN0YXR1cyAob3duZXIgd2FpdGluZyBmb3IgdXNlciBnZW8gcmVzcG9uc2UpXG4gICAgaWYgKGNvbnRlbnQuZ2VvUmVxdWVzdEFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gZ2VvUmVxdWVzdEFjdGl2ZSByZWNlaXZlZDonLCBjb250ZW50Lmdlb1JlcXVlc3RBY3RpdmUpO1xuICAgICAgdGhpcy5nZW9SZXF1ZXN0QWN0aXZlU3ViamVjdC5uZXh0KGNvbnRlbnQuZ2VvUmVxdWVzdEFjdGl2ZSk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGFsbEdlb0dyYW50ZWQgc3RhdHVzIChhbGwgdXNlcnMgcmVzcG9uZGVkIHdpdGggZ2VvKVxuICAgIGlmIChjb250ZW50LmFsbEdlb0dyYW50ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIGFsbEdlb0dyYW50ZWQgcmVjZWl2ZWQ6JywgY29udGVudC5hbGxHZW9HcmFudGVkKTtcbiAgICAgIHRoaXMuYWxsR2VvR3JhbnRlZFN1YmplY3QubmV4dChjb250ZW50LmFsbEdlb0dyYW50ZWQpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIG93bmVyIGhhcyBqb2luZWRcbiAgICBjb25zdCBvd25lckpvaW5lZCA9IHRoaXMuY2hlY2tJZk93bmVySm9pbmVkKGNvbnRlbnQudXNlcnMpO1xuICAgIHRoaXMub3duZXJIYXNKb2luZWRTdWJqZWN0Lm5leHQob3duZXJKb2luZWQpO1xuXG4gICAgLy8gRGV0ZWN0IGlmIG93bmVyIGxlZnQ6IHdhcyBwcmVzZW50LCBub3cgbm90IHByZXNlbnRcbiAgICBpZiAodGhpcy53YXNPd25lclByZXNlbnQgJiYgIW93bmVySm9pbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnW1RBUyBERUJVR10gT3duZXIgaGFzIGxlZnQgdGhlIHNlc3Npb24nKTtcbiAgICAgIHRoaXMub3duZXJIYXNMZWZ0U3ViamVjdC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIGlmIChvd25lckpvaW5lZCkge1xuICAgICAgdGhpcy53YXNPd25lclByZXNlbnQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3Qgd2FpdGluZyByb29tIHVzZXJzIChzdGF0dXMgPT09IFdBSVRJTkcpXG4gICAgY29uc3Qgd2FpdGluZ1VzZXJzOiBXYWl0aW5nUm9vbVVzZXJbXSA9IGNvbnRlbnQudXNlcnNcbiAgICAgIC5maWx0ZXIoKHUpID0+ICh1LnN0YXR1cyBhcyBzdHJpbmcpID09PSAnV0FJVElORycpXG4gICAgICAubWFwKCh1KSA9PiAoe1xuICAgICAgICB1c2VySWQ6IHUudXNlcklkLFxuICAgICAgICBuYW1lOiBgVXNlciAke3UudXNlcklkfWAsIC8vIFRPRE86IEZldGNoIGFjdHVhbCB1c2VyIG5hbWVzIGZyb20gYSB1c2VyIHNlcnZpY2VcbiAgICAgICAgc3RhdHVzOiBSb29tVXNlclN0YXR1cy5XQUlUSU5HLFxuICAgICAgfSkpO1xuXG4gICAgdGhpcy53YWl0aW5nUm9vbVVzZXJzU3ViamVjdC5uZXh0KHdhaXRpbmdVc2Vycyk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYXQgbGVhc3Qgb25lIE9XTkVSIGhhcyBqb2luZWQgdGhlIGNhbGwuXG4gICAqL1xuICBwcml2YXRlIGNoZWNrSWZPd25lckpvaW5lZChcbiAgICB1c2VyczogeyB1c2VySWQ6IG51bWJlcjsgcm9sOiBzdHJpbmc7IHN0YXR1czogc3RyaW5nIH1bXVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXNlcnMuc29tZShcbiAgICAgICh1KSA9PiB1LnJvbCA9PT0gVGFzVXNlclJvbGUuT1dORVIgJiYgdS5zdGF0dXMgPT09ICdKT0lORUQnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZG1pdCBhIHVzZXIgZnJvbSB0aGUgd2FpdGluZyByb29tIGJ5IGNoYW5naW5nIHRoZWlyIHN0YXR1cy5cbiAgICovXG4gIHB1YmxpYyBhZG1pdFVzZXJGcm9tV2FpdGluZ1Jvb20oXG4gICAgdXNlcklkOiBudW1iZXIsXG4gICAgdmlkZW9DYWxsSWQ6IG51bWJlclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLm1vZGlmeVByb3h5VmlkZW9Vc2VyKHtcbiAgICAgIHVzZXJJZCxcbiAgICAgIHZpZGVvQ2FsbElkLFxuICAgICAgYWN0aW9uOiBVc2VyQ2FsbEFjdGlvbi5XQUlUSU5HX1JPT01fTEVBVkUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBHZXR0ZXJzIGZvciBjdXJyZW50IGNhbGwgY29udGV4dFxuICBwdWJsaWMgZ2V0IGFwcG9pbnRtZW50SWQoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudEFwcG9pbnRtZW50SWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZGVvQ2FsbElkKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWaWRlb0NhbGxJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25uZWN0cyB0byBhIFRva0JveCB2aWRlbyBzZXNzaW9uXG4gICAqL1xuICBwdWJsaWMgY29ubmVjdFNlc3Npb24oXG4gICAgc2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgdG9rZW46IHN0cmluZyxcbiAgICBwdWJsaXNoZXJFbGVtZW50OiBzdHJpbmcsXG4gICAgc3Vic2NyaWJlckVsZW1lbnQ6IHN0cmluZyxcbiAgICBidXNpbmVzc1JvbGU6IFRhc0J1c2luZXNzUm9sZSA9IFRhc0J1c2luZXNzUm9sZS5VU0VSXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5DT05ORUNUSU5HKTtcbiAgICB0aGlzLmN1cnJlbnRTZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gICAgdGhpcy5jdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLmN1cnJlbnRCdXNpbmVzc1JvbGUgPSBidXNpbmVzc1JvbGU7XG4gICAgdGhpcy5pc0ZpbmlzaGluZ1Nlc3Npb24gPSBmYWxzZTsgLy8gUmVzZXQgZmxhZyBmb3IgbmV3IHNlc3Npb25cblxuICAgIC8vIFNhdmUgaW5pdGlhbCBzdGF0ZSAoZGVmYXVsdGluZyB0byBjdXJyZW50IHZpZXcgbW9kZSlcbiAgICB0aGlzLnNhdmVTZXNzaW9uU3RhdGUoXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICB0b2tlbixcbiAgICAgIHRoaXMudmlld01vZGVTdWJqZWN0LmdldFZhbHVlKCksXG4gICAgICBidXNpbmVzc1JvbGVcbiAgICApO1xuICAgIC8vIENsZWFyIHRoZSBkaXNjb25uZWN0ZWQgZmxhZyB3aGVuIHN0YXJ0aW5nIGEgbmV3IGNvbm5lY3Rpb25cbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuRElTQ09OTkVDVEVEX0ZMQUdfS0VZKTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIU9ULmNoZWNrU3lzdGVtUmVxdWlyZW1lbnRzKCkpIHtcbiAgICAgICAgdGhpcy5jYWxsU3RhdGVTdWJqZWN0Lm5leHQoQ2FsbFN0YXRlLkVSUk9SKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignQnJvd3NlciBub3QgY29tcGF0aWJsZSB3aXRoIFRva0JveCcpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNlc3Npb24gPSBPVC5pbml0U2Vzc2lvbih0aGlzLmNvbmZpZy50b2tCb3hBcGlLZXksIHNlc3Npb25JZCk7XG5cbiAgICAgIC8vIEhhbmRsZSBuZXcgc3RyZWFtcyAocmVtb3RlIHBhcnRpY2lwYW50cyBqb2luaW5nKVxuICAgICAgdGhpcy5zZXNzaW9uLm9uKCdzdHJlYW1DcmVhdGVkJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZXIgPSB0aGlzLnNlc3Npb24/LnN1YnNjcmliZShcbiAgICAgICAgICBldmVudC5zdHJlYW0sXG4gICAgICAgICAgc3Vic2NyaWJlckVsZW1lbnQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5zZXJ0TW9kZTogJ2FwcGVuZCcsXG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzdWJzY3JpYmluZyB0byBzdHJlYW06JywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHN1YnNjcmliZXIpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBIYW5kbGUgc3RyZWFtcyBlbmRpbmcgKHJlbW90ZSBwYXJ0aWNpcGFudHMgbGVhdmluZylcbiAgICAgIHRoaXMuc2Vzc2lvbi5vbignc3RyZWFtRGVzdHJveWVkJywgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlcnMgPSB0aGlzLnN1YnNjcmliZXJzLmZpbHRlcihcbiAgICAgICAgICAoc3ViKSA9PiBzdWIuc3RyZWFtPy5zdHJlYW1JZCAhPT0gZXZlbnQuc3RyZWFtLnN0cmVhbUlkXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgLy8gSGFuZGxlIHNlc3Npb24gZGlzY29ubmVjdGlvblxuICAgICAgdGhpcy5zZXNzaW9uLm9uKCdzZXNzaW9uRGlzY29ubmVjdGVkJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRElTQ09OTkVDVEVEKTtcblxuICAgICAgICAvLyBDYWxsIGZpbmlzaFNlc3Npb24gd2hlbiBzZXNzaW9uIGlzIGRpc2Nvbm5lY3RlZCAoZS5nLiwgYnkgc2VydmVyKVxuICAgICAgICAvLyBPbmx5IGNhbGwgaWYgbm90IGFscmVhZHkgZmluaXNoaW5nIChwcmV2ZW50cyBkdXBsaWNhdGUgY2FsbHMpXG4gICAgICAgIGNvbnN0IHNlc3Npb25JZFRvRmluaXNoID0gdGhpcy5jdXJyZW50U2Vzc2lvbklkO1xuICAgICAgICBpZiAoc2Vzc2lvbklkVG9GaW5pc2ggJiYgIXRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uKSB7XG4gICAgICAgICAgdGhpcy5pc0ZpbmlzaGluZ1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuZmluaXNoUHJveHlWaWRlb1Nlc3Npb24oe1xuICAgICAgICAgICAgc2Vzc2lvbklkOiBzZXNzaW9uSWRUb0ZpbmlzaCxcbiAgICAgICAgICAgIGJ1c2luZXNzUm9sZTogdGhpcy5jdXJyZW50QnVzaW5lc3NSb2xlLFxuICAgICAgICAgIH0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1tUQVMgREVCVUddIFNlc3Npb24gZmluaXNoZWQgb24gZGlzY29ubmVjdCBldmVudDonLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgIHRoaXMuaXNGaW5pc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVEFTIERFQlVHXSBFcnJvciBmaW5pc2hpbmcgc2Vzc2lvbiBvbiBkaXNjb25uZWN0OicsIGVycm9yKTtcbiAgICAgICAgICAgICAgdGhpcy5pc0ZpbmlzaGluZ1Nlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBDb25uZWN0IHRvIHNlc3Npb25cbiAgICAgIHRoaXMuc2Vzc2lvbi5jb25uZWN0KHRva2VuLCAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29ubmVjdGluZyB0byBzZXNzaW9uOicsIGVycm9yKTtcbiAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwdWJsaXNoZXIgKGxvY2FsIHZpZGVvKVxuICAgICAgICB0aGlzLnB1Ymxpc2hlciA9IE9ULmluaXRQdWJsaXNoZXIoXG4gICAgICAgICAgcHVibGlzaGVyRWxlbWVudCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpbnNlcnRNb2RlOiAnYXBwZW5kJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW5pdGlhbGl6aW5nIHB1Ymxpc2hlcjonLCBlcnIpO1xuICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBQdWJsaXNoIHRvIHNlc3Npb25cbiAgICAgICAgICAgIHRoaXMuc2Vzc2lvbj8ucHVibGlzaCh0aGlzLnB1Ymxpc2hlciwgKHB1YkVycikgPT4ge1xuICAgICAgICAgICAgICBpZiAocHViRXJyKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHVibGlzaGluZyBzdHJlYW06JywgcHViRXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZVN1YmplY3QubmV4dChDYWxsU3RhdGUuRVJST1IpO1xuICAgICAgICAgICAgICAgIHJlamVjdChwdWJFcnIpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlU3ViamVjdC5uZXh0KENhbGxTdGF0ZS5DT05ORUNURUQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBWaWRlbyBFbGVtZW50IE1vdmVtZW50IE1ldGhvZHNcbiAgcHVibGljIG1vdmVQdWJsaXNoZXJUbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnB1Ymxpc2hlcikgcmV0dXJuO1xuXG4gICAgY29uc3QgcHVibGlzaGVyRWxlbWVudCA9IHRoaXMucHVibGlzaGVyLmVsZW1lbnQ7XG4gICAgY29uc3QgbmV3Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmV3Q29udGFpbmVySWQpO1xuXG4gICAgaWYgKHB1Ymxpc2hlckVsZW1lbnQgJiYgbmV3Q29udGFpbmVyKSB7XG4gICAgICBuZXdDb250YWluZXIuYXBwZW5kQ2hpbGQocHVibGlzaGVyRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG1vdmVTdWJzY3JpYmVyc1RvKG5ld0NvbnRhaW5lcklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuZXdDb250YWluZXJJZCk7XG4gICAgaWYgKCFuZXdDb250YWluZXIpIHJldHVybjtcblxuICAgIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaCgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgY29uc3Qgc3Vic2NyaWJlckVsZW1lbnQgPSBzdWJzY3JpYmVyLmVsZW1lbnQ7XG4gICAgICBpZiAoc3Vic2NyaWJlckVsZW1lbnQpIHtcbiAgICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHN1YnNjcmliZXJFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB0aGUgbWFpbiB2aWRlbyAoc3Vic2NyaWJlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBwdWJsaXNoZXIpIHRvIGEgY29udGFpbmVyLlxuICAgKiBVc2VkIGZvciBQaVAgbW9kZSB0byBzaG93IG9ubHkgb25lIHZpZGVvLlxuICAgKi9cbiAgcHVibGljIG1vdmVNYWluVmlkZW9UbyhuZXdDb250YWluZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV3Q29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmV3Q29udGFpbmVySWQpO1xuICAgIGlmICghbmV3Q29udGFpbmVyKSByZXR1cm47XG5cbiAgICAvLyBQcmVmZXIgcmVtb3RlIHZpZGVvIChzdWJzY3JpYmVyKSBhcyBtYWluXG4gICAgaWYgKHRoaXMuc3Vic2NyaWJlcnMubGVuZ3RoID4gMCAmJiB0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpIHtcbiAgICAgIG5ld0NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLnN1YnNjcmliZXJzWzBdLmVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEZhbGwgYmFjayB0byBsb2NhbCB2aWRlbyAocHVibGlzaGVyKVxuICAgIGlmICh0aGlzLnB1Ymxpc2hlcj8uZWxlbWVudCkge1xuICAgICAgbmV3Q29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMucHVibGlzaGVyLmVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlcyB2aWRlb3MgYmFjayB0byBmdWxsc2NyZWVuIGNvbnRhaW5lcnNcbiAgICovXG4gIHB1YmxpYyBtb3ZlVmlkZW9zVG9GdWxsc2NyZWVuKCk6IHZvaWQge1xuICAgIHRoaXMubW92ZVN1YnNjcmliZXJzVG8oJ3N1YnNjcmliZXItY29udGFpbmVyJyk7XG4gICAgdGhpcy5tb3ZlUHVibGlzaGVyVG8oJ3B1Ymxpc2hlci1jb250YWluZXInKTtcbiAgfVxufVxuIl19
@@ -1,11 +1,13 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { FormsModule } from '@angular/forms';
4
+ import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
4
5
  import { TasButtonComponent } from './components/tas-btn/tas-btn.component';
5
6
  import { TasVideocallComponent } from './components/tas-videocall/tas-videocall.component';
6
7
  import { TasFloatingCallComponent } from './components/tas-floating-call/tas-floating-call.component';
7
8
  import { TasWaitingRoomComponent } from './components/tas-waiting-room/tas-waiting-room.component';
8
9
  import { TasAvatarComponent } from './components/tas-avatar/tas-avatar.component';
10
+ import { TasIncomingAppointmentComponent } from './components/tas-incoming-appointment/tas-incoming-appointment.component';
9
11
  import { TasService } from './services/tas.service';
10
12
  import { TAS_CONFIG, TAS_HTTP_CLIENT, } from './config/tas.config';
11
13
  import * as i0 from "@angular/core";
@@ -55,12 +57,14 @@ TasUellSdkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
55
57
  TasVideocallComponent,
56
58
  TasFloatingCallComponent,
57
59
  TasWaitingRoomComponent,
58
- TasAvatarComponent], imports: [CommonModule, FormsModule], exports: [TasButtonComponent,
60
+ TasAvatarComponent,
61
+ TasIncomingAppointmentComponent], imports: [CommonModule, FormsModule, NgbTooltipModule], exports: [TasButtonComponent,
59
62
  TasVideocallComponent,
60
63
  TasFloatingCallComponent,
61
64
  TasWaitingRoomComponent,
62
- TasAvatarComponent] });
63
- TasUellSdkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasUellSdkModule, imports: [[CommonModule, FormsModule]] });
65
+ TasAvatarComponent,
66
+ TasIncomingAppointmentComponent] });
67
+ TasUellSdkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasUellSdkModule, imports: [[CommonModule, FormsModule, NgbTooltipModule]] });
64
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: TasUellSdkModule, decorators: [{
65
69
  type: NgModule,
66
70
  args: [{
@@ -70,15 +74,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
70
74
  TasFloatingCallComponent,
71
75
  TasWaitingRoomComponent,
72
76
  TasAvatarComponent,
77
+ TasIncomingAppointmentComponent,
73
78
  ],
74
- imports: [CommonModule, FormsModule],
79
+ imports: [CommonModule, FormsModule, NgbTooltipModule],
75
80
  exports: [
76
81
  TasButtonComponent,
77
82
  TasVideocallComponent,
78
83
  TasFloatingCallComponent,
79
84
  TasWaitingRoomComponent,
80
85
  TasAvatarComponent,
86
+ TasIncomingAppointmentComponent,
81
87
  ],
82
88
  }]
83
89
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBR2hCLE1BQU0scUJBQXFCLENBQUM7O0FBbUI3QixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BNEJHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUdkO1FBQ0MsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDakQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUMxRCxVQUFVO2FBQ1g7U0FDRixDQUFDO0lBQ0osQ0FBQzs7OEdBMUNVLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQWZ6QixrQkFBa0I7UUFDbEIscUJBQXFCO1FBQ3JCLHdCQUF3QjtRQUN4Qix1QkFBdUI7UUFDdkIsa0JBQWtCLGFBRVYsWUFBWSxFQUFFLFdBQVcsYUFFakMsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLGtCQUFrQjsrR0FHVCxnQkFBZ0IsWUFUbEIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDOzRGQVN6QixnQkFBZ0I7a0JBakI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQztvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUYXNCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWJ0bi90YXMtYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNWaWRlb2NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWZsb2F0aW5nLWNhbGwvdGFzLWZsb2F0aW5nLWNhbGwuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc1dhaXRpbmdSb29tQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy13YWl0aW5nLXJvb20vdGFzLXdhaXRpbmctcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy1hdmF0YXIvdGFzLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVEFTX0NPTkZJRyxcbiAgVEFTX0hUVFBfQ0xJRU5ULFxuICBUYXNDb25maWcsXG4gIFRhc0h0dHBDbGllbnQsXG59IGZyb20gJy4vY29uZmlnL3Rhcy5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUYXNCdXR0b25Db21wb25lbnQsXG4gICAgVGFzVmlkZW9jYWxsQ29tcG9uZW50LFxuICAgIFRhc0Zsb2F0aW5nQ2FsbENvbXBvbmVudCxcbiAgICBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudCxcbiAgICBUYXNBdmF0YXJDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgZXhwb3J0czogW1xuICAgIFRhc0J1dHRvbkNvbXBvbmVudCxcbiAgICBUYXNWaWRlb2NhbGxDb21wb25lbnQsXG4gICAgVGFzRmxvYXRpbmdDYWxsQ29tcG9uZW50LFxuICAgIFRhc1dhaXRpbmdSb29tQ29tcG9uZW50LFxuICAgIFRhc0F2YXRhckNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFzVWVsbFNka01vZHVsZSB7XG4gIC8qKlxuICAgKiBVc2UgZm9yUm9vdCgpIHRvIGNvbmZpZ3VyZSB0aGUgVEFTIFNESyBtb2R1bGUgd2l0aCByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gICAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UgaW4geW91ciByb290IEFwcE1vZHVsZS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQgeyBUYXNVZWxsU2RrTW9kdWxlLCBUYXNIdHRwQ2xpZW50IH0gZnJvbSAndGFzLXVlbGwtc2RrJztcbiAgICpcbiAgICogLy8gQ3JlYXRlIGFuIGFkYXB0ZXIgdGhhdCBpbXBsZW1lbnRzIFRhc0h0dHBDbGllbnRcbiAgICogQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbiAgICogZXhwb3J0IGNsYXNzIE15SHR0cEFkYXB0ZXIgaW1wbGVtZW50cyBUYXNIdHRwQ2xpZW50IHtcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG4gICAqICAgcG9zdDxUPih1cmw6IHN0cmluZywgb3B0aW9uczogeyBib2R5OiBhbnk7IGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IH0pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICogICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih1cmwsIG9wdGlvbnMuYm9keSwgeyBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMgfSk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIC8vIEluIHlvdXIgQXBwTW9kdWxlXG4gICAqIEBOZ01vZHVsZSh7XG4gICAqICAgaW1wb3J0czogW1xuICAgKiAgICAgVGFzVWVsbFNka01vZHVsZS5mb3JSb290KHtcbiAgICogICAgICAgY29uZmlnOiB7IHRva0JveEFwaUtleTogJ1lPVVJfVE9LQk9YX0FQSV9LRVknIH0sXG4gICAqICAgICAgIGh0dHBDbGllbnQ6IE15SHR0cEFkYXB0ZXJcbiAgICogICAgIH0pXG4gICAqICAgXVxuICAgKiB9KVxuICAgKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuICAgKiBgYGBcbiAgICovXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IHtcbiAgICBjb25maWc6IFRhc0NvbmZpZztcbiAgICBodHRwQ2xpZW50OiBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBUYXNIdHRwQ2xpZW50O1xuICB9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxUYXNVZWxsU2RrTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBUYXNVZWxsU2RrTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMuY29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogVEFTX0hUVFBfQ0xJRU5ULCB1c2VDbGFzczogb3B0aW9ucy5odHRwQ2xpZW50IH0sXG4gICAgICAgIFRhc1NlcnZpY2UsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzLXVlbGwtc2RrLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEdBR2hCLE1BQU0scUJBQXFCLENBQUM7O0FBcUI3QixNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BNEJHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUdkO1FBQ0MsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDakQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUMxRCxVQUFVO2FBQ1g7U0FDRixDQUFDO0lBQ0osQ0FBQzs7OEdBMUNVLGdCQUFnQjsrR0FBaEIsZ0JBQWdCLGlCQWpCekIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLGtCQUFrQjtRQUNsQiwrQkFBK0IsYUFFdkIsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsYUFFbkQsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsdUJBQXVCO1FBQ3ZCLGtCQUFrQjtRQUNsQiwrQkFBK0I7K0dBR3RCLGdCQUFnQixZQVZsQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7NEZBVTNDLGdCQUFnQjtrQkFuQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGtCQUFrQjt3QkFDbEIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3dCQUNsQiwrQkFBK0I7cUJBQ2hDO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7b0JBQ3RELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsK0JBQStCO3FCQUNoQztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JUb29sdGlwTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgVGFzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzVmlkZW9jYWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy12aWRlb2NhbGwvdGFzLXZpZGVvY2FsbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzRmxvYXRpbmdDYWxsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhcy1mbG9hdGluZy1jYWxsL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YXMtd2FpdGluZy1yb29tL3Rhcy13YWl0aW5nLXJvb20uY29tcG9uZW50JztcbmltcG9ydCB7IFRhc0F2YXRhckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YXMtYXZhdGFyL3Rhcy1hdmF0YXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhc0luY29taW5nQXBwb2ludG1lbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFzLWluY29taW5nLWFwcG9pbnRtZW50L3Rhcy1pbmNvbWluZy1hcHBvaW50bWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVEFTX0NPTkZJRyxcbiAgVEFTX0hUVFBfQ0xJRU5ULFxuICBUYXNDb25maWcsXG4gIFRhc0h0dHBDbGllbnQsXG59IGZyb20gJy4vY29uZmlnL3Rhcy5jb25maWcnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUYXNCdXR0b25Db21wb25lbnQsXG4gICAgVGFzVmlkZW9jYWxsQ29tcG9uZW50LFxuICAgIFRhc0Zsb2F0aW5nQ2FsbENvbXBvbmVudCxcbiAgICBUYXNXYWl0aW5nUm9vbUNvbXBvbmVudCxcbiAgICBUYXNBdmF0YXJDb21wb25lbnQsXG4gICAgVGFzSW5jb21pbmdBcHBvaW50bWVudENvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE5nYlRvb2x0aXBNb2R1bGVdLFxuICBleHBvcnRzOiBbXG4gICAgVGFzQnV0dG9uQ29tcG9uZW50LFxuICAgIFRhc1ZpZGVvY2FsbENvbXBvbmVudCxcbiAgICBUYXNGbG9hdGluZ0NhbGxDb21wb25lbnQsXG4gICAgVGFzV2FpdGluZ1Jvb21Db21wb25lbnQsXG4gICAgVGFzQXZhdGFyQ29tcG9uZW50LFxuICAgIFRhc0luY29taW5nQXBwb2ludG1lbnRDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRhc1VlbGxTZGtNb2R1bGUge1xuICAvKipcbiAgICogVXNlIGZvclJvb3QoKSB0byBjb25maWd1cmUgdGhlIFRBUyBTREsgbW9kdWxlIHdpdGggcmVxdWlyZWQgZGVwZW5kZW5jaWVzLlxuICAgKiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlIGluIHlvdXIgcm9vdCBBcHBNb2R1bGUuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgVGFzVWVsbFNka01vZHVsZSwgVGFzSHR0cENsaWVudCB9IGZyb20gJ3Rhcy11ZWxsLXNkayc7XG4gICAqXG4gICAqIC8vIENyZWF0ZSBhbiBhZGFwdGVyIHRoYXQgaW1wbGVtZW50cyBUYXNIdHRwQ2xpZW50XG4gICAqIEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG4gICAqIGV4cG9ydCBjbGFzcyBNeUh0dHBBZGFwdGVyIGltcGxlbWVudHMgVGFzSHR0cENsaWVudCB7XG4gICAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICAgKiAgIHBvc3Q8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM6IHsgYm9keTogYW55OyBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAqICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odXJsLCBvcHRpb25zLmJvZHksIHsgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzIH0pO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiAvLyBJbiB5b3VyIEFwcE1vZHVsZVxuICAgKiBATmdNb2R1bGUoe1xuICAgKiAgIGltcG9ydHM6IFtcbiAgICogICAgIFRhc1VlbGxTZGtNb2R1bGUuZm9yUm9vdCh7XG4gICAqICAgICAgIGNvbmZpZzogeyB0b2tCb3hBcGlLZXk6ICdZT1VSX1RPS0JPWF9BUElfS0VZJyB9LFxuICAgKiAgICAgICBodHRwQ2xpZW50OiBNeUh0dHBBZGFwdGVyXG4gICAqICAgICB9KVxuICAgKiAgIF1cbiAgICogfSlcbiAgICogZXhwb3J0IGNsYXNzIEFwcE1vZHVsZSB7IH1cbiAgICogYGBgXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zOiB7XG4gICAgY29uZmlnOiBUYXNDb25maWc7XG4gICAgaHR0cENsaWVudDogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVGFzSHR0cENsaWVudDtcbiAgfSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VGFzVWVsbFNka01vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVGFzVWVsbFNka01vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IFRBU19DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zLmNvbmZpZyB9LFxuICAgICAgICB7IHByb3ZpZGU6IFRBU19IVFRQX0NMSUVOVCwgdXNlQ2xhc3M6IG9wdGlvbnMuaHR0cENsaWVudCB9LFxuICAgICAgICBUYXNTZXJ2aWNlLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -7,12 +7,14 @@ export * from './lib/config/tas.config';
7
7
  export * from './lib/interfaces/tas.interfaces';
8
8
  // Service
9
9
  export * from './lib/services/tas.service';
10
+ export * from './lib/services/geolocation.service';
10
11
  // Components
11
12
  export * from './lib/components/tas-btn/tas-btn.component';
12
13
  export * from './lib/components/tas-waiting-room/tas-waiting-room.component';
13
14
  export * from './lib/components/tas-videocall/tas-videocall.component';
14
15
  export * from './lib/components/tas-floating-call/tas-floating-call.component';
15
16
  export * from './lib/components/tas-avatar/tas-avatar.component';
17
+ export * from './lib/components/tas-incoming-appointment/tas-incoming-appointment.component';
16
18
  // Module
17
19
  export * from './lib/tas-uell-sdk.module';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDJCQUEyQjtBQUMzQixjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELFVBQVU7QUFDVixjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGFBQWE7QUFDYixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsa0RBQWtELENBQUM7QUFFakUsU0FBUztBQUNULGNBQWMsMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHRhcy11ZWxsLXNka1xuICovXG5cbi8vIENvbmZpZ3VyYXRpb24gYW5kIHRva2Vuc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29uZmlnL3Rhcy5jb25maWcnO1xuXG4vLyBJbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3Rhcy5pbnRlcmZhY2VzJztcblxuLy8gU2VydmljZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGFzLnNlcnZpY2UnO1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtd2FpdGluZy1yb29tL3Rhcy13YWl0aW5nLXJvb20uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1mbG9hdGluZy1jYWxsL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1hdmF0YXIvdGFzLWF2YXRhci5jb21wb25lbnQnO1xuXG4vLyBNb2R1bGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rhcy11ZWxsLXNkay5tb2R1bGUnO1xuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Rhcy11ZWxsLXNkay9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDJCQUEyQjtBQUMzQixjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGFBQWE7QUFDYixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELFVBQVU7QUFDVixjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsYUFBYTtBQUNiLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDhFQUE4RSxDQUFDO0FBRTdGLFNBQVM7QUFDVCxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0YXMtdWVsbC1zZGtcbiAqL1xuXG4vLyBDb25maWd1cmF0aW9uIGFuZCB0b2tlbnNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbmZpZy90YXMuY29uZmlnJztcblxuLy8gSW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy90YXMuaW50ZXJmYWNlcyc7XG5cbi8vIFNlcnZpY2VcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3Rhcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2dlb2xvY2F0aW9uLnNlcnZpY2UnO1xuXG4vLyBDb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1idG4vdGFzLWJ0bi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtd2FpdGluZy1yb29tL3Rhcy13YWl0aW5nLXJvb20uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFzLXZpZGVvY2FsbC90YXMtdmlkZW9jYWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1mbG9hdGluZy1jYWxsL3Rhcy1mbG9hdGluZy1jYWxsLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rhcy1hdmF0YXIvdGFzLWF2YXRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YXMtaW5jb21pbmctYXBwb2ludG1lbnQvdGFzLWluY29taW5nLWFwcG9pbnRtZW50LmNvbXBvbmVudCc7XG5cbi8vIE1vZHVsZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFzLXVlbGwtc2RrLm1vZHVsZSc7XG4iXX0=