@dsivd/prestations-ng 17.0.1-beta.2 → 17.1.0-beta.1

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.
package/CHANGELOG.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ---
8
8
 
9
- ## [17.0.1]
9
+ ## [17.1.0] - must be aligned with prestations-be (17.1.0+)
10
10
 
11
11
  ### Added
12
12
 
@@ -17,6 +17,12 @@
17
17
  - [sdk-event-type.ts](projects/prestations-ng/src/sdk-events-logger/sdk-event-type.ts)
18
18
  - added `BREADCRUMB_CLICK` : user has clicked on a breadcrumb item
19
19
 
20
+ ### Updated
21
+
22
+ - [foehn-feedback-notification.component.ts](projects/prestations-ng/src/foehn-feedback-notification/foehn-feedback-notification.component.ts)
23
+
24
+ - Notification feedback answer is now encrypted in url when redirecting to feedback prestation
25
+
20
26
  ## [17.0.0] - must be aligned with prestations-be (17.0.0+)
21
27
 
22
28
  ### Added
@@ -2,22 +2,25 @@ import { Component, HostListener } from '@angular/core';
2
2
  import { faFaceFrown, faFaceMeh, faFaceSmile } from '@fortawesome/free-solid-svg-icons';
3
3
  import { combineLatest, filter, of, startWith } from 'rxjs';
4
4
  import { map, tap } from 'rxjs/operators';
5
+ import { FoehnFeedbackNotificationType } from '../foehn-feedback-notification/foehn-feedback-notification.type';
5
6
  import { PORTAIL_BASE_URL_INT } from '../sdk-appinfo/application-info.service';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../sdk-appinfo/application-info.service";
8
9
  import * as i2 from "../sdk-session-info/session-info.service";
9
10
  import * as i3 from "../gesdem/gesdem-handler.service";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "@fortawesome/angular-fontawesome";
12
- import * as i6 from "../foehn-icons/foehn-icon-chevron-down.component";
13
- import * as i7 from "../foehn-icons/foehn-icon-chevron-up.component";
14
- import * as i8 from "../sdk-dictionary/sdk-dictionary.pipe";
11
+ import * as i4 from "@angular/common/http";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@fortawesome/angular-fontawesome";
14
+ import * as i7 from "../foehn-icons/foehn-icon-chevron-down.component";
15
+ import * as i8 from "../foehn-icons/foehn-icon-chevron-up.component";
16
+ import * as i9 from "../sdk-dictionary/sdk-dictionary.pipe";
15
17
  export const FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX = 'FEEDBACK-USAGERS-';
16
18
  export class FoehnFeedbackNotificationComponent {
17
- constructor(applicationInfoService, sessionInfo, gesdemHandlerService) {
19
+ constructor(applicationInfoService, sessionInfo, gesdemHandlerService, http) {
18
20
  this.applicationInfoService = applicationInfoService;
19
21
  this.sessionInfo = sessionInfo;
20
22
  this.gesdemHandlerService = gesdemHandlerService;
23
+ this.http = http;
21
24
  this.goodIconName = faFaceSmile;
22
25
  this.mediumIconName = faFaceMeh;
23
26
  this.badIconName = faFaceFrown;
@@ -25,23 +28,21 @@ export class FoehnFeedbackNotificationComponent {
25
28
  this.applicationInfoService.data,
26
29
  this.applicationInfoService.currentEtapeInfo,
27
30
  this.sessionInfo.data.pipe(startWith(null)),
28
- this.gesdemHandlerService.updateFormDataSubject.pipe(startWith(null), map(() => {
29
- const reference = this.gesdemHandlerService.lastResponse?.meta?.reference;
30
- if (!reference) {
31
- return null;
32
- }
33
- return `${reference}-${this.gesdemHandlerService.lastResponse.meta.currentAction}`;
34
- }))
35
- ]).pipe(filter(([, etapeInfo]) => !!etapeInfo), tap(([applicationInfo, etapeInfo, sessionInfoData, fullReference]) => {
36
- this.isConnected =
31
+ this.gesdemHandlerService.updateFormDataSubject.pipe(startWith(null), map(() => this.gesdemHandlerService.lastResponse?.meta))
32
+ ]).pipe(filter(([, etapeInfo, , meta]) => !!etapeInfo && !!meta), tap(([applicationInfo, etapeInfo, sessionInfoData, meta]) => {
33
+ const feedBackFormBaseUrl = `${this.getPortailBaseUrl(applicationInfo)}pub/101643/`;
34
+ const feedbackUsager = new FoehnFeedbackNotificationType();
35
+ feedbackUsager.isConnected =
37
36
  !!sessionInfoData && !!sessionInfoData.context;
38
- this.idMetierEtape = etapeInfo.idMetierEtape;
39
- this.beneficiaryCategory = this.getCategory(sessionInfoData, etapeInfo);
40
- this.fullReference = fullReference;
41
- this.feedBackFormBaseUrl = `${this.getPortailBaseUrl(applicationInfo)}pub/101643/`;
42
- }), map(([, etapeInfo]) => {
37
+ feedbackUsager.idMetierEtape = etapeInfo.idMetierEtape;
38
+ feedbackUsager.beneficiaryCategory = this.getCategory(sessionInfoData, etapeInfo);
39
+ feedbackUsager.currentAction = meta?.currentAction;
40
+ this.goodUrl = this.getUrl('good', feedbackUsager, feedBackFormBaseUrl, meta.reference);
41
+ this.mediumUrl = this.getUrl('medium', feedbackUsager, feedBackFormBaseUrl, meta.reference);
42
+ this.badUrl = this.getUrl('bad', feedbackUsager, feedBackFormBaseUrl, meta.reference);
43
+ }), map(([, etapeInfo, , meta]) => {
43
44
  const visible = etapeInfo?.userFeedbackRequested;
44
- const needFeedback = !localStorage.getItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX + this.fullReference);
45
+ const needFeedback = !localStorage.getItem(`${FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX}${this.getFullReference(meta)}`);
45
46
  this.expanded = visible;
46
47
  return needFeedback && visible;
47
48
  }));
@@ -52,17 +53,21 @@ export class FoehnFeedbackNotificationComponent {
52
53
  document.body.offsetHeight - 30;
53
54
  }
54
55
  hideNotification() {
55
- localStorage.setItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX + this.fullReference, 'Done');
56
+ localStorage.setItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX +
57
+ this.getFullReference(this.gesdemHandlerService.lastResponse?.meta), 'Done');
56
58
  this.visible = of(false);
57
59
  }
58
- getUrl(answer) {
59
- let s = `${this.feedBackFormBaseUrl}?`;
60
- s += `answer=${answer}`;
61
- s += `&idMetierEtape=${this.idMetierEtape}`;
62
- s += `&isConnected=${this.isConnected}`;
63
- s += `&beneficiaryCategory=${this.beneficiaryCategory}`;
64
- s += `&fullReference=${this.fullReference}`;
65
- return s;
60
+ getUrl(answer, feedbackUsager, feedBackFormBaseUrl, reference) {
61
+ if (!feedbackUsager || !feedBackFormBaseUrl || !reference) {
62
+ return of(null);
63
+ }
64
+ const fbu = { ...feedbackUsager };
65
+ fbu.answer = answer;
66
+ return this.http
67
+ .post(`api/feedbacknotification/queryparams/${reference}`, fbu, {
68
+ responseType: 'text'
69
+ })
70
+ .pipe(map(cryptedUrlParams => `${feedBackFormBaseUrl}?q=${encodeURIComponent(cryptedUrlParams)}`));
66
71
  }
67
72
  getCategory(sessionInfoData, etapeInfo) {
68
73
  if (sessionInfoData) {
@@ -77,14 +82,20 @@ export class FoehnFeedbackNotificationComponent {
77
82
  ? PORTAIL_BASE_URL_INT
78
83
  : `${window.location.origin}/`;
79
84
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.SessionInfo }, { token: i3.GesdemHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, ngImport: i0, template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('good')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('medium')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('bad')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i6.FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: i7.FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.SdkDictionaryPipe, name: "fromDictionary" }] }); }
85
+ getFullReference(meta) {
86
+ if (!meta) {
87
+ return null;
88
+ }
89
+ return `${meta.reference}-${meta.currentAction}`;
90
+ }
91
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.SessionInfo }, { token: i3.GesdemHandlerService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, ngImport: i0, template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"goodUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"mediumUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"badUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i7.FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: i8.FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.SdkDictionaryPipe, name: "fromDictionary" }] }); }
82
93
  }
83
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, decorators: [{
84
95
  type: Component,
85
- args: [{ selector: 'foehn-feedback-notification', template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('good')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('medium')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('bad')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"] }]
86
- }], ctorParameters: () => [{ type: i1.ApplicationInfoService }, { type: i2.SessionInfo }, { type: i3.GesdemHandlerService }], propDecorators: { onWindowScroll: [{
96
+ args: [{ selector: 'foehn-feedback-notification', template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"goodUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"mediumUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"badUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"] }]
97
+ }], ctorParameters: () => [{ type: i1.ApplicationInfoService }, { type: i2.SessionInfo }, { type: i3.GesdemHandlerService }, { type: i4.HttpClient }], propDecorators: { onWindowScroll: [{
87
98
  type: HostListener,
88
99
  args: ['window:scroll', ['$event']]
89
100
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDZCxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkxQyxPQUFPLEVBRUgsb0JBQW9CLEVBQ3ZCLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7QUFJakQsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsbUJBQW1CLENBQUM7QUFPekUsTUFBTSxPQUFPLGtDQUFrQztJQWdCM0MsWUFDWSxzQkFBOEMsRUFDOUMsV0FBd0IsRUFDeEIsb0JBQTBDO1FBRjFDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQWxCdEQsaUJBQVksR0FBRyxXQUFXLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxTQUFTLENBQUM7UUFDM0IsZ0JBQVcs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QkFBd0IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDeEQsQ0FBQyxJQUFJLGtCQUFrQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDNUMsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRU8sV0FBVyxDQUNmLGVBQWdDLEVBQ2hDLFNBQW9CO1FBRXBCLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIsT0FBTyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDcEIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQXdCO1FBQzlDLE9BQU8sT0FBTyxDQUFDLFdBQVcsS0FBSyxJQUFJO1lBQy9CLENBQUMsQ0FBQyxvQkFBb0I7WUFDdEIsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztJQUN2QyxDQUFDOytHQTdHUSxrQ0FBa0M7bUdBQWxDLGtDQUFrQyx1SUN6Qi9DLDRySUFnSEE7OzRGRHZGYSxrQ0FBa0M7a0JBTDlDLFNBQVM7K0JBQ0ksNkJBQTZCO3dKQXlFdkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGZhRmFjZUZyb3duLFxuICAgIGZhRmFjZU1laCxcbiAgICBmYUZhY2VTbWlsZVxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBvZiwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm8sIEV0YXBlSW5mbyB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgIFBPUlRBSUxfQkFTRV9VUkxfSU5UXG59IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uSW5mbyB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm9EYXRhIH0gZnJvbSAnLi4vc2RrLXNlc3Npb24taW5mby9zZXNzaW9uLWluZm8tZGF0YSc7XG5cbmV4cG9ydCBjb25zdCBGRUVEQkFDS19VU0FHRVJTX0xPQ0FMX1NUT1JBR0VfUFJFRklYID0gJ0ZFRURCQUNLLVVTQUdFUlMtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5GZWVkYmFja05vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gICAgZ29vZEljb25OYW1lID0gZmFGYWNlU21pbGU7XG4gICAgbWVkaXVtSWNvbk5hbWUgPSBmYUZhY2VNZWg7XG4gICAgYmFkSWNvbk5hbWUgPSBmYUZhY2VGcm93bjtcblxuICAgIGV4cGFuZGVkOiBib29sZWFuO1xuICAgIGlzU2Nyb2xsRW5kZWQ6IGJvb2xlYW47XG5cbiAgICB2aXNpYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgcHJpdmF0ZSBmZWVkQmFja0Zvcm1CYXNlVXJsOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBpc0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGlkTWV0aWVyRXRhcGU6IHN0cmluZztcbiAgICBwcml2YXRlIGJlbmVmaWNpYXJ5Q2F0ZWdvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGZ1bGxSZWZlcmVuY2U6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUhhbmRsZXJTZXJ2aWNlOiBHZXNkZW1IYW5kbGVyU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhLFxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmN1cnJlbnRFdGFwZUluZm8sXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvLmRhdGEucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgICAgICAgdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS51cGRhdGVGb3JtRGF0YVN1YmplY3QucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlPy5tZXRhPy5yZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7cmVmZXJlbmNlfS0ke3RoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEuY3VycmVudEFjdGlvbn1gO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKFssIGV0YXBlSW5mb10pID0+ICEhZXRhcGVJbmZvKSxcbiAgICAgICAgICAgIHRhcChcbiAgICAgICAgICAgICAgICAoW1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkluZm8sXG4gICAgICAgICAgICAgICAgICAgIGV0YXBlSW5mbyxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbkluZm9EYXRhLFxuICAgICAgICAgICAgICAgICAgICBmdWxsUmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29ubmVjdGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICEhc2Vzc2lvbkluZm9EYXRhICYmICEhc2Vzc2lvbkluZm9EYXRhLmNvbnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWRNZXRpZXJFdGFwZSA9IGV0YXBlSW5mby5pZE1ldGllckV0YXBlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlbmVmaWNpYXJ5Q2F0ZWdvcnkgPSB0aGlzLmdldENhdGVnb3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbkluZm9EYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXRhcGVJbmZvXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnVsbFJlZmVyZW5jZSA9IGZ1bGxSZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmVlZEJhY2tGb3JtQmFzZVVybCA9IGAke3RoaXMuZ2V0UG9ydGFpbEJhc2VVcmwoYXBwbGljYXRpb25JbmZvKX1wdWIvMTAxNjQzL2A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoWywgZXRhcGVJbmZvXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpc2libGUgPSBldGFwZUluZm8/LnVzZXJGZWVkYmFja1JlcXVlc3RlZDtcbiAgICAgICAgICAgICAgICBjb25zdCBuZWVkRmVlZGJhY2sgPSAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgICAgICAgICAgICAgIEZFRURCQUNLX1VTQUdFUlNfTE9DQUxfU1RPUkFHRV9QUkVGSVggKyB0aGlzLmZ1bGxSZWZlcmVuY2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB2aXNpYmxlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5lZWRGZWVkYmFjayAmJiB2aXNpYmxlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJywgWyckZXZlbnQnXSlcbiAgICBvbldpbmRvd1Njcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Njcm9sbEVuZGVkID1cbiAgICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodCArIHdpbmRvdy5zY3JvbGxZID49XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCAtIDMwO1xuICAgIH1cblxuICAgIGhpZGVOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgICAgRkVFREJBQ0tfVVNBR0VSU19MT0NBTF9TVE9SQUdFX1BSRUZJWCArIHRoaXMuZnVsbFJlZmVyZW5jZSxcbiAgICAgICAgICAgICdEb25lJ1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnZpc2libGUgPSBvZihmYWxzZSk7XG4gICAgfVxuXG4gICAgZ2V0VXJsKGFuc3dlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHMgPSBgJHt0aGlzLmZlZWRCYWNrRm9ybUJhc2VVcmx9P2A7XG4gICAgICAgIHMgKz0gYGFuc3dlcj0ke2Fuc3dlcn1gO1xuICAgICAgICBzICs9IGAmaWRNZXRpZXJFdGFwZT0ke3RoaXMuaWRNZXRpZXJFdGFwZX1gO1xuICAgICAgICBzICs9IGAmaXNDb25uZWN0ZWQ9JHt0aGlzLmlzQ29ubmVjdGVkfWA7XG4gICAgICAgIHMgKz0gYCZiZW5lZmljaWFyeUNhdGVnb3J5PSR7dGhpcy5iZW5lZmljaWFyeUNhdGVnb3J5fWA7XG4gICAgICAgIHMgKz0gYCZmdWxsUmVmZXJlbmNlPSR7dGhpcy5mdWxsUmVmZXJlbmNlfWA7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcnkoXG4gICAgICAgIHNlc3Npb25JbmZvRGF0YTogU2Vzc2lvbkluZm9EYXRhLFxuICAgICAgICBldGFwZUluZm86IEV0YXBlSW5mb1xuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGlmIChzZXNzaW9uSW5mb0RhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uSW5mb0RhdGEuY2F0ZWdvcmllc1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXRhcGVJbmZvLnB1YmxpY0NpYmxlPy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gZXRhcGVJbmZvLnB1YmxpY0NpYmxlWzBdXG4gICAgICAgICAgICA6ICdJbmNvbm51JztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBvcnRhaWxCYXNlVXJsKGFwcEluZm86IEFwcGxpY2F0aW9uSW5mbyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBhcHBJbmZvLmVudmlyb25tZW50ID09PSAnQ08nXG4gICAgICAgICAgICA/IFBPUlRBSUxfQkFTRV9VUkxfSU5UXG4gICAgICAgICAgICA6IGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2A7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwiZmVlZGJhY2stY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJleHBhbmRlZCA/ICdleHBhbmRlZCcgOiAncmVkdWNlZCdcIlxuICAgIFtjbGFzcy5vZmZzZXQtYm90dG9tXT1cImlzU2Nyb2xsRW5kZWRcIlxuICAgIFtjbGFzcy52aXNpYmxlXT1cInZpc2libGUgfCBhc3luY1wiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJmZWVkYmFjay1jaGV2cm9uIGJ0biBidG4tbGlua1wiXG4gICAgICAgIChjbGljayk9XCJleHBhbmRlZCA9ICFleHBhbmRlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidmZWVkYmFjay1mb3JtJ1wiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWRvd25cbiAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY2hldnJvbi1kb3duJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tZG93bj5cbiAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi11cFxuICAgICAgICAgICAgKm5nSWY9XCIhZXhwYW5kZWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY2hldnJvbi11cCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi11cD5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiZmVlZGJhY2stdGl0bGVcIiBjbGFzcz1cImg0XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZXhwYW5kZWRcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24udGl0bGUtZXhwYW5kZWQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFleHBhbmRlZFwiIChjbGljayk9XCJleHBhbmRlZCA9ICFleHBhbmRlZFwiPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi50aXRsZS1yZWR1Y2VkJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwiZmVlZGJhY2stZm9ybVwiIFtjbGFzcy52aXNpYmxlXT1cImV4cGFuZGVkXCI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5xdWVzdGlvbi5RX05PVElGSUNBVElPTl9GQUNJTEVfQV9VVElMSVNFUidcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHVsIGNsYXNzPVwidmQtbGlzdC1pY29ucyBtYi0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICA8bGkgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdldFVybCgnZ29vZCcpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgcmVsPVwib3BlbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbWlsZXktbGluayB0ZXh0LXN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmdvb2QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJnb29kSWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmljb24uZ29vZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJteC0yXCIgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdldFVybCgnbWVkaXVtJylcIlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJvcGVuZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNtaWxleS1saW5rIHRleHQtd2FybmluZ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmljb24ubWVkaXVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwibWVkaXVtSWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmljb24ubWVkaXVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSAoY2xpY2spPVwiaGlkZU5vdGlmaWNhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZ2V0VXJsKCdiYWQnKVwiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm9wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21pbGV5LWxpbmsgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmJhZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImJhZEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmJhZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULFdBQVcsRUFDZCxNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUloSCxPQUFPLEVBRUgsb0JBQW9CLEVBQ3ZCLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7Ozs7O0FBSWpELE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLG1CQUFtQixDQUFDO0FBT3pFLE1BQU0sT0FBTyxrQ0FBa0M7SUFhM0MsWUFDWSxzQkFBOEMsRUFDOUMsV0FBd0IsRUFDeEIsb0JBQTBDLEVBQzFDLElBQWdCO1FBSGhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxTQUFJ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LENBQUMsT0FBd0I7UUFDOUMsT0FBTyxPQUFPLENBQUMsV0FBVyxLQUFLLElBQUk7WUFDL0IsQ0FBQyxDQUFDLG9CQUFvQjtZQUN0QixDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFrQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JELENBQUM7K0dBdklRLGtDQUFrQzttR0FBbEMsa0NBQWtDLHVJQzVCL0MsK3JJQWdIQTs7NEZEcEZhLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDSSw2QkFBNkI7aUxBNEV2QyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGZhRmFjZUZyb3duLFxuICAgIGZhRmFjZU1laCxcbiAgICBmYUZhY2VTbWlsZVxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBvZiwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5GZWVkYmFja05vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLnR5cGUnO1xuaW1wb3J0IHsgRm9ybU1ldGFkYXRhIH0gZnJvbSAnLi4vZm9ybS1wb3N0LXJlc3BvbnNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvLCBFdGFwZUluZm8gfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvJztcbmltcG9ydCB7XG4gICAgQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICBQT1JUQUlMX0JBU0VfVVJMX0lOVFxufSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25JbmZvRGF0YSB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLWRhdGEnO1xuXG5leHBvcnQgY29uc3QgRkVFREJBQ0tfVVNBR0VSU19MT0NBTF9TVE9SQUdFX1BSRUZJWCA9ICdGRUVEQkFDSy1VU0FHRVJTLSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuRmVlZGJhY2tOb3RpZmljYXRpb25Db21wb25lbnQge1xuICAgIGdvb2RJY29uTmFtZSA9IGZhRmFjZVNtaWxlO1xuICAgIG1lZGl1bUljb25OYW1lID0gZmFGYWNlTWVoO1xuICAgIGJhZEljb25OYW1lID0gZmFGYWNlRnJvd247XG5cbiAgICBleHBhbmRlZDogYm9vbGVhbjtcbiAgICBpc1Njcm9sbEVuZGVkOiBib29sZWFuO1xuXG4gICAgdmlzaWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBnb29kVXJsOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgbWVkaXVtVXJsOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gICAgYmFkVXJsOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNlc3Npb25JbmZvOiBTZXNzaW9uSW5mbyxcbiAgICAgICAgcHJpdmF0ZSBnZXNkZW1IYW5kbGVyU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxuICAgICkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhLFxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmN1cnJlbnRFdGFwZUluZm8sXG4gICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvLmRhdGEucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgICAgICAgdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS51cGRhdGVGb3JtRGF0YVN1YmplY3QucGlwZShcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2VzZGVtSGFuZGxlclNlcnZpY2UubGFzdFJlc3BvbnNlPy5tZXRhKVxuICAgICAgICAgICAgKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChbLCBldGFwZUluZm8sICwgbWV0YV0pID0+ICEhZXRhcGVJbmZvICYmICEhbWV0YSksXG4gICAgICAgICAgICB0YXAoKFthcHBsaWNhdGlvbkluZm8sIGV0YXBlSW5mbywgc2Vzc2lvbkluZm9EYXRhLCBtZXRhXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlZWRCYWNrRm9ybUJhc2VVcmwgPSBgJHt0aGlzLmdldFBvcnRhaWxCYXNlVXJsKGFwcGxpY2F0aW9uSW5mbyl9cHViLzEwMTY0My9gO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZlZWRiYWNrVXNhZ2VyID0gbmV3IEZvZWhuRmVlZGJhY2tOb3RpZmljYXRpb25UeXBlKCk7XG4gICAgICAgICAgICAgICAgZmVlZGJhY2tVc2FnZXIuaXNDb25uZWN0ZWQgPVxuICAgICAgICAgICAgICAgICAgICAhIXNlc3Npb25JbmZvRGF0YSAmJiAhIXNlc3Npb25JbmZvRGF0YS5jb250ZXh0O1xuICAgICAgICAgICAgICAgIGZlZWRiYWNrVXNhZ2VyLmlkTWV0aWVyRXRhcGUgPSBldGFwZUluZm8uaWRNZXRpZXJFdGFwZTtcbiAgICAgICAgICAgICAgICBmZWVkYmFja1VzYWdlci5iZW5lZmljaWFyeUNhdGVnb3J5ID0gdGhpcy5nZXRDYXRlZ29yeShcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbkluZm9EYXRhLFxuICAgICAgICAgICAgICAgICAgICBldGFwZUluZm9cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGZlZWRiYWNrVXNhZ2VyLmN1cnJlbnRBY3Rpb24gPSBtZXRhPy5jdXJyZW50QWN0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuZ29vZFVybCA9IHRoaXMuZ2V0VXJsKFxuICAgICAgICAgICAgICAgICAgICAnZ29vZCcsXG4gICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrVXNhZ2VyLFxuICAgICAgICAgICAgICAgICAgICBmZWVkQmFja0Zvcm1CYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBtZXRhLnJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZWRpdW1VcmwgPSB0aGlzLmdldFVybChcbiAgICAgICAgICAgICAgICAgICAgJ21lZGl1bScsXG4gICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrVXNhZ2VyLFxuICAgICAgICAgICAgICAgICAgICBmZWVkQmFja0Zvcm1CYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBtZXRhLnJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWRVcmwgPSB0aGlzLmdldFVybChcbiAgICAgICAgICAgICAgICAgICAgJ2JhZCcsXG4gICAgICAgICAgICAgICAgICAgIGZlZWRiYWNrVXNhZ2VyLFxuICAgICAgICAgICAgICAgICAgICBmZWVkQmFja0Zvcm1CYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICBtZXRhLnJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoWywgZXRhcGVJbmZvLCAsIG1ldGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlzaWJsZSA9IGV0YXBlSW5mbz8udXNlckZlZWRiYWNrUmVxdWVzdGVkO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRGZWVkYmFjayA9ICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgICAgICAgICAgICAgYCR7RkVFREJBQ0tfVVNBR0VSU19MT0NBTF9TVE9SQUdFX1BSRUZJWH0ke3RoaXMuZ2V0RnVsbFJlZmVyZW5jZShtZXRhKX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gdmlzaWJsZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZWVkRmVlZGJhY2sgJiYgdmlzaWJsZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG4gICAgb25XaW5kb3dTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTY3JvbGxFbmRlZCA9XG4gICAgICAgICAgICB3aW5kb3cuaW5uZXJIZWlnaHQgKyB3aW5kb3cuc2Nyb2xsWSA+PVxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQgLSAzMDtcbiAgICB9XG5cbiAgICBoaWRlTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICAgIEZFRURCQUNLX1VTQUdFUlNfTE9DQUxfU1RPUkFHRV9QUkVGSVggK1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0RnVsbFJlZmVyZW5jZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXNkZW1IYW5kbGVyU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGFcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgJ0RvbmUnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IG9mKGZhbHNlKTtcbiAgICB9XG5cbiAgICBnZXRVcmwoXG4gICAgICAgIGFuc3dlcjogc3RyaW5nLFxuICAgICAgICBmZWVkYmFja1VzYWdlcjogRm9laG5GZWVkYmFja05vdGlmaWNhdGlvblR5cGUsXG4gICAgICAgIGZlZWRCYWNrRm9ybUJhc2VVcmw6IHN0cmluZyxcbiAgICAgICAgcmVmZXJlbmNlOiBzdHJpbmdcbiAgICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAoIWZlZWRiYWNrVXNhZ2VyIHx8ICFmZWVkQmFja0Zvcm1CYXNlVXJsIHx8ICFyZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmYnUgPSB7IC4uLmZlZWRiYWNrVXNhZ2VyIH07XG4gICAgICAgIGZidS5hbnN3ZXIgPSBhbnN3ZXI7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KGBhcGkvZmVlZGJhY2tub3RpZmljYXRpb24vcXVlcnlwYXJhbXMvJHtyZWZlcmVuY2V9YCwgZmJ1LCB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIGNyeXB0ZWRVcmxQYXJhbXMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2ZlZWRCYWNrRm9ybUJhc2VVcmx9P3E9JHtlbmNvZGVVUklDb21wb25lbnQoY3J5cHRlZFVybFBhcmFtcyl9YFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDYXRlZ29yeShcbiAgICAgICAgc2Vzc2lvbkluZm9EYXRhOiBTZXNzaW9uSW5mb0RhdGEsXG4gICAgICAgIGV0YXBlSW5mbzogRXRhcGVJbmZvXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHNlc3Npb25JbmZvRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25JbmZvRGF0YS5jYXRlZ29yaWVzWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldGFwZUluZm8ucHVibGljQ2libGU/Lmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBldGFwZUluZm8ucHVibGljQ2libGVbMF1cbiAgICAgICAgICAgIDogJ0luY29ubnUnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9ydGFpbEJhc2VVcmwoYXBwSW5mbzogQXBwbGljYXRpb25JbmZvKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGFwcEluZm8uZW52aXJvbm1lbnQgPT09ICdDTydcbiAgICAgICAgICAgID8gUE9SVEFJTF9CQVNFX1VSTF9JTlRcbiAgICAgICAgICAgIDogYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZ1bGxSZWZlcmVuY2UobWV0YTogRm9ybU1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7bWV0YS5yZWZlcmVuY2V9LSR7bWV0YS5jdXJyZW50QWN0aW9ufWA7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGlkPVwiZmVlZGJhY2stY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJleHBhbmRlZCA/ICdleHBhbmRlZCcgOiAncmVkdWNlZCdcIlxuICAgIFtjbGFzcy5vZmZzZXQtYm90dG9tXT1cImlzU2Nyb2xsRW5kZWRcIlxuICAgIFtjbGFzcy52aXNpYmxlXT1cInZpc2libGUgfCBhc3luY1wiXG4+XG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJmZWVkYmFjay1jaGV2cm9uIGJ0biBidG4tbGlua1wiXG4gICAgICAgIChjbGljayk9XCJleHBhbmRlZCA9ICFleHBhbmRlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIidmZWVkYmFjay1mb3JtJ1wiXG4gICAgPlxuICAgICAgICA8Zm9laG4taWNvbi1jaGV2cm9uLWRvd25cbiAgICAgICAgICAgICpuZ0lmPVwiZXhwYW5kZWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY2hldnJvbi1kb3duJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9mb2Vobi1pY29uLWNoZXZyb24tZG93bj5cbiAgICAgICAgPGZvZWhuLWljb24tY2hldnJvbi11cFxuICAgICAgICAgICAgKm5nSWY9XCIhZXhwYW5kZWRcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uY2hldnJvbi11cCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgICAgID48L2ZvZWhuLWljb24tY2hldnJvbi11cD5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwiZmVlZGJhY2stdGl0bGVcIiBjbGFzcz1cImg0XCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZXhwYW5kZWRcIj5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24udGl0bGUtZXhwYW5kZWQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFleHBhbmRlZFwiIChjbGljayk9XCJleHBhbmRlZCA9ICFleHBhbmRlZFwiPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi50aXRsZS1yZWR1Y2VkJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwiZmVlZGJhY2stZm9ybVwiIFtjbGFzcy52aXNpYmxlXT1cImV4cGFuZGVkXCI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5xdWVzdGlvbi5RX05PVElGSUNBVElPTl9GQUNJTEVfQV9VVElMSVNFUidcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPHVsIGNsYXNzPVwidmQtbGlzdC1pY29ucyBtYi0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICA8bGkgKGNsaWNrKT1cImhpZGVOb3RpZmljYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImdvb2RVcmwgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm9wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21pbGV5LWxpbmsgdGV4dC1zdWNjZXNzXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uaWNvbi5nb29kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiZ29vZEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmdvb2QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibXgtMlwiIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJtZWRpdW1VcmwgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm9wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21pbGV5LWxpbmsgdGV4dC13YXJuaW5nXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uaWNvbi5tZWRpdW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJtZWRpdW1JY29uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb2Vobi1mZWVkYmFjay1ub3RpZmljYXRpb24uaWNvbi5tZWRpdW0nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIChjbGljayk9XCJoaWRlTm90aWZpY2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJiYWRVcmwgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIHJlbD1cIm9wZW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic21pbGV5LWxpbmsgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmJhZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImJhZEljb25OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi5pY29uLmJhZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export class FoehnFeedbackNotificationType {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tZmVlZGJhY2stbm90aWZpY2F0aW9uL2ZvZWhuLWZlZWRiYWNrLW5vdGlmaWNhdGlvbi50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyw2QkFBNkI7Q0FNekMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRm9laG5GZWVkYmFja05vdGlmaWNhdGlvblR5cGUge1xuICAgIGFuc3dlcjogc3RyaW5nO1xuICAgIGlkTWV0aWVyRXRhcGU6IHN0cmluZztcbiAgICBpc0Nvbm5lY3RlZDogYm9vbGVhbjtcbiAgICBiZW5lZmljaWFyeUNhdGVnb3J5OiBzdHJpbmc7XG4gICAgY3VycmVudEFjdGlvbjogbnVtYmVyO1xufVxuIl19
@@ -1,2 +1,2 @@
1
- export const supportedBrowsers = /Edge?\/(12[4-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[5-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(17\.([4-9]|\d{2,})|(1[89]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]([6-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](12[5-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[5-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[4-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc3VwcG9ydGVkLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsd2dDQUF3Z0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzdXBwb3J0ZWRCcm93c2VycyA9IC9FZGdlP1xcLygxMls0LTldfDFbMy05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCsoXFwuXFxkK3wpfEZpcmVmb3hcXC8oMXsyfVs1LTldfDFbMi05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCsoXFwuXFxkK3wpfENocm9tKGl1bXxlKVxcLygxMDl8MVsxLTldXFxkfFsyLTldXFxkezJ9fFxcZHs0LH0pXFwuXFxkKyhcXC5cXGQrfCl8KE1hY2l8WDF7Mn0pLisgVmVyc2lvblxcLygxN1xcLihbNC05XXxcXGR7Mix9KXwoMVs4OV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKShbLC5dXFxkK3wpKCBcXChcXHcrXFwpfCkoIE1vYmlsZVxcL1xcdyt8KSBTYWZhcmlcXC98Q2hyb21lLitPUFJcXC8oMTA5fDFbMS05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCtcXC5cXGQrfChDUFVbICtdT1N8aVBob25lWyArXU9TfENQVVsgK11pUGhvbmV8Q1BVIElQaG9uZSBPU3xDUFUgaVBhZCBPUylbICtdKygxNVsuX10oWzYtOV18XFxkezIsfSl8KDFbNi05XXxbMi05XVxcZHxcXGR7Myx9KVsuX11cXGQrKShbLl9dXFxkK3wpfE9wZXJhIE1pbml8QW5kcm9pZDo/WyAvLV0oMTJbNS05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSkoXFwuXFxkK3wpKFxcLlxcZCt8KXxNb2JpbGUgU2FmYXJpLitPUFJcXC8oWzg5XVxcZHxcXGR7Myx9KVxcLlxcZCtcXC5cXGQrfEFuZHJvaWQuK0ZpcmVmb3hcXC8oMTJbNi05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSlcXC5cXGQrKFxcLlxcZCt8KXxBbmRyb2lkLitDaHJvbShpdW18ZSlcXC8oMTJbNS05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSlcXC5cXGQrKFxcLlxcZCt8KXxBbmRyb2lkLisoVUM/ID9Ccm93c2VyfFVDV0VCfFUzKVsgL10/KDE1XFwuKFs1LTldfFxcZHsyLH0pfCgxWzYtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKVxcLlxcZCt8U2Ftc3VuZ0Jyb3dzZXJcXC8oMls0LTldfFszLTldXFxkfFxcZHszLH0pXFwuXFxkK3xBbmRyb2lkLitNUXsyfUJyb3dzZXJcXC8oMTQoXFwuKDl8XFxkezIsfSl8KXwoMVs1LTldfFsyLTldXFxkfFxcZHszLH0pKFxcLlxcZCt8KSkoXFwuXFxkK3wpfEtbQWFdW0lpXU9TXFwvKDJcXC4oWzUtOV18XFxkezIsfSl8KFszLTldfFxcZHsyLH0pXFwuXFxkKykoXFwuXFxkK3wpLztcbiJdfQ==
1
+ export const supportedBrowsers = /Edge?\/(12[4-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[5-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(17\.([4-9]|\d{2,})|(1[89]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]([6-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[4-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc3VwcG9ydGVkLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsd2dDQUF3Z0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzdXBwb3J0ZWRCcm93c2VycyA9IC9FZGdlP1xcLygxMls0LTldfDFbMy05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCsoXFwuXFxkK3wpfEZpcmVmb3hcXC8oMXsyfVs1LTldfDFbMi05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCsoXFwuXFxkK3wpfENocm9tKGl1bXxlKVxcLygxMDl8MVsxLTldXFxkfFsyLTldXFxkezJ9fFxcZHs0LH0pXFwuXFxkKyhcXC5cXGQrfCl8KE1hY2l8WDF7Mn0pLisgVmVyc2lvblxcLygxN1xcLihbNC05XXxcXGR7Mix9KXwoMVs4OV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKShbLC5dXFxkK3wpKCBcXChcXHcrXFwpfCkoIE1vYmlsZVxcL1xcdyt8KSBTYWZhcmlcXC98Q2hyb21lLitPUFJcXC8oMTA5fDFbMS05XVxcZHxbMi05XVxcZHsyfXxcXGR7NCx9KVxcLlxcZCtcXC5cXGQrfChDUFVbICtdT1N8aVBob25lWyArXU9TfENQVVsgK11pUGhvbmV8Q1BVIElQaG9uZSBPU3xDUFUgaVBhZCBPUylbICtdKygxNVsuX10oWzYtOV18XFxkezIsfSl8KDFbNi05XXxbMi05XVxcZHxcXGR7Myx9KVsuX11cXGQrKShbLl9dXFxkK3wpfE9wZXJhIE1pbml8QW5kcm9pZDo/WyAvLV0oMTJbNi05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSkoXFwuXFxkK3wpKFxcLlxcZCt8KXxNb2JpbGUgU2FmYXJpLitPUFJcXC8oWzg5XVxcZHxcXGR7Myx9KVxcLlxcZCtcXC5cXGQrfEFuZHJvaWQuK0ZpcmVmb3hcXC8oMTJbNy05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSlcXC5cXGQrKFxcLlxcZCt8KXxBbmRyb2lkLitDaHJvbShpdW18ZSlcXC8oMTJbNi05XXwxWzMtOV1cXGR8WzItOV1cXGR7Mn18XFxkezQsfSlcXC5cXGQrKFxcLlxcZCt8KXxBbmRyb2lkLisoVUM/ID9Ccm93c2VyfFVDV0VCfFUzKVsgL10/KDE1XFwuKFs1LTldfFxcZHsyLH0pfCgxWzYtOV18WzItOV1cXGR8XFxkezMsfSlcXC5cXGQrKVxcLlxcZCt8U2Ftc3VuZ0Jyb3dzZXJcXC8oMls0LTldfFszLTldXFxkfFxcZHszLH0pXFwuXFxkK3xBbmRyb2lkLitNUXsyfUJyb3dzZXJcXC8oMTQoXFwuKDl8XFxkezIsfSl8KXwoMVs1LTldfFsyLTldXFxkfFxcZHszLH0pKFxcLlxcZCt8KSkoXFwuXFxkK3wpfEtbQWFdW0lpXU9TXFwvKDJcXC4oWzUtOV18XFxkezIsfSl8KFszLTldfFxcZHsyLH0pXFwuXFxkKykoXFwuXFxkK3wpLztcbiJdfQ==
@@ -3657,6 +3657,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
3657
3657
  args: [{ selector: 'foehn-icon-info-circle', template: "<fa-icon\n aria-hidden=\"true\"\n [title]=\"title ? title : defaultTitle\"\n [icon]=\"iconName\"\n></fa-icon>\n<span class=\"visually-hidden\">{{ title ? title : defaultTitle }}</span>\n" }]
3658
3658
  }] });
3659
3659
 
3660
+ class FoehnFeedbackNotificationType {
3661
+ }
3662
+
3660
3663
  class FoehnIconChevronDownComponent extends AbstractIconComponent {
3661
3664
  constructor() {
3662
3665
  super(...arguments);
@@ -3687,10 +3690,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
3687
3690
 
3688
3691
  const FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX = 'FEEDBACK-USAGERS-';
3689
3692
  class FoehnFeedbackNotificationComponent {
3690
- constructor(applicationInfoService, sessionInfo, gesdemHandlerService) {
3693
+ constructor(applicationInfoService, sessionInfo, gesdemHandlerService, http) {
3691
3694
  this.applicationInfoService = applicationInfoService;
3692
3695
  this.sessionInfo = sessionInfo;
3693
3696
  this.gesdemHandlerService = gesdemHandlerService;
3697
+ this.http = http;
3694
3698
  this.goodIconName = faFaceSmile;
3695
3699
  this.mediumIconName = faFaceMeh;
3696
3700
  this.badIconName = faFaceFrown;
@@ -3698,23 +3702,21 @@ class FoehnFeedbackNotificationComponent {
3698
3702
  this.applicationInfoService.data,
3699
3703
  this.applicationInfoService.currentEtapeInfo,
3700
3704
  this.sessionInfo.data.pipe(startWith(null)),
3701
- this.gesdemHandlerService.updateFormDataSubject.pipe(startWith(null), map(() => {
3702
- const reference = this.gesdemHandlerService.lastResponse?.meta?.reference;
3703
- if (!reference) {
3704
- return null;
3705
- }
3706
- return `${reference}-${this.gesdemHandlerService.lastResponse.meta.currentAction}`;
3707
- }))
3708
- ]).pipe(filter$1(([, etapeInfo]) => !!etapeInfo), tap(([applicationInfo, etapeInfo, sessionInfoData, fullReference]) => {
3709
- this.isConnected =
3705
+ this.gesdemHandlerService.updateFormDataSubject.pipe(startWith(null), map(() => this.gesdemHandlerService.lastResponse?.meta))
3706
+ ]).pipe(filter$1(([, etapeInfo, , meta]) => !!etapeInfo && !!meta), tap(([applicationInfo, etapeInfo, sessionInfoData, meta]) => {
3707
+ const feedBackFormBaseUrl = `${this.getPortailBaseUrl(applicationInfo)}pub/101643/`;
3708
+ const feedbackUsager = new FoehnFeedbackNotificationType();
3709
+ feedbackUsager.isConnected =
3710
3710
  !!sessionInfoData && !!sessionInfoData.context;
3711
- this.idMetierEtape = etapeInfo.idMetierEtape;
3712
- this.beneficiaryCategory = this.getCategory(sessionInfoData, etapeInfo);
3713
- this.fullReference = fullReference;
3714
- this.feedBackFormBaseUrl = `${this.getPortailBaseUrl(applicationInfo)}pub/101643/`;
3715
- }), map(([, etapeInfo]) => {
3711
+ feedbackUsager.idMetierEtape = etapeInfo.idMetierEtape;
3712
+ feedbackUsager.beneficiaryCategory = this.getCategory(sessionInfoData, etapeInfo);
3713
+ feedbackUsager.currentAction = meta?.currentAction;
3714
+ this.goodUrl = this.getUrl('good', feedbackUsager, feedBackFormBaseUrl, meta.reference);
3715
+ this.mediumUrl = this.getUrl('medium', feedbackUsager, feedBackFormBaseUrl, meta.reference);
3716
+ this.badUrl = this.getUrl('bad', feedbackUsager, feedBackFormBaseUrl, meta.reference);
3717
+ }), map(([, etapeInfo, , meta]) => {
3716
3718
  const visible = etapeInfo?.userFeedbackRequested;
3717
- const needFeedback = !localStorage.getItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX + this.fullReference);
3719
+ const needFeedback = !localStorage.getItem(`${FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX}${this.getFullReference(meta)}`);
3718
3720
  this.expanded = visible;
3719
3721
  return needFeedback && visible;
3720
3722
  }));
@@ -3725,17 +3727,21 @@ class FoehnFeedbackNotificationComponent {
3725
3727
  document.body.offsetHeight - 30;
3726
3728
  }
3727
3729
  hideNotification() {
3728
- localStorage.setItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX + this.fullReference, 'Done');
3730
+ localStorage.setItem(FEEDBACK_USAGERS_LOCAL_STORAGE_PREFIX +
3731
+ this.getFullReference(this.gesdemHandlerService.lastResponse?.meta), 'Done');
3729
3732
  this.visible = of(false);
3730
3733
  }
3731
- getUrl(answer) {
3732
- let s = `${this.feedBackFormBaseUrl}?`;
3733
- s += `answer=${answer}`;
3734
- s += `&idMetierEtape=${this.idMetierEtape}`;
3735
- s += `&isConnected=${this.isConnected}`;
3736
- s += `&beneficiaryCategory=${this.beneficiaryCategory}`;
3737
- s += `&fullReference=${this.fullReference}`;
3738
- return s;
3734
+ getUrl(answer, feedbackUsager, feedBackFormBaseUrl, reference) {
3735
+ if (!feedbackUsager || !feedBackFormBaseUrl || !reference) {
3736
+ return of(null);
3737
+ }
3738
+ const fbu = { ...feedbackUsager };
3739
+ fbu.answer = answer;
3740
+ return this.http
3741
+ .post(`api/feedbacknotification/queryparams/${reference}`, fbu, {
3742
+ responseType: 'text'
3743
+ })
3744
+ .pipe(map(cryptedUrlParams => `${feedBackFormBaseUrl}?q=${encodeURIComponent(cryptedUrlParams)}`));
3739
3745
  }
3740
3746
  getCategory(sessionInfoData, etapeInfo) {
3741
3747
  if (sessionInfoData) {
@@ -3750,13 +3756,19 @@ class FoehnFeedbackNotificationComponent {
3750
3756
  ? PORTAIL_BASE_URL_INT
3751
3757
  : `${window.location.origin}/`;
3752
3758
  }
3753
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, deps: [{ token: ApplicationInfoService }, { token: SessionInfo }, { token: GesdemHandlerService }], target: i0.ɵɵFactoryTarget.Component }); }
3754
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, ngImport: i0, template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('good')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('medium')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('bad')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
3759
+ getFullReference(meta) {
3760
+ if (!meta) {
3761
+ return null;
3762
+ }
3763
+ return `${meta.reference}-${meta.currentAction}`;
3764
+ }
3765
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, deps: [{ token: ApplicationInfoService }, { token: SessionInfo }, { token: GesdemHandlerService }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
3766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FoehnFeedbackNotificationComponent, selector: "foehn-feedback-notification", host: { listeners: { "window:scroll": "onWindowScroll($event)" } }, ngImport: i0, template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"goodUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"mediumUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"badUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: FoehnIconChevronDownComponent, selector: "foehn-icon-chevron-down" }, { kind: "component", type: FoehnIconChevronUpComponent, selector: "foehn-icon-chevron-up" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: SdkDictionaryPipe, name: "fromDictionary" }] }); }
3755
3767
  }
3756
3768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FoehnFeedbackNotificationComponent, decorators: [{
3757
3769
  type: Component,
3758
- args: [{ selector: 'foehn-feedback-notification', template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('good')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('medium')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"getUrl('bad')\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"] }]
3759
- }], ctorParameters: () => [{ type: ApplicationInfoService }, { type: SessionInfo }, { type: GesdemHandlerService }], propDecorators: { onWindowScroll: [{
3770
+ args: [{ selector: 'foehn-feedback-notification', template: "<div\n id=\"feedback-container\"\n [ngClass]=\"expanded ? 'expanded' : 'reduced'\"\n [class.offset-bottom]=\"isScrollEnded\"\n [class.visible]=\"visible | async\"\n>\n <button\n type=\"button\"\n class=\"feedback-chevron btn btn-link\"\n (click)=\"expanded = !expanded\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"'feedback-form'\"\n >\n <foehn-icon-chevron-down\n *ngIf=\"expanded\"\n [title]=\"\n 'foehn-feedback-notification.chevron-down' | fromDictionary\n \"\n ></foehn-icon-chevron-down>\n <foehn-icon-chevron-up\n *ngIf=\"!expanded\"\n [title]=\"'foehn-feedback-notification.chevron-up' | fromDictionary\"\n ></foehn-icon-chevron-up>\n </button>\n <div id=\"feedback-title\" class=\"h4\">\n <span *ngIf=\"expanded\">\n {{ 'foehn-feedback-notification.title-expanded' | fromDictionary }}\n </span>\n <span *ngIf=\"!expanded\" (click)=\"expanded = !expanded\">\n {{ 'foehn-feedback-notification.title-reduced' | fromDictionary }}\n </span>\n </div>\n <div id=\"feedback-form\" [class.visible]=\"expanded\">\n <label>\n {{\n 'foehn-feedback-notification.question.Q_NOTIFICATION_FACILE_A_UTILISER'\n | fromDictionary\n }}\n </label>\n <ul class=\"vd-list-icons mb-0 d-flex justify-content-center\">\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"goodUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-success\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n \"\n [icon]=\"goodIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.good'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li class=\"mx-2\" (click)=\"hideNotification()\">\n <a\n [href]=\"mediumUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-warning\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n \"\n [icon]=\"mediumIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.medium'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n <li (click)=\"hideNotification()\">\n <a\n [href]=\"badUrl | async\"\n target=\"_blank\"\n rel=\"opener\"\n class=\"smiley-link text-danger\"\n >\n <fa-icon\n aria-hidden=\"true\"\n [title]=\"\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n \"\n [icon]=\"badIconName\"\n ></fa-icon>\n <span class=\"visually-hidden\">\n {{\n 'foehn-feedback-notification.icon.bad'\n | fromDictionary\n }}\n </span>\n </a>\n </li>\n </ul>\n </div>\n</div>\n", styles: ["#feedback-container{display:none;position:fixed;bottom:0;right:0;color:#fff;background-color:var(--vd-neutral-dark);border:1px white solid;border-bottom:0;z-index:99999;transition:all .3s}#feedback-container.visible{display:block;animation:popout 1s}#feedback-container.offset-bottom{bottom:23px}#feedback-container.expanded{padding:15px;width:420px;height:175px;background-color:var(--vd-neutral-dark);border-top-left-radius:20px;border-top-right-radius:20px}#feedback-container.expanded #feedback-title{margin-top:0;text-align:center}#feedback-container.reduced{width:230px;height:35px;text-align:left;padding-left:12px}#feedback-container.reduced #feedback-title{margin-top:5px;cursor:pointer}#feedback-container .feedback-chevron{position:absolute;top:0;right:0}#feedback-container.expanded .feedback-chevron{border-top-right-radius:50%}#feedback-container #feedback-form{display:none}#feedback-container #feedback-form.visible{display:block;animation:fadeIn .5s}#feedback-container #feedback-form a{border:solid 1px var(--vd-neutral-dark);border-radius:50%;padding-left:11px;padding-right:11px}#feedback-container #feedback-form a:focus{background-color:var(--vd-neutral-dark)}#feedback-container #feedback-form .smiley-link{font-size:60px}:host ::ng-deep #feedback-container #feedback-form svg{transition:all .2s}:host ::ng-deep #feedback-container #feedback-form svg:hover,:host ::ng-deep #feedback-container #feedback-form svg:focus{transform:scale(1.3)}@keyframes fadeIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@media (min-width: 577px){@keyframes popout{0%{bottom:-175px}to{bottom:0}}}@media (max-width: 576px){#feedback-container{transform:scale(.8)}#feedback-container.expanded{right:-42px;bottom:-20px}#feedback-container.reduced{right:-29px;bottom:-3px}#feedback-container.expanded.offset-bottom{bottom:6px}#feedback-container.reduced.offset-bottom{bottom:20px}@keyframes popout{0%{bottom:-140px}to{bottom:-20px}}}\n"] }]
3771
+ }], ctorParameters: () => [{ type: ApplicationInfoService }, { type: SessionInfo }, { type: GesdemHandlerService }, { type: i1.HttpClient }], propDecorators: { onWindowScroll: [{
3760
3772
  type: HostListener,
3761
3773
  args: ['window:scroll', ['$event']]
3762
3774
  }] } });
@@ -4611,7 +4623,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
4611
4623
  }]
4612
4624
  }], ctorParameters: () => [{ type: SessionInfo }, { type: GesdemEventService }, { type: GesdemHandlerService }] });
4613
4625
 
4614
- const supportedBrowsers = /Edge?\/(12[4-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[5-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(17\.([4-9]|\d{2,})|(1[89]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]([6-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](12[5-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[5-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[4-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
4626
+ const supportedBrowsers = /Edge?\/(12[4-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[5-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(17\.([4-9]|\d{2,})|(1[89]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(109|1[1-9]\d|[2-9]\d{2}|\d{4,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]([6-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Opera Mini|Android:?[ /-](12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[6-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(2[4-9]|[3-9]\d|\d{3,})\.\d+|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(2\.([5-9]|\d{2,})|([3-9]|\d{2,})\.\d+)(\.\d+|)/;
4615
4627
 
4616
4628
  class FoehnPageModalService {
4617
4629
  constructor(applicationInfoService) {