@dsivd/prestations-ng 17.0.0-beta.3 → 17.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/UPGRADING_V17.md +30 -21
  3. package/dsivd-prestations-ng-17.0.0-beta.5.tgz +0 -0
  4. package/esm2022/abstract-page-component.mjs +10 -6
  5. package/esm2022/directives/currency-formatter.directive.mjs +3 -3
  6. package/esm2022/directives/formatter.module.mjs +4 -4
  7. package/esm2022/directives/iban-formatter.directive.mjs +3 -3
  8. package/esm2022/directives/ide-formatter.directive.mjs +3 -3
  9. package/esm2022/directives/ndc-formatter.directive.mjs +3 -3
  10. package/esm2022/foehn-address/foehn-address.module.mjs +4 -4
  11. package/esm2022/foehn-address/foehn-display-address.component.mjs +3 -3
  12. package/esm2022/foehn-address/foehn-input-address.component.mjs +9 -5
  13. package/esm2022/foehn-address/foehn-input-foreign-locality.component.mjs +3 -3
  14. package/esm2022/foehn-address/foehn-input-foreign-street.component.mjs +3 -3
  15. package/esm2022/foehn-agenda/foehn-agenda-navigation/foehn-agenda-navigation.component.mjs +3 -3
  16. package/esm2022/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.mjs +3 -3
  17. package/esm2022/foehn-agenda/foehn-agenda.component.mjs +3 -3
  18. package/esm2022/foehn-agenda/foehn-agenda.module.mjs +4 -4
  19. package/esm2022/foehn-autocomplete/foehn-autocomplete.component.mjs +3 -3
  20. package/esm2022/foehn-autocomplete/foehn-autocomplete.module.mjs +4 -4
  21. package/esm2022/foehn-boolean/foehn-boolean-checkbox.component.mjs +3 -3
  22. package/esm2022/foehn-boolean/foehn-boolean-radio.component.mjs +3 -3
  23. package/esm2022/foehn-boolean/foehn-boolean.module.mjs +4 -4
  24. package/esm2022/foehn-breadcrumb/breadcrumb-event.service.mjs +24 -17
  25. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.component.mjs +3 -3
  26. package/esm2022/foehn-breadcrumb/foehn-breadcrumb.module.mjs +4 -4
  27. package/esm2022/foehn-checkables/foehn-checkable-group.component.mjs +3 -3
  28. package/esm2022/foehn-checkables/foehn-checkables.module.mjs +4 -4
  29. package/esm2022/foehn-checkables/foehn-checkbox.component.mjs +3 -3
  30. package/esm2022/foehn-checkables/foehn-radio.component.mjs +3 -3
  31. package/esm2022/foehn-checkables/foehn-select.component.mjs +3 -3
  32. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.component.mjs +3 -3
  33. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.module.mjs +4 -4
  34. package/esm2022/foehn-confirm-modal/foehn-confirm-modal.service.mjs +3 -3
  35. package/esm2022/foehn-date-picker/foehn-date-picker.component.mjs +3 -3
  36. package/esm2022/foehn-date-picker/foehn-date-picker.module.mjs +4 -4
  37. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.component.mjs +3 -3
  38. package/esm2022/foehn-date-picker-button/foehn-date-picker-button.module.mjs +4 -4
  39. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.mjs +3 -3
  40. package/esm2022/foehn-debug-summary/foehn-debug-summary.component.module.mjs +4 -4
  41. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.component.mjs +3 -3
  42. package/esm2022/foehn-decision-electronique/foehn-decision-electronique.module.mjs +4 -4
  43. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.component.mjs +3 -3
  44. package/esm2022/foehn-dropdown-menu/foehn-dropdown-menu.module.mjs +4 -4
  45. package/esm2022/foehn-footer/foehn-footer.component.mjs +3 -3
  46. package/esm2022/foehn-footer/foehn-footer.module.mjs +4 -4
  47. package/esm2022/foehn-form/foehn-form.component.mjs +3 -3
  48. package/esm2022/foehn-form/foehn-form.module.mjs +4 -4
  49. package/esm2022/foehn-form/register-ng-model.service.mjs +3 -3
  50. package/esm2022/foehn-growl/foehn-growl.component.mjs +3 -3
  51. package/esm2022/foehn-growl/foehn-growl.module.mjs +4 -4
  52. package/esm2022/foehn-growl/growl-broker.service.mjs +3 -3
  53. package/esm2022/foehn-header/foehn-header.component.mjs +3 -3
  54. package/esm2022/foehn-header/foehn-header.module.mjs +4 -4
  55. package/esm2022/foehn-header/foehn-skip-link.component.mjs +3 -3
  56. package/esm2022/foehn-help-modal/foehn-help-modal.component.mjs +3 -3
  57. package/esm2022/foehn-help-modal/foehn-help-modal.module.mjs +4 -4
  58. package/esm2022/foehn-icons/abstract-icon-component.mjs +3 -3
  59. package/esm2022/foehn-icons/foehn-icon-calendar.component.mjs +3 -3
  60. package/esm2022/foehn-icons/foehn-icon-check-square-o.component.mjs +3 -3
  61. package/esm2022/foehn-icons/foehn-icon-check.component.mjs +3 -3
  62. package/esm2022/foehn-icons/foehn-icon-chevron-down.component.mjs +3 -3
  63. package/esm2022/foehn-icons/foehn-icon-chevron-left.component.mjs +3 -3
  64. package/esm2022/foehn-icons/foehn-icon-chevron-right.component.mjs +3 -3
  65. package/esm2022/foehn-icons/foehn-icon-chevron-up.component.mjs +3 -3
  66. package/esm2022/foehn-icons/foehn-icon-clock.component.mjs +3 -3
  67. package/esm2022/foehn-icons/foehn-icon-comment-dots.component.mjs +3 -3
  68. package/esm2022/foehn-icons/foehn-icon-edit.component.mjs +3 -3
  69. package/esm2022/foehn-icons/foehn-icon-external-link-alt.component.mjs +3 -3
  70. package/esm2022/foehn-icons/foehn-icon-file-pdf.component.mjs +3 -3
  71. package/esm2022/foehn-icons/foehn-icon-info-circle.component.mjs +3 -3
  72. package/esm2022/foehn-icons/foehn-icon-lock.component.mjs +3 -3
  73. package/esm2022/foehn-icons/foehn-icon-map-marker.component.mjs +3 -3
  74. package/esm2022/foehn-icons/foehn-icon-minus-circle.component.mjs +3 -3
  75. package/esm2022/foehn-icons/foehn-icon-pencil.component.mjs +3 -3
  76. package/esm2022/foehn-icons/foehn-icon-plus-circle.component.mjs +3 -3
  77. package/esm2022/foehn-icons/foehn-icon-plus-square.component.mjs +3 -3
  78. package/esm2022/foehn-icons/foehn-icon-search.component.mjs +3 -3
  79. package/esm2022/foehn-icons/foehn-icon-times.component.mjs +3 -3
  80. package/esm2022/foehn-icons/foehn-icon-trash-alt.component.mjs +3 -3
  81. package/esm2022/foehn-icons/foehn-icon-unlock-alt.component.mjs +3 -3
  82. package/esm2022/foehn-icons/foehn-icon-user.component.mjs +3 -3
  83. package/esm2022/foehn-icons/foehn-icons.module.mjs +4 -4
  84. package/esm2022/foehn-input/foehn-input-email.component.mjs +3 -3
  85. package/esm2022/foehn-input/foehn-input-hidden.component.mjs +3 -3
  86. package/esm2022/foehn-input/foehn-input-number.component.mjs +3 -3
  87. package/esm2022/foehn-input/foehn-input-password.component.mjs +3 -3
  88. package/esm2022/foehn-input/foehn-input-phone.component.mjs +3 -3
  89. package/esm2022/foehn-input/foehn-input-prefixed-text.component.mjs +3 -3
  90. package/esm2022/foehn-input/foehn-input-string.component.mjs +3 -3
  91. package/esm2022/foehn-input/foehn-input-text.component.mjs +3 -3
  92. package/esm2022/foehn-input/foehn-input-textarea.component.mjs +3 -3
  93. package/esm2022/foehn-input/foehn-input.component.mjs +3 -3
  94. package/esm2022/foehn-input/foehn-input.module.mjs +4 -4
  95. package/esm2022/foehn-input-date/foehn-input-date.component.mjs +3 -3
  96. package/esm2022/foehn-input-date-time/foehn-input-date-time.component.mjs +3 -3
  97. package/esm2022/foehn-input-time/foehn-input-time.component.mjs +6 -6
  98. package/esm2022/foehn-list/foehn-list.component.mjs +3 -3
  99. package/esm2022/foehn-list/foehn-list.module.mjs +4 -4
  100. package/esm2022/foehn-menu-prestation/abstract-list-item-detail-page.component.mjs +3 -3
  101. package/esm2022/foehn-menu-prestation/abstract-menu-page.component.mjs +3 -3
  102. package/esm2022/foehn-menu-prestation/abstract-page-from-menu.component.mjs +3 -3
  103. package/esm2022/foehn-menu-prestation/foehn-error-pill/foehn-error-pill.component.mjs +3 -3
  104. package/esm2022/foehn-menu-prestation/foehn-list-summary/foehn-list-summary.component.mjs +3 -3
  105. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item/foehn-menu-item.component.mjs +3 -3
  106. package/esm2022/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +3 -3
  107. package/esm2022/foehn-menu-prestation/foehn-menu-prestation.module.mjs +4 -4
  108. package/esm2022/foehn-misc/foehn-abbr.component.mjs +3 -3
  109. package/esm2022/foehn-misc/foehn-misc.module.mjs +4 -4
  110. package/esm2022/foehn-modal/foehn-modal.component.mjs +3 -3
  111. package/esm2022/foehn-modal/foehn-modal.module.mjs +4 -4
  112. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.component.mjs +3 -3
  113. package/esm2022/foehn-multiselect-autocomplete/foehn-multiselect-autocomplete.module.mjs +4 -4
  114. package/esm2022/foehn-nav13/foehn-input-nav13.component.mjs +3 -3
  115. package/esm2022/foehn-nav13/foehn-input-nav13.module.mjs +4 -4
  116. package/esm2022/foehn-navigation/abstract-foehn-navigation.component.mjs +3 -3
  117. package/esm2022/foehn-navigation/foehn-navigation/foehn-navigation.component.mjs +3 -3
  118. package/esm2022/foehn-navigation/foehn-navigation.module.mjs +4 -4
  119. package/esm2022/foehn-navigation/foehn-navigation.service.mjs +3 -3
  120. package/esm2022/foehn-navigation/foehn-simple-navigation/foehn-simple-navigation.component.mjs +3 -3
  121. package/esm2022/foehn-notfound/foehn-notfound.component.mjs +3 -3
  122. package/esm2022/foehn-notfound/foehn-notfound.module.mjs +4 -4
  123. package/esm2022/foehn-page/foehn-page-counter.component.mjs +3 -3
  124. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration-interceptor.mjs +3 -3
  125. package/esm2022/foehn-page/foehn-page-expiration-timer/demande-expiration.service.mjs +3 -3
  126. package/esm2022/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +3 -3
  127. package/esm2022/foehn-page/foehn-page-modal.component.mjs +3 -3
  128. package/esm2022/foehn-page/foehn-page-modal.service.mjs +3 -3
  129. package/esm2022/foehn-page/foehn-page.component.mjs +3 -3
  130. package/esm2022/foehn-page/foehn-page.module.mjs +4 -4
  131. package/esm2022/foehn-page/foehn-page.service.mjs +3 -3
  132. package/esm2022/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +3 -3
  133. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +3 -3
  134. package/esm2022/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +3 -3
  135. package/esm2022/foehn-recap-section/foehn-recap-section.component.mjs +3 -3
  136. package/esm2022/foehn-recap-section/foehn-recap-section.module.mjs +4 -4
  137. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.component.mjs +3 -3
  138. package/esm2022/foehn-remaining-alerts-summary/foehn-remaining-alerts-summary.module.mjs +4 -4
  139. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.component.mjs +3 -3
  140. package/esm2022/foehn-status-progress-bar/foehn-status-progress-bar.module.mjs +4 -4
  141. package/esm2022/foehn-table/foehn-table.component.mjs +3 -3
  142. package/esm2022/foehn-table/foehn-table.module.mjs +4 -4
  143. package/esm2022/foehn-upload/abstract-foehn-uploader.component.mjs +3 -3
  144. package/esm2022/foehn-upload/foehn-bo-multi-upload/bo-multi-upload.service.mjs +3 -3
  145. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.component.mjs +3 -3
  146. package/esm2022/foehn-upload/foehn-bo-multi-upload/foehn-bo-multi-upload.module.mjs +4 -4
  147. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.component.mjs +3 -3
  148. package/esm2022/foehn-upload/foehn-multi-upload/foehn-multi-upload.module.mjs +4 -4
  149. package/esm2022/foehn-upload/foehn-multi-upload/multi-upload.service.mjs +3 -3
  150. package/esm2022/foehn-upload/foehn-multi-upload/pending-upload.service.mjs +8 -6
  151. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.mjs +3 -3
  152. package/esm2022/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.mjs +4 -4
  153. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +3 -3
  154. package/esm2022/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.module.mjs +4 -4
  155. package/esm2022/foehn-upload/foehn-upload-progress-bar/upload-progress.service.mjs +3 -3
  156. package/esm2022/foehn-upload/page-upload-limit.service.mjs +3 -3
  157. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.component.mjs +3 -3
  158. package/esm2022/foehn-user-connected-as/foehn-user-connected-as.module.mjs +4 -4
  159. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.component.mjs +3 -3
  160. package/esm2022/foehn-validation-alert-summary/foehn-validation-alert-summary.module.mjs +4 -4
  161. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.component.mjs +3 -3
  162. package/esm2022/foehn-validation-alerts/foehn-validation-alerts.module.mjs +4 -4
  163. package/esm2022/gesdem/gesdem-error-handler.service.mjs +5 -4
  164. package/esm2022/gesdem/gesdem-event.service.mjs +3 -3
  165. package/esm2022/gesdem/gesdem-handler.service.mjs +11 -5
  166. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component.mjs +3 -3
  167. package/esm2022/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +3 -3
  168. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.module.mjs +4 -4
  169. package/esm2022/gesdem-action-recovery/gesdem-action-recovery.service.mjs +3 -3
  170. package/esm2022/gesdem-confirmation/gesdem-confirmation.component.mjs +17 -13
  171. package/esm2022/gesdem-confirmation/gesdem-confirmation.module.mjs +4 -4
  172. package/esm2022/gesdem-error/gesdem-error.component.mjs +8 -6
  173. package/esm2022/gesdem-error/gesdem-error.module.mjs +4 -4
  174. package/esm2022/pipes/currency.pipe.mjs +3 -3
  175. package/esm2022/pipes/date.pipe.mjs +3 -3
  176. package/esm2022/pipes/formatIde.pipe.mjs +3 -3
  177. package/esm2022/pipes/pipes.module.mjs +4 -4
  178. package/esm2022/prestations-ng-core.module.mjs +4 -4
  179. package/esm2022/sdk-appinfo/application-info.mjs +7 -1
  180. package/esm2022/sdk-appinfo/application-info.service.mjs +24 -6
  181. package/esm2022/sdk-currency/currency.helper.mjs +3 -3
  182. package/esm2022/sdk-date/date.helper.mjs +3 -3
  183. package/esm2022/sdk-dictionary/default-dictionary.mjs +6 -3
  184. package/esm2022/sdk-dictionary/sdk-dictionary.module.mjs +4 -4
  185. package/esm2022/sdk-dictionary/sdk-dictionary.pipe.mjs +3 -3
  186. package/esm2022/sdk-dictionary/sdk-dictionary.service.mjs +3 -3
  187. package/esm2022/sdk-drafts/drafts-container.component.mjs +3 -3
  188. package/esm2022/sdk-drafts/drafts.module.mjs +4 -4
  189. package/esm2022/sdk-drafts/drafts.service.mjs +3 -3
  190. package/esm2022/sdk-epayment/sdk-epayment.component.mjs +3 -3
  191. package/esm2022/sdk-epayment/sdk-epayment.module.mjs +4 -4
  192. package/esm2022/sdk-epayment/sdk-epayment.service.mjs +3 -3
  193. package/esm2022/sdk-events-logger/sdk-events-logger.service.mjs +3 -3
  194. package/esm2022/sdk-recaptcha/grecaptcha/grecaptcha.component.mjs +3 -3
  195. package/esm2022/sdk-recaptcha/recaptcha.service.mjs +3 -3
  196. package/esm2022/sdk-recaptcha/sdk-recaptcha.component.mjs +3 -3
  197. package/esm2022/sdk-recaptcha/sdk-recaptcha.module.mjs +4 -4
  198. package/esm2022/sdk-redirect/iam-expired-interceptor.service.mjs +7 -9
  199. package/esm2022/sdk-redirect/redirect.component.mjs +27 -16
  200. package/esm2022/sdk-redirect/sdk-redirect.module.mjs +4 -4
  201. package/esm2022/sdk-session-info/session-info-with-application.service.mjs +3 -3
  202. package/esm2022/sdk-session-info/session-info.service.mjs +3 -3
  203. package/esm2022/sdk-statistics/sdk-statistics.service.mjs +3 -3
  204. package/esm2022/sdk-support-alert/support-alert-container.component.mjs +3 -3
  205. package/esm2022/sdk-support-alert/support-alert.component.mjs +3 -3
  206. package/esm2022/sdk-support-alert/support-alert.module.mjs +4 -4
  207. package/esm2022/sdk-support-alert/support-alert.service.mjs +3 -3
  208. package/esm2022/supported-browser.mjs +2 -2
  209. package/esm2022/validation/validation-handler.service.mjs +3 -3
  210. package/fesm2022/dsivd-prestations-ng.mjs +958 -896
  211. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  212. package/foehn-address/foehn-input-address.component.d.ts +2 -1
  213. package/foehn-breadcrumb/breadcrumb-event.service.d.ts +3 -1
  214. package/gesdem/gesdem-error-handler.service.d.ts +1 -0
  215. package/gesdem/gesdem-handler.service.d.ts +1 -1
  216. package/gesdem-confirmation/gesdem-confirmation.component.d.ts +2 -0
  217. package/gesdem-error/gesdem-error.component.d.ts +1 -0
  218. package/package.json +1 -1
  219. package/sdk-appinfo/application-info.d.ts +3 -2
  220. package/sdk-redirect/redirect.component.d.ts +4 -2
  221. package/dsivd-prestations-ng-17.0.0-beta.3.tgz +0 -0
@@ -1,10 +1,11 @@
1
1
  import { Component, Input } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { first, map } from 'rxjs/operators';
2
+ import { BehaviorSubject, combineLatest } from 'rxjs';
3
+ import { first, map, tap } from 'rxjs/operators';
4
4
  import { BreadcrumbEventService } from '../foehn-breadcrumb/breadcrumb-event.service';
5
5
  import { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';
6
6
  import { FoehnPageService } from '../foehn-page/foehn-page.service';
7
7
  import { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';
8
+ import { ApplicationInfoService } from '../sdk-appinfo/application-info.service';
8
9
  import { SdkEventType } from '../sdk-events-logger/sdk-event-type';
9
10
  import { SdkEventsLoggerService } from '../sdk-events-logger/sdk-events-logger.service';
10
11
  import { SessionInfo } from '../sdk-session-info/session-info.service';
@@ -43,6 +44,7 @@ export class GesdemConfirmationComponent {
43
44
  this._sessionInfo = ServiceLocator.injector.get(SessionInfo);
44
45
  this._navigation = ServiceLocator.injector.get(FoehnNavigationService);
45
46
  this._eventsLoggerService = ServiceLocator.injector.get(SdkEventsLoggerService);
47
+ this._applicationInfoService = ServiceLocator.injector.get(ApplicationInfoService);
46
48
  const route = FoehnNavigationService.getRootRouteRecursive(activatedRoute.snapshot);
47
49
  this._navigation.initRoute(route);
48
50
  // Override from the routing.
@@ -86,18 +88,20 @@ export class GesdemConfirmationComponent {
86
88
  this.closeButtonConnectedText ||
87
89
  'gesdem-confirmation.exit-button-connected';
88
90
  // default closeLink if not by @Input and not by route data
89
- this.foehnPageService
90
- .onEtapeIdChange()
91
- .pipe(first())
92
- // eslint-disable-next-line rxjs/no-nested-subscribe,rxjs-angular/prefer-async-pipe
93
- .subscribe(etapeId => {
91
+ combineLatest([
92
+ this.foehnPageService.onEtapeIdChange().pipe(first()),
93
+ this._applicationInfoService.data.pipe(first())
94
+ ])
95
+ .pipe(first(), tap(([etapeId, appInfo]) => {
94
96
  if (!this.closeLinkNotConnected.getValue()) {
95
- this.closeLinkNotConnected.next(`https://www.vd.ch/go.to?prestation=${etapeId}`);
97
+ this.closeLinkNotConnected.next(`${appInfo.configuration.portail.baseVdChUrl}/go.to?prestation=${etapeId}`);
96
98
  }
97
99
  if (!this.closeLinkConnected.getValue()) {
98
100
  this.closeLinkConnected.next('/100018/logout');
99
101
  }
100
- });
102
+ }))
103
+ // eslint-disable-next-line rxjs/no-nested-subscribe,rxjs-angular/prefer-async-pipe,rxjs/no-nested-subscribe
104
+ .subscribe();
101
105
  });
102
106
  }
103
107
  get isTransferred() {
@@ -188,10 +192,10 @@ export class GesdemConfirmationComponent {
188
192
  gotToTop() {
189
193
  window.scrollTo(0, 0);
190
194
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationComponent, deps: [{ token: i1.GesdemHandlerService }, { token: i2.FoehnPageService }, { token: i3.ActivatedRoute }, { token: i4.SdkDictionaryService }, { token: i5.Location }], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: GesdemConfirmationComponent, selector: "gesdem-confirmation", inputs: { reference: "reference", setPageTitle: "setPageTitle", hasEmailSent: "hasEmailSent", closeHref: "closeHref", closeHrefConnected: "closeHrefConnected", showDownloadPdfRecapButton: "showDownloadPdfRecapButton", showLinkToMyDemandes: "showLinkToMyDemandes", demandeIsClosedOnTransmit: "demandeIsClosedOnTransmit", actionStatut: "actionStatut", connectedConfirmationMessage: "connectedConfirmationMessage", connectedConfirmationMessageIfAbandoned: "connectedConfirmationMessageIfAbandoned", downloadPdfRecapButtonText: "downloadPdfRecapButtonText", closeButtonText: "closeButtonText", closeButtonConnectedText: "closeButtonConnectedText", baseUrlPdf: "baseUrlPdf", hideReference: "hideReference" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\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.FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.SdkDictionaryPipe, name: "fromDictionary" }] }); }
195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationComponent, deps: [{ token: i1.GesdemHandlerService }, { token: i2.FoehnPageService }, { token: i3.ActivatedRoute }, { token: i4.SdkDictionaryService }, { token: i5.Location }], target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: GesdemConfirmationComponent, selector: "gesdem-confirmation", inputs: { reference: "reference", setPageTitle: "setPageTitle", hasEmailSent: "hasEmailSent", closeHref: "closeHref", closeHrefConnected: "closeHrefConnected", showDownloadPdfRecapButton: "showDownloadPdfRecapButton", showLinkToMyDemandes: "showLinkToMyDemandes", demandeIsClosedOnTransmit: "demandeIsClosedOnTransmit", actionStatut: "actionStatut", connectedConfirmationMessage: "connectedConfirmationMessage", connectedConfirmationMessageIfAbandoned: "connectedConfirmationMessageIfAbandoned", downloadPdfRecapButtonText: "downloadPdfRecapButtonText", closeButtonText: "closeButtonText", closeButtonConnectedText: "closeButtonConnectedText", baseUrlPdf: "baseUrlPdf", hideReference: "hideReference" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\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.FoehnIconInfoCircleComponent, selector: "foehn-icon-info-circle" }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.SdkDictionaryPipe, name: "fromDictionary" }] }); }
193
197
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationComponent, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationComponent, decorators: [{
195
199
  type: Component,
196
200
  args: [{ selector: 'gesdem-confirmation', template: "<div class=\"container mt-5\" *ngIf=\"reference && !isInProgress\">\n <div\n class=\"alert text-center mb-2\"\n [ngClass]=\"isTransferred ? 'alert-success' : 'alert-danger'\"\n >\n <p class=\"h2\">\n {{\n isTransferred\n ? (successLabelDicoKey | fromDictionary)\n : ('gesdem-confirmation.abort-label' | fromDictionary)\n }}\n </p>\n <dl *ngIf=\"!hideReference\">\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemande\" class=\"h4 d-block mt-3\">{{ reference }}</dd>\n </dl>\n <p *ngIf=\"hasEmailSent && !(isConnectedCyber | async)\">\n {{ 'gesdem-confirmation.mail-sent.label' | fromDictionary }}\n </p>\n </div>\n\n <span\n [innerHTML]=\"'gesdem-confirmation.extra-content' | fromDictionary\"\n ></span>\n\n <ng-content></ng-content>\n\n <div\n class=\"col-md-12 vd-highlight highlight-dark\"\n *ngIf=\"(isConnectedCyber | async) && hasConnectedContent()\"\n >\n <span\n class=\"visually-hidden\"\n [innerHTML]=\"\n 'gesdem-confirmation.transmission-information.label'\n | fromDictionary\n \"\n ></span>\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p\n [innerHTML]=\"\n isTransferred\n ? connectedConfirmationMessage\n : connectedConfirmationMessageIfAbandoned\n \"\n ></p>\n <p\n id=\"linkToTreatedDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n (demandeIsClosedOnTransmit || isAbandoned)\n \"\n >\n {{\n 'gesdem-confirmation.demand-detail-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n <p\n id=\"linkToInProgressDemandes\"\n *ngIf=\"\n showLinkToMyDemandes &&\n !demandeIsClosedOnTransmit &&\n !isAbandoned\n \"\n >\n {{\n 'gesdem-confirmation.demand-processing-progress-link.label'\n | fromDictionary\n }}\n <a\n href=\"/100002/demandes/{{ reference }}\"\n [attr.aria-label]=\"\n 'gesdem-demand-detail'\n | fromDictionary: { reference: reference }\n \"\n [innerHTML]=\"reference\"\n ></a>\n .\n </p>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-12 list-unstyled d-md-flex p-0 mt-4\">\n <div class=\"ms-0 me-md-auto me-md-2 mb-2 mt-2\">\n <a\n *ngIf=\"showDownloadPdfRecapButton\"\n [href]=\"urlPdf\"\n (click)=\"logPdfDownloadedEvent()\"\n id=\"telechargerBtn\"\n class=\"btn btn-secondary w-100\"\n [attr.aria-label]=\"\n 'gesdem.download-pdf.button.title' | fromDictionary\n \"\n >\n {{ downloadPdfRecapButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !(isConnectedCyber | async) && closeLinkNotConnected\n | async as link\n \"\n >\n <a [href]=\"link\" id=\"terminerBtn\" class=\"btn btn-primary w-100\">\n {{ closeButtonText | fromDictionary }}\n </a>\n </div>\n\n <div\n class=\"me-0 ms-md-auto mb-2 mt-2\"\n *ngIf=\"\n !!(isConnectedCyber | async) && closeLinkConnected\n | async as link\n \"\n >\n <a\n [href]=\"link\"\n id=\"terminerConnectedBtn\"\n class=\"btn btn-primary w-100\"\n >\n {{ closeButtonConnectedText | fromDictionary }}\n </a>\n </div>\n </div>\n</div>\n\n<div class=\"container mt-5\" *ngIf=\"!hideReference && reference && isInProgress\">\n <div class=\"alert alert-info text-center mb-2\">\n <p\n class=\"h2\"\n [innerHTML]=\"\n 'gesdem-confirmation.demand-in-progress.title' | fromDictionary\n \"\n ></p>\n <dl>\n <dt class=\"fw-light\">\n {{\n 'gesdem-confirmation.reference-title.label' | fromDictionary\n }}\n </dt>\n <dd id=\"numDemandeEnCours\" class=\"h4 d-block mt-3\">\n {{ reference }}\n </dd>\n </dl>\n </div>\n\n <div class=\"col-md-12 vd-highlight highlight-dark\">\n <div class=\"row\">\n <div class=\"col-md-1\">\n <foehn-icon-info-circle class=\"h3\"></foehn-icon-info-circle>\n </div>\n <div class=\"col-md-11\">\n <p>\n {{\n 'gesdem-confirmation.resume-my-demand.label'\n | fromDictionary\n }}\n </p>\n <p>\n <a [routerLink]=\"firstPageLink\">\n {{\n 'gesdem-confirmation.resume-my-demand.button'\n | fromDictionary\n }}\n </a>\n </p>\n </div>\n </div>\n </div>\n</div>\n" }]
197
201
  }], ctorParameters: () => [{ type: i1.GesdemHandlerService }, { type: i2.FoehnPageService }, { type: i3.ActivatedRoute }, { type: i4.SdkDictionaryService }, { type: i5.Location }], propDecorators: { reference: [{
@@ -227,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
227
231
  }], hideReference: [{
228
232
  type: Input
229
233
  }] } });
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWNvbmZpcm1hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZ2VzZGVtLWNvbmZpcm1hdGlvbi9nZXNkZW0tY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tY29uZmlybWF0aW9uL2dlc2RlbS1jb25maXJtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBTVIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQUVwRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FDakQsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssS0FBSyxD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QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFLTix1Q0FBdUM7c0JBRHRDLEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEJyZWFkY3J1bWJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1icmVhZGNydW1iL2JyZWFkY3J1bWItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tbmF2aWdhdGlvbi9mb2Vobi1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uU3RhdHV0LCBHZXNkZW1TdGF0dXRVdGlscyB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0tc3RhdHV0LXV0aWxzJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTZGtFdmVudFR5cGUgfSBmcm9tICcuLi9zZGstZXZlbnRzLWxvZ2dlci9zZGstZXZlbnQtdHlwZSc7XG5pbXBvcnQgeyBTZGtFdmVudHNMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWV2ZW50cy1sb2dnZXIvc2RrLWV2ZW50cy1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uSW5mbyB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi9zZXJ2aWNlLWxvY2F0b3InO1xuXG5jb25zdCBpc0Jvb2xlYW5EZWZpbmVkID0gKHZhbHVlOiBib29sZWFuKTogYm9vbGVhbiA9PlxuICAgIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZTtcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1jb25maXJtYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZXNkZW0tY29uZmlybWF0aW9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBHZXNkZW1Db25maXJtYXRpb25Db21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXNcbntcbiAgICBASW5wdXQoKVxuICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzZXRQYWdlVGl0bGUgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBoYXNFbWFpbFNlbnQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VIcmVmOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlSHJlZkNvbm5lY3RlZDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBzaG93RG93bmxvYWRQZGZSZWNhcEJ1dHRvbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dMaW5rVG9NeURlbWFuZGVzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZGVtYW5kZUlzQ2xvc2VkT25UcmFuc21pdCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBhY3Rpb25TdGF0dXQgPSBBY3Rpb25TdGF0dXQuVFJBTlNGRVJSRUQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2UgPVxuICAgICAgICAnVm91cyBhdmV6IGVmZmVjdHXDqSBsYSBwcmVtacOocmUgw6l0YXBlIGRlIHZvdHJlIGTDqW1hcmNoZSBhdmVjIHN1Y2PDqHMgISc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2VJZkFiYW5kb25lZCA9XG4gICAgICAgIFwiTGEgZGVtYW5kZSDDoCBsYXF1ZWxsZSB2b3VzIGVzc2F5ZXogZCdhY2PDqWRlciBhIMOpdMOpIGFiYW5kb25uw6llLlwiO1xuXG4gICAgQElucHV0KClcbiAgICBkb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBjbG9zZUJ1dHRvblRleHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VCdXR0b25Db25uZWN0ZWRUZXh0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGJhc2VVcmxQZGYgPSAnYXBpL2RvY3VtZW50L3BkZi8nO1xuXG4gICAgQElucHV0KClcbiAgICBoaWRlUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgICBpc0Nvbm5lY3RlZEN5YmVyOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGZpcnN0UGFnZUxpbmsgPSAnLyc7XG4gICAgdXJsUGRmOiBzdHJpbmc7XG4gICAgY2xvc2VMaW5rTm90Q29ubmVjdGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuXG4gICAgY2xvc2VMaW5rQ29ubmVjdGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KG51bGwpO1xuXG4gICAgcHJvdGVjdGVkIF9icmVhZGNydW1iRXZlbnRTZXJ2aWNlOiBCcmVhZGNydW1iRXZlbnRTZXJ2aWNlO1xuICAgIHByb3RlY3RlZCBfZm9laG5QYWdlU2VydmljZTogRm9laG5QYWdlU2VydmljZTtcbiAgICBwcm90ZWN0ZWQgX3Nlc3Npb25JbmZvOiBTZXNzaW9uSW5mbztcbiAgICBwcm90ZWN0ZWQgX25hdmlnYXRpb246IEZvZWhuTmF2aWdhdGlvblNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIF9ldmVudHNMb2dnZXJTZXJ2aWNlOiBTZGtFdmVudHNMb2dnZXJTZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZ2VzZGVtU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBmb2VoblBhZ2VTZXJ2aWNlOiBGb2VoblBhZ2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJFdmVudFNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBCcmVhZGNydW1iRXZlbnRTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZvZWhuUGFnZVNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoRm9laG5QYWdlU2VydmljZSk7XG4gICAgICAgIHRoaXMuX3Nlc3Npb25JbmZvID0gU2VydmljZUxvY2F0b3IuaW5qZWN0b3IuZ2V0KFNlc3Npb25JbmZvKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbiA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChGb2Vobk5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzTG9nZ2VyU2VydmljZSA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChcbiAgICAgICAgICAgIFNka0V2ZW50c0xvZ2dlclNlcnZpY2VcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByb3V0ZSA9IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UuZ2V0Um9vdFJvdXRlUmVjdXJzaXZlKFxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGUuc25hcHNob3RcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbi5pbml0Um91dGUocm91dGUpO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIGZyb20gdGhlIHJvdXRpbmcuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJvdXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNFbWFpbFNlbnQgPSByb3V0ZURhdGEuaGFzRW1haWxTZW50IHx8IHRoaXMuaGFzRW1haWxTZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMaW5rTm90Q29ubmVjdGVkLm5leHQoXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5jbG9zZUhyZWYgfHwgdGhpcy5jbG9zZUxpbmtOb3RDb25uZWN0ZWQuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQubmV4dChcbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNsb3NlSHJlZkNvbm5lY3RlZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZUlmQWJhbmRvbmVkID1cbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2VJZkFiYW5kb25lZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2VJZkFiYW5kb25lZDtcbiAgICAgICAgICAgICAgICBpZiAoaXNCb29sZWFuRGVmaW5lZChyb3V0ZURhdGEuc2hvd0Rvd25sb2FkUGRmUmVjYXBCdXR0b24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Rvd25sb2FkUGRmUmVjYXBCdXR0b24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLnNob3dEb3dubG9hZFBkZlJlY2FwQnV0dG9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNCb29sZWFuRGVmaW5lZChyb3V0ZURhdGEuc2hvd0xpbmtUb015RGVtYW5kZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpbmtUb015RGVtYW5kZXMgPSByb3V0ZURhdGEuc2hvd0xpbmtUb015RGVtYW5kZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5EZWZpbmVkKHJvdXRlRGF0YS5kZW1hbmRlSXNDbG9zZWRPblRyYW5zbWl0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbWFuZGVJc0Nsb3NlZE9uVHJhbnNtaXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmRlbWFuZGVJc0Nsb3NlZE9uVHJhbnNtaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5EZWZpbmVkKHJvdXRlRGF0YS5oaWRlUmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVSZWZlcmVuY2UgPSByb3V0ZURhdGEuaGlkZVJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5kb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkUGRmUmVjYXBCdXR0b25UZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmRvd25sb2FkLXBkZi1yZWNhcC1idXR0b24nO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFzZVVybFBkZiA9IHJvdXRlRGF0YS5iYXNlVXJsUGRmIHx8IHRoaXMuYmFzZVVybFBkZjtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQnV0dG9uVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5jbG9zZUJ1dHRvblRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvblRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZXhpdC1idXR0b24nO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvbkNvbm5lY3RlZFRleHQgPVxuICAgICAgICAgICAgICAgICAgICByb3V0ZURhdGEuY2xvc2VCdXR0b25Db25uZWN0ZWRUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VCdXR0b25Db25uZWN0ZWRUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmV4aXQtYnV0dG9uLWNvbm5lY3RlZCc7XG5cbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGNsb3NlTGluayBpZiBub3QgYnkgQElucHV0IGFuZCBub3QgYnkgcm91dGUgZGF0YVxuICAgICAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAub25FdGFwZUlkQ2hhbmdlKClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tbmVzdGVkLXN1YnNjcmliZSxyeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShldGFwZUlkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jbG9zZUxpbmtOb3RDb25uZWN0ZWQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMaW5rTm90Q29ubmVjdGVkLm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBodHRwczovL3d3dy52ZC5jaC9nby50bz9wcmVzdGF0aW9uPSR7ZXRhcGVJZH1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQuZ2V0VmFsdWUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMaW5rQ29ubmVjdGVkLm5leHQoJy8xMDAwMTgvbG9nb3V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpc1RyYW5zZmVycmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25TdGF0dXQgJiYgdGhpcy5hY3Rpb25TdGF0dXQgPT09IEFjdGlvblN0YXR1dC5UUkFOU0ZFUlJFRFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpc0FiYW5kb25lZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uU3RhdHV0ICYmIHRoaXMuYWN0aW9uU3RhdHV0ID09PSBBY3Rpb25TdGF0dXQuQUJBTkRPTkVEXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlzSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFHZXNkZW1TdGF0dXRVdGlscy5pc0ZpbmFsKHRoaXMuYWN0aW9uU3RhdHV0KTtcbiAgICB9XG5cbiAgICBnZXQgc3VjY2Vzc0xhYmVsRGljb0tleSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpc0ZpcnN0QWN0aW9uID1cbiAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGE/LmN1cnJlbnRBY3Rpb24gPT09IDE7XG4gICAgICAgIHJldHVybiBpc0ZpcnN0QWN0aW9uXG4gICAgICAgICAgICA/ICdnZXNkZW0tY29uZmlybWF0aW9uLnN1Y2Nlc3MtbGFiZWwnXG4gICAgICAgICAgICA6ICdnZXNkZW0tY29uZmlybWF0aW9uLm5leHQtc3RlcC5zdWNjZXNzLWxhYmVsJztcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNoYW5nZU5vdENvbm5lY3RlZDogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5jbG9zZUhyZWY7XG4gICAgICAgIGlmIChjaGFuZ2VOb3RDb25uZWN0ZWQgJiYgY2hhbmdlTm90Q29ubmVjdGVkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtOb3RDb25uZWN0ZWQubmV4dChjaGFuZ2VOb3RDb25uZWN0ZWQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoYW5nZUNvbm5lY3RlZDogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5jbG9zZUhyZWZDb25uZWN0ZWQ7XG4gICAgICAgIGlmIChjaGFuZ2VDb25uZWN0ZWQgJiYgY2hhbmdlQ29ubmVjdGVkLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQubmV4dChjaGFuZ2VDb25uZWN0ZWQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvdFRvVG9wKCk7XG4gICAgICAgIGNvbnN0IGxhc3RSZXNwb25zZSA9IHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U7XG4gICAgICAgIGlmIChsYXN0UmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlID0gbGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25TdGF0dXQgPVxuICAgICAgICAgICAgICAgIEFjdGlvblN0YXR1dFtsYXN0UmVzcG9uc2UubWV0YS5zdGF0dXQgYXMgQWN0aW9uU3RhdHV0XTtcbiAgICAgICAgICAgIHRoaXMudXJsUGRmID0gdGhpcy5iYXNlVXJsUGRmICsgdGhpcy5yZWZlcmVuY2U7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50QWN0aW9uID0gbGFzdFJlc3BvbnNlLm1ldGEuY3VycmVudEFjdGlvbjtcbiAgICAgICAgICAgIGlmICghIWN1cnJlbnRBY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVybFBkZiArPSBgLSR7Y3VycmVudEFjdGlvbn1gO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvY2F0aW9uLnBhdGgoKS5pbmNsdWRlcyhgLyR7dGhpcy5yZWZlcmVuY2V9L2ApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxSZWZlcmVuY2VVcmwgPSB0aGlzLmxvY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAucGF0aCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLnJlZmVyZW5jZX0tJHtjdXJyZW50QWN0aW9ufWBcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKGZ1bGxSZWZlcmVuY2VVcmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2VDb2RlID0gbGFzdFJlc3BvbnNlLmZvcm0ubGFuZ3VhZ2U7XG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlQ29kZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGV0aGVyIHRoZSB1c2VyIGhhcyBhIGNvbnRleHQgd2UgY29uc2lkZXIgaXQgYXMgY29ubmVjdGVkLlxuICAgICAgICB0aGlzLmlzQ29ubmVjdGVkQ3liZXIgPSB0aGlzLl9zZXNzaW9uSW5mby5kYXRhLnBpcGUoXG4gICAgICAgICAgICBtYXAodXNlckluZm8gPT4gISF1c2VySW5mbyAmJiAhIXVzZXJJbmZvLmNvbnRleHQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2V0UGFnZVRpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VUaXRsZVN1YnNjcmlwdGlvbiA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0S2V5KCdnZXNkZW0tY29uZmlybWF0aW9uLnRpdGxlJylcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSh0aXRsZSA9PiB0aGlzLl9mb2VoblBhZ2VTZXJ2aWNlLnNldFBhZ2VUaXRsZSh0aXRsZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maXJzdFBhZ2VMaW5rID0gdGhpcy5nZXRGaXJzdFBhZ2VMaW5rKCk7XG5cbiAgICAgICAgdGhpcy5fYnJlYWRjcnVtYkV2ZW50U2VydmljZS5za2lwTGVhdmluZ0FsZXJ0QmVjYXVzZURlbWFuZElzVHJhbnNtaXR0ZWQgPVxuICAgICAgICAgICAgdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFnZVRpdGxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VUaXRsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFzQ29ubmVjdGVkQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaGFzQ29uZk1lc3NhZ2UgPVxuICAgICAgICAgICAgdGhpcy5pc1RyYW5zZmVycmVkICYmICEhdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlO1xuICAgICAgICBjb25zdCBoYXNBYmFuZG9uZWRDb25mTWVzc2FnZSA9XG4gICAgICAgICAgICAhdGhpcy5pc1RyYW5zZmVycmVkICYmXG4gICAgICAgICAgICAhIXRoaXMuY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZUlmQWJhbmRvbmVkO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBoYXNDb25mTWVzc2FnZSB8fFxuICAgICAgICAgICAgaGFzQWJhbmRvbmVkQ29uZk1lc3NhZ2UgfHxcbiAgICAgICAgICAgICEhdGhpcy5zaG93TGlua1RvTXlEZW1hbmRlc1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGxvZ1BkZkRvd25sb2FkZWRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXZlbnRzTG9nZ2VyU2VydmljZS5hZGRFdmVudChTZGtFdmVudFR5cGUuUERGX1JFQ0FQX0RPV05MT0FEKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpcnN0UGFnZUxpbmsoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGxpbmsgPSAnLyc7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IHRoaXMuX25hdmlnYXRpb24uZ2V0Rmlyc3RSb3V0ZSgpO1xuICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCkge1xuICAgICAgICAgICAgbGluayArPSBgJHt0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4fS9gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2xpbmsgKyB0aGlzLnJlZmVyZW5jZX0vJHtmaXJzdFBhZ2UucGF0aH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ290VG9Ub3AoKTogdm9pZCB7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyIG10LTVcIiAqbmdJZj1cInJlZmVyZW5jZSAmJiAhaXNJblByb2dyZXNzXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFsZXJ0IHRleHQtY2VudGVyIG1iLTJcIlxuICAgICAgICBbbmdDbGFzc109XCJpc1RyYW5zZmVycmVkID8gJ2FsZXJ0LXN1Y2Nlc3MnIDogJ2FsZXJ0LWRhbmdlcidcIlxuICAgID5cbiAgICAgICAgPHAgY2xhc3M9XCJoMlwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBpc1RyYW5zZmVycmVkXG4gICAgICAgICAgICAgICAgICAgID8gKHN1Y2Nlc3NMYWJlbERpY29LZXkgfCBmcm9tRGljdGlvbmFyeSlcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2dlc2RlbS1jb25maXJtYXRpb24uYWJvcnQtbGFiZWwnIHwgZnJvbURpY3Rpb25hcnkpXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxkbCAqbmdJZj1cIiFoaWRlUmVmZXJlbmNlXCI+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJmdy1saWdodFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnJlZmVyZW5jZS10aXRsZS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2R0PlxuICAgICAgICAgICAgPGRkIGlkPVwibnVtRGVtYW5kZVwiIGNsYXNzPVwiaDQgZC1ibG9jayBtdC0zXCI+e3sgcmVmZXJlbmNlIH19PC9kZD5cbiAgICAgICAgPC9kbD5cbiAgICAgICAgPHAgKm5nSWY9XCJoYXNFbWFpbFNlbnQgJiYgIShpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpXCI+XG4gICAgICAgICAgICB7eyAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5tYWlsLXNlbnQubGFiZWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPHNwYW5cbiAgICAgICAgW2lubmVySFRNTF09XCInZ2VzZGVtLWNvbmZpcm1hdGlvbi5leHRyYS1jb250ZW50JyB8IGZyb21EaWN0aW9uYXJ5XCJcbiAgICA+PC9zcGFuPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbC1tZC0xMiB2ZC1oaWdobGlnaHQgaGlnaGxpZ2h0LWRhcmtcIlxuICAgICAgICAqbmdJZj1cIihpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpICYmIGhhc0Nvbm5lY3RlZENvbnRlbnQoKVwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi50cmFuc21pc3Npb24taW5mb3JtYXRpb24ubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWluZm8tY2lyY2xlIGNsYXNzPVwiaDNcIj48L2ZvZWhuLWljb24taW5mby1jaXJjbGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTFcIj5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUcmFuc2ZlcnJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZUlmQWJhbmRvbmVkXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPjwvcD5cbiAgICAgICAgICAgICAgICA8cFxuICAgICAgICAgICAgICAgICAgICBpZD1cImxpbmtUb1RyZWF0ZWREZW1hbmRlc1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TGlua1RvTXlEZW1hbmRlcyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGRlbWFuZGVJc0Nsb3NlZE9uVHJhbnNtaXQgfHwgaXNBYmFuZG9uZWQpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZGVtYW5kLWRldGFpbC1saW5rLmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvMTAwMDAyL2RlbWFuZGVzL3t7IHJlZmVyZW5jZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tZGVtYW5kLWRldGFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyByZWZlcmVuY2U6IHJlZmVyZW5jZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZWZlcmVuY2VcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgIGlkPVwibGlua1RvSW5Qcm9ncmVzc0RlbWFuZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMaW5rVG9NeURlbWFuZGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhZGVtYW5kZUlzQ2xvc2VkT25UcmFuc21pdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWlzQWJhbmRvbmVkXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZGVtYW5kLXByb2Nlc3NpbmctcHJvZ3Jlc3MtbGluay5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiLzEwMDAwMi9kZW1hbmRlcy97eyByZWZlcmVuY2UgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWRlbWFuZC1kZXRhaWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnk6IHsgcmVmZXJlbmNlOiByZWZlcmVuY2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicmVmZXJlbmNlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbGlzdC11bnN0eWxlZCBkLW1kLWZsZXggcC0wIG10LTRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTAgbWUtbWQtYXV0byBtZS1tZC0yIG1iLTIgbXQtMlwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dEb3dubG9hZFBkZlJlY2FwQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaHJlZl09XCJ1cmxQZGZcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb2dQZGZEb3dubG9hZGVkRXZlbnQoKVwiXG4gICAgICAgICAgICAgICAgaWQ9XCJ0ZWxlY2hhcmdlckJ0blwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSB3LTEwMFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS5kb3dubG9hZC1wZGYuYnV0dG9uLnRpdGxlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBkb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dCB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMCBtcy1tZC1hdXRvIG1iLTIgbXQtMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICEoaXNDb25uZWN0ZWRDeWJlciB8IGFzeW5jKSAmJiBjbG9zZUxpbmtOb3RDb25uZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgfCBhc3luYyBhcyBsaW5rXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YSBbaHJlZl09XCJsaW5rXCIgaWQ9XCJ0ZXJtaW5lckJ0blwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+XG4gICAgICAgICAgICAgICAge3sgY2xvc2VCdXR0b25UZXh0IHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtZS0wIG1zLW1kLWF1dG8gbWItMiBtdC0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgISEoaXNDb25uZWN0ZWRDeWJlciB8IGFzeW5jKSAmJiBjbG9zZUxpbmtDb25uZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgfCBhc3luYyBhcyBsaW5rXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtocmVmXT1cImxpbmtcIlxuICAgICAgICAgICAgICAgIGlkPVwidGVybWluZXJDb25uZWN0ZWRCdG5cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBjbG9zZUJ1dHRvbkNvbm5lY3RlZFRleHQgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyIG10LTVcIiAqbmdJZj1cIiFoaWRlUmVmZXJlbmNlICYmIHJlZmVyZW5jZSAmJiBpc0luUHJvZ3Jlc3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtaW5mbyB0ZXh0LWNlbnRlciBtYi0yXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgICBjbGFzcz1cImgyXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZGVtYW5kLWluLXByb2dyZXNzLnRpdGxlJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9wPlxuICAgICAgICA8ZGw+XG4gICAgICAgICAgICA8ZHQgY2xhc3M9XCJmdy1saWdodFwiPlxuICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnJlZmVyZW5jZS10aXRsZS5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2R0PlxuICAgICAgICAgICAgPGRkIGlkPVwibnVtRGVtYW5kZUVuQ291cnNcIiBjbGFzcz1cImg0IGQtYmxvY2sgbXQtM1wiPlxuICAgICAgICAgICAgICAgIHt7IHJlZmVyZW5jZSB9fVxuICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgPC9kbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgdmQtaGlnaGxpZ2h0IGhpZ2hsaWdodC1kYXJrXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxuICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWluZm8tY2lyY2xlIGNsYXNzPVwiaDNcIj48L2ZvZWhuLWljb24taW5mby1jaXJjbGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTFcIj5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnJlc3VtZS1teS1kZW1hbmQubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiZmlyc3RQYWdlTGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5yZXN1bWUtbXktZGVtYW5kLmJ1dHRvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWNvbmZpcm1hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZ2VzZGVtLWNvbmZpcm1hdGlvbi9nZXNkZW0tY29uZmlybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tY29uZmlybWF0aW9uL2dlc2RlbS1jb25maXJtYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBTVIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FBRXBELE1BQU0sZ0JBQWdCLEdB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QztJQUN4RCxDQUFDO0lBRU8sUUFBUTtRQUNaLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7OEdBOVJRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGd4QkNsQ3hDLHFpTkErTEE7OzJGRDdKYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBRUkscUJBQXFCOytNQU8vQixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTiw0QkFBNEI7c0JBRDNCLEtBQUs7Z0JBS04sdUNBQXVDO3NCQUR0QyxLQUFLO2dCQUtOLDBCQUEwQjtzQkFEekIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2UsXG4gICAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEJyZWFkY3J1bWJFdmVudFNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1icmVhZGNydW1iL2JyZWFkY3J1bWItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tbmF2aWdhdGlvbi9mb2Vobi1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uU3RhdHV0LCBHZXNkZW1TdGF0dXRVdGlscyB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0tc3RhdHV0LXV0aWxzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UgfSBmcm9tICcuLi9zZGstYXBwaW5mby9hcHBsaWNhdGlvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0V2ZW50VHlwZSB9IGZyb20gJy4uL3Nkay1ldmVudHMtbG9nZ2VyL3Nkay1ldmVudC10eXBlJztcbmltcG9ydCB7IFNka0V2ZW50c0xvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi9zZGstZXZlbnRzLWxvZ2dlci9zZGstZXZlbnRzLWxvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlc3Npb25JbmZvIH0gZnJvbSAnLi4vc2RrLXNlc3Npb24taW5mby9zZXNzaW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uL3NlcnZpY2UtbG9jYXRvcic7XG5cbmNvbnN0IGlzQm9vbGVhbkRlZmluZWQgPSAodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuID0+XG4gICAgdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZ2VzZGVtLWNvbmZpcm1hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlc2RlbS1jb25maXJtYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEdlc2RlbUNvbmZpcm1hdGlvbkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlc1xue1xuICAgIEBJbnB1dCgpXG4gICAgcmVmZXJlbmNlOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldFBhZ2VUaXRsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGhhc0VtYWlsU2VudCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBjbG9zZUhyZWY6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgY2xvc2VIcmVmQ29ubmVjdGVkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dEb3dubG9hZFBkZlJlY2FwQnV0dG9uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2hvd0xpbmtUb015RGVtYW5kZXMgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBkZW1hbmRlSXNDbG9zZWRPblRyYW5zbWl0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvblN0YXR1dCA9IEFjdGlvblN0YXR1dC5UUkFOU0ZFUlJFRDtcblxuICAgIEBJbnB1dCgpXG4gICAgY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZSA9XG4gICAgICAgICdWb3VzIGF2ZXogZWZmZWN0dcOpIGxhIHByZW1pw6hyZSDDqXRhcGUgZGUgdm90cmUgZMOpbWFyY2hlIGF2ZWMgc3VjY8OocyAhJztcblxuICAgIEBJbnB1dCgpXG4gICAgY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZUlmQWJhbmRvbmVkID1cbiAgICAgICAgXCJMYSBkZW1hbmRlIMOgIGxhcXVlbGxlIHZvdXMgZXNzYXlleiBkJ2FjY8OpZGVyIGEgw6l0w6kgYWJhbmRvbm7DqWUuXCI7XG5cbiAgICBASW5wdXQoKVxuICAgIGRvd25sb2FkUGRmUmVjYXBCdXR0b25UZXh0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGNsb3NlQnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBjbG9zZUJ1dHRvbkNvbm5lY3RlZFRleHQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgYmFzZVVybFBkZiA9ICdhcGkvZG9jdW1lbnQvcGRmLyc7XG5cbiAgICBASW5wdXQoKVxuICAgIGhpZGVSZWZlcmVuY2UgPSBmYWxzZTtcblxuICAgIGlzQ29ubmVjdGVkQ3liZXI6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZmlyc3RQYWdlTGluayA9ICcvJztcbiAgICB1cmxQZGY6IHN0cmluZztcbiAgICBjbG9zZUxpbmtOb3RDb25uZWN0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgICBjbG9zZUxpbmtDb25uZWN0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4obnVsbCk7XG5cbiAgICBwcm90ZWN0ZWQgX2JyZWFkY3J1bWJFdmVudFNlcnZpY2U6IEJyZWFkY3J1bWJFdmVudFNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIF9mb2VoblBhZ2VTZXJ2aWNlOiBGb2VoblBhZ2VTZXJ2aWNlO1xuICAgIHByb3RlY3RlZCBfc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvO1xuICAgIHByb3RlY3RlZCBfbmF2aWdhdGlvbjogRm9laG5OYXZpZ2F0aW9uU2VydmljZTtcbiAgICBwcm90ZWN0ZWQgX2V2ZW50c0xvZ2dlclNlcnZpY2U6IFNka0V2ZW50c0xvZ2dlclNlcnZpY2U7XG4gICAgcHJvdGVjdGVkIF9hcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlO1xuXG4gICAgcHJpdmF0ZSBkYXRhU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZ2VzZGVtU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBmb2VoblBhZ2VTZXJ2aWNlOiBGb2VoblBhZ2VTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcm90ZWN0ZWQgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2JyZWFkY3J1bWJFdmVudFNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoXG4gICAgICAgICAgICBCcmVhZGNydW1iRXZlbnRTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2ZvZWhuUGFnZVNlcnZpY2UgPSBTZXJ2aWNlTG9jYXRvci5pbmplY3Rvci5nZXQoRm9laG5QYWdlU2VydmljZSk7XG4gICAgICAgIHRoaXMuX3Nlc3Npb25JbmZvID0gU2VydmljZUxvY2F0b3IuaW5qZWN0b3IuZ2V0KFNlc3Npb25JbmZvKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbiA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChGb2Vobk5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzTG9nZ2VyU2VydmljZSA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChcbiAgICAgICAgICAgIFNka0V2ZW50c0xvZ2dlclNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fYXBwbGljYXRpb25JbmZvU2VydmljZSA9IFNlcnZpY2VMb2NhdG9yLmluamVjdG9yLmdldChcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mb1NlcnZpY2VcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCByb3V0ZSA9IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UuZ2V0Um9vdFJvdXRlUmVjdXJzaXZlKFxuICAgICAgICAgICAgYWN0aXZhdGVkUm91dGUuc25hcHNob3RcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbi5pbml0Um91dGUocm91dGUpO1xuXG4gICAgICAgIC8vIE92ZXJyaWRlIGZyb20gdGhlIHJvdXRpbmcuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgdGhpcy5kYXRhU3Vic2NyaXB0aW9uID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJvdXRlRGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNFbWFpbFNlbnQgPSByb3V0ZURhdGEuaGFzRW1haWxTZW50IHx8IHRoaXMuaGFzRW1haWxTZW50O1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMaW5rTm90Q29ubmVjdGVkLm5leHQoXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5jbG9zZUhyZWYgfHwgdGhpcy5jbG9zZUxpbmtOb3RDb25uZWN0ZWQuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQubmV4dChcbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNsb3NlSHJlZkNvbm5lY3RlZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQuZ2V0VmFsdWUoKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGVkQ29uZmlybWF0aW9uTWVzc2FnZUlmQWJhbmRvbmVkID1cbiAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2VJZkFiYW5kb25lZCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2VJZkFiYW5kb25lZDtcbiAgICAgICAgICAgICAgICBpZiAoaXNCb29sZWFuRGVmaW5lZChyb3V0ZURhdGEuc2hvd0Rvd25sb2FkUGRmUmVjYXBCdXR0b24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Rvd25sb2FkUGRmUmVjYXBCdXR0b24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLnNob3dEb3dubG9hZFBkZlJlY2FwQnV0dG9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNCb29sZWFuRGVmaW5lZChyb3V0ZURhdGEuc2hvd0xpbmtUb015RGVtYW5kZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xpbmtUb015RGVtYW5kZXMgPSByb3V0ZURhdGEuc2hvd0xpbmtUb015RGVtYW5kZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5EZWZpbmVkKHJvdXRlRGF0YS5kZW1hbmRlSXNDbG9zZWRPblRyYW5zbWl0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlbWFuZGVJc0Nsb3NlZE9uVHJhbnNtaXQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVEYXRhLmRlbWFuZGVJc0Nsb3NlZE9uVHJhbnNtaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5EZWZpbmVkKHJvdXRlRGF0YS5oaWRlUmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVSZWZlcmVuY2UgPSByb3V0ZURhdGEuaGlkZVJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5kb3dubG9hZFBkZlJlY2FwQnV0dG9uVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25sb2FkUGRmUmVjYXBCdXR0b25UZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmRvd25sb2FkLXBkZi1yZWNhcC1idXR0b24nO1xuICAgICAgICAgICAgICAgIHRoaXMuYmFzZVVybFBkZiA9IHJvdXRlRGF0YS5iYXNlVXJsUGRmIHx8IHRoaXMuYmFzZVVybFBkZjtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlQnV0dG9uVGV4dCA9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlRGF0YS5jbG9zZUJ1dHRvblRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvblRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24uZXhpdC1idXR0b24nO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUJ1dHRvbkNvbm5lY3RlZFRleHQgPVxuICAgICAgICAgICAgICAgICAgICByb3V0ZURhdGEuY2xvc2VCdXR0b25Db25uZWN0ZWRUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VCdXR0b25Db25uZWN0ZWRUZXh0IHx8XG4gICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLmV4aXQtYnV0dG9uLWNvbm5lY3RlZCc7XG5cbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGNsb3NlTGluayBpZiBub3QgYnkgQElucHV0IGFuZCBub3QgYnkgcm91dGUgZGF0YVxuXG4gICAgICAgICAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5vbkV0YXBlSWRDaGFuZ2UoKS5waXBlKGZpcnN0KCkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmRhdGEucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcCgoW2V0YXBlSWQsIGFwcEluZm9dKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNsb3NlTGlua05vdENvbm5lY3RlZC5nZXRWYWx1ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VMaW5rTm90Q29ubmVjdGVkLm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHthcHBJbmZvLmNvbmZpZ3VyYXRpb24ucG9ydGFpbC5iYXNlVmRDaFVybH0vZ28udG8/cHJlc3RhdGlvbj0ke2V0YXBlSWR9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2xvc2VMaW5rQ29ubmVjdGVkLmdldFZhbHVlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUxpbmtDb25uZWN0ZWQubmV4dCgnLzEwMDAxOC9sb2dvdXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzL25vLW5lc3RlZC1zdWJzY3JpYmUscnhqcy1hbmd1bGFyL3ByZWZlci1hc3luYy1waXBlLHJ4anMvbm8tbmVzdGVkLXN1YnNjcmliZVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlzVHJhbnNmZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmFjdGlvblN0YXR1dCAmJiB0aGlzLmFjdGlvblN0YXR1dCA9PT0gQWN0aW9uU3RhdHV0LlRSQU5TRkVSUkVEXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGlzQWJhbmRvbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5hY3Rpb25TdGF0dXQgJiYgdGhpcy5hY3Rpb25TdGF0dXQgPT09IEFjdGlvblN0YXR1dC5BQkFORE9ORURcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaXNJblByb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIUdlc2RlbVN0YXR1dFV0aWxzLmlzRmluYWwodGhpcy5hY3Rpb25TdGF0dXQpO1xuICAgIH1cblxuICAgIGdldCBzdWNjZXNzTGFiZWxEaWNvS2V5KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGlzRmlyc3RBY3Rpb24gPVxuICAgICAgICAgICAgdGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZT8ubWV0YT8uY3VycmVudEFjdGlvbiA9PT0gMTtcbiAgICAgICAgcmV0dXJuIGlzRmlyc3RBY3Rpb25cbiAgICAgICAgICAgID8gJ2dlc2RlbS1jb25maXJtYXRpb24uc3VjY2Vzcy1sYWJlbCdcbiAgICAgICAgICAgIDogJ2dlc2RlbS1jb25maXJtYXRpb24ubmV4dC1zdGVwLnN1Y2Nlc3MtbGFiZWwnO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hhbmdlTm90Q29ubmVjdGVkOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmNsb3NlSHJlZjtcbiAgICAgICAgaWYgKGNoYW5nZU5vdENvbm5lY3RlZCAmJiBjaGFuZ2VOb3RDb25uZWN0ZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTGlua05vdENvbm5lY3RlZC5uZXh0KGNoYW5nZU5vdENvbm5lY3RlZC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hhbmdlQ29ubmVjdGVkOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmNsb3NlSHJlZkNvbm5lY3RlZDtcbiAgICAgICAgaWYgKGNoYW5nZUNvbm5lY3RlZCAmJiBjaGFuZ2VDb25uZWN0ZWQuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTGlua0Nvbm5lY3RlZC5uZXh0KGNoYW5nZUNvbm5lY3RlZC5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ290VG9Ub3AoKTtcbiAgICAgICAgY29uc3QgbGFzdFJlc3BvbnNlID0gdGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZTtcbiAgICAgICAgaWYgKGxhc3RSZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSBsYXN0UmVzcG9uc2UubWV0YS5yZWZlcmVuY2U7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblN0YXR1dCA9XG4gICAgICAgICAgICAgICAgQWN0aW9uU3RhdHV0W2xhc3RSZXNwb25zZS5tZXRhLnN0YXR1dCBhcyBBY3Rpb25TdGF0dXRdO1xuICAgICAgICAgICAgdGhpcy51cmxQZGYgPSB0aGlzLmJhc2VVcmxQZGYgKyB0aGlzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBY3Rpb24gPSBsYXN0UmVzcG9uc2UubWV0YS5jdXJyZW50QWN0aW9uO1xuICAgICAgICAgICAgaWYgKCEhY3VycmVudEFjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMudXJsUGRmICs9IGAtJHtjdXJyZW50QWN0aW9ufWA7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9jYXRpb24ucGF0aCgpLmluY2x1ZGVzKGAvJHt0aGlzLnJlZmVyZW5jZX0vYCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVsbFJlZmVyZW5jZVVybCA9IHRoaXMubG9jYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIC5wYXRoKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMucmVmZXJlbmNlfS0ke2N1cnJlbnRBY3Rpb259YFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUoZnVsbFJlZmVyZW5jZVVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsYW5ndWFnZUNvZGUgPSBsYXN0UmVzcG9uc2UuZm9ybS5sYW5ndWFnZTtcbiAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuY2hhbmdlTGFuZ3VhZ2UobGFuZ3VhZ2VDb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdoZXRoZXIgdGhlIHVzZXIgaGFzIGEgY29udGV4dCB3ZSBjb25zaWRlciBpdCBhcyBjb25uZWN0ZWQuXG4gICAgICAgIHRoaXMuaXNDb25uZWN0ZWRDeWJlciA9IHRoaXMuX3Nlc3Npb25JbmZvLmRhdGEucGlwZShcbiAgICAgICAgICAgIG1hcCh1c2VySW5mbyA9PiAhIXVzZXJJbmZvICYmICEhdXNlckluZm8uY29udGV4dClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5zZXRQYWdlVGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZVRpdGxlU3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZVxuICAgICAgICAgICAgICAgIC5nZXRLZXkoJ2dlc2RlbS1jb25maXJtYXRpb24udGl0bGUnKVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRpdGxlID0+IHRoaXMuX2ZvZWhuUGFnZVNlcnZpY2Uuc2V0UGFnZVRpdGxlKHRpdGxlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpcnN0UGFnZUxpbmsgPSB0aGlzLmdldEZpcnN0UGFnZUxpbmsoKTtcblxuICAgICAgICB0aGlzLl9icmVhZGNydW1iRXZlbnRTZXJ2aWNlLnNraXBMZWF2aW5nQWxlcnRCZWNhdXNlRGVtYW5kSXNUcmFuc21pdHRlZCA9XG4gICAgICAgICAgICB0cnVlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYWdlVGl0bGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMucGFnZVRpdGxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDb25uZWN0ZWRDb250ZW50KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBoYXNDb25mTWVzc2FnZSA9XG4gICAgICAgICAgICB0aGlzLmlzVHJhbnNmZXJyZWQgJiYgISF0aGlzLmNvbm5lY3RlZENvbmZpcm1hdGlvbk1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IGhhc0FiYW5kb25lZENvbmZNZXNzYWdlID1cbiAgICAgICAgICAgICF0aGlzLmlzVHJhbnNmZXJyZWQgJiZcbiAgICAgICAgICAgICEhdGhpcy5jb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlSWZBYmFuZG9uZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGhhc0NvbmZNZXNzYWdlIHx8XG4gICAgICAgICAgICBoYXNBYmFuZG9uZWRDb25mTWVzc2FnZSB8fFxuICAgICAgICAgICAgISF0aGlzLnNob3dMaW5rVG9NeURlbWFuZGVzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbG9nUGRmRG93bmxvYWRlZEV2ZW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ldmVudHNMb2dnZXJTZXJ2aWNlLmFkZEV2ZW50KFNka0V2ZW50VHlwZS5QREZfUkVDQVBfRE9XTkxPQUQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rmlyc3RQYWdlTGluaygpOiBzdHJpbmcge1xuICAgICAgICBsZXQgbGluayA9ICcvJztcbiAgICAgICAgY29uc3QgZmlyc3RQYWdlID0gdGhpcy5fbmF2aWdhdGlvbi5nZXRGaXJzdFJvdXRlKCk7XG4gICAgICAgIGlmICh0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4KSB7XG4gICAgICAgICAgICBsaW5rICs9IGAke3RoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXh9L2A7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7bGluayArIHRoaXMucmVmZXJlbmNlfS8ke2ZpcnN0UGFnZS5wYXRofWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb3RUb1RvcCgpOiB2b2lkIHtcbiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXIgbXQtNVwiICpuZ0lmPVwicmVmZXJlbmNlICYmICFpc0luUHJvZ3Jlc3NcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYWxlcnQgdGV4dC1jZW50ZXIgbWItMlwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzVHJhbnNmZXJyZWQgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgPlxuICAgICAgICA8cCBjbGFzcz1cImgyXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGlzVHJhbnNmZXJyZWRcbiAgICAgICAgICAgICAgICAgICAgPyAoc3VjY2Vzc0xhYmVsRGljb0tleSB8IGZyb21EaWN0aW9uYXJ5KVxuICAgICAgICAgICAgICAgICAgICA6ICgnZ2VzZGVtLWNvbmZpcm1hdGlvbi5hYm9ydC1sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSlcbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRsICpuZ0lmPVwiIWhpZGVSZWZlcmVuY2VcIj5cbiAgICAgICAgICAgIDxkdCBjbGFzcz1cImZ3LWxpZ2h0XCI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24ucmVmZXJlbmNlLXRpdGxlLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZHQ+XG4gICAgICAgICAgICA8ZGQgaWQ9XCJudW1EZW1hbmRlXCIgY2xhc3M9XCJoNCBkLWJsb2NrIG10LTNcIj57eyByZWZlcmVuY2UgfX08L2RkPlxuICAgICAgICA8L2RsPlxuICAgICAgICA8cCAqbmdJZj1cImhhc0VtYWlsU2VudCAmJiAhKGlzQ29ubmVjdGVkQ3liZXIgfCBhc3luYylcIj5cbiAgICAgICAgICAgIHt7ICdnZXNkZW0tY29uZmlybWF0aW9uLm1haWwtc2VudC5sYWJlbCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhblxuICAgICAgICBbaW5uZXJIVE1MXT1cIidnZXNkZW0tY29uZmlybWF0aW9uLmV4dHJhLWNvbnRlbnQnIHwgZnJvbURpY3Rpb25hcnlcIlxuICAgID48L3NwYW4+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29sLW1kLTEyIHZkLWhpZ2hsaWdodCBoaWdobGlnaHQtZGFya1wiXG4gICAgICAgICpuZ0lmPVwiKGlzQ29ubmVjdGVkQ3liZXIgfCBhc3luYykgJiYgaGFzQ29ubmVjdGVkQ29udGVudCgpXCJcbiAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnRyYW5zbWlzc2lvbi1pbmZvcm1hdGlvbi5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24taW5mby1jaXJjbGUgY2xhc3M9XCJoM1wiPjwvZm9laG4taWNvbi1pbmZvLWNpcmNsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMVwiPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RyYW5zZmVycmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb25uZWN0ZWRDb25maXJtYXRpb25NZXNzYWdlSWZBYmFuZG9uZWRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+PC9wPlxuICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgIGlkPVwibGlua1RvVHJlYXRlZERlbWFuZGVzXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMaW5rVG9NeURlbWFuZGVzICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGVtYW5kZUlzQ2xvc2VkT25UcmFuc21pdCB8fCBpc0FiYW5kb25lZClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5kZW1hbmQtZGV0YWlsLWxpbmsubGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi8xMDAwMDIvZGVtYW5kZXMve3sgcmVmZXJlbmNlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1kZW1hbmQtZGV0YWlsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHJlZmVyZW5jZTogcmVmZXJlbmNlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJlZmVyZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2E+XG4gICAgICAgICAgICAgICAgICAgIC5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJsaW5rVG9JblByb2dyZXNzRGVtYW5kZXNcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xpbmtUb015RGVtYW5kZXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFkZW1hbmRlSXNDbG9zZWRPblRyYW5zbWl0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhaXNBYmFuZG9uZWRcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5kZW1hbmQtcHJvY2Vzc2luZy1wcm9ncmVzcy1saW5rLmxhYmVsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvMTAwMDAyL2RlbWFuZGVzL3t7IHJlZmVyZW5jZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tZGVtYW5kLWRldGFpbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeTogeyByZWZlcmVuY2U6IHJlZmVyZW5jZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyZWZlcmVuY2VcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hPlxuICAgICAgICAgICAgICAgICAgICAuXG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBsaXN0LXVuc3R5bGVkIGQtbWQtZmxleCBwLTAgbXQtNFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXMtMCBtZS1tZC1hdXRvIG1lLW1kLTIgbWItMiBtdC0yXCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Rvd25sb2FkUGRmUmVjYXBCdXR0b25cIlxuICAgICAgICAgICAgICAgIFtocmVmXT1cInVybFBkZlwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImxvZ1BkZkRvd25sb2FkZWRFdmVudCgpXCJcbiAgICAgICAgICAgICAgICBpZD1cInRlbGVjaGFyZ2VyQnRuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHctMTAwXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLmRvd25sb2FkLXBkZi5idXR0b24udGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGRvd25sb2FkUGRmUmVjYXBCdXR0b25UZXh0IHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtZS0wIG1zLW1kLWF1dG8gbWItMiBtdC0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIShpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpICYmIGNsb3NlTGlua05vdENvbm5lY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IGFzeW5jIGFzIGxpbmtcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhIFtocmVmXT1cImxpbmtcIiBpZD1cInRlcm1pbmVyQnRuXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICB7eyBjbG9zZUJ1dHRvblRleHQgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1lLTAgbXMtbWQtYXV0byBtYi0yIG10LTJcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAhIShpc0Nvbm5lY3RlZEN5YmVyIHwgYXN5bmMpICYmIGNsb3NlTGlua0Nvbm5lY3RlZFxuICAgICAgICAgICAgICAgICAgICB8IGFzeW5jIGFzIGxpbmtcbiAgICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwibGlua1wiXG4gICAgICAgICAgICAgICAgaWQ9XCJ0ZXJtaW5lckNvbm5lY3RlZEJ0blwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNsb3NlQnV0dG9uQ29ubmVjdGVkVGV4dCB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXIgbXQtNVwiICpuZ0lmPVwiIWhpZGVSZWZlcmVuY2UgJiYgcmVmZXJlbmNlICYmIGlzSW5Qcm9ncmVzc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIHRleHQtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiaDJcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAnZ2VzZGVtLWNvbmZpcm1hdGlvbi5kZW1hbmQtaW4tcHJvZ3Jlc3MudGl0bGUnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L3A+XG4gICAgICAgIDxkbD5cbiAgICAgICAgICAgIDxkdCBjbGFzcz1cImZ3LWxpZ2h0XCI+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24ucmVmZXJlbmNlLXRpdGxlLmxhYmVsJyB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvZHQ+XG4gICAgICAgICAgICA8ZGQgaWQ9XCJudW1EZW1hbmRlRW5Db3Vyc1wiIGNsYXNzPVwiaDQgZC1ibG9jayBtdC0zXCI+XG4gICAgICAgICAgICAgICAge3sgcmVmZXJlbmNlIH19XG4gICAgICAgICAgICA8L2RkPlxuICAgICAgICA8L2RsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiB2ZC1oaWdobGlnaHQgaGlnaGxpZ2h0LWRhcmtcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XG4gICAgICAgICAgICAgICAgPGZvZWhuLWljb24taW5mby1jaXJjbGUgY2xhc3M9XCJoM1wiPjwvZm9laG4taWNvbi1pbmZvLWNpcmNsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMVwiPlxuICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1jb25maXJtYXRpb24ucmVzdW1lLW15LWRlbWFuZC5sYWJlbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJmaXJzdFBhZ2VMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXNkZW0tY29uZmlybWF0aW9uLnJlc3VtZS1teS1kZW1hbmQuYnV0dG9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -6,17 +6,17 @@ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
6
6
  import { GesdemConfirmationComponent } from './gesdem-confirmation.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class GesdemConfirmationModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationModule, declarations: [GesdemConfirmationComponent], imports: [CommonModule,
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationModule, declarations: [GesdemConfirmationComponent], imports: [CommonModule,
11
11
  FoehnIconsModule,
12
12
  RouterModule,
13
13
  SdkDictionaryModule], exports: [GesdemConfirmationComponent] }); }
14
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationModule, imports: [CommonModule,
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationModule, imports: [CommonModule,
15
15
  FoehnIconsModule,
16
16
  RouterModule,
17
17
  SdkDictionaryModule] }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemConfirmationModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemConfirmationModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [
@@ -2,7 +2,7 @@ import { Component, Input } from '@angular/core';
2
2
  import { of } from 'rxjs';
3
3
  import { catchError, map, tap } from 'rxjs/operators';
4
4
  import { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';
5
- import { SESSION_EXPIRED } from '../gesdem/gesdem-error-handler.service';
5
+ import { DEMANDE_SHOULD_EXIST, SESSION_EXPIRED } from '../gesdem/gesdem-error-handler.service';
6
6
  import { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';
7
7
  import { DemandeHelper } from '../helpers/demande.helper';
8
8
  import * as i0 from "@angular/core";
@@ -28,6 +28,7 @@ export class GesdemErrorComponent {
28
28
  this.applicationInfoService = applicationInfoService;
29
29
  this.setPageTitle = true;
30
30
  this.hasSessionExpired = false;
31
+ this.demandeShouldExist = false;
31
32
  const route = FoehnNavigationService.getRootRouteRecursive(activatedRoute.snapshot);
32
33
  navigation.initRoute(route);
33
34
  this.link = this.getBasePath();
@@ -57,6 +58,7 @@ export class GesdemErrorComponent {
57
58
  this.link += `${this.reference}/${firstPage.path}`;
58
59
  const errorCode = this.activatedRoute.snapshot.queryParamMap.get('errorCode');
59
60
  this.hasSessionExpired = errorCode === SESSION_EXPIRED;
61
+ this.demandeShouldExist = errorCode === DEMANDE_SHOULD_EXIST;
60
62
  }
61
63
  // The error might have been caused by an issue with the prestation that has been identified
62
64
  // whilst the user is using the prestation. This ensures that if any alert is added by the
@@ -78,13 +80,13 @@ export class GesdemErrorComponent {
78
80
  }
79
81
  return '/';
80
82
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FoehnNavigationService }, { token: i3.GesdemHandlerService }, { token: i4.GesdemEventService }, { token: i5.FoehnPageService }, { token: i6.SupportAlertService }, { token: i7.ApplicationInfoService }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n", dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }, { kind: "component", type: i10.FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.SdkDictionaryPipe, name: "fromDictionary" }] }); }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FoehnNavigationService }, { token: i3.GesdemHandlerService }, { token: i4.GesdemEventService }, { token: i5.FoehnPageService }, { token: i6.SupportAlertService }, { token: i7.ApplicationInfoService }], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <ng-container\n *ngIf=\"\n !demandeShouldExist;\n else demandeShouldExistTemplate\n \"\n >\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n\n<ng-template #demandeShouldExistTemplate>\n <p\n class=\"card-text vd-card-text\"\n [innerHTML]=\"'gesdem-error.demande-should-exist' | fromDictionary\"\n ></p>\n <ul class=\"vd-list-links\">\n <li>\n <a\n [href]=\"link\"\n [innerHTML]=\"\n 'gesdem-error.link.has-no-reference' | fromDictionary\n \"\n ></a>\n </li>\n </ul>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }, { kind: "component", type: i10.FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.SdkDictionaryPipe, name: "fromDictionary" }] }); }
83
85
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorComponent, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorComponent, decorators: [{
85
87
  type: Component,
86
- args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n" }]
88
+ args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <ng-container\n *ngIf=\"\n !demandeShouldExist;\n else demandeShouldExistTemplate\n \"\n >\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n\n<ng-template #demandeShouldExistTemplate>\n <p\n class=\"card-text vd-card-text\"\n [innerHTML]=\"'gesdem-error.demande-should-exist' | fromDictionary\"\n ></p>\n <ul class=\"vd-list-links\">\n <li>\n <a\n [href]=\"link\"\n [innerHTML]=\"\n 'gesdem-error.link.has-no-reference' | fromDictionary\n \"\n ></a>\n </li>\n </ul>\n</ng-template>\n" }]
87
89
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.FoehnNavigationService }, { type: i3.GesdemHandlerService }, { type: i4.GesdemEventService }, { type: i5.FoehnPageService }, { type: i6.SupportAlertService }, { type: i7.ApplicationInfoService }], propDecorators: { setPageTitle: [{
88
90
  type: Input
89
91
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTMUQsTUFBTSxPQUFPLG9CQUFvQjtJQVU3QixZQUNZLGNBQThCLEVBQzlCLFVBQWtDLEVBQ2xDLGFBQW1DLEVBQ25DLGtCQUFzQyxFQUN0QyxnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLHNCQUE4QztRQU45QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx3QkFBbUIsR0FBbkIsbUJB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LENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs4R0F4RlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsOEZDcEJqQyw0dEVBb0RBOzsyRkRoQ2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUVJLGNBQWM7a1NBS3hCLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5OYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLW5hdmlnYXRpb24vZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuUGFnZVNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTRVNTSU9OX0VYUElSRUQgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25TdGF0dXQsIEdlc2RlbVN0YXR1dFV0aWxzIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1zdGF0dXQtdXRpbHMnO1xuaW1wb3J0IHsgRGVtYW5kZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvZGVtYW5kZS5oZWxwZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1lcnJvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlc2RlbS1lcnJvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2VzZGVtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0UGFnZVRpdGxlID0gdHJ1ZTtcblxuICAgIGxpbms6IHN0cmluZztcbiAgICByZWZlcmVuY2U6IHN0cmluZztcbiAgICBzdXBwb3J0TGluazogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGhhc1Nlc3Npb25FeHBpcmVkID0gZmFsc2U7XG4gICAgaXNQZW5kaW5nUGF5bWVudDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gRm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRSb290Um91dGVSZWN1cnNpdmUoXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxuICAgICAgICApO1xuICAgICAgICBuYXZpZ2F0aW9uLmluaXRSb3V0ZShyb3V0ZSk7XG4gICAgICAgIHRoaXMubGluayA9IHRoaXMuZ2V0QmFzZVBhdGgoKTtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPVxuICAgICAgICAgICAgRGVtYW5kZUhlbHBlci5nZXRTYWZlUmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zLnJlZmVyZW5jZVxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgRGVtYW5kZUhlbHBlci5nZXRTYWZlUmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGE/LnJlZmVyZW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdXBwb3J0TGluayA9IHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5nZXRTYWZlU3VwcG9ydEZvcm1VcmwoXG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVxuICAgICAgICApO1xuICAgICAgICBpZiAoIXRoaXMucmVmZXJlbmNlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nUGF5bWVudCA9IG9mKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nUGF5bWVudCA9IHRoaXMuZ2VzZGVtU2VydmljZVxuICAgICAgICAgICAgICAgIC5yZXRyaWV2ZUFjdGlvblN0YXR1dCh0aGlzLnJlZmVyZW5jZSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKHN0YXR1dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2VzZGVtU3RhdHV0VXRpbHMuaXNGaW5hbChzdGF0dXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmxhc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG1hcChzdGF0dXQgPT4gc3RhdHV0ID09PSBBY3Rpb25TdGF0dXQuUEVORElOR19QQVlNRU5UKSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IHRoaXMuZ2V0Rmlyc3RQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGluayArPSBgJHt0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4fS9gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxpbmsgKz0gYCR7dGhpcy5yZWZlcmVuY2V9LyR7Zmlyc3RQYWdlLnBhdGh9YDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQ29kZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZXJyb3JDb2RlJyk7XG4gICAgICAgICAgICB0aGlzLmhhc1Nlc3Npb25FeHBpcmVkID0gZXJyb3JDb2RlID09PSBTRVNTSU9OX0VYUElSRUQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZXJyb3IgbWlnaHQgaGF2ZSBiZWVuIGNhdXNlZCBieSBhbiBpc3N1ZSB3aXRoIHRoZSBwcmVzdGF0aW9uIHRoYXQgaGFzIGJlZW4gaWRlbnRpZmllZFxuICAgICAgICAvLyB3aGlsc3QgdGhlIHVzZXIgaXMgdXNpbmcgdGhlIHByZXN0YXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGlmIGFueSBhbGVydCBpcyBhZGRlZCBieSB0aGVcbiAgICAgICAgLy8gYWRtaW5pc3RyYXRvciwgdGhlIHVzZXIgd2lsbCBhdCBsZWFzdCBzZWUgdGhlbSBpZiBhbiBlcnJvciBpcyBzaG93bi5cbiAgICAgICAgdGhpcy5zdXBwb3J0QWxlcnRTZXJ2aWNlLnJlZnJlc2hBbGVydHMoKTtcblxuICAgICAgICBpZiAodGhpcy5zZXRQYWdlVGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRQYWdlVGl0bGUoXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNTZXNzaW9uRXhwaXJlZFxuICAgICAgICAgICAgICAgICAgICA/ICdSZXByaXNlIGRlIGxhIGRlbWFuZGUnXG4gICAgICAgICAgICAgICAgICAgIDogJ0VycmV1ciByZW5jb250csOpZSdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpcnN0UGFnZSgpOiBSb3V0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb24uZ2V0Rmlyc3RSb3V0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJyk7XG4gICAgICAgIGlmIChiYXNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VbMF0uaHJlZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy8nO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2ZC1jYXJkIG1iLTNcIiAqbmdJZj1cIiFoYXNTZXNzaW9uRXhwaXJlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy04XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzUGVuZGluZ1BheW1lbnQgfCBhc3luYykgPT09IHRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLXRleHQgdmQtY2FyZC10ZXh0IGFsZXJ0IGFsZXJ0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1lcnJvci50ZXh0LnBlbmRpbmctcGF5bWVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TGluazogKHN1cHBvcnRMaW5rIHwgYXN5bmMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzUGVuZGluZ1BheW1lbnQgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtdGV4dCB2ZC1jYXJkLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISFyZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2dlc2RlbS1lcnJvci50ZXh0Lmhhcy1yZWZlcmVuY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdnZXNkZW0tZXJyb3IudGV4dC5oYXMtbm8tcmVmZXJlbmNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmQtbGlzdC1saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibGlua1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISFyZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZ2VzZGVtLWVycm9yLmxpbmsuaGFzLXJlZmVyZW5jZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZ2VzZGVtLWVycm9yLmxpbmsuaGFzLW5vLXJlZmVyZW5jZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWRlYnVnLXN1bW1hcnk+PC9mb2Vobi1kZWJ1Zy1zdW1tYXJ5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luXG4gICAgKm5nSWY9XCJoYXNTZXNzaW9uRXhwaXJlZFwiXG4gICAgW3JlZmVyZW5jZV09XCJyZWZlcmVuY2VcIlxuICAgIFtyZWRpcmVjdFRhcmdldF09XCJsaW5rXCJcbj48L2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4+XG4iXX0=
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFdEYsT0FBTyxFQUNILG9CQUFvQixFQUNwQixlQUFlLEVBQ2xCLE1BQU0sd0NBQXdDLENBQUM7QUFHaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8sb0JBQW9CO0lBVzdCLFlBQ1ksY0FBOEIsRUFDOUIsVUFBa0MsRUFDbEMsYUFBbUMsRUFDbkMsa0JBQXNDLEVBQ3RDLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsc0JBQThDO1FBTjlDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdC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LENBQzVCLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyxXQUFXO1FBQ2YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs4R0ExRlEsb0JBQW9CO2tHQUFwQixvQkFBb0IsOEZDdkJqQyx5aUdBNEVBOzsyRkRyRGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUVJLGNBQWM7a1NBS3hCLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRm9laG5OYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLW5hdmlnYXRpb24vZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuUGFnZVNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQge1xuICAgIERFTUFOREVfU0hPVUxEX0VYSVNULFxuICAgIFNFU1NJT05fRVhQSVJFRFxufSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWVycm9yLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBY3Rpb25TdGF0dXQsIEdlc2RlbVN0YXR1dFV0aWxzIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1zdGF0dXQtdXRpbHMnO1xuaW1wb3J0IHsgRGVtYW5kZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvZGVtYW5kZS5oZWxwZXInO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1lcnJvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlc2RlbS1lcnJvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2VzZGVtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0UGFnZVRpdGxlID0gdHJ1ZTtcblxuICAgIGxpbms6IHN0cmluZztcbiAgICByZWZlcmVuY2U6IHN0cmluZztcbiAgICBzdXBwb3J0TGluazogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGhhc1Nlc3Npb25FeHBpcmVkID0gZmFsc2U7XG4gICAgZGVtYW5kZVNob3VsZEV4aXN0ID0gZmFsc2U7XG4gICAgaXNQZW5kaW5nUGF5bWVudDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gRm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRSb290Um91dGVSZWN1cnNpdmUoXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxuICAgICAgICApO1xuICAgICAgICBuYXZpZ2F0aW9uLmluaXRSb3V0ZShyb3V0ZSk7XG4gICAgICAgIHRoaXMubGluayA9IHRoaXMuZ2V0QmFzZVBhdGgoKTtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPVxuICAgICAgICAgICAgRGVtYW5kZUhlbHBlci5nZXRTYWZlUmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zLnJlZmVyZW5jZVxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgRGVtYW5kZUhlbHBlci5nZXRTYWZlUmVmZXJlbmNlKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5sYXN0UmVzcG9uc2U/Lm1ldGE/LnJlZmVyZW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdXBwb3J0TGluayA9IHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5nZXRTYWZlU3VwcG9ydEZvcm1VcmwoXG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZVxuICAgICAgICApO1xuICAgICAgICBpZiAoIXRoaXMucmVmZXJlbmNlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nUGF5bWVudCA9IG9mKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNQZW5kaW5nUGF5bWVudCA9IHRoaXMuZ2VzZGVtU2VydmljZVxuICAgICAgICAgICAgICAgIC5yZXRyaWV2ZUFjdGlvblN0YXR1dCh0aGlzLnJlZmVyZW5jZSlcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgdGFwKHN0YXR1dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR2VzZGVtU3RhdHV0VXRpbHMuaXNGaW5hbChzdGF0dXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmxhc3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIG1hcChzdGF0dXQgPT4gc3RhdHV0ID09PSBBY3Rpb25TdGF0dXQuUEVORElOR19QQVlNRU5UKSxcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IHRoaXMuZ2V0Rmlyc3RQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCkge1xuICAgICAgICAgICAgICAgIHRoaXMubGluayArPSBgJHt0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4fS9gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxpbmsgKz0gYCR7dGhpcy5yZWZlcmVuY2V9LyR7Zmlyc3RQYWdlLnBhdGh9YDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yQ29kZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldCgnZXJyb3JDb2RlJyk7XG4gICAgICAgICAgICB0aGlzLmhhc1Nlc3Npb25FeHBpcmVkID0gZXJyb3JDb2RlID09PSBTRVNTSU9OX0VYUElSRUQ7XG4gICAgICAgICAgICB0aGlzLmRlbWFuZGVTaG91bGRFeGlzdCA9IGVycm9yQ29kZSA9PT0gREVNQU5ERV9TSE9VTERfRVhJU1Q7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZXJyb3IgbWlnaHQgaGF2ZSBiZWVuIGNhdXNlZCBieSBhbiBpc3N1ZSB3aXRoIHRoZSBwcmVzdGF0aW9uIHRoYXQgaGFzIGJlZW4gaWRlbnRpZmllZFxuICAgICAgICAvLyB3aGlsc3QgdGhlIHVzZXIgaXMgdXNpbmcgdGhlIHByZXN0YXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGlmIGFueSBhbGVydCBpcyBhZGRlZCBieSB0aGVcbiAgICAgICAgLy8gYWRtaW5pc3RyYXRvciwgdGhlIHVzZXIgd2lsbCBhdCBsZWFzdCBzZWUgdGhlbSBpZiBhbiBlcnJvciBpcyBzaG93bi5cbiAgICAgICAgdGhpcy5zdXBwb3J0QWxlcnRTZXJ2aWNlLnJlZnJlc2hBbGVydHMoKTtcblxuICAgICAgICBpZiAodGhpcy5zZXRQYWdlVGl0bGUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRQYWdlVGl0bGUoXG4gICAgICAgICAgICAgICAgdGhpcy5oYXNTZXNzaW9uRXhwaXJlZFxuICAgICAgICAgICAgICAgICAgICA/ICdSZXByaXNlIGRlIGxhIGRlbWFuZGUnXG4gICAgICAgICAgICAgICAgICAgIDogJ0VycmV1ciByZW5jb250csOpZSdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpcnN0UGFnZSgpOiBSb3V0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb24uZ2V0Rmlyc3RSb3V0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJyk7XG4gICAgICAgIGlmIChiYXNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2VbMF0uaHJlZjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy8nO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2ZC1jYXJkIG1iLTNcIiAqbmdJZj1cIiFoYXNTZXNzaW9uRXhwaXJlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy04XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzUGVuZGluZ1BheW1lbnQgfCBhc3luYykgPT09IHRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXJkLXRleHQgdmQtY2FyZC10ZXh0IGFsZXJ0IGFsZXJ0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1lcnJvci50ZXh0LnBlbmRpbmctcGF5bWVudCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0TGluazogKHN1cHBvcnRMaW5rIHwgYXN5bmMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzUGVuZGluZ1BheW1lbnQgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlbWFuZGVTaG91bGRFeGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZW1hbmRlU2hvdWxkRXhpc3RUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRleHQgdmQtY2FyZC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoISFyZWZlcmVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdnZXNkZW0tZXJyb3IudGV4dC5oYXMtcmVmZXJlbmNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2dlc2RlbS1lcnJvci50ZXh0Lmhhcy1uby1yZWZlcmVuY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmQtbGlzdC1saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJsaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdnZXNkZW0tZXJyb3IubGluay5oYXMtcmVmZXJlbmNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZ2VzZGVtLWVycm9yLmxpbmsuaGFzLW5vLXJlZmVyZW5jZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1kZWJ1Zy1zdW1tYXJ5PjwvZm9laG4tZGVidWctc3VtbWFyeT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48Z2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1sb2dpblxuICAgICpuZ0lmPVwiaGFzU2Vzc2lvbkV4cGlyZWRcIlxuICAgIFtyZWZlcmVuY2VdPVwicmVmZXJlbmNlXCJcbiAgICBbcmVkaXJlY3RUYXJnZXRdPVwibGlua1wiXG4+PC9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luPlxuXG48bmctdGVtcGxhdGUgI2RlbWFuZGVTaG91bGRFeGlzdFRlbXBsYXRlPlxuICAgIDxwXG4gICAgICAgIGNsYXNzPVwiY2FyZC10ZXh0IHZkLWNhcmQtdGV4dFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiJ2dlc2RlbS1lcnJvci5kZW1hbmRlLXNob3VsZC1leGlzdCcgfCBmcm9tRGljdGlvbmFyeVwiXG4gICAgPjwvcD5cbiAgICA8dWwgY2xhc3M9XCJ2ZC1saXN0LWxpbmtzXCI+XG4gICAgICAgIDxsaT5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW2hyZWZdPVwibGlua1wiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgICAgICAgJ2dlc2RlbS1lcnJvci5saW5rLmhhcy1uby1yZWZlcmVuY2UnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -7,19 +7,19 @@ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
7
7
  import { GesdemErrorComponent } from './gesdem-error.component';
8
8
  import * as i0 from "@angular/core";
9
9
  export class GesdemErrorModule {
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorModule, declarations: [GesdemErrorComponent], imports: [CommonModule,
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorModule, declarations: [GesdemErrorComponent], imports: [CommonModule,
12
12
  RouterModule,
13
13
  GesdemActionRecoveryModule,
14
14
  FoehnDebugSummaryComponentModule,
15
15
  SdkDictionaryModule], exports: [GesdemErrorComponent] }); }
16
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorModule, imports: [CommonModule,
16
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorModule, imports: [CommonModule,
17
17
  RouterModule,
18
18
  GesdemActionRecoveryModule,
19
19
  FoehnDebugSummaryComponentModule,
20
20
  SdkDictionaryModule] }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: GesdemErrorModule, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GesdemErrorModule, decorators: [{
23
23
  type: NgModule,
24
24
  args: [{
25
25
  imports: [
@@ -8,10 +8,10 @@ export class DisplayCurrencyPipe {
8
8
  transform(value, currency = 'CHF', fixedDecimalCount = null, showZero = true) {
9
9
  return this.currencyHelper.formatCurrency(value, currency, fixedDecimalCount, showZero);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DisplayCurrencyPipe, deps: [{ token: i1.CurrencyHelper }], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DisplayCurrencyPipe, name: "displayCurrency" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DisplayCurrencyPipe, deps: [{ token: i1.CurrencyHelper }], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: DisplayCurrencyPipe, name: "displayCurrency" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DisplayCurrencyPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DisplayCurrencyPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{ name: 'displayCurrency' }]
17
17
  }], ctorParameters: () => [{ type: i1.CurrencyHelper }] });
@@ -33,10 +33,10 @@ export class DisplayDatePipe {
33
33
  }
34
34
  return date.toLocaleString(DATE_LOCALE);
35
35
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DisplayDatePipe, deps: [{ token: i1.DateHelper }], target: i0.ɵɵFactoryTarget.Pipe }); }
37
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: DisplayDatePipe, name: "displayDate" }); }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DisplayDatePipe, deps: [{ token: i1.DateHelper }], target: i0.ɵɵFactoryTarget.Pipe }); }
37
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: DisplayDatePipe, name: "displayDate" }); }
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: DisplayDatePipe, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DisplayDatePipe, decorators: [{
40
40
  type: Pipe,
41
41
  args: [{ name: 'displayDate' }]
42
42
  }], ctorParameters: () => [{ type: i1.DateHelper }] });
@@ -12,10 +12,10 @@ export class FormatIdePipe {
12
12
  }
13
13
  return `${trimmedValue.substring(0, 3)}-${trimmedValue.substring(3, 6)}.${trimmedValue.substring(6, 9)}.${trimmedValue.substring(9, 12)}`;
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormatIdePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
16
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: FormatIdePipe, name: "formatIde" }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormatIdePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
16
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: FormatIdePipe, name: "formatIde" }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: FormatIdePipe, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormatIdePipe, decorators: [{
19
19
  type: Pipe,
20
20
  args: [{ name: 'formatIde' }]
21
21
  }] });
@@ -4,11 +4,11 @@ import { DisplayDatePipe } from './date.pipe';
4
4
  import { FormatIdePipe } from './formatIde.pipe';
5
5
  import * as i0 from "@angular/core";
6
6
  export class PipeModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: PipeModule, declarations: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe], exports: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PipeModule }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: PipeModule, declarations: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe], exports: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PipeModule }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PipeModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PipeModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  declarations: [DisplayDatePipe, FormatIdePipe, DisplayCurrencyPipe],
@@ -14,11 +14,11 @@ export class PrestationsNgCoreModule {
14
14
  this.injector = injector;
15
15
  ServiceLocator.injector = injector;
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PrestationsNgCoreModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: PrestationsNgCoreModule, imports: [HttpClientModule, RouterModule] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PrestationsNgCoreModule, providers: [IamInterceptorServiceExistingProvider], imports: [HttpClientModule, RouterModule] }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PrestationsNgCoreModule, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
18
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: PrestationsNgCoreModule, imports: [HttpClientModule, RouterModule] }); }
19
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PrestationsNgCoreModule, providers: [IamInterceptorServiceExistingProvider], imports: [HttpClientModule, RouterModule] }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: PrestationsNgCoreModule, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PrestationsNgCoreModule, decorators: [{
22
22
  type: NgModule,
23
23
  args: [{
24
24
  imports: [HttpClientModule, RouterModule],