trm-tmpl 3.2.1 → 3.2.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 (57) hide show
  1. package/esm2022/lib/app/i18n/i18n-key.enum.mjs +2 -1
  2. package/esm2022/lib/app/i18n/keys.mjs +3 -2
  3. package/esm2022/lib/app/models/constants.mjs +4 -2
  4. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.mjs +24 -38
  5. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.mjs +41 -0
  6. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.mjs +102 -118
  7. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.mjs +88 -0
  8. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.mjs +15 -37
  9. package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.mjs +10 -4
  10. package/esm2022/lib/app/pages/components/constructor-form/components/index.mjs +3 -1
  11. package/esm2022/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.mjs +20 -24
  12. package/esm2022/lib/app/pages/components/constructor-form/constructor-form.component.mjs +89 -66
  13. package/esm2022/lib/app/pages/components/constructor-form/models/field-template.mjs +2 -1
  14. package/esm2022/lib/app/pages/components/constructor-form/models/index.mjs +1 -2
  15. package/esm2022/lib/app/pages/components/constructor-form/models/payment-field.mjs +1 -1
  16. package/esm2022/lib/app/pages/components/constructor-form/services/constructor-form.service.mjs +39 -24
  17. package/esm2022/lib/app/pages/components/terminal-layout/terminal-layout.component.mjs +11 -9
  18. package/esm2022/lib/app/services/api-errors.service.mjs +16 -34
  19. package/esm2022/lib/app/services/csrf.resolver.mjs +6 -18
  20. package/esm2022/lib/app/services/error.interceptior.mjs +2 -2
  21. package/esm2022/lib/app/services/local-storage.mjs +70 -0
  22. package/esm2022/lib/app/services/script-loader.mjs +4 -7
  23. package/esm2022/lib/app/services/session.data-source.mjs +8 -8
  24. package/esm2022/lib/app/services/translation/translate-lang-storage.service.mjs +95 -79
  25. package/esm2022/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.mjs +10 -8
  26. package/esm2022/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.mjs +6 -6
  27. package/esm2022/lib/app/shared/components/trm-select/trm-select.component.mjs +1 -1
  28. package/esm2022/lib/app/terminal-tpl.component.mjs +5 -12
  29. package/fesm2022/trm-tmpl.mjs +738 -587
  30. package/fesm2022/trm-tmpl.mjs.map +1 -1
  31. package/lib/app/i18n/i18n-key.enum.d.ts +1 -0
  32. package/lib/app/models/constants.d.ts +3 -1
  33. package/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.d.ts +7 -10
  34. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.d.ts +18 -0
  35. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.d.ts +25 -27
  36. package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.d.ts +16 -0
  37. package/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.d.ts +6 -10
  38. package/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.d.ts +3 -3
  39. package/lib/app/pages/components/constructor-form/components/index.d.ts +2 -0
  40. package/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.d.ts +4 -6
  41. package/lib/app/pages/components/constructor-form/constructor-form.component.d.ts +5 -8
  42. package/lib/app/pages/components/constructor-form/models/index.d.ts +0 -1
  43. package/lib/app/pages/components/constructor-form/models/payment-field.d.ts +1 -1
  44. package/lib/app/pages/components/constructor-form/services/constructor-form.service.d.ts +8 -5
  45. package/lib/app/pages/components/terminal-layout/terminal-layout.component.d.ts +1 -0
  46. package/lib/app/services/api-errors.service.d.ts +4 -10
  47. package/lib/app/services/csrf.resolver.d.ts +1 -4
  48. package/lib/app/services/local-storage.d.ts +24 -0
  49. package/lib/app/services/script-loader.d.ts +1 -2
  50. package/lib/app/services/session.data-source.d.ts +1 -1
  51. package/lib/app/services/translation/translate-lang-storage.service.d.ts +22 -23
  52. package/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.d.ts +4 -34
  53. package/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.d.ts +1 -2
  54. package/lib/app/shared/components/trm-select/trm-select.component.d.ts +1 -2
  55. package/package.json +1 -1
  56. package/esm2022/lib/app/pages/components/constructor-form/models/constants.mjs +0 -4
  57. package/lib/app/pages/components/constructor-form/models/constants.d.ts +0 -3
@@ -7,7 +7,7 @@ export class ScriptLoader {
7
7
  this.document = inject(DOCUMENT);
8
8
  this.nonce = inject(CSP_NONCE);
9
9
  this.environment = inject(ENVIRONMENT);
10
- this.HASH_MAP = new Map([
10
+ this.SCRIPT_HASH_MAP = new Map([
11
11
  [
12
12
  'cde_sdk',
13
13
  this.environment.production ? {
@@ -20,9 +20,6 @@ export class ScriptLoader {
20
20
  ]
21
21
  ]);
22
22
  }
23
- get window() {
24
- return this.document.defaultView;
25
- }
26
23
  fetchScript(id) {
27
24
  return new Promise((resolve, reject) => {
28
25
  let script;
@@ -50,7 +47,7 @@ export class ScriptLoader {
50
47
  script = template.content.children.item(0);
51
48
  }
52
49
  else {
53
- const { src, hash } = this.HASH_MAP.get(id);
50
+ const { src, hash } = this.SCRIPT_HASH_MAP.get(id);
54
51
  script = this.document.createElement('script');
55
52
  script.type = 'text/javascript';
56
53
  script.src = src;
@@ -63,7 +60,7 @@ export class ScriptLoader {
63
60
  script.nonce = this.nonce;
64
61
  script.onload = () => resolve();
65
62
  script.onerror = (err) => reject(err);
66
- this.document.body.append(script);
63
+ this.document.body.appendChild(script);
67
64
  });
68
65
  }
69
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ScriptLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -72,4 +69,4 @@ export class ScriptLoader {
72
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ScriptLoader, decorators: [{
73
70
  type: Injectable
74
71
  }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUsxQyxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVVLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUdqQyxhQUFRLEdBQUcsSUFBSSxHQUFHLENBQStDO1lBQ3hFO2dCQUNFLFNBQVM7Z0JBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUM1QixHQUFHLEVBQUUsZ0RBQWdEO29CQUNyRCxJQUFJLEVBQUUseUVBQXlFO2lCQUNoRixDQUFDLENBQUMsQ0FBQztvQkFDRixHQUFHLEVBQUUsNkNBQTZDO29CQUNsRCxJQUFJLEVBQUUsRUFBRTtpQkFDVDthQUNGO1NBQ0YsQ0FBQyxDQUFDO0tBaURKO0lBL0NHLElBQVksTUFBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDekMsSUFBSSxNQUF5QixDQUFDO1lBQzlCLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNsRixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksRUFBRSxLQUFLLGdCQUFnQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNqRixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksRUFBRSxLQUFLLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUN6RixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksRUFBRSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO2dCQUM5RixPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1gsQ0FBQztZQUVELElBQUksRUFBRSxLQUFLLGdCQUFnQixJQUFJLEVBQUUsS0FBSyxlQUFlLElBQUksRUFBRSxLQUFLLGFBQWEsRUFBRSxDQUFDO2dCQUM1RSxNQUFNLFFBQVEsR0FBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUNuRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ1osTUFBTSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQztnQkFDRCxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBc0IsQ0FBQztZQUNwRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO2dCQUNoQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztnQkFDakIsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDUCxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztvQkFDeEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDeEIsQ0FBQztZQUNELE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQWpFUSxZQUFZO2tIQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDU1BfTk9OQ0UsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vY29uc3QnO1xyXG5cclxuZXhwb3J0IHR5cGUgU0RLU2NyaXB0SWQgPSAnY2RlX3NkaycgfCAnbWlyLXBheS1zZGsnIHwgJ2FwcGxlLXBheS1zZGsnIHwgJ2dvb2dsZS1wYXktc2RrJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNjcmlwdExvYWRlciB7XHJcbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgbm9uY2UgPSBpbmplY3QoQ1NQX05PTkNFKTtcclxuICBwcml2YXRlIGVudmlyb25tZW50ID0gaW5qZWN0KEVOVklST05NRU5UKTtcclxuXHJcblxyXG4gIHJlYWRvbmx5IEhBU0hfTUFQID0gbmV3IE1hcDxTREtTY3JpcHRJZCwgeyBzcmM6IHN0cmluZzsgaGFzaD86IHN0cmluZzsgfT4oW1xyXG4gICAgW1xyXG4gICAgICAnY2RlX3NkaycsXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnQucHJvZHVjdGlvbiA/IHtcclxuICAgICAgICBzcmM6ICdodHRwczovL2FwcC5jZGUuY2xvdWQvaWZyYW1lLXNkay9zZGstdjEuMC4yLmpzJyxcclxuICAgICAgICBoYXNoOiAnc2hhMzg0LXA0UFVzQTQ3bkJFT2FPb0V5NGlYVm5xbnRENG1wV00yY1hGdHBvbDZUbDdPZFVDd0RncXhvaTBXNzFXSmRHaGknXHJcbiAgICAgIH0gOiB7XHJcbiAgICAgICAgc3JjOiAnaHR0cHM6Ly9hcHAuY2RlLWNsb3VkLmRldi9pZnJhbWUtc2RrL3Nkay5qcycsXHJcbiAgICAgICAgaGFzaDogJydcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIF0pO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0IHdpbmRvdygpOiBXaW5kb3cgJiB7IGRhdGFMYXllcj86IFtdLCB5bT86IGFueSwgZ3RhZz86IGFueSB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5kZWZhdWx0VmlldztcclxuICAgIH1cclxuXHJcbiAgICBmZXRjaFNjcmlwdChpZDogU0RLU2NyaXB0SWQpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGlkID09PSAnY2RlX3NkaycgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uaGFzT3duUHJvcGVydHkoJ0NkZVRlcm1pbmFsU2RrJykpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaWQgPT09ICdnb29nbGUtcGF5LXNkaycgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uaGFzT3duUHJvcGVydHkoJ2dvb2dsZScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlkID09PSAnYXBwbGUtcGF5LXNkaycgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uaGFzT3duUHJvcGVydHkoJ0FwcGxlUGF5U2Vzc2lvbicpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlkID09PSAnbWlyLXBheS1zZGsnICYmIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lmhhc093blByb3BlcnR5KCdZb29Nb25leUNoZWNrb3V0V2lkZ2V0JykpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlkID09PSAnZ29vZ2xlLXBheS1zZGsnIHx8IGlkID09PSAnYXBwbGUtcGF5LXNkaycgfHwgaWQgPT09ICdtaXItcGF5LXNkaycpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlOiBIVE1MVGVtcGxhdGVFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGB0ZW1wbGF0ZSMke2lkfWApXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzY3JpcHQgPSB0ZW1wbGF0ZS5jb250ZW50LmNoaWxkcmVuLml0ZW0oMCkgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7c3JjLCBoYXNofSA9IHRoaXMuSEFTSF9NQVAuZ2V0KGlkKTtcclxuICAgICAgICAgICAgICAgIHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xyXG4gICAgICAgICAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcclxuICAgICAgICAgICAgICAgIGlmIChoYXNoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0LmludGVncml0eSA9IGhhc2g7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNjcmlwdC5ub25jZSA9IHRoaXMubm9uY2U7XHJcbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycikgPT4gcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUsxQyxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVVLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUdqQyxvQkFBZSxHQUFHLElBQUksR0FBRyxDQUErQztZQUMvRTtnQkFDRSxTQUFTO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDNUIsR0FBRyxFQUFFLGdEQUFnRDtvQkFDckQsSUFBSSxFQUFFLHlFQUF5RTtpQkFDaEYsQ0FBQyxDQUFDLENBQUM7b0JBQ0YsR0FBRyxFQUFFLDZDQUE2QztvQkFDbEQsSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7YUFDRjtTQUNGLENBQUMsQ0FBQztLQTZDSjtJQTNDQyxXQUFXLENBQUMsRUFBZTtRQUN6QixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksTUFBeUIsQ0FBQztZQUM5QixJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDcEYsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkYsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDM0YsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztnQkFDaEcsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLEVBQUUsS0FBSyxnQkFBZ0IsSUFBSSxFQUFFLEtBQUssZUFBZSxJQUFJLEVBQUUsS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxRQUFRLEdBQXdCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDbkYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQXNCLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ2pCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3RFUsWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1NQX05PTkNFLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuXHJcbmV4cG9ydCB0eXBlIFNES1NjcmlwdElkID0gJ2NkZV9zZGsnIHwgJ21pci1wYXktc2RrJyB8ICdhcHBsZS1wYXktc2RrJyB8ICdnb29nbGUtcGF5LXNkayc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTY3JpcHRMb2FkZXIge1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIG5vbmNlID0gaW5qZWN0KENTUF9OT05DRSk7XHJcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVCk7XHJcblxyXG5cclxuICByZWFkb25seSBTQ1JJUFRfSEFTSF9NQVAgPSBuZXcgTWFwPFNES1NjcmlwdElkLCB7IHNyYzogc3RyaW5nOyBoYXNoPzogc3RyaW5nOyB9PihbXHJcbiAgICBbXHJcbiAgICAgICdjZGVfc2RrJyxcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uID8ge1xyXG4gICAgICAgIHNyYzogJ2h0dHBzOi8vYXBwLmNkZS5jbG91ZC9pZnJhbWUtc2RrL3Nkay12MS4wLjIuanMnLFxyXG4gICAgICAgIGhhc2g6ICdzaGEzODQtcDRQVXNBNDduQkVPYU9vRXk0aVhWbnFudEQ0bXBXTTJjWEZ0cG9sNlRsN09kVUN3RGdxeG9pMFc3MVdKZEdoaSdcclxuICAgICAgfSA6IHtcclxuICAgICAgICBzcmM6ICdodHRwczovL2FwcC5jZGUtY2xvdWQuZGV2L2lmcmFtZS1zZGsvc2RrLmpzJyxcclxuICAgICAgICBoYXNoOiAnJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgXSk7XHJcblxyXG4gIGZldGNoU2NyaXB0KGlkOiBTREtTY3JpcHRJZCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IHNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChpZCA9PT0gJ2NkZV9zZGsnICYmIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lmhhc093blByb3BlcnR5KCdDZGVUZXJtaW5hbFNkaycpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT09ICdnb29nbGUtcGF5LXNkaycgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uaGFzT3duUHJvcGVydHkoJ2dvb2dsZScpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT09ICdhcHBsZS1wYXktc2RrJyAmJiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5oYXNPd25Qcm9wZXJ0eSgnQXBwbGVQYXlTZXNzaW9uJykpIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PT0gJ21pci1wYXktc2RrJyAmJiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5oYXNPd25Qcm9wZXJ0eSgnWW9vTW9uZXlDaGVja291dFdpZGdldCcpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlkID09PSAnZ29vZ2xlLXBheS1zZGsnIHx8IGlkID09PSAnYXBwbGUtcGF5LXNkaycgfHwgaWQgPT09ICdtaXItcGF5LXNkaycpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZTogSFRNTFRlbXBsYXRlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgdGVtcGxhdGUjJHtpZH1gKVxyXG4gICAgICAgIGlmICghdGVtcGxhdGUpIHtcclxuICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzY3JpcHQgPSB0ZW1wbGF0ZS5jb250ZW50LmNoaWxkcmVuLml0ZW0oMCkgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qge3NyYywgaGFzaH0gPSB0aGlzLlNDUklQVF9IQVNIX01BUC5nZXQoaWQpO1xyXG4gICAgICAgIHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICBzY3JpcHQuc3JjID0gc3JjO1xyXG4gICAgICAgIGlmIChoYXNoKSB7XHJcbiAgICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gaGFzaDtcclxuICAgICAgICAgIHNjcmlwdC5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHNjcmlwdC5ub25jZSA9IHRoaXMubm9uY2U7XHJcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKTogdm9pZCA9PiByZXNvbHZlKCk7XHJcbiAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycik6IHZvaWQgPT4gcmVqZWN0KGVycik7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -22,7 +22,7 @@ export class SessionDataSource {
22
22
  this.cd = inject(ChangeDetectorRef);
23
23
  this.cardTerminalSdkFactory = inject(TERMINAL_SDK_FACTORY);
24
24
  this.data$ = new BehaviorSubject(undefined);
25
- this.loading$ = new BehaviorSubject(null);
25
+ this.loading$ = new BehaviorSubject(true);
26
26
  this.loadingMethodInfo$ = new BehaviorSubject(true);
27
27
  this.loadingConfirm$ = new BehaviorSubject(false);
28
28
  this.configurations = new Map();
@@ -90,7 +90,7 @@ export class SessionDataSource {
90
90
  return this.data$.getValue();
91
91
  }
92
92
  get() {
93
- if (this.loading$.getValue() !== null) {
93
+ if (!this.loading$.getValue()) {
94
94
  this.loading$.next(true);
95
95
  }
96
96
  return this.terminalApi.getTerminalSessionInfo({
@@ -128,14 +128,14 @@ export class SessionDataSource {
128
128
  }
129
129
  catchError(loading$) {
130
130
  return (err) => {
131
- this.apiErrorsSrv.setError(err.error);
131
+ this.apiErrorsSrv.setLocalError(err.error);
132
132
  loading$?.next(false);
133
133
  this.cd.markForCheck();
134
134
  return throwError(err);
135
135
  };
136
136
  }
137
137
  prepare(data) {
138
- if (this.loadingConfirm$.getValue() !== null) {
138
+ if (!this.loadingConfirm$.getValue()) {
139
139
  this.loadingConfirm$.next(true);
140
140
  }
141
141
  return this.terminalApi
@@ -146,7 +146,7 @@ export class SessionDataSource {
146
146
  .pipe(catchError(this.catchError(this.loadingConfirm$)), tap(() => this.loadingConfirm$.next(false)));
147
147
  }
148
148
  confirm() {
149
- if (this.loadingConfirm$.getValue() !== null) {
149
+ if (!this.loadingConfirm$.getValue()) {
150
150
  this.loadingConfirm$.next(true);
151
151
  }
152
152
  return this.terminalApi
@@ -163,7 +163,7 @@ export class SessionDataSource {
163
163
  }));
164
164
  }
165
165
  close() {
166
- if (this.loadingConfirm$.getValue() !== null) {
166
+ if (!this.loadingConfirm$.getValue()) {
167
167
  this.loadingConfirm$.next(true);
168
168
  }
169
169
  return this.terminalApi
@@ -173,7 +173,7 @@ export class SessionDataSource {
173
173
  .pipe(catchError(this.catchError(this.loadingConfirm$)), map(() => {
174
174
  if (!this.returnBack()) {
175
175
  const error = { code: I18N_KEY.SESSION_CLOSED };
176
- this.apiErrorsSrv.setError(error);
176
+ this.apiErrorsSrv.setLocalError(error);
177
177
  this.loadingConfirm$?.next(false);
178
178
  this.cd.markForCheck();
179
179
  throw error;
@@ -208,4 +208,4 @@ export class SessionDataSource {
208
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SessionDataSource, decorators: [{
209
209
  type: Injectable
210
210
  }] });
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBR2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxNQUFN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QUFNO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDbEIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsOEJBQThCLENBQUM7WUFDOUIsTUFBTTtZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLFFBQWlCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUlELFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F0UVUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kSW5mbyxcclxuICBNZXRob2RUeXBlLFxyXG4gIFNlc3Npb25JbmZvLFxyXG4gIFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZSxcclxuICBUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZSxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2VcclxufSBmcm9tICcuLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcGlFcnJvcnNTZXJ2aWNlIH0gZnJvbSAnLi9hcGktZXJyb3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGF5bWVudEZpZWxkcyB9IGZyb20gJy4vLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvaHR0cC1iYWQtcmVxdWVzdC1yZXNwb25zZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4Tl9LRVkgfSBmcm9tICcuLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9TREtfRkFDVE9SWSwgVEVSTUlOQUxfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVGVybWluYWxTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vY29kZWdlbi9hcGkvdGVybWluYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE9USEVSX0NPVU5UUllfQ09ERSB9IGZyb20gJy4uL2hlbHBlcnMvaTE4bi1jb3VudHJpZXMnO1xyXG5pbXBvcnQgeyBDZGVUZXJtaW5hbFNkaywgU2Vzc2lvblRva2VuIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ09ORklHIH0gZnJvbSAnLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscy9jb25maWcvYWxsJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNlc3Npb25EYXRhU291cmNlIHtcclxuICBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgbGFuZ1N0b3JhZ2UgPSBpbmplY3QoVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlKTtcclxuICBwcml2YXRlIHRlcm1pbmFsQXBpID0gaW5qZWN0PFRlcm1pbmFsU2VydmljZUludGVyZmFjZT4oVEVSTUlOQUxfU0VSVklDRV9UT0tFTik7XHJcbiAgcHJpdmF0ZSB0b2tlbiA9IGluamVjdChTZXNzaW9uVG9rZW4sIHtvcHRpb25hbDogdHJ1ZX0pIHx8ICd0b2tlbic7XHJcbiAgcHJpdmF0ZSBhcGlFcnJvcnNTcnYgPSBpbmplY3QoQXBpRXJyb3JzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBjb29raWVTcnYgPSBpbmplY3QoQ29va2llU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBjYXJkVGVybWluYWxTZGtGYWN0b3J5ID0gaW5qZWN0KFRFUk1JTkFMX1NES19GQUNUT1JZKTtcclxuXHJcbiAgcHJpdmF0ZSBwYXltZW50X3Rva2VuPzogc3RyaW5nO1xyXG4gIGRhdGEkOiBCZWhhdmlvclN1YmplY3Q8U2Vzc2lvbkluZm8+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4odW5kZWZpbmVkKTtcclxuICBsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcclxuICBsb2FkaW5nTWV0aG9kSW5mbyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgbG9hZGluZ0NvbmZpcm0kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIHJlZGlyZWN0VXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXR1cm5Vcmw6IHN0cmluZztcclxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zOiBNYXA8c3RyaW5nLCBQYXltZW50RmllbGRzPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcHJpdmF0ZSBmaWxsQ29uZmlndXJhdGlvbnMobWV0aG9kczogTWV0aG9kVHlwZVtdID0gdGhpcy5nZXRTZXNzaW9uVmFsdWUoKT8ubWV0aG9kVHlwZXMgfHwgW10pIHtcclxuICAgIHJldHVybiBtZXRob2RzLmZvckVhY2goXHJcbiAgICAgIChtOiBNZXRob2RUeXBlKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25zLnNldChcclxuICAgICAgICBtLnR5cGUubmFtZSxcclxuICAgICAgICBDT05GSUdbbS50eXBlLm5hbWVdXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuaW9uR2xvYmFsQ291bnRyaWVzKHNlc3Npb246IFNlc3Npb25JbmZvKSB7XHJcbiAgICBsZXQgbWV0aG9kcyA9IHNlc3Npb24ubWV0aG9kVHlwZXM7XHJcblxyXG4gICAgLy8gc29ydCBtZXRob2RzIGJ5IGNvdW50cmllcyBpbiBtYXBcclxuICAgIGNvbnN0IGNvdW50cmllc1R5cGVzOiBNYXA8c3RyaW5nLCBTZXQ8bnVtYmVyPj4gPSBuZXcgTWFwPHN0cmluZywgU2V0PG51bWJlcj4+KCk7XHJcbiAgICBtZXRob2RzLmZvckVhY2goKHtjb3VudHJ5SVNPQ29kZSwgdHlwZToge2lkfX0pID0+IHtcclxuICAgICAgbGV0IHR5cGVzID0gKGNvdW50cmllc1R5cGVzLmdldChjb3VudHJ5SVNPQ29kZSkgfHwgbmV3IFNldCgpKS5hZGQoaWQpO1xyXG4gICAgICBjb3VudHJpZXNUeXBlcy5zZXQoY291bnRyeUlTT0NvZGUsIHR5cGVzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENoZWNrIGV2ZXJ5IHR5cGUgaW4gdGhlIGNvdW50cnkgb24gaGF2aW5nIGluIG90aGVyIGNvdW50cmllcyBhbmQgZ2V0dGluZyBvbmVzIGluIGNvbGxlY3Rpb25cclxuICAgIGNvbnN0IGdsb2JhbENvdW50cmllczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IHR5cGVzQ291bnRyaWVzQXJyYXkgPSBBcnJheS5mcm9tKGNvdW50cmllc1R5cGVzLnZhbHVlcygpKTtcclxuICAgIGNvbnN0IGV2ZXJ5Q291bnRyeUhhc1R5cGVJZFByZWRpY2F0ZSA9ICh0eXBlSWQpID0+IHR5cGVzQ291bnRyaWVzQXJyYXkuZXZlcnkoKGNvdW50cnlUeXBlcykgPT4gY291bnRyeVR5cGVzLmhhcyh0eXBlSWQpKTtcclxuICAgIGNvdW50cmllc1R5cGVzLmZvckVhY2goKHR5cGVzLCBpc28pID0+IHtcclxuICAgICAgLy8gQ2hlY2sgZXZlcnkgdHlwZSBpbmNsdWRlcyBpbiBhbGwgY291bnRyaWVzXHJcbiAgICAgIGNvbnN0IGhhc09ubHlHbG9iYWxUeXBlcyA9IFsuLi50eXBlc10uZXZlcnkoZXZlcnlDb3VudHJ5SGFzVHlwZUlkUHJlZGljYXRlKTtcclxuICAgICAgaWYgKGhhc09ubHlHbG9iYWxUeXBlcykge1xyXG4gICAgICAgIGdsb2JhbENvdW50cmllcy5wdXNoKGlzbyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjb3VudHJ5IHdpdGggb25seSBnbG9iYWwgdHlwZXMgY29sbGFwc2UgdGhlbSBpbnRvIG9uZSBjYXRlZ29yeVxyXG4gICAgaWYgKGdsb2JhbENvdW50cmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0R2xvYmFsQ291bnRyeSA9IGdsb2JhbENvdW50cmllcy5wb3AoKTtcclxuICAgICAgbWV0aG9kcyA9IG1ldGhvZHNcclxuICAgICAgICAuZmlsdGVyKCh7Y291bnRyeUlTT0NvZGV9KSA9PiAhZ2xvYmFsQ291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnlJU09Db2RlKSk7XHJcbiAgICAgIG1ldGhvZHMuZm9yRWFjaChtID0+IG0uY291bnRyeUlTT0NvZGUgPT09IGZpcnN0R2xvYmFsQ291bnRyeSAmJiAobS5jb3VudHJ5SVNPQ29kZSA9IE9USEVSX0NPVU5UUllfQ09ERSkpO1xyXG4gICAgfVxyXG4gICAgc2Vzc2lvbi5tZXRob2RUeXBlcyA9IG1ldGhvZHM7XHJcbiAgICByZXR1cm4gc2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZ3VyYXRpb24obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9ucy5nZXQobmFtZSk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdCgpIHtcclxuICAgIGlmICh0aGlzLnJlZGlyZWN0VXJsKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaHJlZiA9IHRoaXMucmVkaXJlY3RVcmw7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuQmFjaygpIHtcclxuICAgIGlmICh0aGlzLnJldHVyblVybCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJldHVyblVybDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuUmV0dXJuVG9Qcm9qZWN0KCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5yZXR1cm5Vcmw7XHJcbiAgfVxyXG5cclxuICBnZXQgcmV0dXJuQmFja1VybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0dXJuVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZU5hbWVCeUlkKGlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEkLmdldFZhbHVlKCkubWV0aG9kVHlwZXMuZmluZChtID0+IG0udHlwZS5pZCA9PT0gaWQpLnR5cGUubmFtZTtcclxuICB9XHJcblxyXG4gIGdldFNlc3Npb25WYWx1ZSgpOiBTZXNzaW9uSW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0KCk6IE9ic2VydmFibGU8U2Vzc2lvbkluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmckLmdldFZhbHVlKCkgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldFRlcm1pbmFsU2Vzc2lvbkluZm8oe1xyXG4gICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmckKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKChzZXNzaW9uOiBTZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhJC5uZXh0KHRoaXMudW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbikpO1xyXG4gICAgICAgICAgdGhpcy5maWxsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnJldHVyblVybCA9IHNlc3Npb24ucmV0dXJuVXJsO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWV0aG9kSW5mbyhjdXJyZW5jeSwgdHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPE1ldGhvZEluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ01ldGhvZEluZm8kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXR5cGVJZCB8fCAhY3VycmVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3Ioe30pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEluZm8oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgY3VycmVuY3ksXHJcbiAgICAgICAgdHlwZUlkXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKG1ldGhvZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1ldGhvZC5wYXltZW50X3Rva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudF90b2tlbiA9IG1ldGhvZC5wYXltZW50X3Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2F0Y2hFcnJvcihsb2FkaW5nJD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xyXG4gICAgcmV0dXJuIChlcnI6IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0RXJyb3IoZXJyLmVycm9yKTtcclxuICAgICAgbG9hZGluZyQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCk6IE9ic2VydmFibGU8VGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlPiB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRQcmVwYXJlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdDogZGF0YVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpIHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdDb25maXJtJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRDb25maXJtKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRDb25maXJtUmVxdWVzdDoge1xyXG4gICAgICAgICAgbGFuZzogdGhpcy5sYW5nU3RvcmFnZS5jdXJyZW50TGFuZyxcclxuICAgICAgICAgIGdhQ29va2llOiB0aGlzLmNvb2tpZVNydi5nZXQoJ19nYScpIHx8IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nQ29uZmlybSQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSByZXNwLnJlZGlyZWN0VXJsO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dChmYWxzZSlcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxDbG9zZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMucmV0dXJuQmFjaygpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge2NvZGU6IEkxOE5fS0VZLlNFU1NJT05fQ0xPU0VEfTtcclxuICAgICAgICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdDb25maXJtJD8ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFua3ModHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kQmFua3Moe1xyXG4gICAgICAgIHR5cGVJZCxcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudHModHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRlcm1pbmFsTWV0aG9kRG9jdW1lbnRUeXBlc1Jlc3BvbnNlPiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kRG9jdW1lbnRUeXBlcyh7XHJcbiAgICAgICAgdHlwZUlkLFxyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNhcmRUZXJtaW5hbFNkayhsYW5nOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHRhYmluZGV4PzogbnVtYmVyKTogQ2RlVGVybWluYWxTZGsge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSh0aGlzLnBheW1lbnRfdG9rZW4sIGlkLCB7bGFuZywgdGFiaW5kZXh9KTtcclxuICB9XHJcblxyXG4gIGZlZUNoYW5nZWFibGUgPSAhIXRoaXMudGVybWluYWxBcGkuZ2V0RmVlO1xyXG5cclxuICBmZWVPcHRpb25zKHBheW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGkuZ2V0RmVlKHBheW1lbnQpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBR2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxNQUFN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QUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUV6QixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLDhCQUE4QixDQUFDO1lBQzlCLE1BQU07WUFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQzthQUNELElBQUksQ0FDSCxVQUFVLENBQ1IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUNsQixDQUNGLENBQUM7SUFDTixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxRQUFpQjtRQUMvRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFJRCxVQUFVLENBQUMsT0FBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBdFFVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIE1ldGhvZEluZm8sXHJcbiAgTWV0aG9kVHlwZSxcclxuICBTZXNzaW9uSW5mbyxcclxuICBUZXJtaW5hbE1ldGhvZEJhbmtzUmVzcG9uc2UsXHJcbiAgVGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzUmVzcG9uc2UsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3QsXHJcbiAgVGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlXHJcbn0gZnJvbSAnLi4vLi4vY29kZWdlbi9tb2RlbC9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXBpRXJyb3JzU2VydmljZSB9IGZyb20gJy4vYXBpLWVycm9ycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZHMgfSBmcm9tICcuLy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL2h0dHAtYmFkLXJlcXVlc3QtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMYW5nU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uL3RyYW5zbGF0ZS1sYW5nLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi9pMThuJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfU0RLX0ZBQ1RPUlksIFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IFRlcm1pbmFsU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL2NvZGVnZW4vYXBpL3Rlcm1pbmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPVEhFUl9DT1VOVFJZX0NPREUgfSBmcm9tICcuLi9oZWxwZXJzL2kxOG4tY291bnRyaWVzJztcclxuaW1wb3J0IHsgQ2RlVGVybWluYWxTZGssIFNlc3Npb25Ub2tlbiB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENPTkZJRyB9IGZyb20gJy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMvY29uZmlnL2FsbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uRGF0YVNvdXJjZSB7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIGxhbmdTdG9yYWdlID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZXJtaW5hbEFwaSA9IGluamVjdDxUZXJtaW5hbFNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4pO1xyXG4gIHByaXZhdGUgdG9rZW4gPSBpbmplY3QoU2Vzc2lvblRva2VuLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAndG9rZW4nO1xyXG4gIHByaXZhdGUgYXBpRXJyb3JzU3J2ID0gaW5qZWN0KEFwaUVycm9yc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29va2llU3J2ID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9TREtfRkFDVE9SWSk7XHJcblxyXG4gIHBheW1lbnRfdG9rZW4/OiBzdHJpbmc7XHJcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlc3Npb25JbmZvPih1bmRlZmluZWQpO1xyXG4gIGxvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxvYWRpbmdNZXRob2RJbmZvJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBsb2FkaW5nQ29uZmlybSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHByaXZhdGUgcmVkaXJlY3RVcmw6IHN0cmluZztcclxuICBwcml2YXRlIHJldHVyblVybDogc3RyaW5nO1xyXG4gIHByaXZhdGUgY29uZmlndXJhdGlvbnM6IE1hcDxzdHJpbmcsIFBheW1lbnRGaWVsZHM+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBwcml2YXRlIGZpbGxDb25maWd1cmF0aW9ucyhtZXRob2RzOiBNZXRob2RUeXBlW10gPSB0aGlzLmdldFNlc3Npb25WYWx1ZSgpPy5tZXRob2RUeXBlcyB8fCBbXSkge1xyXG4gICAgcmV0dXJuIG1ldGhvZHMuZm9yRWFjaChcclxuICAgICAgKG06IE1ldGhvZFR5cGUpID0+IHRoaXMuY29uZmlndXJhdGlvbnMuc2V0KFxyXG4gICAgICAgIG0udHlwZS5uYW1lLFxyXG4gICAgICAgIENPTkZJR1ttLnR5cGUubmFtZV1cclxuICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbjogU2Vzc2lvbkluZm8pIHtcclxuICAgIGxldCBtZXRob2RzID0gc2Vzc2lvbi5tZXRob2RUeXBlcztcclxuXHJcbiAgICAvLyBzb3J0IG1ldGhvZHMgYnkgY291bnRyaWVzIGluIG1hcFxyXG4gICAgY29uc3QgY291bnRyaWVzVHlwZXM6IE1hcDxzdHJpbmcsIFNldDxudW1iZXI+PiA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8bnVtYmVyPj4oKTtcclxuICAgIG1ldGhvZHMuZm9yRWFjaCgoe2NvdW50cnlJU09Db2RlLCB0eXBlOiB7aWR9fSkgPT4ge1xyXG4gICAgICBsZXQgdHlwZXMgPSAoY291bnRyaWVzVHlwZXMuZ2V0KGNvdW50cnlJU09Db2RlKSB8fCBuZXcgU2V0KCkpLmFkZChpZCk7XHJcbiAgICAgIGNvdW50cmllc1R5cGVzLnNldChjb3VudHJ5SVNPQ29kZSwgdHlwZXMpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2hlY2sgZXZlcnkgdHlwZSBpbiB0aGUgY291bnRyeSBvbiBoYXZpbmcgaW4gb3RoZXIgY291bnRyaWVzIGFuZCBnZXR0aW5nIG9uZXMgaW4gY29sbGVjdGlvblxyXG4gICAgY29uc3QgZ2xvYmFsQ291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgY29uc3QgdHlwZXNDb3VudHJpZXNBcnJheSA9IEFycmF5LmZyb20oY291bnRyaWVzVHlwZXMudmFsdWVzKCkpO1xyXG4gICAgY29uc3QgZXZlcnlDb3VudHJ5SGFzVHlwZUlkUHJlZGljYXRlID0gKHR5cGVJZCkgPT4gdHlwZXNDb3VudHJpZXNBcnJheS5ldmVyeSgoY291bnRyeVR5cGVzKSA9PiBjb3VudHJ5VHlwZXMuaGFzKHR5cGVJZCkpO1xyXG4gICAgY291bnRyaWVzVHlwZXMuZm9yRWFjaCgodHlwZXMsIGlzbykgPT4ge1xyXG4gICAgICAvLyBDaGVjayBldmVyeSB0eXBlIGluY2x1ZGVzIGluIGFsbCBjb3VudHJpZXNcclxuICAgICAgY29uc3QgaGFzT25seUdsb2JhbFR5cGVzID0gWy4uLnR5cGVzXS5ldmVyeShldmVyeUNvdW50cnlIYXNUeXBlSWRQcmVkaWNhdGUpO1xyXG4gICAgICBpZiAoaGFzT25seUdsb2JhbFR5cGVzKSB7XHJcbiAgICAgICAgZ2xvYmFsQ291bnRyaWVzLnB1c2goaXNvKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gaWYgd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGNvdW50cnkgd2l0aCBvbmx5IGdsb2JhbCB0eXBlcyBjb2xsYXBzZSB0aGVtIGludG8gb25lIGNhdGVnb3J5XHJcbiAgICBpZiAoZ2xvYmFsQ291bnRyaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmlyc3RHbG9iYWxDb3VudHJ5ID0gZ2xvYmFsQ291bnRyaWVzLnBvcCgpO1xyXG4gICAgICBtZXRob2RzID0gbWV0aG9kc1xyXG4gICAgICAgIC5maWx0ZXIoKHtjb3VudHJ5SVNPQ29kZX0pID0+ICFnbG9iYWxDb3VudHJpZXMuaW5jbHVkZXMoY291bnRyeUlTT0NvZGUpKTtcclxuICAgICAgbWV0aG9kcy5mb3JFYWNoKG0gPT4gbS5jb3VudHJ5SVNPQ29kZSA9PT0gZmlyc3RHbG9iYWxDb3VudHJ5ICYmIChtLmNvdW50cnlJU09Db2RlID0gT1RIRVJfQ09VTlRSWV9DT0RFKSk7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uLm1ldGhvZFR5cGVzID0gbWV0aG9kcztcclxuICAgIHJldHVybiBzZXNzaW9uO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uZmlndXJhdGlvbihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25zLmdldChuYW1lKTtcclxuICB9XHJcblxyXG4gIHJlZGlyZWN0KCkge1xyXG4gICAgaWYgKHRoaXMucmVkaXJlY3RVcmwpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZWRpcmVjdFVybDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm5CYWNrKCkge1xyXG4gICAgaWYgKHRoaXMucmV0dXJuVXJsKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaHJlZiA9IHRoaXMucmV0dXJuVXJsO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCBjYW5SZXR1cm5Ub1Byb2plY3QoKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLnJldHVyblVybDtcclxuICB9XHJcblxyXG4gIGdldCByZXR1cm5CYWNrVXJsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXR1cm5Vcmw7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlTmFtZUJ5SWQoaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKS5tZXRob2RUeXBlcy5maW5kKG0gPT4gbS50eXBlLmlkID09PSBpZCkudHlwZS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2Vzc2lvblZhbHVlKCk6IFNlc3Npb25JbmZvIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEkLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQoKTogT2JzZXJ2YWJsZTxTZXNzaW9uSW5mbz4ge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRpbmckLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldFRlcm1pbmFsU2Vzc2lvbkluZm8oe1xyXG4gICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmckKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKChzZXNzaW9uOiBTZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhJC5uZXh0KHRoaXMudW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbikpO1xyXG4gICAgICAgICAgdGhpcy5maWxsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnJldHVyblVybCA9IHNlc3Npb24ucmV0dXJuVXJsO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWV0aG9kSW5mbyhjdXJyZW5jeSwgdHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPE1ldGhvZEluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ01ldGhvZEluZm8kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXR5cGVJZCB8fCAhY3VycmVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3Ioe30pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEluZm8oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgY3VycmVuY3ksXHJcbiAgICAgICAgdHlwZUlkXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKG1ldGhvZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1ldGhvZC5wYXltZW50X3Rva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudF90b2tlbiA9IG1ldGhvZC5wYXltZW50X3Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2F0Y2hFcnJvcihsb2FkaW5nJD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xyXG4gICAgcmV0dXJuIChlcnI6IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0TG9jYWxFcnJvcihlcnIuZXJyb3IpO1xyXG4gICAgICBsb2FkaW5nJD8ubmV4dChmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcmVwYXJlKGRhdGE6IFRlcm1pbmFsUGF5bWVudFByZXBhcmVSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2U+IHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRQcmVwYXJlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdDogZGF0YVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxQYXltZW50Q29uZmlybSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgdGVybWluYWxQYXltZW50Q29uZmlybVJlcXVlc3Q6IHtcclxuICAgICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgICBnYUNvb2tpZTogdGhpcy5jb29raWVTcnYuZ2V0KCdfZ2EnKSB8fCBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJlZGlyZWN0VXJsID0gcmVzcC5yZWRpcmVjdFVybDtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCkge1xyXG4gICAgaWYgKCF0aGlzLmxvYWRpbmdDb25maXJtJC5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbENsb3NlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5yZXR1cm5CYWNrKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB7Y29kZTogSTE4Tl9LRVkuU0VTU0lPTl9DTE9TRUR9O1xyXG4gICAgICAgICAgICB0aGlzLmFwaUVycm9yc1Nydi5zZXRMb2NhbEVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cclxuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldEJhbmtzKHR5cGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUZXJtaW5hbE1ldGhvZEJhbmtzUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEJhbmtzKHtcclxuICAgICAgICB0eXBlSWQsXHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RG9jdW1lbnRzKHR5cGVJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZT4ge1xyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXMoe1xyXG4gICAgICAgIHR5cGVJZCxcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDYXJkVGVybWluYWxTZGsobGFuZzogc3RyaW5nLCBpZDogc3RyaW5nLCB0YWJpbmRleD86IG51bWJlcik6IENkZVRlcm1pbmFsU2RrIHtcclxuICAgIHJldHVybiB0aGlzLmNhcmRUZXJtaW5hbFNka0ZhY3RvcnkodGhpcy5wYXltZW50X3Rva2VuLCBpZCwge2xhbmcsIHRhYmluZGV4fSk7XHJcbiAgfVxyXG5cclxuICBmZWVDaGFuZ2VhYmxlID0gISF0aGlzLnRlcm1pbmFsQXBpLmdldEZlZTtcclxuXHJcbiAgZmVlT3B0aW9ucyhwYXltZW50OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldEZlZShwYXltZW50KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -1,108 +1,124 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { DOCUMENT } from '@angular/common';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
- import { DEFAULT_LANG, LANGUAGE, LOCAL_LANG_KEY } from '../../models/constants';
4
+ import { DEFAULT_LANG, LANGUAGE } from '../../models/constants';
5
5
  import { TERMINAL_VERSION_SERVICE_TOKEN } from '../../../const';
6
+ import { LocalStorage } from "../local-storage";
6
7
  import * as i0 from "@angular/core";
8
+ const TRANSLATION_LANG_KEYS = {
9
+ [LANGUAGE.RU]: {
10
+ code: 'ru',
11
+ name: 'Русский',
12
+ countries: [
13
+ 'AZ',
14
+ 'AM',
15
+ 'BY',
16
+ 'KZ',
17
+ 'KG',
18
+ 'MD',
19
+ 'RU',
20
+ 'TJ',
21
+ 'TM',
22
+ 'UZ',
23
+ 'UA',
24
+ ],
25
+ },
26
+ [LANGUAGE.EN]: {
27
+ code: 'gb',
28
+ name: 'English',
29
+ countries: [],
30
+ },
31
+ [LANGUAGE.ES]: {
32
+ code: 'es',
33
+ name: 'Español',
34
+ countries: [
35
+ 'BZ',
36
+ 'GT',
37
+ 'HN',
38
+ 'CR',
39
+ 'PA',
40
+ 'NI',
41
+ 'SV',
42
+ 'AR',
43
+ 'CL',
44
+ 'CO',
45
+ 'EC',
46
+ 'PY',
47
+ 'PE',
48
+ 'GY',
49
+ 'ES',
50
+ ],
51
+ },
52
+ [LANGUAGE.TR]: {
53
+ code: 'tr',
54
+ name: 'Türkçe',
55
+ countries: ['TR'],
56
+ },
57
+ [LANGUAGE.PT]: {
58
+ code: 'pt',
59
+ name: 'Português',
60
+ countries: ['PT', 'BR'],
61
+ },
62
+ };
7
63
  export class TranslateLangStorageService {
8
64
  constructor() {
65
+ this._storage = inject(LocalStorage);
66
+ this.versionSrv = inject(TERMINAL_VERSION_SERVICE_TOKEN);
9
67
  this.document = inject(DOCUMENT);
10
68
  this.translateSrv = inject(TranslateService);
11
- this.versionSrv = inject(TERMINAL_VERSION_SERVICE_TOKEN);
12
- this._isLanguageDetected = false;
13
- this.TRANSLATION_LANG_KEYS = {
14
- [LANGUAGE.RU]: {
15
- code: 'ru',
16
- name: 'Русский',
17
- countries: ['AZ', 'AM', 'BY', 'KZ', 'KG', 'MD', 'RU', 'TJ', 'TM', 'UZ', 'UA']
18
- },
19
- [LANGUAGE.EN]: {
20
- code: 'gb',
21
- name: 'English',
22
- countries: []
23
- },
24
- [LANGUAGE.LT]: {
25
- code: 'lt',
26
- name: 'Lietuvių',
27
- countries: ['LT']
28
- },
29
- [LANGUAGE.ES]: {
30
- code: 'es',
31
- name: 'Español',
32
- countries: ['BZ', 'GT', 'HN', 'CR', 'PA', 'NI', 'SV', 'AR', 'CL', 'CO', 'EC', 'PY', 'PE', 'GY', 'ES']
33
- },
34
- [LANGUAGE.TR]: {
35
- code: 'tr',
36
- name: 'Türkçe',
37
- countries: ['TR']
38
- },
39
- [LANGUAGE.PT]: {
40
- code: 'pt',
41
- name: 'Português',
42
- countries: ['PT', 'BR']
43
- }
44
- };
45
- this.translations = this.TRANSLATION_LANG_KEYS;
69
+ this.TRANSLATION_LANG_KEYS = TRANSLATION_LANG_KEYS;
46
70
  }
47
71
  get languages() {
48
72
  return this.versionSrv.langs || [LANGUAGE.RU, LANGUAGE.EN, LANGUAGE.PT, LANGUAGE.TR, LANGUAGE.ES];
49
73
  }
50
- get storage() {
51
- return this.document.defaultView.localStorage;
52
- }
53
74
  get location() {
54
75
  return this.document.defaultView.location;
55
76
  }
56
- get defaultLang() {
57
- const detectedLanguage = this.storage.getItem(LOCAL_LANG_KEY) || this.queryLang;
58
- this._isLanguageDetected = !!detectedLanguage;
59
- return detectedLanguage || DEFAULT_LANG;
60
- }
61
77
  get onLangChange$() {
62
78
  return this.translateSrv.onLangChange;
63
79
  }
64
- get isLanguageDetected() {
65
- return this._isLanguageDetected;
66
- }
67
80
  get currentLang() {
68
81
  return this.translateSrv.currentLang;
69
82
  }
70
- setAvailableLanguages(langs = this.languages) {
71
- if (!langs || !langs.length) {
72
- this.translations = this.TRANSLATION_LANG_KEYS;
73
- return;
74
- }
75
- this.translations = Object.keys(this.TRANSLATION_LANG_KEYS).reduce((value, c) => {
76
- if (langs.includes(c)) {
77
- value[c] = this.TRANSLATION_LANG_KEYS[c];
78
- }
79
- return value;
80
- }, {});
81
- if (!langs.includes(this.translateSrv.currentLang)) {
82
- this.translateSrv
83
- .use(langs[0]);
83
+ get queryLang() {
84
+ return new URL(this.location.href).searchParams.get('language');
85
+ }
86
+ get countryLanguage() {
87
+ const code = this._storage.defaultCountry?.toUpperCase();
88
+ if (!code) {
89
+ return null;
84
90
  }
91
+ return Object.keys(this.TRANSLATION_LANG_KEYS).find((lang) => {
92
+ const meta = this.TRANSLATION_LANG_KEYS[lang];
93
+ return meta?.countries.some((c) => c.includes(code.toUpperCase()));
94
+ });
85
95
  }
86
- setLanguage$(lang, options = { save: true }) {
87
- if (!lang) {
88
- lang = this.defaultLang;
96
+ setLanguage$(options = { save: true }) {
97
+ const availableLanguages = Object.keys(this.TRANSLATION_LANG_KEYS);
98
+ let candidateLang = DEFAULT_LANG;
99
+ const lang = options?.lang?.toLowerCase();
100
+ const queryLang = this.queryLang?.toLowerCase();
101
+ const storageLang = this._storage.defaultLang?.toLowerCase();
102
+ const countryLang = this.countryLanguage?.toLowerCase();
103
+ if (availableLanguages.includes(lang)) {
104
+ candidateLang = lang;
89
105
  }
90
- else if (options?.save) {
91
- this.storage.setItem(LOCAL_LANG_KEY, lang);
106
+ else if (availableLanguages.includes(storageLang)) {
107
+ candidateLang = storageLang;
92
108
  }
93
- return this.translateSrv
94
- .use(lang);
95
- }
96
- get queryLang() {
97
- return new URL(this.location.href).searchParams.get('language');
98
- }
99
- setLanguageByCountry(code) {
100
- const country = Object.keys(this.TRANSLATION_LANG_KEYS)
101
- .find((lang) => this.TRANSLATION_LANG_KEYS[lang].countries.some(c => c.includes(code))) || undefined;
102
- if (!this.isLanguageDetected) {
103
- this.setLanguage$(country, { save: false });
109
+ else if (availableLanguages.includes(queryLang)) {
110
+ candidateLang = queryLang;
111
+ }
112
+ else if (availableLanguages.includes(countryLang)) {
113
+ candidateLang = countryLang;
114
+ }
115
+ if (!this.versionSrv.langs.includes(candidateLang)) {
116
+ candidateLang = DEFAULT_LANG;
117
+ }
118
+ if (options?.save) {
119
+ this._storage.saveDefaultLang(candidateLang);
104
120
  }
105
- return;
121
+ return this.translateSrv.use(candidateLang);
106
122
  }
107
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
108
124
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService }); }
@@ -110,4 +126,4 @@ export class TranslateLangStorageService {
110
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService, decorators: [{
111
127
  type: Injectable
112
128
  }], ctorParameters: () => [] });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLDJCQUEyQjtJQUlwQztRQUhBLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsaUJBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsTUFBTSxDQUEwQiw4QkFBOEIsQ0FBQyxDQUFDO1FBTzdFLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUNuQiwwQkFBcUIsR0FBd0I7WUFDMUQsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzthQUNoRjtZQUNELENBQUMs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LENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0YsSUFBSSxTQUFTLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU87SUFDWCxDQUFDOzhHQWhIUSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgREVGQVVMVF9MQU5HLCBMQU5HVUFHRSwgTE9DQUxfTEFOR19LRVkgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyBBbHBoYTJDb2RlIH0gZnJvbSAnaTE4bi1pc28tY291bnRyaWVzJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBWZXJzaW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcblxyXG50eXBlIFRyYW5zbGF0aW9uTGFuZ0luZm8gPSB7XHJcbiAgICBba2V5IGluIExBTkdVQUdFXT86IHsgY29kZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNvdW50cmllczogQWxwaGEyQ29kZVtdIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIHtcclxuICAgIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XHJcbiAgICB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHZlcnNpb25TcnYgPSBpbmplY3Q8VmVyc2lvblNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuICBnZXQgbGFuZ3VhZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblNydi5sYW5ncyB8fCBbTEFOR1VBR0UuUlUsIExBTkdVQUdFLkVOLCBMQU5HVUFHRS5QVCwgTEFOR1VBR0UuVFIsTEFOR1VBR0UuRVNdO1xyXG4gIH1cclxuXHJcbiAgICBwcml2YXRlIF9pc0xhbmd1YWdlRGV0ZWN0ZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgVFJBTlNMQVRJT05fTEFOR19LRVlTOiBUcmFuc2xhdGlvbkxhbmdJbmZvID0ge1xyXG4gICAgICAgIFtMQU5HVUFHRS5SVV06IHtcclxuICAgICAgICAgICAgY29kZTogJ3J1JyxcclxuICAgICAgICAgICAgbmFtZTogJ9Cg0YPRgdGB0LrQuNC5JyxcclxuICAgICAgICAgICAgY291bnRyaWVzOiBbJ0FaJywgJ0FNJywgJ0JZJywgJ0taJywgJ0tHJywgJ01EJywgJ1JVJywgJ1RKJywgJ1RNJywgJ1VaJywgJ1VBJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIFtMQU5HVUFHRS5FTl06IHtcclxuICAgICAgICAgICAgY29kZTogJ2diJyxcclxuICAgICAgICAgICAgbmFtZTogJ0VuZ2xpc2gnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFtdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBbTEFOR1VBR0UuTFRdOiB7XHJcbiAgICAgICAgICBjb2RlOiAnbHQnLFxyXG4gICAgICAgICAgbmFtZTogJ0xpZXR1dmnFsycsXHJcbiAgICAgICAgICBjb3VudHJpZXM6IFsnTFQnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLkVTXToge1xyXG4gICAgICAgICAgICBjb2RlOiAnZXMnLFxyXG4gICAgICAgICAgICBuYW1lOiAnRXNwYcOxb2wnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFsnQlonLCAnR1QnLCAnSE4nLCAnQ1InLCAnUEEnLCAnTkknLCAnU1YnLCAnQVInLCAnQ0wnLCAnQ08nLCAnRUMnLCAnUFknLCAnUEUnLCAnR1knLCAnRVMnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLlRSXToge1xyXG4gICAgICAgICAgICBjb2RlOiAndHInLFxyXG4gICAgICAgICAgICBuYW1lOiAnVMO8cmvDp2UnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFsnVFInXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLlBUXToge1xyXG4gICAgICAgICAgICBjb2RlOiAncHQnLFxyXG4gICAgICAgICAgICBuYW1lOiAnUG9ydHVndcOqcycsXHJcbiAgICAgICAgICAgIGNvdW50cmllczogWydQVCcsICdCUiddXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGdldCBzdG9yYWdlKCk6IFN0b3JhZ2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2FsU3RvcmFnZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCBsb2NhdGlvbigpOiBMb2NhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgZGVmYXVsdExhbmcoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKExPQ0FMX0xBTkdfS0VZKSB8fCB0aGlzLnF1ZXJ5TGFuZztcclxuICAgICAgICB0aGlzLl9pc0xhbmd1YWdlRGV0ZWN0ZWQgPSAhIWRldGVjdGVkTGFuZ3VhZ2U7XHJcbiAgICAgICAgcmV0dXJuIGRldGVjdGVkTGFuZ3VhZ2UgfHwgREVGQVVMVF9MQU5HO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb25MYW5nQ2hhbmdlJCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYub25MYW5nQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uTGFuZ0luZm8gPSB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTGFuZ3VhZ2VEZXRlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNMYW5ndWFnZURldGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY3VycmVudExhbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2LmN1cnJlbnRMYW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEF2YWlsYWJsZUxhbmd1YWdlcyhsYW5nczogTEFOR1VBR0VbXSA9IHRoaXMubGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgaWYgKCFsYW5ncyB8fCAhbGFuZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0gdGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVM7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUykucmVkdWNlPFRyYW5zbGF0aW9uTGFuZ0luZm8+KCh2YWx1ZSwgYzogTEFOR1VBR0UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGxhbmdzLmluY2x1ZGVzKGMpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtjXSA9IHRoaXMuVFJBTlNMQVRJT05fTEFOR19LRVlTW2NdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9LCB7fSk7XHJcblxyXG4gICAgICAgIGlmICghbGFuZ3MuaW5jbHVkZXModGhpcy50cmFuc2xhdGVTcnYuY3VycmVudExhbmcgYXMgTEFOR1VBR0UpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU3J2XHJcbiAgICAgICAgICAgICAgICAudXNlKGxhbmdzWzBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0TGFuZ3VhZ2UkKGxhbmc/OiBzdHJpbmcsIG9wdGlvbnMgPSB7c2F2ZTogdHJ1ZX0pIHtcclxuICAgICAgICBpZiAoIWxhbmcpIHtcclxuICAgICAgICAgICAgbGFuZyA9IHRoaXMuZGVmYXVsdExhbmc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zPy5zYXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKExPQ0FMX0xBTkdfS0VZLCBsYW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2XHJcbiAgICAgICAgICAgIC51c2UobGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBxdWVyeUxhbmcoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVUkwodGhpcy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCdsYW5ndWFnZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRMYW5ndWFnZUJ5Q291bnRyeShjb2RlOiBBbHBoYTJDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY291bnRyeSA9IChPYmplY3Qua2V5cyh0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUykgYXMgKGtleW9mIFRyYW5zbGF0aW9uTGFuZ0luZm8pW10pXHJcbiAgICAgICAgICAgIC5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGxhbmc6IExBTkdVQUdFKSA9PiB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZU1tsYW5nXS5jb3VudHJpZXMuc29tZShjID0+IGMuaW5jbHVkZXMoY29kZSkpXHJcbiAgICAgICAgICAgICkgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0xhbmd1YWdlRGV0ZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSQoY291bnRyeSwge3NhdmU6IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxufVxyXG4iXX0=
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWNoRCxNQUFNLHFCQUFxQixHQUF3QjtJQUNqRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUU7WUFDVCxJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtTQUNMO0tBQ0Y7SUFDRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUUsRUFBRTtLQUNkO0lBQ0QsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNW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ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50LCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfTEFORywgTEFOR1VBR0UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyBBbHBoYTJDb2RlIH0gZnJvbSAnaTE4bi1pc28tY291bnRyaWVzJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBWZXJzaW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gXCIuLi9sb2NhbC1zdG9yYWdlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuXHJcbmludGVyZmFjZSBUcmFuc2xhdGlvbkxhbmdJbmZvTWV0YSB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb3VudHJpZXM6IEFscGhhMkNvZGVbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkxhbmdJbmZvIHtcclxuICBba2V5OiBzdHJpbmddOiBUcmFuc2xhdGlvbkxhbmdJbmZvTWV0YTtcclxufVxyXG5cclxuY29uc3QgVFJBTlNMQVRJT05fTEFOR19LRVlTOiBUcmFuc2xhdGlvbkxhbmdJbmZvID0ge1xyXG4gIFtMQU5HVUFHRS5SVV06IHtcclxuICAgIGNvZGU6ICdydScsXHJcbiAgICBuYW1lOiAn0KDRg9GB0YHQutC40LknLFxyXG4gICAgY291bnRyaWVzOiBbXHJcbiAgICAgICdBWicsXHJcbiAgICAgICdBTScsXHJcbiAgICAgICdCWScsXHJcbiAgICAgICdLWicsXHJcbiAgICAgICdLRycsXHJcbiAgICAgICdNRCcsXHJcbiAgICAgICdSVScsXHJcbiAgICAgICdUSicsXHJcbiAgICAgICdUTScsXHJcbiAgICAgICdVWicsXHJcbiAgICAgICdVQScsXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgW0xBTkdVQUdFLkVOXToge1xyXG4gICAgY29kZTogJ2diJyxcclxuICAgIG5hbWU6ICdFbmdsaXNoJyxcclxuICAgIGNvdW50cmllczogW10sXHJcbiAgfSxcclxuICBbTEFOR1VBR0UuRVNdOiB7XHJcbiAgICBjb2RlOiAnZXMnLFxyXG4gICAgbmFtZTogJ0VzcGHDsW9sJyxcclxuICAgIGNvdW50cmllczogW1xyXG4gICAgICAnQlonLFxyXG4gICAgICAnR1QnLFxyXG4gICAgICAnSE4nLFxyXG4gICAgICAnQ1InLFxyXG4gICAgICAnUEEnLFxyXG4gICAgICAnTkknLFxyXG4gICAgICAnU1YnLFxyXG4gICAgICAnQVInLFxyXG4gICAgICAnQ0wnLFxyXG4gICAgICAnQ08nLFxyXG4gICAgICAnRUMnLFxyXG4gICAgICAnUFknLFxyXG4gICAgICAnUEUnLFxyXG4gICAgICAnR1knLFxyXG4gICAgICAnRVMnLFxyXG4gICAgXSxcclxuICB9LFxyXG4gIFtMQU5HVUFHRS5UUl06IHtcclxuICAgIGNvZGU6ICd0cicsXHJcbiAgICBuYW1lOiAnVMO8cmvDp2UnLFxyXG4gICAgY291bnRyaWVzOiBbJ1RSJ10sXHJcbiAgfSxcclxuICBbTEFOR1VBR0UuUFRdOiB7XHJcbiAgICBjb2RlOiAncHQnLFxyXG4gICAgbmFtZTogJ1BvcnR1Z3XDqnMnLFxyXG4gICAgY291bnRyaWVzOiBbJ1BUJywgJ0JSJ10sXHJcbiAgfSxcclxufTtcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9zdG9yYWdlOiBMb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFuZ3VhZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblNydi5sYW5ncyB8fCBbTEFOR1VBR0UuUlUsIExBTkdVQUdFLkVOLCBMQU5HVUFHRS5QVCwgTEFOR1VBR0UuVFIsIExBTkdVQUdFLkVTXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyc2lvblNydiA9IGluamVjdDxWZXJzaW9uU2VydmljZUludGVyZmFjZT4oVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOKTtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIHJlYWRvbmx5IFRSQU5TTEFUSU9OX0xBTkdfS0VZUyA9IFRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbG9jYXRpb24oKTogTG9jYXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb247XHJcbiAgfVxyXG5cclxuICBnZXQgb25MYW5nQ2hhbmdlJCgpOiBFdmVudEVtaXR0ZXI8TGFuZ0NoYW5nZUV2ZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYub25MYW5nQ2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYuY3VycmVudExhbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgcXVlcnlMYW5nKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIG5ldyBVUkwodGhpcy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCdsYW5ndWFnZScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgY291bnRyeUxhbmd1YWdlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuX3N0b3JhZ2UuZGVmYXVsdENvdW50cnk/LnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVMpLmZpbmQoKGxhbmc6IExBTkdVQUdFKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZU1tsYW5nXTtcclxuICAgICAgcmV0dXJuIG1ldGE/LmNvdW50cmllcy5zb21lKChjKSA9PiBjLmluY2x1ZGVzKGNvZGUudG9VcHBlckNhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZSQoXHJcbiAgICBvcHRpb25zOiB7IHNhdmU6IGJvb2xlYW47IGxhbmc/OiBzdHJpbmcgfSA9IHtzYXZlOiB0cnVlfSxcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gT2JqZWN0LmtleXModGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVMpO1xyXG4gICAgbGV0IGNhbmRpZGF0ZUxhbmcgPSBERUZBVUxUX0xBTkc7XHJcbiAgICBjb25zdCBsYW5nID0gb3B0aW9ucz8ubGFuZz8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IHF1ZXJ5TGFuZyA9IHRoaXMucXVlcnlMYW5nPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3Qgc3RvcmFnZUxhbmcgPSB0aGlzLl9zdG9yYWdlLmRlZmF1bHRMYW5nPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgY291bnRyeUxhbmcgPSB0aGlzLmNvdW50cnlMYW5ndWFnZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMobGFuZykpIHtcclxuICAgICAgY2FuZGlkYXRlTGFuZyA9IGxhbmc7XHJcbiAgICB9IGVsc2UgaWYgKGF2YWlsYWJsZUxhbmd1YWdlcy5pbmNsdWRlcyhzdG9yYWdlTGFuZykpIHtcclxuICAgICAgY2FuZGlkYXRlTGFuZyA9IHN0b3JhZ2VMYW5nO1xyXG4gICAgfSBlbHNlIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMocXVlcnlMYW5nKSkge1xyXG4gICAgICBjYW5kaWRhdGVMYW5nID0gcXVlcnlMYW5nO1xyXG4gICAgfSBlbHNlIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMoY291bnRyeUxhbmcpKSB7XHJcbiAgICAgIGNhbmRpZGF0ZUxhbmcgPSBjb3VudHJ5TGFuZztcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52ZXJzaW9uU3J2LmxhbmdzLmluY2x1ZGVzKGNhbmRpZGF0ZUxhbmcgYXMgTEFOR1VBR0UpKSB7XHJcbiAgICAgIGNhbmRpZGF0ZUxhbmcgPSBERUZBVUxUX0xBTkc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnM/LnNhdmUpIHtcclxuICAgICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdExhbmcoY2FuZGlkYXRlTGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2LnVzZShjYW5kaWRhdGVMYW5nKTtcclxuICB9XHJcbn1cclxuIl19
@@ -8,19 +8,21 @@ import { FormsModule } from '@angular/forms';
8
8
  import { TrmSelectLabelTemplateDirective } from '../trm-select/trm-select-label-template.directive';
9
9
  import { TranslateModule } from '@ngx-translate/core';
10
10
  import { GmSkeletonComponent } from '@gmmoney/gm-ui-kit';
11
+ import { TERMINAL_VERSION_SERVICE_TOKEN } from "../../../../const";
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "@angular/forms";
13
14
  import * as i2 from "@ngx-translate/core";
14
15
  export class TerminalLangSwitcherComponent {
15
16
  get translation_keys() {
16
- return this.langStorageSrv.translations;
17
+ return this.langStorageSrv.TRANSLATION_LANG_KEYS;
17
18
  }
18
19
  constructor() {
20
+ this.versionSrv = inject(TERMINAL_VERSION_SERVICE_TOKEN);
19
21
  this.langStorageSrv = inject(TranslateLangStorageService);
20
22
  this.cd = inject(ChangeDetectorRef);
21
23
  this.unSubscriber = new Subject();
22
24
  this.loading = false;
23
- this.change = new EventEmitter();
25
+ this.langChange = new EventEmitter();
24
26
  this.tabIndex = 0;
25
27
  this.langStorageSrv.onLangChange$
26
28
  .pipe(takeUntil(this.unSubscriber))
@@ -30,28 +32,28 @@ export class TerminalLangSwitcherComponent {
30
32
  return this.langStorageSrv.currentLang;
31
33
  }
32
34
  get langs() {
33
- return Object.keys(this.translation_keys);
35
+ return this.versionSrv.langs;
34
36
  }
35
37
  changeLang(lang) {
36
- this.langStorageSrv.setLanguage$(lang);
38
+ this.langStorageSrv.setLanguage$({ lang, save: true });
37
39
  this.cd.markForCheck();
38
- this.change.emit(lang);
40
+ this.langChange.emit(lang);
39
41
  }
40
42
  ngOnDestroy() {
41
43
  this.unSubscriber.next();
42
44
  this.unSubscriber.unsubscribe();
43
45
  }
44
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TerminalLangSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TerminalLangSwitcherComponent, isStandalone: true, selector: "app-terminal-lang-switcher", inputs: { loading: "loading", tabIndex: "tabIndex" }, outputs: { change: "change" }, ngImport: i0, template: "@if (!loading) {\r\n <app-trm-select class=\"lang-switcher\"\r\n [hasBorder]=\"false\"\r\n [searchable]=\"false\"\r\n [hasScrollbar]=\"false\"\r\n [data]=\"langs\"\r\n [ngModel]=\"lang\"\r\n [tabIndex]=\"tabIndex\"\r\n (ngModelChange)=\"changeLang($event)\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"fi\" [ngClass]=\"'fi-' + translation_keys[item].code\"></span>\r\n <span> {{translation_keys[item].name | translate}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n} @else {\r\n <gm-skeleton [count]=\"1\" [size]=\"30\"></gm-skeleton>\r\n}\r\n", styles: [":host{display:block}@media (min-width: 768px){:host{min-width:108px}}.lang-switcher{--trm-select-padding-right: 20px;--trm-select-arrow-right: 0;width:100%}.fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.fi~span{display:none}@media (min-width: 768px){.fi~span{display:inline}}.trm-skeleton{min-width:70px}.trm-skeleton .loader,.trm-skeleton .skeleton-loader{height:30px}\n"], dependencies: [{ kind: "component", type: TrmSelectComponent, selector: "app-trm-select", inputs: ["label", "hasBorder", "data", "tabIndex", "name", "placeholder", "searchable", "hasScrollbar", "nameId", "nameLabel"], outputs: ["open", "search"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TrmSelectLabelTemplateDirective, selector: "[trmSelectLabelTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TerminalLangSwitcherComponent, isStandalone: true, selector: "app-terminal-lang-switcher", inputs: { loading: "loading", tabIndex: "tabIndex" }, outputs: { langChange: "langChange" }, ngImport: i0, template: "@if (!loading) {\r\n <app-trm-select class=\"lang-switcher\"\r\n [hasBorder]=\"false\"\r\n [searchable]=\"false\"\r\n [hasScrollbar]=\"false\"\r\n [data]=\"langs\"\r\n [ngModel]=\"lang\"\r\n [tabIndex]=\"tabIndex\"\r\n (ngModelChange)=\"changeLang($event)\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"fi\" [ngClass]=\"'fi-' + translation_keys[item].code\"></span>\r\n <span> {{translation_keys[item].name | translate}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n} @else {\r\n <gm-skeleton [count]=\"1\" [size]=\"30\"></gm-skeleton>\r\n}\r\n", styles: [":host{display:block}@media (min-width: 768px){:host{min-width:108px}}.lang-switcher{--trm-select-padding-right: 20px;--trm-select-arrow-right: 0;width:100%}.fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.fi~span{display:none}@media (min-width: 768px){.fi~span{display:inline}}.trm-skeleton{min-width:70px}.trm-skeleton .loader,.trm-skeleton .skeleton-loader{height:30px}\n"], dependencies: [{ kind: "component", type: TrmSelectComponent, selector: "app-trm-select", inputs: ["label", "hasBorder", "data", "tabIndex", "name", "placeholder", "searchable", "hasScrollbar", "nameId", "nameLabel"], outputs: ["open", "search"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TrmSelectLabelTemplateDirective, selector: "[trmSelectLabelTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
48
  }
47
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TerminalLangSwitcherComponent, decorators: [{
48
50
  type: Component,
49
51
  args: [{ selector: 'app-terminal-lang-switcher', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TrmSelectComponent, FormsModule, TrmSelectLabelTemplateDirective, NgClass, TranslateModule, GmSkeletonComponent], template: "@if (!loading) {\r\n <app-trm-select class=\"lang-switcher\"\r\n [hasBorder]=\"false\"\r\n [searchable]=\"false\"\r\n [hasScrollbar]=\"false\"\r\n [data]=\"langs\"\r\n [ngModel]=\"lang\"\r\n [tabIndex]=\"tabIndex\"\r\n (ngModelChange)=\"changeLang($event)\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"fi\" [ngClass]=\"'fi-' + translation_keys[item].code\"></span>\r\n <span> {{translation_keys[item].name | translate}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n} @else {\r\n <gm-skeleton [count]=\"1\" [size]=\"30\"></gm-skeleton>\r\n}\r\n", styles: [":host{display:block}@media (min-width: 768px){:host{min-width:108px}}.lang-switcher{--trm-select-padding-right: 20px;--trm-select-arrow-right: 0;width:100%}.fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.fi~span{display:none}@media (min-width: 768px){.fi~span{display:inline}}.trm-skeleton{min-width:70px}.trm-skeleton .loader,.trm-skeleton .skeleton-loader{height:30px}\n"] }]
50
52
  }], ctorParameters: () => [], propDecorators: { loading: [{
51
53
  type: Input
52
- }], change: [{
54
+ }], langChange: [{
53
55
  type: Output
54
56
  }], tabIndex: [{
55
57
  type: Input
56
58
  }] } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9zaGFyZWQvY29tcG9uZW50cy90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdGVybWluYWwtbGFuZy1zd2l0Y2hlci90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLDZCQUE2QjtJQVN0QyxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO0lBQzVDLENBQUM7SUFFRDtRQVpRLG1CQUFjLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDckQsT0FBRSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRS9CLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2YsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDckMsYUFBUSxHQUFHLENBQUMsQ0FBQztRQU9sQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWE7YUFDNUIsSUFBSSxDQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQy9CO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWTtRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OEdBckNRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLDJLQzVCMUMseW5CQWtCQSxtaEJEUVksa0JBQWtCLHVOQUFFLFdBQVcsK1ZBQUUsK0JBQStCLHFFQUFFLE9BQU8sbUZBQUUsZUFBZSw0RkFBRSxtQkFBbUI7OzJGQUU5Ryw2QkFBNkI7a0JBUnpDLFNBQVM7K0JBQ0ksNEJBQTRCLG1CQUdyQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDVCxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSwrQkFBK0IsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixDQUFDO3dEQU8vRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QtbGFiZWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEdtU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZ21tb25leS9nbS11aS1raXQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC10ZXJtaW5hbC1sYW5nLXN3aXRjaGVyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbVHJtU2VsZWN0Q29tcG9uZW50LCBGb3Jtc01vZHVsZSwgVHJtU2VsZWN0TGFiZWxUZW1wbGF0ZURpcmVjdGl2ZSwgTmdDbGFzcywgVHJhbnNsYXRlTW9kdWxlLCBHbVNrZWxldG9uQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVybWluYWxMYW5nU3dpdGNoZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBsYW5nU3RvcmFnZVNydiA9IGluamVjdChUcmFuc2xhdGVMYW5nU3RvcmFnZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcblxyXG4gICAgcHJpdmF0ZSB1blN1YnNjcmliZXIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIGdldCB0cmFuc2xhdGlvbl9rZXlzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxhbmdTdG9yYWdlU3J2LnRyYW5zbGF0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxhbmdTdG9yYWdlU3J2Lm9uTGFuZ0NoYW5nZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YnNjcmliZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ1N0b3JhZ2VTcnYuY3VycmVudExhbmc7XHJcbiAgICB9XHJcbiAgICBnZXQgbGFuZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnRyYW5zbGF0aW9uX2tleXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUxhbmcobGFuZzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sYW5nU3RvcmFnZVNydi5zZXRMYW5ndWFnZSQobGFuZyk7XHJcbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KGxhbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMudW5TdWJzY3JpYmVyLm5leHQoKTtcclxuICAgICAgICB0aGlzLnVuU3Vic2NyaWJlci51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcbiIsIkBpZiAoIWxvYWRpbmcpIHtcclxuICA8YXBwLXRybS1zZWxlY3QgY2xhc3M9XCJsYW5nLXN3aXRjaGVyXCJcclxuICAgIFtoYXNCb3JkZXJdPVwiZmFsc2VcIlxyXG4gICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxyXG4gICAgW2hhc1Njcm9sbGJhcl09XCJmYWxzZVwiXHJcbiAgICBbZGF0YV09XCJsYW5nc1wiXHJcbiAgICBbbmdNb2RlbF09XCJsYW5nXCJcclxuICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VMYW5nKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPG5nLXRlbXBsYXRlIHRybVNlbGVjdExhYmVsVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlcIiBbbmdDbGFzc109XCInZmktJyArIHRyYW5zbGF0aW9uX2tleXNbaXRlbV0uY29kZVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4+IHt7dHJhbnNsYXRpb25fa2V5c1tpdGVtXS5uYW1lIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvYXBwLXRybS1zZWxlY3Q+XHJcbn0gQGVsc2Uge1xyXG4gIDxnbS1za2VsZXRvbiBbY291bnRdPVwiMVwiIFtzaXplXT1cIjMwXCI+PC9nbS1za2VsZXRvbj5cclxufVxyXG4iXX0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9zaGFyZWQvY29tcG9uZW50cy90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdGVybWluYWwtbGFuZy1zd2l0Y2hlci90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFXbkUsTUFBTSxPQUFPLDZCQUE2QjtJQVV0QyxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7SUFDckQsQ0FBQztJQUVEO1FBYlEsZUFBVSxHQUE0QixNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3RSxtQkFBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3JELE9BQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFPbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUMvQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0F0Q1EsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsbUxDOUIxQyx5bkJBa0JBLG1oQkRVWSxrQkFBa0IsdU5BQUUsV0FBVywrVkFBRSwrQkFBK0IscUVBQUUsT0FBTyxtRkFBRSxlQUFlLDRGQUFFLG1CQUFtQjs7MkZBRTlHLDZCQUE2QjtrQkFSekMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNULENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUM7d0RBUS9HLE9BQU87c0JBQWYsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QtbGFiZWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEdtU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZ21tb25leS9nbS11aS1raXQnO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9WRVJTSU9OX1NFUlZJQ0VfVE9LRU4gfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgVmVyc2lvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtUcm1TZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlLCBOZ0NsYXNzLCBUcmFuc2xhdGVNb2R1bGUsIEdtU2tlbGV0b25Db21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXJtaW5hbExhbmdTd2l0Y2hlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIHZlcnNpb25TcnY6IFZlcnNpb25TZXJ2aWNlSW50ZXJmYWNlID0gaW5qZWN0KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcbiAgICBwcml2YXRlIGxhbmdTdG9yYWdlU3J2ID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBwcml2YXRlIHVuU3Vic2NyaWJlciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgbGFuZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIGdldCB0cmFuc2xhdGlvbl9rZXlzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxhbmdTdG9yYWdlU3J2LlRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxhbmdTdG9yYWdlU3J2Lm9uTGFuZ0NoYW5nZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YnNjcmliZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ1N0b3JhZ2VTcnYuY3VycmVudExhbmc7XHJcbiAgICB9XHJcbiAgICBnZXQgbGFuZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZlcnNpb25TcnYubGFuZ3M7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlTGFuZyhsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5sYW5nU3RvcmFnZVNydi5zZXRMYW5ndWFnZSQoeyBsYW5nLCBzYXZlOiB0cnVlIH0pO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmxhbmdDaGFuZ2UuZW1pdChsYW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy51blN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKCFsb2FkaW5nKSB7XHJcbiAgPGFwcC10cm0tc2VsZWN0IGNsYXNzPVwibGFuZy1zd2l0Y2hlclwiXHJcbiAgICBbaGFzQm9yZGVyXT1cImZhbHNlXCJcclxuICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgIFtoYXNTY3JvbGxiYXJdPVwiZmFsc2VcIlxyXG4gICAgW2RhdGFdPVwibGFuZ3NcIlxyXG4gICAgW25nTW9kZWxdPVwibGFuZ1wiXHJcbiAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGFuZygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDxuZy10ZW1wbGF0ZSB0cm1TZWxlY3RMYWJlbFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpXCIgW25nQ2xhc3NdPVwiJ2ZpLScgKyB0cmFuc2xhdGlvbl9rZXlzW2l0ZW1dLmNvZGVcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuPiB7e3RyYW5zbGF0aW9uX2tleXNbaXRlbV0ubmFtZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2FwcC10cm0tc2VsZWN0PlxyXG59IEBlbHNlIHtcclxuICA8Z20tc2tlbGV0b24gW2NvdW50XT1cIjFcIiBbc2l6ZV09XCIzMFwiPjwvZ20tc2tlbGV0b24+XHJcbn1cclxuIl19