ng-easycommerce 0.0.688 → 0.0.689

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.
Files changed (55) hide show
  1. package/README.md +13 -0
  2. package/assets/docs/SEO.md +174 -0
  3. package/bundles/ng-easycommerce.umd.js +859 -558
  4. package/bundles/ng-easycommerce.umd.js.map +1 -1
  5. package/bundles/ng-easycommerce.umd.min.js +1 -1
  6. package/bundles/ng-easycommerce.umd.min.js.map +1 -1
  7. package/esm2015/lib/ec-component/auth-ec/auth-ec.component.js +31 -3
  8. package/esm2015/lib/ec-component/auth-ec/confirm-account-ec/confirm-account-ec.component.js +14 -3
  9. package/esm2015/lib/ec-component/auth-ec/forgot-password-ec/forgot-password-ec.component.js +14 -3
  10. package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +17 -3
  11. package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +17 -3
  12. package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +3 -3
  13. package/esm2015/lib/ec-component/collection-ec/collection-ec.component.js +36 -3
  14. package/esm2015/lib/ec-component/home-ec/home-ec.component.js +14 -3
  15. package/esm2015/lib/ec-component/password-reset-ec/password-reset-ec.component.js +14 -3
  16. package/esm2015/lib/ec-component/product-detail-ec/product-detail-ec.component.js +17 -12
  17. package/esm2015/lib/ec-component/section-container-ec/section-container-ec.component.js +45 -4
  18. package/esm2015/lib/ec-directive/add-action-redirect.directive.js +35 -13
  19. package/esm2015/lib/ec-directive/product-off.directive.js +2 -2
  20. package/esm2015/lib/services/seo.service.js +112 -0
  21. package/esm2015/public-api.js +2 -1
  22. package/esm5/lib/ec-component/auth-ec/auth-ec.component.js +31 -3
  23. package/esm5/lib/ec-component/auth-ec/confirm-account-ec/confirm-account-ec.component.js +14 -3
  24. package/esm5/lib/ec-component/auth-ec/forgot-password-ec/forgot-password-ec.component.js +14 -3
  25. package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +17 -3
  26. package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +17 -3
  27. package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +3 -3
  28. package/esm5/lib/ec-component/collection-ec/collection-ec.component.js +36 -3
  29. package/esm5/lib/ec-component/home-ec/home-ec.component.js +14 -3
  30. package/esm5/lib/ec-component/password-reset-ec/password-reset-ec.component.js +14 -3
  31. package/esm5/lib/ec-component/product-detail-ec/product-detail-ec.component.js +17 -12
  32. package/esm5/lib/ec-component/section-container-ec/section-container-ec.component.js +45 -4
  33. package/esm5/lib/ec-directive/add-action-redirect.directive.js +35 -13
  34. package/esm5/lib/ec-directive/product-off.directive.js +2 -2
  35. package/esm5/lib/services/seo.service.js +116 -0
  36. package/esm5/public-api.js +2 -1
  37. package/fesm2015/ng-easycommerce.js +855 -559
  38. package/fesm2015/ng-easycommerce.js.map +1 -1
  39. package/fesm5/ng-easycommerce.js +860 -560
  40. package/fesm5/ng-easycommerce.js.map +1 -1
  41. package/lib/ec-component/auth-ec/auth-ec.component.d.ts +4 -1
  42. package/lib/ec-component/auth-ec/confirm-account-ec/confirm-account-ec.component.d.ts +3 -1
  43. package/lib/ec-component/auth-ec/forgot-password-ec/forgot-password-ec.component.d.ts +3 -1
  44. package/lib/ec-component/cart-ec/cart-ec.component.d.ts +4 -1
  45. package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +4 -1
  46. package/lib/ec-component/collection-ec/collection-ec.component.d.ts +5 -1
  47. package/lib/ec-component/home-ec/home-ec.component.d.ts +3 -1
  48. package/lib/ec-component/password-reset-ec/password-reset-ec.component.d.ts +3 -1
  49. package/lib/ec-component/product-detail-ec/product-detail-ec.component.d.ts +3 -3
  50. package/lib/ec-component/section-container-ec/section-container-ec.component.d.ts +7 -1
  51. package/lib/ec-directive/add-action-redirect.directive.d.ts +1 -0
  52. package/lib/services/seo.service.d.ts +16 -0
  53. package/ng-easycommerce.metadata.json +1 -1
  54. package/package.json +1 -1
  55. package/public-api.d.ts +1 -0
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Component, Input } from '@angular/core';
8
+ import { SeoService } from '../../services/seo.service';
8
9
  import { ActivatedRoute } from '@angular/router';
9
10
  // import { Constants, Filter, OptionsService, Product, ProductsService } from 'ng-easycommerce';
10
11
  import { combineLatest } from 'rxjs';
@@ -18,7 +19,7 @@ import { OptionsService } from '../../services/options.service';
18
19
  import { ParametersService } from '../../services/parameters.service';
19
20
  import { ProductsService } from '../../services/products/products.service';
20
21
  let CollectionEcComponent = class CollectionEcComponent extends ComponentHelper {
21
- constructor(productsService, paramsSrv, activeRoute, optionsService, authService, analyticsService, cartService, consts, filtersService) {
22
+ constructor(productsService, paramsSrv, activeRoute, optionsService, authService, analyticsService, cartService, consts, filtersService, seo) {
22
23
  super();
23
24
  this.productsService = productsService;
24
25
  this.paramsSrv = paramsSrv;
@@ -29,6 +30,7 @@ let CollectionEcComponent = class CollectionEcComponent extends ComponentHelper
29
30
  this.cartService = cartService;
30
31
  this.consts = consts;
31
32
  this.filtersService = filtersService;
33
+ this.seo = seo;
32
34
  this.filters = [];
33
35
  this.filtersConfig = { filters: [] };
34
36
  this.finished = false;
@@ -103,6 +105,35 @@ let CollectionEcComponent = class CollectionEcComponent extends ComponentHelper
103
105
  this.getObjectWithVariant = () => {
104
106
  return this.consts.getParamsProductsWithUniqueVariant();
105
107
  };
108
+ this.normalizeSeoBreadcrumbTitle = (value) => {
109
+ var _a, _b, _c, _d, _e, _f;
110
+ if (!value) {
111
+ return '';
112
+ }
113
+ if (typeof value === 'string') {
114
+ return value.trim();
115
+ }
116
+ return (_f = (_d = (_b = (_a = value) === null || _a === void 0 ? void 0 : _a.title, (_b !== null && _b !== void 0 ? _b : (_c = value) === null || _c === void 0 ? void 0 : _c.name)), (_d !== null && _d !== void 0 ? _d : (_e = value) === null || _e === void 0 ? void 0 : _e.label)), (_f !== null && _f !== void 0 ? _f : '')).toString().trim();
117
+ };
118
+ this.updateCollectionSeo = () => {
119
+ var _a;
120
+ const siteName = this.seo.getSiteName();
121
+ const breadcrumbTitle = this.normalizeSeoBreadcrumbTitle(((_a = this.breadcrumb) === null || _a === void 0 ? void 0 : _a.length) ? this.breadcrumb[this.breadcrumb.length - 1] : null);
122
+ const searchTitle = typeof window !== 'undefined' ? (new URLSearchParams(window.location.search).get('search') || '').trim() : '';
123
+ const titlePrefix = breadcrumbTitle || (searchTitle ? `Resultados para "${searchTitle}"` : 'Productos');
124
+ const description = breadcrumbTitle
125
+ ? `Catálogo de ${breadcrumbTitle.toLowerCase()} en ${siteName}.`
126
+ : (searchTitle
127
+ ? `Listado de productos para la búsqueda "${searchTitle}" en ${siteName}.`
128
+ : `Catálogo de productos de ${siteName}.`);
129
+ this.seo.setTitle(`${titlePrefix} | ${siteName}`);
130
+ this.seo.setDescription(description);
131
+ this.seo.setOgType('website');
132
+ this.seo.setRobots('index, follow');
133
+ if (typeof window !== 'undefined') {
134
+ this.seo.setCanonical(window.location.href);
135
+ }
136
+ };
106
137
  this.paramsSrv.parameters.subscribe(param => this.params = param);
107
138
  this.defaultFilters = this.consts.getDefaultFilters();
108
139
  this.filtersConfig.filters = this.consts.getFilterConfig();
@@ -173,6 +204,7 @@ let CollectionEcComponent = class CollectionEcComponent extends ComponentHelper
173
204
  this.breadcrumb = this.optionsService.getBreadcrumbByFilters(res);
174
205
  this.filters = this.getSpecificFilters(res, this.filtersConfig.filters);
175
206
  this.filters_top = this.getSpecificFilters(res, ['sort']);
207
+ this.updateCollectionSeo();
176
208
  });
177
209
  this.productsService.finished().subscribe(res => this.finished = res);
178
210
  }
@@ -195,7 +227,8 @@ CollectionEcComponent.ctorParameters = () => [
195
227
  { type: AnalyticsService },
196
228
  { type: CartService },
197
229
  { type: Constants },
198
- { type: FiltersService }
230
+ { type: FiltersService },
231
+ { type: SeoService }
199
232
  ];
200
233
  __decorate([
201
234
  Input()
@@ -217,4 +250,4 @@ CollectionEcComponent = __decorate([
217
250
  })
218
251
  ], CollectionEcComponent);
219
252
  export { CollectionEcComponent };
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NvbGxlY3Rpb24tZWMvY29sbGVjdGlvbi1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxpR0FBaUc7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUk5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBUTNFLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsZUFBZTtJQXNCdEQsWUFBbUIsZUFBZ0MsRUFDckMsU0FBNEIsRUFDNUIsV0FBMkIsRUFDM0IsY0FBOEIsRUFDakMsV0FBd0IsRUFDdkIsZ0JBQWtDLEVBQ25DLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLGNBQThCO1FBQ3JDLEtBQUss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LENBQUM7U0FDeEI7SUFDTCxDQUFDO0NBd0JKLENBQUE7O1lBaEt1QyxlQUFlO1lBQzFCLGlCQUFpQjtZQUNmLGNBQWM7WUFDWCxjQUFjO1lBQ3BCLFdBQVc7WUFDTCxnQkFBZ0I7WUFDdEIsV0FBVztZQUNoQixTQUFTO1lBQ0QsY0FBYzs7QUFiaEM7SUFBUixLQUFLLEVBQUU7bURBQU07QUFDTDtJQUFSLEtBQUssRUFBRTtvREFBTztBQUNOO0lBQVIsS0FBSyxFQUFFO3dFQUE0QztBQUMzQztJQUFSLEtBQUssRUFBRTs2REFBd0M7QUFwQnZDLHFCQUFxQjtJQUxqQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsbUJBQW1CO1FBQzdCLDZSQUE2Qzs7S0FFaEQsQ0FBQztHQUNXLHFCQUFxQixDQXNMakM7U0F0TFkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmlsdGVyRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmlsdGVyJztcbi8vIGltcG9ydCB7IENvbnN0YW50cywgRmlsdGVyLCBPcHRpb25zU2VydmljZSwgUHJvZHVjdCwgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnbmctZWFzeWNvbW1lcmNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9GaWx0ZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyQ29uZmlnLCBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXInO1xuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3RzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNvbGxlY3Rpb24tZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9uLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xsZWN0aW9uLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbkVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBmaWx0ZXJzX3RvcDogRmlsdGVyW107XG4gICAgcHJpdmF0ZSBkZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdO1xuICAgIHByaXZhdGUgZmlsdGVyc0NvbmZpZzogRmlsdGVyQ29uZmlnID0ge2ZpbHRlcnM6W119O1xuICAgIC8vIHB1YmxpYyBvcHRpb25zRmlsdGVyczogWydhbGwnXTtcbiAgICBwdWJsaWMgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbiAgICBwdWJsaWMgZmluaXNoZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc3VzY3JpcGNpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGJyZWFkY3J1bWI6IHN0cmluZ1tdID0gW11cbiAgICBwdWJsaWMgaXNDb2xsZWN0aW9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnk7XG5cbiAgICBwdWJsaWMgZmlsdGVySW5WaWV3OkZpbHRlckVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSB0eXBlO1xuICAgIEBJbnB1dCgpIHZhbHVlO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBvcHRpb25zRmlsdGVyczogRmlsdGVyVHlwZVtdID0gWydhbGwnXTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHBhcmFtc1NydjogUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwdWJsaWMgZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucGFyYW1zU3J2LnBhcmFtZXRlcnMuc3Vic2NyaWJlKHBhcmFtID0+IHRoaXMucGFyYW1zID0gcGFyYW0pXG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlcnMgPSB0aGlzLmNvbnN0cy5nZXREZWZhdWx0RmlsdGVycygpXG4gICAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5maWx0ZXJzID0gdGhpcy5jb25zdHMuZ2V0RmlsdGVyQ29uZmlnKClcbiAgICAgICAgdGhpcy5wcm9kdWN0c1NlcnZpY2UuZmlsdGVyc0luVmlldyQuc3Vic2NyaWJlKCByZXMgPT4gdGhpcy5maWx0ZXJJblZpZXcgPSByZXMpXG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGwoMCwgMCk7XG4gICAgICAgIHRoaXMucHJvZHVjdHMgPSBbXTtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG4gICAgICAgIHRoaXMuZ2V0UHJvZHVjdHNBbmRTdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgZ2V0UHJvZHVjdHNBbmRTdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuYWN0aXZlUm91dGUucGFyYW1zLCB0aGlzLm9wdGlvbnNTZXJ2aWNlLnJlYWR5LCB0aGlzLmFjdGl2ZVJvdXRlLnF1ZXJ5UGFyYW1zXSkuc3Vic2NyaWJlKChbcGFyYW1zLCByZWFkeSwgcXVlcnlQYXJhbXNdKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVhZHkucmVhZHlBbGwpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FtYmlvID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJhbXNbJ3R5cGUnXSB8fCAhcGFyYW1zWyd2YWx1ZSddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFByb2R1Y3RzRm9yRmlsdGVyKHsgbGF0ZXN0OiB0cnVlLCBsaW1pdDogMTAgfSwgdGhpcy5vcHRpb25zRmlsdGVycywgcXVlcnlQYXJhbXMuc2VhcmNoLCB0aGlzLmRlZmF1bHRGaWx0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFByb2R1Y3RzRm9yRmlsdGVyKHsgdHlwZTogcGFyYW1zLnR5cGUsIHZhbHVlOiBwYXJhbXMudmFsdWUgfSwgdGhpcy5vcHRpb25zRmlsdGVycywgcXVlcnlQYXJhbXMuc2VhcmNoLCAgdGhpcy5kZWZhdWx0RmlsdGVycyk7XG4gICAgICAgICAgICAgICAgICAgIGNhbWJpbyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9IHBhcmFtc1sndHlwZSddO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gcGFyYW1zWyd2YWx1ZSddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkgeyB0aGlzLnN1c2NyaXBjaW9uLnVuc3Vic2NyaWJlKCk7IH0gY2F0Y2ggKGUpIHsgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1c2NyaXBjaW9uID0gdGhpcy5wcm9kdWN0c1NlcnZpY2UucHJvZHVjdHMkLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaGVkID0gdGhpcy5wcm9kdWN0c1NlcnZpY2UuaXNGaW5pc2hlZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW1iaW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KHJlcywgdGhpcy5nZXRPYmplY3RXaXRoVmFyaWFudCgpICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyc0luVmlldygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1iaW8gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldFByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQocmVzLCB0aGlzLmdldE9iamVjdFdpdGhWYXJpYW50KCkgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMucHVzaCguLi5yZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyc0luVmlldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW1iaW8pIHsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gcmVzOyBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW5WaWV3KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1iaW8gPSBmYWxzZTsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzLnB1c2goLi4ucmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzSW5WaWV3KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3ZpZXdfaXRlbV9saXN0JywgeyBwcm9kdWN0czogdGhpcy5wcm9kdWN0cywgaXRlbV9saXN0X25hbWU6ICdDb2xsZWN0aW9uJywgaXRlbV9saXN0X2lkOiAwIH0pXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmZpbHRlcnMkLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdldEJyZWFkY3J1bWJCeUZpbHRlcnMocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gdGhpcy5nZXRTcGVjaWZpY0ZpbHRlcnMocmVzLCB0aGlzLmZpbHRlcnNDb25maWcuZmlsdGVycyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc190b3AgPSB0aGlzLmdldFNwZWNpZmljRmlsdGVycyhyZXMsIFsnc29ydCddKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzU2VydmljZS5maW5pc2hlZCgpLnN1YnNjcmliZShyZXMgPT4gdGhpcy5maW5pc2hlZCA9IHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlYWxpemEgdW4gc29ydCBkZSBwcm9kdWN0b3MgcG9yIGVsIGNhbXBvIGRhdGVDcmVhdGUgZGUgbGEgdmFyaWFudGVcbiAgICAgKiBAcGFyYW0gYSBQcm9kdWN0byBhXG4gICAgICogQHBhcmFtIGIgUHJvZHVjdG8gYlxuICAgICAqIEBwYXJhbSB0eXBlIHNpIGVzIGBhc2NgIHwgYGRlc2NgXG4gICAgICogQHJldHVybnMge251bWJlcn0gKioxKiogcGFyYSBgdHJ1ZWAgfCAqKjAqKiBwYXJhIGBmYWxzZWBcbiAgICAgKi9cbiAgICBzb3J0UHJvZHVjdHMgPSAoYTphbnksIGI6YW55LCB0eXBlOnN0cmluZz0nYXNjJykgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBsZXQgdG9Db21wYXJlQSA9IGEudmFyaWFudHMgJiYgYS52YXJpYW50cy5sZW5ndGggPiAwID8gYS52YXJpYW50c1swXVsnZGF0ZUNyZWF0ZSddIDogbnVsbDtcbiAgICAgICAgbGV0IHRvQ29tcGFyZUIgPSBiLnZhcmlhbnRzICYmIGIudmFyaWFudHMubGVuZ3RoID4gMCA/IGIudmFyaWFudHNbMF1bJ2RhdGVDcmVhdGUnXSA6IG51bGw7XG5cbiAgICAgICAgaWYodG9Db21wYXJlQSAmJiB0b0NvbXBhcmVCKSB7XG4gICAgICAgICAgICBsZXQgZGF0ZUEgPSBuZXcgRGF0ZSh0b0NvbXBhcmVBKTtcbiAgICAgICAgICAgIGxldCBkYXRlQiA9IG5ldyBEYXRlKHRvQ29tcGFyZUIpO1xuXG4gICAgICAgICAgICBzd2l0Y2godHlwZSl7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGVzYyc6IHJldHVybiAoZGF0ZUEgPj0gZGF0ZUIpID8gMSA6IDA7IGJyZWFrXG4gICAgICAgICAgICAgICAgY2FzZSAnYXNjJzogcmV0dXJuIChkYXRlQSA8PSBkYXRlQikgPyAxIDogMDsgYnJlYWtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gMFxuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gYXBsaWNhIGVsIGZpbHRybyBlbiBsYSB2aXN0YS4gXG4gICAgICovXG4gICAgYXBwbHlGaWx0ZXJzSW5WaWV3ID0gKCkgPT4ge1xuICAgICAgIFxuICAgICAgICBpZiAodGhpcy5maWx0ZXJJblZpZXc/Lm5vVXJsKSB7XG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gdGhpcy5wcm9kdWN0cy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRQcm9kdWN0cyhhLGIsdGhpcy5maWx0ZXJJblZpZXcudmFsdWUpKVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID1mYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0U3BlY2lmaWNGaWx0ZXJzID0gKGZpbHRlcnM6IEZpbHRlcltdLCB0eXBlczogRmlsdGVyVHlwZVtdKTogRmlsdGVyW10gPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0X2ZpbHRlciA9IGZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnR5cGUoKSA9PSB0eXBlKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHRfZmlsdGVyKSByZXN1bHQucHVzaChyZXN1bHRfZmlsdGVyKTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMucHJvZHVjdHNTZXJ2aWNlLmlzV2FpdGluZygpICYmICF0aGlzLnByb2R1Y3RzU2VydmljZS5nZXROZXh0KCkpIHtcbiAgICAgICAgICAgIHRoaXMuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcmVQcm9kdWN0cyA9ICgpID0+IHRoaXMucHJvZHVjdHMubGVuZ3RoID4gMDtcbiAgICBpc1dhaXRpbmcgPSAoKSA9PiB0aGlzLnByb2R1Y3RzU2VydmljZS5pc1dhaXRpbmcoKTtcbiAgICBzZXRGaW5pc2hlZCA9ICgpID0+IHRoaXMuZmluaXNoZWQgPSB0cnVlO1xuXG5cbiAgICBjaGFuZ2VGaWx0ZXIgPSAoZSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29sbGVjdGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRBbGxQcm9kdWN0b3NUb0NhcnQgPSAocHJvZHVjdHMgPSBudWxsKSA9PiB7XG4gICAgICAgIGxldCBpdGVtcyA9IFtdO1xuICAgICAgICAocHJvZHVjdHMgfHwgdGhpcy5wcm9kdWN0cykubWFwKHByb2QgPT4gcHJvZC5wcm9kdWN0V2l0aFVuaXF1ZVZhcmlhbnQubWFwKHAgPT4gaXRlbXMucHVzaChwKSkpXG4gICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKHByb2QgPT4gcHJvZC5wcm9kdWN0VG9DYXJ0SXRlbSkubWFwKHByb2QgPT4gcHJvZC5wcm9kdWN0VG9DYXJ0SXRlbSApXG4gICAgICAgIGl0ZW1zPy5sZW5ndGggJiYgdGhpcy5jYXJ0U2VydmljZS5hZGRBbGxUb0NhcnQoaXRlbXMpXG4gICAgfVxuXG4gICAgZ2V0T2JqZWN0V2l0aFZhcmlhbnQgPSAoKTogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cy5nZXRQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KClcbiAgICB9IFxuXG59XG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2NvbGxlY3Rpb24tZWMvY29sbGVjdGlvbi1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsaUdBQWlHO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFJOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQVEzRSxJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFzQixTQUFRLGVBQWU7SUFzQnRELFlBQW1CLGVBQWdDLEVBQ3JDLFNBQTRCLEVBQzVCLFdBQTJCLEVBQzNCLGNBQThCLEVBQ2pDLFdBQXdCLEVBQ3ZCLGdCQUFrQyxFQUNu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LFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxtQkFBbUI7UUFDN0IsNlJBQTZDOztLQUVoRCxDQUFDO0dBQ1cscUJBQXFCLENBeU5qQztTQXpOWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VvLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmlsdGVyRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZmlsdGVyJztcbi8vIGltcG9ydCB7IENvbnN0YW50cywgRmlsdGVyLCBPcHRpb25zU2VydmljZSwgUHJvZHVjdCwgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnbmctZWFzeWNvbW1lcmNlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVycy9GaWx0ZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyQ29uZmlnLCBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9maWx0ZXInO1xuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcGFyYW1zSW50ZXJmYWNlcy9wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50JztcbmltcG9ydCB7IFByb2R1Y3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Byb2R1Y3QnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmlsdGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3RzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWNvbGxlY3Rpb24tZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9uLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xsZWN0aW9uLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvbkVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIHB1YmxpYyBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBmaWx0ZXJzX3RvcDogRmlsdGVyW107XG4gICAgcHJpdmF0ZSBkZWZhdWx0RmlsdGVyczogRGVmYXVsdEZpbHRlcltdO1xuICAgIHByaXZhdGUgZmlsdGVyc0NvbmZpZzogRmlsdGVyQ29uZmlnID0ge2ZpbHRlcnM6W119O1xuICAgIC8vIHB1YmxpYyBvcHRpb25zRmlsdGVyczogWydhbGwnXTtcbiAgICBwdWJsaWMgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbiAgICBwdWJsaWMgZmluaXNoZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc3VzY3JpcGNpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XG4gICAgcHVibGljIGJyZWFkY3J1bWI6IHN0cmluZ1tdID0gW11cbiAgICBwdWJsaWMgaXNDb2xsZWN0aW9uID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnk7XG5cbiAgICBwdWJsaWMgZmlsdGVySW5WaWV3OkZpbHRlckVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSB0eXBlO1xuICAgIEBJbnB1dCgpIHZhbHVlO1xuICAgIEBJbnB1dCgpIHByb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBvcHRpb25zRmlsdGVyczogRmlsdGVyVHlwZVtdID0gWydhbGwnXTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBwcm9kdWN0c1NlcnZpY2U6IFByb2R1Y3RzU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHBhcmFtc1NydjogUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmVSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByb3RlY3RlZCBvcHRpb25zU2VydmljZTogT3B0aW9uc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHVibGljIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwdWJsaWMgZmlsdGVyc1NlcnZpY2U6IEZpbHRlcnNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlbzogU2VvU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnBhcmFtc1Nydi5wYXJhbWV0ZXJzLnN1YnNjcmliZShwYXJhbSA9PiB0aGlzLnBhcmFtcyA9IHBhcmFtKVxuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzID0gdGhpcy5jb25zdHMuZ2V0RGVmYXVsdEZpbHRlcnMoKVxuICAgICAgICB0aGlzLmZpbHRlcnNDb25maWcuZmlsdGVycyA9IHRoaXMuY29uc3RzLmdldEZpbHRlckNvbmZpZygpXG4gICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmZpbHRlcnNJblZpZXckLnN1YnNjcmliZSggcmVzID0+IHRoaXMuZmlsdGVySW5WaWV3ID0gcmVzKVxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICB0aGlzLnByb2R1Y3RzID0gW107XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuICAgICAgICB0aGlzLmdldFByb2R1Y3RzQW5kU3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGdldFByb2R1Y3RzQW5kU3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGl2ZVJvdXRlLnBhcmFtcywgdGhpcy5vcHRpb25zU2VydmljZS5yZWFkeSwgdGhpcy5hY3RpdmVSb3V0ZS5xdWVyeVBhcmFtc10pLnN1YnNjcmliZSgoW3BhcmFtcywgcmVhZHksIHF1ZXJ5UGFyYW1zXSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlYWR5LnJlYWR5QWxsKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNhbWJpbyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICghcGFyYW1zWyd0eXBlJ10gfHwgIXBhcmFtc1sndmFsdWUnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0c0ZvckZpbHRlcih7IGxhdGVzdDogdHJ1ZSwgbGltaXQ6IDEwIH0sIHRoaXMub3B0aW9uc0ZpbHRlcnMsIHF1ZXJ5UGFyYW1zLnNlYXJjaCwgdGhpcy5kZWZhdWx0RmlsdGVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0c0ZvckZpbHRlcih7IHR5cGU6IHBhcmFtcy50eXBlLCB2YWx1ZTogcGFyYW1zLnZhbHVlIH0sIHRoaXMub3B0aW9uc0ZpbHRlcnMsIHF1ZXJ5UGFyYW1zLnNlYXJjaCwgIHRoaXMuZGVmYXVsdEZpbHRlcnMpO1xuICAgICAgICAgICAgICAgICAgICBjYW1iaW8gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPSBwYXJhbXNbJ3R5cGUnXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHBhcmFtc1sndmFsdWUnXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdHJ5IHsgdGhpcy5zdXNjcmlwY2lvbi51bnN1YnNjcmliZSgpOyB9IGNhdGNoIChlKSB7IH07XG4gICAgICAgICAgICAgICAgdGhpcy5zdXNjcmlwY2lvbiA9IHRoaXMucHJvZHVjdHNTZXJ2aWNlLnByb2R1Y3RzJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRoaXMucHJvZHVjdHNTZXJ2aWNlLmlzRmluaXNoZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FtYmlvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzID0gdGhpcy5wcm9kdWN0c1NlcnZpY2UuZ2V0UHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudChyZXMsIHRoaXMuZ2V0T2JqZWN0V2l0aFZhcmlhbnQoKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnNJblZpZXcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtYmlvID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB0aGlzLnByb2R1Y3RzU2VydmljZS5nZXRQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50KHJlcywgdGhpcy5nZXRPYmplY3RXaXRoVmFyaWFudCgpICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzLnB1c2goLi4ucmVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUZpbHRlcnNJblZpZXcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FtYmlvKSB7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cyA9IHJlczsgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyc0luVmlldygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FtYmlvID0gZmFsc2U7IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0cy5wdXNoKC4uLnJlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RmlsdGVyc0luVmlldygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCd2aWV3X2l0ZW1fbGlzdCcsIHsgcHJvZHVjdHM6IHRoaXMucHJvZHVjdHMsIGl0ZW1fbGlzdF9uYW1lOiAnQ29sbGVjdGlvbicsIGl0ZW1fbGlzdF9pZDogMCB9KVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RzU2VydmljZS5maWx0ZXJzJC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iID0gdGhpcy5vcHRpb25zU2VydmljZS5nZXRCcmVhZGNydW1iQnlGaWx0ZXJzKHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHRoaXMuZ2V0U3BlY2lmaWNGaWx0ZXJzKHJlcywgdGhpcy5maWx0ZXJzQ29uZmlnLmZpbHRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNfdG9wID0gdGhpcy5nZXRTcGVjaWZpY0ZpbHRlcnMocmVzLCBbJ3NvcnQnXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sbGVjdGlvblNlbygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdHNTZXJ2aWNlLmZpbmlzaGVkKCkuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmZpbmlzaGVkID0gcmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVhbGl6YSB1biBzb3J0IGRlIHByb2R1Y3RvcyBwb3IgZWwgY2FtcG8gZGF0ZUNyZWF0ZSBkZSBsYSB2YXJpYW50ZVxuICAgICAqIEBwYXJhbSBhIFByb2R1Y3RvIGFcbiAgICAgKiBAcGFyYW0gYiBQcm9kdWN0byBiXG4gICAgICogQHBhcmFtIHR5cGUgc2kgZXMgYGFzY2AgfCBgZGVzY2BcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSAqKjEqKiBwYXJhIGB0cnVlYCB8ICoqMCoqIHBhcmEgYGZhbHNlYFxuICAgICAqL1xuICAgIHNvcnRQcm9kdWN0cyA9IChhOmFueSwgYjphbnksIHR5cGU6c3RyaW5nPSdhc2MnKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGxldCB0b0NvbXBhcmVBID0gYS52YXJpYW50cyAmJiBhLnZhcmlhbnRzLmxlbmd0aCA+IDAgPyBhLnZhcmlhbnRzWzBdWydkYXRlQ3JlYXRlJ10gOiBudWxsO1xuICAgICAgICBsZXQgdG9Db21wYXJlQiA9IGIudmFyaWFudHMgJiYgYi52YXJpYW50cy5sZW5ndGggPiAwID8gYi52YXJpYW50c1swXVsnZGF0ZUNyZWF0ZSddIDogbnVsbDtcblxuICAgICAgICBpZih0b0NvbXBhcmVBICYmIHRvQ29tcGFyZUIpIHtcbiAgICAgICAgICAgIGxldCBkYXRlQSA9IG5ldyBEYXRlKHRvQ29tcGFyZUEpO1xuICAgICAgICAgICAgbGV0IGRhdGVCID0gbmV3IERhdGUodG9Db21wYXJlQik7XG5cbiAgICAgICAgICAgIHN3aXRjaCh0eXBlKXtcbiAgICAgICAgICAgICAgICBjYXNlICdkZXNjJzogcmV0dXJuIChkYXRlQSA+PSBkYXRlQikgPyAxIDogMDsgYnJlYWtcbiAgICAgICAgICAgICAgICBjYXNlICdhc2MnOiByZXR1cm4gKGRhdGVBIDw9IGRhdGVCKSA/IDEgOiAwOyBicmVha1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBhcGxpY2EgZWwgZmlsdHJvIGVuIGxhIHZpc3RhLiBcbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcnNJblZpZXcgPSAoKSA9PiB7XG4gICAgICAgXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckluVmlldz8ubm9VcmwpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzLnNvcnQoKGEsIGIpID0+IHRoaXMuc29ydFByb2R1Y3RzKGEsYix0aGlzLmZpbHRlckluVmlldy52YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPWZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTcGVjaWZpY0ZpbHRlcnMgPSAoZmlsdGVyczogRmlsdGVyW10sIHR5cGVzOiBGaWx0ZXJUeXBlW10pOiBGaWx0ZXJbXSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgdHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHRfZmlsdGVyID0gZmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIudHlwZSgpID09IHR5cGUpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdF9maWx0ZXIpIHJlc3VsdC5wdXNoKHJlc3VsdF9maWx0ZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgb25TY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGlmICghdGhpcy5wcm9kdWN0c1NlcnZpY2UuaXNXYWl0aW5nKCkgJiYgIXRoaXMucHJvZHVjdHNTZXJ2aWNlLmdldE5leHQoKSkge1xuICAgICAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFyZVByb2R1Y3RzID0gKCkgPT4gdGhpcy5wcm9kdWN0cy5sZW5ndGggPiAwO1xuICAgIGlzV2FpdGluZyA9ICgpID0+IHRoaXMucHJvZHVjdHNTZXJ2aWNlLmlzV2FpdGluZygpO1xuICAgIHNldEZpbmlzaGVkID0gKCkgPT4gdGhpcy5maW5pc2hlZCA9IHRydWU7XG5cblxuICAgIGNoYW5nZUZpbHRlciA9IChlKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNDb2xsZWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZEFsbFByb2R1Y3Rvc1RvQ2FydCA9IChwcm9kdWN0cyA9IG51bGwpID0+IHtcbiAgICAgICAgbGV0IGl0ZW1zID0gW107XG4gICAgICAgIChwcm9kdWN0cyB8fCB0aGlzLnByb2R1Y3RzKS5tYXAocHJvZCA9PiBwcm9kLnByb2R1Y3RXaXRoVW5pcXVlVmFyaWFudC5tYXAocCA9PiBpdGVtcy5wdXNoKHApKSlcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIocHJvZCA9PiBwcm9kLnByb2R1Y3RUb0NhcnRJdGVtKS5tYXAocHJvZCA9PiBwcm9kLnByb2R1Y3RUb0NhcnRJdGVtIClcbiAgICAgICAgaXRlbXM/Lmxlbmd0aCAmJiB0aGlzLmNhcnRTZXJ2aWNlLmFkZEFsbFRvQ2FydChpdGVtcylcbiAgICB9XG5cbiAgICBnZXRPYmplY3RXaXRoVmFyaWFudCA9ICgpOiBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RzLmdldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQoKVxuICAgIH0gXG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVNlb0JyZWFkY3J1bWJUaXRsZSA9ICh2YWx1ZTogYW55KTogc3RyaW5nID0+IHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKHZhbHVlPy50aXRsZSA/PyB2YWx1ZT8ubmFtZSA/PyB2YWx1ZT8ubGFiZWwgPz8gJycpLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ29sbGVjdGlvblNlbyA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2l0ZU5hbWUgPSB0aGlzLnNlby5nZXRTaXRlTmFtZSgpO1xuICAgICAgICBjb25zdCBicmVhZGNydW1iVGl0bGUgPSB0aGlzLm5vcm1hbGl6ZVNlb0JyZWFkY3J1bWJUaXRsZSh0aGlzLmJyZWFkY3J1bWI/Lmxlbmd0aCA/IHRoaXMuYnJlYWRjcnVtYlt0aGlzLmJyZWFkY3J1bWIubGVuZ3RoIC0gMV0gOiBudWxsKTtcbiAgICAgICAgY29uc3Qgc2VhcmNoVGl0bGUgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IChuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmdldCgnc2VhcmNoJykgfHwgJycpLnRyaW0oKSA6ICcnO1xuICAgICAgICBjb25zdCB0aXRsZVByZWZpeCA9IGJyZWFkY3J1bWJUaXRsZSB8fCAoc2VhcmNoVGl0bGUgPyBgUmVzdWx0YWRvcyBwYXJhIFwiJHtzZWFyY2hUaXRsZX1cImAgOiAnUHJvZHVjdG9zJyk7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYnJlYWRjcnVtYlRpdGxlXG4gICAgICAgICAgICA/IGBDYXTDoWxvZ28gZGUgJHticmVhZGNydW1iVGl0bGUudG9Mb3dlckNhc2UoKX0gZW4gJHtzaXRlTmFtZX0uYFxuICAgICAgICAgICAgOiAoc2VhcmNoVGl0bGVcbiAgICAgICAgICAgICAgICA/IGBMaXN0YWRvIGRlIHByb2R1Y3RvcyBwYXJhIGxhIGLDunNxdWVkYSBcIiR7c2VhcmNoVGl0bGV9XCIgZW4gJHtzaXRlTmFtZX0uYFxuICAgICAgICAgICAgICAgIDogYENhdMOhbG9nbyBkZSBwcm9kdWN0b3MgZGUgJHtzaXRlTmFtZX0uYCk7XG5cbiAgICAgICAgdGhpcy5zZW8uc2V0VGl0bGUoYCR7dGl0bGVQcmVmaXh9IHwgJHtzaXRlTmFtZX1gKTtcbiAgICAgICAgdGhpcy5zZW8uc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLnNlby5zZXRPZ1R5cGUoJ3dlYnNpdGUnKTtcbiAgICAgICAgdGhpcy5zZW8uc2V0Um9ib3RzKCdpbmRleCwgZm9sbG93Jyk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnNlby5zZXRDYW5vbmljYWwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
@@ -5,26 +5,37 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Component } from '@angular/core';
8
+ import { SeoService } from '../../services/seo.service';
8
9
  import { ComponentHelper } from '../../classes/component-helper';
9
10
  import { Constants } from '../../core.consts';
10
11
  import { BlocksService } from '../../services/blocks/blocks.service';
11
12
  let HomeEcComponent = class HomeEcComponent extends ComponentHelper {
12
- constructor(blocksService, consts) {
13
+ constructor(blocksService, consts, seo) {
13
14
  super();
14
15
  this.blocksService = blocksService;
15
16
  this.consts = consts;
17
+ this.seo = seo;
16
18
  this.getHTMLContent = (block) => block.translations[this.consts.getLocale()].content;
17
19
  this.noNewsletter = (block) => !block.code.includes('newsletter');
18
20
  this.ecOnConstruct();
19
21
  }
20
22
  ngOnInit() {
23
+ const siteName = this.seo.getSiteName();
24
+ this.seo.setTitle(`Home | ${siteName}`);
25
+ this.seo.setDescription('Catálogo de productos y marcas.');
26
+ this.seo.setOgType('website');
27
+ this.seo.setRobots('index, follow');
28
+ if (typeof window !== 'undefined') {
29
+ this.seo.setCanonical(window.location.href);
30
+ }
21
31
  this.blocksService.getBlocks('home');
22
32
  this.ecOnInit();
23
33
  }
24
34
  };
25
35
  HomeEcComponent.ctorParameters = () => [
26
36
  { type: BlocksService },
27
- { type: Constants }
37
+ { type: Constants },
38
+ { type: SeoService }
28
39
  ];
29
40
  HomeEcComponent = __decorate([
30
41
  Component({
@@ -34,4 +45,4 @@ HomeEcComponent = __decorate([
34
45
  })
35
46
  ], HomeEcComponent);
36
47
  export { HomeEcComponent };
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2hvbWUtZWMvaG9tZS1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVFyRSxJQUFhLGVBQWUsR0FBNUIsTUFBYSxlQUFnQixTQUFRLGVBQWU7SUFFL0MsWUFBbUIsYUFBNEIsRUFBWSxNQUFpQjtRQUN6RSxLQUFLLEVBQUUsQ0FBQztRQURRLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVksV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVc1RSxtQkFBYyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFFeEYsaUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQVgxRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVGLFFBQVE7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFFbEIsQ0FBQztDQUtMLENBQUE7O1lBZHNDLGFBQWE7WUFBb0IsU0FBUzs7QUFGcEUsZUFBZTtJQUwzQixTQUFTLENBQUM7UUFDTixRQUFRLEVBQUUsYUFBYTtRQUN2QixnRUFBdUM7O0tBRTNDLENBQUM7R0FDVyxlQUFlLENBZ0IzQjtTQWhCWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBJQmxvY2sgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Jsb2NrJztcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ibG9ja3MvYmxvY2tzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgICBzZWxlY3RvcjogJ2FwcC1ob21lLWVjJyxcbiAgICAgdGVtcGxhdGVVcmw6ICcuL2hvbWUtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFsnLi9ob21lLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSG9tZUVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYmxvY2tzU2VydmljZTogQmxvY2tzU2VydmljZSwgcHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgICB9XG5cbiAgICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgICAgdGhpcy5ibG9ja3NTZXJ2aWNlLmdldEJsb2NrcygnaG9tZScpO1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgICB9XG5cbiAgICAgZ2V0SFRNTENvbnRlbnQgPSAoYmxvY2s6IElCbG9jaykgPT4gYmxvY2sudHJhbnNsYXRpb25zW3RoaXMuY29uc3RzLmdldExvY2FsZSgpXS5jb250ZW50O1xuXG4gICAgIG5vTmV3c2xldHRlciA9IChibG9jaykgPT4gIWJsb2NrLmNvZGUuaW5jbHVkZXMoJ25ld3NsZXR0ZXInKTtcbn1cbiJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L2hvbWUtZWMvaG9tZS1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFRckUsSUFBYSxlQUFlLEdBQTVCLE1BQWEsZUFBZ0IsU0FBUSxlQUFlO0lBRS9DLFlBQW1CLGFBQTRCLEVBQVksTUFBaUIsRUFBWSxHQUFlO1FBQ3BHLEtBQUssRUFBRSxDQUFDO1FBRFEsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBWTtRQW1CdkcsbUJBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXhGLGlCQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFuQjFELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0lBRUYsUUFBUTtRQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUVsQixDQUFDO0NBS0wsQ0FBQTs7WUF0QnNDLGFBQWE7WUFBb0IsU0FBUztZQUFpQixVQUFVOztBQUYvRixlQUFlO0lBTDNCLFNBQVMsQ0FBQztRQUNOLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLGdFQUF1Qzs7S0FFM0MsQ0FBQztHQUNXLGVBQWUsQ0F3QjNCO1NBeEJZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VvU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlby5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBJQmxvY2sgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2Jsb2NrJztcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9ibG9ja3MvYmxvY2tzLnNlcnZpY2UnO1xuXG5cbkBDb21wb25lbnQoe1xuICAgICBzZWxlY3RvcjogJ2FwcC1ob21lLWVjJyxcbiAgICAgdGVtcGxhdGVVcmw6ICcuL2hvbWUtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFsnLi9ob21lLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSG9tZUVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYmxvY2tzU2VydmljZTogQmxvY2tzU2VydmljZSwgcHJvdGVjdGVkIGNvbnN0czogQ29uc3RhbnRzLCBwcm90ZWN0ZWQgc2VvOiBTZW9TZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgICB9XG5cbiAgICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgICAgY29uc3Qgc2l0ZU5hbWUgPSB0aGlzLnNlby5nZXRTaXRlTmFtZSgpO1xuICAgICAgICAgIHRoaXMuc2VvLnNldFRpdGxlKGBIb21lIHwgJHtzaXRlTmFtZX1gKTtcbiAgICAgICAgICB0aGlzLnNlby5zZXREZXNjcmlwdGlvbignQ2F0w6Fsb2dvIGRlIHByb2R1Y3RvcyB5IG1hcmNhcy4nKTtcbiAgICAgICAgICB0aGlzLnNlby5zZXRPZ1R5cGUoJ3dlYnNpdGUnKTtcbiAgICAgICAgICB0aGlzLnNlby5zZXRSb2JvdHMoJ2luZGV4LCBmb2xsb3cnKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgIHRoaXMuc2VvLnNldENhbm9uaWNhbCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYmxvY2tzU2VydmljZS5nZXRCbG9ja3MoJ2hvbWUnKTtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG5cbiAgICAgfVxuXG4gICAgIGdldEhUTUxDb250ZW50ID0gKGJsb2NrOiBJQmxvY2spID0+IGJsb2NrLnRyYW5zbGF0aW9uc1t0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKV0uY29udGVudDtcblxuICAgICBub05ld3NsZXR0ZXIgPSAoYmxvY2spID0+ICFibG9jay5jb2RlLmluY2x1ZGVzKCduZXdzbGV0dGVyJyk7XG59XG4iXX0=
@@ -5,19 +5,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Component } from '@angular/core';
8
+ import { SeoService } from '../../services/seo.service';
8
9
  import { FormBuilder, FormGroup, Validators } from '@angular/forms';
9
10
  import { ActivatedRoute, Router } from '@angular/router';
10
11
  import { ComponentHelper } from '../../classes/component-helper';
11
12
  import { AuthService } from '../../services/auth.service';
12
13
  import { ToastService } from '../../utils/toast.service';
13
14
  let PasswordResetEcComponent = class PasswordResetEcComponent extends ComponentHelper {
14
- constructor(authService, toastr, activedRoute, router, formBuilder) {
15
+ constructor(authService, toastr, activedRoute, router, formBuilder, seo) {
15
16
  super();
16
17
  this.authService = authService;
17
18
  this.toastr = toastr;
18
19
  this.activedRoute = activedRoute;
19
20
  this.router = router;
20
21
  this.formBuilder = formBuilder;
22
+ this.seo = seo;
21
23
  this.email = "";
22
24
  this.loading = false;
23
25
  this.ready = false;
@@ -78,6 +80,14 @@ let PasswordResetEcComponent = class PasswordResetEcComponent extends ComponentH
78
80
  ngOnInit() {
79
81
  this.token = this.activedRoute.snapshot.queryParams.token;
80
82
  !this.token && this.router.navigateByUrl('/');
83
+ const siteName = this.seo.getSiteName();
84
+ this.seo.setTitle(`Restablecer contraseña | ${siteName}`);
85
+ this.seo.setDescription(`Definí una nueva contraseña para tu cuenta de ${siteName}.`);
86
+ this.seo.setOgType('website');
87
+ this.seo.setRobots('noindex, nofollow');
88
+ if (typeof window !== 'undefined') {
89
+ this.seo.setCanonical(window.location.href);
90
+ }
81
91
  this.formGroup = this.formBuilder.group({
82
92
  first: ['', Validators.required],
83
93
  second: ['', Validators.required]
@@ -90,7 +100,8 @@ PasswordResetEcComponent.ctorParameters = () => [
90
100
  { type: ToastService },
91
101
  { type: ActivatedRoute },
92
102
  { type: Router },
93
- { type: FormBuilder }
103
+ { type: FormBuilder },
104
+ { type: SeoService }
94
105
  ];
95
106
  PasswordResetEcComponent = __decorate([
96
107
  Component({
@@ -100,4 +111,4 @@ PasswordResetEcComponent = __decorate([
100
111
  })
101
112
  ], PasswordResetEcComponent);
102
113
  export { PasswordResetEcComponent };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9wYXNzd29yZC1yZXNldC1lYy9wYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBT3pELElBQWEsd0JBQXdCLEdBQXJDLE1BQWEsd0JBQXlCLFNBQVEsZUFBZTtJQVF4RCxZQUFzQixXQUF3QixFQUFZLE1BQW9CLEVBQVksWUFBNEIsRUFDMUcsTUFBYyxFQUFZLFdBQXdCO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBRk8sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBWSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQVksaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzFHLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBWSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVB2RCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBcUJyQixvQkFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUks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USxDQUFDLENBQUE7WUFDakMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQyxDQUFDLENBQUE7UUFqRU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO0lBQ3RCLENBQUM7SUFFTixRQUFRO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzFELENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ25DLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ2hDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ3JDLENBQUMsQ0FBQTtRQUNKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUVsQixDQUFDO0NBc0RMLENBQUE7O1lBckV1QyxXQUFXO1lBQW9CLFlBQVk7WUFBMEIsY0FBYztZQUNsRyxNQUFNO1lBQXlCLFdBQVc7O0FBVHRELHdCQUF3QjtJQUxwQyxTQUFTLENBQUM7UUFDTixRQUFRLEVBQUUsdUJBQXVCO1FBQ2pDLGszRkFBK0M7O0tBRW5ELENBQUM7R0FDVyx3QkFBd0IsQ0E2RXBDO1NBN0VZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5kZWNsYXJlIHZhciAkOmFueTtcbkBDb21wb25lbnQoe1xuICAgICBzZWxlY3RvcjogJ2FwcC1wYXNzd29yZC1yZXNldC1lYycsXG4gICAgIHRlbXBsYXRlVXJsOiAncGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgICBzdHlsZVVybHM6IFsncGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFJlc2V0RWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgIHB1YmxpYyBlbWFpbCA9IFwiXCI7XG4gICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gICAgIHB1YmxpYyByZWFkeSA9IGZhbHNlO1xuICAgICBwcm90ZWN0ZWQgdG9rZW47XG4gICAgIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLCBwcm90ZWN0ZWQgdG9hc3RyOiBUb2FzdFNlcnZpY2UsIHByb3RlY3RlZCBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLCBcbiAgICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICAgICAgICAgIHN1cGVyKCk7XG4gICAgICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgICAgICAgIH1cblxuICAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdGhpcy5hY3RpdmVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMudG9rZW47XG4gICAgICAgICAgIXRoaXMudG9rZW4gJiYgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycpO1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICBmaXJzdDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgIHNlY29uZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgIH1cblxuICAgICBzZW5kTmV3UGFzc3dvcmQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICh0aGlzLmludmFsaWRGb3JtKCkpIHJldHVybjtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucGFzc3dvcmRSZXNldCh0aGlzLmZvcm1Hcm91cC52YWx1ZS5maXJzdCwgdGhpcy50b2tlbikudG9Qcm9taXNlKClcbiAgICAgICAgICAgICAgIC50aGVuKHRoaXMucHJvY2Vzc09rKVxuICAgICAgICAgICAgICAgLmNhdGNoKHRoaXMucHJvY2Vzc0Vycm9yKTtcbiAgICAgfVxuXG4gICAgIGludmFsaWRGb3JtID0gKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgICAgY29uc3QgcGFzc3dvcmRzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgICAgICAgICAgICBpZiAocGFzc3dvcmRzLmZpcnN0ID09IHBhc3N3b3Jkcy5zZWNvbmQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdHIuc2hvdygncGFzc3dvcmQtZG9lc250LW1hdGNoJyk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICB9XG5cbiAgICAgcHJvY2Vzc09rID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgIH1cblxuICAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmVycm9yKVxuICAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0ci5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxuICAgICAgICAgICAgICAgOiB0aGlzLnRvYXN0ci5zaG93KHJlc3BvbnNlLmVycm9yKTtcbiAgICAgfVxuXG4gICAgIHNlbmRUb0xvZ2luID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2F1dGgvbG9naW4nKTtcblxuICAgICBzaG93UGFzc3dvcmQgPSAoKSA9PiB7XG4gICAgICAgIGlmKCQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9PSAncGFzc3dvcmQnKXtcbiAgICAgICAgICAgICQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9ICd0ZXh0J1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9ICdwYXNzd29yZCdcbiAgICAgICAgfVxuXG4gICAgICAgICQoJyNzaG93MScpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKVxuICAgICAgICAkKCcjaGlkZTEnKS50b2dnbGVDbGFzcygnZC1ub25lJylcbiAgICB9XG4gICAgc2hvd1Bhc3N3b3JkMiA9ICgpID0+IHtcbiAgICAgICAgaWYoJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID09ICdwYXNzd29yZCcpe1xuICAgICAgICAgICAgJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID0gJ3RleHQnXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID0gJ3Bhc3N3b3JkJ1xuICAgICAgICB9XG5cbiAgICAgICAgJCgnI3Nob3cyJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpXG4gICAgICAgICQoJyNoaWRlMicpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKVxuICAgIH1cbn0iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtcmVzZXQtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9wYXNzd29yZC1yZXNldC1lYy9wYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxJQUFhLHdCQUF3QixHQUFyQyxNQUFhLHdCQUF5QixTQUFRLGVBQWU7SUFReEQsWUFBc0IsV0FBd0IsRUFBWSxNQUFvQixFQUFZLFlBQTRCLEVBQzFHLE1BQWMsRUFBWSxXQUF3QixFQUFZLEdBQWU7UUFDbEYsS0FBSyxFQUFFLENBQUM7UUFGTyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFZLFdBQU0sR0FBTixNQUFNLENBQWM7UUFBWSxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDMUcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFZLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQVksUUFBRyxHQUFILEdBQUcsQ0FBWTtRQVBsRixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixVQUFLLEdBQUcsS0FBSyxDQUFDO1FB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LFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDckMsQ0FBQyxDQUFBO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBRWxCLENBQUM7Q0FzREwsQ0FBQTs7WUE3RXVDLFdBQVc7WUFBb0IsWUFBWTtZQUEwQixjQUFjO1lBQ2xHLE1BQU07WUFBeUIsV0FBVztZQUFpQixVQUFVOztBQVRqRix3QkFBd0I7SUFMcEMsU0FBUyxDQUFDO1FBQ04sUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxrM0ZBQStDOztLQUVuRCxDQUFDO0dBQ1csd0JBQXdCLENBcUZwQztTQXJGWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VvU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlby5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmRlY2xhcmUgdmFyICQ6YW55O1xuQENvbXBvbmVudCh7XG4gICAgIHNlbGVjdG9yOiAnYXBwLXBhc3N3b3JkLXJlc2V0LWVjJyxcbiAgICAgdGVtcGxhdGVVcmw6ICdwYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgIHN0eWxlVXJsczogWydwYXNzd29yZC1yZXNldC1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkUmVzZXRFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAgcHVibGljIGVtYWlsID0gXCJcIjtcbiAgICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgcHVibGljIHJlYWR5ID0gZmFsc2U7XG4gICAgIHByb3RlY3RlZCB0b2tlbjtcbiAgICAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXG4gICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0U2VydmljZSwgcHJvdGVjdGVkIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsIFxuICAgICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJvdGVjdGVkIHNlbzogU2VvU2VydmljZSkge1xuICAgICAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG4gICAgICAgICAgfVxuXG4gICAgIG5nT25Jbml0KCkge1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0aGlzLmFjdGl2ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy50b2tlbjtcbiAgICAgICAgICAhdGhpcy50b2tlbiAmJiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG4gICAgICAgICAgY29uc3Qgc2l0ZU5hbWUgPSB0aGlzLnNlby5nZXRTaXRlTmFtZSgpO1xuICAgICAgICAgIHRoaXMuc2VvLnNldFRpdGxlKGBSZXN0YWJsZWNlciBjb250cmFzZcOxYSB8ICR7c2l0ZU5hbWV9YCk7XG4gICAgICAgICAgdGhpcy5zZW8uc2V0RGVzY3JpcHRpb24oYERlZmluw60gdW5hIG51ZXZhIGNvbnRyYXNlw7FhIHBhcmEgdHUgY3VlbnRhIGRlICR7c2l0ZU5hbWV9LmApO1xuICAgICAgICAgIHRoaXMuc2VvLnNldE9nVHlwZSgnd2Vic2l0ZScpO1xuICAgICAgICAgIHRoaXMuc2VvLnNldFJvYm90cygnbm9pbmRleCwgbm9mb2xsb3cnKTtcbiAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgIHRoaXMuc2VvLnNldENhbm9uaWNhbCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICBmaXJzdDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgIHNlY29uZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICAgIH0pXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgIH1cblxuICAgICBzZW5kTmV3UGFzc3dvcmQgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGlmICh0aGlzLmludmFsaWRGb3JtKCkpIHJldHVybjtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuYXV0aFNlcnZpY2UucGFzc3dvcmRSZXNldCh0aGlzLmZvcm1Hcm91cC52YWx1ZS5maXJzdCwgdGhpcy50b2tlbikudG9Qcm9taXNlKClcbiAgICAgICAgICAgICAgIC50aGVuKHRoaXMucHJvY2Vzc09rKVxuICAgICAgICAgICAgICAgLmNhdGNoKHRoaXMucHJvY2Vzc0Vycm9yKTtcbiAgICAgfVxuXG4gICAgIGludmFsaWRGb3JtID0gKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgICAgY29uc3QgcGFzc3dvcmRzID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG4gICAgICAgICAgICAgICBpZiAocGFzc3dvcmRzLmZpcnN0ID09IHBhc3N3b3Jkcy5zZWNvbmQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgIGVsc2UgdGhpcy50b2FzdHIuc2hvdygncGFzc3dvcmQtZG9lc250LW1hdGNoJyk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMudG9hc3RyLnNob3coJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICB9XG5cbiAgICAgcHJvY2Vzc09rID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5yZWFkeSA9IHRydWU7XG4gICAgIH1cblxuICAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmVycm9yKVxuICAgICAgICAgICAgICAgPyB0aGlzLnRvYXN0ci5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxuICAgICAgICAgICAgICAgOiB0aGlzLnRvYXN0ci5zaG93KHJlc3BvbnNlLmVycm9yKTtcbiAgICAgfVxuXG4gICAgIHNlbmRUb0xvZ2luID0gKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2F1dGgvbG9naW4nKTtcblxuICAgICBzaG93UGFzc3dvcmQgPSAoKSA9PiB7XG4gICAgICAgIGlmKCQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9PSAncGFzc3dvcmQnKXtcbiAgICAgICAgICAgICQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9ICd0ZXh0J1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICQoJyNjb250cmFzZcOxYTEnKS5nZXQoMCkudHlwZSA9ICdwYXNzd29yZCdcbiAgICAgICAgfVxuXG4gICAgICAgICQoJyNzaG93MScpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKVxuICAgICAgICAkKCcjaGlkZTEnKS50b2dnbGVDbGFzcygnZC1ub25lJylcbiAgICB9XG4gICAgc2hvd1Bhc3N3b3JkMiA9ICgpID0+IHtcbiAgICAgICAgaWYoJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID09ICdwYXNzd29yZCcpe1xuICAgICAgICAgICAgJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID0gJ3RleHQnXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgICAgJCgnI2NvbnRyYXNlw7FhMicpLmdldCgwKS50eXBlID0gJ3Bhc3N3b3JkJ1xuICAgICAgICB9XG5cbiAgICAgICAgJCgnI3Nob3cyJykudG9nZ2xlQ2xhc3MoJ2Qtbm9uZScpXG4gICAgICAgICQoJyNoaWRlMicpLnRvZ2dsZUNsYXNzKCdkLW5vbmUnKVxuICAgIH1cbn0iXX0=
@@ -24,13 +24,13 @@ import { OptionsService } from '../../services/options.service';
24
24
  import { ProductDetailService } from '../../services/products/product-detail.service';
25
25
  import { ProductsService } from '../../services/products/products.service';
26
26
  import { ToastService } from '../../utils/toast.service';
27
- import { Meta } from '@angular/platform-browser';
27
+ import { SeoService } from '../../services/seo.service';
28
28
  import { Injector } from '@angular/core';
29
29
  import { ChannelConfigService } from '../../services/channel-config.service';
30
30
  import { combineLatest } from 'rxjs';
31
31
  import { startWith, filter as rxFilter } from 'rxjs/operators';
32
32
  let ProductDetailEcComponent = class ProductDetailEcComponent extends ComponentHelper {
33
- constructor(productService, consts, activedRoute, cartService, optionsService, productsService, analyticsService, router, toastrService, meta, injector) {
33
+ constructor(productService, consts, activedRoute, cartService, optionsService, productsService, analyticsService, router, toastrService, injector, seo) {
34
34
  super();
35
35
  this.productService = productService;
36
36
  this.consts = consts;
@@ -41,8 +41,8 @@ let ProductDetailEcComponent = class ProductDetailEcComponent extends ComponentH
41
41
  this.analyticsService = analyticsService;
42
42
  this.router = router;
43
43
  this.toastrService = toastrService;
44
- this.meta = meta;
45
44
  this.injector = injector;
45
+ this.seo = seo;
46
46
  this.show = false;
47
47
  this.quantity = 1;
48
48
  this.comments = '';
@@ -184,12 +184,17 @@ let ProductDetailEcComponent = class ProductDetailEcComponent extends ComponentH
184
184
  this.product = res;
185
185
  window.scroll(0, 0);
186
186
  this.breadcrumb = this.optionsService.getBreadcrumb(this.product.category);
187
- if (this.product.name) {
188
- this.meta.updateTag({ property: 'og:title', content: this.product.name });
189
- this.meta.updateTag({ property: 'og:description', content: this.deleteHTML(this.product.description) });
190
- this.meta.updateTag({ property: 'og:image', content: this.consts.mediaUrl() + this.product.picturesdefault[0] });
191
- this.meta.updateTag({ property: 'og:type', content: 'product' });
192
- this.meta.updateTag({ property: 'og:url', content: window.location.href });
187
+ if (this.product.name && this.seo) {
188
+ const siteName = this.seo.getSiteName();
189
+ const description = this.deleteHTML(this.product.description || '');
190
+ this.seo.setTitle(`${this.product.name} | ${siteName}`);
191
+ this.seo.setDescription(description);
192
+ this.seo.setOgImage(this.consts.mediaUrl() + this.product.picturesdefault[0]);
193
+ this.seo.setOgType('product');
194
+ this.seo.setRobots('index, follow');
195
+ if (typeof window !== 'undefined') {
196
+ this.seo.setCanonical(window.location.href);
197
+ }
193
198
  }
194
199
  }
195
200
  });
@@ -261,8 +266,8 @@ ProductDetailEcComponent.ctorParameters = () => [
261
266
  { type: AnalyticsService },
262
267
  { type: Router },
263
268
  { type: ToastService },
264
- { type: Meta },
265
- { type: Injector }
269
+ { type: Injector },
270
+ { type: SeoService }
266
271
  ];
267
272
  __decorate([
268
273
  ViewChild('contact')
@@ -276,4 +281,4 @@ ProductDetailEcComponent = __decorate([
276
281
  })
277
282
  ], ProductDetailEcComponent);
278
283
  export { ProductDetailEcComponent };
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9wcm9kdWN0LWRldGFpbC1lYy9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxN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USxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVzs7UUFDUCxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFdBQVcsR0FBRztJQUNuQyxDQUFDO0lBWUQsTUFBTTtRQUNGLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBNEIsQ0FBQztRQUNuRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQTZHSixDQUFBOztZQTlOOEIsb0JBQW9CO1lBQzVCLFNBQVM7WUFDQSxjQUFjO1lBQ2xCLFdBQVc7WUFDUixjQUFjO1lBQ2IsZUFBZTtZQUNkLGdCQUFnQjtZQUMxQixNQUFNO1lBQ0ksWUFBWTtZQUN2QixJQUFJO1lBQ0QsUUFBUTs7QUFiUDtJQUFyQixTQUFTLENBQUMsU0FBUyxDQUFDO3lEQUFxQjtBQXRCakMsd0JBQXdCO0lBTnBDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSx1QkFBdUI7UUFDakMsWUFBaUQ7UUFFakQsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7O0tBQ3BDLENBQUM7R0FDVyx3QkFBd0IsQ0F1UHBDO1NBdlBZLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RGV0YWlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3QtZGV0YWlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZHVjdHMvcHJvZHVjdHMuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IE1ldGEgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIGZpbHRlciBhcyByeEZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWRldGFpbC1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1Byb2R1Y3REZXRhaWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIHByb2R1Y3Q6IGFueTtcbiAgICBwdWJsaWMgbWVkaWFVcmw7XG4gICAgcHVibGljIHNob3cgPSBmYWxzZTtcbiAgICBwdWJsaWMgcXVhbnRpdHkgPSAxO1xuICAgIHB1YmxpYyBjb21tZW50czogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGJyZWFkY3J1bWIgPSBbXTtcbiAgICBwdWJsaWMgY2Fyb3VzZWw6IGFueTtcbiAgICBwdWJsaWMgY29kZSA9IG51bGw7XG4gICAgcHVibGljIGZvY3VzSW1hZ2U6IHN0cmluZyA9IG51bGxcbiAgICBwdWJsaWMgb3dsT3B0aW9ucyA9IHt9XG4gICAgcHVibGljIHNob3dSZXZpZXdzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY3JlZGl0QWNjb3VudFNob3dQcmljZXM6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgZW5hYmxlRmllbGROb3Rlc0luQXJ0aWNsZUZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcXVhbnRpdHlFcnJvcjogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIG1pbmltdW1JdGVtc1F0eTogbnVtYmVyID0gbnVsbDtcbiAgICBwdWJsaWMgbXVsdGlwbGVRdHk6IG51bWJlciA9IG51bGw7XG4gICAgcHJpdmF0ZSBwcmVmaWxsU3ViPzogU3Vic2NyaXB0aW9uO1xuXG5cbiAgICBAVmlld0NoaWxkKCdjb250YWN0JykgY29udGFjdDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwdWJsaWMgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcHJvZHVjdHNTZXJ2aWNlOiBQcm9kdWN0c1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbWV0YTogTWV0YSxcbiAgICAgICAgcHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgICBsZXQgdmFyaWFudDogYW55ID0gKHRoaXMuYWN0aXZlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCd2YXJpYW50JykpO1xuICAgICAgICAgICAgbGV0IGNvZGUgPSBxdWVyeVBhcmFtcy5pZDtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UubG9hZFByb2R1Y3QoY29kZSwgdmFyaWFudCk7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtcy5pZFxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnByb2R1Y3QkLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdCA9IHJlcztcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0QnJlYWRjcnVtYih0aGlzLnByb2R1Y3QuY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2R1Y3QubmFtZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0aXRsZScsIGNvbnRlbnQ6IHRoaXMucHJvZHVjdC5uYW1lIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzpkZXNjcmlwdGlvbicsIGNvbnRlbnQ6IHRoaXMuZGVsZXRlSFRNTCh0aGlzLnByb2R1Y3QuZGVzY3JpcHRpb24pIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzppbWFnZScsIGNvbnRlbnQ6IHRoaXMuY29uc3RzLm1lZGlhVXJsKCkgKyB0aGlzLnByb2R1Y3QucGljdHVyZXNkZWZhdWx0WzBdIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp0eXBlJywgY29udGVudDogJ3Byb2R1Y3QnIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1ldGEudXBkYXRlVGFnKHsgcHJvcGVydHk6ICdvZzp1cmwnLCBjb250ZW50OiB3aW5kb3cubG9jYXRpb24uaHJlZiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnByb2R1Y3QkLnBpcGUoZmlsdGVyKGRhdGEgPT4gZGF0YSAmJiBkYXRhLmlkICYmIGRhdGEuaWQgIT0gMCkpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChwcm9kdWN0UGFyYW0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCd2aWV3X2l0ZW0nLCB7IC4uLnByb2R1Y3RQYXJhbSwgY3VycmVuY3k6IHRoaXMuY29uc3RzLmN1cnJlbmN5LmNvZGUgfSlcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUltZ0ZvY3VzKHByb2R1Y3RQYXJhbS5waWN0dXJlc2RlZmF1bHRbMF0pXG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICAgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmNoYW5uZWxDb25maWckLnN1YnNjcmliZShjaGFubmVsID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1Jldmlld3MgPSBjaGFubmVsLnNob3dSZXZpZXdzO1xuICAgICAgICAgICAgdGhpcy5oaWRlUHJpY2VzID0gY2hhbm5lbD8uaGlkZVByaWNlcyA/PyBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRmllbGROb3Rlc0luQXJ0aWNsZUZpbGUgPSBjaGFubmVsPy5lbmFibGVGaWVsZE5vdGVzSW5BcnRpY2xlRmlsZSA/PyBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5zaG93UHJpY2UkLnN1YnNjcmliZSgoc2hvd1ByaWNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWRpdEFjY291bnRTaG93UHJpY2VzID0gc2hvd1ByaWNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcblxuICAgIH1cblxuICAgIGRlbGV0ZUhUTUwoY2FkZW5hOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAvLyBFeHByZXNpw7NuIHJlZ3VsYXIgcGFyYSBidXNjYXIgZXRpcXVldGFzIEhUTUxcbiAgICAgICAgY29uc3QgZXhwcmVzaW9uUmVndWxhciA9IC88W14+XSo+L2c7XG4gICAgICAgIC8vIFJlZW1wbGF6YSB0b2RhcyBsYXMgZXRpcXVldGFzIEhUTUwgcG9yIHVuYSBjYWRlbmEgdmFjw61hXG4gICAgICAgIHJldHVybiBjYWRlbmEucmVwbGFjZShleHByZXNpb25SZWd1bGFyLCAnJyk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuXG4gICAgICAgIC8vIFByZWxsZW5hciBjb21lbnRhcmlvcyBjdWFuZG86XG4gICAgICAgIC8vIC0gY2FyZ3VlIGVsIHByb2R1Y3RvXG4gICAgICAgIC8vIC0gY2FtYmllIGxhIHZhcmlhbnRlIHNlbGVjY2lvbmFkYSAoYXNvY2lhdGVkRGF0YSQpXG4gICAgICAgIC8vIC0gY2FtYmllbiBsb3Mgw610ZW1zIGRlbCBjYXJyaXRvICAgICAgICBcbiAgICAgICAgdGhpcy5wcmVmaWxsU3ViID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnByb2R1Y3QkLnBpcGUocnhGaWx0ZXIoKHA6IGFueSkgPT4gISFwICYmICEhcC5pZCkpLFxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5hc29jaWF0ZWREYXRhJC5waXBlKHN0YXJ0V2l0aChudWxsIGFzIGFueSkpLFxuICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0SXRlbXMucGlwZShzdGFydFdpdGgoW10gYXMgYW55W10pKSxcbiAgICAgICAgXSkuc3Vic2NyaWJlKChbcHJvZHVjdCwgZGF0YSwgaXRlbXNdOiBbYW55LCBhbnksIGFueVtdXSkgPT4ge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCB2YXJpYW50SWQgPVxuICAgICAgICAgICAgICAgIGRhdGE/LnZhcmlhbnRDb2RlID8/XG4gICAgICAgICAgICAgICAgZGF0YT8udmFyaWFudF9pZCA/P1xuICAgICAgICAgICAgICAgIHByb2R1Y3Q/LnZhcmlhbnRzPy5bMF0/LmNvZGUgPz9cbiAgICAgICAgICAgICAgICBudWxsO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IGl0ZW1zPy5maW5kKGl0ID0+XG4gICAgICAgICAgICAgICAgaXQ/LnByb2R1Y3Q/LmlkID09PSBwcm9kdWN0Py5pZCAmJlxuICAgICAgICAgICAgICAgICh2YXJpYW50SWQgPyBpdD8udmFyaWFudF9pZCA9PT0gdmFyaWFudElkIDogdHJ1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMuY29tbWVudHMgPSAobWF0Y2g/LmNvbW1lbnRzID8/ICcnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5hc29jaWF0ZWREYXRhJC5zdWJzY3JpYmUoYWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5taW5pbXVtSXRlbXNRdHkgPSBhZD8ubWluaW11bUl0ZW1zUXVhbnRpdHkgfHwgbnVsbDtcbiAgICAgICAgICAgIHRoaXMubXVsdGlwbGVRdHkgPSBhZD8ubXVsdGlwbGVRdWFudGl0eSB8fCBudWxsO1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eSA9IHRoaXMubWluaW11bUl0ZW1zUXR5IHx8IHRoaXMubXVsdGlwbGVRdHkgfHwgMTtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHlFcnJvciA9ICcnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmVmaWxsU3ViPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGFkZFRvQ2FydCA9ICgpID0+IHtcbiAgICAgICAgY29uc3Qgbm90ZSA9IHRoaXMuY29tbWVudHM/LnRyaW0oKSB8fCBudWxsO1xuICAgICAgICB0aGlzLnF1YW50aXR5ID4gMCAmJiB0aGlzLnByb2R1Y3RTZXJ2aWNlLmFkZFRvQ2FydCh0aGlzLnF1YW50aXR5LCB1bmRlZmluZWQsIG5vdGUpO1xuICAgIH1cblxuICAgIGFkZEFsbFByb2R1Y3Rvc1RvQ2FydCA9ICgpID0+IHtcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5wcm9kdWN0LnByb2R1Y3RXaXRoVW5pcXVlVmFyaWFudD8uZmlsdGVyKHByb2QgPT4gcHJvZC5wcm9kdWN0VG9DYXJ0SXRlbSkubWFwKHByb2QgPT4gcHJvZC5wcm9kdWN0VG9DYXJ0SXRlbSlcbiAgICAgICAgaXRlbXM/Lmxlbmd0aCAmJiB0aGlzLmNhcnRTZXJ2aWNlLmFkZEFsbFRvQ2FydChpdGVtcylcbiAgICB9XG5cbiAgICBzY3JvbGwoKSB7XG4gICAgICAgIGxldCBlbCA9IHRoaXMuY29udGFjdC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBlbC5zY3JvbGxJbnRvVmlldygpO1xuICAgIH1cblxuICAgIHNhdmVSZWYgPSAoY2Fyb3VzZWwpID0+IHtcbiAgICAgICAgdGhpcy5jYXJvdXNlbCA9IGNhcm91c2VsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBhY3R1YWxpemEgbGEgdmFyaWFibGUgcXVhbnRpdHkgc3VtYW5kb2xlICd4JyBjb250ZW5pZG8uXG4gICAgICogU2kgaGF5IHVuIG11bHRpcGxlUXVhbnRpdHkgY29uZmlndXJhZG8sIGhhY2Ugc25hcCBhbCBzaWd1aWVudGUgbcO6bHRpcGxvIHbDoWxpZG9cbiAgICAgKiBjdWFuZG8gbGEgY2FudGlkYWQgYWN0dWFsIHlhIGVzIGludsOhbGlkYS5cbiAgICAgKiBAcGFyYW0gc3RvY2sgbsO6bWVybyBtw6F4aW1vIGRpc3BvbmlibGUgZW4gc3RvY2suXG4gICAgICogQHBhcmFtIGNoYW5nZUFtb3VudCBjYW50aWRhZCBxdWUgc2UgcXVpZXJlIHN1bWFyIChpZ25vcmFkbyBzaSBtdWx0aXBsZVF0eSBlc3TDoSBzZXRlYWRvKS5cbiAgICAgKiBAcGFyYW0gZm9yY2VNdWx0aXBsZSBsZWdhY3kg4oCUIHNpIGVzIHRydWUsIG9ibGlnYSBhIHF1ZSBlbCByZXN1bHRhZG8gc2VhIG3Dumx0aXBsbyBkZSBjaGFuZ2VBbW91bnQuXG4gICAgICovXG4gICAgcGx1cyA9IChzdG9jaz86IG51bWJlciwgY2hhbmdlQW1vdW50OiBudW1iZXIgPSAxLCBmb3JjZU11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMubXVsdGlwbGVRdHkgfHwgY2hhbmdlQW1vdW50O1xuICAgICAgICBjb25zdCBjdXJyZW50UXVhbnRpdHkgPSBOdW1iZXIodGhpcy5xdWFudGl0eSk7XG4gICAgICAgIGxldCBuZXdRdWFudGl0eTogbnVtYmVyO1xuXG4gICAgICAgIGlmIChzdGVwID4gMSkge1xuICAgICAgICAgICAgbmV3UXVhbnRpdHkgPSBjdXJyZW50UXVhbnRpdHkgJSBzdGVwICE9PSAwXG4gICAgICAgICAgICAgICAgPyBNYXRoLmNlaWwoY3VycmVudFF1YW50aXR5IC8gc3RlcCkgKiBzdGVwXG4gICAgICAgICAgICAgICAgOiBjdXJyZW50UXVhbnRpdHkgKyBzdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UXVhbnRpdHkgPSBjdXJyZW50UXVhbnRpdHkgKyBzdGVwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzdG9jayB8fCBuZXdRdWFudGl0eSA8PSBzdG9jaykge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eSA9IG5ld1F1YW50aXR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ291dC1vZi1zdG9jay1hY3R1YWxseScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZXRhaWwoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gYWN0dWFsaXphIGxhIHZhcmlhYmxlIHF1YW50aXR5IHJlc3RhbmRvbGUgJ3gnIGNvbnRlbmlkby5cbiAgICAgKiBTaSBoYXkgdW4gbXVsdGlwbGVRdWFudGl0eSBjb25maWd1cmFkbywgaGFjZSBzbmFwIGFsIG3Dumx0aXBsbyB2w6FsaWRvIGluZmVyaW9yXG4gICAgICogY3VhbmRvIGxhIGNhbnRpZGFkIGFjdHVhbCB5YSBlcyBpbnbDoWxpZGEuXG4gICAgICogQHBhcmFtIGNoYW5nZUFtb3VudCBjYW50aWRhZCBxdWUgc2UgcXVpZXJlIHJlc3RhciAoaWdub3JhZG8gc2kgbXVsdGlwbGVRdHkgZXN0w6Egc2V0ZWFkbykuXG4gICAgICogQHBhcmFtIG1pbmltdW0gY2FudGlkYWQgbcOtbmltYSBwZXJtaXRpZGEgKGlnbm9yYWRvIHNpIG1pbmltdW1JdGVtc1F0eSBlc3TDoSBzZXRlYWRvKS5cbiAgICAgKiBAcGFyYW0gZm9yY2VNdWx0aXBsZSBsZWdhY3kg4oCUIHNpIGVzIHRydWUsIG9ibGlnYSBhIHF1ZSBlbCByZXN1bHRhZG8gc2VhIG3Dumx0aXBsbyBkZSBjaGFuZ2VBbW91bnQuXG4gICAgICovXG4gICAgbGVzcyA9IChjaGFuZ2VBbW91bnQ6IG51bWJlciA9IDEsIG1pbmltdW06IG51bWJlciA9IDEsIGZvcmNlTXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5tdWx0aXBsZVF0eSB8fCBjaGFuZ2VBbW91bnQ7XG4gICAgICAgIGNvbnN0IGZsb29yID0gdGhpcy5taW5pbXVtSXRlbXNRdHkgfHwgKHN0ZXAgPiAxID8gc3RlcCA6IG1pbmltdW0pO1xuICAgICAgICBsZXQgbmV3UXVhbnRpdHk6IG51bWJlcjtcblxuICAgICAgICBpZiAoc3RlcCA+IDEpIHtcbiAgICAgICAgICAgIG5ld1F1YW50aXR5ID0gdGhpcy5xdWFudGl0eSAlIHN0ZXAgIT09IDBcbiAgICAgICAgICAgICAgICA/IE1hdGguZmxvb3IodGhpcy5xdWFudGl0eSAvIHN0ZXApICogc3RlcFxuICAgICAgICAgICAgICAgIDogdGhpcy5xdWFudGl0eSAtIHN0ZXA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdRdWFudGl0eSA9IHRoaXMucXVhbnRpdHkgLSBzdGVwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5xdWFudGl0eSA9IG5ld1F1YW50aXR5ID49IGZsb29yID8gbmV3UXVhbnRpdHkgOiBmbG9vcjtcbiAgICAgICAgdGhpcy52YWxpZGF0ZURldGFpbCgpO1xuICAgIH1cblxuICAgIG9uUXVhbnRpdHlJbnB1dCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eSA9IHBhcnNlZDtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVEZXRhaWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhbGlkYXRlRGV0YWlsID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5taW5pbXVtSXRlbXNRdHkgJiYgdGhpcy5xdWFudGl0eSA8IHRoaXMubWluaW11bUl0ZW1zUXR5KSB7XG4gICAgICAgICAgICB0aGlzLnF1YW50aXR5RXJyb3IgPSAnTGEgY2FudGlkYWQgZGViZSBzZXIgYWwgbWVub3MgJyArIHRoaXMubWluaW11bUl0ZW1zUXR5O1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGVRdHkgJiYgdGhpcy5xdWFudGl0eSAlIHRoaXMubXVsdGlwbGVRdHkgIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHlFcnJvciA9ICdMYSBjYW50aWRhZCBkZWJlIHNlciBtXFx1MDBmYWx0aXBsbyBkZSAnICsgdGhpcy5tdWx0aXBsZVF0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHlFcnJvciA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNRdWFudGl0eVZhbGlkRGV0YWlsID0gKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAodGhpcy5taW5pbXVtSXRlbXNRdHkgJiYgdGhpcy5xdWFudGl0eSA8IHRoaXMubWluaW11bUl0ZW1zUXR5KSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlUXR5ICYmIHRoaXMucXVhbnRpdHkgJSB0aGlzLm11bHRpcGxlUXR5ICE9PSAwKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHNob3dDb250YWN0ID0gKCkgPT4gdGhpcy5zaG93ID0gdHJ1ZTtcbiAgICBoaWRlQ29udGFjdCA9ICgpID0+IHRoaXMuc2hvdyA9IGZhbHNlO1xuXG4gICAgdGhlcmVJc01vcmVJbmZvID0gKHByb2R1Y3Q6IGFueSkgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZiAocHJvZHVjdD8uc3BlY2lhbF9tYXJrICYmIHByb2R1Y3Q/LnNwZWNpYWxfbWFyay5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHByb2R1Y3Q/LnNwZWNpYWxfbWFyaz8uZmluZChzcGVjaWFsX21hcmsgPT4gc3BlY2lhbF9tYXJrLnR5cGUgPT0gJ21vcmVfaW5mbycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY2hhbmdlSW1nRm9jdXMgPSAoaW1nKSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXNJbWFnZSA9IGltZ1xuICAgIH1cbiAgICBjb3B5UHJvZHVjdFVybCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgY29waWVkID0gYXdhaXQgdGhpcy5jb3B5VGV4dFRvQ2xpcGJvYXJkKHRoaXMuZ2V0Q3VycmVudFVybCgpKTtcbiAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coY29waWVkID8gJ3NoYXJlLWxpbmstY29waWVkJyA6ICdzaGFyZS1saW5rLWNvcHktZmFpbGVkJyk7XG4gICAgfVxuXG4gICAgb3BlbldoYXRzYXBwU2hhcmUgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNoYXJlVXJsID0gdGhpcy5idWlsZFdoYXRzYXBwU2hhcmVVcmwoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3aW5kb3cub3BlbihzaGFyZVVybCwgJ19ibGFuaycsICdub29wZW5lcixub3JlZmVycmVyJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWwtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC9wcm9kdWN0LWRldGFpbC1lYy9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxN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LEtBQUksSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXOztRQUNQLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsV0FBVyxHQUFHO0lBQ25DLENBQUM7SUFZRCxNQUFNO1FBQ0YsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUE0QixDQUFDO1FBQ25ELEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBNkdKLENBQUE7O1lBbk84QixvQkFBb0I7WUFDNUIsU0FBUztZQUNBLGNBQWM7WUFDbEIsV0FBVztZQUNSLGNBQWM7WUFDYixlQUFlO1lBQ2QsZ0JBQWdCO1lBQzFCLE1BQU07WUFDSSxZQUFZO1lBQ3BCLFFBQVE7WUFDWCxVQUFVOztBQWJOO0lBQXJCLFNBQVMsQ0FBQyxTQUFTLENBQUM7eURBQXFCO0FBdEJqQyx3QkFBd0I7SUFOcEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxZQUFpRDtRQUVqRCxTQUFTLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQzs7S0FDcEMsQ0FBQztHQUNXLHdCQUF3QixDQTRQcEM7U0E1UFksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcHJvZHVjdHMvcHJvZHVjdC1kZXRhaWwuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wcm9kdWN0cy9wcm9kdWN0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VvU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Nlby5zZXJ2aWNlJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NoYW5uZWwtY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIGZpbHRlciBhcyByeEZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1wcm9kdWN0LWRldGFpbC1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2R1Y3QtZGV0YWlsLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LWRldGFpbC1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1Byb2R1Y3REZXRhaWxTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RGV0YWlsRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIHByb2R1Y3Q6IGFueTtcbiAgICBwdWJsaWMgbWVkaWFVcmw7XG4gICAgcHVibGljIHNob3cgPSBmYWxzZTtcbiAgICBwdWJsaWMgcXVhbnRpdHkgPSAxO1xuICAgIHB1YmxpYyBjb21tZW50czogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGJyZWFkY3J1bWIgPSBbXTtcbiAgICBwdWJsaWMgY2Fyb3VzZWw6IGFueTtcbiAgICBwdWJsaWMgY29kZSA9IG51bGw7XG4gICAgcHVibGljIGZvY3VzSW1hZ2U6IHN0cmluZyA9IG51bGxcbiAgICBwdWJsaWMgb3dsT3B0aW9ucyA9IHt9XG4gICAgcHVibGljIHNob3dSZXZpZXdzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhpZGVQcmljZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgY3JlZGl0QWNjb3VudFNob3dQcmljZXM6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgZW5hYmxlRmllbGROb3Rlc0luQXJ0aWNsZUZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcXVhbnRpdHlFcnJvcjogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIG1pbmltdW1JdGVtc1F0eTogbnVtYmVyID0gbnVsbDtcbiAgICBwdWJsaWMgbXVsdGlwbGVRdHk6IG51bWJlciA9IG51bGw7XG4gICAgcHJpdmF0ZSBwcmVmaWxsU3ViPzogU3Vic2NyaXB0aW9uO1xuXG5cbiAgICBAVmlld0NoaWxkKCdjb250YWN0JykgY29udGFjdDogRWxlbWVudFJlZjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcHJvZHVjdFNlcnZpY2U6IFByb2R1Y3REZXRhaWxTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByb3RlY3RlZCBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwdWJsaWMgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgb3B0aW9uc1NlcnZpY2U6IE9wdGlvbnNTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcHJvZHVjdHNTZXJ2aWNlOiBQcm9kdWN0c1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHJTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgc2VvPzogU2VvU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVkUm91dGUucGFyYW1zLnN1YnNjcmliZShxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgICBsZXQgdmFyaWFudDogYW55ID0gKHRoaXMuYWN0aXZlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCd2YXJpYW50JykpO1xuICAgICAgICAgICAgbGV0IGNvZGUgPSBxdWVyeVBhcmFtcy5pZDtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UubG9hZFByb2R1Y3QoY29kZSwgdmFyaWFudCk7XG4gICAgICAgICAgICB0aGlzLmNvZGUgPSBxdWVyeVBhcmFtcy5pZFxuICAgICAgICB9KVxuICAgICAgICB0aGlzLnByb2R1Y3RTZXJ2aWNlLnByb2R1Y3QkLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJ10pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdCA9IHJlcztcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDApO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYiA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2V0QnJlYWRjcnVtYih0aGlzLnByb2R1Y3QuY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb2R1Y3QubmFtZSAmJiB0aGlzLnNlbykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXRlTmFtZSA9IHRoaXMuc2VvLmdldFNpdGVOYW1lKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5kZWxldGVIVE1MKHRoaXMucHJvZHVjdC5kZXNjcmlwdGlvbiB8fCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VvLnNldFRpdGxlKGAke3RoaXMucHJvZHVjdC5uYW1lfSB8ICR7c2l0ZU5hbWV9YCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VvLnNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW8uc2V0T2dJbWFnZSh0aGlzLmNvbnN0cy5tZWRpYVVybCgpICsgdGhpcy5wcm9kdWN0LnBpY3R1cmVzZGVmYXVsdFswXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VvLnNldE9nVHlwZSgncHJvZHVjdCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlby5zZXRSb2JvdHMoJ2luZGV4LCBmb2xsb3cnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlby5zZXRDYW5vbmljYWwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5wcm9kdWN0JC5waXBlKGZpbHRlcihkYXRhID0+IGRhdGEgJiYgZGF0YS5pZCAmJiBkYXRhLmlkICE9IDApKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAocHJvZHVjdFBhcmFtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgndmlld19pdGVtJywgeyAuLi5wcm9kdWN0UGFyYW0sIGN1cnJlbmN5OiB0aGlzLmNvbnN0cy5jdXJyZW5jeS5jb2RlIH0pXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VJbWdGb2N1cyhwcm9kdWN0UGFyYW0ucGljdHVyZXNkZWZhdWx0WzBdKVxuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dSZXZpZXdzID0gY2hhbm5lbC5zaG93UmV2aWV3cztcbiAgICAgICAgICAgIHRoaXMuaGlkZVByaWNlcyA9IGNoYW5uZWw/LmhpZGVQcmljZXMgPz8gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUZpZWxkTm90ZXNJbkFydGljbGVGaWxlID0gY2hhbm5lbD8uZW5hYmxlRmllbGROb3Rlc0luQXJ0aWNsZUZpbGUgPz8gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2Uuc2hvd1ByaWNlJC5zdWJzY3JpYmUoKHNob3dQcmljZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jcmVkaXRBY2NvdW50U2hvd1ByaWNlcyA9IHNob3dQcmljZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpXG5cbiAgICB9XG5cbiAgICBkZWxldGVIVE1MKGNhZGVuYTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gRXhwcmVzacOzbiByZWd1bGFyIHBhcmEgYnVzY2FyIGV0aXF1ZXRhcyBIVE1MXG4gICAgICAgIGNvbnN0IGV4cHJlc2lvblJlZ3VsYXIgPSAvPFtePl0qPi9nO1xuICAgICAgICAvLyBSZWVtcGxhemEgdG9kYXMgbGFzIGV0aXF1ZXRhcyBIVE1MIHBvciB1bmEgY2FkZW5hIHZhY8OtYVxuICAgICAgICByZXR1cm4gY2FkZW5hLnJlcGxhY2UoZXhwcmVzaW9uUmVndWxhciwgJycpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgICAgICAvLyBQcmVsbGVuYXIgY29tZW50YXJpb3MgY3VhbmRvOlxuICAgICAgICAvLyAtIGNhcmd1ZSBlbCBwcm9kdWN0b1xuICAgICAgICAvLyAtIGNhbWJpZSBsYSB2YXJpYW50ZSBzZWxlY2Npb25hZGEgKGFzb2NpYXRlZERhdGEkKVxuICAgICAgICAvLyAtIGNhbWJpZW4gbG9zIMOtdGVtcyBkZWwgY2Fycml0byAgICAgICAgXG4gICAgICAgIHRoaXMucHJlZmlsbFN1YiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0U2VydmljZS5wcm9kdWN0JC5waXBlKHJ4RmlsdGVyKChwOiBhbnkpID0+ICEhcCAmJiAhIXAuaWQpKSxcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuYXNvY2lhdGVkRGF0YSQucGlwZShzdGFydFdpdGgobnVsbCBhcyBhbnkpKSxcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2FydEl0ZW1zLnBpcGUoc3RhcnRXaXRoKFtdIGFzIGFueVtdKSksXG4gICAgICAgIF0pLnN1YnNjcmliZSgoW3Byb2R1Y3QsIGRhdGEsIGl0ZW1zXTogW2FueSwgYW55LCBhbnlbXV0pID0+IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgdmFyaWFudElkID1cbiAgICAgICAgICAgICAgICBkYXRhPy52YXJpYW50Q29kZSA/P1xuICAgICAgICAgICAgICAgIGRhdGE/LnZhcmlhbnRfaWQgPz9cbiAgICAgICAgICAgICAgICBwcm9kdWN0Py52YXJpYW50cz8uWzBdPy5jb2RlID8/XG4gICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBpdGVtcz8uZmluZChpdCA9PlxuICAgICAgICAgICAgICAgIGl0Py5wcm9kdWN0Py5pZCA9PT0gcHJvZHVjdD8uaWQgJiZcbiAgICAgICAgICAgICAgICAodmFyaWFudElkID8gaXQ/LnZhcmlhbnRfaWQgPT09IHZhcmlhbnRJZCA6IHRydWUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLmNvbW1lbnRzID0gKG1hdGNoPy5jb21tZW50cyA/PyAnJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMucHJvZHVjdFNlcnZpY2UuYXNvY2lhdGVkRGF0YSQuc3Vic2NyaWJlKGFkID0+IHtcbiAgICAgICAgICAgIHRoaXMubWluaW11bUl0ZW1zUXR5ID0gYWQ/Lm1pbmltdW1JdGVtc1F1YW50aXR5IHx8IG51bGw7XG4gICAgICAgICAgICB0aGlzLm11bHRpcGxlUXR5ID0gYWQ/Lm11bHRpcGxlUXVhbnRpdHkgfHwgbnVsbDtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHkgPSB0aGlzLm1pbmltdW1JdGVtc1F0eSB8fCB0aGlzLm11bHRpcGxlUXR5IHx8IDE7XG4gICAgICAgICAgICB0aGlzLnF1YW50aXR5RXJyb3IgPSAnJztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJlZmlsbFN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBhZGRUb0NhcnQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdGUgPSB0aGlzLmNvbW1lbnRzPy50cmltKCkgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5xdWFudGl0eSA+IDAgJiYgdGhpcy5wcm9kdWN0U2VydmljZS5hZGRUb0NhcnQodGhpcy5xdWFudGl0eSwgdW5kZWZpbmVkLCBub3RlKTtcbiAgICB9XG5cbiAgICBhZGRBbGxQcm9kdWN0b3NUb0NhcnQgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMucHJvZHVjdC5wcm9kdWN0V2l0aFVuaXF1ZVZhcmlhbnQ/LmZpbHRlcihwcm9kID0+IHByb2QucHJvZHVjdFRvQ2FydEl0ZW0pLm1hcChwcm9kID0+IHByb2QucHJvZHVjdFRvQ2FydEl0ZW0pXG4gICAgICAgIGl0ZW1zPy5sZW5ndGggJiYgdGhpcy5jYXJ0U2VydmljZS5hZGRBbGxUb0NhcnQoaXRlbXMpXG4gICAgfVxuXG4gICAgc2Nyb2xsKCkge1xuICAgICAgICBsZXQgZWwgPSB0aGlzLmNvbnRhY3QubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG5cbiAgICBzYXZlUmVmID0gKGNhcm91c2VsKSA9PiB7XG4gICAgICAgIHRoaXMuY2Fyb3VzZWwgPSBjYXJvdXNlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gYWN0dWFsaXphIGxhIHZhcmlhYmxlIHF1YW50aXR5IHN1bWFuZG9sZSAneCcgY29udGVuaWRvLlxuICAgICAqIFNpIGhheSB1biBtdWx0aXBsZVF1YW50aXR5IGNvbmZpZ3VyYWRvLCBoYWNlIHNuYXAgYWwgc2lndWllbnRlIG3Dumx0aXBsbyB2w6FsaWRvXG4gICAgICogY3VhbmRvIGxhIGNhbnRpZGFkIGFjdHVhbCB5YSBlcyBpbnbDoWxpZGEuXG4gICAgICogQHBhcmFtIHN0b2NrIG7Dum1lcm8gbcOheGltbyBkaXNwb25pYmxlIGVuIHN0b2NrLlxuICAgICAqIEBwYXJhbSBjaGFuZ2VBbW91bnQgY2FudGlkYWQgcXVlIHNlIHF1aWVyZSBzdW1hciAoaWdub3JhZG8gc2kgbXVsdGlwbGVRdHkgZXN0w6Egc2V0ZWFkbykuXG4gICAgICogQHBhcmFtIGZvcmNlTXVsdGlwbGUgbGVnYWN5IOKAlCBzaSBlcyB0cnVlLCBvYmxpZ2EgYSBxdWUgZWwgcmVzdWx0YWRvIHNlYSBtw7psdGlwbG8gZGUgY2hhbmdlQW1vdW50LlxuICAgICAqL1xuICAgIHBsdXMgPSAoc3RvY2s/OiBudW1iZXIsIGNoYW5nZUFtb3VudDogbnVtYmVyID0gMSwgZm9yY2VNdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLm11bHRpcGxlUXR5IHx8IGNoYW5nZUFtb3VudDtcbiAgICAgICAgY29uc3QgY3VycmVudFF1YW50aXR5ID0gTnVtYmVyKHRoaXMucXVhbnRpdHkpO1xuICAgICAgICBsZXQgbmV3UXVhbnRpdHk6IG51bWJlcjtcblxuICAgICAgICBpZiAoc3RlcCA+IDEpIHtcbiAgICAgICAgICAgIG5ld1F1YW50aXR5ID0gY3VycmVudFF1YW50aXR5ICUgc3RlcCAhPT0gMFxuICAgICAgICAgICAgICAgID8gTWF0aC5jZWlsKGN1cnJlbnRRdWFudGl0eSAvIHN0ZXApICogc3RlcFxuICAgICAgICAgICAgICAgIDogY3VycmVudFF1YW50aXR5ICsgc3RlcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1F1YW50aXR5ID0gY3VycmVudFF1YW50aXR5ICsgc3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RvY2sgfHwgbmV3UXVhbnRpdHkgPD0gc3RvY2spIHtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHkgPSBuZXdRdWFudGl0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdvdXQtb2Ytc3RvY2stYWN0dWFsbHknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbGlkYXRlRGV0YWlsKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFjdHVhbGl6YSBsYSB2YXJpYWJsZSBxdWFudGl0eSByZXN0YW5kb2xlICd4JyBjb250ZW5pZG8uXG4gICAgICogU2kgaGF5IHVuIG11bHRpcGxlUXVhbnRpdHkgY29uZmlndXJhZG8sIGhhY2Ugc25hcCBhbCBtw7psdGlwbG8gdsOhbGlkbyBpbmZlcmlvclxuICAgICAqIGN1YW5kbyBsYSBjYW50aWRhZCBhY3R1YWwgeWEgZXMgaW52w6FsaWRhLlxuICAgICAqIEBwYXJhbSBjaGFuZ2VBbW91bnQgY2FudGlkYWQgcXVlIHNlIHF1aWVyZSByZXN0YXIgKGlnbm9yYWRvIHNpIG11bHRpcGxlUXR5IGVzdMOhIHNldGVhZG8pLlxuICAgICAqIEBwYXJhbSBtaW5pbXVtIGNhbnRpZGFkIG3DrW5pbWEgcGVybWl0aWRhIChpZ25vcmFkbyBzaSBtaW5pbXVtSXRlbXNRdHkgZXN0w6Egc2V0ZWFkbykuXG4gICAgICogQHBhcmFtIGZvcmNlTXVsdGlwbGUgbGVnYWN5IOKAlCBzaSBlcyB0cnVlLCBvYmxpZ2EgYSBxdWUgZWwgcmVzdWx0YWRvIHNlYSBtw7psdGlwbG8gZGUgY2hhbmdlQW1vdW50LlxuICAgICAqL1xuICAgIGxlc3MgPSAoY2hhbmdlQW1vdW50OiBudW1iZXIgPSAxLCBtaW5pbXVtOiBudW1iZXIgPSAxLCBmb3JjZU11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMubXVsdGlwbGVRdHkgfHwgY2hhbmdlQW1vdW50O1xuICAgICAgICBjb25zdCBmbG9vciA9IHRoaXMubWluaW11bUl0ZW1zUXR5IHx8IChzdGVwID4gMSA/IHN0ZXAgOiBtaW5pbXVtKTtcbiAgICAgICAgbGV0IG5ld1F1YW50aXR5OiBudW1iZXI7XG5cbiAgICAgICAgaWYgKHN0ZXAgPiAxKSB7XG4gICAgICAgICAgICBuZXdRdWFudGl0eSA9IHRoaXMucXVhbnRpdHkgJSBzdGVwICE9PSAwXG4gICAgICAgICAgICAgICAgPyBNYXRoLmZsb29yKHRoaXMucXVhbnRpdHkgLyBzdGVwKSAqIHN0ZXBcbiAgICAgICAgICAgICAgICA6IHRoaXMucXVhbnRpdHkgLSBzdGVwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3UXVhbnRpdHkgPSB0aGlzLnF1YW50aXR5IC0gc3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVhbnRpdHkgPSBuZXdRdWFudGl0eSA+PSBmbG9vciA/IG5ld1F1YW50aXR5IDogZmxvb3I7XG4gICAgICAgIHRoaXMudmFsaWRhdGVEZXRhaWwoKTtcbiAgICB9XG5cbiAgICBvblF1YW50aXR5SW5wdXQgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgICAgICBpZiAoIWlzTmFOKHBhcnNlZCkpIHtcbiAgICAgICAgICAgIHRoaXMucXVhbnRpdHkgPSBwYXJzZWQ7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRlRGV0YWlsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZURldGFpbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWluaW11bUl0ZW1zUXR5ICYmIHRoaXMucXVhbnRpdHkgPCB0aGlzLm1pbmltdW1JdGVtc1F0eSkge1xuICAgICAgICAgICAgdGhpcy5xdWFudGl0eUVycm9yID0gJ0xhIGNhbnRpZGFkIGRlYmUgc2VyIGFsIG1lbm9zICcgKyB0aGlzLm1pbmltdW1JdGVtc1F0eTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm11bHRpcGxlUXR5ICYmIHRoaXMucXVhbnRpdHkgJSB0aGlzLm11bHRpcGxlUXR5ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnF1YW50aXR5RXJyb3IgPSAnTGEgY2FudGlkYWQgZGViZSBzZXIgbVxcdTAwZmFsdGlwbG8gZGUgJyArIHRoaXMubXVsdGlwbGVRdHk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1YW50aXR5RXJyb3IgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzUXVhbnRpdHlWYWxpZERldGFpbCA9ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWluaW11bUl0ZW1zUXR5ICYmIHRoaXMucXVhbnRpdHkgPCB0aGlzLm1pbmltdW1JdGVtc1F0eSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZVF0eSAmJiB0aGlzLnF1YW50aXR5ICUgdGhpcy5tdWx0aXBsZVF0eSAhPT0gMCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzaG93Q29udGFjdCA9ICgpID0+IHRoaXMuc2hvdyA9IHRydWU7XG4gICAgaGlkZUNvbnRhY3QgPSAoKSA9PiB0aGlzLnNob3cgPSBmYWxzZTtcblxuICAgIHRoZXJlSXNNb3JlSW5mbyA9IChwcm9kdWN0OiBhbnkpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKHByb2R1Y3Q/LnNwZWNpYWxfbWFyayAmJiBwcm9kdWN0Py5zcGVjaWFsX21hcmsubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBwcm9kdWN0Py5zcGVjaWFsX21hcms/LmZpbmQoc3BlY2lhbF9tYXJrID0+IHNwZWNpYWxfbWFyay50eXBlID09ICdtb3JlX2luZm8nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGNoYW5nZUltZ0ZvY3VzID0gKGltZykgPT4ge1xuICAgICAgICB0aGlzLmZvY3VzSW1hZ2UgPSBpbWdcbiAgICB9XG4gICAgY29weVByb2R1Y3RVcmwgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvcGllZCA9IGF3YWl0IHRoaXMuY29weVRleHRUb0NsaXBib2FyZCh0aGlzLmdldEN1cnJlbnRVcmwoKSk7XG4gICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KGNvcGllZCA/ICdzaGFyZS1saW5rLWNvcGllZCcgOiAnc2hhcmUtbGluay1jb3B5LWZhaWxlZCcpO1xuICAgIH1cblxuICAgIG9wZW5XaGF0c2FwcFNoYXJlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBzaGFyZVVybCA9IHRoaXMuYnVpbGRXaGF0c2FwcFNoYXJlVXJsKCk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgd2luZG93Lm9wZW4oc2hhcmVVcmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19