ng-easycommerce-v18 0.3.20-beta.1 → 0.3.20-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +1 -1
  2. package/esm2022/lib/constants/api.constants.service.mjs +15 -19
  3. package/esm2022/lib/constants/core.constants.service.mjs +5 -5
  4. package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -17
  5. package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +16 -26
  6. package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +21 -25
  7. package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +16 -4
  8. package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +6 -31
  9. package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +21 -29
  10. package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +7 -12
  11. package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +9 -18
  12. package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +6 -12
  13. package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -6
  14. package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
  15. package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -10
  16. package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +18 -17
  17. package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
  18. package/esm2022/lib/ec-services/index.mjs +1 -3
  19. package/esm2022/lib/interceptors/index.mjs +1 -2
  20. package/esm2022/lib/interfaces/environment.mjs +1 -1
  21. package/esm2022/lib/interfaces/filter.mjs +1 -1
  22. package/esm2022/lib/interfaces/index.mjs +1 -2
  23. package/esm2022/lib/interfaces/options.mjs +1 -1
  24. package/esm2022/lib/providers/index.mjs +1 -2
  25. package/fesm2022/ng-easycommerce-v18.mjs +208 -694
  26. package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
  27. package/lib/constants/api.constants.service.d.ts +0 -1
  28. package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
  29. package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
  30. package/lib/ec-components/filters-ec/filters-ec.component.d.ts +4 -12
  31. package/lib/ec-services/analytics/gtm.service.d.ts +1 -1
  32. package/lib/ec-services/index.d.ts +0 -2
  33. package/lib/interceptors/index.d.ts +0 -1
  34. package/lib/interfaces/environment.d.ts +0 -1
  35. package/lib/interfaces/filter.d.ts +0 -1
  36. package/lib/interfaces/index.d.ts +0 -1
  37. package/lib/interfaces/options.d.ts +0 -2
  38. package/lib/providers/index.d.ts +0 -1
  39. package/package.json +1 -1
  40. package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
  41. package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -190
  42. package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +0 -41
  43. package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
  44. package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -42
  45. package/lib/ec-services/base-api.service.d.ts +0 -64
  46. package/lib/ec-services/runtime-config.service.d.ts +0 -63
  47. package/lib/interceptors/runtime-config.interceptor.d.ts +0 -7
  48. package/lib/interfaces/runtime-config.d.ts +0 -22
  49. package/lib/providers/provideRuntimeConfig.d.ts +0 -13
@@ -29,10 +29,8 @@ export class MagnizoomEcComponent {
29
29
  this.document = inject(DOCUMENT); // Solo se inyecta en el navegador
30
30
  }
31
31
  afterRender(() => {
32
- if (isPlatformBrowser(this.platformId)) {
33
- this.initContext();
34
- this.loadImage(this.imageSrc);
35
- }
32
+ this.initContext();
33
+ this.loadImage(this.imageSrc);
36
34
  });
37
35
  }
38
36
  ngOnInit() {
@@ -44,7 +42,7 @@ export class MagnizoomEcComponent {
44
42
  this.context = this.canvas.getContext('2d');
45
43
  }
46
44
  loadImage(src) {
47
- if (isPlatformBrowser(this.platformId) && this.document) {
45
+ if (this.document) {
48
46
  this.image = this.document.createElement('img');
49
47
  this.image.onload = () => {
50
48
  this.lensSize = { width: this.image.width / 2, height: this.image.height / 2 };
@@ -177,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
177
175
  type: ViewChild,
178
176
  args: ['mainCanvas', { static: true }]
179
177
  }] } });
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnbml6b29tLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvbWFnbml6b29tLWVjL21hZ25pem9vbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL21hZ25pem9vbS1lYy9tYWduaXpvb20tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZbkksTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixRQUFRLEdBQW1CLElBQUksQ0FBQztJQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDeEIsSUFBYSxRQUFRLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ1EsUUFBUSxHQUFxQixPQUFPLENBQUM7SUFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRzlCLFVBQVUsQ0FBeUI7SUFDdkIsVUFBVSxDQUFNO0lBRWtCLGFBQWEsQ0FBYztJQUV0RSxNQUFNLENBQXFCO0lBQzNCLE9B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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWTtRQUNSLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDOUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXhLUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixxWENiakMsdVZBV0EseURERlcsWUFBWTs7NEZBSVYsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7d0RBU1AsUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHVCxVQUFVO3NCQUROLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFcUMsYUFBYTtzQkFBdkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBhZnRlclJlbmRlciwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFNpemUyRCB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB9XG50eXBlIFBvaW50MkQgPSB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdbYXBwLW1hZ25pem9vbS1lY10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL21hZ25pem9vbS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9tYWduaXpvb20tZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1hZ25pem9vbUVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBkb2N1bWVudDpEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cblx0cHJpdmF0ZSBpbWFnZVNyYzpzdHJpbmc9Jyc7XG4gICAgQElucHV0KCkgc2V0IEltYWdlU3JjKHZhbHVlOnN0cmluZykgeyBcbiAgICAgICAgdGhpcy5pbWFnZVNyYyA9IHZhbHVlOyBcbiAgICAgICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5pbWFnZVNyYyk7IFxuICAgIH1cbiAgICBASW5wdXQoKSB6b29tTW9kZTogJ0xFTlMnIHwgJ0NPVkVSJyA9ICdDT1ZFUic7XG4gICAgQElucHV0KCkgbWluWm9vbUZhY3RvciA9IDEuMjtcbiAgICBASW5wdXQoKSBtYXhab29tRmFjdG9yID0gMztcblxuICAgIEBJbnB1dCgpXG5cdGltYWdlU3R5bGUhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XG4gICAgQElucHV0KCkgaW1hZ2VDbGFzczogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5DYW52YXNSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgY2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgY29udGV4dCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGw7XG4gICAgaW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuXG4gICAgbW91c2VQb3NpdGlvbjogUG9pbnQyRCA9IG51bGw7XG4gICAgbGVuc1NpemU6IFNpemUyRCA9IHsgd2lkdGg6IDQwMCwgaGVpZ2h0OiAzMDAgfTtcbiAgICB6b29tRmFjdG9yID0gMjtcblxuICAgIGdldCBjYW52YXNXaWR0aCgpIHsgcmV0dXJuIHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS53aWR0aCB8fCA4MDA7IH1cbiAgICBnZXQgY2FudmFzSGVpZ2h0KCkgeyByZXR1cm4gdGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmhlaWdodCB8fCA2MDA7IH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7IC8vIFNvbG8gc2UgaW55ZWN0YSBlbiBlbCBuYXZlZ2Fkb3JcbiAgICAgICAgfVxuICAgICAgICBhZnRlclJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbnRleHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLmltYWdlU3JjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIG5nT25Jbml0KCkge1xuICAgICAgIC8qICB0aGlzLmluaXRDb250ZXh0KCk7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKHRoaXMuaW1hZ2VTcmMpOyAqL1xuICAgIH1cblxuICAgIGluaXRDb250ZXh0KCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jYW52YXMgPSAodGhpcy5tYWluQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTENhbnZhc0VsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cblxuICAgIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGVuc1NpemUgPSB7IHdpZHRoOiB0aGlzLmltYWdlLndpZHRoIC8gMiwgaGVpZ2h0OiB0aGlzLmltYWdlLmhlaWdodCAvIDIgfTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2Uuc3JjID0gc3JjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXHRcdGlmKHRoaXMuY29udGV4dCl7XG5cdFx0XHR0aGlzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzV2lkdGgsIHRoaXMuY2FudmFzSGVpZ2h0KTsgLy8gY2xlYXIgY2FudmFzXG5cdFx0XHR0aGlzLmNvbnRleHQubGluZVdpZHRoID0gMTsgLy8gYm9yZGVyIHdpZHRoXG5cdFx0XHR0aGlzLmNvbnRleHQuZHJhd0ltYWdlKHRoaXMuaW1hZ2UsIDAsIDApOyAvLyBiZyBpbWFnZVxuXG5cdFx0XHRpZiAodGhpcy5tb3VzZVBvc2l0aW9uKSB7XG5cdFx0XHRcdHN3aXRjaCAodGhpcy56b29tTW9kZSkge1xuXHRcdFx0XHRcdGNhc2UgJ0xFTlMnOiB0aGlzLnJlbmRlckxlbnNNb2RlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ0NPVkVSJzogdGhpcy5yZW5kZXJDb3Zlck1vZGUoKTsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG4gICAgfVxuXG4gICAgcmVuZGVyTGVuc01vZGUoKSB7XG5cdFx0aWYodGhpcy5jb250ZXh0KXtcbiAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVXaWR0aCA9IDU7IC8vIGJvcmRlciB3aWR0aFxuICAgICAgICBjb25zdCB6b29tUmVjdCA9IHRoaXMuZ2V0Wm9vbVJlY3QoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpbGxSZWN0KHpvb21SZWN0LngsIHpvb21SZWN0LnksIHpvb21SZWN0LncsIHpvb21SZWN0LmgpOyAvLyBiZyAoY2xlYXIpXG4gICAgICAgIGNvbnN0IGNsaXBwaW5nUmVjdCA9IHRoaXMuZ2V0Q2xpcHBpbmdSZWN0KCk7XG4gICAgICAgIC8vIHpvb20gaW1hZ2VcbiAgICAgICAgdGhpcy5jb250ZXh0LmRyYXdJbWFnZShcbiAgICAgICAgICAgIHRoaXMuaW1hZ2UsXG4gICAgICAgICAgICBjbGlwcGluZ1JlY3QueCwgY2xpcHBpbmdSZWN0LnksIGNsaXBwaW5nUmVjdC53LCBjbGlwcGluZ1JlY3QuaCxcbiAgICAgICAgICAgIHpvb21SZWN0LngsIHpvb21SZWN0LnksIHpvb21SZWN0LncsIHpvb21SZWN0LmhcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZVJlY3Qoem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaCk7IC8vIGJvcmRlclxuXHR9XG5cdH1cblxuICAgIHJlbmRlckNvdmVyTW9kZSgpIHtcbiAgICAgICAgY29uc3QgY292ZXJ0UmVjdCA9IHRoaXMuZ2V0Q292ZXJSZWN0KCk7XG4gICAgICAgIHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgdGhpcy5pbWFnZSxcbiAgICAgICAgICAgIGNvdmVydFJlY3QueCwgY292ZXJ0UmVjdC55LCBjb3ZlcnRSZWN0LncsIGNvdmVydFJlY3QuaCxcbiAgICAgICAgICAgIDAsIDAsIHRoaXMuY2FudmFzV2lkdGgsIHRoaXMuY2FudmFzSGVpZ2h0XG4gICAgICAgICk7IC8vIGNvdmVyIGltYWdlXG4gICAgfVxuXG4gICAgZ2V0Wm9vbVJlY3QoKSB7XG4gICAgICAgIGNvbnN0IHcgPSB0aGlzLmxlbnNTaXplLndpZHRoO1xuICAgICAgICBjb25zdCBoID0gdGhpcy5sZW5zU2l6ZS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLSAodyAvIDIpO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC0gKGggLyAyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xhbXBSZWN0KHgsIHksIHcsIGgpO1xuICAgIH1cblxuICAgIGdldENsaXBwaW5nUmVjdCgpIHtcbiAgICAgICAgY29uc3QgdyA9IHRoaXMubGVuc1NpemUud2lkdGggLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIGNvbnN0IGggPSB0aGlzLmxlbnNTaXplLmhlaWdodCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMubW91c2VQb3NpdGlvbiEueCAtICh3IC8gMik7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSAoaCAvIDIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgZ2V0Q292ZXJSZWN0KCkge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5jYW52YXNXaWR0aCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgaCA9IHRoaXMuY2FudmFzSGVpZ2h0IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICAvLyBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uLnggLSAodyAvIDIpO1xuICAgICAgICAvLyBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uLnkgLSAoaCAvIDIpO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgY2xhbXBSZWN0KHg6IG51bWJlciwgeTogbnVtYmVyLCB3OiBudW1iZXIsIGg6IG51bWJlcikge1xuICAgICAgICBpZiAoeCA8PSAwKSB7IHggPSAwOyB9XG4gICAgICAgIGlmICh4ICsgdyA+PSB0aGlzLmNhbnZhc1dpZHRoKSB7IHggPSB0aGlzLmNhbnZhc1dpZHRoIC0gdzsgfVxuICAgICAgICBpZiAoeSA8IDApIHsgeSA9IDA7IH1cbiAgICAgICAgaWYgKHkgKyBoID49IHRoaXMuY2FudmFzSGVpZ2h0KSB7IHkgPSB0aGlzLmNhbnZhc0hlaWdodCAtIGg7IH1cbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgdywgaCB9O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZU1vdXNlUG9zaXRpb24oY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gdGhpcy5jYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHZpZXdUb01vZGVsWCA9IHRoaXMuY2FudmFzV2lkdGggLyBib3VuZGluZ1JlY3Qud2lkdGg7XG4gICAgICAgIGNvbnN0IHZpZXdUb01vZGVsWSA9IHRoaXMuY2FudmFzSGVpZ2h0IC8gYm91bmRpbmdSZWN0LmhlaWdodDtcbiAgICAgICAgY29uc3QgeCA9IChjbGllbnRYIC0gYm91bmRpbmdSZWN0LmxlZnQpICogdmlld1RvTW9kZWxYO1xuICAgICAgICBjb25zdCB5ID0gKGNsaWVudFkgLSBib3VuZGluZ1JlY3QudG9wKSAqIHZpZXdUb01vZGVsWTtcbiAgICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0geyB4LCB5IH07XG4gICAgfVxuXG4gICAgb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyT3JNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTW91c2VQb3NpdGlvbihldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdab29tRmFjdG9yID0gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBuZXdab29tRmFjdG9yIC09IGV2ZW50LmRlbHRhWSAvIDEwMDA7XG4gICAgICAgIGlmIChuZXdab29tRmFjdG9yIDwgdGhpcy5taW5ab29tRmFjdG9yKSB7IG5ld1pvb21GYWN0b3IgPSB0aGlzLm1pblpvb21GYWN0b3I7IH1cbiAgICAgICAgaWYgKG5ld1pvb21GYWN0b3IgPiB0aGlzLm1heFpvb21GYWN0b3IpIHsgbmV3Wm9vbUZhY3RvciA9IHRoaXMubWF4Wm9vbUZhY3RvcjsgfVxuICAgICAgICBpZiAodGhpcy56b29tRmFjdG9yICE9PSBuZXdab29tRmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnpvb21GYWN0b3IgPSBuZXdab29tRmFjdG9yO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCI8Y2FudmFzICNtYWluQ2FudmFzXG4gIGNsYXNzPVwibWFpbi1jYW52YXNcIlxuICBbbmdDbGFzc109XCJpbWFnZUNsYXNzXCJcbiAgW25nU3R5bGVdPVwiaW1hZ2VTdHlsZVwiXG4gIFt3aWR0aF09XCJjYW52YXNXaWR0aFwiXG4gIFtoZWlnaHRdPVwiY2FudmFzSGVpZ2h0XCJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKCRldmVudClcIlxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXJPck1vdmUoJGV2ZW50KVwiXG4gIChtb3VzZW1vdmUpPVwib25Nb3VzZUVudGVyT3JNb3ZlKCRldmVudClcIlxuICAod2hlZWwpPVwib25Nb3VzZVNjcm9sbCgkZXZlbnQpXCI+XG48L2NhbnZhcz5cbiJdfQ==
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnbml6b29tLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvbWFnbml6b29tLWVjL21hZ25pem9vbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL21hZ25pem9vbS1lYy9tYWduaXpvb20tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZbkksTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixRQUFRLEdBQW1CLElBQUksQ0FBQztJQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDeEIsSUFBYSxRQUFRLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ1EsUUFBUSxHQUFxQixPQUFPLENBQUM7SUFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRzlCLFVBQVUsQ0FBeUI7SUFDdkIsVUFBVSxDQUFNO0lBRWtCLGFBQWEsQ0FBYztJQUV0RSxNQUFNLENBQXFCO0lBQzNCLE9B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QUFDLFVBQVUsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDOUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXRLUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixxWENiakMsdVZBV0EseURERlcsWUFBWTs7NEZBSVYsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7d0RBU1AsUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHVCxVQUFVO3NCQUROLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFcUMsYUFBYTtzQkFBdkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBhZnRlclJlbmRlciwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFNpemUyRCB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB9XG50eXBlIFBvaW50MkQgPSB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdbYXBwLW1hZ25pem9vbS1lY10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL21hZ25pem9vbS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9tYWduaXpvb20tZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1hZ25pem9vbUVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBkb2N1bWVudDpEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cblx0cHJpdmF0ZSBpbWFnZVNyYzpzdHJpbmc9Jyc7XG4gICAgQElucHV0KCkgc2V0IEltYWdlU3JjKHZhbHVlOnN0cmluZykgeyBcbiAgICAgICAgdGhpcy5pbWFnZVNyYyA9IHZhbHVlOyBcbiAgICAgICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5pbWFnZVNyYyk7IFxuICAgIH1cbiAgICBASW5wdXQoKSB6b29tTW9kZTogJ0xFTlMnIHwgJ0NPVkVSJyA9ICdDT1ZFUic7XG4gICAgQElucHV0KCkgbWluWm9vbUZhY3RvciA9IDEuMjtcbiAgICBASW5wdXQoKSBtYXhab29tRmFjdG9yID0gMztcblxuICAgIEBJbnB1dCgpXG5cdGltYWdlU3R5bGUhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XG4gICAgQElucHV0KCkgaW1hZ2VDbGFzczogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5DYW52YXNSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgY2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgY29udGV4dCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGw7XG4gICAgaW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuXG4gICAgbW91c2VQb3NpdGlvbjogUG9pbnQyRCA9IG51bGw7XG4gICAgbGVuc1NpemU6IFNpemUyRCA9IHsgd2lkdGg6IDQwMCwgaGVpZ2h0OiAzMDAgfTtcbiAgICB6b29tRmFjdG9yID0gMjtcblxuICAgIGdldCBjYW52YXNXaWR0aCgpIHsgcmV0dXJuIHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS53aWR0aCB8fCA4MDA7IH1cbiAgICBnZXQgY2FudmFzSGVpZ2h0KCkgeyByZXR1cm4gdGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmhlaWdodCB8fCA2MDA7IH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7IC8vIFNvbG8gc2UgaW55ZWN0YSBlbiBlbCBuYXZlZ2Fkb3JcbiAgICAgICAgICB9XG5cdFx0YWZ0ZXJSZW5kZXIoKCk9PiB7XG5cdFx0XHR0aGlzLmluaXRDb250ZXh0KCk7XG5cdFx0XHR0aGlzLmxvYWRJbWFnZSh0aGlzLmltYWdlU3JjKTtcblx0XHR9KVxuXHQgfVxuICAgIFxuICAgIG5nT25Jbml0KCkge1xuICAgICAgIC8qICB0aGlzLmluaXRDb250ZXh0KCk7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKHRoaXMuaW1hZ2VTcmMpOyAqL1xuICAgIH1cblxuICAgIGluaXRDb250ZXh0KCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jYW52YXMgPSAodGhpcy5tYWluQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTENhbnZhc0VsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cblxuICAgIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuXHRcdGlmKHRoaXMuZG9jdW1lbnQpe1xuXHRcdFx0dGhpcy5pbWFnZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cdFx0XHR0aGlzLmltYWdlLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5sZW5zU2l6ZSA9IHsgd2lkdGg6IHRoaXMuaW1hZ2Uud2lkdGggLyAyLCBoZWlnaHQ6IHRoaXMuaW1hZ2UuaGVpZ2h0IC8gMiB9O1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyKCkpO1xuXHRcdFx0fTtcblx0XHRcdHRoaXMuaW1hZ2Uuc3JjID0gc3JjO1xuXHRcdH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cdFx0aWYodGhpcy5jb250ZXh0KXtcblx0XHRcdHRoaXMuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNXaWR0aCwgdGhpcy5jYW52YXNIZWlnaHQpOyAvLyBjbGVhciBjYW52YXNcblx0XHRcdHRoaXMuY29udGV4dC5saW5lV2lkdGggPSAxOyAvLyBib3JkZXIgd2lkdGhcblx0XHRcdHRoaXMuY29udGV4dC5kcmF3SW1hZ2UodGhpcy5pbWFnZSwgMCwgMCk7IC8vIGJnIGltYWdlXG5cblx0XHRcdGlmICh0aGlzLm1vdXNlUG9zaXRpb24pIHtcblx0XHRcdFx0c3dpdGNoICh0aGlzLnpvb21Nb2RlKSB7XG5cdFx0XHRcdFx0Y2FzZSAnTEVOUyc6IHRoaXMucmVuZGVyTGVuc01vZGUoKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnQ09WRVInOiB0aGlzLnJlbmRlckNvdmVyTW9kZSgpOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cbiAgICB9XG5cbiAgICByZW5kZXJMZW5zTW9kZSgpIHtcblx0XHRpZih0aGlzLmNvbnRleHQpe1xuICAgICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gNTsgLy8gYm9yZGVyIHdpZHRoXG4gICAgICAgIGNvbnN0IHpvb21SZWN0ID0gdGhpcy5nZXRab29tUmVjdCgpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFJlY3Qoem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaCk7IC8vIGJnIChjbGVhcilcbiAgICAgICAgY29uc3QgY2xpcHBpbmdSZWN0ID0gdGhpcy5nZXRDbGlwcGluZ1JlY3QoKTtcbiAgICAgICAgLy8gem9vbSBpbWFnZVxuICAgICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgdGhpcy5pbWFnZSxcbiAgICAgICAgICAgIGNsaXBwaW5nUmVjdC54LCBjbGlwcGluZ1JlY3QueSwgY2xpcHBpbmdSZWN0LncsIGNsaXBwaW5nUmVjdC5oLFxuICAgICAgICAgICAgem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlUmVjdCh6b29tUmVjdC54LCB6b29tUmVjdC55LCB6b29tUmVjdC53LCB6b29tUmVjdC5oKTsgLy8gYm9yZGVyXG5cdH1cblx0fVxuXG4gICAgcmVuZGVyQ292ZXJNb2RlKCkge1xuICAgICAgICBjb25zdCBjb3ZlcnRSZWN0ID0gdGhpcy5nZXRDb3ZlclJlY3QoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICB0aGlzLmltYWdlLFxuICAgICAgICAgICAgY292ZXJ0UmVjdC54LCBjb3ZlcnRSZWN0LnksIGNvdmVydFJlY3QudywgY292ZXJ0UmVjdC5oLFxuICAgICAgICAgICAgMCwgMCwgdGhpcy5jYW52YXNXaWR0aCwgdGhpcy5jYW52YXNIZWlnaHRcbiAgICAgICAgKTsgLy8gY292ZXIgaW1hZ2VcbiAgICB9XG5cbiAgICBnZXRab29tUmVjdCgpIHtcbiAgICAgICAgY29uc3QgdyA9IHRoaXMubGVuc1NpemUud2lkdGg7XG4gICAgICAgIGNvbnN0IGggPSB0aGlzLmxlbnNTaXplLmhlaWdodDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMubW91c2VQb3NpdGlvbiEueCAtICh3IC8gMik7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSAoaCAvIDIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgZ2V0Q2xpcHBpbmdSZWN0KCkge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5sZW5zU2l6ZS53aWR0aCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgaCA9IHRoaXMubGVuc1NpemUuaGVpZ2h0IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC0gKHcgLyAyKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMubW91c2VQb3NpdGlvbiEueSAtIChoIC8gMik7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYW1wUmVjdCh4LCB5LCB3LCBoKTtcbiAgICB9XG5cbiAgICBnZXRDb3ZlclJlY3QoKSB7XG4gICAgICAgIGNvbnN0IHcgPSB0aGlzLmNhbnZhc1dpZHRoIC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCBoID0gdGhpcy5jYW52YXNIZWlnaHQgLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIC8vIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24ueCAtICh3IC8gMik7XG4gICAgICAgIC8vIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24ueSAtIChoIC8gMik7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYW1wUmVjdCh4LCB5LCB3LCBoKTtcbiAgICB9XG5cbiAgICBjbGFtcFJlY3QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHc6IG51bWJlciwgaDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh4IDw9IDApIHsgeCA9IDA7IH1cbiAgICAgICAgaWYgKHggKyB3ID49IHRoaXMuY2FudmFzV2lkdGgpIHsgeCA9IHRoaXMuY2FudmFzV2lkdGggLSB3OyB9XG4gICAgICAgIGlmICh5IDwgMCkgeyB5ID0gMDsgfVxuICAgICAgICBpZiAoeSArIGggPj0gdGhpcy5jYW52YXNIZWlnaHQpIHsgeSA9IHRoaXMuY2FudmFzSGVpZ2h0IC0gaDsgfVxuICAgICAgICByZXR1cm4geyB4LCB5LCB3LCBoIH07XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlTW91c2VQb3NpdGlvbihjbGllbnRYOiBudW1iZXIsIGNsaWVudFk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBib3VuZGluZ1JlY3QgPSB0aGlzLmNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld1RvTW9kZWxYID0gdGhpcy5jYW52YXNXaWR0aCAvIGJvdW5kaW5nUmVjdC53aWR0aDtcbiAgICAgICAgY29uc3Qgdmlld1RvTW9kZWxZID0gdGhpcy5jYW52YXNIZWlnaHQgLyBib3VuZGluZ1JlY3QuaGVpZ2h0O1xuICAgICAgICBjb25zdCB4ID0gKGNsaWVudFggLSBib3VuZGluZ1JlY3QubGVmdCkgKiB2aWV3VG9Nb2RlbFg7XG4gICAgICAgIGNvbnN0IHkgPSAoY2xpZW50WSAtIGJvdW5kaW5nUmVjdC50b3ApICogdmlld1RvTW9kZWxZO1xuICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb24gPSB7IHgsIHkgfTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXJPck1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNb3VzZVBvc2l0aW9uKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIG9uTW91c2VTY3JvbGwoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1pvb21GYWN0b3IgPSB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIG5ld1pvb21GYWN0b3IgLT0gZXZlbnQuZGVsdGFZIC8gMTAwMDtcbiAgICAgICAgaWYgKG5ld1pvb21GYWN0b3IgPCB0aGlzLm1pblpvb21GYWN0b3IpIHsgbmV3Wm9vbUZhY3RvciA9IHRoaXMubWluWm9vbUZhY3RvcjsgfVxuICAgICAgICBpZiAobmV3Wm9vbUZhY3RvciA+IHRoaXMubWF4Wm9vbUZhY3RvcikgeyBuZXdab29tRmFjdG9yID0gdGhpcy5tYXhab29tRmFjdG9yOyB9XG4gICAgICAgIGlmICh0aGlzLnpvb21GYWN0b3IgIT09IG5ld1pvb21GYWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuem9vbUZhY3RvciA9IG5ld1pvb21GYWN0b3I7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cbiIsIjxjYW52YXMgI21haW5DYW52YXNcbiAgY2xhc3M9XCJtYWluLWNhbnZhc1wiXG4gIFtuZ0NsYXNzXT1cImltYWdlQ2xhc3NcIlxuICBbbmdTdHlsZV09XCJpbWFnZVN0eWxlXCJcbiAgW3dpZHRoXT1cImNhbnZhc1dpZHRoXCJcbiAgW2hlaWdodF09XCJjYW52YXNIZWlnaHRcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlck9yTW92ZSgkZXZlbnQpXCJcbiAgKG1vdXNlbW92ZSk9XCJvbk1vdXNlRW50ZXJPck1vdmUoJGV2ZW50KVwiXG4gICh3aGVlbCk9XCJvbk1vdXNlU2Nyb2xsKCRldmVudClcIj5cbjwvY2FudmFzPlxuIl19
@@ -35,7 +35,7 @@ export class GoogleAnalyticsService {
35
35
  * @param gtm_id id provisto por Google Tag Manager.
36
36
  */
37
37
  initialize(gtm_id) {
38
- if (isPlatformBrowser(this.platformId) && this.document && !this.document.getElementById('google_tag_manager')) {
38
+ if (!document.getElementById('google_tag_manager')) {
39
39
  console.log('hay elemento');
40
40
  const declaration = this.renderer.createElement('script');
41
41
  declaration.async = true;
@@ -43,8 +43,8 @@ export class GoogleAnalyticsService {
43
43
  declaration.src = `https://www.googletagmanager.com/gtag/js?id=${gtm_id}`;
44
44
  const initialization = this.renderer.createElement('script');
45
45
  initialization.text = `window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${gtm_id}')`;
46
- this.renderer.appendChild(this.document.head, initialization);
47
- this.renderer.appendChild(this.document.head, declaration);
46
+ this.renderer.appendChild(this.document?.head, initialization);
47
+ this.renderer.appendChild(this.document?.head, declaration);
48
48
  this.enabled = true;
49
49
  }
50
50
  setTimeout(() => this.startListeningPageViews(gtm_id), 1000);
@@ -280,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
280
280
  providedIn: 'root'
281
281
  }]
282
282
  }], ctorParameters: () => [] });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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LE9BQU87WUFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDakMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSztZQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ3ZCLENBQUMsQ0FBQztZQUNILGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksY0FBYztZQUNoRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQztTQUM5QixDQUFBO0lBQ0YsQ0FBQztJQUVPLFFBQVEsQ0FBQyxJQUFTO1FBQ3pCLE9BQU87WUFDTixHQUFHLElBQUk7U0FDUCxDQUFBO0lBQ0YsQ0FBQzt3R0E3UVcsc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGdEIsTUFBTTs7NEZBRU4sc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNYLFVBQVUsRUFBRSxNQUFNO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbi8qKlxuICogRnVuY2lvbiBxdWUgc2VyYSBkYWRhIHBvciBlbCBzY3JpcHQgcXVlIHNlIGluc2VydGEgZW4gZWwgaW5pY2lhbGl6YWRvciBkZSBHb29nbGUgQW5hbHl0aWNzLlxuICovXG5kZWNsYXJlIHZhciBndGFnOiBGdW5jdGlvbjtcbmRlY2xhcmUgdmFyIGRhdGFMYXllcjogYW55W107XG5cbi8qKlxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIGdvb2dsZS5cbiAqIEBjbGFzcyBHb29nbGVBbmFseXRpY3NTZXJ2aWNlXG4gKi9cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZUFuYWx5dGljc1NlcnZpY2Uge1xuXHQvKipcblx0ICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXG5cdCAqIHF1ZSBzZSBwdWVkYSBlamVjdXRhciBlbCBzZXJ2aWNpby5cblx0ICovXG5cdHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblx0LyoqXG5cdCAqIEluZGljYSBjdWFuZG8gZWwgc2VydmljaW8gZXN0YSBoYWJpbGl0YWRvLlxuXHQgKi9cblx0cHJpdmF0ZSBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XG5cblx0cHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XG5cdHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IG51bGw7XG5cdHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cblx0LyoqXG5cdCAqIFNlcnZpY2lvIGRlIHJ1dGVvIGRlIGFuZ3VsYXIuXG5cdCAqL1xuXHRwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcblx0XHRcdHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpOyAvLyBTb2xvIHNlIGlueWVjdGEgZW4gZWwgbmF2ZWdhZG9yXG5cdFx0fVxuXHRcdHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcblx0fVxuXHQvKipcblx0ICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXG5cdCAqIEBwYXJhbSBndG1faWQgaWQgcHJvdmlzdG8gcG9yIEdvb2dsZSBUYWcgTWFuYWdlci5cblx0ICovXG5cdGluaXRpYWxpemUoZ3RtX2lkOiBzdHJpbmcpIHtcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLmRvY3VtZW50ICYmICF0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnb29nbGVfdGFnX21hbmFnZXInKSkge1xuXHRcdFx0Y29uc29sZS5sb2coJ2hheSBlbGVtZW50bycpXG5cdFx0XHRjb25zdCBkZWNsYXJhdGlvbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cdFx0XHRkZWNsYXJhdGlvbi5hc3luYyA9IHRydWU7XG5cdFx0XHRkZWNsYXJhdGlvbi5pZCA9ICdnb29nbGVfdGFnX21hbmFnZXInO1xuXHRcdFx0ZGVjbGFyYXRpb24uc3JjID0gYGh0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0YWcvanM/aWQ9JHtndG1faWR9YDtcblx0XHRcdGNvbnN0IGluaXRpYWxpemF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblx0XHRcdGluaXRpYWxpemF0aW9uLnRleHQgPSBgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107IGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30gZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsgZ3RhZygnY29uZmlnJywgJyR7Z3RtX2lkfScpYDtcblx0XHRcdHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCBpbml0aWFsaXphdGlvbik7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuaGVhZCwgZGVjbGFyYXRpb24pO1xuXHRcdFx0dGhpcy5lbmFibGVkID0gdHJ1ZTtcblx0XHR9XG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZCksIDEwMDApO1xuXHR9XG5cdC8qKlxuXHQgKiBcblx0ICogQHBhcmFtIGd0bV9pZCBcblx0ICovXG5cdHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdQYWdlVmlld3MoZ3RtX2lkOiBhbnkpIHtcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShcblx0XHRcdGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG5cdFx0KS5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG5cdFx0XHRndGFnKCdjb25maWcnLCBndG1faWQsIHtcblx0XHRcdFx0J3BhZ2VfcGF0aCc6IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzXG5cdFx0XHR9KVxuXHRcdH0pXG5cdH1cblx0LyoqXG5cdCAqIEVqZWN1dGEgZWwgZXZlbnRvIHBhc2FkbyBwb3IgcGFyYW1ldHJvLiBcblx0ICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG8uXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XG5cdFx0aWYgKCF0aGlzLmVuYWJsZWQpIHJldHVybjtcblx0XHRsZXQgZXZlbnQgPSB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKTtcblx0XHRldmVudCAmJiBndGFnKCdldmVudCcsIHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpLCB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSk7XG5cdH1cblx0LyoqXG5cdCAqIFRyYWR1Y2UgZWwgZXZlbnRvIHJlY2liaWRvIHkgZGV2dWVsdmUgZWwgbm9tYnJlIGRlIGxhIGZ1bmNpw7NuIHF1ZSBsbyB2YSBhIHRyYXRhci5cblx0ICogQHBhcmFtIGV2ZW50X25hbWUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0dHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXkpIHtcblx0XHRzd2l0Y2ggKGV2ZW50X25hbWUpIHtcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiAndmlld19pdGVtJztcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuICd2aWV3X2l0ZW1fbGlzdCc7XG5cdFx0XHRjYXNlICdjaGVja291dF9pbml0JzogcmV0dXJuICdiZWdpbl9jaGVja291dCc7XG5cdFx0XHRjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuICdhZGRfc2hpcHBpbmdfaW5mbyc7XG5cdFx0XHRjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuICdhZGRfcGF5bWVudF9pbmZvJztcblx0XHRcdGNhc2UgJ3B1cmNoYXNlJzogcmV0dXJuICdwdXJjaGFzZSc7XG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiAnYWRkX3RvX2NhcnQnO1xuXHRcdFx0Y2FzZSAncmVtb3ZlX2Zyb21fY2FydCc6IHJldHVybiAncmVtb3ZlX2Zyb21fY2FydCc7XG5cdFx0XHRjYXNlICdzaWduX3VwJzogcmV0dXJuICdzaWduX3VwJztcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBudWxsO1xuXHRcdFx0Ly9kZWZhdWx0OiByZXR1cm4gZXZlbnRfbmFtZTtcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEV2YWx1YSBlbCBldmVudG8geSBkZXZ1ZWx2ZSBsb3MgZGF0b3MgZGUgbGFzIGZ1bmNpb25lcyByZWxhY2lvbmFkYXMuXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXG5cdCAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcblx0XHRzd2l0Y2ggKGV2ZW50X25hbWUpIHtcblx0XHRcdGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XG5cdFx0XHRjYXNlICd2aWV3X2l0ZW1fbGlzdCc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW1MaXN0KGRhdGEpO1xuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiB0aGlzLnRvQ2hlY2tvdXRJbml0KGRhdGEpO1xuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xuXHRcdFx0Y2FzZSAnYWRkX3BheW1lbnRfaW5mbyc6IHJldHVybiB0aGlzLnRvUGF5bWVudEluZm8oZGF0YSk7XG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiB0aGlzLnRvUHVyY2hhc2UoZGF0YSk7XG5cdFx0XHRjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xuXHRcdFx0Y2FzZSAncmVtb3ZlX2Zyb21fY2FydCc6IHJldHVybiB0aGlzLnRvUmVtb3ZlVG9DYXJ0KGRhdGEpO1xuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiB0aGlzLnRvU2lnblVwKGRhdGEpO1xuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIGRhdGE7XG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aWVyZSBjb21wcmFyIHVuIHByb2R1Y3RvLlxuXHQgKiBAcGFyYW0gZGF0YSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcblx0XHRcdGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5LFxuXHRcdFx0c2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxuXHRcdFx0dGF4OiBkYXRhLnRvdGFscy50YXhlcyxcblx0XHRcdHZhbHVlOiBkYXRhLnRvdGFscy50b3RhbCxcblx0XHRcdHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcblx0XHRcdGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcblx0XHRcdFx0Y2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XG5cdFx0XHR9KSlcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW5pY2lhbGl6YSBlbiBjaGVja291dC5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcblx0XHRcdGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcblx0XHRcdFx0Y2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XG5cdFx0XHR9KSksXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9DYXJ0RGlzY291bnQoZGF0YTogYW55KSB7XG5cdFx0bGV0IHN0ckRpc2NvdW50ID0gJydcblx0XHRzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxuXHRcdHJldHVybiBzdHJEaXNjb3VudCA9PSAnJyA/ICdub3QtZGlzY291bnQnIDogc3RyRGlzY291bnRcblx0fVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBhZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0by4gXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9BZGRUb0NhcnQoZGF0YTogYW55KSB7XG5cdFx0bGV0IGxhc3RQcm9kdWN0ID0gZGF0YS5pdGVtcz8ubGVuZ3RoICYmIGRhdGEuaXRlbXNbZGF0YS5pdGVtcy5sZW5ndGggLSAxXVxuXHRcdHJldHVybiB7XG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuXHRcdFx0aXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXG5cdFx0XHR2YWx1ZTogbGFzdFByb2R1Y3QudG90YWwgfHwgMCxcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIENhbWJpYSBsYSB2YXJpYWJsZSAqKmVuYWJsZWQqKiBhIGBmYWxzZWBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRkaXNhYmxlKCkgeyB0aGlzLmVuYWJsZWQgPSBmYWxzZTsgfVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGEgbGFzIHZpc3RhIGRlbCBwcm9kdWN0by5cblx0ICogQHBhcmFtIHByb2R1Y3QgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSxcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0ocHJvZHVjdCldLFxuXHRcdFx0dmFsdWU6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gZWwgbGlzdGFkbyBkZSBwcm9kdWN0b3MuXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9WaWV3SXRlbUxpc3QoZGF0YTogYW55KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGl0ZW1zOiBkYXRhLnByb2R1Y3RzLm1hcCgocHJvZHVjdDogYW55KSA9PiB0aGlzLnRvSXRlbShwcm9kdWN0KSksXG5cdFx0XHRpdGVtX2xpc3RfbmFtZTogZGF0YS5pdGVtX2xpc3RfbmFtZSB8fCAnQ29sbGVjdGlvbicsXG5cdFx0XHRpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8ICdjb2xsZWN0aW9uJ1xuXHRcdH1cblx0fVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWl0YSB1biBpdGVtIGRlbCBjYXJyaXRvLlxuXHQgKiBAcGFyYW0gcHJvZHVjdCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xuXHRcdGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3Rcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3kgfHwgXCJVU0RcIixcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSwgLi4ucHJvZHVjdFBhcmFtIH0pXSxcblx0XHRcdHZhbHVlOiAocHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5wcmljZSkgKiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB0b0l0ZW0gPSAocHJvZHVjdDogYW55KSA9PiAoe1xuXHRcdGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxuXHRcdGl0ZW1faWQ6IHByb2R1Y3QuaWQsXG5cdFx0aXRlbV9icmFuZDogcHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBwcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuXHRcdGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXG5cdFx0cHJpY2U6IHByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcblx0XHRxdWFudGl0eTogcHJvZHVjdC5xdWFudGl0eSB8fCAxLFxuXHR9KVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBjb25zdWx0YSBsYSBpbmZvcm1hY2nDs24gZGUgcGFnby5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XG5cdFx0XHRcdGlkOiBpdGVtLnByb2R1Y3QuaWQsXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuXHRcdFx0XHRwcmljZTogaXRlbS50b3RhbCxcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcblx0XHRcdH0pKSxcblx0XHRcdHBheW1lbnRfdHlwZTogZGF0YS5wYXltZW50c1swXT8ubWV0aG9kPy5jb2RlIHx8ICdub3QtcGF5bWVudHMnLFxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxuXHRcdH1cblx0fVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBsb3MgbcOpdG9kb3MgZGUgZW52w61vLlxuXHQgKiBAcGFyYW0gZGF0YSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuXHRcdFx0aXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XG5cdFx0XHRcdGlkOiBpdGVtLnByb2R1Y3QuaWQsXG5cdFx0XHRcdG5hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuXHRcdFx0XHRjYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuXHRcdFx0XHRwcmljZTogaXRlbS50b3RhbCxcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHlcblx0XHRcdH0pKSxcblx0XHRcdHNoaXBwaW5nX3RpZXI6IGRhdGEuc2hpcG1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1zaGlwcGluZycsXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB0b1NpZ25VcChkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4uZGF0YVxuXHRcdH1cblx0fVxufVxuIl19
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2FuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTzlCOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFDbEM7OztPQUdHO0lBQ0ssUUFBUSxDQUFZO0lBQzVCOztPQUVHO0lBQ0ssT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDO1FBQ0MsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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SUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksSUFBSSxjQUFjO1lBQ2hFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssSUFBSSxDQUFDO1NBQzlCLENBQUE7SUFDRixDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVM7UUFDekIsT0FBTztZQUNOLEdBQUcsSUFBSTtTQUNQLENBQUE7SUFDRixDQUFDO3dHQTdRVyxzQkFBc0I7NEdBQXRCLHNCQUFzQixjQUZ0QixNQUFNOzs0RkFFTixzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNFdmVudEtleSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xuLyoqXG4gKiBGdW5jaW9uIHF1ZSBzZXJhIGRhZGEgcG9yIGVsIHNjcmlwdCBxdWUgc2UgaW5zZXJ0YSBlbiBlbCBpbmljaWFsaXphZG9yIGRlIEdvb2dsZSBBbmFseXRpY3MuXG4gKi9cbmRlY2xhcmUgdmFyIGd0YWc6IEZ1bmN0aW9uO1xuZGVjbGFyZSB2YXIgZGF0YUxheWVyOiBhbnlbXTtcblxuLyoqXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgZ29vZ2xlLlxuICogQGNsYXNzIEdvb2dsZUFuYWx5dGljc1NlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuXHRwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzU2VydmljZSB7XG5cdC8qKlxuXHQgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcblx0ICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxuXHQgKi9cblx0cHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xuXHQvKipcblx0ICogSW5kaWNhIGN1YW5kbyBlbCBzZXJ2aWNpbyBlc3RhIGhhYmlsaXRhZG8uXG5cdCAqL1xuXHRwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblx0cHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuXHQvKipcblx0ICogU2VydmljaW8gZGUgcnV0ZW8gZGUgYW5ndWxhci5cblx0ICovXG5cdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuXHRcdFx0dGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7IC8vIFNvbG8gc2UgaW55ZWN0YSBlbiBlbCBuYXZlZ2Fkb3Jcblx0XHR9XG5cdFx0dGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuXHR9XG5cdC8qKlxuXHQgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cblx0ICogQHBhcmFtIGd0bV9pZCBpZCBwcm92aXN0byBwb3IgR29vZ2xlIFRhZyBNYW5hZ2VyLlxuXHQgKi9cblx0aW5pdGlhbGl6ZShndG1faWQ6IHN0cmluZykge1xuXHRcdGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZV90YWdfbWFuYWdlcicpKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnaGF5IGVsZW1lbnRvJylcblx0XHRcdGNvbnN0IGRlY2xhcmF0aW9uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblx0XHRcdGRlY2xhcmF0aW9uLmFzeW5jID0gdHJ1ZTtcblx0XHRcdGRlY2xhcmF0aW9uLmlkID0gJ2dvb2dsZV90YWdfbWFuYWdlcic7XG5cdFx0XHRkZWNsYXJhdGlvbi5zcmMgPSBgaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ke2d0bV9pZH1gO1xuXHRcdFx0Y29uc3QgaW5pdGlhbGl6YXRpb24gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuXHRcdFx0aW5pdGlhbGl6YXRpb24udGV4dCA9IGB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsgZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fSBndGFnKCdqcycsIG5ldyBEYXRlKCkpOyBndGFnKCdjb25maWcnLCAnJHtndG1faWR9JylgO1xuXHRcdFx0dGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50Py5oZWFkLCBpbml0aWFsaXphdGlvbik7XG5cdFx0XHR0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQ/LmhlYWQsIGRlY2xhcmF0aW9uKTtcblx0XHRcdHRoaXMuZW5hYmxlZCA9IHRydWU7XG5cdFx0fVxuXHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdGFydExpc3RlbmluZ1BhZ2VWaWV3cyhndG1faWQpLCAxMDAwKTtcblx0fVxuXHQvKipcblx0ICogXG5cdCAqIEBwYXJhbSBndG1faWQgXG5cdCAqL1xuXHRwcml2YXRlIHN0YXJ0TGlzdGVuaW5nUGFnZVZpZXdzKGd0bV9pZDogYW55KSB7XG5cdFx0dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG5cdFx0XHRmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuXHRcdCkuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuXHRcdFx0Z3RhZygnY29uZmlnJywgZ3RtX2lkLCB7XG5cdFx0XHRcdCdwYWdlX3BhdGgnOiBldmVudC51cmxBZnRlclJlZGlyZWN0c1xuXHRcdFx0fSlcblx0XHR9KVxuXHR9XG5cdC8qKlxuXHQgKiBFamVjdXRhIGVsIGV2ZW50byBwYXNhZG8gcG9yIHBhcmFtZXRyby4gXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxuXHQgKiBAcGFyYW0gZGF0YSBEYXRhIGV4dHJhIHBhcmEgYWdyZWdhciBhbCBldmVudG8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Y2FsbEV2ZW50KGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXksIGRhdGEgPSB7fSkge1xuXHRcdGlmICghdGhpcy5lbmFibGVkKSByZXR1cm47XG5cdFx0bGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XG5cdFx0ZXZlbnQgJiYgZ3RhZygnZXZlbnQnLCB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKSwgdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkpO1xuXHR9XG5cdC8qKlxuXHQgKiBUcmFkdWNlIGVsIGV2ZW50byByZWNpYmlkbyB5IGRldnVlbHZlIGVsIG5vbWJyZSBkZSBsYSBmdW5jacOzbiBxdWUgbG8gdmEgYSB0cmF0YXIuXG5cdCAqIEBwYXJhbSBldmVudF9uYW1lIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5KSB7XG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XG5cdFx0XHRjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gJ3ZpZXdfaXRlbSc7XG5cdFx0XHRjYXNlICd2aWV3X2l0ZW1fbGlzdCc6IHJldHVybiAndmlld19pdGVtX2xpc3QnO1xuXHRcdFx0Y2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiAnYmVnaW5fY2hlY2tvdXQnO1xuXHRcdFx0Y2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiAnYWRkX3NoaXBwaW5nX2luZm8nO1xuXHRcdFx0Y2FzZSAnYWRkX3BheW1lbnRfaW5mbyc6IHJldHVybiAnYWRkX3BheW1lbnRfaW5mbyc7XG5cdFx0XHRjYXNlICdwdXJjaGFzZSc6IHJldHVybiAncHVyY2hhc2UnO1xuXHRcdFx0Y2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gJ2FkZF90b19jYXJ0Jztcblx0XHRcdGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gJ3JlbW92ZV9mcm9tX2NhcnQnO1xuXHRcdFx0Y2FzZSAnc2lnbl91cCc6IHJldHVybiAnc2lnbl91cCc7XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gbnVsbDtcblx0XHRcdC8vZGVmYXVsdDogcmV0dXJuIGV2ZW50X25hbWU7XG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxuXHQgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50b1xuXHQgKiBAcGFyYW0gZGF0YSBEYXRhIGV4dHJhIHBhcmEgYWdyZWdhciBhbCBldmVudG9cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRldmFsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YTogYW55KSB7XG5cdFx0c3dpdGNoIChldmVudF9uYW1lKSB7XG5cdFx0XHRjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtKGRhdGEpO1xuXHRcdFx0Y2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcblx0XHRcdGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcblx0XHRcdGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gdGhpcy50b1NoaXBwaW5nSW5mbyhkYXRhKTtcblx0XHRcdGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xuXHRcdFx0Y2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xuXHRcdFx0Y2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gdGhpcy50b0FkZFRvQ2FydChkYXRhKTtcblx0XHRcdGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcblx0XHRcdGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcblx0XHRcdGRlZmF1bHQ6IHJldHVybiBkYXRhO1xuXHRcdH1cblx0fVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWllcmUgY29tcHJhciB1biBwcm9kdWN0by5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG5cdFx0XHRjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcblx0XHRcdHNoaXBwaW5nOiBkYXRhLnRvdGFscy5zaGlwcGluZyxcblx0XHRcdHRheDogZGF0YS50b3RhbHMudGF4ZXMsXG5cdFx0XHR2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXG5cdFx0XHR0cmFuc2FjdGlvbl9pZDogZGF0YS5udW1iZXIsXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcblx0XHRcdFx0bmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxuXHRcdFx0XHRxdWFudGl0eTogaXRlbS5xdWFudGl0eVxuXHRcdFx0fSkpXG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9DaGVja291dEluaXQoZGF0YTogYW55KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcblx0XHRcdGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG5cdFx0XHRpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcblx0XHRcdFx0aWQ6IGl0ZW0ucHJvZHVjdC5pZCxcblx0XHRcdFx0bmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXG5cdFx0XHRcdGNhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXG5cdFx0XHRcdHByaWNlOiBpdGVtLnRvdGFsLFxuXHRcdFx0XHRxdWFudGl0eTogaXRlbS5xdWFudGl0eVxuXHRcdFx0fSkpLFxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxuXHRcdH1cblx0fVxuXHQvKipcblx0ICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGNvbiBsb3MgZGVzY3VlbnRvcyBlbiBlbCBjYXJyaXRvLlxuXHQgKiBAcGFyYW0gZGF0YSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvQ2FydERpc2NvdW50KGRhdGE6IGFueSkge1xuXHRcdGxldCBzdHJEaXNjb3VudCA9ICcnXG5cdFx0c3RyRGlzY291bnQgPSBkYXRhLmNhcnREaXNjb3VudHMubWFwKChpdGVtRGlzY291bnQ6IGFueSkgPT4gaXRlbURpc2NvdW50Py50eXBlKS5qb2luKClcblx0XHRyZXR1cm4gc3RyRGlzY291bnQgPT0gJycgPyAnbm90LWRpc2NvdW50JyA6IHN0ckRpc2NvdW50XG5cdH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgYWdyZWdhIHVuIHByb2R1Y3RvIGFsIGNhcnJpdG8uIFxuXHQgKiBAcGFyYW0gZGF0YSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xuXHRcdGxldCBsYXN0UHJvZHVjdCA9IGRhdGEuaXRlbXM/Lmxlbmd0aCAmJiBkYXRhLml0ZW1zW2RhdGEuaXRlbXMubGVuZ3RoIC0gMV1cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcblx0XHRcdGl0ZW1zOiBbdGhpcy50b0l0ZW0oeyBxdWFudGl0eTogbGFzdFByb2R1Y3QucXVhbnRpdHksIC4uLmxhc3RQcm9kdWN0LnByb2R1Y3QgfSldLFxuXHRcdFx0dmFsdWU6IGxhc3RQcm9kdWN0LnRvdGFsIHx8IDAsXG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0ZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2U7IH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhIGxhcyB2aXN0YSBkZWwgcHJvZHVjdG8uXG5cdCAqIEBwYXJhbSBwcm9kdWN0IFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3ksXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHByb2R1Y3QpXSxcblx0XHRcdHZhbHVlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuXHQgKiBAcGFyYW0gZGF0YSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRwcml2YXRlIHRvVmlld0l0ZW1MaXN0KGRhdGE6IGFueSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxuXHRcdFx0aXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxuXHRcdFx0aXRlbV9saXN0X2lkOiBkYXRhLml0ZW1fbGlzdF9pZCB8fCAnY29sbGVjdGlvbidcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpdGEgdW4gaXRlbSBkZWwgY2Fycml0by5cblx0ICogQHBhcmFtIHByb2R1Y3QgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcblx0XHRsZXQgcHJvZHVjdFBhcmFtID0gcHJvZHVjdC5wcm9kdWN0XG5cdFx0cmV0dXJuIHtcblx0XHRcdGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5IHx8IFwiVVNEXCIsXG5cdFx0XHRpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHksIC4uLnByb2R1Y3RQYXJhbSB9KV0sXG5cdFx0XHR2YWx1ZTogKHByb2R1Y3RQYXJhbS52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3RQYXJhbS52YXJpYW50c1swXT8ucHJpY2UpICogcHJvZHVjdC5xdWFudGl0eSB8fCAxLFxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcblx0XHRpdGVtX25hbWU6IHByb2R1Y3QubmFtZSxcblx0XHRpdGVtX2lkOiBwcm9kdWN0LmlkLFxuXHRcdGl0ZW1fYnJhbmQ6IHByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gcHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcblx0XHRpdGVtX2NhdGVnb3J5OiBwcm9kdWN0LmNhdGVnb3J5LFxuXHRcdHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG5cdFx0cXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcblx0fSlcblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXG5cdCAqIEBwYXJhbSBkYXRhIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgdG9QYXltZW50SW5mbyhkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcblx0XHRcdGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcblx0XHRcdFx0Y2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XG5cdFx0XHR9KSksXG5cdFx0XHRwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcblx0XHRcdHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gbG9zIG3DqXRvZG9zIGRlIGVudsOtby5cblx0ICogQHBhcmFtIGRhdGEgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0cHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuXHRcdFx0Y3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcblx0XHRcdGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuXHRcdFx0XHRpZDogaXRlbS5wcm9kdWN0LmlkLFxuXHRcdFx0XHRuYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcblx0XHRcdFx0Y2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcblx0XHRcdFx0cHJpY2U6IGl0ZW0udG90YWwsXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5XG5cdFx0XHR9KSksXG5cdFx0XHRzaGlwcGluZ190aWVyOiBkYXRhLnNoaXBtZW50c1swXT8ubWV0aG9kPy5jb2RlIHx8ICdub3Qtc2hpcHBpbmcnLFxuXHRcdFx0dmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmRhdGFcblx0XHR9XG5cdH1cbn1cbiJdfQ==
@@ -25,7 +25,6 @@ export class GTMService {
25
25
  window;
26
26
  rendererFactory = inject(RendererFactory2);
27
27
  document = null;
28
- platformId = inject(PLATFORM_ID);
29
28
  /**
30
29
  * Servicio de ruteo de angular.
31
30
  */
@@ -34,7 +33,7 @@ export class GTMService {
34
33
  * Configuración de Google Tag Manager.
35
34
  */
36
35
  config = { id: null };
37
- // private platformId: any = inject(PLATFORM_ID) // Eliminada duplicidad, ya está declarada arriba
36
+ platformId = inject(PLATFORM_ID);
38
37
  constructor() {
39
38
  this.renderer = this.rendererFactory.createRenderer(null, null);
40
39
  if (isPlatformBrowser(this.platformId)) {
@@ -67,15 +66,12 @@ export class GTMService {
67
66
  */
68
67
  addGtmToDom() {
69
68
  return new Promise((resolve, reject) => {
70
- if (!isPlatformBrowser(this.platformId) || !this.document) {
71
- // No manipular el DOM en SSR
72
- return resolve(false);
73
- }
74
69
  if (this.isLoaded) {
75
70
  return resolve(this.isLoaded);
76
71
  }
72
+ //const doc = this.browserGlobals.documentRef();
77
73
  this.pushOnDataLayer({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
78
- const gtmScript = this.document.createElement('script');
74
+ const gtmScript = this.document?.createElement('script'); //doc.createElement('script');
79
75
  if (gtmScript) {
80
76
  gtmScript.id = 'GTMscript';
81
77
  gtmScript.async = true;
@@ -86,7 +82,7 @@ export class GTMService {
86
82
  gtmScript.addEventListener('error', () => {
87
83
  return reject(false);
88
84
  });
89
- this.document.head.insertBefore(gtmScript, this.document.head.firstChild);
85
+ this.document?.head.insertBefore(gtmScript, this.document.head.firstChild);
90
86
  }
91
87
  });
92
88
  }
@@ -103,7 +99,7 @@ export class GTMService {
103
99
  initialize(config) {
104
100
  this.config = config || this.config;
105
101
  this.addGtmToDom().then(() => {
106
- this.router.events.forEach((item) => {
102
+ this.router.events.forEach(item => {
107
103
  if (item instanceof NavigationEnd) {
108
104
  const gtmTag = {
109
105
  event: 'page',
@@ -415,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
415
411
  providedIn: 'root'
416
412
  }]
417
413
  }], ctorParameters: () => [] });
418
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ2pDLFVBQVUsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUM7O09BRUc7SUFDSyxNQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDOztPQUVHO0lBQ0ssTUFBTSxHQUEyQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNyRCxrR0FBa0c7SUFDbEc7UUFDSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lB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Y0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUk7WUFDdEMsZUFBZSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzlCLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7U0FDbEMsQ0FBQTtJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLElBQVM7UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixPQUFPO1lBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1NBQzNCLENBQUE7SUFDTCxDQUFDO3dHQTFaUSxVQUFVOzRHQUFWLFVBQVUsY0FGUCxNQUFNOzs0RkFFVCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyUmVuZGVyLCBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXksIEdvb2dsZVRhZ01hbmFnZXJDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuLyoqXG4gKiBTZXJ2aWNpbyBxdWUgc2UgZW5jYXJnYSBkZSBtYW5lamFyIGVsIGFuYWx5dGljcyBkZSBHVE0uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgR1RNU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIHNlIGVzdGEgY2FyZ2FuZG8gZWwgc2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEluZGljYSBjdWFuZG8gZWwgc2VydmljaW8gZXN0YSBoYWJpbGl0YWRvLlxuICAgICAqL1xuICAgIHByaXZhdGUgZW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFNlIGVuY2FyZ2EgZGUgY3JlYXIgZWwgZWxlbWVudG8gSFRNTCBjb24gbGFzIGNvbmZpZ3VyYWNpb25lcyBwYXJhIFxuICAgICAqIHF1ZSBzZSBwdWVkYSBlamVjdXRhciBlbCBzZXJ2aWNpby5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gICAgLyoqXG4gICAgICogQWxtYWNlbmEgZWwgb2JqZWN0byB3aW5kb3cgZGVsIG5hdmVnYWRvci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHdpbmRvdz86IFdpbmRvdztcblxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpO1xuICAgIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICAgIC8qKlxuICAgICAqIFNlcnZpY2lvIGRlIHJ1dGVvIGRlIGFuZ3VsYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpZzogR29vZ2xlVGFnTWFuYWdlckNvbmZpZyA9IHsgaWQ6IG51bGwgfVxuICAgIC8vIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKSAvLyBFbGltaW5hZGEgZHVwbGljaWRhZCwgeWEgZXN0w6EgZGVjbGFyYWRhIGFycmliYVxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvdyA9IHdpbmRvdztcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgZGF0YUxheWVyIGRlbCBvYmplY3RvIHdpbmRvd1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREYXRhTGF5ZXIoKTogYW55W10ge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLndpbmRvdztcbiAgICAgICAgLyogaWYod2luZG93KVxuICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5kYXRhTGF5ZXI7ICovXG4gICAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZ3JlZ2EgZGF0b3MgYWwgZGF0YUxheWVyLlxuICAgICAqIEBwYXJhbSBvYmogXG4gICAgICovXG4gICAgcHJpdmF0ZSBwdXNoT25EYXRhTGF5ZXIob2JqOiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGF0YUxheWVyID0gdGhpcy5nZXREYXRhTGF5ZXIoKTtcbiAgICAgICAgZGF0YUxheWVyLnB1c2gob2JqKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWdyZWdhIGVsIHNjcmlwdCBkZSBHVE0gcGFyYSBxdWUgZW1waWVjZSBhIGNhcHR1cmFyIGV2ZW50b3MuXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIGFkZEd0bVRvRG9tKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoXG4gICAgICAgICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vIG1hbmlwdWxhciBlbCBET00gZW4gU1NSXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKHsgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLCBldmVudDogJ2d0bS5qcycgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBndG1TY3JpcHQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgIGlmKGd0bVNjcmlwdCl7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuc3JjID0gdGhpcy5hcHBseUd0bVF1ZXJ5UGFyYW1zKHRoaXMuY29uZmlnW1wiZ3RtX3Jlc291cmNlX3BhdGhcIl0gPyB0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcycpO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaXNMb2FkZWQgPSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5oZWFkLmluc2VydEJlZm9yZShndG1TY3JpcHQsIHRoaXMuZG9jdW1lbnQuaGVhZC5maXJzdENoaWxkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUd0bVF1ZXJ5UGFyYW1zKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XG4gICAgICAgICAgICB1cmwgKz0gJz8nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodXJsICsgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmZpbHRlcigoaykgPT4gdGhpcy5jb25maWdba10pLm1hcCgoaykgPT4gYCR7a309JHt0aGlzLmNvbmZpZ1trXVxuICAgICAgICAgICAgfWApLmpvaW4oJyYnKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaWNpYWxpemEgZWwgU2VydmljaW8gZGUgYW5hbHl0aWNzIGNvbiBzdXMgY29uZmlndXJhY2lvbmVzLlxuICAgICAqIEBwYXJhbSBjb25maWcgQ29uZmlndXJhY2lvbmVzIGRlIEdvb2dsZSBUYWcgTWFuYWdlclxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplKGNvbmZpZzogR29vZ2xlVGFnTWFuYWdlckNvbmZpZykge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyB8fCB0aGlzLmNvbmZpZztcbiAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBndG1UYWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogJ3BhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaFRhZyhndG1UYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBwdXNoVGFnKGl0ZW06IG9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiByZWplY3QoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFamVjdXRhIGVsIGV2ZW50byBwYXNhZG8gcG9yIHBhcmFtZXRyby4gXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG8uXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSByZXR1cm47XG4gICAgICAgIGxldCBldmVudCA9IHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpO1xuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcbiAgICAgICAgZXZlbnQgJiYgdGhpcy5wdXNoVGFnKHsgJ2V2ZW50JzogdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSksIGVjb21tZXJjZTogdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkgfSlcbiAgICB9XG4gICAgLyoqXG4gICAgICogVHJhZHVjZSBlbCBldmVudG8gcmVjaWJpZG8geSBkZXZ1ZWx2ZSBlbCBub21icmUgZGUgbGEgZnVuY2nDs24gcXVlIGxvIHZhIGEgdHJhdGFyLlxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuICd2aWV3X2l0ZW0nO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gJ2FkZF9zaGlwcGluZ19pbmZvJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuICdhZGRfdG9fY2FydCc7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X3Byb21vdGlvbic6IHJldHVybiAnc2VsZWN0X3Byb21vdGlvbic7XG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfaXRlbSc6IHJldHVybiAnc2VsZWN0X2l0ZW0nO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZhbHVhIGVsIGV2ZW50byB5IGRldnVlbHZlIGxvcyBkYXRvcyBkZSBsYXMgZnVuY2lvbmVzIHJlbGFjaW9uYWRhcy5cbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50b1xuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gdGhpcy50b1NoaXBwaW5nSW5mbyhkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gdGhpcy50b0FkZFRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9wcm9tb3Rpb24nOiByZXR1cm4gdGhpcy50b1NlbGVjdFByb21vdGlvbihkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWllcmUgY29tcHJhciB1biBwcm9kdWN0by5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcbiAgICAgICAgICAgIHNoaXBwaW5nOiBkYXRhLnRvdGFscy5zaGlwcGluZyxcbiAgICAgICAgICAgIHRheDogZGF0YS50b3RhbHMudGF4ZXMsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogZGF0YS5udW1iZXIsXG4gICAgICAgICAgICBjb3VudEl0ZW1zOiBkYXRhLml0ZW1zPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGl0ZW1fdmFyaWFudDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5IHx8IDEsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcbiAgICAgICAgc3RyRGlzY291bnQgPSBkYXRhLmNhcnREaXNjb3VudHMubWFwKChpdGVtRGlzY291bnQ6IGFueSkgPT4gaXRlbURpc2NvdW50Py50eXBlKS5qb2luKClcbiAgICAgICAgcmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xuICAgICAgICBsZXQgbGFzdFByb2R1Y3QgPSBkYXRhLml0ZW1zPy5sZW5ndGggJiYgZGF0YS5pdGVtc1tkYXRhLml0ZW1zLmxlbmd0aCAtIDFdXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXG4gICAgICAgICAgICB2YWx1ZTogbGFzdFByb2R1Y3QudG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhIGxhcyB2aXN0YSBkZWwgcHJvZHVjdG8uXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3ksXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcbiAgICAgICAgICAgIGl0ZW1zOiBbdGhpcy50b0l0ZW0ocHJvZHVjdCldXG5cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9WaWV3SXRlbUxpc3QoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxuICAgICAgICAgICAgaXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxuICAgICAgICAgICAgaXRlbV9saXN0X2lkOiBkYXRhLml0ZW1fbGlzdF9pZCB8fCAwXG4gICAgICAgIH1cblxuXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpdGEgdW4gaXRlbSBkZWwgY2Fycml0by5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xuICAgICAgICBsZXQgcHJvZHVjdFBhcmFtID0gcHJvZHVjdC5wcm9kdWN0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5LCAuLi5wcm9kdWN0UGFyYW0gfSldLFxuICAgICAgICAgICAgdmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcbiAgICAgICAgaXRlbV9pZDogcHJvZHVjdC5pZCxcbiAgICAgICAgaXRlbV9uYW1lOiBwcm9kdWN0Lm5hbWUsXG4gICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICBkaXNjb3VudDogcHJvZHVjdC5kaXNjb3VudCB8fCAwLFxuICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXG4gICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgIGl0ZW1fdmFyaWFudDogcHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXG4gICAgfSlcbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGNvbnN1bHRhIGxhIGluZm9ybWFjacOzbiBkZSBwYWdvLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9QYXltZW50SW5mbyhkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9uYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcbiAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gbG9zIG3DqXRvZG9zIGRlIGVudsOtby5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcbiAgICAgICAgICAgIHNoaXBwaW5nX3RpZXI6IGRhdGEuc2hpcG1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1zaGlwcGluZycsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5kYXRhXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2VsZWN0UHJvbW90aW9uKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb21vdGlvbl9pZDogZGF0YS5pZCB8fCAnJyxcbiAgICAgICAgICAgIHByb21vdGlvbl9uYW1lOiBkYXRhLmNvZGUgfHwgZGF0YS5uYW1lLFxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxuICAgICAgICAgICAgbG9jYXRpb25faWQ6IGRhdGEucHJpb3JpdHkgfHwgMFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzYXByYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhbCBzZWxlY2Npb25hciB1biBpdGVtLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFD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O0lBQ0Q7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFBO0lBQ0wsQ0FBQzt3R0F0WlEsVUFBVTs0R0FBVixVQUFVLGNBRlAsTUFBTTs7NEZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlclJlbmRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmFseXRpY0V2ZW50S2V5LCBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbi8qKlxuICogU2VydmljaW8gcXVlIHNlIGVuY2FyZ2EgZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgR1RNLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEdUTVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHByaXZhdGUgaXNMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xuICAgIC8qKlxuICAgICAqIEFsbWFjZW5hIGVsIG9iamVjdG8gd2luZG93IGRlbCBuYXZlZ2Fkb3IuXG4gICAgICovXG4gICAgcHJpdmF0ZSB3aW5kb3c/OiBXaW5kb3c7XG5cbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIFNlcnZpY2lvIGRlIHJ1dGVvIGRlIGFuZ3VsYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvbmZpZzogR29vZ2xlVGFnTWFuYWdlckNvbmZpZyA9IHsgaWQ6IG51bGwgfVxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLndpbmRvdyA9IHdpbmRvd1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCBkYXRhTGF5ZXIgZGVsIG9iamVjdG8gd2luZG93XG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHVibGljIGdldERhdGFMYXllcigpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMud2luZG93O1xuICAgICAgICAvKiBpZih3aW5kb3cpXG4gICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdO1xuICAgICAgICByZXR1cm4gd2luZG93LmRhdGFMYXllcjsgKi9cbiAgICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFncmVnYSBkYXRvcyBhbCBkYXRhTGF5ZXIuXG4gICAgICogQHBhcmFtIG9iaiBcbiAgICAgKi9cbiAgICBwcml2YXRlIHB1c2hPbkRhdGFMYXllcihvYmo6IG9iamVjdCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRhTGF5ZXIgPSB0aGlzLmdldERhdGFMYXllcigpO1xuICAgICAgICBkYXRhTGF5ZXIucHVzaChvYmopO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZ3JlZ2EgZWwgc2NyaXB0IGRlIEdUTSBwYXJhIHF1ZSBlbXBpZWNlIGEgY2FwdHVyYXIgZXZlbnRvcy5cbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkR3RtVG9Eb20oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShcbiAgICAgICAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmlzTG9hZGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy9jb25zdCBkb2MgPSB0aGlzLmJyb3dzZXJHbG9iYWxzLmRvY3VtZW50UmVmKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoeyAnZ3RtLnN0YXJ0JzogbmV3IERhdGUoKS5nZXRUaW1lKCksIGV2ZW50OiAnZ3RtLmpzJyB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGd0bVNjcmlwdCA9IHRoaXMuZG9jdW1lbnQ/LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpIC8vZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICAgICAgICAgIGlmKGd0bVNjcmlwdCl7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuc3JjID0gdGhpcy5hcHBseUd0bVF1ZXJ5UGFyYW1zKHRoaXMuY29uZmlnW1wiZ3RtX3Jlc291cmNlX3BhdGhcIl0gPyB0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcycpO1xuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaXNMb2FkZWQgPSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudD8uaGVhZC5pbnNlcnRCZWZvcmUoZ3RtU2NyaXB0LCB0aGlzLmRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlHdG1RdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xuICAgICAgICAgICAgdXJsICs9ICc/JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHVybCArIE9iamVjdC5rZXlzKHRoaXMuY29uZmlnKS5maWx0ZXIoKGspID0+IHRoaXMuY29uZmlnW2tdKS5tYXAoKGspID0+IGAke2t9PSR7dGhpcy5jb25maWdba11cbiAgICAgICAgICAgIH1gKS5qb2luKCcmJykpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb25lcyBkZSBHb29nbGUgVGFnIE1hbmFnZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShjb25maWc6IEdvb2dsZVRhZ01hbmFnZXJDb25maWcpIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgdGhpcy5jb25maWc7XG4gICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBndG1UYWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogJ3BhZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVzaFRhZyhndG1UYWcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBwdXNoVGFnKGl0ZW06IG9iamVjdCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoKSA9PiByZWplY3QoKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFamVjdXRhIGVsIGV2ZW50byBwYXNhZG8gcG9yIHBhcmFtZXRyby4gXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG8uXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSByZXR1cm47XG4gICAgICAgIGxldCBldmVudCA9IHRoaXMudHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWUpO1xuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcbiAgICAgICAgZXZlbnQgJiYgdGhpcy5wdXNoVGFnKHsgJ2V2ZW50JzogdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSksIGVjb21tZXJjZTogdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkgfSlcbiAgICB9XG4gICAgLyoqXG4gICAgICogVHJhZHVjZSBlbCBldmVudG8gcmVjaWJpZG8geSBkZXZ1ZWx2ZSBlbCBub21icmUgZGUgbGEgZnVuY2nDs24gcXVlIGxvIHZhIGEgdHJhdGFyLlxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuICd2aWV3X2l0ZW0nO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gJ3ZpZXdfaXRlbV9saXN0JztcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gJ2FkZF9zaGlwcGluZ19pbmZvJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gJ2FkZF9wYXltZW50X2luZm8nO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuICdhZGRfdG9fY2FydCc7XG4gICAgICAgICAgICBjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuICdyZW1vdmVfZnJvbV9jYXJ0JztcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X3Byb21vdGlvbic6IHJldHVybiAnc2VsZWN0X3Byb21vdGlvbic7XG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfaXRlbSc6IHJldHVybiAnc2VsZWN0X2l0ZW0nO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZhbHVhIGVsIGV2ZW50byB5IGRldnVlbHZlIGxvcyBkYXRvcyBkZSBsYXMgZnVuY2lvbmVzIHJlbGFjaW9uYWRhcy5cbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50b1xuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gdGhpcy50b1NoaXBwaW5nSW5mbyhkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gdGhpcy50b0FkZFRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9wcm9tb3Rpb24nOiByZXR1cm4gdGhpcy50b1NlbGVjdFByb21vdGlvbihkYXRhKTtcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWllcmUgY29tcHJhciB1biBwcm9kdWN0by5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcbiAgICAgICAgICAgIHNoaXBwaW5nOiBkYXRhLnRvdGFscy5zaGlwcGluZyxcbiAgICAgICAgICAgIHRheDogZGF0YS50b3RhbHMudGF4ZXMsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXG4gICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogZGF0YS5udW1iZXIsXG4gICAgICAgICAgICBjb3VudEl0ZW1zOiBkYXRhLml0ZW1zPy5sZW5ndGggfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGl0ZW1fdmFyaWFudDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiBpdGVtLnF1YW50aXR5IHx8IDEsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NoZWNrb3V0SW5pdChkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXG4gICAgICogQHBhcmFtIGRhdGEgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b0NhcnREaXNjb3VudChkYXRhOiBhbnkpIHtcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcbiAgICAgICAgc3RyRGlzY291bnQgPSBkYXRhLmNhcnREaXNjb3VudHMubWFwKChpdGVtRGlzY291bnQ6IGFueSkgPT4gaXRlbURpc2NvdW50Py50eXBlKS5qb2luKClcbiAgICAgICAgcmV0dXJuIHN0ckRpc2NvdW50ID09ICcnID8gJ25vdC1kaXNjb3VudCcgOiBzdHJEaXNjb3VudFxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvLiBcbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xuICAgICAgICBsZXQgbGFzdFByb2R1Y3QgPSBkYXRhLml0ZW1zPy5sZW5ndGggJiYgZGF0YS5pdGVtc1tkYXRhLml0ZW1zLmxlbmd0aCAtIDFdXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXG4gICAgICAgICAgICB2YWx1ZTogbGFzdFByb2R1Y3QudG90YWwgfHwgMCxcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhIGxhcyB2aXN0YSBkZWwgcHJvZHVjdG8uXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3ksXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcbiAgICAgICAgICAgIGl0ZW1zOiBbdGhpcy50b0l0ZW0ocHJvZHVjdCldXG5cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9WaWV3SXRlbUxpc3QoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxuICAgICAgICAgICAgaXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxuICAgICAgICAgICAgaXRlbV9saXN0X2lkOiBkYXRhLml0ZW1fbGlzdF9pZCB8fCAwXG4gICAgICAgIH1cblxuXG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpdGEgdW4gaXRlbSBkZWwgY2Fycml0by5cbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xuICAgICAgICBsZXQgcHJvZHVjdFBhcmFtID0gcHJvZHVjdC5wcm9kdWN0XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5LCAuLi5wcm9kdWN0UGFyYW0gfSldLFxuICAgICAgICAgICAgdmFsdWU6IChwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBwcm9kdWN0UGFyYW0udmFyaWFudHNbMF0/LnByaWNlKSAqIHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcbiAgICAgICAgaXRlbV9pZDogcHJvZHVjdC5pZCxcbiAgICAgICAgaXRlbV9uYW1lOiBwcm9kdWN0Lm5hbWUsXG4gICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICBkaXNjb3VudDogcHJvZHVjdC5kaXNjb3VudCB8fCAwLFxuICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXG4gICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgIGl0ZW1fdmFyaWFudDogcHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXG4gICAgfSlcbiAgICAvKipcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGNvbnN1bHRhIGxhIGluZm9ybWFjacOzbiBkZSBwYWdvLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9QYXltZW50SW5mbyhkYXRhOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9uYW1lOiAnJyxcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcbiAgICAgICAgICAgICAgICBwcmljZTogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdPy5wcmljZSxcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gbG9zIG3DqXRvZG9zIGRlIGVudsOtby5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcbiAgICAgICAgICAgIHNoaXBwaW5nX3RpZXI6IGRhdGEuc2hpcG1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1zaGlwcGluZycsXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXG4gICAgICAgICAgICAgICAgLy9sb2NhdGlvbl9pZDogJycsXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5kYXRhXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cbiAgICAgKiBAcGFyYW0gZGF0YSBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvU2VsZWN0UHJvbW90aW9uKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByb21vdGlvbl9pZDogZGF0YS5pZCB8fCAnJyxcbiAgICAgICAgICAgIHByb21vdGlvbl9uYW1lOiBkYXRhLmNvZGUgfHwgZGF0YS5uYW1lLFxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxuICAgICAgICAgICAgbG9jYXRpb25faWQ6IGRhdGEucHJpb3JpdHkgfHwgMFxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzYXByYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBhbCBzZWxlY2Npb25hciB1biBpdGVtLlxuICAgICAqIEBwYXJhbSBkYXRhIFxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -18,6 +18,9 @@ export class MetricoolPixelService {
18
18
  */
19
19
  renderer;
20
20
  constructor() {
21
+ if (isPlatformBrowser(this.platformId)) {
22
+ this.document = document;
23
+ }
21
24
  this.renderer = this.rendererFactory.createRenderer(null, null);
22
25
  }
23
26
  /**
@@ -25,22 +28,20 @@ export class MetricoolPixelService {
25
28
  * @param pixel_hash hash provisto por Metricool Pixel.
26
29
  */
27
30
  initialize = (pixel_hash) => {
28
- if (isPlatformBrowser(this.platformId) && this.document) {
29
- let new_analityc_script = this.renderer.createElement('script');
30
- new_analityc_script.type = 'text/javascript';
31
- new_analityc_script.text = `
32
- function loadScript(a) {
33
- var b = document.getElementsByTagName("head")[0], c = document.createElement("script");
34
- c.type = "text/javascript",
35
- c.src = "https://tracker.metricool.com/resources/be.js",
36
- c.onreadystatechange = a,
37
- c.onload = a, b.appendChild(c)
38
- } loadScript(function () {
39
- beTracker.t({ hash: "${pixel_hash}" })
40
- });
41
- `;
42
- this.renderer.appendChild(this.document.body, new_analityc_script);
43
- }
31
+ let new_analityc_script = this.renderer.createElement('script');
32
+ new_analityc_script.type = 'text/javascript';
33
+ new_analityc_script.text = `
34
+ function loadScript(a) {
35
+ var b = document.getElementsByTagName("head")[0], c = document.createElement("script");
36
+ c.type = "text/javascript",
37
+ c.src = "https://tracker.metricool.com/resources/be.js",
38
+ c.onreadystatechange = a,
39
+ c.onload = a, b.appendChild(c)
40
+ } loadScript(function () {
41
+ beTracker.t({ hash: "${pixel_hash}" })
42
+ });
43
+ `;
44
+ this.renderer.appendChild(this.document?.body, new_analityc_script);
44
45
  };
45
46
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
46
47
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, providedIn: 'root' });
@@ -51,4 +52,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
51
52
  providedIn: 'root'
52
53
  }]
53
54
  }], ctorParameters: () => [] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRSxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7WUFDN0MsbUJBQW1CLENBQUMsSUFBSSxHQUFHOzs7Ozs7Ozt1Q0FRQSxVQUFVOzthQUVwQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQyxDQUFBO3dHQXZDUSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLyoqXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgTWV0cmljb29sIFBpeGVsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0cmljb29sUGl4ZWxTZXJ2aWNlIHtcbiAgICAvKipcbiAgICAgKiBJbmRpY2Egc2kgc2UgZXN0YSBjYXJnYW5kbyBlbCBTZXJ2aWNpby5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlzTG9hZGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKVxuICAgIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IGluamVjdChET0NVTUVOVClcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcbiAgICAvKipcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXG4gICAgICogQHBhcmFtIHBpeGVsX2hhc2ggaGFzaCBwcm92aXN0byBwb3IgTWV0cmljb29sIFBpeGVsLlxuICAgICAqL1xuICAgIGluaXRpYWxpemUgPSAocGl4ZWxfaGFzaDogYW55KSA9PiB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHRoaXMuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBuZXdfYW5hbGl0eWNfc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgICAgIG5ld19hbmFsaXR5Y19zY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYFxuICAgICAgICAgICAgZnVuY3Rpb24gbG9hZFNjcmlwdChhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0sIGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgICAgIGMudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuc3JjID0gXCJodHRwczovL3RyYWNrZXIubWV0cmljb29sLmNvbS9yZXNvdXJjZXMvYmUuanNcIixcbiAgICAgICAgICAgICAgICAgICAgYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBhLFxuICAgICAgICAgICAgICAgICAgICBjLm9ubG9hZCA9IGEsIGIuYXBwZW5kQ2hpbGQoYylcbiAgICAgICAgICAgIH0gbG9hZFNjcmlwdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYmVUcmFja2VyLnQoeyBoYXNoOiBcIiR7cGl4ZWxfaGFzaH1cIiB9KVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBgO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIG5ld19hbmFsaXR5Y19zY3JpcHQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLG1CQUFtQixDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM3QyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUc7Ozs7Ozs7O21DQVFBLFVBQVU7O1NBRXBDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQTt3R0F4Q1EscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGbEIsTUFBTTs7NEZBRVQscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIE1ldHJpY29vbCBQaXhlbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1ldHJpY29vbFBpeGVsU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIHNlIGVzdGEgY2FyZ2FuZG8gZWwgU2VydmljaW8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MilcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBpbmplY3QoRE9DVU1FTlQpXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXG4gICAgLyoqXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXG4gICAgICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbmljaWFsaXphIGVsIFNlcnZpY2lvIGRlIGFuYWx5dGljcyBjb24gc3VzIGNvbmZpZ3VyYWNpb25lcy5cbiAgICAgKiBAcGFyYW0gcGl4ZWxfaGFzaCBoYXNoIHByb3Zpc3RvIHBvciBNZXRyaWNvb2wgUGl4ZWwuXG4gICAgICovXG4gICAgaW5pdGlhbGl6ZSA9IChwaXhlbF9oYXNoOiBhbnkpID0+IHtcbiAgICAgICAgbGV0IG5ld19hbmFsaXR5Y19zY3JpcHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgbmV3X2FuYWxpdHljX3NjcmlwdC50ZXh0ID0gYFxuICAgICAgICBmdW5jdGlvbiBsb2FkU2NyaXB0KGEpIHtcbiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIGMudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgYy5zcmMgPSBcImh0dHBzOi8vdHJhY2tlci5tZXRyaWNvb2wuY29tL3Jlc291cmNlcy9iZS5qc1wiLFxuICAgICAgICAgICAgICAgIGMub25yZWFkeXN0YXRlY2hhbmdlID0gYSxcbiAgICAgICAgICAgICAgICBjLm9ubG9hZCA9IGEsIGIuYXBwZW5kQ2hpbGQoYylcbiAgICAgICAgfSBsb2FkU2NyaXB0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGJlVHJhY2tlci50KHsgaGFzaDogXCIke3BpeGVsX2hhc2h9XCIgfSlcbiAgICAgICAgfSk7XG4gICAgICAgIGA7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudD8uYm9keSwgbmV3X2FuYWxpdHljX3NjcmlwdCk7XG4gICAgfVxufVxuIl19