ng-miam 3.7.3 → 3.7.4

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.
@@ -6,6 +6,7 @@ import { RecipeProviderService } from './recipe-provider.service';
6
6
  import { BehaviorSubject } from 'rxjs';
7
7
  import { AnalyticsService } from './analytics.service';
8
8
  import { UserService } from './user.service';
9
+ import { UserFavoriteItemsService } from './user-favorite-items.service';
9
10
  import { Icon } from '../_types/icon.enum';
10
11
  import { RecipesService } from './recipes.service';
11
12
  import { MediaMatcher, BreakpointObserver } from '@angular/cdk/layout';
@@ -17,19 +18,21 @@ import * as i1 from "./point-of-sales.service";
17
18
  import * as i2 from "./groceries-lists.service";
18
19
  import * as i3 from "./baskets.service";
19
20
  import * as i4 from "./user.service";
20
- import * as i5 from "./recipe-provider.service";
21
- import * as i6 from "./analytics.service";
22
- import * as i7 from "./recipes.service";
23
- import * as i8 from "@angular/cdk/layout";
24
- import * as i9 from "./suppliers.service";
21
+ import * as i5 from "./user-favorite-items.service";
22
+ import * as i6 from "./recipe-provider.service";
23
+ import * as i7 from "./analytics.service";
24
+ import * as i8 from "./recipes.service";
25
+ import * as i9 from "@angular/cdk/layout";
26
+ import * as i10 from "./suppliers.service";
25
27
  const SMALL_SCREEN_BP = '(min-width: 1023px)';
26
28
  // Context shared between Miam SDK & host app
27
29
  export class ContextService {
28
- constructor(posService, listsService, basketsService, userService, recipesProvidersService, analyticsService, recipesService, mediaMatcher, suppliersService, breakpointObserver) {
30
+ constructor(posService, listsService, basketsService, userService, userFavoriteItemsService, recipesProvidersService, analyticsService, recipesService, mediaMatcher, suppliersService, breakpointObserver) {
29
31
  this.posService = posService;
30
32
  this.listsService = listsService;
31
33
  this.basketsService = basketsService;
32
34
  this.userService = userService;
35
+ this.userFavoriteItemsService = userFavoriteItemsService;
33
36
  this.recipesProvidersService = recipesProvidersService;
34
37
  this.analyticsService = analyticsService;
35
38
  this.recipesService = recipesService;
@@ -152,6 +155,9 @@ export class ContextService {
152
155
  this.listsService.refreshCurrentList();
153
156
  this.userService.resetUserInfo();
154
157
  },
158
+ setFavoriteItems: (favoriteProductIds) => {
159
+ return this.userFavoriteItemsService.set_from_ext_ids(favoriteProductIds);
160
+ },
155
161
  device: this.mediaMatcher,
156
162
  isSmallScreen$: this.isSmallScreen$.asObservable()
157
163
  },
@@ -196,12 +202,12 @@ export class ContextService {
196
202
  return this.userService.setUserInfo(forbidProfiling);
197
203
  }
198
204
  }
199
- ContextService.ɵfac = function ContextService_Factory(t) { return new (t || ContextService)(i0.ɵɵinject(i1.PointOfSalesService), i0.ɵɵinject(i2.GroceriesListsService), i0.ɵɵinject(i3.BasketsService), i0.ɵɵinject(i4.UserService), i0.ɵɵinject(i5.RecipeProviderService), i0.ɵɵinject(i6.AnalyticsService), i0.ɵɵinject(i7.RecipesService), i0.ɵɵinject(i8.MediaMatcher), i0.ɵɵinject(i9.SuppliersService), i0.ɵɵinject(i8.BreakpointObserver)); };
205
+ ContextService.ɵfac = function ContextService_Factory(t) { return new (t || ContextService)(i0.ɵɵinject(i1.PointOfSalesService), i0.ɵɵinject(i2.GroceriesListsService), i0.ɵɵinject(i3.BasketsService), i0.ɵɵinject(i4.UserService), i0.ɵɵinject(i5.UserFavoriteItemsService), i0.ɵɵinject(i6.RecipeProviderService), i0.ɵɵinject(i7.AnalyticsService), i0.ɵɵinject(i8.RecipesService), i0.ɵɵinject(i9.MediaMatcher), i0.ɵɵinject(i10.SuppliersService), i0.ɵɵinject(i9.BreakpointObserver)); };
200
206
  ContextService.ɵprov = i0.ɵɵdefineInjectable({ token: ContextService, factory: ContextService.ɵfac, providedIn: 'root' });
201
207
  /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ContextService, [{
202
208
  type: Injectable,
203
209
  args: [{
204
210
  providedIn: 'root'
205
211
  }]
206
- }], function () { return [{ type: i1.PointOfSalesService }, { type: i2.GroceriesListsService }, { type: i3.BasketsService }, { type: i4.UserService }, { type: i5.RecipeProviderService }, { type: i6.AnalyticsService }, { type: i7.RecipesService }, { type: i8.MediaMatcher }, { type: i9.SuppliersService }, { type: i8.BreakpointObserver }]; }, null); })();
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7O0FBRTNGLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBTzlDLDZDQUE2QztBQUk3QyxNQUFNLE9BQU8sY0FBYztJQW9KekIsWUFD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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sT0FBTyxDQUFDLGVBQXdCLEVBQUUsVUFBbUI7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsZ0hBQWdIO1FBQ2hILElBQUksVUFBVSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLDJEQUEyRDtTQUM5RjtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7NEVBNUxVLGNBQWM7c0RBQWQsY0FBYyxXQUFkLGNBQWMsbUJBRmIsTUFBTTtrREFFUCxjQUFjO2NBSDFCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSB9IGZyb20gJy4vYmFza2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVkaWFNYXRjaGVyLCBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFN1cHBsaWVyc1NlcnZpY2UgfSBmcm9tICcuL3N1cHBsaWVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmFza2V0SGFuZGxlciwgQmFza2V0V3JhcHBlciwgQ29tcGFyYWJsZVByb2R1Y3QgfSBmcm9tICcuLi9fdXRpbHMvc3luY2hyby1iYXNrZXQnO1xuXG5jb25zdCBTTUFMTF9TQ1JFRU5fQlAgPSAnKG1pbi13aWR0aDogMTAyM3B4KSc7XG5cbmludGVyZmFjZSBJY29uT3ZlcnJpZGUge1xuICBpY29uOiBJY29uO1xuICB1cmw6IHN0cmluZztcbn1cblxuLy8gQ29udGV4dCBzaGFyZWQgYmV0d2VlbiBNaWFtIFNESyAmIGhvc3QgYXBwXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0U2VydmljZSB7XG4gIHVzZXJJbmZvOiBVc2VyO1xuICBpY29uczogSWNvbk92ZXJyaWRlW107XG4gIHZpZGVvUmVjaXBlc0VuYWJsZWQgPSBmYWxzZTtcbiAgYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkID0gZmFsc2U7XG4gIGhvb2tDYWxsYmFjazogKGlzTG9nZ2VkLCBpc1Bvc1ZhbGlkKSA9PiBib29sZWFuO1xuICBkaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IGZhbHNlO1xuICBkZWZhdWx0SW5ncmVkaWVudFBpY3R1cmUgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvZGVmYXVsdC1pbmdyZWRpZW50LXBpY3R1cmUuc3ZnJztcblxuICBwcml2YXRlIENPUlNJc3N1ZXM6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSBpc1NtYWxsU2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIGJhc2tldFdyYXBwZXIgPSBuZXcgQmFza2V0V3JhcHBlcigpO1xuICBwcml2YXRlIGJhc2tldEhhbmRsZXI6IEJhc2tldEhhbmRsZXI7XG5cbiAgbWlhbSA9IHtcbiAgICBhbmFseXRpY3M6IHtcbiAgICAgIGluaXQ6IChnYUtleTogc3RyaW5nLCBvcHRpbWl6ZUtleTogc3RyaW5nID0gbnVsbCkgPT4gdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXQoZ2FLZXksIG9wdGltaXplS2V5KSxcbiAgICAgIHNldEFiVGVzdEtleTogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5hYlRlc3RrZXkgPSBrZXk7XG4gICAgICB9XG4gICAgfSxcbiAgICBiYXNrZXQ6IHtcbiAgICAgIHN0YXRzJDogdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRTdGF0cyQsXG4gICAgICBlbnRyaWVzJDogdGhpcy5iYXNrZXRzU2VydmljZS5hY3RpdmVCYXNrZXRFbnRyaWVzKCksXG4gICAgICBjb25maXJtOiAoKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLmNvbmZpcm1CYXNrZXQoKSxcbiAgICAgIHBhaWQ6IChwcmljZSA9IDApID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tNaWFtXSBzZW5kIHBheW1lbnQgYW5hbHl0aWNzIGV2ZW50Jyk7XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnQoJ3BheS1iYXNrZXQnLCBudWxsLCBwcmljZSk7XG4gICAgICB9LFxuICAgICAgcmVtb3ZlRW50cmllczogKGVudHJpZXM6IHsgaWQ6IHN0cmluZywgcXR5OiBudW1iZXIgfVtdKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlbW92ZUJhc2tldEVudHJpZXMoZW50cmllcyksXG4gICAgICBpbml0QmFza2V0U3luY2hybzogKCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIgPSBuZXcgQmFza2V0SGFuZGxlcih0aGlzLmJhc2tldFdyYXBwZXIpO1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIuaW5pdEJhc2tldFByb2Nlc3MoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldE1hcHBlcjoge1xuICAgICAgaGFzUGF5bWVudDogKGNhbGxiYWNrOiAoKSA9PiBib29sZWFuKSA9PiB0aGlzLmJhc2tldFdyYXBwZXIuaGFzUGF5bWVudCA9IGNhbGxiYWNrLFxuICAgICAgcGF5bWVudFRvdGFsOiAoY2FsbGJhY2s6ICgpID0+IG51bWJlcikgPT4gdGhpcy5iYXNrZXRXcmFwcGVyLnBheW1lbnRUb3RhbCA9IGNhbGxiYWNrLFxuICAgICAgbGlzdGVuVG9SZXRhaWxlckJhc2tldDogKGNhbGxiYWNrOiAoYmFza2V0Q2hhbmdlZENhbGxCYWNrOiAocHJvZHVjdHM6IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHZvaWQpID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRXcmFwcGVyLmxpc3RlblRvUmV0YWlsZXJCYXNrZXQgPSBjYWxsYmFjaztcbiAgICAgIH0sXG4gICAgICBnZXRCYXNrZXRQcm9kdWN0czogKGNhbGxiYWNrOiAoKSA9PiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB0aGlzLmJhc2tldFdyYXBwZXIuZ2V0QmFza2V0UHJvZHVjdHMgPSBjYWxsYmFjayxcbiAgICAgIHB1c2hQcm9kdWN0c1RvQmFza2V0OiAoY2FsbGJhY2s6IChwcm9kdWN0czogYW55W10pID0+IHZvaWQpID0+IHRoaXMuYmFza2V0V3JhcHBlci5wdXNoUHJvZHVjdHNUb0Jhc2tldCA9IGNhbGxiYWNrLFxuICAgICAgbWFwQ29tcGFyYWJsZVByb2R1Y3RUb1Byb2R1Y3Q6IChjYWxsYmFjazogKGNvbXBhcmFibGVQcm9kdWN0OiBDb21wYXJhYmxlUHJvZHVjdCkgPT4gYW55KSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0V3JhcHBlci5tYXBDb21wYXJhYmxlUHJvZHVjdFRvUHJvZHVjdCA9IGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGZlYXR1cmVzOiB7XG4gICAgICBlbmFibGVWaWRlb1JlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb1JlY2lwZXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gSW5qZWN0IHlvdXR1YmUgc2NyaXB0XG4gICAgICAgIGNvbnN0IHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICB0YWcuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhZyk7XG4gICAgICB9LFxuICAgICAgZW5hYmxlQXJ0aWNsZXNJbkNhdGFsb2c6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVVzZXJQcmVmZXJlbmNlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnByZWZlcmVuY2VzQWN0aXZhdGVkJC5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaG9vazoge1xuICAgICAgc2V0SG9va0NhbGxiYWNrOiAoY2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDoge1xuICAgICAgcmVzZXQ6ICgpID0+IHRoaXMubGlzdHNTZXJ2aWNlLnJlc2V0TGlzdCgpLnN1YnNjcmliZSgpLFxuICAgICAgYWRkUmVjaXBlOiAocmVjaXBlSWQsIGd1ZXN0cykgPT4gdGhpcy5saXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHJlY2lwZUlkLCBndWVzdHMsICdjbGllbnQnKSxcbiAgICAgIGhhc1JlY2lwZTogKHJlY2lwZUlkKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGVJZClcbiAgICB9LFxuICAgIHBvczoge1xuICAgICAgbG9hZDogKHBvc0lkKSA9PiB7XG4gICAgICAgIHRoaXMucG9zU2VydmljZS5sb2FkUG9zKHBvc0lkKTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoZXh0SWQsIHN1cHBsaWVySWQpID0+IHtcbiAgICAgICAgdGhpcy5wb3NTZXJ2aWNlLmxvYWRQb3NXaXRoRXh0SWQoZXh0SWQsIHN1cHBsaWVySWQpO1xuICAgICAgfSxcbiAgICAgIHBvcyQ6IHRoaXMucG9zU2VydmljZS5wb3MkXG4gICAgfSxcbiAgICByZWNpcGVzOiB7XG4gICAgICBkaXNwbGF5OiAoaWQsIHByZXZpZXdBbGxvd2VkID0gdHJ1ZSwgcHJldmlld01vZGUgPSBmYWxzZSkgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5kaXNwbGF5KGlkLCB7cHJldmlld0FsbG93ZWQsIHByZXZpZXdNb2RlfSksXG4gICAgICBoaWRkZW46IHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZGVuLFxuICAgICAgc2VhcmNoOiAocHJvdmlkZXIsIHF1ZXJ5KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmFsbChcbiAgICAgICAgICB7IHJlbW90ZWZpbHRlcjogeyByZWNpcGVfcHJvdmlkZXJfaWQ6IHByb3ZpZGVyLCBzZWFyY2g6IHF1ZXJ5IH0gfVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKHJlc3VsdCA9PiAhcmVzdWx0KSxcbiAgICAgICAgICBtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2VbJ2RhdGEnXSlcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBzaG91bGREaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkczogKHNob3VsZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gc2hvdWxkO1xuICAgICAgfSxcbiAgICAgIHNldERlZmF1bHRJbmdyZWRpZW50UGljdHVyZTogKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlID0gdXJsO1xuICAgICAgfSxcbiAgICAgIHNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyA9IHsgZGlzcGxheSwgYWRkVG9CYXNrZXQgfTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHN1cHBsaWVyOiB7XG4gICAgICBsb2FkOiAoc3VwcGxpZXJJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sb2FkU3VwcGxpZXIoc3VwcGxpZXJJZC50b1N0cmluZygpKTtcbiAgICAgIH0sXG4gICAgICBub3RpZnlCYXNrZXRVcGRhdGVkOiAoYmFza2V0VG9rZW46IHN0cmluZywgc3RhdHVzOiBzdHJpbmcsIHByaWNlOiBudW1iZXIgfCBzdHJpbmcgPSBudWxsKSA9PiB7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5ub3RpZnlCYXNrZXRVcGRhdGVkKGJhc2tldFRva2VuLCBzdGF0dXMsIHByaWNlKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHVzZXI6IHtcbiAgICAgIHNldFRva2VuOiAodG9rZW4sIGZvcmJpZFByb2ZpbGluZyA9IGZhbHNlLCBpbml0QmFza2V0ID0gZmFsc2UpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJUb2tlbicsIHRva2VuKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJJZCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGZvcmJpZFByb2ZpbGluZywgaW5pdEJhc2tldCk7XG4gICAgICB9LFxuICAgICAgbG9hZFdpdGhFeHRJZDogKGlkLCBmb3JiaWRQcm9maWxpbmcgPSBmYWxzZSwgaW5pdEJhc2tldCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS91c2VySWQnLCBpZCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS91c2VyVG9rZW4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9nVXNlcihmb3JiaWRQcm9maWxpbmcsIGluaXRCYXNrZXQpO1xuICAgICAgfSxcbiAgICAgIHJlc2V0OiAoKSA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS91c2VyVG9rZW4nKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJJZCcpO1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnRvZ2dsZUlzTG9nZ2VkKGZhbHNlKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tNaWFtXSB3aWxsIHJlZnJlc2ggbGlzdCBhZnRlciByZXNldCcpO1xuICAgICAgICB0aGlzLmxpc3RzU2VydmljZS5yZWZyZXNoQ3VycmVudExpc3QoKTtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5yZXNldFVzZXJJbmZvKCk7XG4gICAgICB9LFxuICAgICAgZGV2aWNlOiB0aGlzLm1lZGlhTWF0Y2hlcixcbiAgICAgIGlzU21hbGxTY3JlZW4kOiB0aGlzLmlzU21hbGxTY3JlZW4kLmFzT2JzZXJ2YWJsZSgpXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIHR3byB0aW1lcyAnbGwgbm90IGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gaWNvbiBoYXZlIHRvIGJlIGEga25vd2VkIGljb24gbmFtZSBzZWUgc2VjdGlvbiAnQ3VzdG9tIGljb25zJyBpbiByZWFkIG1lXG4gICAgICogQHBhcmFtIHVybCBvZiB0aGUgbmV3IGljb25cbiAgICAgKi9cbiAgICBvdmVycmlkZUljb246IChpY29uLCB1cmwpID0+IHtcbiAgICAgIGlmICghdGhpcy5pY29ucykgeyB0aGlzLmljb25zID0gW107IH1cbiAgICAgIGNvbnN0IGV4aXN0aW5nSWNvbiA9IHRoaXMuaWNvbnMuZmluZCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24udG9TdHJpbmcoKSA9PT0gaWNvbik7XG4gICAgICBpZiAoZXhpc3RpbmdJY29uKSB7XG4gICAgICAgIHRoaXMuaWNvbnMuc3BsaWNlKHRoaXMuaWNvbnMuaW5kZXhPZihleGlzdGluZ0ljb24pLCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaWNvbnMucHVzaCh7IGljb24sIHVybCB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzUHJvdmlkZXJzU2VydmljZTogUmVjaXBlUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYShTTUFMTF9TQ1JFRU5fQlApLm1hdGNoZXMpO1xuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoU01BTExfU0NSRUVOX0JQKS5zdWJzY3JpYmUoQlBDaGFuZ2UgPT4gdGhpcy5pc1NtYWxsU2NyZWVuJC5uZXh0KCFCUENoYW5nZS5tYXRjaGVzKSk7XG4gICAgdGhpcy5pY29ucyA9IFtdO1xuICAgIHRoaXMuQ09SU0lzc3VlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IG1pYW06IHRoaXMubWlhbSB9KTtcblxuICB9XG5cbiAgc2V0Q09SU0lzc3VlU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLkNPUlNJc3N1ZXMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRDT1JTSXNzdWVzU3RhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuQ09SU0lzc3Vlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldE92ZXJyaWRlSWNvblVybChpY29uOiBJY29uKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5kaWNvbiA9IHRoaXMuaWNvbnMuZmluZChlbCA9PiBlbC5pY29uLnRvU3RyaW5nKCkgPT09IEljb25baWNvbl0pO1xuICAgIHJldHVybiBmaW5kaWNvbiA/IGZpbmRpY29uLnVybCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2dVc2VyKGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgaW5pdEJhc2tldDogYm9vbGVhbikge1xuICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgLy8gaWYgaW5pdEJhc2tldCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBiYXNrZXQgJiBsaXN0IHdpbGwgbm90IGJlIGluaXRpYWxpc2VkIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZFxuICAgIGlmIChpbml0QmFza2V0KSB7XG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTsgLy8gVGhlIGJhc2tldCBuZWVkcyB0aGUgR0wgc28gYm90aCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKTtcbiAgfVxufVxuIl19
212
+ }], function () { return [{ type: i1.PointOfSalesService }, { type: i2.GroceriesListsService }, { type: i3.BasketsService }, { type: i4.UserService }, { type: i5.UserFavoriteItemsService }, { type: i6.RecipeProviderService }, { type: i7.AnalyticsService }, { type: i8.RecipesService }, { type: i9.MediaMatcher }, { type: i10.SuppliersService }, { type: i9.BreakpointObserver }]; }, null); })();
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQUUzRixNQUFNLGVBQWUsR0FBRyxxQkFBcUIsQ0FB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QyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFVO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxPQUFPLENBQUMsZUFBd0IsRUFBRSxVQUFtQjtRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxnSEFBZ0g7UUFDaEgsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsMkRBQTJEO1NBQzlGO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs0RUFoTVUsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO2tEQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlIH0gZnJvbSAnLi9ncm9jZXJpZXMtbGlzdHMuc2VydmljZSc7XG5pbXBvcnQgeyBQb2ludE9mU2FsZXNTZXJ2aWNlIH0gZnJvbSAnLi9wb2ludC1vZi1zYWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2tldHNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckZhdm9yaXRlSXRlbXNTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLWZhdm9yaXRlLWl0ZW1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIsIEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCYXNrZXRIYW5kbGVyLCBCYXNrZXRXcmFwcGVyLCBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uL191dGlscy9zeW5jaHJvLWJhc2tldCc7XG5cbmNvbnN0IFNNQUxMX1NDUkVFTl9CUCA9ICcobWluLXdpZHRoOiAxMDIzcHgpJztcblxuaW50ZXJmYWNlIEljb25PdmVycmlkZSB7XG4gIGljb246IEljb247XG4gIHVybDogc3RyaW5nO1xufVxuXG4vLyBDb250ZXh0IHNoYXJlZCBiZXR3ZWVuIE1pYW0gU0RLICYgaG9zdCBhcHBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgdXNlckluZm86IFVzZXI7XG4gIGljb25zOiBJY29uT3ZlcnJpZGVbXTtcbiAgdmlkZW9SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBhcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSBmYWxzZTtcbiAgaG9va0NhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW47XG4gIGRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gZmFsc2U7XG4gIGRlZmF1bHRJbmdyZWRpZW50UGljdHVyZSA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWluZ3JlZGllbnQtcGljdHVyZS5zdmcnO1xuXG4gIHByaXZhdGUgQ09SU0lzc3VlczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIGlzU21hbGxTY3JlZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgYmFza2V0V3JhcHBlciA9IG5ldyBCYXNrZXRXcmFwcGVyKCk7XG4gIHByaXZhdGUgYmFza2V0SGFuZGxlcjogQmFza2V0SGFuZGxlcjtcblxuICBtaWFtID0ge1xuICAgIGFuYWx5dGljczoge1xuICAgICAgaW5pdDogKGdhS2V5OiBzdHJpbmcsIG9wdGltaXplS2V5OiBzdHJpbmcgPSBudWxsKSA9PiB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdChnYUtleSwgb3B0aW1pemVLZXkpLFxuICAgICAgc2V0QWJUZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmFiVGVzdGtleSA9IGtleTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgc3RhdHMkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJCxcbiAgICAgIGVudHJpZXMkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmFjdGl2ZUJhc2tldEVudHJpZXMoKSxcbiAgICAgIGNvbmZpcm06ICgpID0+IHRoaXMuYmFza2V0c1NlcnZpY2UuY29uZmlybUJhc2tldCgpLFxuICAgICAgcGFpZDogKHByaWNlID0gMCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHNlbmQgcGF5bWVudCBhbmFseXRpY3MgZXZlbnQnKTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudCgncGF5LWJhc2tldCcsIG51bGwsIHByaWNlKTtcbiAgICAgIH0sXG4gICAgICByZW1vdmVFbnRyaWVzOiAoZW50cmllczogeyBpZDogc3RyaW5nLCBxdHk6IG51bWJlciB9W10pID0+IHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlQmFza2V0RW50cmllcyhlbnRyaWVzKSxcbiAgICAgIGluaXRCYXNrZXRTeW5jaHJvOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlciA9IG5ldyBCYXNrZXRIYW5kbGVyKHRoaXMuYmFza2V0V3JhcHBlcik7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5pbml0QmFza2V0UHJvY2VzcygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgYmFza2V0TWFwcGVyOiB7XG4gICAgICBoYXNQYXltZW50OiAoY2FsbGJhY2s6ICgpID0+IGJvb2xlYW4pID0+IHRoaXMuYmFza2V0V3JhcHBlci5oYXNQYXltZW50ID0gY2FsbGJhY2ssXG4gICAgICBwYXltZW50VG90YWw6IChjYWxsYmFjazogKCkgPT4gbnVtYmVyKSA9PiB0aGlzLmJhc2tldFdyYXBwZXIucGF5bWVudFRvdGFsID0gY2FsbGJhY2ssXG4gICAgICBsaXN0ZW5Ub1JldGFpbGVyQmFza2V0OiAoY2FsbGJhY2s6IChiYXNrZXRDaGFuZ2VkQ2FsbEJhY2s6IChwcm9kdWN0czogQ29tcGFyYWJsZVByb2R1Y3RbXSkgPT4gdm9pZCkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldFdyYXBwZXIubGlzdGVuVG9SZXRhaWxlckJhc2tldCA9IGNhbGxiYWNrO1xuICAgICAgfSxcbiAgICAgIGdldEJhc2tldFByb2R1Y3RzOiAoY2FsbGJhY2s6ICgpID0+IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHRoaXMuYmFza2V0V3JhcHBlci5nZXRCYXNrZXRQcm9kdWN0cyA9IGNhbGxiYWNrLFxuICAgICAgcHVzaFByb2R1Y3RzVG9CYXNrZXQ6IChjYWxsYmFjazogKHByb2R1Y3RzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcy5iYXNrZXRXcmFwcGVyLnB1c2hQcm9kdWN0c1RvQmFza2V0ID0gY2FsbGJhY2ssXG4gICAgICBtYXBDb21wYXJhYmxlUHJvZHVjdFRvUHJvZHVjdDogKGNhbGxiYWNrOiAoY29tcGFyYWJsZVByb2R1Y3Q6IENvbXBhcmFibGVQcm9kdWN0KSA9PiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRXcmFwcGVyLm1hcENvbXBhcmFibGVQcm9kdWN0VG9Qcm9kdWN0ID0gY2FsbGJhY2s7XG4gICAgICB9LFxuICAgIH0sXG4gICAgZmVhdHVyZXM6IHtcbiAgICAgIGVuYWJsZVZpZGVvUmVjaXBlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnZpZGVvUmVjaXBlc0VuYWJsZWQgPSB0cnVlO1xuICAgICAgICAvLyBJbmplY3QgeW91dHViZSBzY3JpcHRcbiAgICAgICAgY29uc3QgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHRhZy5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFnKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVBcnRpY2xlc0luQ2F0YWxvZzogKCkgPT4ge1xuICAgICAgICB0aGlzLmFydGljbGVzSW5DYXRhbG9nRW5hYmxlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZW5hYmxlVXNlclByZWZlcmVuY2VzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UucHJlZmVyZW5jZXNBY3RpdmF0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBob29rOiB7XG4gICAgICBzZXRIb29rQ2FsbGJhY2s6IChjYWxsYmFjazogKGlzTG9nZ2VkLCBpc1Bvc1ZhbGlkKSA9PiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuaG9va0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0OiB7XG4gICAgICByZXNldDogKCkgPT4gdGhpcy5saXN0c1NlcnZpY2UucmVzZXRMaXN0KCkuc3Vic2NyaWJlKCksXG4gICAgICBhZGRSZWNpcGU6IChyZWNpcGVJZCwgZ3Vlc3RzKSA9PiB0aGlzLmxpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3QocmVjaXBlSWQsIGd1ZXN0cywgJ2NsaWVudCcpLFxuICAgICAgaGFzUmVjaXBlOiAocmVjaXBlSWQpID0+IHRoaXMubGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZUlkKVxuICAgIH0sXG4gICAgcG9zOiB7XG4gICAgICBsb2FkOiAocG9zSWQpID0+IHtcbiAgICAgICAgdGhpcy5wb3NTZXJ2aWNlLmxvYWRQb3MocG9zSWQpO1xuICAgICAgfSxcbiAgICAgIGxvYWRXaXRoRXh0SWQ6IChleHRJZCwgc3VwcGxpZXJJZCkgPT4ge1xuICAgICAgICB0aGlzLnBvc1NlcnZpY2UubG9hZFBvc1dpdGhFeHRJZChleHRJZCwgc3VwcGxpZXJJZCk7XG4gICAgICB9LFxuICAgICAgcG9zJDogdGhpcy5wb3NTZXJ2aWNlLnBvcyRcbiAgICB9LFxuICAgIHJlY2lwZXM6IHtcbiAgICAgIGRpc3BsYXk6IChpZCwgcHJldmlld0FsbG93ZWQgPSB0cnVlLCBwcmV2aWV3TW9kZSA9IGZhbHNlKSA9PiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXkoaWQsIHtwcmV2aWV3QWxsb3dlZCwgcHJldmlld01vZGV9KSxcbiAgICAgIGhpZGRlbjogdGhpcy5yZWNpcGVzU2VydmljZS5oaWRkZW4sXG4gICAgICBzZWFyY2g6IChwcm92aWRlciwgcXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuYWxsKFxuICAgICAgICAgIHsgcmVtb3RlZmlsdGVyOiB7IHJlY2lwZV9wcm92aWRlcl9pZDogcHJvdmlkZXIsIHNlYXJjaDogcXVlcnkgfSB9XG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHQpLFxuICAgICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZVsnZGF0YSddKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHNob3VsZERpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzOiAoc2hvdWxkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHMgPSBzaG91bGQ7XG4gICAgICB9LFxuICAgICAgc2V0RGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlOiAodXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmUgPSB1cmw7XG4gICAgICB9LFxuICAgICAgc2V0U3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9uczogKGRpc3BsYXkgPSB0cnVlLCBhZGRUb0Jhc2tldCA9IHRydWUpID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5zdWdnZXN0aW9uc1ByaW1hcnlCdXR0b25BY3Rpb25zID0geyBkaXNwbGF5LCBhZGRUb0Jhc2tldCB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxvYWRTdXBwbGllcihzdXBwbGllcklkLnRvU3RyaW5nKCkpO1xuICAgICAgfSxcbiAgICAgIG5vdGlmeUJhc2tldFVwZGF0ZWQ6IChiYXNrZXRUb2tlbjogc3RyaW5nLCBzdGF0dXM6IHN0cmluZywgcHJpY2U6IG51bWJlciB8IHN0cmluZyA9IG51bGwpID0+IHtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLm5vdGlmeUJhc2tldFVwZGF0ZWQoYmFza2V0VG9rZW4sIHN0YXR1cywgcHJpY2UpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgdXNlcjoge1xuICAgICAgc2V0VG9rZW46ICh0b2tlbiwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UsIGluaXRCYXNrZXQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdXNlclRva2VuJywgdG9rZW4pO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ1VzZXIoZm9yYmlkUHJvZmlsaW5nLCBpbml0QmFza2V0KTtcbiAgICAgIH0sXG4gICAgICBsb2FkV2l0aEV4dElkOiAoaWQsIGZvcmJpZFByb2ZpbGluZyA9IGZhbHNlLCBpbml0QmFza2V0ID0gZmFsc2UpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ19taWFtL3VzZXJJZCcsIGlkKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICByZXR1cm4gdGhpcy5sb2dVc2VyKGZvcmJpZFByb2ZpbGluZywgaW5pdEJhc2tldCk7XG4gICAgICB9LFxuICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHdpbGwgcmVmcmVzaCBsaXN0IGFmdGVyIHJlc2V0Jyk7XG4gICAgICAgIHRoaXMubGlzdHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0VXNlckluZm8oKTtcbiAgICAgIH0sXG4gICAgICBzZXRGYXZvcml0ZUl0ZW1zOiAoZmF2b3JpdGVQcm9kdWN0SWRzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJGYXZvcml0ZUl0ZW1zU2VydmljZS5zZXRfZnJvbV9leHRfaWRzKGZhdm9yaXRlUHJvZHVjdElkcylcbiAgICAgIH0sXG4gICAgICBkZXZpY2U6IHRoaXMubWVkaWFNYXRjaGVyLFxuICAgICAgaXNTbWFsbFNjcmVlbiQ6IHRoaXMuaXNTbWFsbFNjcmVlbiQuYXNPYnNlcnZhYmxlKClcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmljb25zKSB7IHRoaXMuaWNvbnMgPSBbXTsgfVxuICAgICAgY29uc3QgZXhpc3RpbmdJY29uID0gdGhpcy5pY29ucy5maW5kKChpOiBJY29uT3ZlcnJpZGUpID0+IGkuaWNvbi50b1N0cmluZygpID09PSBpY29uKTtcbiAgICAgIGlmIChleGlzdGluZ0ljb24pIHtcbiAgICAgICAgdGhpcy5pY29ucy5zcGxpY2UodGhpcy5pY29ucy5pbmRleE9mKGV4aXN0aW5nSWNvbiksIDEpO1xuICAgICAgfVxuICAgICAgdGhpcy5pY29ucy5wdXNoKHsgaWNvbiwgdXJsIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJGYXZvcml0ZUl0ZW1zU2VydmljZTogVXNlckZhdm9yaXRlSXRlbXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlc1Byb3ZpZGVyc1NlcnZpY2U6IFJlY2lwZVByb3ZpZGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwcml2YXRlIHN1cHBsaWVyc1NlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlclxuICApIHtcbiAgICB0aGlzLmlzU21hbGxTY3JlZW4kLm5leHQoIXRoaXMubWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoU01BTExfU0NSRUVOX0JQKS5tYXRjaGVzKTtcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKFNNQUxMX1NDUkVFTl9CUCkuc3Vic2NyaWJlKEJQQ2hhbmdlID0+IHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghQlBDaGFuZ2UubWF0Y2hlcykpO1xuICAgIHRoaXMuaWNvbnMgPSBbXTtcbiAgICB0aGlzLkNPUlNJc3N1ZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgICBPYmplY3QuYXNzaWduKHdpbmRvdywgeyBtaWFtOiB0aGlzLm1pYW0gfSk7XG5cbiAgfVxuXG4gIHNldENPUlNJc3N1ZVN0YXRlKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5DT1JTSXNzdWVzLm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0Q09SU0lzc3Vlc1N0YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLkNPUlNJc3N1ZXMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXRPdmVycmlkZUljb25VcmwoaWNvbjogSWNvbik6IHN0cmluZyB7XG4gICAgY29uc3QgZmluZGljb24gPSB0aGlzLmljb25zLmZpbmQoZWwgPT4gZWwuaWNvbi50b1N0cmluZygpID09PSBJY29uW2ljb25dKTtcbiAgICByZXR1cm4gZmluZGljb24gPyBmaW5kaWNvbi51cmwgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgbG9nVXNlcihmb3JiaWRQcm9maWxpbmc6IGJvb2xlYW4sIGluaXRCYXNrZXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnRvZ2dsZUlzTG9nZ2VkKHRydWUpO1xuICAgIC8vIGlmIGluaXRCYXNrZXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgYmFza2V0ICYgbGlzdCB3aWxsIG5vdCBiZSBpbml0aWFsaXNlZCB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGV5IGFyZSBuZWVkZWRcbiAgICBpZiAoaW5pdEJhc2tldCkge1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5pbml0QmFza2V0KCk7IC8vIFRoZSBiYXNrZXQgbmVlZHMgdGhlIEdMIHNvIGJvdGggd2lsbCBiZSBpbml0aWFsaXplZCBoZXJlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnNldFVzZXJJbmZvKGZvcmJpZFByb2ZpbGluZyk7XG4gIH1cbn1cbiJdfQ==
@@ -19,6 +19,18 @@ export class IngredientsService extends Service {
19
19
  this.fetchReviewedNames();
20
20
  this.fetchReviewedUnits();
21
21
  }
22
+ getReviewedNames() {
23
+ if (!this.reviewedNames) {
24
+ this.fetchReviewedNames();
25
+ }
26
+ return this.reviewedNames;
27
+ }
28
+ getReviewedUnits() {
29
+ if (!this.reviewedUnits) {
30
+ this.fetchReviewedUnits();
31
+ }
32
+ return this.reviewedUnits;
33
+ }
22
34
  fetchReviewedNames() {
23
35
  return this.http.get(`${MIAM_API_HOST}ingredients-definitions/reviewed_names`).subscribe((reviewedNames) => {
24
36
  this.reviewedNames = reviewedNames;
@@ -54,10 +66,11 @@ export class IngredientsService extends Service {
54
66
  return this.http.get(`${MIAM_API_HOST}quantity-units/reviewed_names`).pipe(switchMap(reviewedUnits => {
55
67
  this.reviewedUnits = [...reviewedUnits.map(unitObject => unitObject['name'])];
56
68
  // check if unit is in the list
57
- return of(this.reviewedUnits.some(el => el === unit));
69
+ // rem: the case is not always lowered for all units
70
+ return of(this.reviewedUnits.some(el => el.toLowerCase() === unit.toLowerCase()));
58
71
  }));
59
72
  }
60
- return of(this.reviewedUnits.some(el => el === unit));
73
+ return of(this.reviewedUnits.some(el => el.toLowerCase() === unit.toLowerCase()));
61
74
  }
62
75
  formatIngredients(listIngredient) {
63
76
  return forkJoin(listIngredient.map(el => this.get(`from_s?ingredient_str=${el}`)));
@@ -116,4 +129,4 @@ IngredientsService.ɵprov = i0.ɵɵdefineInjectable({ token: IngredientsService,
116
129
  providedIn: 'root'
117
130
  }]
118
131
  }], function () { return [{ type: i1.HttpClient }]; }, null); })();
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ncmVkaWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3NlcnZpY2VzL2luZ3JlZGllbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFtQixRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBYSxTQUFTLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFHbkQsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxVQUFVLENBQUM7QUFLdkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE9BQW1CO0lBS3pELFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU83QixhQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3RCLFNBQUksR0FBRyxhQUFhLENBQUM7UUFOMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBSU8sa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQVcsR0FBRyxhQUFhLHdDQUF3QyxDQUFDLENBQUMsU0FBUyxDQUFD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LFFBQVEsRUFDdEMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQzlDLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxXQUF5QjtRQUNuRCxPQUFPLFFBQVEsQ0FDYixXQUFXLENBQUMsR0FBRyxDQUNiLENBQUMsVUFBc0IsRUFBRSxFQUFFO1lBQ3pCLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBOEMsQ0FBQztRQUN2RSxDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLG9CQUFvQixDQUFDLGFBQXVCO1FBQ2pELE9BQU8sUUFBUSxDQUNiLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQzdELENBQUM7SUFDSixDQUFDOztvRkFqSVUsa0JBQWtCOzBEQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCLG1CQUZqQixNQUFNO2tEQUVQLGtCQUFrQjtjQUg5QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZXNvdXJjZSwgU2VydmljZSB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgSW5ncmVkaWVudCB9IGZyb20gJy4uL19tb2RlbHMvaW5ncmVkaWVudCc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZSc7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSW5ncmVkaWVudHNTZXJ2aWNlIGV4dGVuZHMgU2VydmljZTxJbmdyZWRpZW50PiB7XG5cbiAgcHJpdmF0ZSByZXZpZXdlZE5hbWVzOiBBcnJheTxzdHJpbmc+O1xuICBwcml2YXRlIHJldmlld2VkVW5pdHM6IEFycmF5PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCk7XG4gICAgLy8gaWYgeW91IGFyZSB1c2luZyB0aGlzIHNlcnZpY2UgeW91IHdpbGwgbmVlZCB0aGlzLCBwcmVmZXRjaCBpdFxuICAgIHRoaXMuZmV0Y2hSZXZpZXdlZE5hbWVzKCk7XG4gICAgdGhpcy5mZXRjaFJldmlld2VkVW5pdHMoKVxuICB9XG4gIHB1YmxpYyByZXNvdXJjZSA9IEluZ3JlZGllbnQ7XG4gIHB1YmxpYyB0eXBlID0gJ2luZ3JlZGllbnRzJztcblxuICBwcml2YXRlIGZldGNoUmV2aWV3ZWROYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7TUlBTV9BUElfSE9TVH1pbmdyZWRpZW50cy1kZWZpbml0aW9ucy9yZXZpZXdlZF9uYW1lc2ApLnN1YnNjcmliZSgocmV2aWV3ZWROYW1lcykgPT4ge1xuICAgICAgdGhpcy5yZXZpZXdlZE5hbWVzID0gcmV2aWV3ZWROYW1lcztcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJldmlld2VkVW5pdHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke01JQU1fQVBJX0hPU1R9cXVhbnRpdHktdW5pdHMvcmV2aWV3ZWRfbmFtZXNgKS5zdWJzY3JpYmUocmV2aWV3ZWRVbml0cyA9PiB7XG4gICAgICB0aGlzLnJldmlld2VkVW5pdHMgPSBbIC4uLiByZXZpZXdlZFVuaXRzLm1hcCh1bml0T2JqZWN0ID0+IHVuaXRPYmplY3RbJ25hbWUnXSldO1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgaW5ncmVkaWVudCBpcyBhbHJlYWR5IGtub3duIGluIGJhY2tlbmRcbiAgICogQHBhcmFtIGluZ3JlZGllbnREZWYgZXhlbXBsZSA6ICdzdGVhaydcbiAgICovXG4gIHB1YmxpYyBpc1Jldmlld2VkTmFtZShpbmdyZWRpZW50RGVmOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMucmV2aWV3ZWROYW1lcykge1xuICAgICAgLy8gZ2V0IGFsbCBrbm93ZWQgaW5ncmVkaWVudCBpbiBiYWNrZW5kXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7TUlBTV9BUElfSE9TVH1pbmdyZWRpZW50cy1kZWZpbml0aW9ucy9yZXZpZXdlZF9uYW1lc2ApLnBpcGUoc3dpdGNoTWFwKHJldmlld2VkTmFtZXMgPT4ge1xuICAgICAgICB0aGlzLnJldmlld2VkTmFtZXMgPSByZXZpZXdlZE5hbWVzO1xuICAgICAgICAvLyBjaGVjayBpZiBpbmdyZWRpZW50RGVmIGlzIGluIHRoZSBsaXN0XG4gICAgICAgIHJldHVybiBvZih0aGlzLnJldmlld2VkTmFtZXMuc29tZShlbCA9PiBlbCA9PT0gaW5ncmVkaWVudERlZikpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2YodGhpcy5yZXZpZXdlZE5hbWVzLnNvbWUoZWwgPT4gZWwgPT09IGluZ3JlZGllbnREZWYpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB1bml0IGlzIGFscmVhZHkga25vd24gaW4gYmFja2VuZFxuICAgKiBAcGFyYW0gdW5pdCBleGVtcGxlIDogJ2MuIMOgIGMuJ1xuICAgKi9cbiAgcHVibGljIGlzUmV2aWV3ZWRVbml0KHVuaXQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICghdGhpcy5yZXZpZXdlZFVuaXRzKSB7XG4gICAgICAvLyBnZXQgYWxsIGtub3dlZCB1bml0cyBpbiBiYWNrZW5kXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxzdHJpbmdbXT4oYCR7TUlBTV9BUElfSE9TVH1xdWFudGl0eS11bml0cy9yZXZpZXdlZF9uYW1lc2ApLnBpcGUoc3dpdGNoTWFwKHJldmlld2VkVW5pdHMgPT4ge1xuICAgICAgICB0aGlzLnJldmlld2VkVW5pdHMgPSBbIC4uLiByZXZpZXdlZFVuaXRzLm1hcCh1bml0T2JqZWN0ID0+IHVuaXRPYmplY3RbJ25hbWUnXSldO1xuICAgICAgICAvLyBjaGVjayBpZiB1bml0IGlzIGluIHRoZSBsaXN0XG4gICAgICAgIHJldHVybiBvZih0aGlzLnJldmlld2VkVW5pdHMuc29tZShlbCA9PiBlbCA9PT0gdW5pdCkpO1xuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2YodGhpcy5yZXZpZXdlZFVuaXRzLnNvbWUoZWwgPT4gZWwgPT09IHVuaXQpKTtcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRJbmdyZWRpZW50cyhsaXN0SW5ncmVkaWVudDogc3RyaW5nW10pOiBPYnNlcnZhYmxlPEluZ3JlZGllbnRbXT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihsaXN0SW5ncmVkaWVudC5tYXAoZWwgPT4gdGhpcy5nZXQoYGZyb21fcz9pbmdyZWRpZW50X3N0cj0ke2VsfWApKSk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgUmVjaXBlIEluZ3JlZGllbnRzIGxpc3Qgd2l0aCBvdXRwdXQgb2YgcmVjaXBlIGZvcm1zIGluZ3JlZGllbnQgbGlzdFxuICAgKiBpdCdzIGxpbmsgd2l0aCBSZWNpcGVGb3JtQ29tcG9uZW50XG4gICAqIEBwYXJhbSByZWNpcGUgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBpbmdyZWRpZW50cyBsaXN0IG9mIGluZ3JlZGllbnRzIFxuICAgKi9cbiAgcHVibGljIGNyZWF0ZU9yVXBkYXRlSW5ncmVkaWVudHMocmVjaXBlOiBSZWNpcGUsIGluZ3JlZGllbnRzOiBJbmdyZWRpZW50W10pOiBJbmdyZWRpZW50W10ge1xuXG4gICAgY29uc3Qgb2xkSW5ncmVkaWVudHMgPSBbLi4ucmVjaXBlLnJlbGF0aW9uc2hpcHNbYGluZ3JlZGllbnRzYF0uZGF0YV07XG4gICAgY29uc3QgaW5ncmVkaWVudHNUb1NhdmUgPSBbXTtcblxuICAgIGluZ3JlZGllbnRzLmZvckVhY2goaW5nID0+IHtcblxuICAgICAgaWYgKGluZy5pZCkge1xuICAgICAgICBjb25zdCBvbGRJbmRleCA9IG9sZEluZ3JlZGllbnRzLmZpbmRJbmRleChlbCA9PiBlbC5pZCA9PT0gaW5nLmlkKTtcbiAgICAgICAgY29uc3Qgb2xkSW5ncmVkaWVudEF0dHJpYnV0ZSA9IG9sZEluZ3JlZGllbnRzW29sZEluZGV4XS5hdHRyaWJ1dGVzO1xuICAgICAgICBjb25zdCBoYXNDaGFuZ2UgPSAgb2xkSW5ncmVkaWVudEF0dHJpYnV0ZS5uYW1lICE9PSBpbmcuYXR0cmlidXRlcy5uYW1lIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRJbmdyZWRpZW50QXR0cmlidXRlLnVuaXQgIT09IGluZy5hdHRyaWJ1dGVzLnVuaXQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZEluZ3JlZGllbnRBdHRyaWJ1dGUucXVhbnRpdHkgIT09IGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5O1xuICAgICAgICBpZiAoaGFzQ2hhbmdlKXtcbiAgICAgICAgICBvbGRJbmdyZWRpZW50c1tvbGRJbmRleF0uYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgIC4uLm9sZEluZ3JlZGllbnRzW29sZEluZGV4XS5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgbmFtZTogaW5nLmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgICAgICAgIHVuaXQ6IGluZy5hdHRyaWJ1dGVzLnVuaXQsXG4gICAgICAgICAgICBxdWFudGl0eTogaW5nLmF0dHJpYnV0ZXMucXVhbnRpdHksXG4gICAgICAgICAgICAncGljdHVyZS11cmwnOiBpbmcuYXR0cmlidXRlc1sncGljdHVyZS11cmwnXVxuICAgICAgICAgIH07XG4gICAgICAgICAgaW5ncmVkaWVudHNUb1NhdmUucHVzaChvbGRJbmdyZWRpZW50c1tvbGRJbmRleF0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuZXdJbmcgPSB0aGlzLm5ldygpO1xuICAgICAgICBkZWxldGUgbmV3SW5nLmlkO1xuICAgICAgICBuZXdJbmcuYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAuLi5uZXdJbmcuYXR0cmlidXRlcyxcbiAgICAgICAgICAgbmFtZTogaW5nLmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgICAgICAgdW5pdDogaW5nLmF0dHJpYnV0ZXMudW5pdCxcbiAgICAgICAgICAgcXVhbnRpdHk6ICcnICsgaW5nLmF0dHJpYnV0ZXMucXVhbnRpdHksXG4gICAgICAgICAgICdwaWN0dXJlLXVybCc6IGluZy5hdHRyaWJ1dGVzWydwaWN0dXJlLXVybCddXG4gICAgICAgIH07XG4gICAgICAgIG5ld0luZy5hZGRSZWxhdGlvbnNoaXAocmVjaXBlLCAncmVjaXBlJyk7XG4gICAgICAgIGluZ3JlZGllbnRzVG9TYXZlLnB1c2gobmV3SW5nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5ncmVkaWVudHNUb1NhdmU7XG4gIH1cblxuICAvKipcbiAgICogIENyZWF0ZSBvciB1cGRhdGUgYSBsaXN0IE9mIEluZ3JlZGllbnRcbiAgICogIGl0J2xsIGNyZWF0ZSBpZiBJbmdyZWRpZW50IGlkIGlzIG51bGwgb3RoZXJ3aXNlIHVwZGF0ZSBpdFxuICAgKiAgaXQncyBwZXJmb3JtIGluIHBhcmFsbGVsICwgT2JzZXJ2YWJsZSdsbCBjb21wbGV0IHdoZW4gYWxsIGluZ3JlZGVudHMgaGF2ZSBiZWVuIHVwc2VydGVkXG4gICAqIEBwYXJhbSBpbmdyZWRpZW50cyBhcnJheSBvZiBJbmdyZWRpZW50XG4gICAqL1xuICBwdWJsaWMgdXBzZXJ0SW5ncmVkaWVudExpc3QoaW5ncmVkaWVudHM6IEluZ3JlZGllbnRbXSk6IE9ic2VydmFibGU8RG9jdW1lbnRSZXNvdXJjZTxJbmdyZWRpZW50PltdPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgaW5ncmVkaWVudHMubWFwKFxuICAgICAgICAoaW5ncmVkaWVudDogSW5ncmVkaWVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiBpbmdyZWRpZW50LnNhdmUoKSBhcyBPYnNlcnZhYmxlPERvY3VtZW50UmVzb3VyY2U8SW5ncmVkaWVudD4+O1xuICAgICAgICB9XG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVJbmdyZWRpZW50TGlzdChpbmdyZWRpZW50SWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8dm9pZFtdPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgaW5ncmVkaWVudElkcy5tYXAoaW5ncmVkaWVudElkID0+IHRoaXMuZGVsZXRlKGluZ3JlZGllbnRJZCkpXG4gICAgKTtcbiAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ncmVkaWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3NlcnZpY2VzL2luZ3JlZGllbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFvQixPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEQsT0FBTyxFQUFtQixRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBYSxTQUFTLEVBQU8sTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFHbkQsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxVQUFVLENBQUM7QUFLdkQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLE9BQW1CO0lBS3pELFlBQW9CLElBQWdCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU83QixhQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3RCLFNBQUksR0FBRyxhQUFhLENBQUM7UUFOMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBSU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FBRTtRQUN0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QkFGakIsTUFBTTtrREFFUCxrQkFBa0I7Y0FIOUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50UmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEluZ3JlZGllbnQgfSBmcm9tICcuLi9fbW9kZWxzL2luZ3JlZGllbnQnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vX21vZGVscy9yZWNpcGUnO1xuXG5jb25zdCBNSUFNX0FQSV9IT1NUID0gYCR7ZW52aXJvbm1lbnQubWlhbUFQSX0vYXBpL3YxL2A7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEluZ3JlZGllbnRzU2VydmljZSBleHRlbmRzIFNlcnZpY2U8SW5ncmVkaWVudD4ge1xuXG4gIHByaXZhdGUgcmV2aWV3ZWROYW1lczogQXJyYXk8c3RyaW5nPjtcbiAgcHJpdmF0ZSByZXZpZXdlZFVuaXRzOiBBcnJheTxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5yZWdpc3RlcigpO1xuICAgIC8vIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBzZXJ2aWNlIHlvdSB3aWxsIG5lZWQgdGhpcywgcHJlZmV0Y2ggaXRcbiAgICB0aGlzLmZldGNoUmV2aWV3ZWROYW1lcygpO1xuICAgIHRoaXMuZmV0Y2hSZXZpZXdlZFVuaXRzKCk7XG4gIH1cbiAgcHVibGljIHJlc291cmNlID0gSW5ncmVkaWVudDtcbiAgcHVibGljIHR5cGUgPSAnaW5ncmVkaWVudHMnO1xuXG4gIHB1YmxpYyBnZXRSZXZpZXdlZE5hbWVzKCkge1xuICAgIGlmICghdGhpcy5yZXZpZXdlZE5hbWVzKSB7dGhpcy5mZXRjaFJldmlld2VkTmFtZXMoKTsgfVxuICAgIHJldHVybiB0aGlzLnJldmlld2VkTmFtZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmV2aWV3ZWRVbml0cygpIHtcbiAgICBpZiAoIXRoaXMucmV2aWV3ZWRVbml0cykge3RoaXMuZmV0Y2hSZXZpZXdlZFVuaXRzKCk7IH1cbiAgICByZXR1cm4gdGhpcy5yZXZpZXdlZFVuaXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJldmlld2VkTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke01JQU1fQVBJX0hPU1R9aW5ncmVkaWVudHMtZGVmaW5pdGlvbnMvcmV2aWV3ZWRfbmFtZXNgKS5zdWJzY3JpYmUoKHJldmlld2VkTmFtZXMpID0+IHtcbiAgICAgIHRoaXMucmV2aWV3ZWROYW1lcyA9IHJldmlld2VkTmFtZXM7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hSZXZpZXdlZFVuaXRzKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PHN0cmluZ1tdPihgJHtNSUFNX0FQSV9IT1NUfXF1YW50aXR5LXVuaXRzL3Jldmlld2VkX25hbWVzYCkuc3Vic2NyaWJlKHJldmlld2VkVW5pdHMgPT4ge1xuICAgICAgdGhpcy5yZXZpZXdlZFVuaXRzID0gWyAuLi4gcmV2aWV3ZWRVbml0cy5tYXAodW5pdE9iamVjdCA9PiB1bml0T2JqZWN0WyduYW1lJ10pXTtcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGluZ3JlZGllbnQgaXMgYWxyZWFkeSBrbm93biBpbiBiYWNrZW5kXG4gICAqIEBwYXJhbSBpbmdyZWRpZW50RGVmIGV4ZW1wbGUgOiAnc3RlYWsnXG4gICAqL1xuICBwdWJsaWMgaXNSZXZpZXdlZE5hbWUoaW5ncmVkaWVudERlZjogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLnJldmlld2VkTmFtZXMpIHtcbiAgICAgIC8vIGdldCBhbGwga25vd2VkIGluZ3JlZGllbnQgaW4gYmFja2VuZFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke01JQU1fQVBJX0hPU1R9aW5ncmVkaWVudHMtZGVmaW5pdGlvbnMvcmV2aWV3ZWRfbmFtZXNgKS5waXBlKHN3aXRjaE1hcChyZXZpZXdlZE5hbWVzID0+IHtcbiAgICAgICAgdGhpcy5yZXZpZXdlZE5hbWVzID0gcmV2aWV3ZWROYW1lcztcbiAgICAgICAgLy8gY2hlY2sgaWYgaW5ncmVkaWVudERlZiBpcyBpbiB0aGUgbGlzdFxuICAgICAgICByZXR1cm4gb2YodGhpcy5yZXZpZXdlZE5hbWVzLnNvbWUoZWwgPT4gZWwgPT09IGluZ3JlZGllbnREZWYpKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRoaXMucmV2aWV3ZWROYW1lcy5zb21lKGVsID0+IGVsID09PSBpbmdyZWRpZW50RGVmKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdW5pdCBpcyBhbHJlYWR5IGtub3duIGluIGJhY2tlbmRcbiAgICogQHBhcmFtIHVuaXQgZXhlbXBsZSA6ICdjLiDDoCBjLidcbiAgICovXG4gIHB1YmxpYyBpc1Jldmlld2VkVW5pdCh1bml0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMucmV2aWV3ZWRVbml0cykge1xuICAgICAgLy8gZ2V0IGFsbCBrbm93ZWQgdW5pdHMgaW4gYmFja2VuZFxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8c3RyaW5nW10+KGAke01JQU1fQVBJX0hPU1R9cXVhbnRpdHktdW5pdHMvcmV2aWV3ZWRfbmFtZXNgKS5waXBlKHN3aXRjaE1hcChyZXZpZXdlZFVuaXRzID0+IHtcbiAgICAgICAgdGhpcy5yZXZpZXdlZFVuaXRzID0gWyAuLi4gcmV2aWV3ZWRVbml0cy5tYXAodW5pdE9iamVjdCA9PiB1bml0T2JqZWN0WyduYW1lJ10pXTtcbiAgICAgICAgLy8gY2hlY2sgaWYgdW5pdCBpcyBpbiB0aGUgbGlzdFxuICAgICAgICAvLyByZW06IHRoZSBjYXNlIGlzIG5vdCBhbHdheXMgbG93ZXJlZCBmb3IgYWxsIHVuaXRzXG4gICAgICAgIHJldHVybiBvZih0aGlzLnJldmlld2VkVW5pdHMuc29tZShlbCA9PiBlbC50b0xvd2VyQ2FzZSgpID09PSB1bml0LnRvTG93ZXJDYXNlKCkpKTtcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRoaXMucmV2aWV3ZWRVbml0cy5zb21lKGVsID0+IGVsLnRvTG93ZXJDYXNlKCkgPT09IHVuaXQudG9Mb3dlckNhc2UoKSkpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdEluZ3JlZGllbnRzKGxpc3RJbmdyZWRpZW50OiBzdHJpbmdbXSk6IE9ic2VydmFibGU8SW5ncmVkaWVudFtdPiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKGxpc3RJbmdyZWRpZW50Lm1hcChlbCA9PiB0aGlzLmdldChgZnJvbV9zP2luZ3JlZGllbnRfc3RyPSR7ZWx9YCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBSZWNpcGUgSW5ncmVkaWVudHMgbGlzdCB3aXRoIG91dHB1dCBvZiByZWNpcGUgZm9ybXMgaW5ncmVkaWVudCBsaXN0XG4gICAqIGl0J3MgbGluayB3aXRoIFJlY2lwZUZvcm1Db21wb25lbnRcbiAgICogQHBhcmFtIHJlY2lwZSB0byB1cGRhdGVcbiAgICogQHBhcmFtIGluZ3JlZGllbnRzIGxpc3Qgb2YgaW5ncmVkaWVudHNcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVPclVwZGF0ZUluZ3JlZGllbnRzKHJlY2lwZTogUmVjaXBlLCBpbmdyZWRpZW50czogSW5ncmVkaWVudFtdKTogSW5ncmVkaWVudFtdIHtcblxuICAgIGNvbnN0IG9sZEluZ3JlZGllbnRzID0gWy4uLnJlY2lwZS5yZWxhdGlvbnNoaXBzW2BpbmdyZWRpZW50c2BdLmRhdGFdO1xuICAgIGNvbnN0IGluZ3JlZGllbnRzVG9TYXZlID0gW107XG5cbiAgICBpbmdyZWRpZW50cy5mb3JFYWNoKGluZyA9PiB7XG5cbiAgICAgIGlmIChpbmcuaWQpIHtcbiAgICAgICAgY29uc3Qgb2xkSW5kZXggPSBvbGRJbmdyZWRpZW50cy5maW5kSW5kZXgoZWwgPT4gZWwuaWQgPT09IGluZy5pZCk7XG4gICAgICAgIGNvbnN0IG9sZEluZ3JlZGllbnRBdHRyaWJ1dGUgPSBvbGRJbmdyZWRpZW50c1tvbGRJbmRleF0uYXR0cmlidXRlcztcbiAgICAgICAgY29uc3QgaGFzQ2hhbmdlID0gIG9sZEluZ3JlZGllbnRBdHRyaWJ1dGUubmFtZSAhPT0gaW5nLmF0dHJpYnV0ZXMubmFtZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkSW5ncmVkaWVudEF0dHJpYnV0ZS51bml0ICE9PSBpbmcuYXR0cmlidXRlcy51bml0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRJbmdyZWRpZW50QXR0cmlidXRlLnF1YW50aXR5ICE9PSBpbmcuYXR0cmlidXRlcy5xdWFudGl0eTtcbiAgICAgICAgaWYgKGhhc0NoYW5nZSl7XG4gICAgICAgICAgb2xkSW5ncmVkaWVudHNbb2xkSW5kZXhdLmF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5vbGRJbmdyZWRpZW50c1tvbGRJbmRleF0uYXR0cmlidXRlcyxcbiAgICAgICAgICAgIG5hbWU6IGluZy5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgICB1bml0OiBpbmcuYXR0cmlidXRlcy51bml0LFxuICAgICAgICAgICAgcXVhbnRpdHk6IGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5LFxuICAgICAgICAgICAgJ3BpY3R1cmUtdXJsJzogaW5nLmF0dHJpYnV0ZXNbJ3BpY3R1cmUtdXJsJ11cbiAgICAgICAgICB9O1xuICAgICAgICAgIGluZ3JlZGllbnRzVG9TYXZlLnB1c2gob2xkSW5ncmVkaWVudHNbb2xkSW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmV3SW5nID0gdGhpcy5uZXcoKTtcbiAgICAgICAgZGVsZXRlIG5ld0luZy5pZDtcbiAgICAgICAgbmV3SW5nLmF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgLi4ubmV3SW5nLmF0dHJpYnV0ZXMsXG4gICAgICAgICAgIG5hbWU6IGluZy5hdHRyaWJ1dGVzLm5hbWUsXG4gICAgICAgICAgIHVuaXQ6IGluZy5hdHRyaWJ1dGVzLnVuaXQsXG4gICAgICAgICAgIHF1YW50aXR5OiAnJyArIGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5LFxuICAgICAgICAgICAncGljdHVyZS11cmwnOiBpbmcuYXR0cmlidXRlc1sncGljdHVyZS11cmwnXVxuICAgICAgICB9O1xuICAgICAgICBuZXdJbmcuYWRkUmVsYXRpb25zaGlwKHJlY2lwZSwgJ3JlY2lwZScpO1xuICAgICAgICBpbmdyZWRpZW50c1RvU2F2ZS5wdXNoKG5ld0luZyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGluZ3JlZGllbnRzVG9TYXZlO1xuICB9XG5cbiAgLyoqXG4gICAqICBDcmVhdGUgb3IgdXBkYXRlIGEgbGlzdCBPZiBJbmdyZWRpZW50XG4gICAqICBpdCdsbCBjcmVhdGUgaWYgSW5ncmVkaWVudCBpZCBpcyBudWxsIG90aGVyd2lzZSB1cGRhdGUgaXRcbiAgICogIGl0J3MgcGVyZm9ybSBpbiBwYXJhbGxlbCAsIE9ic2VydmFibGUnbGwgY29tcGxldCB3aGVuIGFsbCBpbmdyZWRlbnRzIGhhdmUgYmVlbiB1cHNlcnRlZFxuICAgKiBAcGFyYW0gaW5ncmVkaWVudHMgYXJyYXkgb2YgSW5ncmVkaWVudFxuICAgKi9cbiAgcHVibGljIHVwc2VydEluZ3JlZGllbnRMaXN0KGluZ3JlZGllbnRzOiBJbmdyZWRpZW50W10pOiBPYnNlcnZhYmxlPERvY3VtZW50UmVzb3VyY2U8SW5ncmVkaWVudD5bXT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIGluZ3JlZGllbnRzLm1hcChcbiAgICAgICAgKGluZ3JlZGllbnQ6IEluZ3JlZGllbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gaW5ncmVkaWVudC5zYXZlKCkgYXMgT2JzZXJ2YWJsZTxEb2N1bWVudFJlc291cmNlPEluZ3JlZGllbnQ+PjtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlSW5ncmVkaWVudExpc3QoaW5ncmVkaWVudElkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIGluZ3JlZGllbnRJZHMubWFwKGluZ3JlZGllbnRJZCA9PiB0aGlzLmRlbGV0ZShpbmdyZWRpZW50SWQpKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,30 @@
1
+ import { HttpClient } from "@angular/common/http";
2
+ import { Injectable } from "@angular/core";
3
+ import { take, switchMap, skipWhile } from "rxjs/operators";
4
+ import { environment } from '../environments/environment';
5
+ import { SuppliersService } from '.';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from ".";
9
+ const MIAM_API_HOST = `${environment.miamAPI}/api/v1/`;
10
+ export class UserFavoriteItemsService {
11
+ constructor(http, suppliersService) {
12
+ this.http = http;
13
+ this.suppliersService = suppliersService;
14
+ }
15
+ set_from_ext_ids(favoriteProductIds) {
16
+ return this.suppliersService.supplier$.asObservable().pipe(skipWhile(supp => !supp), take(1), switchMap(supplier => {
17
+ const body = { item_ext_ids: favoriteProductIds, supplier_id: supplier.id };
18
+ return this.http.post(`${MIAM_API_HOST}user-favorite-items/set_from_ext_ids`, body);
19
+ }));
20
+ }
21
+ }
22
+ UserFavoriteItemsService.ɵfac = function UserFavoriteItemsService_Factory(t) { return new (t || UserFavoriteItemsService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.SuppliersService)); };
23
+ UserFavoriteItemsService.ɵprov = i0.ɵɵdefineInjectable({ token: UserFavoriteItemsService, factory: UserFavoriteItemsService.ɵfac, providedIn: 'root' });
24
+ /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(UserFavoriteItemsService, [{
25
+ type: Injectable,
26
+ args: [{
27
+ providedIn: 'root'
28
+ }]
29
+ }], function () { return [{ type: i1.HttpClient }, { type: i2.SuppliersService }]; }, null); })();
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1mYXZvcml0ZS1pdGVtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvdXNlci1mYXZvcml0ZS1pdGVtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLENBQUM7Ozs7QUFFckMsTUFBTSxhQUFhLEdBQUcsR0FBRyxXQUFXLENBQUMsT0FBTyxVQUFVLENBQUM7QUFLdkQsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUNVLElBQWdCLEVBQ2hCLGdCQUFrQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFDekMsQ0FBQztJQUVKLGdCQUFnQixDQUFDLGtCQUFrQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUN4RCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUE7WUFDM0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDckYsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7O2dHQWZVLHdCQUF3QjtnRUFBeEIsd0JBQXdCLFdBQXhCLHdCQUF3QixtQkFGdkIsTUFBTTtrREFFUCx3QkFBd0I7Y0FIcEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2UsIHN3aXRjaE1hcCwgc2tpcFdoaWxlIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdXBwbGllcnNTZXJ2aWNlIH0gZnJvbSAnLic7XG5cbmNvbnN0IE1JQU1fQVBJX0hPU1QgPSBgJHtlbnZpcm9ubWVudC5taWFtQVBJfS9hcGkvdjEvYDtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlckZhdm9yaXRlSXRlbXNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZVxuICApIHt9XG5cbiAgc2V0X2Zyb21fZXh0X2lkcyhmYXZvcml0ZVByb2R1Y3RJZHMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnN1cHBsaWVyc1NlcnZpY2Uuc3VwcGxpZXIkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBza2lwV2hpbGUoc3VwcCA9PiAhc3VwcCksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKHN1cHBsaWVyID0+IHtcbiAgICAgICAgY29uc3QgYm9keSA9IHsgaXRlbV9leHRfaWRzOiBmYXZvcml0ZVByb2R1Y3RJZHMsIHN1cHBsaWVyX2lkOiBzdXBwbGllci5pZCB9XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtNSUFNX0FQSV9IT1NUfXVzZXItZmF2b3JpdGUtaXRlbXMvc2V0X2Zyb21fZXh0X2lkc2AsIGJvZHkpXG4gICAgICB9KVxuICAgIClcbiAgfVxufSJdfQ==
@@ -340,7 +340,7 @@ function RecipeDetailsComponent_div_0_div_54_Template(rf, ctx) { if (rf & 1) {
340
340
  i0.ɵɵadvance(4);
341
341
  i0.ɵɵproperty("ngForOf", ctx_r22.recipe == null ? null : ctx_r22.recipe.modifiedIngredients);
342
342
  i0.ɵɵadvance(5);
343
- i0.ɵɵproperty("ngForOf", ctx_r22.steps);
343
+ i0.ɵɵproperty("ngForOf", ctx_r22.recipe.steps);
344
344
  } }
345
345
  function RecipeDetailsComponent_div_0_ng_template_55_ng_container_7_div_9_Template(rf, ctx) { if (rf & 1) {
346
346
  i0.ɵɵelementStart(0, "div", 77);
@@ -431,7 +431,7 @@ function RecipeDetailsComponent_div_0_ng_template_55_ng_template_8_Template(rf,
431
431
  } if (rf & 2) {
432
432
  const ctx_r55 = i0.ɵɵnextContext(3);
433
433
  i0.ɵɵadvance(1);
434
- i0.ɵɵproperty("ngForOf", ctx_r55.steps);
434
+ i0.ɵɵproperty("ngForOf", ctx_r55.recipe.steps);
435
435
  } }
436
436
  const _c4 = function (a0) { return { "active": a0 }; };
437
437
  function RecipeDetailsComponent_div_0_ng_template_55_Template(rf, ctx) { if (rf & 1) {
@@ -677,7 +677,6 @@ export class RecipeDetailsComponent {
677
677
  this.isMobile = false;
678
678
  this.tab = 0;
679
679
  this.showDetail = true;
680
- this.steps = [];
681
680
  this.activeStep = 0;
682
681
  this.icon = Icon;
683
682
  this.ingredientsChecked = {};
@@ -699,7 +698,6 @@ export class RecipeDetailsComponent {
699
698
  this.cdr.detectChanges();
700
699
  this.showVideo = this.contextService.videoRecipesEnabled && ((_a = this.recipe) === null || _a === void 0 ? void 0 : _a.videoId);
701
700
  if (this.recipe) {
702
- this.steps = this.recipe.steps;
703
701
  this.activeStep = 0;
704
702
  this.cdr.detectChanges();
705
703
  }
@@ -860,4 +858,4 @@ RecipeDetailsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeDetailsCompo
860
858
  type: ViewChild,
861
859
  args: ['mainContainer']
862
860
  }] }); })();
863
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUdaLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ILE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDZjNDLDBCQUNBOzs7SUFEd0IsNEdBQXVDOzs7SUFDL0QsMEJBQTZFOzs7SUFDN0UscUNBS2tCOzs7SUFIaEIsK0NBQTBCLDZCQUFBLCtCQUFBOzs7SUFNMUIsK0JBQzRDO0lBQUEsMkNBQVk7SUFBQSxpQkFBTTs7O0lBRmhFLDZCQUNFO0lBQUEsNkZBQzRDOztJQUM5QywwQkFBZTs7O0lBRlIsZUFBa0U7SUFBbEUseUlBQWtFOzs7SUFJdkUsMENBRXNCOzs7SUFEc0Msc0NBQWlCLGFBQUEsY0FBQTs7O0lBTy9FLDBCQUNGOzs7SUFEcUYsa0ZBQWlDOzs7SUFRbEgsK0JBQ0U7SUFBQSw0QkFBTTtJQUFBLGdDQUFXO0lBQUEsaUJBQU87SUFDeEIsK0JBQ0U7SUFBQSxtQ0FBMEg7SUFDMUgsNEJBQU07SUFBQSxZQUE2QjtJQUFBLGlCQUFPO0lBQzVDLGlCQUFNO0lBQ1IsaUJBQU07OztJQUhZLGVBQVk7SUFBWiwwQkFBWSxjQUFBLHNDQUFBO0lBQ3BCLGVBQTZCO0lBQTdCLG9GQUE2Qjs7O0lBR3ZDLCtCQUNFO0lBQUEsNEJBQU07SUFBQSx1QkFBTztJQUFBLGlCQUFPO0lBQ3BCLCtCQUNFO0lBQUEsbUNBQW1IO0lBQ25ILDRCQUFNO0lBQUEsWUFBeUI7SUFBQSxpQkFBTztJQUN4QyxpQkFBTTtJQUNSLGlCQUFNOzs7SUFIWSxlQUFZO0lBQVosMEJBQVksY0FBQSw4QkFBQTtJQUNwQixlQUF5QjtJQUF6QixnRkFBeUI7OztJQUduQywrQkFDRTtJQUFBLDRCQUFNO0lBQUEscUJBQUs7SUFBQSxpQkFBTztJQUNsQiwrQkFDRTtJQUFBLG1DQUFvSDtJQUNwSCw0QkFBTTtJQUFBLFlBQXlCO0lBQUEsaUJBQU87SUFDeEMsaUJBQU07SUFDUixpQkFBTTs7O0lBSFksZUFBWTtJQUFaLDBCQUFZLGNBQUEsK0JBQUE7SUFDcEIsZUFBeUI7SUFBekIsZ0ZBQXlCOzs7SUFZakMsNkJBQ0U7SUFBQSxtQ0FBd0Y7SUFDMUYsMEJBQWU7OztJQURDLGVBQVk7SUFBWiwwQkFBWSxjQUFBLHdDQUFBOzs7SUFFNUIsNkJBQ0U7SUFBQSxtQ0FBMkY7SUFDN0YsMEJBQWU7OztJQURDLGVBQVk7SUFBWiwwQkFBWSxjQUFBLDJDQUFBOzs7SUFFNUIsNkJBQ0U7SUFBQSxtQ0FBMEY7SUFDNUYsMEJBQWU7OztJQURDLGVBQVk7SUFBWiwwQkFBWSxjQUFBLDBDQUFBOzs7SUFFNUIsd0JBQThDOzs7SUFjbEQsK0JBQ0U7SUFBQSw2Q0FBcUc7SUFDdkcsaUJBQU07OztJQURvQixlQUFpQjtJQUFqQix1Q0FBaUIseUVBQUE7OztJQU96QyxtQ0FFZTs7OztJQUZ3QywwQkFBWSxjQUFBLGdMQUFBOzs7SUFJakUsaUNBQWlDOzs7OztJQVRyQyxrQ0FFRTtJQUY4RiwwTUFBd0I7O0lBRXRILDRCQUNFO0lBQUEsWUFDRjs7SUFBQSxpQkFBTztJQUNQLDBHQUVBO0lBQ0EseUlBQ0U7SUFFSixpQkFBUzs7OztJQVZQLHFNQUFtSDtJQUVqSCxlQUNGO0lBREUsNk1BQ0Y7SUFDYyxlQUF3QztJQUF4QyxnREFBd0Msa0JBQUE7OztJQWMxRCwwQkFDQTs7O0lBRDhCLCtEQUEyQjs7O0lBRDNELCtCQUNFO0lBQUEsMkZBQ0E7SUFBQSxnQ0FDRTtJQUFBLFlBQ0Y7SUFBQSxpQkFBTztJQUNULGlCQUFNOzs7O0lBSkMsZUFBd0I7SUFBeEIsK0NBQXdCO0lBRTNCLGVBQ0Y7SUFERSw2Q0FDRjs7O0lBTEosK0JBQ0U7SUFBQSxxRkFDRTtJQUtKLGlCQUFNOzs7SUFOQyxlQUFrRDtJQUFsRCxnRUFBa0Q7Ozs7SUFRdkQsOENBQ3FFO0lBQWpELHlPQUEyQjtJQUFDLGlCQUFxQjs7O0lBQW5FLHVDQUFpQjs7O0lBbUJiLDJCQUNFO0lBQUEsMEJBQ0Y7SUFBQSxpQkFBTTs7OztJQUR3RCxlQUFxQztJQUFyQyxpRkFBcUM7Ozs7SUFIckcsK0JBRUU7SUFBQSw0RkFDRTtJQUVGLDJCQUFNO0lBQUEsWUFBNEM7O0lBQUEsaUJBQU07SUFDeEQsK0JBQXlEO0lBQUEsWUFDckM7O0lBQUEsaUJBQU07SUFDNUIsaUJBQU07Ozs7O0lBUjZDLHVGQUE4QztJQUUxRixlQUEyQjtJQUEzQixrREFBMkI7SUFHMUIsZUFBNEM7SUFBNUMseUVBQTRDO0lBQ08sZUFDckM7SUFEcUMsNkZBQ3JDOzs7SUFjcEIsbUNBQzJGOzs7SUFEUCwyQkFBYSxhQUFBLDBDQUFBOzs7O0lBTG5HLCtCQUdFO0lBRkEsNk9BQTZCO0lBRTdCLCtCQUE2QztJQUFBLDhCQUFRO0lBQUEsWUFBVztJQUFBLGlCQUFTO0lBQUEsaUJBQU07SUFDL0UsK0JBQThDO0lBQUEsWUFBaUM7SUFBQSxpQkFBTTtJQUNyRiw4R0FDNEU7SUFDOUUsaUJBQU07Ozs7O0lBTjBCLHNEQUFpQyxnRUFBQTtJQUVWLGVBQVc7SUFBWCwrQkFBVztJQUNsQixlQUFpQztJQUFqQyxvSEFBaUM7SUFDbkIsZUFBdUI7SUFBdkIsa0RBQXVCOzs7O0lBcEMzRiwrQkFDRTtJQUFBLCtCQUNFO0lBQUEsK0JBQ0U7SUFBQSxrQ0FDRjtJQUFBLGlCQUFNO0lBQ04sK0JBQ0U7SUFBQSwrQkFDRTtJQUFBLGlEQUN3QjtJQURtRCxrUEFBc0M7SUFDakgsaUJBQXdCO0lBQ3hCLGdDQUErRDtJQUFBLFlBQ3BEO0lBQUEsaUJBQU87SUFDcEIsaUJBQU07SUFDTixnQ0FBeUQ7SUFBQSw4QkFBUTtJQUFBLGlCQUFPO0lBQzFFLGlCQUFNO0lBQ04sZ0NBQ0U7SUFBQSx3RkFFRTtJQU9KLGlCQUFNO0lBQ1IsaUJBQU07SUFDTixnQ0FDRTtJQUFBLGdDQUNFO0lBQUEsbUNBQ0Y7SUFBQSxpQkFBTTtJQUNOLGdDQUNFO0lBQUEsdUZBR0U7SUFLSixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07OztJQWxDeUIsZUFBbUQ7SUFBbkQsa0hBQW1EO0lBRVgsZUFDcEQ7SUFEb0QsMkdBQ3BEO0lBTVgsZUFBc0U7SUFBdEUsNEZBQXNFO0lBZW5CLGVBQTBDO0lBQTFDLHVDQUEwQzs7O0lBNEIzRiwrQkFFRTtJQUFBLDJCQUFNO0lBQUEsWUFBNEM7O0lBQUEsaUJBQU07SUFDeEQsK0JBQXlEO0lBQUEsWUFDckM7O0lBQUEsaUJBQU07SUFDNUIsaUJBQU07Ozs7O0lBTDZDLHVGQUE4QztJQUV6RixlQUE0QztJQUE1Qyx5RUFBNEM7SUFDTyxlQUNyQztJQURxQyw2RkFDckM7Ozs7SUFmeEIsNkJBQ0E7SUFBQSwrQkFDRTtJQUFBLCtCQUNFO0lBQUEsaURBQ3dCO0lBRGtDLHlRQUFzQztJQUNoRyxpQkFBd0I7SUFDeEIsZ0NBQStEO0lBQUEsWUFDcEQ7SUFBQSxpQkFBTztJQUNwQixpQkFBTTtJQUNOLGdDQUF5RDtJQUFBLDZCQUFRO0lBQUEsaUJBQU87SUFDMUUsaUJBQU07SUFDTiwrQkFDRTtJQUFBLDZHQUVFO0lBSUosaUJBQU07SUFDUiwwQkFBZTs7O0lBZmMsZUFBa0M7SUFBbEMsdUZBQWtDO0lBRU0sZUFDcEQ7SUFEb0QsMkdBQ3BEO0lBTVgsZUFBc0U7SUFBdEUsNEZBQXNFOzs7SUFjcEUsbUNBQzJGOzs7SUFEUCwyQkFBYSxhQUFBLDBDQUFBOzs7O0lBTG5HLCtCQUdFO0lBRkEsa1FBQTZCO0lBRTdCLCtCQUE2QztJQUFBLDhCQUFRO0lBQUEsWUFBVztJQUFBLGlCQUFTO0lBQUEsaUJBQU07SUFDL0UsK0JBQThDO0lBQUEsWUFBaUM7SUFBQSxpQkFBTTtJQUNyRixtSUFDNEU7SUFDOUUsaUJBQU07Ozs7O0lBTjBCLHNEQUFpQyxnRUFBQTtJQUVWLGVBQVc7SUFBWCwrQkFBVztJQUNsQixlQUFpQztJQUFqQyxvSEFBaUM7SUFDbkIsZUFBdUI7SUFBdkIsa0RBQXVCOzs7SUFOdkYsK0JBQ0U7SUFBQSwyR0FHRTtJQUtKLGlCQUFNOzs7SUFSaUQsZUFBMEM7SUFBMUMsdUNBQTBDOzs7OztJQTFCekcsbUNBQ0U7SUFBQSwrQkFDRTtJQUFBLGtDQUFxSjtJQUExRSwyT0FBOEIsSUFBSSxVQUFHLHFCQUFtQyxJQUFDO0lBQUMsMkJBQVc7SUFBQSxpQkFBUztJQUN6SyxrQ0FBdUo7SUFBM0UsMk9BQThCLEtBQUssVUFBRyxxQkFBbUMsSUFBQztJQUFDLGdDQUFXO0lBQUEsaUJBQVM7SUFDM0ssaUJBQU07SUFDSixnSEFDQTtJQWtCRCw4SUFDRztJQVdKLGlCQUFNOzs7O0lBbEM2QixlQUF1QztJQUF2Qyw0RUFBdUM7SUFDdkMsZUFBd0M7SUFBeEMsNkVBQXdDO0lBRTFELGVBQTBDO0lBQTFDLDZDQUEwQyxrQkFBQTs7O0lBbUM3RCwrQkFDRTtJQUFBLDZDQUFxRztJQUN2RyxpQkFBTTs7O0lBRG9CLGVBQWlCO0lBQWpCLHVDQUFpQix5RUFBQTs7O0lBT3pDLG1DQUVlOzs7O0lBRndDLDBCQUFZLGNBQUEsZ0xBQUE7OztJQUlqRSxpQ0FBaUM7Ozs7SUFUckMsa0NBRUU7SUFGOEYsME1BQXdCOztJQUV0SCw0QkFDRTtJQUFBLFlBQ0Y7O0lBQUEsaUJBQU87SUFDUCwwR0FFQTtJQUNBLHlJQUNFO0lBRUosaUJBQVM7Ozs7SUFWUCxxTUFBbUg7SUFFakgsZUFDRjtJQURFLDZNQUNGO0lBQ2MsZUFBd0M7SUFBeEMsZ0RBQXdDLGtCQUFBOzs7O0lBbE45RCxpQ0FDRTtJQUFBLDhCQUNFO0lBQUEsOEJBQ0U7SUFBQSxpQ0FDRTtJQUFBLDZFQUNBO0lBQUEsNkVBQXVFO0lBQ3ZFLG9HQUtDO0lBRUQsZ0dBQ0U7SUFHRixnQ0FDRTtJQUFBLGdIQUVBOztJQUNBLG9DQUN1RDtJQUN2RCxvQ0FDdUQ7SUFDekQsaUJBQU07SUFDTixnRkFDRjtJQUFBLGlCQUFNO0lBQ04sZ0NBQ0U7SUFBQSxnQ0FDRTtJQUFBLG9DQUFzSDtJQUN0SCw2QkFBTTtJQUFBLGFBQXFDO0lBQUEsaUJBQU87SUFDcEQsaUJBQU07SUFDTixnQ0FDRTtJQUFBLGdGQUNFO0lBTUYsZ0ZBQ0U7SUFNRixnRkFDRTtJQU1KLGlCQUFNO0lBQ1IsaUJBQU07SUFDUixpQkFBTTtJQUNOLGdDQUNFO0lBQUEsZ0NBQ0U7SUFBQSxpQ0FBK0M7SUFBQSxhQUFxRDs7SUFBQSxpQkFBTztJQUMzRyxpQ0FBZ0Q7SUFBQSxhQUErQjtJQUFBLGlCQUFPO0lBQ3RGLGdDQUNFO0lBQUEsa0NBQ0U7SUFBQSxrR0FDRTtJQUVGLGtHQUNFO0lBRUYsa0dBQ0U7SUFFRixrR0FBK0I7SUFDakMsMEJBQWU7SUFDZiw2QkFBTTtJQUFBLGFBQXdDOztJQUFBLGlCQUFPO0lBQ3ZELGlCQUFNO0lBQ04sZ0NBQ0U7SUFBQSxhQUNBO0lBQUEsZ0NBQ0U7SUFEb0Qsc0xBQWlCO0lBQ3JFLG9DQUVlO0lBQUMsNkJBQU87SUFBQSxzQ0FBb0I7SUFBQSxpQkFBTztJQUNwRCxpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07SUFDTixnQ0FDRTtJQUFBLGdGQUNFO0lBRUYsdUZBRUU7SUFVSixpQkFBTTtJQUNSLGlCQUFNO0lBQ1IsaUJBQU07SUFDTiwyQkFDTTtJQUNOLGdGQUNFO0lBT0YsNEJBQ0U7SUFBQSw4R0FDZ0Q7SUFDbEQsaUJBQU07SUFDTixpRkFDRTtJQXlDRixrSUFDRTtJQXNDRixnQ0FDRTtJQUFBLGdDQUNFO0lBQUEsZ0ZBQ0U7SUFFRix1RkFFRTtJQVVKLGlCQUFNO0lBQ1IsaUJBQU07SUFDUixpQkFBTTs7OztJQXZOTyxlQUFrQjtJQUFsQix3Q0FBa0I7SUFDbEIsZUFBa0I7SUFBbEIsd0NBQWtCO0lBRXJCLGVBQWdDO0lBQWhDLDZEQUFnQztJQU1wQixlQUF1QztJQUF2QyxvRUFBdUM7SUFLOUIsZUFBcUM7SUFBckMsMkVBQXFDO0lBR0QsZUFBWTtJQUFaLDBCQUFZLGNBQUEsa0NBQUE7SUFFWixlQUFZO0lBQVosMEJBQVksY0FBQSwrQkFBQTtJQUdsRSxlQUErQjtJQUEvQixxREFBK0I7SUFJbUIsZUFBWTtJQUFaLDBCQUFZLGNBQUEsOEJBQUE7SUFDM0QsZUFBcUM7SUFBckMsbUdBQXFDO0lBR3RDLGVBQXVDO0lBQXZDLDZGQUF1QztJQU92QyxlQUFtQztJQUFuQyx5RkFBbUM7SUFPbkMsZUFBbUM7SUFBbkMseUZBQW1DO0lBWUssZUFBcUQ7SUFBckQsb05BQXFEO0lBQ3BELGVBQStCO0lBQS9CLHNGQUErQjtJQUUvRCxlQUFvQztJQUFwQyx1RkFBb0M7SUFDbEMsZUFBd0I7SUFBeEIsdUNBQXdCO0lBR3hCLGVBQXVCO0lBQXZCLHNDQUF1QjtJQUd2QixlQUEyQjtJQUEzQiwwQ0FBMkI7SUFLckMsZUFBd0M7SUFBeEMsMEdBQXdDO0lBRzlDLGVBQ0E7SUFEQSx1R0FDQTtJQUMyRCxlQUFZO0lBQVosMEJBQVksY0FBQSwrQkFBQTtJQU9wRSxlQUFnQztJQUFoQyw2REFBZ0M7SUFHN0IsZUFBc0I7SUFBdEIsNENBQXNCO0lBaUIvQixlQUFtQjtJQUFuQix5Q0FBbUI7SUFTRixlQUFvRTtJQUFwRSx3S0FBb0U7SUFHckYsZUFBc0M7SUFBdEMsdUNBQXNDLGtCQUFBO0lBbUZsQyxlQUFnQztJQUFoQyw2REFBZ0M7SUFHN0IsZUFBc0I7SUFBdEIsNENBQXNCOzs7O0lBZ0JsQyxnREFBMkY7SUFBbkQsNE5BQTJCO0lBQUMsaUJBQXVCOzs7SUFBckUsc0NBQWlCOztBRGhNekMsTUFBTSxPQUFPLHNCQUFzQjtJQWlDakMsWUFDUyxHQUFzQixFQUNyQixZQUEwQixFQUMzQixxQkFBNEMsRUFDNUMsV0FBd0IsRUFDckIsVUFBK0IsRUFDakMsbUJBQXdDLEVBQ3pDLGNBQThCO1FBTjlCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3JCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFDakMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFyQzlCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsa0JBQWEsR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9ELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFLcEQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFJN0MsOEJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQVd2QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzlFLENBQUM7SUFFRCxXQUFXOztRQUNULGtHQUFrRztRQUNsRywrRkFBK0Y7UUFDL0YsSUFBSSxJQUFJLENBQUMsMkJBQTJCLEtBQUssU0FBUyxFQUFFO1lBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyw0QkFBNEI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLFdBQUksSUFBSSxDQUFDLE1BQU0sMENBQUUsT0FBTyxDQUFBLENBQUM7UUFDakYsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjs7UUFDaEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsY0FBRSxJQUFJLENBQUMsZUFBZSwwQ0FBRSxhQUFhLDBDQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDaEUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO29CQUNuRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUU7aUJBQzlFO1lBQ0gsQ0FBQyxFQUNEO2dCQUNFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTthQUN2QyxDQUFDLENBQUM7WUFDSCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ25GLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZ0RBQWdEO1lBQ3BHLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLFFBQVEsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksUUFBUSxFQUFFO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDbkYsSUFBSSxDQUFDLGNBQWMsRUFBQztnQkFDbEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4RjtRQUNILENBQUMsQ0FBQyxFQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUM7YUFDbkcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixjQUFjLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQU07UUFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDdkIsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsaUJBQWlCO0lBQ25CLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUN0QixvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixpQkFBaUI7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxRQUFpQjtRQUNwQyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFjO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsaUJBQWlCLENBQUMsVUFBZ0M7UUFDaEQsT0FBTyxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUM7SUFDNUUsQ0FBQzs7NEZBckxVLHNCQUFzQjsyREFBdEIsc0JBQXNCOzs7Ozs7OztRQzdCbkMseUVBQ0U7UUEyTkYsd0hBQ0U7OztRQTdORyxxQ0FBNkIsaUJBQUE7O2tERDZCckIsc0JBQXNCO2NBUGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzhQQUVVLE1BQU07a0JBQWQsS0FBSztZQUNHLDJCQUEyQjtrQkFBbkMsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNJLFdBQVc7a0JBQXBCLE1BQU07WUFDRyxhQUFhO2tCQUF0QixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUd1QixlQUFlO2tCQUE1QyxTQUFTO21CQUFDLGlCQUFpQjtZQUNBLGFBQWE7a0JBQXhDLFNBQVM7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uLy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsIFBvaW50T2ZTYWxlc1NlcnZpY2UsIFJlY2lwZUV2ZW50c1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RvcEV2ZW50UHJvcGFnYXRpb24gfSBmcm9tICcuLi8uLi9fdXRpbHMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lZGlhTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU2ltcGxpZmllZEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1yZWNpcGUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFJlY2lwZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0NoZWNrZWQge1xuICBASW5wdXQoKSByZWNpcGU6IFJlY2lwZTtcbiAgQElucHV0KCkgZm9yY2VJbmdyZWRpZW50c1N0ZXBzdG9nZ2xlOiBib29sZWFuO1xuICBASW5wdXQoKSBwcmV2aWV3QWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGluZ3JlZGllbnRzUGljdHVyZXMgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheVRhZ3MgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzcGxheVRhZ3NJY29ucyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5UHJpY2luZyA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlBZGRlZE9uUGljdHVyZSA9IHRydWU7XG4gIEBPdXRwdXQoKSByZWNpcGVBZGRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVjaXBlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVjaXBlRXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpbWFyeUJ1dHRvbkNsaWNrZWQkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvcENvbnRhaW5lckltZycpIHRvcENvbnRhaW5lckltZzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbWFpbkNvbnRhaW5lcicpIG1haW5Db250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgdGFiID0gMDtcbiAgc2hvd0RldGFpbCA9IHRydWU7XG4gIHN0ZXBzOiBhbnlbXSA9IFtdO1xuICBhY3RpdmVTdGVwID0gMDtcbiAgaWNvbiA9IEljb247XG4gIGluZ3JlZGllbnRzQ2hlY2tlZCA9IHt9O1xuICBzaG93SW5ncmVkaWVudCA9IHRydWU7XG4gIGNsb3NlSWNvbmhpZGRlbiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwbGF5ZXJXaWR0aDtcbiAgcGxheWVySGVpZ2h0O1xuICBzaG93VmlkZW87XG4gIHNjcm9sbExpc3RlbmVySW5pdGlhbGlzZWQgPSBmYWxzZTtcbiAgYWRkQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZWRpYU1hdGNoZXI6IE1lZGlhTWF0Y2hlcixcbiAgICBwdWJsaWMgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZUV2ZW50c1NlcnZpY2U6IFJlY2lwZUV2ZW50c1NlcnZpY2UsXG4gICAgcHVibGljIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLm1lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiAxMDIzcHgpJykubWF0Y2hlcztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIC8vIGlmIGZvcmNlSW5ncmVkaWVudHNTdGVwc3RvZ2dsZSwgdXNlIGlzTW9iaWxlIHRvIHRvZ2dsZSBpbmdyZWRpZW50cyAmIHN0ZXBzIGluIG1vYmlsZSBtb2RlLCBlbHNlXG4gICAgLy8gVXNlIHRoZSB2YWx1ZSBvZiBmb3JjZUluZ3JlZGllbnRzU3RlcHN0b2dnbGUgdG8gZm9yY2UgaXQgdG8gbW9iaWxlICh0cnVlKSBvciBkZXNrdG9wIChmYWxzZSlcbiAgICBpZiAodGhpcy5mb3JjZUluZ3JlZGllbnRzU3RlcHN0b2dnbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc01vYmlsZSA9IHRoaXMuZm9yY2VJbmdyZWRpZW50c1N0ZXBzdG9nZ2xlO1xuICAgIH1cbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlOyAvLyBmb3JjZSByZWxvYWQgdmlkZW8gcGxheWVyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2hvd1ZpZGVvID0gdGhpcy5jb250ZXh0U2VydmljZS52aWRlb1JlY2lwZXNFbmFibGVkICYmIHRoaXMucmVjaXBlPy52aWRlb0lkO1xuICAgIGlmICh0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5zdGVwcyA9IHRoaXMucmVjaXBlLnN0ZXBzO1xuICAgICAgdGhpcy5hY3RpdmVTdGVwID0gMDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5wbGF5ZXJXaWR0aCA9IE1hdGgubWluKDY0MCwgdGhpcy50b3BDb250YWluZXJJbWc/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKTtcbiAgICB0aGlzLnBsYXllckhlaWdodCA9IHRoaXMucGxheWVyV2lkdGggKiAzOTAgLyA2NDA7XG4gICAgaWYgKCF0aGlzLnNjcm9sbExpc3RlbmVySW5pdGlhbGlzZWQpIHtcbiAgICAgIHRoaXMuaW5pdFNjcm9sbExpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgdGhlIGxpc3RlbmVyIG9uIHNjcm9sbCBzbyB0aGUgbW9kYWwgY2FuIGhpZGUgdGhlIGNsb3NlIGljb25cbiAgICovXG4gIGluaXRTY3JvbGxMaXN0ZW5lcigpIHtcbiAgICBpZiAodGhpcy5tYWluQ29udGFpbmVyKSB7XG4gICAgICBjb25zdCBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tYWluQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID4gMzAwICE9PSB0aGlzLmNsb3NlSWNvbmhpZGRlbi52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2xvc2VJY29uaGlkZGVuLm5leHQodGhpcy5tYWluQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID4gMzAwKSA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRocmVzaG9sZDogWzAsIDAuMzMsIDAuNjYsIDFdLFxuICAgICAgICByb290OiB0aGlzLm1haW5Db250YWluZXIubmF0aXZlRWxlbWVudFxuICAgICAgfSk7XG4gICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMudG9wQ29udGFpbmVySW1nLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckluaXRpYWxpc2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VBY3RpdmVTdGVwKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVN0ZXAgPSBpbmRleDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHJlY2lwZSB0byBsaXN0IG9uIHByaW1hcnkgYnV0dG9uIGNsaWNrIGFuZCBlbWl0IHRydWUgaWYgdGhlIHJlY2lwZSBpcyBhZGRlZCwgZmFsc2UgaWYgcmVjaXBlIGlzIG5vdCBhZGRlZFxuICAgKiBzbyBsaWIgdXNlcnMgY2FuIGRlY2lkZSB0aGF0IHByaW1hcnlCdXR0b25DbGlja2VkJC5lbWl0KGZhbHNlKSByZW1vdmVzIHRoZSByZWNpcGUgZm9yIGV4YW1wbGVcbiAgICovXG4gIGNsaWNrUHJpbWFyeSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWRkQnV0dG9uTG9hZGluZykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkUmVjaXBlKCk7XG4gICAgICAgICAgdGhpcy5wcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdCghcmVjaXBlSXNJbkxpc3QpOyAvLyAhcmVjaXBlSXNJbkxpc3QgPSBhZGQgYWN0aW9uLCBzbyB3ZSBlbWl0IHRydWVcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYWRkUmVjaXBlKCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlQnV0dG9uTG9hZGVyKHRydWUpO1xuICAgIGZvcmtKb2luKFtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuaXNMb2dnZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZSgxKSksXG4gICAgICB0aGlzLnBvc1NlcnZpY2UuaXNQb3NWYWxpZCgpLnBpcGUodGFrZSgxKSlcbiAgICBdKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnN0IGlzSG9va09rID0gdGhpcy5jb250ZXh0U2VydmljZS5ob29rQ2FsbGJhY2socmVzWzBdLCByZXNbMV0pO1xuICAgICAgaWYgKGlzSG9va09rKSB7XG4gICAgICAgIHRoaXMuYWRkUmVjaXBlQWN0aW9uT0soKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkUmVjaXBlQWN0aW9uS08oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFkZFJlY2lwZUFjdGlvbk9LKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QodGhpcy5yZWNpcGUuaWQpLnN1YnNjcmliZShyZWNpcGVJc0luTGlzdCA9PiB7XG4gICAgICAgIGlmICghcmVjaXBlSXNJbkxpc3Qpe1xuICAgICAgICAgIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5zZW5kRXZlbnQodGhpcy5yZWNpcGUsIHRoaXMucmVjaXBlRXZlbnRzU2VydmljZS5BQ1RJT05fQURERUQpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdCh0aGlzLnJlY2lwZS5pZCwgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMsICdkZXRhaWxzJylcbiAgICAgIC5zdWJzY3JpYmUobCA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uTG9hZGVyKGZhbHNlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnJlY2lwZUFkZGVkLmVtaXQoKTtcbiAgfVxuXG4gIGFkZFJlY2lwZUFjdGlvbktPKCk6IHZvaWQge1xuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19taWFtL2NhY2hlZC1yZWNpcGUnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJlY2lwZSkpO1xuICAgIHRoaXMucmVjaXBlRXJyb3IuZW1pdCgpO1xuICB9XG5cbiAgdXBkYXRlR3Vlc3RzKGd1ZXN0cykge1xuICAgIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gZ3Vlc3RzO1xuICAgIHRoaXMucmVjaXBlQ2hhbmdlZC5lbWl0KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpbnQoKSB7XG4gICAgd2luZG93LnByaW50KCk7XG4gIH1cblxuICBvcGVuQ2FsZW5kYXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIC8vIFRPRE8gaW1wbGVtZW50XG4gIH1cblxuICBzaGFyZVJlY2lwZShldmVudDogRXZlbnQpIHtcbiAgICBzdG9wRXZlbnRQcm9wYWdhdGlvbihldmVudCk7XG4gICAgLy8gVE9ETyBpbXBsZW1lbnRcbiAgfVxuXG4gIHRvZ2dsZUFkZG9uKCl7XG4gICAgdGhpcy5zaG93RGV0YWlsID0gICF0aGlzLnNob3dEZXRhaWw7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0luZ3JlZGllbnQoaXNTaG93ZWQ6IGJvb2xlYW4pe1xuICAgIHRoaXMuc2hvd0luZ3JlZGllbnQgPSBpc1Nob3dlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB0b2dnbGVCdXR0b25Mb2FkZXIodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmFkZEJ1dHRvbkxvYWRpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuXG4gIGluZ3JlZGllbnRQaWN0dXJlKGluZ3JlZGllbnQ6IFNpbXBsaWZpZWRJbmdyZWRpZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gaW5ncmVkaWVudC5waWN0dXJlIHx8IHRoaXMuY29udGV4dFNlcnZpY2UuZGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvd0RldGFpbCBlbHNlIGFkZG9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzXCIgI21haW5Db250YWluZXIgPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19sZWZ0XCI+XG4gICAgICA8ZGl2ICN0b3BDb250YWluZXJJbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190b3BfX2NvbnRhaW5lcl9faW1nXCI+XG4gICAgICAgIDxpbWcgKm5nSWY9XCIhc2hvd1ZpZGVvXCIgW3NyY109XCJyZWNpcGU/LmF0dHJpYnV0ZXNbJ21lZGlhLXVybCddXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd1ZpZGVvXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19waWN0dXJlX19ncmFkaWVudFwiPjwvZGl2PlxuICAgICAgICA8eW91dHViZS1wbGF5ZXJcbiAgICAgICAgICAqbmdJZj1cInNob3dWaWRlbyAmJiBwbGF5ZXJXaWR0aFwiXG4gICAgICAgICAgW3ZpZGVvSWRdPVwicmVjaXBlLnZpZGVvSWRcIlxuICAgICAgICAgIFt3aWR0aF09XCJwbGF5ZXJXaWR0aFwiXG4gICAgICAgICAgW2hlaWdodF09XCJwbGF5ZXJIZWlnaHRcIlxuICAgICAgICA+PC95b3V0dWJlLXBsYXllcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlBZGRlZE9uUGljdHVyZVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIoZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGljdHVyZV9fdGFnXCI+RMOpasOgIGFqb3V0w6llPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW1nX19hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b24gKm5nSWY9XCJ1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb24gbWlhbS1ub1BhZGRpbmdcIiBbcmVjaXBlXT0ncmVjaXBlJyBbd2lkdGhdPVwiMjZcIiBbaGVpZ2h0XT1cIjI2XCI+XG4gICAgICAgICAgPC9uZy1taWFtLWxpa2UtYnV0dG9uPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uXCIgW3dpZHRoXT1cIjI2XCIgW2hlaWdodF09XCIyNlwiIFtpY29uTmFtZV09XCJpY29uLkNhbGVuZGFyXCJcbiAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1wcmltYXJ5KSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb25cIiBbd2lkdGhdPVwiMjZcIiBbaGVpZ2h0XT1cIjI2XCIgW2ljb25OYW1lXT1cImljb24uU2hhcmVcIlxuICAgICAgICAgICAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJz48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbWcgKm5nSWY9XCJyZWNpcGUuZmlsaWdyYW5lTG9nb1VybFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGljdHVyZV9fc3BvbnNvclwiIHNyYz1cInt7cmVjaXBlLmZpbGlncmFuZUxvZ29Vcmx9fVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19jb250YWluZXJfX2luZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9fX21ldHJpY3MgbWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb19fbWV0cmljc19fdG90YWxcIj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItcHJpbWFyeSknIFt3aWR0aF09XCIzMlwiIFtoZWlnaHRdPVwiMzJcIiBbaWNvbk5hbWVdPVwiaWNvbi5UaW1lXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPHNwYW4+VGVtcHMgdG90YWwgOiB7eyByZWNpcGU/LnRvdGFsVGltZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvX190aW1lc1wiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGU/LnByZXBhcmF0aW9uVGltZSAhPT0gJy0nXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvX19tZXRyaWNzXCI+XG4gICAgICAgICAgICA8c3Bhbj5QcsOpcGFyYXRpb248L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fbWV0cmljc19fcm93XCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1zbGF0ZSknIFtpY29uTmFtZV09XCJpY29uLlByZXBhcmF0aW9uXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHJlY2lwZT8ucHJlcGFyYXRpb25UaW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZT8uY29va2luZ1RpbWUgIT09ICctJ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb19fbWV0cmljc1wiPlxuICAgICAgICAgICAgPHNwYW4+Q3Vpc3Nvbjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19tZXRyaWNzX19yb3dcIj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1zbGF0ZSknIFtpY29uTmFtZV09XCJpY29uLkhvdFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyByZWNpcGU/LmNvb2tpbmdUaW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZT8ucmVzdGluZ1RpbWUgIT09ICctJ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb19fbWV0cmljc1wiPlxuICAgICAgICAgICAgPHNwYW4+UmVwb3M8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fbWV0cmljc19fcm93XCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itc2xhdGUpJyBbaWNvbk5hbWVdPVwiaWNvbi5XYWl0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHJlY2lwZT8ucmVzdGluZ1RpbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19jb250YWluZXJfX2luZm9zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19jb250YWluZXJfX2luZm9zX190b3BcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fdHlwZVwiPnt7cmVjaXBlPy5yZWNpcGVUeXBlPy5hdHRyaWJ1dGVzPy5uYW1lIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9zX190aXRsZVwiPnt7cmVjaXBlPy5hdHRyaWJ1dGVzWyd0aXRsZSddfX08L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fZGlmZmljdWx0eVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInJlY2lwZT8uZGlmZmljdWx0eUxhYmVsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZmFjaWxlJ1wiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCI1NlwiIFtoZWlnaHRdPVwiMTZcIiBbaWNvbk5hbWVdPVwiaWNvbi5EaWZmaWN1bHR5TG93XCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtb3llbidcIj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNTZcIiBbaGVpZ2h0XT1cIjE2XCIgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eU1lZGl1bVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGlmZmljaWxlJ1wiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCI1NlwiIFtoZWlnaHRdPVwiMTZcIiBbaWNvbk5hbWVdPVwiaWNvbi5EaWZmaWN1bHR5SGlnaHRcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxzcGFuPnt7cmVjaXBlPy5kaWZmaWN1bHR5TGFiZWwgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge3sgcmVjaXBlPy5hdHRyaWJ1dGVzWydkZXNjcmlwdGlvbiddIH19XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2Rlc2NyaXB0aW9uX19hY3Rpb25cIiAoY2xpY2spPVwicHJpbnQoKVwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2FjdGlvbnNfX2ljb25cIiBbd2lkdGhdPVwiMjBcIiBbaGVpZ2h0XT1cIjIwXCJcbiAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyBbaWNvbk5hbWVdPVwiaWNvbi5QcmludFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWljb24+IDxzcGFuPiBJbXByaW1lciBsYSByZWNldHRlIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fcHJpY2VfX3dyYXBwZXJcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5UHJpY2luZ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX3ByaWNlXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmcgW3JlY2lwZV09XCJyZWNpcGVcIiBbc2VydmVzXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIj48L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwicHJldmlld0FsbG93ZWRcIiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fYWN0aW9uIG0tYnV0dG9uLWZhYi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrUHJpbWFyeSgpXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbi1iYXNrZXQnOiAoZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpLCAnbG9hZGluZyc6IGFkZEJ1dHRvbkxvYWRpbmd9XCI+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7eyhncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYykgPyAnVm9pciBsZSBkw6l0YWlsJyA6ICdTw6lsZWN0aW9ubmVyIGNlIHJlcGFzJ319XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gKm5nSWY9XCIhYWRkQnV0dG9uTG9hZGluZyBlbHNlIGFkZExvYWRlclwiIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9JyNmZmYnXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSA/IGljb24uQ2hlY2tMaXN0IDogaWNvbi5DYXJ0XCI+XG4gICAgICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNhZGRMb2FkZXI+XG4gICAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX21pZF9fY29udGFpbmVyXCI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZGlzcGxheVRhZ3NcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RhZ3NfX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhZyBvZiByZWNpcGUucmVsYXRpb25zaGlwcy50YWdzLmRhdGFcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RhZ1wiPlxuICAgICAgPGltZyAqbmdJZj1cImRpc3BsYXlUYWdzSWNvbnNcIiBbc3JjXT1cInRhZy5hdHRyaWJ1dGVzLmljb25cIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RhZ19faWNvblwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190YWdfX25hbWVcIj5cbiAgICAgICAge3t0YWcubmFtZX19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIDxuZy1taWFtLWFkZG9uLWxpbmsgKm5nSWY9XCJyZWNpcGU/LnNwb25zb3JzPy5sZW5ndGggPiAwIHx8IHJlY2lwZS5pbmZvcm1hdGlvbmFsU2VudGVuY2VcIlxuICAgICAgW3JlY2lwZV09J3JlY2lwZScgKHNob3dBZGRvbik9J3RvZ2dsZUFkZG9uKCknPjwvbmctbWlhbS1hZGRvbi1saW5rPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFpc01vYmlsZSBlbHNlIG1vYmlsZUNvbnRhaW5lclwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm90dG9tX19jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm90dG9tX19jb250YWluZXJfX2luZ3JlZGllbnRzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm90dG9tX19jb250YWluZXJfX2hlYWRlclwiPlxuICAgICAgICBJbmdyw6lkaWVudHNcbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19jb3VudGVyXCI+XG4gICAgICAgICAgPG5nLW1pYW0tY291bnRlci1pbnB1dCBbY291bnRlcl09XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzIHx8IHJlY2lwZS5ndWVzdHNcIiAoY291bnRlckNoYW5nZSk9XCJ1cGRhdGVHdWVzdHMoJGV2ZW50KVwiPlxuICAgICAgICAgIDwvbmctbWlhbS1jb3VudGVyLWlucHV0PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX2NvdW50ZXJfX3ByaW50XCI+UG91ciB7e3JlY2lwZT8ubW9kaWZpZWRHdWVzdHN9fVxuICAgICAgICAgICAgcGVyc29ubmVzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fcm93X19xdHlcIj5RdWFudGl0w6k8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd1wiIFtuZ0NsYXNzXT1cInsnY2hlY2tlZCc6IGluZ3JlZGllbnRzQ2hlY2tlZFtpXX1cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpbmdyZWRpZW50IG9mIHJlY2lwZT8ubW9kaWZpZWRJbmdyZWRpZW50cywgbGV0IGkgPSBpbmRleCBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW5ncmVkaWVudHNQaWN0dXJlc1wiPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dfX3BpY3R1cmVcIiBbc3JjXT1cImluZ3JlZGllbnRQaWN0dXJlKGluZ3JlZGllbnQpXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj4ge3sgaW5ncmVkaWVudC5uYW1lIHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd19fcXR5XCI+IHt7IGluZ3JlZGllbnQucXR5IHwgcmVhZGFibGVGbG9hdE51bWJlciA6XG4gICAgICAgICAgICBpbmdyZWRpZW50LnVuaXQgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm90dG9tX19jb250YWluZXJfX3N0ZXBzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYm90dG9tX19jb250YWluZXJfX2hlYWRlclwiPlxuICAgICAgICBQcsOpcGFyYXRpb25cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3N0ZXBzX19saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdGVwc19fbGlzdF9fcGFuZWxcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwczsgbGV0IGkgPSBpbmRleDtcIlxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VBY3RpdmVTdGVwKGkpXCIgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBhY3RpdmVTdGVwXCJcbiAgICAgICAgICBbY2xhc3MubWlhbS1yZWNpcGUtZGV0YWlsc19fcGFuZWxfX2RvbmVdPVwiaSA8IGFjdGl2ZVN0ZXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGFuZWxfX2lkeFwiPjxzdHJvbmc+e3sgaSArIDEgfX08L3N0cm9uZz48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGFuZWxfX3RleHRcIj57e3N0ZXA/LmF0dHJpYnV0ZXM/LmRlc2NyaXB0aW9ufX08L2Rpdj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGFuZWxfX2NoZWNrSWNvblwiICpuZ0lmPVwiaSA8PSBhY3RpdmVTdGVwXCIgW2hlaWdodF09JzE2JyBbd2lkdGhdPScxNidcbiAgICAgICAgICAgIFtpY29uTmFtZV09J2ljb24uQ2hlY2tDaXJjbGVGaWxsJyBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXNlY29uZGFyeSlcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjbW9iaWxlQ29udGFpbmVyID5cbiAgICA8ZGl2ICNtb2JpbGVDb250YWluZXJUb3AgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19tb2JpbGVfX2NvbnRhaW5lclwiPlxuICAgICAgPGRpdiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19tb2JpbGVfX2hlYWRlclwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1idXR0b24tc2Vjb25kYXJ5XCIgW25nQ2xhc3NdPVwieydhY3RpdmUnIDogc2hvd0luZ3JlZGllbnR9XCIgKGNsaWNrKT1cInRvZ2dsZVNob3dJbmdyZWRpZW50KHRydWUpOyBtb2JpbGVDb250YWluZXJUb3Auc2Nyb2xsSW50b1ZpZXcoKVwiPkluZ3JlZGllbnRzPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1zZWNvbmRhcnlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZScgOiAhc2hvd0luZ3JlZGllbnR9XCIgKGNsaWNrKT1cInRvZ2dsZVNob3dJbmdyZWRpZW50KGZhbHNlKTsgbW9iaWxlQ29udGFpbmVyVG9wLnNjcm9sbEludG9WaWV3KClcIj5QcsOpcGFyYXRpb248L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAgKm5nSWY9XCJzaG93SW5ncmVkaWVudCBlbHNlIHN0ZXBzQ29udGFpbmVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fY291bnRlclwiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1jb3VudGVyLWlucHV0IFtjb3VudGVyXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIiAoY291bnRlckNoYW5nZSk9XCJ1cGRhdGVHdWVzdHMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fY291bnRlcl9fcHJpbnRcIj5Qb3VyIHt7cmVjaXBlPy5tb2RpZmllZEd1ZXN0c319XG4gICAgICAgICAgICAgICAgcGVyc29ubmVzPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dfX3F0eVwiPlF1YW50aXTDqTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX2xpc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fcm93XCIgW25nQ2xhc3NdPVwieydjaGVja2VkJzogaW5ncmVkaWVudHNDaGVja2VkW2ldfVwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpbmdyZWRpZW50IG9mIHJlY2lwZT8ubW9kaWZpZWRJbmdyZWRpZW50cywgbGV0IGkgPSBpbmRleCBcIj5cbiAgICAgICAgICAgICAgPGRpdj4ge3sgaW5ncmVkaWVudC5uYW1lIHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyfX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dfX3F0eVwiPiB7eyBpbmdyZWRpZW50LnF0eSB8IHJlYWRhYmxlRmxvYXROdW1iZXIgOlxuICAgICAgICAgICAgICAgIGluZ3JlZGllbnQudW5pdCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGVwc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdGVwc19fbGlzdFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fc3RlcHNfX2xpc3RfX3BhbmVsXCIgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQWN0aXZlU3RlcChpKVwiIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlU3RlcFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19kb25lXT1cImkgPCBhY3RpdmVTdGVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19pZHhcIj48c3Ryb25nPnt7IGkgKyAxIH19PC9zdHJvbmc+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX190ZXh0XCI+e3tzdGVwPy5hdHRyaWJ1dGVzPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19jaGVja0ljb25cIiAqbmdJZj1cImkgPD0gYWN0aXZlU3RlcFwiIFtoZWlnaHRdPScxNicgW3dpZHRoXT0nMTYnXG4gICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPSdpY29uLkNoZWNrQ2lyY2xlRmlsbCcgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1zZWNvbmRhcnkpXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19ib3R0b21fX2NvbnRhaW5lcl9fYWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9zX19wcmljZV9fd3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5UHJpY2luZ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX3ByaWNlXCI+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwicHJldmlld0FsbG93ZWRcIiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fYWN0aW9uIG0tYnV0dG9uLWZhYi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrUHJpbWFyeSgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW4tYmFza2V0JzogKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSwgJ2xvYWRpbmcnOiBhZGRCdXR0b25Mb2FkaW5nfVwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7eyhncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYykgPyAnVm9pciBsZSBkw6l0YWlsJyA6ICdTw6lsZWN0aW9ubmVyIGNlIHJlcGFzJ319XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiAqbmdJZj1cIiFhZGRCdXR0b25Mb2FkaW5nIGVsc2UgYWRkTG9hZGVyXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIHByaW1hcnlDb2xvcj0nI2ZmZidcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSA/IGljb24uQ2hlY2tMaXN0ICA6aWNvbi5DYXJ0XCI+XG4gICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FkZExvYWRlcj5cbiAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNhZGRvbj5cbiAgPG5nLW1pYW0tcmVjaXBlLWFkZG9uIFtyZWNpcGVdPSdyZWNpcGUnIChoaWRlQWRkb24pPVwidG9nZ2xlQWRkb24oKVwiPjwvbmctbWlhbS1yZWNpcGUtYWRkb24+XG48L25nLXRlbXBsYXRlPiJdfQ==
861
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWRldGFpbHMvcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtZGV0YWlscy9yZWNpcGUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixNQUFNLEVBQ04sWUFBWSxFQUdaLFNBQVMsRUFDVCxVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ILE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDZjNDLDBCQUNBOzs7SUFEd0IsNEdBQXVDOzs7SUFDL0QsMEJBQTZFOzs7SUFDN0UscUNBS2tCOzs7SUFIaEIsK0NBQTBCLDZCQUFBLCtCQUFBOzs7SUFNMUIsK0JBQzRDO0lBQUEsMkNBQVk7SUFBQSxpQkFB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QkFBcEIsTUFBTTtZQUNHLGFBQWE7a0JBQXRCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBR3VCLGVBQWU7a0JBQTVDLFNBQVM7bUJBQUMsaUJBQWlCO1lBQ0EsYUFBYTtrQkFBeEMsU0FBUzttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIEdyb2Nlcmllc0xpc3RzU2VydmljZSwgUG9pbnRPZlNhbGVzU2VydmljZSwgUmVjaXBlRXZlbnRzU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdG9wRXZlbnRQcm9wYWdhdGlvbiB9IGZyb20gJy4uLy4uL191dGlscyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWVkaWFNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBTaW1wbGlmaWVkSW5ncmVkaWVudCB9IGZyb20gJy4uLy4uL19tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCB7XG4gIEBJbnB1dCgpIHJlY2lwZTogUmVjaXBlO1xuICBASW5wdXQoKSBmb3JjZUluZ3JlZGllbnRzU3RlcHN0b2dnbGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByZXZpZXdBbGxvd2VkID0gdHJ1ZTtcbiAgQElucHV0KCkgaW5ncmVkaWVudHNQaWN0dXJlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5VGFncyA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNwbGF5VGFnc0ljb25zID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUFkZGVkT25QaWN0dXJlID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHJlY2lwZUFkZGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWNpcGVDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWNpcGVFcnJvcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFZpZXdDaGlsZCgndG9wQ29udGFpbmVySW1nJykgdG9wQ29udGFpbmVySW1nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdtYWluQ29udGFpbmVyJykgbWFpbkNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBpc01vYmlsZSA9IGZhbHNlO1xuICB0YWIgPSAwO1xuICBzaG93RGV0YWlsID0gdHJ1ZTtcbiAgYWN0aXZlU3RlcCA9IDA7XG4gIGljb24gPSBJY29uO1xuICBpbmdyZWRpZW50c0NoZWNrZWQgPSB7fTtcbiAgc2hvd0luZ3JlZGllbnQgPSB0cnVlO1xuICBjbG9zZUljb25oaWRkZW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcGxheWVyV2lkdGg7XG4gIHBsYXllckhlaWdodDtcbiAgc2hvd1ZpZGVvO1xuICBzY3JvbGxMaXN0ZW5lckluaXRpYWxpc2VkID0gZmFsc2U7XG4gIGFkZEJ1dHRvbkxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVFdmVudHNTZXJ2aWNlOiBSZWNpcGVFdmVudHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlzTW9iaWxlID0gdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyM3B4KScpLm1hdGNoZXM7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAvLyBpZiBmb3JjZUluZ3JlZGllbnRzU3RlcHN0b2dnbGUsIHVzZSBpc01vYmlsZSB0byB0b2dnbGUgaW5ncmVkaWVudHMgJiBzdGVwcyBpbiBtb2JpbGUgbW9kZSwgZWxzZVxuICAgIC8vIFVzZSB0aGUgdmFsdWUgb2YgZm9yY2VJbmdyZWRpZW50c1N0ZXBzdG9nZ2xlIHRvIGZvcmNlIGl0IHRvIG1vYmlsZSAodHJ1ZSkgb3IgZGVza3RvcCAoZmFsc2UpXG4gICAgaWYgKHRoaXMuZm9yY2VJbmdyZWRpZW50c1N0ZXBzdG9nZ2xlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLmZvcmNlSW5ncmVkaWVudHNTdGVwc3RvZ2dsZTtcbiAgICB9XG4gICAgdGhpcy5zaG93VmlkZW8gPSBmYWxzZTsgLy8gZm9yY2UgcmVsb2FkIHZpZGVvIHBsYXllclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNob3dWaWRlbyA9IHRoaXMuY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiB0aGlzLnJlY2lwZT8udmlkZW9JZDtcbiAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMuYWN0aXZlU3RlcCA9IDA7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIHRoaXMucGxheWVyV2lkdGggPSBNYXRoLm1pbig2NDAsIHRoaXMudG9wQ29udGFpbmVySW1nPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCk7XG4gICAgdGhpcy5wbGF5ZXJIZWlnaHQgPSB0aGlzLnBsYXllcldpZHRoICogMzkwIC8gNjQwO1xuICAgIGlmICghdGhpcy5zY3JvbGxMaXN0ZW5lckluaXRpYWxpc2VkKSB7XG4gICAgICB0aGlzLmluaXRTY3JvbGxMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0IHRoZSBsaXN0ZW5lciBvbiBzY3JvbGwgc28gdGhlIG1vZGFsIGNhbiBoaWRlIHRoZSBjbG9zZSBpY29uXG4gICAqL1xuICBpbml0U2Nyb2xsTGlzdGVuZXIoKSB7XG4gICAgaWYgKHRoaXMubWFpbkNvbnRhaW5lcikge1xuICAgICAgY29uc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWFpbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA+IDMwMCAhPT0gdGhpcy5jbG9zZUljb25oaWRkZW4udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlSWNvbmhpZGRlbi5uZXh0KHRoaXMubWFpbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA+IDMwMCkgO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0aHJlc2hvbGQ6IFswLCAwLjMzLCAwLjY2LCAxXSxcbiAgICAgICAgcm9vdDogdGhpcy5tYWluQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRvcENvbnRhaW5lckltZy5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXJJbml0aWFsaXNlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQWN0aXZlU3RlcChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5hY3RpdmVTdGVwID0gaW5kZXg7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByZWNpcGUgdG8gbGlzdCBvbiBwcmltYXJ5IGJ1dHRvbiBjbGljayBhbmQgZW1pdCB0cnVlIGlmIHRoZSByZWNpcGUgaXMgYWRkZWQsIGZhbHNlIGlmIHJlY2lwZSBpcyBub3QgYWRkZWRcbiAgICogc28gbGliIHVzZXJzIGNhbiBkZWNpZGUgdGhhdCBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdChmYWxzZSkgcmVtb3ZlcyB0aGUgcmVjaXBlIGZvciBleGFtcGxlXG4gICAqL1xuICBjbGlja1ByaW1hcnkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkZEJ1dHRvbkxvYWRpbmcpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdCh0aGlzLnJlY2lwZS5pZCkuc3Vic2NyaWJlKHJlY2lwZUlzSW5MaXN0ID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZSgpO1xuICAgICAgICAgIHRoaXMucHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoIXJlY2lwZUlzSW5MaXN0KTsgLy8gIXJlY2lwZUlzSW5MaXN0ID0gYWRkIGFjdGlvbiwgc28gd2UgZW1pdCB0cnVlXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFJlY2lwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcih0cnVlKTtcbiAgICBmb3JrSm9pbihbXG4gICAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLFxuICAgICAgdGhpcy5wb3NTZXJ2aWNlLmlzUG9zVmFsaWQoKS5waXBlKHRha2UoMSkpXG4gICAgXSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zdCBpc0hvb2tPayA9IHRoaXMuY29udGV4dFNlcnZpY2UuaG9va0NhbGxiYWNrKHJlc1swXSwgcmVzWzFdKTtcbiAgICAgIGlmIChpc0hvb2tPaykge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbk9LKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZFJlY2lwZUFjdGlvbktPKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25PSygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5zdWJzY3JpYmUocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICBpZiAoIXJlY2lwZUlzSW5MaXN0KXtcbiAgICAgICAgICB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2Uuc2VuZEV2ZW50KHRoaXMucmVjaXBlLCB0aGlzLnJlY2lwZUV2ZW50c1NlcnZpY2UuQUNUSU9OX0FEREVEKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0aGlzLmdyb2Nlcmllc0xpc3RzU2VydmljZS5hcHBlbmRSZWNpcGVUb0xpc3QodGhpcy5yZWNpcGUuaWQsIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCAnZGV0YWlscycpXG4gICAgICAuc3Vic2NyaWJlKGwgPT4ge1xuICAgICAgICB0aGlzLnRvZ2dsZUJ1dHRvbkxvYWRlcihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yZWNpcGVBZGRlZC5lbWl0KCk7XG4gIH1cblxuICBhZGRSZWNpcGVBY3Rpb25LTygpOiB2b2lkIHtcbiAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS9jYWNoZWQtcmVjaXBlJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yZWNpcGUpKTtcbiAgICB0aGlzLnJlY2lwZUVycm9yLmVtaXQoKTtcbiAgfVxuXG4gIHVwZGF0ZUd1ZXN0cyhndWVzdHMpIHtcbiAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IGd1ZXN0cztcbiAgICB0aGlzLnJlY2lwZUNoYW5nZWQuZW1pdCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaW50KCkge1xuICAgIHdpbmRvdy5wcmludCgpO1xuICB9XG5cbiAgb3BlbkNhbGVuZGFyKGV2ZW50OiBFdmVudCkge1xuICAgIHN0b3BFdmVudFByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICAvLyBUT0RPIGltcGxlbWVudFxuICB9XG5cbiAgc2hhcmVSZWNpcGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgc3RvcEV2ZW50UHJvcGFnYXRpb24oZXZlbnQpO1xuICAgIC8vIFRPRE8gaW1wbGVtZW50XG4gIH1cblxuICB0b2dnbGVBZGRvbigpe1xuICAgIHRoaXMuc2hvd0RldGFpbCA9ICAhdGhpcy5zaG93RGV0YWlsO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHRvZ2dsZVNob3dJbmdyZWRpZW50KGlzU2hvd2VkOiBib29sZWFuKXtcbiAgICB0aGlzLnNob3dJbmdyZWRpZW50ID0gaXNTaG93ZWQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgdG9nZ2xlQnV0dG9uTG9hZGVyKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5hZGRCdXR0b25Mb2FkaW5nID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cblxuICBpbmdyZWRpZW50UGljdHVyZShpbmdyZWRpZW50OiBTaW1wbGlmaWVkSW5ncmVkaWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGluZ3JlZGllbnQucGljdHVyZSB8fCB0aGlzLmNvbnRleHRTZXJ2aWNlLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInNob3dEZXRhaWwgZWxzZSBhZGRvblwiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc1wiICNtYWluQ29udGFpbmVyID5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RvcF9fY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RvcF9fbGVmdFwiPlxuICAgICAgPGRpdiAjdG9wQ29udGFpbmVySW1nIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdG9wX19jb250YWluZXJfX2ltZ1wiPlxuICAgICAgICA8aW1nICpuZ0lmPVwiIXNob3dWaWRlb1wiIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dWaWRlb1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fcGljdHVyZV9fZ3JhZGllbnRcIj48L2Rpdj5cbiAgICAgICAgPHlvdXR1YmUtcGxheWVyXG4gICAgICAgICAgKm5nSWY9XCJzaG93VmlkZW8gJiYgcGxheWVyV2lkdGhcIlxuICAgICAgICAgIFt2aWRlb0lkXT1cInJlY2lwZS52aWRlb0lkXCJcbiAgICAgICAgICBbd2lkdGhdPVwicGxheWVyV2lkdGhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwicGxheWVySGVpZ2h0XCJcbiAgICAgICAgPjwveW91dHViZS1wbGF5ZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5QWRkZWRPblBpY3R1cmVcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BpY3R1cmVfX3RhZ1wiPkTDqWrDoCBham91dMOpZTwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2ltZ19fYWN0aW9uc1wiPlxuICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIlxuICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uIG1pYW0tbm9QYWRkaW5nXCIgW3JlY2lwZV09J3JlY2lwZScgW3dpZHRoXT1cIjI2XCIgW2hlaWdodF09XCIyNlwiPlxuICAgICAgICAgIDwvbmctbWlhbS1saWtlLWJ1dHRvbj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fYWN0aW9uc19faWNvblwiIFt3aWR0aF09XCIyNlwiIFtoZWlnaHRdPVwiMjZcIiBbaWNvbk5hbWVdPVwiaWNvbi5DYWxlbmRhclwiXG4gICAgICAgICAgICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItcHJpbWFyeSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uXCIgW3dpZHRoXT1cIjI2XCIgW2hlaWdodF09XCIyNlwiIFtpY29uTmFtZV09XCJpY29uLlNoYXJlXCJcbiAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1wcmltYXJ5KSc+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aW1nICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BpY3R1cmVfX3Nwb25zb3JcIiBzcmM9XCJ7e3JlY2lwZS5maWxpZ3JhbmVMb2dvVXJsfX1cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RvcF9fY29udGFpbmVyX19pbmZvXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvX19tZXRyaWNzIG1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9fX21ldHJpY3NfX3RvdGFsXCI+XG4gICAgICAgICAgPG5nLW1pYW0taWNvbiAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXByaW1hcnkpJyBbd2lkdGhdPVwiMzJcIiBbaGVpZ2h0XT1cIjMyXCIgW2ljb25OYW1lXT1cImljb24uVGltZVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxzcGFuPlRlbXBzIHRvdGFsIDoge3sgcmVjaXBlPy50b3RhbFRpbWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb19fdGltZXNcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlPy5wcmVwYXJhdGlvblRpbWUgIT09ICctJ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb19fbWV0cmljc1wiPlxuICAgICAgICAgICAgPHNwYW4+UHLDqXBhcmF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX21ldHJpY3NfX3Jvd1wiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itc2xhdGUpJyBbaWNvbk5hbWVdPVwiaWNvbi5QcmVwYXJhdGlvblwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyByZWNpcGU/LnByZXBhcmF0aW9uVGltZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGU/LmNvb2tpbmdUaW1lICE9PSAnLSdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9fX21ldHJpY3NcIj5cbiAgICAgICAgICAgIDxzcGFuPkN1aXNzb248L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fbWV0cmljc19fcm93XCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiICBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itc2xhdGUpJyBbaWNvbk5hbWVdPVwiaWNvbi5Ib3RcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgcmVjaXBlPy5jb29raW5nVGltZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGU/LnJlc3RpbmdUaW1lICE9PSAnLSdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9fX21ldHJpY3NcIj5cbiAgICAgICAgICAgIDxzcGFuPlJlcG9zPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX21ldHJpY3NfX3Jvd1wiPlxuICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiAgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXNsYXRlKScgW2ljb25OYW1lXT1cImljb24uV2FpdFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyByZWNpcGU/LnJlc3RpbmdUaW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RvcF9fY29udGFpbmVyX19pbmZvc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3RvcF9fY29udGFpbmVyX19pbmZvc19fdG9wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX3R5cGVcIj57e3JlY2lwZT8ucmVjaXBlVHlwZT8uYXR0cmlidXRlcz8ubmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fdGl0bGVcIj57e3JlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX2RpZmZpY3VsdHlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJyZWNpcGU/LmRpZmZpY3VsdHlMYWJlbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZhY2lsZSdcIj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNTZcIiBbaGVpZ2h0XT1cIjE2XCIgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUxvd1wiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbW95ZW4nXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjU2XCIgW2hlaWdodF09XCIxNlwiIFtpY29uTmFtZV09XCJpY29uLkRpZmZpY3VsdHlNZWRpdW1cIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RpZmZpY2lsZSdcIj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNTZcIiBbaGVpZ2h0XT1cIjE2XCIgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUhpZ2h0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8c3Bhbj57e3JlY2lwZT8uZGlmZmljdWx0eUxhYmVsIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9zX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHt7IHJlY2lwZT8uYXR0cmlidXRlc1snZGVzY3JpcHRpb24nXSB9fVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19kZXNjcmlwdGlvbl9fYWN0aW9uXCIgKGNsaWNrKT1cInByaW50KClcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19hY3Rpb25zX19pY29uXCIgW3dpZHRoXT1cIjIwXCIgW2hlaWdodF09XCIyMFwiXG4gICAgICAgICAgICAgIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1wcmltYXJ5KScgW2ljb25OYW1lXT1cImljb24uUHJpbnRcIj5cbiAgICAgICAgICAgIDwvbmctbWlhbS1pY29uPiA8c3Bhbj4gSW1wcmltZXIgbGEgcmVjZXR0ZSA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX3ByaWNlX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUgJiYgZGlzcGxheVByaWNpbmdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9zX19wcmljZVwiPlxuICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInByZXZpZXdBbGxvd2VkXCIgIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX2FjdGlvbiBtLWJ1dHRvbi1mYWItcHJpbWFyeVwiIChjbGljayk9XCJjbGlja1ByaW1hcnkoKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaW4tYmFza2V0JzogKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSwgJ2xvYWRpbmcnOiBhZGRCdXR0b25Mb2FkaW5nfVwiPlxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3soZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZT8uaWQpIHwgYXN5bmMpID8gJ1ZvaXIgbGUgZMOpdGFpbCcgOiAnU8OpbGVjdGlvbm5lciBjZSByZXBhcyd9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uICpuZ0lmPVwiIWFkZEJ1dHRvbkxvYWRpbmcgZWxzZSBhZGRMb2FkZXJcIiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgcHJpbWFyeUNvbG9yPScjZmZmJ1xuICAgICAgICAgICAgW2ljb25OYW1lXT1cIihncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYykgPyBpY29uLkNoZWNrTGlzdCA6IGljb24uQ2FydFwiPlxuICAgICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYWRkTG9hZGVyPlxuICAgICAgICAgICAgPG5nLW1pYW0tbG9hZGVyPjwvbmctbWlhbS1sb2FkZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19taWRfX2NvbnRhaW5lclwiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImRpc3BsYXlUYWdzXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190YWdzX19jb250YWluZXJcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0YWcgb2YgcmVjaXBlLnJlbGF0aW9uc2hpcHMudGFncy5kYXRhXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190YWdcIj5cbiAgICAgIDxpbWcgKm5nSWY9XCJkaXNwbGF5VGFnc0ljb25zXCIgW3NyY109XCJ0YWcuYXR0cmlidXRlcy5pY29uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX190YWdfX2ljb25cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fdGFnX19uYW1lXCI+XG4gICAgICAgIHt7dGFnLm5hbWV9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8bmctbWlhbS1hZGRvbi1saW5rICpuZ0lmPVwicmVjaXBlPy5zcG9uc29ycz8ubGVuZ3RoID4gMCB8fCByZWNpcGUuaW5mb3JtYXRpb25hbFNlbnRlbmNlXCJcbiAgICAgIFtyZWNpcGVdPSdyZWNpcGUnIChzaG93QWRkb24pPSd0b2dnbGVBZGRvbigpJz48L25nLW1pYW0tYWRkb24tbGluaz5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhaXNNb2JpbGUgZWxzZSBtb2JpbGVDb250YWluZXJcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JvdHRvbV9fY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JvdHRvbV9fY29udGFpbmVyX19pbmdyZWRpZW50c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JvdHRvbV9fY29udGFpbmVyX19oZWFkZXJcIj5cbiAgICAgICAgSW5ncsOpZGllbnRzXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fcm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fY291bnRlclwiPlxuICAgICAgICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXQgW2NvdW50ZXJdPVwicmVjaXBlPy5tb2RpZmllZEd1ZXN0cyB8fCByZWNpcGUuZ3Vlc3RzXCIgKGNvdW50ZXJDaGFuZ2UpPVwidXBkYXRlR3Vlc3RzKCRldmVudClcIj5cbiAgICAgICAgICA8L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19jb3VudGVyX19wcmludFwiPlBvdXIge3tyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzfX1cbiAgICAgICAgICAgIHBlcnNvbm5lczwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd19fcXR5XCI+UXVhbnRpdMOpPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX2xpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dcIiBbbmdDbGFzc109XCJ7J2NoZWNrZWQnOiBpbmdyZWRpZW50c0NoZWNrZWRbaV19XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaW5ncmVkaWVudCBvZiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHMsIGxldCBpID0gaW5kZXggXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImluZ3JlZGllbnRzUGljdHVyZXNcIj5cbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fcm93X19waWN0dXJlXCIgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShpbmdyZWRpZW50KVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+IHt7IGluZ3JlZGllbnQubmFtZSB8IGNhcGl0YWxpemVGaXJzdExldHRlcn19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dfX3F0eVwiPiB7eyBpbmdyZWRpZW50LnF0eSB8IHJlYWRhYmxlRmxvYXROdW1iZXIgOlxuICAgICAgICAgICAgaW5ncmVkaWVudC51bml0IH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JvdHRvbV9fY29udGFpbmVyX19zdGVwc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2JvdHRvbV9fY29udGFpbmVyX19oZWFkZXJcIj5cbiAgICAgICAgUHLDqXBhcmF0aW9uXG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdGVwc19fbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19fc3RlcHNfX2xpc3RfX3BhbmVsXCIgKm5nRm9yPVwibGV0IHN0ZXAgb2YgcmVjaXBlLnN0ZXBzOyBsZXQgaSA9IGluZGV4O1wiXG4gICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUFjdGl2ZVN0ZXAoaSlcIiBbY2xhc3MuYWN0aXZlXT1cImkgPT09IGFjdGl2ZVN0ZXBcIlxuICAgICAgICAgIFtjbGFzcy5taWFtLXJlY2lwZS1kZXRhaWxzX19wYW5lbF9fZG9uZV09XCJpIDwgYWN0aXZlU3RlcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19wYW5lbF9faWR4XCI+PHN0cm9uZz57eyBpICsgMSB9fTwvc3Ryb25nPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19wYW5lbF9fdGV4dFwiPnt7c3RlcD8uYXR0cmlidXRlcz8uZGVzY3JpcHRpb259fTwvZGl2PlxuICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19wYW5lbF9fY2hlY2tJY29uXCIgKm5nSWY9XCJpIDw9IGFjdGl2ZVN0ZXBcIiBbaGVpZ2h0XT0nMTYnIFt3aWR0aF09JzE2J1xuICAgICAgICAgICAgW2ljb25OYW1lXT0naWNvbi5DaGVja0NpcmNsZUZpbGwnIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3Itc2Vjb25kYXJ5KVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNtb2JpbGVDb250YWluZXIgPlxuICAgIDxkaXYgI21vYmlsZUNvbnRhaW5lclRvcCBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX21vYmlsZV9fY29udGFpbmVyXCI+XG4gICAgICA8ZGl2ICBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX21vYmlsZV9faGVhZGVyXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1zZWNvbmRhcnlcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZScgOiBzaG93SW5ncmVkaWVudH1cIiAoY2xpY2spPVwidG9nZ2xlU2hvd0luZ3JlZGllbnQodHJ1ZSk7IG1vYmlsZUNvbnRhaW5lclRvcC5zY3JvbGxJbnRvVmlldygpXCI+SW5ncmVkaWVudHM8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm0tYnV0dG9uLXNlY29uZGFyeVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJyA6ICFzaG93SW5ncmVkaWVudH1cIiAoY2xpY2spPVwidG9nZ2xlU2hvd0luZ3JlZGllbnQoZmFsc2UpOyBtb2JpbGVDb250YWluZXJUb3Auc2Nyb2xsSW50b1ZpZXcoKVwiPlByw6lwYXJhdGlvbjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICAqbmdJZj1cInNob3dJbmdyZWRpZW50IGVsc2Ugc3RlcHNDb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19jb3VudGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXQgW2NvdW50ZXJdPVwicmVjaXBlPy5tb2RpZmllZEd1ZXN0c1wiIChjb3VudGVyQ2hhbmdlKT1cInVwZGF0ZUd1ZXN0cygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDwvbmctbWlhbS1jb3VudGVyLWlucHV0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19jb3VudGVyX19wcmludFwiPlBvdXIge3tyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzfX1cbiAgICAgICAgICAgICAgICBwZXJzb25uZXM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd19fcXR5XCI+UXVhbnRpdMOpPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmdyZWRpZW50c19fbGlzdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZ3JlZGllbnRzX19yb3dcIiBbbmdDbGFzc109XCJ7J2NoZWNrZWQnOiBpbmdyZWRpZW50c0NoZWNrZWRbaV19XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGluZ3JlZGllbnQgb2YgcmVjaXBlPy5tb2RpZmllZEluZ3JlZGllbnRzLCBsZXQgaSA9IGluZGV4IFwiPlxuICAgICAgICAgICAgICA8ZGl2PiB7eyBpbmdyZWRpZW50Lm5hbWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJ9fTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5ncmVkaWVudHNfX3Jvd19fcXR5XCI+IHt7IGluZ3JlZGllbnQucXR5IHwgcmVhZGFibGVGbG9hdE51bWJlciA6XG4gICAgICAgICAgICAgICAgaW5ncmVkaWVudC51bml0IH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICA8bmctdGVtcGxhdGUgI3N0ZXBzQ29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3N0ZXBzX19saXN0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19zdGVwc19fbGlzdF9fcGFuZWxcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiByZWNpcGUuc3RlcHM7IGxldCBpID0gaW5kZXg7XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQWN0aXZlU3RlcChpKVwiIFtjbGFzcy5hY3RpdmVdPVwiaSA9PT0gYWN0aXZlU3RlcFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19kb25lXT1cImkgPCBhY3RpdmVTdGVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19pZHhcIj48c3Ryb25nPnt7IGkgKyAxIH19PC9zdHJvbmc+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX190ZXh0XCI+e3tzdGVwPy5hdHRyaWJ1dGVzPy5kZXNjcmlwdGlvbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX3BhbmVsX19jaGVja0ljb25cIiAqbmdJZj1cImkgPD0gYWN0aXZlU3RlcFwiIFtoZWlnaHRdPScxNicgW3dpZHRoXT0nMTYnXG4gICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPSdpY29uLkNoZWNrQ2lyY2xlRmlsbCcgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1zZWNvbmRhcnkpXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19ib3R0b21fX2NvbnRhaW5lcl9fYWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWRldGFpbHNfX2luZm9zX19wcmljZV9fd3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cInJlY2lwZSAmJiBkaXNwbGF5UHJpY2luZ1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtZGV0YWlsc19faW5mb3NfX3ByaWNlXCI+XG4gICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwicHJldmlld0FsbG93ZWRcIiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1kZXRhaWxzX19pbmZvc19fYWN0aW9uIG0tYnV0dG9uLWZhYi1wcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrUHJpbWFyeSgpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW4tYmFza2V0JzogKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSwgJ2xvYWRpbmcnOiBhZGRCdXR0b25Mb2FkaW5nfVwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7eyhncm9jZXJpZXNMaXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlPy5pZCkgfCBhc3luYykgPyAnVm9pciBsZSBkw6l0YWlsJyA6ICdTw6lsZWN0aW9ubmVyIGNlIHJlcGFzJ319XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiAqbmdJZj1cIiFhZGRCdXR0b25Mb2FkaW5nIGVsc2UgYWRkTG9hZGVyXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiIHByaW1hcnlDb2xvcj0nI2ZmZidcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiKGdyb2Nlcmllc0xpc3RzU2VydmljZS5yZWNpcGVJc0luTGlzdChyZWNpcGU/LmlkKSB8IGFzeW5jKSA/IGljb24uQ2hlY2tMaXN0ICA6aWNvbi5DYXJ0XCI+XG4gICAgICAgIDwvbmctbWlhbS1pY29uPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2FkZExvYWRlcj5cbiAgICAgICAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNhZGRvbj5cbiAgPG5nLW1pYW0tcmVjaXBlLWFkZG9uIFtyZWNpcGVdPSdyZWNpcGUnIChoaWRlQWRkb24pPVwidG9nZ2xlQWRkb24oKVwiPjwvbmctbWlhbS1yZWNpcGUtYWRkb24+XG48L25nLXRlbXBsYXRlPiJdfQ==