@aggdirect/coolmap-services 1.4.3 → 1.4.5

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.
@@ -36,6 +36,8 @@ export class UtilsService {
36
36
  materialsList;
37
37
  materialsListForCustomer;
38
38
  customersList;
39
+ locationList;
40
+ pickUpAutocomplete;
39
41
  constructor(http, snackBar, config, ngZone) {
40
42
  this.http = http;
41
43
  this.snackBar = snackBar;
@@ -56,13 +58,16 @@ export class UtilsService {
56
58
  getData(path) {
57
59
  return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`);
58
60
  }
61
+ getRestData(path) {
62
+ return this.http.get(`${this.RESTURLPrefix}${path}`);
63
+ }
59
64
  postdata(path, data) {
60
65
  return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data);
61
66
  }
62
67
  postDataWithRestUrl(path, data) {
63
68
  return this.http.post(`${this.RESTURLPrefix}${path}`, data);
64
69
  }
65
- autocomplete(searchElementRef, form) {
70
+ autocomplete(searchElementRef, type) {
66
71
  return new Promise((resolve, reject) => {
67
72
  const autocomplete = new google.maps.places.Autocomplete(searchElementRef.nativeElement, {
68
73
  types: ['address']
@@ -355,6 +360,33 @@ export class UtilsService {
355
360
  }
356
361
  });
357
362
  }
363
+ fetchLocationlist() {
364
+ return new Promise((resolve, reject) => {
365
+ this.getRestData('locations/all').subscribe((res) => {
366
+ if (res) {
367
+ this.locationList = res.data;
368
+ this.locationList = this.locationList.map((object) => {
369
+ object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;
370
+ const newItem = {
371
+ city: object.city,
372
+ lng: object.longitude,
373
+ location_id: object.location_id,
374
+ lat: object.latitude,
375
+ name: object.name,
376
+ state: object.state,
377
+ street: object.street,
378
+ zip: object.zip,
379
+ formatted_address: object.formatted_address
380
+ };
381
+ return newItem;
382
+ });
383
+ resolve(this.locationList);
384
+ }
385
+ }, err => {
386
+ console.log(err);
387
+ });
388
+ });
389
+ }
358
390
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
359
391
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
360
392
  }
@@ -365,4 +397,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
365
397
  type: Inject,
366
398
  args: ['memberData']
367
399
  }] }, { type: i0.NgZone }] });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFNdkMsTUFBTSxPQUFPLFlBQVk7SUE4QmQ7SUFDQTtJQUN1QjtJQUN2QjtJQWhDVCxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixhQUFhLEdBQVUsRUFBRSxDQUFDO0lBQzFCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsc0JBQXNCLEdBQVUsRUFBRSxDQUFDO0lBQ25DLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUN0QixnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEQsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsK0JBQStCLEdBQzdCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxxQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCx3QkFBd0IsR0FBRyxJ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WSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3ZELElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM5QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0F6WFUsWUFBWSx1RUFnQ2IsWUFBWTsyR0FoQ1gsWUFBWSxjQURDLE1BQU07OzJGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBaUM3QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcENvbmZpZ01vZGVsLCBSb3V0ZSB9IGZyb20gJy4vZGF0YS1tb2RlbCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBVdGlsc1NlcnZpY2Uge1xuICBhbmFseXRpY3NSRVNUVVJMID0gJyc7XG4gIFJFU1RVUkxQcmVmaXggPSAnJztcbiAgcGlja3VwT3B0aW9uczogYW55W10gPSBbXTtcbiAgZGVzdE9wdGlvbnM6IGFueVtdID0gW107XG4gIG93bmVyT3B0aW9uczogYW55W10gPSBbXTtcbiAgY3VzdG9tZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICB1bml0T3B0aW9uczogYW55W10gPSBbXTtcbiAgbWF0ZXJpYWxPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBqY29kZU9wdGlvbnM6IGFueVtdID0gW107XG4gIGRyaXZlck9wdGlvbjogYW55W10gPSBbXTtcbiAgdHJ1Y2tpbmdDb21wYW5heU9wdGlvbjogYW55W10gPSBbXTtcbiAgcm91dGVOYW1lT3B0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIHByZXZlbnRuYXZDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgbmF2Q2hhbmdlT2JzZXJ2ZSA9IHRoaXMucHJldmVudG5hdkNoYW5nZS5hc09ic2VydmFibGUoKTtcbiAgY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIGNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZU9ic2VydmUgPVxuICAgIHRoaXMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlLmFzT2JzZXJ2YWJsZSgpO1xuICBwcmVWZW50Sm9iZGV0YWlsY2xvc2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgZ2V0cHJlVmVudEpvYmRldGFpbGNsb3NlID0gdGhpcy5wcmVWZW50Sm9iZGV0YWlsY2xvc2UuYXNPYnNlcnZhYmxlKCk7XG4gIHJvdXRlRGV0YWlsc1V0aWxpdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgZ2V0cm91dGVEZXRhaWxzVXRpbGl0eSA9IHRoaXMucm91dGVEZXRhaWxzVXRpbGl0eS5hc09ic2VydmFibGUoKTtcbiAgcmVtb3ZlTWFwRW50aXR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIHJlbW92ZU1hcEVudGl0eVV0aWxpdHkgPSB0aGlzLnJlbW92ZU1hcEVudGl0eS5hc09ic2VydmFibGUoKTtcbiAgZGljdCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIHVuaXRzTGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0OiBhbnk7XG4gIG1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcjogYW55O1xuICBjdXN0b21lcnNMaXN0OiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHB1YmxpYyBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHByaXZhdGUgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWwsXG4gICAgcHVibGljIG5nWm9uZTogTmdab25lLFxuICApIHtcbiAgICB0aGlzLmFuYWx5dGljc1JFU1RVUkwgPSBjb25maWcuYW5hbHl0aWNzUkVTVFVSTDtcbiAgICB0aGlzLlJFU1RVUkxQcmVmaXggPSBjb25maWcuUkVTVFVSTFByZWZpeDtcbiAgfVxuICBnZXREYXRlRm9ybWF0KHN0clZhbDogRGF0ZSB8IG51bGwsIHNlcHJhdGVyPzogc3RyaW5nKSB7XG4gICAgc2VwcmF0ZXIgPSBzZXByYXRlciA/IHNlcHJhdGVyIDogJy0nO1xuICAgIGNvbnN0IG15ZGF0ZSA9IHN0clZhbDtcbiAgICByZXR1cm4gKFxuICAgICAgbXlkYXRlPy5nZXRGdWxsWWVhcigpICtcbiAgICAgIHNlcHJhdGVyICtcbiAgICAgICgobXlkYXRlID8gbXlkYXRlLmdldE1vbnRoKCkgOiAwKSArIDEpICtcbiAgICAgIHNlcHJhdGVyICtcbiAgICAgIG15ZGF0ZT8uZ2V0RGF0ZSgpXG4gICAgKTtcbiAgfVxuICBnZXREYXRhKHBhdGg6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYCR7dGhpcy5hbmFseXRpY3NSRVNUVVJMfSR7dGhpcy5jb25maWcucmVwb3NpdG9yeX0vJHtwYXRofWBcbiAgICApO1xuICB9XG4gIHBvc3RkYXRhKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy5hbmFseXRpY3NSRVNUVVJMfSR7dGhpcy5jb25maWcucmVwb3NpdG9yeX0vJHtwYXRofWAsXG4gICAgICBkYXRhXG4gICAgKTtcbiAgfVxuICBwb3N0RGF0YVdpdGhSZXN0VXJsKHBhdGg6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuUkVTVFVSTFByZWZpeH0ke3BhdGh9YCwgZGF0YSk7XG4gIH1cbiAgXG4gIGF1dG9jb21wbGV0ZShzZWFyY2hFbGVtZW50UmVmLCBmb3JtPzogRm9ybUdyb3VwKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHNlYXJjaEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICB0eXBlczogWydhZGRyZXNzJ11cbiAgICAgIH0pO1xuICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoYXV0b2NvbXBsZXRlLCAncGxhY2VfY2hhbmdlZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwbGFjZSA9IGF1dG9jb21wbGV0ZS5nZXRQbGFjZSgpO1xuICAgICAgICAgIHJlc29sdmUoe2xhdDogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksIGxuZzogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubG5nKCksIGZvcm1hdHRlZF9hZGRyZXNzOiBwbGFjZVsnZm9ybWF0dGVkX2FkZHJlc3MnXX0pXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuU25hY2tCYXIobWVzc2FnZTogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgJycsIHtcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgdmVydGljYWxQb3NpdGlvbjogJ3RvcCcsXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgcGFuZWxDbGFzczogW2NsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICdkZWZhdWx0J10sXG4gICAgfSk7XG4gIH1cblxuICBtYWtlT3B0aW9ucyhpdGVtOiBSb3V0ZSkge1xuICAgIGlmIChpdGVtLm9yZGVyX251bWJlcikge1xuICAgICAgdGhpcy5qY29kZU9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtLmpvYl9pZCA9PT0gaXRlbS5qb2JfaWQpID09PSAtMVxuICAgICAgICA/IHRoaXMuamNvZGVPcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgam9iX2NvZGU6IGl0ZW0ub3JkZXJfbnVtYmVyLFxuICAgICAgICAgICAgam9iX2lkOiBpdGVtLmpvYl9pZCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAoaXRlbS5kcml2ZXJfbGlzdCAmJiBpdGVtLmRyaXZlcl9saXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgIGl0ZW0uZHJpdmVyX2xpc3QuZm9yRWFjaCgoZHJpdmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5kcml2ZXJPcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZW0pID0+IGVsZW0gPT09IGRyaXZlclsnZHJpdmVyX25hbWUnXVxuICAgICAgICAgICkgPT09IC0xXG4gICAgICAgICAgICA/IHRoaXMuZHJpdmVyT3B0aW9uLnB1c2goZHJpdmVyWydkcml2ZXJfbmFtZSddKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlbSkgPT4gZWxlbSA9PT0gZHJpdmVyWyd0cnVja2luZ19jb21wYW55J11cbiAgICAgICAgICApID09PSAtMVxuICAgICAgICAgICAgPyB0aGlzLnRydWNraW5nQ29tcGFuYXlPcHRpb24ucHVzaChkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnknXSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGlja3VwT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ucGlja3VwX2xvY2F0aW9uKSA9PT0gLTFcbiAgICAgID8gdGhpcy5waWNrdXBPcHRpb25zLnB1c2goaXRlbS5waWNrdXBfbG9jYXRpb24pXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5kZXN0T3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0uZGVsaXZlcnlfbG9jYXRpb24pID09PSAtMVxuICAgICAgPyB0aGlzLmRlc3RPcHRpb25zLnB1c2goaXRlbS5kZWxpdmVyeV9sb2NhdGlvbilcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLmN1c3RvbWVyT3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAoY3VzdG9tZXIpID0+IGN1c3RvbWVyID09PSBpdGVtLmN1c3RvbWVyX25hbWVcbiAgICApID09PSAtMVxuICAgICAgPyB0aGlzLmN1c3RvbWVyT3B0aW9ucy5wdXNoKGl0ZW0uY3VzdG9tZXJfbmFtZSlcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLnVuaXRPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS51bml0KSA9PT0gLTFcbiAgICAgID8gdGhpcy51bml0T3B0aW9ucy5wdXNoKGl0ZW0udW5pdClcbiAgICAgIDogbnVsbDtcblxuICAgIGlmKGl0ZW0ubWF0ZXJpYWwpIHtcbiAgICAgIHRoaXMubWF0ZXJpYWxPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5tYXRlcmlhbCkgPT09IC0xXG4gICAgICA/IHRoaXMubWF0ZXJpYWxPcHRpb25zLnB1c2goaXRlbS5tYXRlcmlhbClcbiAgICAgIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucm91dGVfbmFtZSlcbiAgICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ucm91dGVfbmFtZSkgPT09IC0xXG4gICAgICAgID8gdGhpcy5yb3V0ZU5hbWVPcHRpb25zLnB1c2goaXRlbS5yb3V0ZV9uYW1lKVxuICAgICAgICA6IG51bGw7XG4gIH1cblxuICBmaWx0ZXIodmFsdWU6IHN0cmluZywgZmlsdGVyczogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChmaWx0ZXJWYWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0czogYW55W10gPSBbXTtcbiAgICB0aGlzLnVuaXRPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ3VuaXQnLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnY3VzdG9tZXInLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZih0aGlzLm1hdGVyaWFsT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubWF0ZXJpYWxPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdtYXRlcmlhbCcsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucGlja3VwT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ3BpY2t1cCBsb2NhdGlvbicsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZGVzdE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdkZXN0aW5hdGlvbiBsb2NhdGlvbicsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuamNvZGVPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQuam9iX2NvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnam9iJyxcbiAgICAgICAgICBsYWJlbDogdW5pdFsnam9iX2NvZGUnXSxcbiAgICAgICAgICB2YWx1ZTogdW5pdCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5kcml2ZXJPcHRpb24ubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnRHJpdmVyJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cnVja2luZ0NvbXBhbmF5T3B0aW9uLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnVHJ1Y2tpbmcgQ29tcGFueScsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdSb3V0ZSBuYW1lJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlYXJjaERpY3Q6IGFueSA9IHt9O1xuICAgIGZpbHRlcnMubWFwKChmaWx0ZXI6IHsgW3g6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gICAgICBzZWFyY2hEaWN0W2ZpbHRlclsnbmFtZSddICsgZmlsdGVyWyd0eXBlJ11dID0gZmlsdGVyO1xuICAgIH0pO1xuICAgIGNvbnN0IGZ1cnRoZXJGaWx0ZXI6IGFueVtdID0gW107XG4gICAgc2VhcmNoUmVzdWx0cy5tYXAoKHNlYXJjaCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaFsnbGFiZWwnXSArIHNlYXJjaFsndHlwZSddIGluIHNlYXJjaERpY3QpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZ1cnRoZXJGaWx0ZXIucHVzaChzZWFyY2gpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmdXJ0aGVyRmlsdGVyO1xuICB9XG5cbiAgZ2V0U2VhcmNoUmVzdWx0cyhsaXN0OiBSb3V0ZVtdLCBmaWx0ZXJ2YWw6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHRfbGlzdF9ib29sZWFuID0gW107XG4gICAgICBpZiAoZmlsdGVydmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAndW5pdCcpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT1cbiAgICAgICAgICAgICAgZWxlbWVudFtmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSBhcyBrZXlvZiBSb3V0ZV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2N1c3RvbWVyJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydjdXN0b21lcl9uYW1lJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ21hdGVyaWFsJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PVxuICAgICAgICAgICAgICBlbGVtZW50W2ZpbHRlcnZhbFswXVsndHlwZSddIGFzIGtleW9mIFJvdXRlXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAncGlja3VwIGxvY2F0aW9uJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydwaWNrdXBfbG9jYXRpb24nXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnZGVzdGluYXRpb24gbG9jYXRpb24nKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2pvYicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsnb3JkZXJfbnVtYmVyJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ1JvdXRlIG5hbWUnKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ3JvdXRlX25hbWUnXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnRHJpdmVyJykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5kcml2ZXJfbGlzdD8uZmluZEluZGV4KChlbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlWydkcml2ZXJfbmFtZSddO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdUcnVja2luZyBDb21wYW55Jykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5kcml2ZXJfbGlzdD8uZmluZEluZGV4KChlbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlWyd0cnVja2luZ19jb21wYW55J107XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0X2xpc3RfYm9vbGVhbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRfbGlzdF9ib29sZWFuLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiAmJiBjdXJyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyT3B0aW9ucygpIHtcbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmRlc3RPcHRpb25zID0gW107XG4gICAgdGhpcy5vd25lck9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmN1c3RvbWVyT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMudW5pdE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuamNvZGVPcHRpb25zID0gW107XG4gICAgdGhpcy5yb3V0ZU5hbWVPcHRpb25zID0gW107XG4gIH1cbiAgc2V0ZGljdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWN0LnNldChrZXksIHZhbHVlKTtcbiAgfVxuICBnZXRkaWN0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRpY3QuZ2V0KGtleSkpO1xuICB9XG4gIHJlbW92ZWRpY3RWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZGljdC5kZWxldGUoa2V5KTtcbiAgfVxuICBjb252ZXlTZWFyY2hJY29uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZldGNoVW5pdHNMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudW5pdHNMaXN0KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgndW5pdC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy51bml0c0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy51bml0c0xpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMudW5pdHNMaXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoTWF0ZXJpYWxzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hdGVyaWFsc0xpc3QpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdtYXRlcmlhbC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gdGhpcy5maWx0ZXJtYXRlcmlhbExpc3QocmVzLmRhdGEpO1xuICAgICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmV0Y2hNYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdtYXRlcmlhbC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIgPSB0aGlzLmZpbHRlcm1hdGVyaWFsTGlzdChyZXMuZGF0YSk7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmlsdGVybWF0ZXJpYWxMaXN0KGxpc3QpIHtcbiAgICBsZXQgbWV0ZXJpYWxMaXN0ID0gW107XG4gICAgbGlzdC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnN1Yi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGl0ZW0uc3ViLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChzdWJJdGVtLmFkZF90b19tYXJrZXRwbGFjZSkge1xuICAgICAgICAgICAgc3ViSXRlbS5tYXRlcmlhbCA9IGl0ZW0ubWF0ZXJpYWw7XG4gICAgICAgICAgICBzdWJJdGVtLm1hdGVyaWFsX2lkID0gaXRlbS5tYXRlcmlhbF9pZDtcbiAgICAgICAgICAgIHN1Ykl0ZW0ubGFiZWwgPSBpdGVtLm1hdGVyaWFsICsgJyB8ICcgKyBzdWJJdGVtLnN1Yl9tYXRlcmlhbDtcbiAgICAgICAgICAgIG1ldGVyaWFsTGlzdC5wdXNoKHN1Ykl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbWV0ZXJpYWxMaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuICAgIHJldHVybiBtZXRlcmlhbExpc3Q7XG4gIH1cbiAgZmV0Y2hDdXN0b21lcnNMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY3VzdG9tZXJzTGlzdCkge1xuICAgICAgICB0aGlzLmdldERhdGEoJ2NvbXBhbnkvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJzTGlzdCA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmN1c3RvbWVyc0xpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuY3VzdG9tZXJzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSxlQUFlLEVBQU8sTUFBTSxNQUFNLENBQUM7Ozs7O0FBaUI1QyxNQUFNLE9BQU8sWUFBWTtJQWlDZDtJQUNBO0lBQ3VCO0lBQ3ZCO0lBbkNULGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLGFBQWEsR0FBVSxFQUFFLENBQUM7SUFDMUIsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUN4QixZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLGVBQWUsR0FBVSxFQUFFLENBQUM7SUFDNUIsV0FBVyxHQUFVLEVBQUUsQ0FBQztJQUN4QixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixzQkFBc0IsR0FBVSxFQUFFLENBQUM7SUFDbkMsZ0JBQWdCLEdBQVUsRUFBRSxDQUFDO0lBQ3RCLGdCQUFnQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCx3QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCwrQkFBK0IsR0FDN0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9DLHFCQUFxQixHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELHdCQUF3QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRSxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakUsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0QsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ2pDLFNBQVMsQ0FBTTtJQUNmLGFBQWEsQ0FBTTtJQUNuQix3QkFBd0IsQ0FBTTtJQUM5QixhQUFhLENBQU07SUFDbkIsWUFBWSxDQUFNO0lBQ2xCLGtCQUFrQixDQUFNO0lBRXhCLFlBQ1MsSUFBZ0IsRUFDaEIsUUFBcUIsRUFDRSxNQUEwQixFQUNqRCxNQUFjO1FBSGQsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ0UsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDakQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQW1CLEVBQUUsUUFBaUI7UUFDbEQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sQ0FDTCxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3JCLFFBQVE7WUFDUixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxRQUFRO1lBQ1IsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxDQUM1RCxDQUFDO0lBQ0osQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEVBQUUsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBWSxFQUFFLElBQVM7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFLEVBQzNELElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUNELG1CQUFtQixDQUFDLElBQVksRUFBRSxJQUFTO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsSUFBSztRQUNsQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtnQkFDdkYsS0FBSyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ25CLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNuQixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sQ0FBQyxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQUMsQ0FBQyxDQUFBO2dCQUNsSSxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWUsRUFBRSxTQUFrQjtRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFO1lBQzlCLFFBQVEsRUFBRSxJQUFJO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixrQkFBa0IsRUFBRSxRQUFRO1lBQzVCLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDaEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFXO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztvQkFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZO29CQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07aUJBQ3BCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNULElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ3pCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUN6QyxLQUFLLENBQUMsQ0FBQzt3QkFDTixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQ25DLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQzlDLEtBQUssQ0FBQyxDQUFDO3dCQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO3dCQUM5RCxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUM1QixDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxhQUFhLENBQzlDLEtBQUssQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRVQsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2RSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNULENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhLEVBQUUsT0FBWTtRQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUM3QyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDckUsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSxpQkFBaUI7b0JBQ3ZCLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSxzQkFBc0I7b0JBQzVCLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxhQUFhLENBQUMsSUFBSSxDQUFDO29CQUNqQixJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztvQkFDdkIsS0FBSyxFQUFFLElBQUk7aUJBQ1osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ2pCLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLEtBQUssRUFBRSxJQUFJO29CQUNYLEtBQUssRUFBRSxJQUFJO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNqQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBUSxFQUFFLENBQUM7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtZQUMzQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sYUFBYSxHQUFVLEVBQUUsQ0FBQztRQUNoQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3JELENBQUM7aUJBQU0sQ0FBQztnQkFDTixhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFhLEVBQUUsU0FBYztRQUM1QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixNQUFNLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNwQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3RCLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7d0JBQ2xCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFnQixDQUFDLENBQy9DLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDeEMsbUJBQW1CLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUNsRCxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3hDLG1CQUFtQixDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3QkFDbEIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQWdCLENBQUMsQ0FDL0MsQ0FBQztnQkFDSixDQUFDO2dCQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLGlCQUFpQixFQUFFLENBQUM7b0JBQy9DLG1CQUFtQixDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUNwRCxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztvQkFDcEQsbUJBQW1CLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQ3RELENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDbkMsbUJBQW1CLENBQUMsSUFBSSxDQUN0QixTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUNqRCxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQzFDLG1CQUFtQixDQUFDLElBQUksQ0FDdEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FDL0MsQ0FBQztnQkFDSixDQUFDO2dCQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO3dCQUNuRCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3JELENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQzt3QkFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztvQkFDaEQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTt3QkFDbkQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQzFELENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQzt3QkFBRSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsZUFBZSxDQUFDLEdBQVc7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGNBQWM7UUFDWixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDcEQsSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDUixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUN4RCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZELE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELDZCQUE2QjtRQUMzQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUN4RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGtCQUFrQixDQUFDLElBQUk7UUFDckIsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUN2QixJQUFJLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO3dCQUMvQixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ2pDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDdkMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO3dCQUM3RCxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM3QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3ZELElBQUksR0FBRyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM5QixDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUEwQixFQUFFLEVBQUU7Z0JBQ3pFLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUM3QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ25ELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLE1BQU0sTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUMzRyxNQUFNLE9BQU8sR0FBRzs0QkFDaEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJOzRCQUNqQixHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVM7NEJBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzs0QkFDL0IsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFROzRCQUNwQixJQUFJLEVBQUcsTUFBTSxDQUFDLElBQUk7NEJBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzs0QkFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNOzRCQUNyQixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7NEJBQ2YsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQjt5QkFDMUMsQ0FBQTt3QkFDSCxPQUFPLE9BQU8sQ0FBQztvQkFDakIsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQTdaVSxZQUFZLHVFQW1DYixZQUFZOzJHQW5DWCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFvQzdCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE5nWm9uZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgUm91dGUgfSBmcm9tICcuL2RhdGEtbW9kZWwnO1xuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWxsIHtcbiAgY2l0eTogICAgICAgICAgc3RyaW5nO1xuICBsYXRpdHVkZTogICAgICBzdHJpbmc7XG4gIGxvY2F0aW9uX2lkOiAgIHN0cmluZztcbiAgbG9uZ2l0dWRlOiAgICAgc3RyaW5nO1xuICBuYW1lOiAgICAgICAgICBzdHJpbmc7XG4gIHN0YXRlOiAgICAgICAgIHN0cmluZztcbiAgc3RyZWV0OiAgICAgICAgc3RyaW5nO1xuICBzdWl0ZTogICAgICAgICBudWxsO1xuICB6aXA6ICAgICAgICAgICBzdHJpbmc7XG4gIGZvcm1hdHRlZF9hZGRyZXNzOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXRpbHNTZXJ2aWNlIHtcbiAgYW5hbHl0aWNzUkVTVFVSTCA9ICcnO1xuICBSRVNUVVJMUHJlZml4ID0gJyc7XG4gIHBpY2t1cE9wdGlvbnM6IGFueVtdID0gW107XG4gIGRlc3RPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBvd25lck9wdGlvbnM6IGFueVtdID0gW107XG4gIGN1c3RvbWVyT3B0aW9uczogYW55W10gPSBbXTtcbiAgdW5pdE9wdGlvbnM6IGFueVtdID0gW107XG4gIG1hdGVyaWFsT3B0aW9uczogYW55W10gPSBbXTtcbiAgamNvZGVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBkcml2ZXJPcHRpb246IGFueVtdID0gW107XG4gIHRydWNraW5nQ29tcGFuYXlPcHRpb246IGFueVtdID0gW107XG4gIHJvdXRlTmFtZU9wdGlvbnM6IGFueVtdID0gW107XG4gIHB1YmxpYyBwcmV2ZW50bmF2Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIG5hdkNoYW5nZU9ic2VydmUgPSB0aGlzLnByZXZlbnRuYXZDaGFuZ2UuYXNPYnNlcnZhYmxlKCk7XG4gIGNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBjbGVhclZpZXdSb3V0ZWZvckpvYkNvZGVPYnNlcnZlID1cbiAgICB0aGlzLmNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZS5hc09ic2VydmFibGUoKTtcbiAgcHJlVmVudEpvYmRldGFpbGNsb3NlID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIGdldHByZVZlbnRKb2JkZXRhaWxjbG9zZSA9IHRoaXMucHJlVmVudEpvYmRldGFpbGNsb3NlLmFzT2JzZXJ2YWJsZSgpO1xuICByb3V0ZURldGFpbHNVdGlsaXR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gIGdldHJvdXRlRGV0YWlsc1V0aWxpdHkgPSB0aGlzLnJvdXRlRGV0YWlsc1V0aWxpdHkuYXNPYnNlcnZhYmxlKCk7XG4gIHJlbW92ZU1hcEVudGl0eSA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICByZW1vdmVNYXBFbnRpdHlVdGlsaXR5ID0gdGhpcy5yZW1vdmVNYXBFbnRpdHkuYXNPYnNlcnZhYmxlKCk7XG4gIGRpY3QgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICB1bml0c0xpc3Q6IGFueTtcbiAgbWF0ZXJpYWxzTGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXI6IGFueTtcbiAgY3VzdG9tZXJzTGlzdDogYW55O1xuICBsb2NhdGlvbkxpc3Q6IGFueTtcbiAgcGlja1VwQXV0b2NvbXBsZXRlOiBhbnk7XG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwcml2YXRlIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsLFxuICAgIHB1YmxpYyBuZ1pvbmU6IE5nWm9uZSxcbiAgKSB7XG4gICAgdGhpcy5hbmFseXRpY3NSRVNUVVJMID0gY29uZmlnLmFuYWx5dGljc1JFU1RVUkw7XG4gICAgdGhpcy5SRVNUVVJMUHJlZml4ID0gY29uZmlnLlJFU1RVUkxQcmVmaXg7XG4gIH1cbiAgZ2V0RGF0ZUZvcm1hdChzdHJWYWw6IERhdGUgfCBudWxsLCBzZXByYXRlcj86IHN0cmluZykge1xuICAgIHNlcHJhdGVyID0gc2VwcmF0ZXIgPyBzZXByYXRlciA6ICctJztcbiAgICBjb25zdCBteWRhdGUgPSBzdHJWYWw7XG4gICAgcmV0dXJuIChcbiAgICAgIG15ZGF0ZT8uZ2V0RnVsbFllYXIoKSArXG4gICAgICBzZXByYXRlciArXG4gICAgICAoKG15ZGF0ZSA/IG15ZGF0ZS5nZXRNb250aCgpIDogMCkgKyAxKSArXG4gICAgICBzZXByYXRlciArXG4gICAgICBteWRhdGU/LmdldERhdGUoKVxuICAgICk7XG4gIH1cbiAgZ2V0RGF0YShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGAke3RoaXMuYW5hbHl0aWNzUkVTVFVSTH0ke3RoaXMuY29uZmlnLnJlcG9zaXRvcnl9LyR7cGF0aH1gXG4gICAgKTtcbiAgfVxuICBnZXRSZXN0RGF0YShwYXRoOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGAke3RoaXMuUkVTVFVSTFByZWZpeH0ke3BhdGh9YFxuICAgICk7XG4gIH1cbiAgcG9zdGRhdGEocGF0aDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICBgJHt0aGlzLmFuYWx5dGljc1JFU1RVUkx9JHt0aGlzLmNvbmZpZy5yZXBvc2l0b3J5fS8ke3BhdGh9YCxcbiAgICAgIGRhdGFcbiAgICApO1xuICB9XG4gIHBvc3REYXRhV2l0aFJlc3RVcmwocGF0aDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5SRVNUVVJMUHJlZml4fSR7cGF0aH1gLCBkYXRhKTtcbiAgfVxuICBcbiAgYXV0b2NvbXBsZXRlKHNlYXJjaEVsZW1lbnRSZWYsIHR5cGU/KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHNlYXJjaEVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICB0eXBlczogWydhZGRyZXNzJ11cbiAgICAgIH0pO1xuICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoYXV0b2NvbXBsZXRlLCAncGxhY2VfY2hhbmdlZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwbGFjZSA9IGF1dG9jb21wbGV0ZS5nZXRQbGFjZSgpO1xuICAgICAgICAgIHJlc29sdmUoe2xhdDogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksIGxuZzogcGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubG5nKCksIGZvcm1hdHRlZF9hZGRyZXNzOiBwbGFjZVsnZm9ybWF0dGVkX2FkZHJlc3MnXX0pXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvcGVuU25hY2tCYXIobWVzc2FnZTogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgJycsIHtcbiAgICAgIGR1cmF0aW9uOiA1MDAwLFxuICAgICAgdmVydGljYWxQb3NpdGlvbjogJ3RvcCcsXG4gICAgICBob3Jpem9udGFsUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgcGFuZWxDbGFzczogW2NsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICdkZWZhdWx0J10sXG4gICAgfSk7XG4gIH1cblxuICBtYWtlT3B0aW9ucyhpdGVtOiBSb3V0ZSkge1xuICAgIGlmIChpdGVtLm9yZGVyX251bWJlcikge1xuICAgICAgdGhpcy5qY29kZU9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtLmpvYl9pZCA9PT0gaXRlbS5qb2JfaWQpID09PSAtMVxuICAgICAgICA/IHRoaXMuamNvZGVPcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgam9iX2NvZGU6IGl0ZW0ub3JkZXJfbnVtYmVyLFxuICAgICAgICAgICAgam9iX2lkOiBpdGVtLmpvYl9pZCxcbiAgICAgICAgICB9KVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZiAoaXRlbS5kcml2ZXJfbGlzdCAmJiBpdGVtLmRyaXZlcl9saXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICAgIGl0ZW0uZHJpdmVyX2xpc3QuZm9yRWFjaCgoZHJpdmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5kcml2ZXJPcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZW0pID0+IGVsZW0gPT09IGRyaXZlclsnZHJpdmVyX25hbWUnXVxuICAgICAgICAgICkgPT09IC0xXG4gICAgICAgICAgICA/IHRoaXMuZHJpdmVyT3B0aW9uLnB1c2goZHJpdmVyWydkcml2ZXJfbmFtZSddKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlbSkgPT4gZWxlbSA9PT0gZHJpdmVyWyd0cnVja2luZ19jb21wYW55J11cbiAgICAgICAgICApID09PSAtMVxuICAgICAgICAgICAgPyB0aGlzLnRydWNraW5nQ29tcGFuYXlPcHRpb24ucHVzaChkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnknXSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucGlja3VwT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ucGlja3VwX2xvY2F0aW9uKSA9PT0gLTFcbiAgICAgID8gdGhpcy5waWNrdXBPcHRpb25zLnB1c2goaXRlbS5waWNrdXBfbG9jYXRpb24pXG4gICAgICA6IG51bGw7XG4gICAgdGhpcy5kZXN0T3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0uZGVsaXZlcnlfbG9jYXRpb24pID09PSAtMVxuICAgICAgPyB0aGlzLmRlc3RPcHRpb25zLnB1c2goaXRlbS5kZWxpdmVyeV9sb2NhdGlvbilcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLmN1c3RvbWVyT3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAoY3VzdG9tZXIpID0+IGN1c3RvbWVyID09PSBpdGVtLmN1c3RvbWVyX25hbWVcbiAgICApID09PSAtMVxuICAgICAgPyB0aGlzLmN1c3RvbWVyT3B0aW9ucy5wdXNoKGl0ZW0uY3VzdG9tZXJfbmFtZSlcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLnVuaXRPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS51bml0KSA9PT0gLTFcbiAgICAgID8gdGhpcy51bml0T3B0aW9ucy5wdXNoKGl0ZW0udW5pdClcbiAgICAgIDogbnVsbDtcblxuICAgIGlmKGl0ZW0ubWF0ZXJpYWwpIHtcbiAgICAgIHRoaXMubWF0ZXJpYWxPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5tYXRlcmlhbCkgPT09IC0xXG4gICAgICA/IHRoaXMubWF0ZXJpYWxPcHRpb25zLnB1c2goaXRlbS5tYXRlcmlhbClcbiAgICAgIDogbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucm91dGVfbmFtZSlcbiAgICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0gPT09IGl0ZW0ucm91dGVfbmFtZSkgPT09IC0xXG4gICAgICAgID8gdGhpcy5yb3V0ZU5hbWVPcHRpb25zLnB1c2goaXRlbS5yb3V0ZV9uYW1lKVxuICAgICAgICA6IG51bGw7XG4gIH1cblxuICBmaWx0ZXIodmFsdWU6IHN0cmluZywgZmlsdGVyczogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChmaWx0ZXJWYWx1ZSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoUmVzdWx0czogYW55W10gPSBbXTtcbiAgICB0aGlzLnVuaXRPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ3VuaXQnLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnY3VzdG9tZXInLCBsYWJlbDogdW5pdCwgdmFsdWU6IHVuaXQgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZih0aGlzLm1hdGVyaWFsT3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubWF0ZXJpYWxPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdtYXRlcmlhbCcsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucGlja3VwT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ3BpY2t1cCBsb2NhdGlvbicsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZGVzdE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdkZXN0aW5hdGlvbiBsb2NhdGlvbicsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuamNvZGVPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQuam9iX2NvZGUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnam9iJyxcbiAgICAgICAgICBsYWJlbDogdW5pdFsnam9iX2NvZGUnXSxcbiAgICAgICAgICB2YWx1ZTogdW5pdCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5kcml2ZXJPcHRpb24ubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnRHJpdmVyJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy50cnVja2luZ0NvbXBhbmF5T3B0aW9uLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnVHJ1Y2tpbmcgQ29tcGFueScsXG4gICAgICAgICAgbGFiZWw6IHVuaXQsXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdSb3V0ZSBuYW1lJywgbGFiZWw6IHVuaXQsIHZhbHVlOiB1bml0IH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlYXJjaERpY3Q6IGFueSA9IHt9O1xuICAgIGZpbHRlcnMubWFwKChmaWx0ZXI6IHsgW3g6IHN0cmluZ106IGFueSB9KSA9PiB7XG4gICAgICBzZWFyY2hEaWN0W2ZpbHRlclsnbmFtZSddICsgZmlsdGVyWyd0eXBlJ11dID0gZmlsdGVyO1xuICAgIH0pO1xuICAgIGNvbnN0IGZ1cnRoZXJGaWx0ZXI6IGFueVtdID0gW107XG4gICAgc2VhcmNoUmVzdWx0cy5tYXAoKHNlYXJjaCkgPT4ge1xuICAgICAgaWYgKHNlYXJjaFsnbGFiZWwnXSArIHNlYXJjaFsndHlwZSddIGluIHNlYXJjaERpY3QpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZ1cnRoZXJGaWx0ZXIucHVzaChzZWFyY2gpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmdXJ0aGVyRmlsdGVyO1xuICB9XG5cbiAgZ2V0U2VhcmNoUmVzdWx0cyhsaXN0OiBSb3V0ZVtdLCBmaWx0ZXJ2YWw6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGxpc3QuZmlsdGVyKChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHRfbGlzdF9ib29sZWFuID0gW107XG4gICAgICBpZiAoZmlsdGVydmFsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAndW5pdCcpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT1cbiAgICAgICAgICAgICAgZWxlbWVudFtmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSBhcyBrZXlvZiBSb3V0ZV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2N1c3RvbWVyJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydjdXN0b21lcl9uYW1lJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ21hdGVyaWFsJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PVxuICAgICAgICAgICAgICBlbGVtZW50W2ZpbHRlcnZhbFswXVsndHlwZSddIGFzIGtleW9mIFJvdXRlXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAncGlja3VwIGxvY2F0aW9uJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydwaWNrdXBfbG9jYXRpb24nXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnZGVzdGluYXRpb24gbG9jYXRpb24nKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2pvYicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsnb3JkZXJfbnVtYmVyJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ1JvdXRlIG5hbWUnKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ3JvdXRlX25hbWUnXVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnRHJpdmVyJykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5kcml2ZXJfbGlzdD8uZmluZEluZGV4KChlbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlWydkcml2ZXJfbmFtZSddO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdUcnVja2luZyBDb21wYW55Jykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5kcml2ZXJfbGlzdD8uZmluZEluZGV4KChlbGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlWyd0cnVja2luZ19jb21wYW55J107XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0X2xpc3RfYm9vbGVhbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiByZXN1bHRfbGlzdF9ib29sZWFuLnJlZHVjZSgocHJldiwgY3VycikgPT4gcHJldiAmJiBjdXJyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyT3B0aW9ucygpIHtcbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmRlc3RPcHRpb25zID0gW107XG4gICAgdGhpcy5vd25lck9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmN1c3RvbWVyT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMudW5pdE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuamNvZGVPcHRpb25zID0gW107XG4gICAgdGhpcy5yb3V0ZU5hbWVPcHRpb25zID0gW107XG4gIH1cbiAgc2V0ZGljdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWN0LnNldChrZXksIHZhbHVlKTtcbiAgfVxuICBnZXRkaWN0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh0aGlzLmRpY3QuZ2V0KGtleSkpO1xuICB9XG4gIHJlbW92ZWRpY3RWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIHRoaXMuZGljdC5kZWxldGUoa2V5KTtcbiAgfVxuICBjb252ZXlTZWFyY2hJY29uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGZldGNoVW5pdHNMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMudW5pdHNMaXN0KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgndW5pdC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdGhpcy51bml0c0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy51bml0c0xpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMudW5pdHNMaXN0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoTWF0ZXJpYWxzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLm1hdGVyaWFsc0xpc3QpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdtYXRlcmlhbC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gdGhpcy5maWx0ZXJtYXRlcmlhbExpc3QocmVzLmRhdGEpO1xuICAgICAgICAgIHJlc29sdmUodGhpcy5tYXRlcmlhbHNMaXN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmV0Y2hNYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdtYXRlcmlhbC9saXN0L3ZpZXcnKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0Rm9yQ3VzdG9tZXIgPSB0aGlzLmZpbHRlcm1hdGVyaWFsTGlzdChyZXMuZGF0YSk7XG4gICAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3RGb3JDdXN0b21lcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmlsdGVybWF0ZXJpYWxMaXN0KGxpc3QpIHtcbiAgICBsZXQgbWV0ZXJpYWxMaXN0ID0gW107XG4gICAgbGlzdC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnN1Yi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGl0ZW0uc3ViLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChzdWJJdGVtLmFkZF90b19tYXJrZXRwbGFjZSkge1xuICAgICAgICAgICAgc3ViSXRlbS5tYXRlcmlhbCA9IGl0ZW0ubWF0ZXJpYWw7XG4gICAgICAgICAgICBzdWJJdGVtLm1hdGVyaWFsX2lkID0gaXRlbS5tYXRlcmlhbF9pZDtcbiAgICAgICAgICAgIHN1Ykl0ZW0ubGFiZWwgPSBpdGVtLm1hdGVyaWFsICsgJyB8ICcgKyBzdWJJdGVtLnN1Yl9tYXRlcmlhbDtcbiAgICAgICAgICAgIG1ldGVyaWFsTGlzdC5wdXNoKHN1Ykl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbWV0ZXJpYWxMaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuICAgIHJldHVybiBtZXRlcmlhbExpc3Q7XG4gIH1cbiAgZmV0Y2hDdXN0b21lcnNMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY3VzdG9tZXJzTGlzdCkge1xuICAgICAgICB0aGlzLmdldERhdGEoJ2NvbXBhbnkvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJzTGlzdCA9IHJlcy5kYXRhO1xuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLmN1c3RvbWVyc0xpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuY3VzdG9tZXJzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmZXRjaExvY2F0aW9ubGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5nZXRSZXN0RGF0YSgnbG9jYXRpb25zL2FsbCcpLnN1YnNjcmliZSgocmVzOiB7IGRhdGE6IExvY2F0aW9uQWxsIH0pID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMubG9jYXRpb25MaXN0ID0gcmVzLmRhdGE7XG4gICAgICAgICAgdGhpcy5sb2NhdGlvbkxpc3QgPSB0aGlzLmxvY2F0aW9uTGlzdC5tYXAoKG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgb2JqZWN0LmZvcm1hdHRlZF9hZGRyZXNzID0gYCR7b2JqZWN0Lm5hbWV9IHwgJHtvYmplY3Quc3RyZWV0fSAke29iamVjdC5jaXR5fSwgJHtvYmplY3Quc3RhdGV9ICR7b2JqZWN0LnppcH1gO1xuICAgICAgICAgICAgICBjb25zdCBuZXdJdGVtID0ge1xuICAgICAgICAgICAgICBjaXR5OiBvYmplY3QuY2l0eSxcbiAgICAgICAgICAgICAgbG5nOiBvYmplY3QubG9uZ2l0dWRlLFxuICAgICAgICAgICAgICBsb2NhdGlvbl9pZDogb2JqZWN0LmxvY2F0aW9uX2lkLFxuICAgICAgICAgICAgICBsYXQ6IG9iamVjdC5sYXRpdHVkZSxcbiAgICAgICAgICAgICAgbmFtZTogIG9iamVjdC5uYW1lLFxuICAgICAgICAgICAgICBzdGF0ZTogb2JqZWN0LnN0YXRlLFxuICAgICAgICAgICAgICBzdHJlZXQ6IG9iamVjdC5zdHJlZXQsXG4gICAgICAgICAgICAgIHppcDogb2JqZWN0LnppcCxcbiAgICAgICAgICAgICAgZm9ybWF0dGVkX2FkZHJlc3M6IG9iamVjdC5mb3JtYXR0ZWRfYWRkcmVzc1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3SXRlbTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJlc29sdmUodGhpcy5sb2NhdGlvbkxpc3QpO1xuICAgICAgICB9XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -49,6 +49,8 @@ class Route {
49
49
  materialLabel;
50
50
  isActive;
51
51
  prevent;
52
+ is_system_pickup;
53
+ is_system_delivery;
52
54
  }
53
55
  const EstinationData = ['estimated_distance', 'estimated_time'];
54
56
  var EstinationEnum;
@@ -131,6 +133,8 @@ class UtilsService {
131
133
  materialsList;
132
134
  materialsListForCustomer;
133
135
  customersList;
136
+ locationList;
137
+ pickUpAutocomplete;
134
138
  constructor(http, snackBar, config, ngZone) {
135
139
  this.http = http;
136
140
  this.snackBar = snackBar;
@@ -151,13 +155,16 @@ class UtilsService {
151
155
  getData(path) {
152
156
  return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`);
153
157
  }
158
+ getRestData(path) {
159
+ return this.http.get(`${this.RESTURLPrefix}${path}`);
160
+ }
154
161
  postdata(path, data) {
155
162
  return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data);
156
163
  }
157
164
  postDataWithRestUrl(path, data) {
158
165
  return this.http.post(`${this.RESTURLPrefix}${path}`, data);
159
166
  }
160
- autocomplete(searchElementRef, form) {
167
+ autocomplete(searchElementRef, type) {
161
168
  return new Promise((resolve, reject) => {
162
169
  const autocomplete = new google.maps.places.Autocomplete(searchElementRef.nativeElement, {
163
170
  types: ['address']
@@ -450,6 +457,33 @@ class UtilsService {
450
457
  }
451
458
  });
452
459
  }
460
+ fetchLocationlist() {
461
+ return new Promise((resolve, reject) => {
462
+ this.getRestData('locations/all').subscribe((res) => {
463
+ if (res) {
464
+ this.locationList = res.data;
465
+ this.locationList = this.locationList.map((object) => {
466
+ object.formatted_address = `${object.name} | ${object.street} ${object.city}, ${object.state} ${object.zip}`;
467
+ const newItem = {
468
+ city: object.city,
469
+ lng: object.longitude,
470
+ location_id: object.location_id,
471
+ lat: object.latitude,
472
+ name: object.name,
473
+ state: object.state,
474
+ street: object.street,
475
+ zip: object.zip,
476
+ formatted_address: object.formatted_address
477
+ };
478
+ return newItem;
479
+ });
480
+ resolve(this.locationList);
481
+ }
482
+ }, err => {
483
+ console.log(err);
484
+ });
485
+ });
486
+ }
453
487
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
454
488
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
455
489
  }
@@ -625,72 +659,74 @@ class CoolmapService {
625
659
  destination &&
626
660
  destination[0] &&
627
661
  destination[1]) {
628
- linecolor = this.provideLineColor(route['unit'], routeType);
629
- if (enablefitbound) {
630
- const padding = {
631
- top: this.padding.top + this.customTopForCustomer,
632
- bottom: this.padding.bottom +
633
- (this.windowActualHeightWidth.availHeight -
634
- (window.innerHeight - 65)),
635
- left: this.padding.left,
636
- right: this.padding.right,
637
- };
638
- this.map.fitBounds([origin, destination], { padding, pitch: 65 }, { fitboundCompleteJob: true });
639
- }
640
- if (this.map.getSource(`route-source-for-job-code${index}`)) {
641
- this.removeRouteAndMarker(index).then(() => { });
642
- }
643
- this.map.addSource(`route-source-for-job-code${index}`, {
644
- type: 'geojson',
645
- data: {
646
- type: 'Feature',
647
- properties: {},
648
- geometry: { type: 'LineString', coordinates: cordinates },
649
- },
650
- });
651
- this.map.addLayer({
652
- id: `route-for-job-code${index}`,
653
- type: 'line',
654
- source: `route-source-for-job-code${index}`,
655
- paint: { 'line-color': linecolor, 'line-width': 2 },
656
- layout: { 'line-cap': 'round', 'line-join': 'round' },
657
- });
658
- const dataSetForMap = {
659
- origin,
660
- destination,
661
- index,
662
- linecolor,
663
- route,
664
- };
665
- this.createMarker(dataSetForMap);
666
- this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {
667
- if (this.popup) {
668
- this.popup.remove();
662
+ this.map.once('idle', (res) => {
663
+ linecolor = this.provideLineColor(route['unit'], routeType);
664
+ if (enablefitbound) {
665
+ const padding = {
666
+ top: this.padding.top + this.customTopForCustomer,
667
+ bottom: this.padding.bottom +
668
+ (this.windowActualHeightWidth.availHeight -
669
+ (window.innerHeight - 65)),
670
+ left: this.padding.left,
671
+ right: this.padding.right,
672
+ };
673
+ this.map.fitBounds([origin, destination], { padding, pitch: 65 }, { fitboundCompleteJob: true });
669
674
  }
670
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);
671
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);
672
- const datasetForPopup = {
673
- coordinate: [e.lngLat.lng, e.lngLat.lat],
674
- pickup: route.pickup_location ? route.pickup_location : '',
675
- drop: route.delivery_location ? route.delivery_location : '',
676
- jobCode: route.project ? route.order_number : null,
677
- customer: route.project ? route.customer_name : null,
678
- routeType: route.project ? 'Project' : 'Route',
679
- title: route.project
680
- ? route.project
681
- : route.route_name
682
- ? route.route_name
683
- : '',
684
- material: route.material ? route.material : '',
685
- type: route.unit ? route.unit : '',
686
- };
687
- this.createPopup(datasetForPopup);
688
- });
689
- this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {
690
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);
691
- if (this.popup) {
692
- this.popup.remove();
675
+ if (this.map.getSource(`route-source-for-job-code${index}`)) {
676
+ this.removeRouteAndMarker(index).then(() => { });
693
677
  }
678
+ this.map.addSource(`route-source-for-job-code${index}`, {
679
+ type: 'geojson',
680
+ data: {
681
+ type: 'Feature',
682
+ properties: {},
683
+ geometry: { type: 'LineString', coordinates: cordinates },
684
+ },
685
+ });
686
+ this.map.addLayer({
687
+ id: `route-for-job-code${index}`,
688
+ type: 'line',
689
+ source: `route-source-for-job-code${index}`,
690
+ paint: { 'line-color': linecolor, 'line-width': 2 },
691
+ layout: { 'line-cap': 'round', 'line-join': 'round' },
692
+ });
693
+ const dataSetForMap = {
694
+ origin,
695
+ destination,
696
+ index,
697
+ linecolor,
698
+ route,
699
+ };
700
+ this.createMarker(dataSetForMap);
701
+ this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {
702
+ if (this.popup) {
703
+ this.popup.remove();
704
+ }
705
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);
706
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);
707
+ const datasetForPopup = {
708
+ coordinate: [e.lngLat.lng, e.lngLat.lat],
709
+ pickup: route.pickup_location ? route.pickup_location : '',
710
+ drop: route.delivery_location ? route.delivery_location : '',
711
+ jobCode: route.project ? route.order_number : null,
712
+ customer: route.project ? route.customer_name : null,
713
+ routeType: route.project ? 'Project' : 'Route',
714
+ title: route.project
715
+ ? route.project
716
+ : route.route_name
717
+ ? route.route_name
718
+ : '',
719
+ material: route.material ? route.material : '',
720
+ type: route.unit ? route.unit : '',
721
+ };
722
+ this.createPopup(datasetForPopup);
723
+ });
724
+ this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {
725
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);
726
+ if (this.popup) {
727
+ this.popup.remove();
728
+ }
729
+ });
694
730
  });
695
731
  }
696
732
  }