@loxia/mst-viewer 8.1.3-202511271614 → 8.1.3-202511272206

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 (252) hide show
  1. package/esm2022/lib/atomic-components/message/message.component.mjs +6 -6
  2. package/esm2022/lib/atomic-components/messages/messages.component.mjs +4 -4
  3. package/esm2022/lib/atomic-components/overlay/overlay.component.mjs +4 -4
  4. package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.component.mjs +4 -4
  5. package/esm2022/lib/atomic-components/progress-indicator/progress-indicator.entity.mjs +4 -7
  6. package/esm2022/lib/atomic-components/services/messages.service.mjs +4 -4
  7. package/esm2022/lib/components/carousel-controls/carousel-controls.component.mjs +8 -7
  8. package/esm2022/lib/components/mstviewer/mstviewer.component.mjs +9 -15
  9. package/esm2022/lib/components/ritdelen-lijst/ritdelen-lijst.component.mjs +15 -21
  10. package/esm2022/lib/components/ritdelen-view/ritdelen-view.component.mjs +4 -4
  11. package/esm2022/lib/components/rpe/rpe.component.mjs +5 -9
  12. package/esm2022/lib/components/svg-visualisatie/svg-visualisatie.component.mjs +11 -13
  13. package/esm2022/lib/components/viewer-controls/viewer-controls.component.mjs +16 -19
  14. package/esm2022/lib/model/km-range.mjs +2 -2
  15. package/esm2022/lib/model/nieuwe-route.mjs +2 -2
  16. package/esm2022/lib/model/ritdeel.mjs +10 -10
  17. package/esm2022/lib/mst-viewer.module.mjs +9 -10
  18. package/esm2022/lib/resources/mstlogging.resource.mjs +146 -13
  19. package/esm2022/lib/resources/signaleringsbeeldinfo.resource.mjs +14 -18
  20. package/esm2022/lib/services/base-rest.service.mjs +4 -6
  21. package/esm2022/lib/services/beweging-utils.service.mjs +9 -9
  22. package/esm2022/lib/services/beweging-verrijker.service.mjs +4 -4
  23. package/esm2022/lib/services/connector.service.mjs +4 -4
  24. package/esm2022/lib/services/debug.service.mjs +6 -6
  25. package/esm2022/lib/services/editor.service.mjs +4 -6
  26. package/esm2022/lib/services/print-beweging.service.mjs +23 -26
  27. package/esm2022/lib/services/rit-lezer.service.mjs +7 -7
  28. package/esm2022/lib/services/signalerings-beeld-manager.service.mjs +4 -4
  29. package/esm2022/lib/services/viewer-control.service.mjs +34 -13
  30. package/esm2022/lib/state/actions/actions.mjs +4 -7
  31. package/esm2022/lib/state/actions/ritdelen.actions.mjs +4 -4
  32. package/esm2022/lib/state/effect/bepaal-ongeplande-acties.effect.mjs +10 -11
  33. package/esm2022/lib/state/effect/bepaal-sb-infos.effect.mjs +5 -5
  34. package/esm2022/lib/state/effect/beweging-invoegen.effect.mjs +4 -4
  35. package/esm2022/lib/state/effect/delete-ongeplande-actie.effect.mjs +4 -4
  36. package/esm2022/lib/state/effect/focus-effect.mjs +5 -5
  37. package/esm2022/lib/state/effect/laad-route-files.effect.mjs +11 -11
  38. package/esm2022/lib/state/effect/laad-signaleringsbeelden.effect.mjs +30 -28
  39. package/esm2022/lib/state/effect/rit-goedkeuren.effect.mjs +4 -4
  40. package/esm2022/lib/state/effect/ritdelen.effect.mjs +28 -29
  41. package/esm2022/lib/state/effect/svg-view.effect.mjs +19 -61
  42. package/esm2022/lib/state/mst-editor-state.mjs +15 -13
  43. package/esm2022/lib/state/reducer/rit-delen.reducer.mjs +1 -1
  44. package/esm2022/lib/util/actie-helper.mjs +28 -32
  45. package/esm2022/lib/util/actie-popover-bepaler.mjs +2 -2
  46. package/esm2022/lib/util/date.service.mjs +4 -4
  47. package/esm2022/lib/util/logging-helper.mjs +43 -38
  48. package/esm2022/lib/util/multi-map.mjs +3 -2
  49. package/esm2022/lib/util/utils.mjs +5 -5
  50. package/esm2022/lib/util/zone-util.mjs +4 -5
  51. package/fesm2022/loxia-mst-viewer.mjs +777 -2218
  52. package/fesm2022/loxia-mst-viewer.mjs.map +1 -1
  53. package/lib/atomic-components/message/message.component.d.ts +2 -2
  54. package/lib/atomic-components/progress-indicator/progress-indicator.entity.d.ts +1 -1
  55. package/lib/components/carousel-controls/carousel-controls.component.d.ts +3 -1
  56. package/lib/components/mstviewer/mstviewer.component.d.ts +2 -2
  57. package/lib/components/ritdelen-lijst/ritdelen-lijst.component.d.ts +2 -2
  58. package/lib/components/rpe/rpe.component.d.ts +1 -1
  59. package/lib/components/svg-visualisatie/svg-visualisatie.component.d.ts +1 -2
  60. package/lib/components/viewer-controls/viewer-controls.component.d.ts +4 -3
  61. package/lib/model/km-range.d.ts +1 -1
  62. package/lib/model/nieuwe-route.d.ts +2 -2
  63. package/lib/model/ritdeel.d.ts +10 -11
  64. package/lib/resources/mstlogging.resource.d.ts +95 -6
  65. package/lib/resources/signaleringsbeeldinfo.resource.d.ts +15 -10
  66. package/lib/services/editor.service.d.ts +2 -2
  67. package/lib/services/print-beweging.service.d.ts +6 -4
  68. package/lib/services/rit-lezer.service.d.ts +1 -1
  69. package/lib/services/signalerings-beeld-manager.service.d.ts +2 -2
  70. package/lib/services/viewer-control.service.d.ts +5 -0
  71. package/lib/state/actions/actions.d.ts +25 -26
  72. package/lib/state/actions/ritdelen.actions.d.ts +7 -3
  73. package/lib/state/effect/bepaal-ongeplande-acties.effect.d.ts +1 -2
  74. package/lib/state/effect/delete-ongeplande-actie.effect.d.ts +1 -1
  75. package/lib/state/effect/laad-route-files.effect.d.ts +5 -4
  76. package/lib/state/effect/laad-signaleringsbeelden.effect.d.ts +13 -13
  77. package/lib/state/effect/ritdelen.effect.d.ts +6 -7
  78. package/lib/state/effect/svg-view.effect.d.ts +6 -12
  79. package/lib/state/mst-editor-state.d.ts +92 -30
  80. package/lib/util/actie-helper.d.ts +4 -4
  81. package/lib/util/logging-helper.d.ts +6 -5
  82. package/lib/util/utils.d.ts +1 -0
  83. package/package.json +1 -7
  84. package/tailwind.scss +1 -1
  85. package/esm2022/generated/openapi/api/api.mjs +0 -26
  86. package/esm2022/generated/openapi/api/appConfigController.service.mjs +0 -140
  87. package/esm2022/generated/openapi/api/appConfigController.serviceInterface.mjs +0 -2
  88. package/esm2022/generated/openapi/api/bewegingController.service.mjs +0 -155
  89. package/esm2022/generated/openapi/api/bewegingController.serviceInterface.mjs +0 -2
  90. package/esm2022/generated/openapi/api/class0BuildProperties.service.mjs +0 -140
  91. package/esm2022/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +0 -2
  92. package/esm2022/generated/openapi/api/connectorController.service.mjs +0 -146
  93. package/esm2022/generated/openapi/api/connectorController.serviceInterface.mjs +0 -2
  94. package/esm2022/generated/openapi/api/logController.service.mjs +0 -150
  95. package/esm2022/generated/openapi/api/logController.serviceInterface.mjs +0 -2
  96. package/esm2022/generated/openapi/api/p21Controller.service.mjs +0 -236
  97. package/esm2022/generated/openapi/api/p21Controller.serviceInterface.mjs +0 -2
  98. package/esm2022/generated/openapi/api/sbController.service.mjs +0 -203
  99. package/esm2022/generated/openapi/api/sbController.serviceInterface.mjs +0 -2
  100. package/esm2022/generated/openapi/api/svgController.service.mjs +0 -155
  101. package/esm2022/generated/openapi/api/svgController.serviceInterface.mjs +0 -2
  102. package/esm2022/generated/openapi/api.module.mjs +0 -40
  103. package/esm2022/generated/openapi/configuration.mjs +0 -99
  104. package/esm2022/generated/openapi/encoder.mjs +0 -19
  105. package/esm2022/generated/openapi/index.mjs +0 -7
  106. package/esm2022/generated/openapi/model/actieDto.mjs +0 -13
  107. package/esm2022/generated/openapi/model/algemeneRitDto.mjs +0 -13
  108. package/esm2022/generated/openapi/model/bewegingDto.mjs +0 -2
  109. package/esm2022/generated/openapi/model/frontendKeycloakConfig.mjs +0 -13
  110. package/esm2022/generated/openapi/model/frontendProperties.mjs +0 -2
  111. package/esm2022/generated/openapi/model/kilometrering.mjs +0 -13
  112. package/esm2022/generated/openapi/model/logDto.mjs +0 -2
  113. package/esm2022/generated/openapi/model/models.mjs +0 -18
  114. package/esm2022/generated/openapi/model/ritRequestDto.mjs +0 -2
  115. package/esm2022/generated/openapi/model/sein.mjs +0 -10
  116. package/esm2022/generated/openapi/model/signaleringsElement.mjs +0 -13
  117. package/esm2022/generated/openapi/model/signaleringsbeeldDto.mjs +0 -13
  118. package/esm2022/generated/openapi/model/spoornummer.mjs +0 -13
  119. package/esm2022/generated/openapi/model/spoortakFragment.mjs +0 -2
  120. package/esm2022/generated/openapi/model/svgInfoDto.mjs +0 -2
  121. package/esm2022/generated/openapi/model/svgTopology.mjs +0 -2
  122. package/esm2022/generated/openapi/model/topologyElement.mjs +0 -2
  123. package/esm2022/generated/openapi/model/wissel.mjs +0 -2
  124. package/esm2022/generated/openapi/param.mjs +0 -2
  125. package/esm2022/generated/openapi/variables.mjs +0 -9
  126. package/esm2022/src/generated/openapi/api/api.mjs +0 -26
  127. package/esm2022/src/generated/openapi/api/appConfigController.service.mjs +0 -140
  128. package/esm2022/src/generated/openapi/api/appConfigController.serviceInterface.mjs +0 -2
  129. package/esm2022/src/generated/openapi/api/bewegingController.service.mjs +0 -155
  130. package/esm2022/src/generated/openapi/api/bewegingController.serviceInterface.mjs +0 -2
  131. package/esm2022/src/generated/openapi/api/class0BuildProperties.service.mjs +0 -140
  132. package/esm2022/src/generated/openapi/api/class0BuildProperties.serviceInterface.mjs +0 -2
  133. package/esm2022/src/generated/openapi/api/connectorController.service.mjs +0 -146
  134. package/esm2022/src/generated/openapi/api/connectorController.serviceInterface.mjs +0 -2
  135. package/esm2022/src/generated/openapi/api/logController.service.mjs +0 -150
  136. package/esm2022/src/generated/openapi/api/logController.serviceInterface.mjs +0 -2
  137. package/esm2022/src/generated/openapi/api/p21Controller.service.mjs +0 -236
  138. package/esm2022/src/generated/openapi/api/p21Controller.serviceInterface.mjs +0 -2
  139. package/esm2022/src/generated/openapi/api/sbController.service.mjs +0 -203
  140. package/esm2022/src/generated/openapi/api/sbController.serviceInterface.mjs +0 -2
  141. package/esm2022/src/generated/openapi/api/svgController.service.mjs +0 -155
  142. package/esm2022/src/generated/openapi/api/svgController.serviceInterface.mjs +0 -2
  143. package/esm2022/src/generated/openapi/api.module.mjs +0 -40
  144. package/esm2022/src/generated/openapi/configuration.mjs +0 -99
  145. package/esm2022/src/generated/openapi/encoder.mjs +0 -19
  146. package/esm2022/src/generated/openapi/index.mjs +0 -7
  147. package/esm2022/src/generated/openapi/loxia-mst-viewer-src-generated-openapi.mjs +0 -5
  148. package/esm2022/src/generated/openapi/model/actieDto.mjs +0 -13
  149. package/esm2022/src/generated/openapi/model/algemeneRitDto.mjs +0 -13
  150. package/esm2022/src/generated/openapi/model/bewegingDto.mjs +0 -2
  151. package/esm2022/src/generated/openapi/model/frontendKeycloakConfig.mjs +0 -13
  152. package/esm2022/src/generated/openapi/model/frontendProperties.mjs +0 -2
  153. package/esm2022/src/generated/openapi/model/kilometrering.mjs +0 -13
  154. package/esm2022/src/generated/openapi/model/logDto.mjs +0 -2
  155. package/esm2022/src/generated/openapi/model/models.mjs +0 -18
  156. package/esm2022/src/generated/openapi/model/ritRequestDto.mjs +0 -2
  157. package/esm2022/src/generated/openapi/model/sein.mjs +0 -10
  158. package/esm2022/src/generated/openapi/model/signaleringsElement.mjs +0 -13
  159. package/esm2022/src/generated/openapi/model/signaleringsbeeldDto.mjs +0 -13
  160. package/esm2022/src/generated/openapi/model/spoornummer.mjs +0 -13
  161. package/esm2022/src/generated/openapi/model/spoortakFragment.mjs +0 -2
  162. package/esm2022/src/generated/openapi/model/svgInfoDto.mjs +0 -2
  163. package/esm2022/src/generated/openapi/model/svgTopology.mjs +0 -2
  164. package/esm2022/src/generated/openapi/model/topologyElement.mjs +0 -2
  165. package/esm2022/src/generated/openapi/model/wissel.mjs +0 -2
  166. package/esm2022/src/generated/openapi/param.mjs +0 -2
  167. package/esm2022/src/generated/openapi/variables.mjs +0 -9
  168. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs +0 -1522
  169. package/fesm2022/loxia-mst-viewer-src-generated-openapi.mjs.map +0 -1
  170. package/generated/openapi/api/api.d.ts +0 -25
  171. package/generated/openapi/api/appConfigController.service.d.ts +0 -38
  172. package/generated/openapi/api/appConfigController.serviceInterface.d.ts +0 -24
  173. package/generated/openapi/api/bewegingController.service.d.ts +0 -40
  174. package/generated/openapi/api/bewegingController.serviceInterface.d.ts +0 -27
  175. package/generated/openapi/api/class0BuildProperties.service.d.ts +0 -36
  176. package/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +0 -23
  177. package/generated/openapi/api/connectorController.service.d.ts +0 -38
  178. package/generated/openapi/api/connectorController.serviceInterface.d.ts +0 -25
  179. package/generated/openapi/api/logController.service.d.ts +0 -38
  180. package/generated/openapi/api/logController.serviceInterface.d.ts +0 -25
  181. package/generated/openapi/api/p21Controller.service.d.ts +0 -62
  182. package/generated/openapi/api/p21Controller.serviceInterface.d.ts +0 -30
  183. package/generated/openapi/api/sbController.service.d.ts +0 -60
  184. package/generated/openapi/api/sbController.serviceInterface.d.ts +0 -32
  185. package/generated/openapi/api/svgController.service.d.ts +0 -40
  186. package/generated/openapi/api/svgController.serviceInterface.d.ts +0 -27
  187. package/generated/openapi/api.module.d.ts +0 -11
  188. package/generated/openapi/configuration.d.ts +0 -104
  189. package/generated/openapi/encoder.d.ts +0 -11
  190. package/generated/openapi/index.d.ts +0 -6
  191. package/generated/openapi/model/actieDto.d.ts +0 -35
  192. package/generated/openapi/model/algemeneRitDto.d.ts +0 -20
  193. package/generated/openapi/model/bewegingDto.d.ts +0 -37
  194. package/generated/openapi/model/frontendKeycloakConfig.d.ts +0 -16
  195. package/generated/openapi/model/frontendProperties.d.ts +0 -15
  196. package/generated/openapi/model/kilometrering.d.ts +0 -15
  197. package/generated/openapi/model/logDto.d.ts +0 -22
  198. package/generated/openapi/model/models.d.ts +0 -17
  199. package/generated/openapi/model/ritRequestDto.d.ts +0 -17
  200. package/generated/openapi/model/sein.d.ts +0 -46
  201. package/generated/openapi/model/signaleringsElement.d.ts +0 -16
  202. package/generated/openapi/model/signaleringsbeeldDto.d.ts +0 -16
  203. package/generated/openapi/model/spoornummer.d.ts +0 -17
  204. package/generated/openapi/model/spoortakFragment.d.ts +0 -26
  205. package/generated/openapi/model/svgInfoDto.d.ts +0 -16
  206. package/generated/openapi/model/svgTopology.d.ts +0 -21
  207. package/generated/openapi/model/topologyElement.d.ts +0 -18
  208. package/generated/openapi/model/wissel.d.ts +0 -31
  209. package/generated/openapi/param.d.ts +0 -37
  210. package/generated/openapi/variables.d.ts +0 -8
  211. package/src/generated/openapi/README.md +0 -226
  212. package/src/generated/openapi/api/api.d.ts +0 -25
  213. package/src/generated/openapi/api/appConfigController.service.d.ts +0 -38
  214. package/src/generated/openapi/api/appConfigController.serviceInterface.d.ts +0 -24
  215. package/src/generated/openapi/api/bewegingController.service.d.ts +0 -40
  216. package/src/generated/openapi/api/bewegingController.serviceInterface.d.ts +0 -27
  217. package/src/generated/openapi/api/class0BuildProperties.service.d.ts +0 -36
  218. package/src/generated/openapi/api/class0BuildProperties.serviceInterface.d.ts +0 -23
  219. package/src/generated/openapi/api/connectorController.service.d.ts +0 -38
  220. package/src/generated/openapi/api/connectorController.serviceInterface.d.ts +0 -25
  221. package/src/generated/openapi/api/logController.service.d.ts +0 -38
  222. package/src/generated/openapi/api/logController.serviceInterface.d.ts +0 -25
  223. package/src/generated/openapi/api/p21Controller.service.d.ts +0 -62
  224. package/src/generated/openapi/api/p21Controller.serviceInterface.d.ts +0 -30
  225. package/src/generated/openapi/api/sbController.service.d.ts +0 -60
  226. package/src/generated/openapi/api/sbController.serviceInterface.d.ts +0 -32
  227. package/src/generated/openapi/api/svgController.service.d.ts +0 -40
  228. package/src/generated/openapi/api/svgController.serviceInterface.d.ts +0 -27
  229. package/src/generated/openapi/api.module.d.ts +0 -11
  230. package/src/generated/openapi/configuration.d.ts +0 -104
  231. package/src/generated/openapi/encoder.d.ts +0 -11
  232. package/src/generated/openapi/index.d.ts +0 -6
  233. package/src/generated/openapi/model/actieDto.d.ts +0 -35
  234. package/src/generated/openapi/model/algemeneRitDto.d.ts +0 -20
  235. package/src/generated/openapi/model/bewegingDto.d.ts +0 -37
  236. package/src/generated/openapi/model/frontendKeycloakConfig.d.ts +0 -16
  237. package/src/generated/openapi/model/frontendProperties.d.ts +0 -15
  238. package/src/generated/openapi/model/kilometrering.d.ts +0 -15
  239. package/src/generated/openapi/model/logDto.d.ts +0 -22
  240. package/src/generated/openapi/model/models.d.ts +0 -17
  241. package/src/generated/openapi/model/ritRequestDto.d.ts +0 -17
  242. package/src/generated/openapi/model/sein.d.ts +0 -46
  243. package/src/generated/openapi/model/signaleringsElement.d.ts +0 -16
  244. package/src/generated/openapi/model/signaleringsbeeldDto.d.ts +0 -16
  245. package/src/generated/openapi/model/spoornummer.d.ts +0 -17
  246. package/src/generated/openapi/model/spoortakFragment.d.ts +0 -26
  247. package/src/generated/openapi/model/svgInfoDto.d.ts +0 -16
  248. package/src/generated/openapi/model/svgTopology.d.ts +0 -21
  249. package/src/generated/openapi/model/topologyElement.d.ts +0 -18
  250. package/src/generated/openapi/model/wissel.d.ts +0 -31
  251. package/src/generated/openapi/param.d.ts +0 -37
  252. package/src/generated/openapi/variables.d.ts +0 -8
@@ -3,10 +3,11 @@ import { combineLatest } from 'rxjs';
3
3
  import { AlternatiefRitDeel } from '../../model/alternatief-rit-deel';
4
4
  import { OngeplandeActie } from '../../model/ongeplande-actie';
5
5
  import { SeinOpRitdeel } from '../../model/sein-op-ritdeel';
6
- import { AddOngeplandeActie, BepaalOngeplandeActies, BewegingInvoegen, ClearProgress, navigeerBuitenRit, ResetNieuweRoute, SetActieOpRitSelectieIds, SetAlternatievenClickableIds, SetAlternatievenSelectieIds, SetBeginSeinRightClickableIds, SetBeginSeinSelectieIds, SetEindSeinenClickableIds, SetEindSeinSelectieIds, SetGebrokenRitSelectieIds, SetGeplandeActies, SetNieuwRouteEindSein, SetRitSelectieIds } from '../../state/actions/actions';
6
+ import { AddOngeplandeActie, BepaalOngeplandeActies, BewegingInvoegen, ClearProgress, SetSelectedRitdeel, navigeerBuitenRit, ResetNieuweRoute, SetActieOpRitSelectieIds, SetAlternatievenClickableIds, SetAlternatievenSelectieIds, SetBeginSeinRightClickableIds, SetBeginSeinSelectieIds, SetEindSeinenClickableIds, SetEindSeinSelectieIds, SetGebrokenRitSelectieIds, SetGeplandeActies, SetNieuwRouteEindSein, SetRitSelectieIds } from '../../state/actions/actions';
7
7
  import { ritdeelInvoegen, setAlternatieveRitDelen } from '../../state/actions/ritdelen.actions';
8
8
  import { ActiePopoverBepaler } from '../../util/actie-popover-bepaler';
9
9
  import { ArrayMultimap } from '../../util/multi-map';
10
+ import Utils from '../../util/utils';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@ngrx/store";
12
13
  import * as i2 from "../../services/viewer-control.service";
@@ -22,16 +23,12 @@ export class SvgVisualisatieComponent {
22
23
  this.actieHelper = actieHelper;
23
24
  this.sbmService = sbmService;
24
25
  this.editorService = editorService;
25
- this.nietGeplandeActies = [];
26
- this.useClickArea = false;
27
26
  this.svgInfos$ = this.store.select('svgInfos');
28
27
  this.popoverInfos = [];
29
28
  this.clickableIds = [];
30
- this.selectieInfos$ = this.store.select('selectieInfos');
31
29
  this.rightClickableIds = [];
32
30
  this.contextMenuActions = [];
33
31
  this.contextMenuStyle = { display: 'none' };
34
- this.editable = false;
35
32
  this.puicNaarBeginSeinRitdeel = new Map();
36
33
  this.puicNaarEindSeinCombinatie = new Map();
37
34
  this.puicNaarAlternatieveRoute = new Map();
@@ -55,7 +52,7 @@ export class SvgVisualisatieComponent {
55
52
  }));
56
53
  }
57
54
  ngOnInit() {
58
- document.getElementById('contextMenu')?.addEventListener('mouseleave', () => this.hideContextMenu());
55
+ document.getElementById('contextMenu').addEventListener('mouseleave', () => this.hideContextMenu());
59
56
  }
60
57
  ngOnDestroy() {
61
58
  this.subscriptions.forEach(s => s.unsubscribe());
@@ -82,6 +79,7 @@ export class SvgVisualisatieComponent {
82
79
  this.store.dispatch(navigeerBuitenRit(puic));
83
80
  }
84
81
  }
82
+ this.store.dispatch(SetSelectedRitdeel(undefined));
85
83
  }
86
84
  handleImxviewRightClick(evt) {
87
85
  const fn = () => {
@@ -112,7 +110,7 @@ export class SvgVisualisatieComponent {
112
110
  handleNieuweRouteToegevoegd() {
113
111
  this.store.select('nieuweRoute')
114
112
  .subscribe((nieuweRoute) => {
115
- if (nieuweRoute?.isValid()) {
113
+ if (nieuweRoute.isValid()) {
116
114
  this.store.dispatch(ResetNieuweRoute());
117
115
  this.store.dispatch(ritdeelInvoegen(nieuweRoute));
118
116
  }
@@ -225,7 +223,7 @@ export class SvgVisualisatieComponent {
225
223
  });
226
224
  this.viewerControlsService.setValideRit(!gebrokenRit);
227
225
  this.store.dispatch(SetGeplandeActies(actieOpRitSelectiePuics));
228
- const actieOpRitSelectiePuicsArray = Array.from(actieOpRitSelectiePuics.values()).flat();
226
+ const actieOpRitSelectiePuicsArray = Utils.flatMap(Array.from(actieOpRitSelectiePuics.values()), x => x);
229
227
  this.store.dispatch(SetActieOpRitSelectieIds(actieOpRitSelectiePuicsArray));
230
228
  ritSelectiePuics = ritSelectiePuics.filter(item => actieOpRitSelectiePuicsArray.indexOf(item) < 0); // make mutually exclusive
231
229
  this.store.dispatch(SetRitSelectieIds(ritSelectiePuics));
@@ -258,12 +256,12 @@ export class SvgVisualisatieComponent {
258
256
  getPuics(topoElementen) {
259
257
  return topoElementen.map(e => e.getPuic());
260
258
  }
261
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.ActieHelper }, { token: i4.SignaleringsBeeldManagerService }, { token: i5.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
262
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: { nietGeplandeActies: "nietGeplandeActies", useClickArea: "useClickArea" }, viewQueries: [{ propertyName: "imxviewer", first: true, predicate: ["imxviewercontainer"], descendants: true }], ngImport: i0, template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.ImxViewerComponent, selector: "imx-viewer", inputs: ["useClickArea", "inlineDgnCssImport", "svgInfo", "selectieInfos", "clickableIds", "rightClickableIds", "popoverInfos", "zoomScaleSensitivity", "autoAlignSvgsHorizontally", "initialPanAndZoom"], outputs: ["clickHandler", "rightClickHandler", "svgLoaded", "panned"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
259
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgVisualisatieComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.ActieHelper }, { token: i4.SignaleringsBeeldManagerService }, { token: i5.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
260
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: SvgVisualisatieComponent, selector: "svg-visualisatie", inputs: { nietGeplandeActies: "nietGeplandeActies", useClickArea: "useClickArea" }, viewQueries: [{ propertyName: "imxviewer", first: true, predicate: ["imxviewercontainer"], descendants: true }], ngImport: i0, template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"viewerControlsService.selectieInfos\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i7.ImxViewerComponent, selector: "imx-viewer", inputs: ["useClickArea", "inlineDgnCssImport", "svgInfo", "selectieInfos", "clickableIds", "rightClickableIds", "popoverInfos", "zoomScaleSensitivity", "autoAlignSvgsHorizontally", "initialPanAndZoom"], outputs: ["clickHandler", "rightClickHandler", "svgLoaded", "panned"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
263
261
  }
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: SvgVisualisatieComponent, decorators: [{
265
263
  type: Component,
266
- args: [{ selector: 'svg-visualisatie', template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"selectieInfos$ | async\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"] }]
264
+ args: [{ selector: 'svg-visualisatie', template: "<imx-viewer #imxviewercontainer\n [svgInfo]=\"svgInfos$ | async\"\n [selectieInfos]=\"viewerControlsService.selectieInfos\"\n [clickableIds]=\"clickableIds\"\n [rightClickableIds]=\"rightClickableIds\"\n [popoverInfos]=\"popoverInfos\"\n [inlineDgnCssImport]=\"false\"\n [useClickArea]=\"useClickArea\"\n [zoomScaleSensitivity]=\"0.25\"\n (clickHandler)=\"handleImxviewClick($event)\"\n (rightClickHandler)=\"handleImxviewRightClick($event)\"\n ></imx-viewer>\n\n<ul id=\"contextMenu\" class=\"dropdown-menu\" role=\"menu\" [ngStyle]=\"contextMenuStyle\">\n <li *ngFor=\"let action of contextMenuActions\"><a class=\"dropdown-item\" tabindex=\"-1\"\n (click)=\"action.click()\">{{action.label}}</a></li>\n</ul>\n", styles: [".dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}\n"] }]
267
265
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.ViewerControlService }, { type: i3.ActieHelper }, { type: i4.SignaleringsBeeldManagerService }, { type: i5.EditorService }], propDecorators: { nietGeplandeActies: [{
268
266
  type: Input
269
267
  }], useClickArea: [{
@@ -272,4 +270,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
272
270
  type: ViewChild,
273
271
  args: ['imxviewercontainer']
274
272
  }] } });
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXZpc3VhbGlzYXRpZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvY29tcG9uZW50cy9zdmctdmlzdWFsaXNhdGllL3N2Zy12aXN1YWxpc2F0aWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvc3ZnLXZpc3VhbGlzYXRpZS9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUs1RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNwQixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUdoRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FB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QztJQUNQLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxPQUFnQixFQUFFLGdCQUF3QjtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUU7a0JBQ2xGLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcscUNBQXFDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsT0FBTyxpQkFBaUIsQ0FBQztJQUM3QixDQUFDO0lBRU8sUUFBUSxDQUFDLGFBQXFDO1FBQ2xELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7K0dBeFJRLHdCQUF3QjttR0FBeEIsd0JBQXdCLDZQQzVDckMsMjJCQWlCQTs7NEZEMkJhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDSSxrQkFBa0I7aU5BTW5CLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUUyQixTQUFTO3NCQUF6QyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElteFZpZXdlckNvbXBvbmVudCwgUG9wb3ZlckluZm8sIFNlbGVjdGllRXZlbnQsIFN2Z0luZm8gfSBmcm9tICdAbG94aWEvaW14LXZpZXdlcic7XG5pbXBvcnQgeyBkb21laW4sIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWx0ZXJuYXRpZWZSaXREZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvYWx0ZXJuYXRpZWYtcml0LWRlZWwnO1xuaW1wb3J0IHsgT25nZXBsYW5kZUFjdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvb25nZXBsYW5kZS1hY3RpZSc7XG5pbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi4vLi4vbW9kZWwvcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5pbXBvcnQgeyBSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcml0ZGVlbCc7XG5pbXBvcnQgeyBTZWluT3BSaXRkZWVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2Vpbi1vcC1yaXRkZWVsJztcbmltcG9ydCB7IEFjdGllIH0gZnJvbSAnLi4vLi4vb3B0aW1vJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTaWduYWxlcmluZ3NCZWVsZE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2lnbmFsZXJpbmdzLWJlZWxkLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBBZGRPbmdlcGxhbmRlQWN0aWUsXG4gICAgQmVwYWFsT25nZXBsYW5kZUFjdGllcyxcbiAgICBCZXdlZ2luZ0ludm9lZ2VuLFxuICAgIENsZWFyUHJvZ3Jlc3MsXG4gICAgbmF2aWdlZXJCdWl0ZW5SaXQsXG4gICAgUmVzZXROaWV1d2VSb3V0ZSxcbiAgICBTZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHMsXG4gICAgU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMsXG4gICAgU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMsXG4gICAgU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRFaW5kU2VpblNlbGVjdGllSWRzLFxuICAgIFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0R2VwbGFuZGVBY3RpZXMsXG4gICAgU2V0TmlldXdSb3V0ZUVpbmRTZWluLFxuICAgIFNldFJpdFNlbGVjdGllSWRzXG59IGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgeyByaXRkZWVsSW52b2VnZW4sIHNldEFsdGVybmF0aWV2ZVJpdERlbGVuIH0gZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgeyBBY3RpZUhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYWN0aWUtaGVscGVyJztcbmltcG9ydCB7IEFjdGllUG9wb3ZlckJlcGFsZXIgfSBmcm9tICcuLi8uLi91dGlsL2FjdGllLXBvcG92ZXItYmVwYWxlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi4vLi4vdXRpbC9tdWx0aS1tYXAnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N2Zy12aXN1YWxpc2F0aWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3ZnVmlzdWFsaXNhdGllQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbmlldEdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdID0gW107XG4gICAgQElucHV0KCkgdXNlQ2xpY2tBcmVhID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKCdpbXh2aWV3ZXJjb250YWluZXInKSBpbXh2aWV3ZXI/OiBJbXhWaWV3ZXJDb21wb25lbnQ7XG5cbiAgICBzdmdJbmZvcyQ6IE9ic2VydmFibGU8U3ZnSW5mb1tdPiA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzdmdJbmZvcycpO1xuICAgIHBvcG92ZXJJbmZvczogUG9wb3ZlckluZm9bXSA9IFtdO1xuICAgIGNsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICBzZWxlY3RpZUluZm9zJCA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzZWxlY3RpZUluZm9zJyk7XG5cbiAgICByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb250ZXh0TWVudUFjdGlvbnM6IGFueSA9IFtdO1xuICAgIGNvbnRleHRNZW51U3R5bGU6IGFueSA9IHsgZGlzcGxheTogJ25vbmUnIH07XG4gICAgZWRpdGFibGUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgcHVpY05hYXJCZWdpblNlaW5SaXRkZWVsID0gbmV3IE1hcDxzdHJpbmcsIFNlaW5PcFJpdGRlZWw+KCk7XG4gICAgcHJpdmF0ZSBwdWljTmFhckVpbmRTZWluQ29tYmluYXRpZSA9IG5ldyBNYXA8c3RyaW5nLCBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllPigpO1xuICAgIHByaXZhdGUgcHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZSA9IG5ldyBNYXA8c3RyaW5nLCBBbHRlcm5hdGllZlJpdERlZWw+KCk7XG5cbiAgICBwcml2YXRlIG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8TXN0RWRpdG9yU3RhdGU+LFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2aWV3ZXJDb250cm9sc1NlcnZpY2U6IFZpZXdlckNvbnRyb2xTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgYWN0aWVIZWxwZXI6IEFjdGllSGVscGVyLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc2JtU2VydmljZTogU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5vblJpdGRlbGVuVXBkYXRlKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlckNsaWNrYWJsZUlkQmVwYWxpbmcoKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyUmlnaHRDbGlja2FibGVJZEJlcGFsaW5nKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlTmlldXdlUm91dGVUb2VnZXZvZWdkKCk7XG4gICAgICAgIHRoaXMuc2V0dXBUcmlnZ2VyUG9wb3ZlckJlcGFsaW5nKCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2VkaXRhYmxlJykuc3Vic2NyaWJlKGVkaXRhYmxlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllc0JlcGFhbGQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCA9PiB0aGlzLm9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkID0gb25nZXBsYW5kZUFjdGllc0JlcGFhbGQpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ2ZvY3VzSWRzJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoZm9jdXNJZHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0lkcyAmJiB0aGlzLmlteHZpZXdlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlteHZpZXdlci5mb2N1c09uSWRzKGZvY3VzSWRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250ZXh0TWVudScpPy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5oaWRlQ29udGV4dE1lbnUoKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3Q2xpY2soZXZ0OiBTZWxlY3RpZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHB1aWMgPSBldnQuaWQ7XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJpdERlZWwgPSB0aGlzLnB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUuZ2V0KHB1aWMpO1xuICAgICAgICBjb25zdCBjb21iaW5hdGllID0gdGhpcy5wdWljTmFhckVpbmRTZWluQ29tYmluYXRpZS5nZXQocHVpYyk7XG4gICAgICAgIGlmIChhbHRlcm5hdGlldmVSaXREZWVsKSB7XG4gICAgICAgICAgICBhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWwuYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5hY3RpZUhlbHBlci5iZXBhYWxQdWljc1Zvb3JBY3RpZShhY3RpZSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZGRPbmdlcGxhbmRlQWN0aWUobmV3IE9uZ2VwbGFuZGVBY3RpZShhY3RpZSwgcHVpY3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNldEFsdGVybmF0aWV2ZVJpdERlbGVuKGFsdGVybmF0aWV2ZVJpdERlZWwpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb21iaW5hdGllKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldE5pZXV3Um91dGVFaW5kU2Vpbihjb21iaW5hdGllKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByYW5kID0gdGhpcy5zYm1TZXJ2aWNlLmdldFRvcG9sb2d5RWxlbWVudEJ5UHVpYyhwdWljKTtcbiAgICAgICAgICAgIGlmIChyYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuYXZpZ2VlckJ1aXRlblJpdChwdWljKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3UmlnaHRDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm4gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFNlaW5PcFJpdGRlZWwgPSB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5nZXQoZXZ0LmlkKTtcbiAgICAgICAgICAgIGlmIChzdGFydFNlaW5PcFJpdGRlZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMucHVzaCh7IGxhYmVsOiAnYmV3ZWdpbmcgaW52b2VnZW4nLCBjbGljazogZm4gfSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGxlZnQ6IChldnQuZXZlbnQub2Zmc2V0WCAtIDUpICsgJ3B4JyxcbiAgICAgICAgICAgIHRvcDogKGV2dC5ldmVudC5vZmZzZXRZIC0gNSkgKyAncHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQmV3ZWdpbmdJbnZvZWdlbihzdGFydFNlaW5PcFJpdGRlZWwsIHRoaXMucHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUpKTtcbiAgICB9XG5cbiAgICBoaWRlQ29udGV4dE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOaWV1d2VSb3V0ZVRvZWdldm9lZ2QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCduaWV1d2VSb3V0ZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuaWV1d2VSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmlldXdlUm91dGU/LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChSZXNldE5pZXV3ZVJvdXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChyaXRkZWVsSW52b2VnZW4obmlldXdlUm91dGUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJpdGRlbGVuVXBkYXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLnN0b3JlLnNlbGVjdCgncml0RGVsZW4nKS5zdWJzY3JpYmUocml0RGVsZW4gPT4ge1xuICAgICAgICAgICAgaWYgKHJpdERlbGVuICYmIHJpdERlbGVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbFJvdXRlSGlnaGxpZ2h0cyhyaXREZWxlbik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxDb250ZXh0TWVudVZvb3JCZWdpblNlaW5lbihyaXREZWxlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbE9uZ2VwbGFuZGVBY3RpZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdhbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnZWluZFNlaW5lbkNsaWNrYWJsZUlkcycpLFxuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2Nvbm5lY3RvckNsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2FsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsIGVpbmRTZWluZW5DbGlja2FibGVJZHMsIGNvbm5lY3RvckNsaWNrYWJsZUlkc10pID0+XG4gICAgICAgICAgICB0aGlzLmNsaWNrYWJsZUlkcyA9IFsuLi5hbHRlcm5hdGlldmVuQ2xpY2thYmxlSWRzLCAuLi5laW5kU2VpbmVuQ2xpY2thYmxlSWRzLCAuLi5jb25uZWN0b3JDbGlja2FibGVJZHNdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmlnZ2VyUmlnaHRDbGlja2FibGVJZEJlcGFsaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChjb21iaW5lTGF0ZXN0KFt0aGlzLnN0b3JlLnNlbGVjdCgnYmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMnKV1cbiAgICAgICAgKS5zdWJzY3JpYmUoKFtiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkc10pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZHMucHVzaCguLi5iZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yaWdodENsaWNrYWJsZUlkcyA9IGlkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cFRyaWdnZXJQb3BvdmVyQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ3JpdERlbGVuJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnb25nZXBsYW5kZUFjdGllcycpLFxuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2dlcGxhbmRlQWN0aWVzJyldXG4gICAgICAgICkuc3Vic2NyaWJlKChbcml0ZGVsZW4sIG9uZ2VwbGFuZGVBY3RpZXMsIGdlcGxhbmRlQWN0aWVzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyaXRkZWxlbiAmJiByaXRkZWxlbi5sZW5ndGggPiAwICYmIGdlcGxhbmRlQWN0aWVzICYmIG9uZ2VwbGFuZGVBY3RpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVySW5mb3MgPSBBY3RpZVBvcG92ZXJCZXBhbGVyLmJlcGFhbFBvcG92ZXJJbmZvcyhyaXRkZWxlbiwgZ2VwbGFuZGVBY3RpZXMsIG9uZ2VwbGFuZGVBY3RpZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgYmVwYWFsT25nZXBsYW5kZUFjdGllcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmlldEdlcGxhbmRlQWN0aWVzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXModGhpcy5uaWV0R2VwbGFuZGVBY3RpZXMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsQ29udGV4dE1lbnVWb29yQmVnaW5TZWluZW4ocml0RGVsZW46IFJpdGRlZWxbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2JtU2VydmljZS5pc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHJpdERlbGVuLmZpbHRlcihyaXREZWVsID0+IHJpdERlZWwuaXNaaWNodGJhYXIoKSkuZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gcml0RGVlbC5nZXRTZWluZW4oKS5mbGF0TWFwKHNlaW4gPT4gdGhpcy52ZXJ6YW1lbEJlZ2luU2VpbkluZm9ybWF0aWUoc2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChwdWljcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMoaWRzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMoW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRFaW5kU2VpblNlbGVjdGllSWRzKFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyhbXSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdmVyemFtZWxCZWdpblNlaW5JbmZvcm1hdGllKHNlaW46IGRvbWVpbi5TZWluLCByaXREZWVsOiBSaXRkZWVsKTogc3RyaW5nW10ge1xuICAgICAgICBjb25zdCBwdWljczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc2JTZWluID0gdGhpcy5zYm1TZXJ2aWNlLmdldFNCU2VpbihzZWluKTtcbiAgICAgICAgaWYgKHNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IHNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgdGhpcy5wdWljTmFhckJlZ2luU2VpblJpdGRlZWwuc2V0KHB1aWMsIG5ldyBTZWluT3BSaXRkZWVsKHNlaW4sIHJpdERlZWwpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHRTYlNlaW4gPSB0aGlzLnNibVNlcnZpY2UuZ2V0VGVjaG5pc2NoQWx0ZXJuYXRpZWZTQlNlaW4oc2JTZWluKTtcbiAgICAgICAgaWYgKGFsdFNiU2Vpbikge1xuICAgICAgICAgICAgY29uc3QgcHVpYyA9IGFsdFNiU2Vpbi5nZXRQdWljKCk7XG4gICAgICAgICAgICBwdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgY29uc3QgcndwID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldFJpandlZ3BsYW4oYWx0U2JTZWluLmdldFBQTEcoKSk7XG4gICAgICAgICAgICBjb25zdCBkb21laW5TZWluID0gcndwLmdldEJlZ2luU2VpbihhbHRTYlNlaW4uZ2V0TmFtZSgpKTtcbiAgICAgICAgICAgIC8vIHNlaW4ga2FuIG5pZXQgYWx0aWpkIGdldm9uZGVuIHdvcmRlbiBvbWRhdCBlciBuaWV0IGFsdGlqZCBlZW4gcmlqd2VnIHZhbmFmIGRpdCBzZWluIGlzLCBiaWp2IGJpaiB2ZWVyd2lzc2VsLlxuICAgICAgICAgICAgaWYgKGRvbWVpblNlaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5zZXQocHVpYywgbmV3IFNlaW5PcFJpdGRlZWwoZG9tZWluU2Vpbiwgcml0RGVlbCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwdWljcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlcGFhbFJvdXRlSGlnaGxpZ2h0cyhyaXREZWxlbjogUml0ZGVlbFtdKTogdm9pZCB7XG4gICAgICAgIGxldCByaXRTZWxlY3RpZVB1aWNzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVQdWljcyA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGxldCBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGNsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgbGV0IGxhYXRzdGVOYWFyU3Bvb3I6IHN0cmluZztcbiAgICAgICAgY29uc3QgYmVzdGFhdFVpdDFSaXRkZWVsID0gcml0RGVsZW4ubGVuZ3RoID09PSAxO1xuICAgICAgICBsZXQgZ2Vicm9rZW5SaXQgPSBmYWxzZTtcbiAgICAgICAgcml0RGVsZW4uZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGlmIChyaXREZWVsLmlzWmljaHRiYWFyKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXA6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4gPSB0aGlzLmFjdGllSGVscGVyLmJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpO1xuICAgICAgICAgICAgICAgIG1hcC5rZXlzKCkuZm9yRWFjaChrZXkgPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MucHV0QWxsKGtleSwgbWFwLmdldChrZXkpKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0dlYnJva2VuUml0ZGVlbCA9ICFiZXN0YWF0VWl0MVJpdGRlZWwgJiYgdGhpcy5pc0dlYnJva2VuUml0ZGVlbChyaXREZWVsLCBsYWF0c3RlTmFhclNwb29yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IFsuLi50aGlzLmdldFB1aWNzKHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnNibVNlcnZpY2UuZ2V0UHVpY3NWb29yU2VpbmVuSW5Sb3V0ZShyaXREZWVsLmdldFJvdXRlKCkpXTtcblxuICAgICAgICAgICAgICAgIGlmIChwdWljcyAmJiBpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgICAgICBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MgPSBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MuY29uY2F0KHB1aWNzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHB1aWNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdFNlbGVjdGllUHVpY3MgPSByaXRTZWxlY3RpZVB1aWNzLmNvbmNhdChwdWljcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxBbHRlcm5hdGlldmVuKHJpdERlZWwsIGNsaWNrYWJsZUlkcywgYWx0ZXJuYXRpZXZlUm91dGVQdWljcyk7XG5cbiAgICAgICAgICAgICAgICBnZWJyb2tlblJpdCA9IGdlYnJva2VuUml0IHx8IGlzR2Vicm9rZW5SaXRkZWVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFhdHN0ZU5hYXJTcG9vciA9IHJpdERlZWwuZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRWYWxpZGVSaXQoIWdlYnJva2VuUml0KTtcblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlcGxhbmRlQWN0aWVzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIGNvbnN0IGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkgPSBBcnJheS5mcm9tKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzLnZhbHVlcygpKS5mbGF0KCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWN0aWVPcFJpdFNlbGVjdGllSWRzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkpKTtcbiAgICAgICAgcml0U2VsZWN0aWVQdWljcyA9IHJpdFNlbGVjdGllUHVpY3MuZmlsdGVyKGl0ZW0gPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3NBcnJheS5pbmRleE9mKGl0ZW0pIDwgMCk7IC8vIG1ha2UgbXV0dWFsbHkgZXhjbHVzaXZlXG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0Uml0U2VsZWN0aWVJZHMocml0U2VsZWN0aWVQdWljcykpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMoZ2Vicm9rZW5SaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyh0aGlzLmVkaXRhYmxlID8gY2xpY2thYmxlSWRzIDogW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHModGhpcy5lZGl0YWJsZSA/IGFsdGVybmF0aWV2ZVJvdXRlUHVpY3MgOiBbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENsZWFyUHJvZ3Jlc3MoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxBbHRlcm5hdGlldmVuKHJpdERlZWw6IFJpdGRlZWwsIGNsaWNrYWJsZUlkczogc3RyaW5nW10sIGFsdGVybmF0aWV2ZVJvdXRlUHVpY3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHJpdERlZWwuZ2V0QWx0ZXJuYXRpZXZlUm91dGVzKCk/LmZvckVhY2goYWx0ZXJuYXRpZXZlUm91dGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRpZXZlVG9wb0VsZW1lbnRlbiA9XG4gICAgICAgICAgICAgICAgdGhpcy5zYm1TZXJ2aWNlLmJlcGFhbEFsdGVybmF0aXZlUm91dGVIaWdobGlnaHRzKGFsdGVybmF0aWV2ZVJvdXRlLCByaXREZWVsLmdldFRvcG9sb2dpZUVsZW1lbnRlbigpKTtcblxuICAgICAgICAgICAgY29uc3QgYWx0UHVpY3MgPSB0aGlzLmdldFB1aWNzKGFsdGVybmF0aWV2ZVRvcG9FbGVtZW50ZW4pO1xuICAgICAgICAgICAgaWYgKGFsdFB1aWNzKSB7XG4gICAgICAgICAgICAgICAgY2xpY2thYmxlSWRzLnB1c2goLi4uYWx0UHVpY3MpO1xuICAgICAgICAgICAgICAgIGFsdFB1aWNzLmZvckVhY2gocHVpYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHVpY05hYXJBbHRlcm5hdGlldmVSb3V0ZS5zZXQocHVpYywgbmV3IEFsdGVybmF0aWVmUml0RGVlbChyaXREZWVsLCBhbHRlcm5hdGlldmVSb3V0ZSkpO1xuICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzLnB1c2gocHVpYyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNHZWJyb2tlblJpdGRlZWwocml0RGVlbDogUml0ZGVlbCwgbGFhdHN0ZU5hYXJTcG9vcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlzR2Vicm9rZW5SaXRkZWVsID0gISghbGFhdHN0ZU5hYXJTcG9vciB8fCByaXREZWVsLmdldFZhblBybFNwb29yKCkgPT09IGxhYXRzdGVOYWFyU3Bvb3IpO1xuICAgICAgICBpZiAoaXNHZWJyb2tlblJpdGRlZWwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSaXQgdmFuICcgKyByaXREZWVsLmdldFZhblBybFNwb29yKCkgKyAnIG5hYXIgJyArIHJpdERlZWwuZ2V0TmFhclBybFNwb29yKClcbiAgICAgICAgICAgICAgICArICcgaW4gcHBsZyAnICsgcml0RGVlbC5nZXRQcGxnKCkgKyAnIHNsdWl0IG5pZXQgYWFuIG9wIHZvcmlnZSBiZXdlZ2luZy4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNHZWJyb2tlblJpdGRlZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQdWljcyh0b3BvRWxlbWVudGVuOiBzYmJsYWQuSGFzSWRlbnRpZmllcltdKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdG9wb0VsZW1lbnRlbi5tYXAoZSA9PiBlLmdldFB1aWMoKSk7XG4gICAgfVxufVxuIiwiPGlteC12aWV3ZXIgI2lteHZpZXdlcmNvbnRhaW5lclxuICAgICAgICAgICAgW3N2Z0luZm9dPVwic3ZnSW5mb3MkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NlbGVjdGllSW5mb3NdPVwic2VsZWN0aWVJbmZvcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbY2xpY2thYmxlSWRzXT1cImNsaWNrYWJsZUlkc1wiXG4gICAgICAgICAgICBbcmlnaHRDbGlja2FibGVJZHNdPVwicmlnaHRDbGlja2FibGVJZHNcIlxuICAgICAgICAgICAgW3BvcG92ZXJJbmZvc109XCJwb3BvdmVySW5mb3NcIlxuICAgICAgICAgICAgW2lubGluZURnbkNzc0ltcG9ydF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbdXNlQ2xpY2tBcmVhXT1cInVzZUNsaWNrQXJlYVwiXG4gICAgICAgICAgICBbem9vbVNjYWxlU2Vuc2l0aXZpdHldPVwiMC4yNVwiXG4gICAgICAgICAgICAoY2xpY2tIYW5kbGVyKT1cImhhbmRsZUlteHZpZXdDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChyaWdodENsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3UmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICA+PC9pbXgtdmlld2VyPlxuXG48dWwgaWQ9XCJjb250ZXh0TWVudVwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgW25nU3R5bGVdPVwiY29udGV4dE1lbnVTdHlsZVwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbnRleHRNZW51QWN0aW9uc1wiPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrKClcIj57e2FjdGlvbi5sYWJlbH19PC9hPjwvbGk+XG48L3VsPlxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXZpc3VhbGlzYXRpZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvY29tcG9uZW50cy9zdmctdmlzdWFsaXNhdGllL3N2Zy12aXN1YWxpc2F0aWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvc3ZnLXZpc3VhbGlzYXRpZS9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0UsT0FBTyxFQUFFLGFBQWEsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUs1RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDaEIsYUFBYSxFQUFFLGtCQUFrQixFQUNqQyxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMkJBQTJCLEVBQzNCLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDcEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFHaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1B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QUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0I7UUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztRQUNoRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsZUFBZSxFQUFFO2tCQUNsRixXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLHFDQUFxQyxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUNELE9BQU8saUJBQWlCLENBQUM7SUFDN0IsQ0FBQztJQUVPLFFBQVEsQ0FBQyxhQUFxQztRQUNsRCxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDOzhHQXpSUSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw2UEM3Q3JDLHczQkFpQkE7OzJGRDRCYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0ksa0JBQWtCO2lOQU1uQixrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFMkIsU0FBUztzQkFBekMsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbXhWaWV3ZXJDb21wb25lbnQsIFBvcG92ZXJJbmZvLCBTZWxlY3RpZUV2ZW50LCBTdmdJbmZvIH0gZnJvbSAnQGxveGlhL2lteC12aWV3ZXInO1xuaW1wb3J0IHsgZG9tZWluLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFsdGVybmF0aWVmUml0RGVlbCB9IGZyb20gJy4uLy4uL21vZGVsL2FsdGVybmF0aWVmLXJpdC1kZWVsJztcbmltcG9ydCB7IE9uZ2VwbGFuZGVBY3RpZSB9IGZyb20gJy4uLy4uL21vZGVsL29uZ2VwbGFuZGUtYWN0aWUnO1xuaW1wb3J0IHsgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB9IGZyb20gJy4uLy4uL21vZGVsL3JpandlZ3BsYW4tcmlqd2VnLWR3YW5nLWNvbWJpbmF0aWUnO1xuaW1wb3J0IHsgUml0ZGVlbCB9IGZyb20gJy4uLy4uL21vZGVsL3JpdGRlZWwnO1xuaW1wb3J0IHsgU2Vpbk9wUml0ZGVlbCB9IGZyb20gJy4uLy4uL21vZGVsL3NlaW4tb3Atcml0ZGVlbCc7XG5pbXBvcnQgeyBBY3RpZSB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld2VyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQWRkT25nZXBsYW5kZUFjdGllLFxuICAgIEJlcGFhbE9uZ2VwbGFuZGVBY3RpZXMsXG4gICAgQmV3ZWdpbmdJbnZvZWdlbixcbiAgICBDbGVhclByb2dyZXNzLCBTZXRTZWxlY3RlZFJpdGRlZWwsXG4gICAgbmF2aWdlZXJCdWl0ZW5SaXQsXG4gICAgUmVzZXROaWV1d2VSb3V0ZSxcbiAgICBTZXRBY3RpZU9wUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0QWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRBbHRlcm5hdGlldmVuU2VsZWN0aWVJZHMsXG4gICAgU2V0QmVnaW5TZWluUmlnaHRDbGlja2FibGVJZHMsXG4gICAgU2V0QmVnaW5TZWluU2VsZWN0aWVJZHMsXG4gICAgU2V0RWluZFNlaW5lbkNsaWNrYWJsZUlkcyxcbiAgICBTZXRFaW5kU2VpblNlbGVjdGllSWRzLFxuICAgIFNldEdlYnJva2VuUml0U2VsZWN0aWVJZHMsXG4gICAgU2V0R2VwbGFuZGVBY3RpZXMsXG4gICAgU2V0TmlldXdSb3V0ZUVpbmRTZWluLFxuICAgIFNldFJpdFNlbGVjdGllSWRzXG59IGZyb20gJy4uLy4uL3N0YXRlL2FjdGlvbnMvYWN0aW9ucyc7XG5pbXBvcnQgeyByaXRkZWVsSW52b2VnZW4sIHNldEFsdGVybmF0aWV2ZVJpdERlbGVuIH0gZnJvbSAnLi4vLi4vc3RhdGUvYWN0aW9ucy9yaXRkZWxlbi5hY3Rpb25zJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5pbXBvcnQgeyBBY3RpZUhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWwvYWN0aWUtaGVscGVyJztcbmltcG9ydCB7IEFjdGllUG9wb3ZlckJlcGFsZXIgfSBmcm9tICcuLi8uLi91dGlsL2FjdGllLXBvcG92ZXItYmVwYWxlcic7XG5pbXBvcnQgeyBBcnJheU11bHRpbWFwIH0gZnJvbSAnLi4vLi4vdXRpbC9tdWx0aS1tYXAnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3N2Zy12aXN1YWxpc2F0aWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdmctdmlzdWFsaXNhdGllLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU3ZnVmlzdWFsaXNhdGllQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgbmlldEdlcGxhbmRlQWN0aWVzOiBBY3RpZVtdO1xuICAgIEBJbnB1dCgpIHVzZUNsaWNrQXJlYTogYm9vbGVhbjtcblxuICAgIEBWaWV3Q2hpbGQoJ2lteHZpZXdlcmNvbnRhaW5lcicpIGlteHZpZXdlcjogSW14Vmlld2VyQ29tcG9uZW50O1xuXG4gICAgc3ZnSW5mb3MkOiBPYnNlcnZhYmxlPFN2Z0luZm9bXT4gPSB0aGlzLnN0b3JlLnNlbGVjdCgnc3ZnSW5mb3MnKTtcbiAgICBwb3BvdmVySW5mb3M6IFBvcG92ZXJJbmZvW10gPSBbXTtcbiAgICBjbGlja2FibGVJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICByaWdodENsaWNrYWJsZUlkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb250ZXh0TWVudUFjdGlvbnM6IGFueSA9IFtdO1xuICAgIGNvbnRleHRNZW51U3R5bGU6IGFueSA9IHsgZGlzcGxheTogJ25vbmUnIH07XG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG5cbiAgICBwcml2YXRlIHB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbCA9IG5ldyBNYXA8c3RyaW5nLCBTZWluT3BSaXRkZWVsPigpO1xuICAgIHByaXZhdGUgcHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUgPSBuZXcgTWFwPHN0cmluZywgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZT4oKTtcbiAgICBwcml2YXRlIHB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUgPSBuZXcgTWFwPHN0cmluZywgQWx0ZXJuYXRpZWZSaXREZWVsPigpO1xuXG4gICAgcHJpdmF0ZSBvbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwdWJsaWMgdmlld2VyQ29udHJvbHNTZXJ2aWNlOiBWaWV3ZXJDb250cm9sU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGFjdGllSGVscGVyOiBBY3RpZUhlbHBlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMub25SaXRkZWxlblVwZGF0ZSgpO1xuICAgICAgICB0aGlzLnRyaWdnZXJDbGlja2FibGVJZEJlcGFsaW5nKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlclJpZ2h0Q2xpY2thYmxlSWRCZXBhbGluZygpO1xuICAgICAgICB0aGlzLmhhbmRsZU5pZXV3ZVJvdXRlVG9lZ2V2b2VnZCgpO1xuICAgICAgICB0aGlzLnNldHVwVHJpZ2dlclBvcG92ZXJCZXBhbGluZygpO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdlZGl0YWJsZScpLnN1YnNjcmliZShlZGl0YWJsZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRhYmxlID0gZWRpdGFibGU7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5zdG9yZS5zZWxlY3QoJ29uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUob25nZXBsYW5kZUFjdGllc0JlcGFhbGQgPT4gdGhpcy5vbmdlcGxhbmRlQWN0aWVzQmVwYWFsZCA9IG9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdmb2N1c0lkcycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKGZvY3VzSWRzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNJZHMgJiYgdGhpcy5pbXh2aWV3ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXh2aWV3ZXIuZm9jdXNPbklkcyhmb2N1c0lkcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGV4dE1lbnUnKS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4gdGhpcy5oaWRlQ29udGV4dE1lbnUoKSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3Q2xpY2soZXZ0OiBTZWxlY3RpZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHB1aWMgPSBldnQuaWQ7XG4gICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVJpdERlZWwgPSB0aGlzLnB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUuZ2V0KHB1aWMpO1xuICAgICAgICBjb25zdCBjb21iaW5hdGllID0gdGhpcy5wdWljTmFhckVpbmRTZWluQ29tYmluYXRpZS5nZXQocHVpYyk7XG4gICAgICAgIGlmIChhbHRlcm5hdGlldmVSaXREZWVsKSB7XG4gICAgICAgICAgICBhbHRlcm5hdGlldmVSaXREZWVsLnJpdERlZWwuYWN0aWVzLmZvckVhY2goYWN0aWUgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHB1aWNzID0gdGhpcy5hY3RpZUhlbHBlci5iZXBhYWxQdWljc1Zvb3JBY3RpZShhY3RpZSk7XG4gICAgICAgICAgICAgICAgaWYgKHB1aWNzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChBZGRPbmdlcGxhbmRlQWN0aWUobmV3IE9uZ2VwbGFuZGVBY3RpZShhY3RpZSwgcHVpY3MpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHNldEFsdGVybmF0aWV2ZVJpdERlbGVuKGFsdGVybmF0aWV2ZVJpdERlZWwpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb21iaW5hdGllKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldE5pZXV3Um91dGVFaW5kU2Vpbihjb21iaW5hdGllKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByYW5kID0gdGhpcy5zYm1TZXJ2aWNlLmdldFRvcG9sb2d5RWxlbWVudEJ5UHVpYyhwdWljKTtcbiAgICAgICAgICAgIGlmIChyYW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuYXZpZ2VlckJ1aXRlblJpdChwdWljKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFNlbGVjdGVkUml0ZGVlbCh1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbXh2aWV3UmlnaHRDbGljayhldnQ6IFNlbGVjdGllRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm4gPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGFydFNlaW5PcFJpdGRlZWwgPSB0aGlzLnB1aWNOYWFyQmVnaW5TZWluUml0ZGVlbC5nZXQoZXZ0LmlkKTtcbiAgICAgICAgICAgIGlmIChzdGFydFNlaW5PcFJpdGRlZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudUFjdGlvbnMucHVzaCh7IGxhYmVsOiAnYmV3ZWdpbmcgaW52b2VnZW4nLCBjbGljazogZm4gfSk7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGxlZnQ6IChldnQuZXZlbnQub2Zmc2V0WCAtIDUpICsgJ3B4JyxcbiAgICAgICAgICAgIHRvcDogKGV2dC5ldmVudC5vZmZzZXRZIC0gNSkgKyAncHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGJld2VnaW5nSW52b2VnZW4oc3RhcnRTZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQmV3ZWdpbmdJbnZvZWdlbihzdGFydFNlaW5PcFJpdGRlZWwsIHRoaXMucHVpY05hYXJFaW5kU2VpbkNvbWJpbmF0aWUpKTtcbiAgICB9XG5cbiAgICBoaWRlQ29udGV4dE1lbnUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdHlsZSA9IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVOaWV1d2VSb3V0ZVRvZWdldm9lZ2QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCduaWV1d2VSb3V0ZScpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuaWV1d2VSb3V0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmlldXdlUm91dGUuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFJlc2V0TmlldXdlUm91dGUoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKHJpdGRlZWxJbnZvZWdlbihuaWV1d2VSb3V0ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUml0ZGVsZW5VcGRhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLnN1YnNjcmliZShyaXREZWxlbiA9PiB7XG4gICAgICAgICAgICBpZiAocml0RGVsZW4gJiYgcml0RGVsZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsUm91dGVIaWdobGlnaHRzKHJpdERlbGVuKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlcGFhbENvbnRleHRNZW51Vm9vckJlZ2luU2VpbmVuKHJpdERlbGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9uZ2VwbGFuZGVBY3RpZXNCZXBhYWxkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVwYWFsT25nZXBsYW5kZUFjdGllcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJpZ2dlckNsaWNrYWJsZUlkQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoJ2FsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMnKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdlaW5kU2VpbmVuQ2xpY2thYmxlSWRzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnY29ubmVjdG9yQ2xpY2thYmxlSWRzJyldXG4gICAgICAgICkuc3Vic2NyaWJlKChbYWx0ZXJuYXRpZXZlbkNsaWNrYWJsZUlkcywgZWluZFNlaW5lbkNsaWNrYWJsZUlkcywgY29ubmVjdG9yQ2xpY2thYmxlSWRzXSkgPT5cbiAgICAgICAgICAgIHRoaXMuY2xpY2thYmxlSWRzID0gWy4uLmFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHMsIC4uLmVpbmRTZWluZW5DbGlja2FibGVJZHMsIC4uLmNvbm5lY3RvckNsaWNrYWJsZUlkc10pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJSaWdodENsaWNrYWJsZUlkQmVwYWxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGNvbWJpbmVMYXRlc3QoW3RoaXMuc3RvcmUuc2VsZWN0KCdiZWdpblNlaW5SaWdodENsaWNrYWJsZUlkcycpXVxuICAgICAgICApLnN1YnNjcmliZSgoW2JlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgICAgICAgICAgICAgIGlkcy5wdXNoKC4uLmJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0Q2xpY2thYmxlSWRzID0gaWRzO1xuICAgICAgICAgICAgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwVHJpZ2dlclBvcG92ZXJCZXBhbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgncml0RGVsZW4nKSxcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdvbmdlcGxhbmRlQWN0aWVzJyksXG4gICAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCgnZ2VwbGFuZGVBY3RpZXMnKV1cbiAgICAgICAgKS5zdWJzY3JpYmUoKFtyaXRkZWxlbiwgb25nZXBsYW5kZUFjdGllcywgZ2VwbGFuZGVBY3RpZXNdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJpdGRlbGVuICYmIHJpdGRlbGVuLmxlbmd0aCA+IDAgJiYgZ2VwbGFuZGVBY3RpZXMgJiYgb25nZXBsYW5kZUFjdGllcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJJbmZvcyA9IEFjdGllUG9wb3ZlckJlcGFsZXIuYmVwYWFsUG9wb3ZlckluZm9zKHJpdGRlbGVuLCBnZXBsYW5kZUFjdGllcywgb25nZXBsYW5kZUFjdGllcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBiZXBhYWxPbmdlcGxhbmRlQWN0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uaWV0R2VwbGFuZGVBY3RpZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQmVwYWFsT25nZXBsYW5kZUFjdGllcyh0aGlzLm5pZXRHZXBsYW5kZUFjdGllcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxDb250ZXh0TWVudVZvb3JCZWdpblNlaW5lbihyaXREZWxlbjogUml0ZGVlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zYm1TZXJ2aWNlLmlzUmVhZHkoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlkcyA9IFtdO1xuICAgICAgICByaXREZWxlbi5maWx0ZXIocml0RGVlbCA9PiByaXREZWVsLmlzWmljaHRiYWFyKCkpLmZvckVhY2gocml0RGVlbCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWljcyA9IHJpdERlZWwuZ2V0U2VpbmVuKCkuZmxhdE1hcChzZWluID0+IHRoaXMudmVyemFtZWxCZWdpblNlaW5JbmZvcm1hdGllKHNlaW4sIHJpdERlZWwpKTtcbiAgICAgICAgICAgIGlkcyA9IGlkcy5jb25jYXQocHVpY3MpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEJlZ2luU2VpblJpZ2h0Q2xpY2thYmxlSWRzKGlkcykpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEJlZ2luU2VpblNlbGVjdGllSWRzKFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0RWluZFNlaW5TZWxlY3RpZUlkcyhbXSkpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEVpbmRTZWluZW5DbGlja2FibGVJZHMoW10pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZlcnphbWVsQmVnaW5TZWluSW5mb3JtYXRpZShzZWluOiBkb21laW4uU2Vpbiwgcml0RGVlbDogUml0ZGVlbCk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHVpY3M6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IHNiU2VpbiA9IHRoaXMuc2JtU2VydmljZS5nZXRTQlNlaW4oc2Vpbik7XG4gICAgICAgIGlmIChzYlNlaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHB1aWMgPSBzYlNlaW4uZ2V0UHVpYygpO1xuICAgICAgICAgICAgcHVpY3MucHVzaChwdWljKTtcbiAgICAgICAgICAgIHRoaXMucHVpY05hYXJCZWdpblNlaW5SaXRkZWVsLnNldChwdWljLCBuZXcgU2Vpbk9wUml0ZGVlbChzZWluLCByaXREZWVsKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWx0U2JTZWluID0gdGhpcy5zYm1TZXJ2aWNlLmdldFRlY2huaXNjaEFsdGVybmF0aWVmU0JTZWluKHNiU2Vpbik7XG4gICAgICAgIGlmIChhbHRTYlNlaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IHB1aWMgPSBhbHRTYlNlaW4uZ2V0UHVpYygpO1xuICAgICAgICAgICAgcHVpY3MucHVzaChwdWljKTtcbiAgICAgICAgICAgIGNvbnN0IHJ3cCA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRSaWp3ZWdwbGFuKGFsdFNiU2Vpbi5nZXRQUExHKCkpO1xuICAgICAgICAgICAgY29uc3QgZG9tZWluU2VpbiA9IHJ3cC5nZXRCZWdpblNlaW4oYWx0U2JTZWluLmdldE5hbWUoKSk7XG4gICAgICAgICAgICAvLyBzZWluIGthbiBuaWV0IGFsdGlqZCBnZXZvbmRlbiB3b3JkZW4gb21kYXQgZXIgbmlldCBhbHRpamQgZWVuIHJpandlZyB2YW5hZiBkaXQgc2VpbiBpcywgYmlqdiBiaWogdmVlcndpc3NlbC5cbiAgICAgICAgICAgIGlmIChkb21laW5TZWluKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wdWljTmFhckJlZ2luU2VpblJpdGRlZWwuc2V0KHB1aWMsIG5ldyBTZWluT3BSaXRkZWVsKGRvbWVpblNlaW4sIHJpdERlZWwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHVpY3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiZXBhYWxSb3V0ZUhpZ2hsaWdodHMocml0RGVsZW46IFJpdGRlZWxbXSk6IHZvaWQge1xuICAgICAgICBsZXQgcml0U2VsZWN0aWVQdWljcyA9IFtdO1xuICAgICAgICBjb25zdCBhY3RpZU9wUml0U2VsZWN0aWVQdWljcyA9IG5ldyBBcnJheU11bHRpbWFwPEFjdGllLCBzdHJpbmc+KCk7XG4gICAgICAgIGxldCBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MgPSBbXTtcbiAgICAgICAgY29uc3QgYWx0ZXJuYXRpZXZlUm91dGVQdWljcyA9IFtdO1xuICAgICAgICBjb25zdCBjbGlja2FibGVJZHMgPSBbXTtcbiAgICAgICAgbGV0IGxhYXRzdGVOYWFyU3Bvb3I6IHN0cmluZztcbiAgICAgICAgY29uc3QgYmVzdGFhdFVpdDFSaXRkZWVsID0gcml0RGVsZW4ubGVuZ3RoID09PSAxO1xuICAgICAgICBsZXQgZ2Vicm9rZW5SaXQgPSBmYWxzZTtcbiAgICAgICAgcml0RGVsZW4uZm9yRWFjaChyaXREZWVsID0+IHtcbiAgICAgICAgICAgIGlmIChyaXREZWVsLmlzWmljaHRiYWFyKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYXA6IEFycmF5TXVsdGltYXA8QWN0aWUsIHN0cmluZz4gPSB0aGlzLmFjdGllSGVscGVyLmJlcGFhbEFjdGllUHVpY3NVaXRSaXRkZWVsKHJpdERlZWwpO1xuICAgICAgICAgICAgICAgIG1hcC5rZXlzKCkuZm9yRWFjaChrZXkgPT4gYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MucHV0QWxsKGtleSwgbWFwLmdldChrZXkpKSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpc0dlYnJva2VuUml0ZGVlbCA9ICFiZXN0YWF0VWl0MVJpdGRlZWwgJiYgdGhpcy5pc0dlYnJva2VuUml0ZGVlbChyaXREZWVsLCBsYWF0c3RlTmFhclNwb29yKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwdWljcyA9IFsuLi50aGlzLmdldFB1aWNzKHJpdERlZWwuZ2V0VG9wb2xvZ2llRWxlbWVudGVuKCkpLFxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnNibVNlcnZpY2UuZ2V0UHVpY3NWb29yU2VpbmVuSW5Sb3V0ZShyaXREZWVsLmdldFJvdXRlKCkpXTtcblxuICAgICAgICAgICAgICAgIGlmIChwdWljcyAmJiBpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgICAgICAgICBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MgPSBnZWJyb2tlblJpdFNlbGVjdGllUHVpY3MuY29uY2F0KHB1aWNzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHB1aWNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJpdFNlbGVjdGllUHVpY3MgPSByaXRTZWxlY3RpZVB1aWNzLmNvbmNhdChwdWljcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5iZXBhYWxBbHRlcm5hdGlldmVuKHJpdERlZWwsIGNsaWNrYWJsZUlkcywgYWx0ZXJuYXRpZXZlUm91dGVQdWljcyk7XG5cbiAgICAgICAgICAgICAgICBnZWJyb2tlblJpdCA9IGdlYnJva2VuUml0IHx8IGlzR2Vicm9rZW5SaXRkZWVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFhdHN0ZU5hYXJTcG9vciA9IHJpdERlZWwuZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRWYWxpZGVSaXQoIWdlYnJva2VuUml0KTtcblxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEdlcGxhbmRlQWN0aWVzKGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzKSk7XG4gICAgICAgIGNvbnN0IGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkgPSBVdGlscy5mbGF0TWFwKEFycmF5LmZyb20oYWN0aWVPcFJpdFNlbGVjdGllUHVpY3MudmFsdWVzKCkpLCB4ID0+IHgpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEFjdGllT3BSaXRTZWxlY3RpZUlkcyhhY3RpZU9wUml0U2VsZWN0aWVQdWljc0FycmF5KSk7XG4gICAgICAgIHJpdFNlbGVjdGllUHVpY3MgPSByaXRTZWxlY3RpZVB1aWNzLmZpbHRlcihpdGVtID0+IGFjdGllT3BSaXRTZWxlY3RpZVB1aWNzQXJyYXkuaW5kZXhPZihpdGVtKSA8IDApOyAvLyBtYWtlIG11dHVhbGx5IGV4Y2x1c2l2ZVxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldFJpdFNlbGVjdGllSWRzKHJpdFNlbGVjdGllUHVpY3MpKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChTZXRHZWJyb2tlblJpdFNlbGVjdGllSWRzKGdlYnJva2VuUml0U2VsZWN0aWVQdWljcykpO1xuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFNldEFsdGVybmF0aWV2ZW5DbGlja2FibGVJZHModGhpcy5lZGl0YWJsZSA/IGNsaWNrYWJsZUlkcyA6IFtdKSk7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goU2V0QWx0ZXJuYXRpZXZlblNlbGVjdGllSWRzKHRoaXMuZWRpdGFibGUgPyBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzIDogW10pKTtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDbGVhclByb2dyZXNzKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVwYWFsQWx0ZXJuYXRpZXZlbihyaXREZWVsOiBSaXRkZWVsLCBjbGlja2FibGVJZHM6IHN0cmluZ1tdLCBhbHRlcm5hdGlldmVSb3V0ZVB1aWNzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICByaXREZWVsLmdldEFsdGVybmF0aWV2ZVJvdXRlcygpPy5mb3JFYWNoKGFsdGVybmF0aWV2ZVJvdXRlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsdGVybmF0aWV2ZVRvcG9FbGVtZW50ZW4gPVxuICAgICAgICAgICAgICAgIHRoaXMuc2JtU2VydmljZS5iZXBhYWxBbHRlcm5hdGl2ZVJvdXRlSGlnaGxpZ2h0cyhhbHRlcm5hdGlldmVSb3V0ZSwgcml0RGVlbC5nZXRUb3BvbG9naWVFbGVtZW50ZW4oKSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFsdFB1aWNzID0gdGhpcy5nZXRQdWljcyhhbHRlcm5hdGlldmVUb3BvRWxlbWVudGVuKTtcbiAgICAgICAgICAgIGlmIChhbHRQdWljcykge1xuICAgICAgICAgICAgICAgIGNsaWNrYWJsZUlkcy5wdXNoKC4uLmFsdFB1aWNzKTtcbiAgICAgICAgICAgICAgICBhbHRQdWljcy5mb3JFYWNoKHB1aWMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1aWNOYWFyQWx0ZXJuYXRpZXZlUm91dGUuc2V0KHB1aWMsIG5ldyBBbHRlcm5hdGllZlJpdERlZWwocml0RGVlbCwgYWx0ZXJuYXRpZXZlUm91dGUpKTtcbiAgICAgICAgICAgICAgICAgICAgYWx0ZXJuYXRpZXZlUm91dGVQdWljcy5wdXNoKHB1aWMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzR2Vicm9rZW5SaXRkZWVsKHJpdERlZWwsIGxhYXRzdGVOYWFyU3Bvb3IpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNHZWJyb2tlblJpdGRlZWwgPSAhKCFsYWF0c3RlTmFhclNwb29yIHx8IHJpdERlZWwuZ2V0VmFuUHJsU3Bvb3IoKSA9PT0gbGFhdHN0ZU5hYXJTcG9vcik7XG4gICAgICAgIGlmIChpc0dlYnJva2VuUml0ZGVlbCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1JpdCB2YW4gJyArIHJpdERlZWwuZ2V0VmFuUHJsU3Bvb3IoKSArICcgbmFhciAnICsgcml0RGVlbC5nZXROYWFyUHJsU3Bvb3IoKVxuICAgICAgICAgICAgICAgICsgJyBpbiBwcGxnICcgKyByaXREZWVsLmdldFBwbGcoKSArICcgc2x1aXQgbmlldCBhYW4gb3Agdm9yaWdlIGJld2VnaW5nLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0dlYnJva2VuUml0ZGVlbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFB1aWNzKHRvcG9FbGVtZW50ZW46IHNiYmxhZC5IYXNJZGVudGlmaWVyW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0b3BvRWxlbWVudGVuLm1hcChlID0+IGUuZ2V0UHVpYygpKTtcbiAgICB9XG59XG4iLCI8aW14LXZpZXdlciAjaW14dmlld2VyY29udGFpbmVyXG4gICAgICAgICAgICBbc3ZnSW5mb109XCJzdmdJbmZvcyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbc2VsZWN0aWVJbmZvc109XCJ2aWV3ZXJDb250cm9sc1NlcnZpY2Uuc2VsZWN0aWVJbmZvc1wiXG4gICAgICAgICAgICBbY2xpY2thYmxlSWRzXT1cImNsaWNrYWJsZUlkc1wiXG4gICAgICAgICAgICBbcmlnaHRDbGlja2FibGVJZHNdPVwicmlnaHRDbGlja2FibGVJZHNcIlxuICAgICAgICAgICAgW3BvcG92ZXJJbmZvc109XCJwb3BvdmVySW5mb3NcIlxuICAgICAgICAgICAgW2lubGluZURnbkNzc0ltcG9ydF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbdXNlQ2xpY2tBcmVhXT1cInVzZUNsaWNrQXJlYVwiXG4gICAgICAgICAgICBbem9vbVNjYWxlU2Vuc2l0aXZpdHldPVwiMC4yNVwiXG4gICAgICAgICAgICAoY2xpY2tIYW5kbGVyKT1cImhhbmRsZUlteHZpZXdDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIChyaWdodENsaWNrSGFuZGxlcik9XCJoYW5kbGVJbXh2aWV3UmlnaHRDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICA+PC9pbXgtdmlld2VyPlxuXG48dWwgaWQ9XCJjb250ZXh0TWVudVwiIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCIgW25nU3R5bGVdPVwiY29udGV4dE1lbnVTdHlsZVwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGNvbnRleHRNZW51QWN0aW9uc1wiPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrKClcIj57e2FjdGlvbi5sYWJlbH19PC9hPjwvbGk+XG48L3VsPlxuIl19
@@ -1,6 +1,5 @@
1
- import { Component, EventEmitter, Input } from '@angular/core';
1
+ import { Component, Input } from '@angular/core';
2
2
  import { Subscription } from 'rxjs';
3
- import { filter, tap } from 'rxjs/operators';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "@ngrx/store";
6
5
  import * as i2 from "../../services/viewer-control.service";
@@ -13,12 +12,9 @@ export class ViewerControlsComponent {
13
12
  this.viewerControlsService = viewerControlsService;
14
13
  this.bewegingUtils = bewegingUtils;
15
14
  this.paginationSize = 4;
16
- this.treinpad = undefined;
17
- this.goedgekeurd = new EventEmitter();
18
15
  this.printing$ = this.viewerControlsService.isPrinting$();
19
16
  this.valideRit$ = this.viewerControlsService.isValideRit$();
20
17
  this.subscriptions = new Subscription();
21
- this.editable = false;
22
18
  this.subscriptions.add(this.store.select('editable').subscribe(editable => this.editable = editable));
23
19
  }
24
20
  ngOnChanges({ treinpad }) {
@@ -27,29 +23,30 @@ export class ViewerControlsComponent {
27
23
  }
28
24
  }
29
25
  showGoedkeuren() {
30
- return this.editable;
26
+ return this.editable && this.viewerControlsService.selectieInfos.length !== 0;
31
27
  }
32
28
  goedkeurenClick() {
33
- this.store.select('ritDelen').pipe(filter(ritdelen => !!ritdelen), tap(ritDelen => {
34
- if (this.treinpad) {
35
- delete this.treinpad.aantalRitActies;
36
- this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);
37
- this.goedgekeurd.emit(this.treinpad);
38
- this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
39
- }
40
- })).subscribe();
29
+ const ritDelen = this.viewerControlsService.ritdelen;
30
+ if (ritDelen) {
31
+ delete this.treinpad.aantalRitActies;
32
+ this.treinpad.bewegingen = this.bewegingUtils.extractBewegingenUitRitdelen(ritDelen, this.viewerControlsService.origineelTreinPad.bewegingen);
33
+ this.goedgekeurd.emit(this.treinpad);
34
+ this.viewerControlsService.setOrigineelTreinPad(this.treinpad);
35
+ }
41
36
  }
42
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.BewegingUtils }], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ViewerControlsComponent, selector: "viewer-controls", inputs: { paginationSize: "paginationSize", treinpad: "treinpad", goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.CarouselControlsComponent, selector: "carousel-controls", inputs: ["paginationSize", "sideNavOpen"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlsComponent, deps: [{ token: i1.Store }, { token: i2.ViewerControlService }, { token: i3.BewegingUtils }], target: i0.ɵɵFactoryTarget.Component }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: ViewerControlsComponent, selector: "viewer-controls", inputs: { paginationSize: "paginationSize", iaversieinfo: "iaversieinfo", treinpad: "treinpad", goedgekeurd: "goedgekeurd" }, usesOnChanges: true, ngImport: i0, template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.CarouselControlsComponent, selector: "carousel-controls", inputs: ["paginationSize", "iaversieinfo", "sideNavOpen"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] }); }
44
39
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ViewerControlsComponent, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ViewerControlsComponent, decorators: [{
46
41
  type: Component,
47
- args: [{ selector: 'viewer-controls', template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"] }]
42
+ args: [{ selector: 'viewer-controls', template: "<button id=\"toonSideNavKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm open-sidenav-button\"\n (click)=\"viewerControlsService.toggleSideNavVisible()\"\n [class.active]=\"viewerControlsService.sideNavOpen$ | async\"\n [hidden]=\"printing$ | async\">Ritdetails\n</button>\n<button *ngIf=\"showGoedkeuren()\"\n id=\"goedkeurenKnop\"\n class=\"loxia-btn loxia-btn-primary loxia-btn-sm goedkeuren-button\"\n (click)=\"goedkeurenClick()\"\n [disabled]=\"(valideRit$ | async ) === false\"\n [hidden]=\"printing$ | async\">Goedkeuren\n</button>\n\n<carousel-controls [paginationSize]=\"paginationSize\"\n [iaversieinfo]=\"iaversieinfo\"\n [sideNavOpen]=\"viewerControlsService.sideNavOpen$ | async\">\n</carousel-controls>\n", styles: [".open-sidenav-button.active{visibility:hidden}.open-sidenav-button,.goedkeuren-button{position:absolute;top:15px;z-index:600}.open-sidenav-button{left:15px}.goedkeuren-button{right:15px}\n"] }]
48
43
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.ViewerControlService }, { type: i3.BewegingUtils }], propDecorators: { paginationSize: [{
49
44
  type: Input
45
+ }], iaversieinfo: [{
46
+ type: Input
50
47
  }], treinpad: [{
51
48
  type: Input
52
49
  }], goedgekeurd: [{
53
50
  type: Input
54
51
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci1jb250cm9scy92aWV3ZXItY29udHJvbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyLWNvbnRyb2xzL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVc3QyxNQUFNLE9BQU8sdUJBQXVCO0lBV2hDLFlBQW9CLEtBQTRCLEVBQzdCLHFCQUEyQyxFQUMxQyxhQUE0QjtRQUY1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUM3QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzFDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBWnZDLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLGFBQVEsR0FBb0IsU0FBUyxDQUFDO1FBQ3RDLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbEUsY0FBUyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyRCxlQUFVLEdBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhELGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBS2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQWlCO1FBQ25DLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDOUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUM5QixHQUFHLENBQUUsUUFBUSxDQUFDLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztnQkFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM5SSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0F0Q1EsdUJBQXVCO21HQUF2Qix1QkFBdUIsNEtDZHBDLHl3QkFpQkE7OzRGREhhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxpQkFBaUI7eUlBS2xCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluZnJhTW9kZWwsIFJpdCB9IGZyb20gJy4uLy4uL29wdGltbyc7XG5pbXBvcnQgeyBCZXdlZ2luZ1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmV3ZWdpbmctdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3ZXJDb250cm9sU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZpZXdlci1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgTXN0RWRpdG9yU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZS9tc3QtZWRpdG9yLXN0YXRlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd2aWV3ZXItY29udHJvbHMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi92aWV3ZXItY29udHJvbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdlckNvbnRyb2xzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBwYWdpbmF0aW9uU2l6ZSA9IDQ7XG4gICAgQElucHV0KCkgdHJlaW5wYWQ6IFJpdCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBnb2VkZ2VrZXVyZDogRXZlbnRFbWl0dGVyPFJpdD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJpdD4oKTtcblxuICAgIHByaW50aW5nJCA9IHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLmlzUHJpbnRpbmckKCk7XG4gICAgdmFsaWRlUml0JCAgPSB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5pc1ZhbGlkZVJpdCQoKTtcblxuICAgIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgZWRpdGFibGUgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmU6IFN0b3JlPE1zdEVkaXRvclN0YXRlPixcbiAgICAgICAgICAgICAgICBwdWJsaWMgdmlld2VyQ29udHJvbHNTZXJ2aWNlOiBWaWV3ZXJDb250cm9sU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIGJld2VnaW5nVXRpbHM6IEJld2VnaW5nVXRpbHMpIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLnN0b3JlLnNlbGVjdCgnZWRpdGFibGUnKS5zdWJzY3JpYmUoZWRpdGFibGUgPT4gdGhpcy5lZGl0YWJsZSA9IGVkaXRhYmxlKSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoeyB0cmVpbnBhZCB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICh0cmVpbnBhZCAmJiB0aGlzLnRyZWlucGFkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRPcmlnaW5lZWxUcmVpblBhZCh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dHb2Vka2V1cmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lZGl0YWJsZTtcbiAgICB9XG5cbiAgICBnb2Vka2V1cmVuQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KCdyaXREZWxlbicpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIocml0ZGVsZW4gPT4gISFyaXRkZWxlbiksXG4gICAgICAgICAgICB0YXAoIHJpdERlbGVuID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVpbnBhZCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy50cmVpbnBhZC5hYW50YWxSaXRBY3RpZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJlaW5wYWQuYmV3ZWdpbmdlbiA9IHRoaXMuYmV3ZWdpbmdVdGlscy5leHRyYWN0QmV3ZWdpbmdlblVpdFJpdGRlbGVuKHJpdERlbGVuLCB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5vcmlnaW5lZWxUcmVpblBhZC5iZXdlZ2luZ2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nb2VkZ2VrZXVyZC5lbWl0KHRoaXMudHJlaW5wYWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5zZXRPcmlnaW5lZWxUcmVpblBhZCh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG59XG4iLCI8YnV0dG9uIGlkPVwidG9vblNpZGVOYXZLbm9wXCJcbiAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLXByaW1hcnkgbG94aWEtYnRuLXNtIG9wZW4tc2lkZW5hdi1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidmlld2VyQ29udHJvbHNTZXJ2aWNlLnRvZ2dsZVNpZGVOYXZWaXNpYmxlKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luY1wiXG4gICAgICAgIFtoaWRkZW5dPVwicHJpbnRpbmckIHwgYXN5bmNcIj5SaXRkZXRhaWxzXG48L2J1dHRvbj5cbjxidXR0b24gKm5nSWY9XCJzaG93R29lZGtldXJlbigpXCJcbiAgICAgICAgaWQ9XCJnb2Vka2V1cmVuS25vcFwiXG4gICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1wcmltYXJ5IGxveGlhLWJ0bi1zbSBnb2Vka2V1cmVuLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb2Vka2V1cmVuQ2xpY2soKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIodmFsaWRlUml0JCB8IGFzeW5jICkgPT09IGZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJwcmludGluZyQgfCBhc3luY1wiPkdvZWRrZXVyZW5cbjwvYnV0dG9uPlxuXG48Y2Fyb3VzZWwtY29udHJvbHMgW3BhZ2luYXRpb25TaXplXT1cInBhZ2luYXRpb25TaXplXCJcbiAgICAgICAgICAgICAgICAgICBbc2lkZU5hdk9wZW5dPVwidmlld2VyQ29udHJvbHNTZXJ2aWNlLnNpZGVOYXZPcGVuJCB8IGFzeW5jXCI+XG48L2Nhcm91c2VsLWNvbnRyb2xzPlxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2VyLWNvbnRyb2xzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9jb21wb25lbnRzL3ZpZXdlci1jb250cm9scy92aWV3ZXItY29udHJvbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL2NvbXBvbmVudHMvdmlld2VyLWNvbnRyb2xzL3ZpZXdlci1jb250cm9scy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFnQixLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFXcEMsTUFBTSxPQUFPLHVCQUF1QjtJQVloQyxZQUFvQixLQUE0QixFQUM3QixxQkFBMkMsRUFDMUMsYUFBNEI7UUFGNUIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7UUFDN0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWJ2QyxtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUs1QixjQUFTLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFeEQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBTS9CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFpQjtRQUNuQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0wsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxlQUFlO1FBQ1gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztRQUNyRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLDRCQUE0QixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNMLENBQUM7OEdBcENRLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDBNQ2JwQyw2ekJBa0JBOzsyRkRMYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0ksaUJBQWlCO3lJQUtsQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmZyYU1vZGVsLCBSaXQgfSBmcm9tICcuLi8uLi9vcHRpbW8nO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Jld2VnaW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld2VyQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92aWV3ZXItY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1zdEVkaXRvclN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvbXN0LWVkaXRvci1zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndmlld2VyLWNvbnRyb2xzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdmlld2VyLWNvbnRyb2xzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi92aWV3ZXItY29udHJvbHMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3ZXJDb250cm9sc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcGFnaW5hdGlvblNpemUgPSA0O1xuICAgIEBJbnB1dCgpIGlhdmVyc2llaW5mbzogSW5mcmFNb2RlbDtcbiAgICBASW5wdXQoKSB0cmVpbnBhZDogUml0O1xuICAgIEBJbnB1dCgpIGdvZWRnZWtldXJkOiBFdmVudEVtaXR0ZXI8Uml0PjtcblxuICAgIHByaW50aW5nJCA9IHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLmlzUHJpbnRpbmckKCk7XG4gICAgdmFsaWRlUml0JCAgPSB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5pc1ZhbGlkZVJpdCQoKTtcblxuICAgIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgZWRpdGFibGU6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JlOiBTdG9yZTxNc3RFZGl0b3JTdGF0ZT4sXG4gICAgICAgICAgICAgICAgcHVibGljIHZpZXdlckNvbnRyb2xzU2VydmljZTogVmlld2VyQ29udHJvbFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBiZXdlZ2luZ1V0aWxzOiBCZXdlZ2luZ1V0aWxzKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5zdG9yZS5zZWxlY3QoJ2VkaXRhYmxlJykuc3Vic2NyaWJlKGVkaXRhYmxlID0+IHRoaXMuZWRpdGFibGUgPSBlZGl0YWJsZSkpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKHsgdHJlaW5wYWQgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodHJlaW5wYWQgJiYgdGhpcy50cmVpbnBhZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3ZXJDb250cm9sc1NlcnZpY2Uuc2V0T3JpZ2luZWVsVHJlaW5QYWQodGhpcy50cmVpbnBhZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93R29lZGtldXJlbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgdGhpcy52aWV3ZXJDb250cm9sc1NlcnZpY2Uuc2VsZWN0aWVJbmZvcy5sZW5ndGggIT09IDA7XG4gICAgfVxuXG4gICAgZ29lZGtldXJlbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByaXREZWxlbiA9IHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLnJpdGRlbGVuO1xuICAgICAgICBpZiAocml0RGVsZW4pIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyZWlucGFkLmFhbnRhbFJpdEFjdGllcztcbiAgICAgICAgICAgIHRoaXMudHJlaW5wYWQuYmV3ZWdpbmdlbiA9IHRoaXMuYmV3ZWdpbmdVdGlscy5leHRyYWN0QmV3ZWdpbmdlblVpdFJpdGRlbGVuKHJpdERlbGVuLCB0aGlzLnZpZXdlckNvbnRyb2xzU2VydmljZS5vcmlnaW5lZWxUcmVpblBhZC5iZXdlZ2luZ2VuKTtcbiAgICAgICAgICAgIHRoaXMuZ29lZGdla2V1cmQuZW1pdCh0aGlzLnRyZWlucGFkKTtcbiAgICAgICAgICAgIHRoaXMudmlld2VyQ29udHJvbHNTZXJ2aWNlLnNldE9yaWdpbmVlbFRyZWluUGFkKHRoaXMudHJlaW5wYWQpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCI8YnV0dG9uIGlkPVwidG9vblNpZGVOYXZLbm9wXCJcbiAgICAgICAgY2xhc3M9XCJsb3hpYS1idG4gbG94aWEtYnRuLXByaW1hcnkgbG94aWEtYnRuLXNtIG9wZW4tc2lkZW5hdi1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwidmlld2VyQ29udHJvbHNTZXJ2aWNlLnRvZ2dsZVNpZGVOYXZWaXNpYmxlKClcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luY1wiXG4gICAgICAgIFtoaWRkZW5dPVwicHJpbnRpbmckIHwgYXN5bmNcIj5SaXRkZXRhaWxzXG48L2J1dHRvbj5cbjxidXR0b24gKm5nSWY9XCJzaG93R29lZGtldXJlbigpXCJcbiAgICAgICAgaWQ9XCJnb2Vka2V1cmVuS25vcFwiXG4gICAgICAgIGNsYXNzPVwibG94aWEtYnRuIGxveGlhLWJ0bi1wcmltYXJ5IGxveGlhLWJ0bi1zbSBnb2Vka2V1cmVuLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb2Vka2V1cmVuQ2xpY2soKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIodmFsaWRlUml0JCB8IGFzeW5jICkgPT09IGZhbHNlXCJcbiAgICAgICAgW2hpZGRlbl09XCJwcmludGluZyQgfCBhc3luY1wiPkdvZWRrZXVyZW5cbjwvYnV0dG9uPlxuXG48Y2Fyb3VzZWwtY29udHJvbHMgW3BhZ2luYXRpb25TaXplXT1cInBhZ2luYXRpb25TaXplXCJcbiAgICAgICAgICAgICAgICAgICBbaWF2ZXJzaWVpbmZvXT1cImlhdmVyc2llaW5mb1wiXG4gICAgICAgICAgICAgICAgICAgW3NpZGVOYXZPcGVuXT1cInZpZXdlckNvbnRyb2xzU2VydmljZS5zaWRlTmF2T3BlbiQgfCBhc3luY1wiPlxuPC9jYXJvdXNlbC1jb250cm9scz5cbiJdfQ==
@@ -16,7 +16,7 @@ export class KmRange {
16
16
  if (result.length >= 1) {
17
17
  return result[0];
18
18
  }
19
- return undefined;
19
+ return null;
20
20
  }
21
21
  heeftOverlap(kilometrering1, kilometrering2) {
22
22
  const vanKilometrering = KmRange.getKilometrering(kilometrering1.getKmLint(), this.vanKilometreringen);
@@ -36,4 +36,4 @@ export class KmRange {
36
36
  return endKmWaarde >= actieStartKmWaarde && actieEndKmWaarde >= startKmWaarde;
37
37
  }
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia20tcmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbW9kZWwva20tcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFlBQTJCLGVBQWdDLEVBQ2hDLGtCQUFtQyxFQUNuQyxrQkFBbUM7UUFGbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBaUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFpQjtJQUM5RCxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQWdDO1FBQzlELE9BQU8sSUFBSSxPQUFPLENBQUMsZUFBZSxFQUM5QixVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQzVELFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsZUFBZ0MsRUFDaEMsa0JBQW1DLEVBQ25DLGtCQUFtQztRQUNsRSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBNEIsRUFBRSxlQUFnQztRQUN6RixNQUFNLE1BQU0sR0FBb0IsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxZQUFZLENBQUMsY0FBNkIsRUFBRSxjQUE2QjtRQUNyRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksYUFBYSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELElBQUksV0FBVyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksYUFBYSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDeEQsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDekIsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RELE9BQU8sV0FBVyxJQUFJLGtCQUFrQixJQUFJLGdCQUFnQixJQUFJLGFBQWEsQ0FBQztJQUNsRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc0phdmFVdGlsLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG5leHBvcnQgY2xhc3MgS21SYW5nZSB7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgdG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdmFuS2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJhbmdlVm9vclB1bnRPYmplY3QodG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQpOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZVZvb3JTdHJla09iamVjdCh0b3BvbG9neUVsZW1lbnQ6IFRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbjogS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCwgdmFuS2lsb21ldHJlcmluZ2VuLCB0b3RLaWxvbWV0cmVyaW5nZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2lsb21ldHJlcmluZyhsaW50TmFhbTogc3RyaW5nIHwgdW5kZWZpbmVkLCBraWxvbWV0cmVyaW5nZW46IEtpbG9tZXRyZXJpbmdbXSk6IEtpbG9tZXRyZXJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCByZXN1bHQ6IEtpbG9tZXRyZXJpbmdbXSA9IGtpbG9tZXRyZXJpbmdlbi5maWx0ZXIoa2lsb21ldHJlcmluZyA9PiBraWxvbWV0cmVyaW5nLmdldEttTGludCgpID09PSBsaW50TmFhbSk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBoZWVmdE92ZXJsYXAoa2lsb21ldHJlcmluZzE6IEtpbG9tZXRyZXJpbmcsIGtpbG9tZXRyZXJpbmcyOiBLaWxvbWV0cmVyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHZhbktpbG9tZXRyZXJpbmcgPSBLbVJhbmdlLmdldEtpbG9tZXRyZXJpbmcoa2lsb21ldHJlcmluZzEuZ2V0S21MaW50KCksIHRoaXMudmFuS2lsb21ldHJlcmluZ2VuKTtcbiAgICAgICAgY29uc3QgdG90S2lsb21ldHJlcmluZyA9IEttUmFuZ2UuZ2V0S2lsb21ldHJlcmluZyhraWxvbWV0cmVyaW5nMi5nZXRLbUxpbnQoKSwgdGhpcy50b3RLaWxvbWV0cmVyaW5nZW4pO1xuICAgICAgICBpZiAoIXZhbktpbG9tZXRyZXJpbmcgfHwgIXRvdEtpbG9tZXRyZXJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGFydEttV2FhcmRlID0gdmFuS2lsb21ldHJlcmluZy5nZXRLbVdhYXJkZSgpO1xuICAgICAgICBsZXQgZW5kS21XYWFyZGUgPSB0b3RLaWxvbWV0cmVyaW5nLmdldEttV2FhcmRlKCk7XG4gICAgICAgIGlmIChzdGFydEttV2FhcmRlID4gZW5kS21XYWFyZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlbXAgPSB7IGVuZDogZW5kS21XYWFyZGUsIHN0YXJ0OiBzdGFydEttV2FhcmRlIH07XG4gICAgICAgICAgICBzdGFydEttV2FhcmRlID0gdGVtcC5lbmQ7XG4gICAgICAgICAgICBlbmRLbVdhYXJkZSA9IHRlbXAuc3RhcnQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhY3RpZVN0YXJ0S21XYWFyZGUgPSBraWxvbWV0cmVyaW5nMS5nZXRLbVdhYXJkZSgpO1xuICAgICAgICBjb25zdCBhY3RpZUVuZEttV2FhcmRlID0ga2lsb21ldHJlcmluZzIuZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgcmV0dXJuIGVuZEttV2FhcmRlID49IGFjdGllU3RhcnRLbVdhYXJkZSAmJiBhY3RpZUVuZEttV2FhcmRlID49IHN0YXJ0S21XYWFyZGU7XG4gICAgfVxufVxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia20tcmFuZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc3Qtdmlld2VyL3NyYy9saWIvbW9kZWwva20tcmFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBSXJELE1BQU0sT0FBTyxPQUFPO0lBQ2hCLFlBQTJCLGVBQWdDLEVBQ2hDLGtCQUFtQyxFQUNuQyxrQkFBbUM7UUFGbkMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBaUI7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFpQjtJQUM5RCxDQUFDO0lBRU0sTUFBTSxDQUFDLG1CQUFtQixDQUFDLGVBQWdDO1FBQzlELE9BQU8sSUFBSSxPQUFPLENBQUMsZUFBZSxFQUM5QixVQUFVLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQzVELFVBQVUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsZUFBZ0MsRUFDaEMsa0JBQW1DLEVBQ25DLGtCQUFtQztRQUNsRSxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxlQUFnQztRQUM3RSxNQUFNLE1BQU0sR0FBb0IsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNoSCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxZQUFZLENBQUMsY0FBNkIsRUFBRSxjQUE2QjtRQUNyRSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdkcsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksYUFBYSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25ELElBQUksV0FBVyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pELElBQUksYUFBYSxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDeEQsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDekIsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsQ0FBQztRQUVELE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RELE9BQU8sV0FBVyxJQUFJLGtCQUFrQixJQUFJLGdCQUFnQixJQUFJLGFBQWEsQ0FBQztJQUNsRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc0phdmFVdGlsLCBzYmJsYWQgfSBmcm9tICdAbG94aWEvcmlqd2VnZW4nO1xuaW1wb3J0IEtpbG9tZXRyZXJpbmcgPSBzYmJsYWQuS2lsb21ldHJlcmluZztcbmltcG9ydCBUb3BvbG9neUVsZW1lbnQgPSBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50O1xuXG5leHBvcnQgY2xhc3MgS21SYW5nZSB7XG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihwdWJsaWMgdG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdmFuS2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pIHtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJhbmdlVm9vclB1bnRPYmplY3QodG9wb2xvZ3lFbGVtZW50OiBUb3BvbG9neUVsZW1lbnQpOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSxcbiAgICAgICAgICAgIEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodG9wb2xvZ3lFbGVtZW50LmdldEtpbG9tZXRyZXJpbmdlbigpKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZVZvb3JTdHJla09iamVjdCh0b3BvbG9neUVsZW1lbnQ6IFRvcG9sb2d5RWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbktpbG9tZXRyZXJpbmdlbjogS2lsb21ldHJlcmluZ1tdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90S2lsb21ldHJlcmluZ2VuOiBLaWxvbWV0cmVyaW5nW10pOiBLbVJhbmdlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBLbVJhbmdlKHRvcG9sb2d5RWxlbWVudCwgdmFuS2lsb21ldHJlcmluZ2VuLCB0b3RLaWxvbWV0cmVyaW5nZW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0S2lsb21ldHJlcmluZyhsaW50TmFhbTogc3RyaW5nLCBraWxvbWV0cmVyaW5nZW46IEtpbG9tZXRyZXJpbmdbXSk6IEtpbG9tZXRyZXJpbmcge1xuICAgICAgICBjb25zdCByZXN1bHQ6IEtpbG9tZXRyZXJpbmdbXSA9IGtpbG9tZXRyZXJpbmdlbi5maWx0ZXIoa2lsb21ldHJlcmluZyA9PiBraWxvbWV0cmVyaW5nLmdldEttTGludCgpID09PSBsaW50TmFhbSk7XG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaGVlZnRPdmVybGFwKGtpbG9tZXRyZXJpbmcxOiBLaWxvbWV0cmVyaW5nLCBraWxvbWV0cmVyaW5nMjogS2lsb21ldHJlcmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB2YW5LaWxvbWV0cmVyaW5nID0gS21SYW5nZS5nZXRLaWxvbWV0cmVyaW5nKGtpbG9tZXRyZXJpbmcxLmdldEttTGludCgpLCB0aGlzLnZhbktpbG9tZXRyZXJpbmdlbik7XG4gICAgICAgIGNvbnN0IHRvdEtpbG9tZXRyZXJpbmcgPSBLbVJhbmdlLmdldEtpbG9tZXRyZXJpbmcoa2lsb21ldHJlcmluZzIuZ2V0S21MaW50KCksIHRoaXMudG90S2lsb21ldHJlcmluZ2VuKTtcbiAgICAgICAgaWYgKCF2YW5LaWxvbWV0cmVyaW5nIHx8ICF0b3RLaWxvbWV0cmVyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3RhcnRLbVdhYXJkZSA9IHZhbktpbG9tZXRyZXJpbmcuZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgbGV0IGVuZEttV2FhcmRlID0gdG90S2lsb21ldHJlcmluZy5nZXRLbVdhYXJkZSgpO1xuICAgICAgICBpZiAoc3RhcnRLbVdhYXJkZSA+IGVuZEttV2FhcmRlKSB7XG4gICAgICAgICAgICBjb25zdCB0ZW1wID0geyBlbmQ6IGVuZEttV2FhcmRlLCBzdGFydDogc3RhcnRLbVdhYXJkZSB9O1xuICAgICAgICAgICAgc3RhcnRLbVdhYXJkZSA9IHRlbXAuZW5kO1xuICAgICAgICAgICAgZW5kS21XYWFyZGUgPSB0ZW1wLnN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWN0aWVTdGFydEttV2FhcmRlID0ga2lsb21ldHJlcmluZzEuZ2V0S21XYWFyZGUoKTtcbiAgICAgICAgY29uc3QgYWN0aWVFbmRLbVdhYXJkZSA9IGtpbG9tZXRyZXJpbmcyLmdldEttV2FhcmRlKCk7XG4gICAgICAgIHJldHVybiBlbmRLbVdhYXJkZSA+PSBhY3RpZVN0YXJ0S21XYWFyZGUgJiYgYWN0aWVFbmRLbVdhYXJkZSA+PSBzdGFydEttV2FhcmRlO1xuICAgIH1cbn1cbiJdfQ==
@@ -4,7 +4,7 @@ export class NieuweRoute {
4
4
  this.combinatieVoorEindsein = combinatieVoorEindsein;
5
5
  }
6
6
  isValid() {
7
- return !!this.combinatieVoorEindsein;
7
+ return this.combinatieVoorEindsein !== null;
8
8
  }
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlldXdlLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL21vZGVsL25pZXV3ZS1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUFtQixrQkFBaUMsRUFBUyxzQkFBd0Q7UUFBbEcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFlO1FBQVMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFrQztJQUNySCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllJztcbmltcG9ydCB7IFNlaW5PcFJpdGRlZWwgfSBmcm9tICcuL3NlaW4tb3Atcml0ZGVlbCc7XG5cbmV4cG9ydCBjbGFzcyBOaWV1d2VSb3V0ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYmVnaW5TZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsLCBwdWJsaWMgY29tYmluYXRpZVZvb3JFaW5kc2Vpbj86IFJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpbmF0aWUpIHtcbiAgICB9XG5cbiAgICBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmNvbWJpbmF0aWVWb29yRWluZHNlaW47XG4gICAgfVxufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmlldXdlLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXN0LXZpZXdlci9zcmMvbGliL21vZGVsL25pZXV3ZS1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sV0FBVztJQUVwQixZQUFtQixrQkFBaUMsRUFBUyxzQkFBdUQ7UUFBakcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFlO1FBQVMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFpQztJQUNwSCxDQUFDO0lBRUQsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLHNCQUFzQixLQUFLLElBQUksQ0FBQztJQUNoRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIH0gZnJvbSAnLi9yaWp3ZWdwbGFuLXJpandlZy1kd2FuZy1jb21iaW5hdGllJztcbmltcG9ydCB7IFNlaW5PcFJpdGRlZWwgfSBmcm9tICcuL3NlaW4tb3Atcml0ZGVlbCc7XG5cbmV4cG9ydCBjbGFzcyBOaWV1d2VSb3V0ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgYmVnaW5TZWluT3BSaXRkZWVsOiBTZWluT3BSaXRkZWVsLCBwdWJsaWMgY29tYmluYXRpZVZvb3JFaW5kc2VpbjogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSkge1xuICAgIH1cblxuICAgIGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJpbmF0aWVWb29yRWluZHNlaW4gIT09IG51bGw7XG4gICAgfVxufVxuIl19
@@ -112,13 +112,13 @@ export class Ritdeel {
112
112
  return retval;
113
113
  }
114
114
  getVrijebaanRijwegplan() {
115
- return this.vrijebaanRijwegplanRijwegDwangCombi?.rijwegplan;
115
+ return this.vrijebaanRijwegplanRijwegDwangCombi.rijwegplan;
116
116
  }
117
117
  getVrijebaanRijweg() {
118
- return this.vrijebaanRijwegplanRijwegDwangCombi?.rijweg;
118
+ return this.vrijebaanRijwegplanRijwegDwangCombi.rijweg;
119
119
  }
120
120
  getVrijebaanDwang() {
121
- return this.vrijebaanRijwegplanRijwegDwangCombi?.dwang;
121
+ return this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
122
122
  }
123
123
  getDwangNummer() {
124
124
  return this.rijwegplanRijwegDwangCombi.getDwangNummer();
@@ -135,7 +135,7 @@ export class Ritdeel {
135
135
  isBinnenWindow() {
136
136
  return (this.zichtbaarheid === RitdeelZichtbaarheid.ZICHTBAAR ||
137
137
  this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_GEBRUIKER)
138
- && !this.zichtbaarBuitenPaginatie;
138
+ && this.zichtbaarBuitenPaginatie === false;
139
139
  }
140
140
  isNietBeschikbaar() {
141
141
  return this.zichtbaarheid === RitdeelZichtbaarheid.ONZICHTBAAR_DOOR_SYSTEEM;
@@ -158,10 +158,10 @@ export class Ritdeel {
158
158
  }
159
159
  }
160
160
  heeftVrijebaanInfo() {
161
- return !!this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
161
+ return this.vrijebaanRijwegplanRijwegDwangCombi && !!this.vrijebaanRijwegplanRijwegDwangCombi.dwang;
162
162
  }
163
163
  getVrijebaanPrlRoute() {
164
- return this.vrijebaanRijwegplanRijwegDwangCombi?.getRoute();
164
+ return this.vrijebaanRijwegplanRijwegDwangCombi.getRoute();
165
165
  }
166
166
  getTopologieElementen() {
167
167
  return this.topoElementen;
@@ -193,13 +193,13 @@ export class Ritdeel {
193
193
  getZichtbaarheidBuitenPaginatie() {
194
194
  return this.zichtbaarBuitenPaginatie;
195
195
  }
196
- bepaalTopologieElementen(sbmService) {
197
- const topoElementen = sbmService.bepaalRouteElementen(this.getRoute());
196
+ bepaalTopologieElementen(signaleringsBeeldManagerService) {
197
+ const topoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getRoute());
198
198
  if (this.heeftVrijebaanInfo()) {
199
- const vrijebaanTopoElementen = sbmService.bepaalRouteElementen(this.getVrijebaanPrlRoute());
199
+ const vrijebaanTopoElementen = signaleringsBeeldManagerService.bepaalRouteElementen(this.getVrijebaanPrlRoute());
200
200
  topoElementen.push(...vrijebaanTopoElementen);
201
201
  }
202
202
  this.topoElementen = topoElementen;
203
203
  }
204
204
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9yaXRkZWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM1Qix5RUFBYSxDQUFBO0lBQ2IsMkdBQThCLENBQUE7SUFDOUIsdUdBQTRCLENBQUE7QUFDaEMsQ0FBQyxFQUpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJL0I7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUtoQixZQUE2QiwwQkFBMkQsRUFDckUsTUFBZSxFQUNOLFFBQThCLEVBQ3ZDLG1DQUFnRixFQUNoRixZQUFnQyxFQUMvQixhQUF1QztRQUw5QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWlDO1FBQ3JFLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDTixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUN2Qyx3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQTZDO1FBQ2hGLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFUbkQsdUJBQWtCLEdBQThCLEVBQUUsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztRQUMvQyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7SUFRekMsQ0FBQztJQUVELHFCQUFxQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQXlCO1FBQ2xDLE1BQU0sZ0NBQWdDLEdBQ2xDLElBQUksK0JB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RUQsd0JBQXdCLENBQUMsVUFBMkM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLHNCQUFzQixHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkb21laW4sIEpzSmF2YVV0aWwsIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4uL3NlcnZpY2VzL2Jld2VnaW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmFsZXJpbmdzQmVlbGRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbGVyaW5ncy1iZWVsZC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB9IGZyb20gJy4vcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5cbmV4cG9ydCBlbnVtIFJpdGRlZWxaaWNodGJhYXJoZWlkIHtcbiAgICBaSUNIVEJBQVIgPSAxLFxuICAgIE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSID0gMixcbiAgICBPTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0gPSAzXG59XG5cbmV4cG9ydCBjbGFzcyBSaXRkZWVsIHtcbiAgICBwcml2YXRlIGFsdGVybmF0aWV2ZVJvdXRlczogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSA9IFtdO1xuICAgIHByaXZhdGUgemljaHRiYWFyaGVpZCA9IFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUjtcbiAgICBwcml2YXRlIHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaTogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSxcbiAgICAgICAgICAgICAgICBwdWJsaWMgYWN0aWVzOiBBY3RpZVtdLFxuICAgICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBiZXdlZ2luZzogQmV3ZWdpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHVibGljIHZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpOiBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2ZXJ2b2xnU3Bvb3I6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRvcG9FbGVtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSkge1xuICAgIH1cblxuICAgIGdldEFsdGVybmF0aWV2ZVJvdXRlcygpOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgIH1cblxuICAgIGNvcHlNZXREd2FuZyhuaWV1d2VEd2FuZzogZG9tZWluLkR3YW5nKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID1cbiAgICAgICAgICAgIG5ldyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllKFxuICAgICAgICAgICAgICAgIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VncGxhbiwgdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWcsIG5pZXV3ZUR3YW5nKTtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCBbXSwgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgICAgICBjb3B5LnppY2h0YmFhcmhlaWQgPSB0aGlzLnppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbCh0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLmFjdGllcywgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IGFsdGVybmF0aWV2ZVJvdXRlcztcbiAgICAgICAgY29weS56aWNodGJhYXJoZWlkID0gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXNab25kZXJBY3RpZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzKTtcbiAgICAgICAgaWYgKGNvcHkuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIGNvcHkuYWN0aWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWQoemljaHRiYWFyaGVpZDogUml0ZGVlbFppY2h0YmFhcmhlaWQpOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZSh6aWNodGJhYXJoZWlkOiBSaXRkZWVsWmljaHRiYWFyaGVpZCwgemljaHRiYWFyQnVpdGVuUGFnaW5hdGllOiBib29sZWFuKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRaaWNodGJhYXJoZWlkKHppY2h0YmFhcmhlaWQpO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcblxuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBjb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSh6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU6IGJvb2xlYW4pOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHRoaXMuemljaHRiYWFyaGVpZDtcbiAgICAgICAgY29weS56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSB6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgZXF1YWxzKG90aGVyOiBSaXRkZWVsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghb3RoZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3RoZXIucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkgPT09IHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmk7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbigpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW47XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VnKCk6IGRvbWVpbi5SaWp3ZWcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWc7XG4gICAgfVxuXG4gICAgZ2V0RHdhbmcoKTogZG9tZWluLkR3YW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZHdhbmc7XG4gICAgfVxuXG4gICAgZ2V0Um91dGUoKTogZG9tZWluLlJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKTtcbiAgICB9XG5cbiAgICBnZXRTZWluZW4oKTogZG9tZWluLlNlaW5bXSB7XG4gICAgICAgIGNvbnN0IHNlaW5lbjogZG9tZWluLlNlaW5bXSA9IEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRSb3V0ZSgpLmdldFNlaW5lbigpKTtcbiAgICAgICAgaWYgKHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlaW46IGRvbWVpbi5TZWluW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKS5nZXRTZWluZW4oKSk7XG4gICAgICAgICAgICBzZWluZW4ucHVzaCguLi5zZWluKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VpbmVuO1xuICAgIH1cblxuICAgIGdldFZhblBybFNwb29yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldFZhblBybFNwb29yKCk7XG4gICAgfVxuXG4gICAgZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52ZXJ2b2xnU3Bvb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnZvbGdTcG9vcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgIH1cblxuICAgIGdldE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyUHJsU3Bvb3JUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXR2YWwgPSB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgICAgICBpZiAodGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSkge1xuICAgICAgICAgICAgcmV0dmFsICs9ICdfZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmVydm9sZ1Nwb29yKSB7XG4gICAgICAgICAgICByZXR2YWwgKz0gJygnICsgdGhpcy52ZXJ2b2xnU3Bvb3IgKyAnKSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5SaWp3ZWdwbGFuKCk6IGRvbWVpbi5SaWp3ZWdwbGFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmk/LnJpandlZ3BsYW47XG4gICAgfVxuXG4gICAgZ2V0VnJpamViYWFuUmlqd2VnKCk6IGRvbWVpbi5SaWp3ZWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaT8ucmlqd2VnO1xuICAgIH1cblxuICAgIGdldFZyaWplYmFhbkR3YW5nKCk6IGRvbWVpbi5Ed2FuZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpPy5kd2FuZztcbiAgICB9XG5cbiAgICBnZXREd2FuZ051bW1lcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXREd2FuZ051bW1lcigpO1xuICAgIH1cblxuICAgIGdldFppY2h0YmFhcmhlaWQoKTogUml0ZGVlbFppY2h0YmFhcmhlaWQge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgIH1cblxuICAgIGlzWmljaHRiYWFyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVI7XG4gICAgfVxuXG4gICAgaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWmljaHRiYWFyKCkgJiYgIXRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuICAgIH1cblxuICAgIGlzQmlubmVuV2luZG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSIHx8XG4gICAgICAgICAgICAgICAgdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUilcbiAgICAgICAgICAgICYmICF0aGlzLnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcbiAgICB9XG5cbiAgICBpc05pZXRCZXNjaGlrYmFhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNO1xuICAgIH1cblxuICAgIGlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUjtcbiAgICB9XG5cbiAgICBpc05pZXV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmV3ZWdpbmcgfHwgdGhpcy5iZXdlZ2luZy53aWp6aWdTdGF0dXMgPT09IEJld2VnaW5nVXRpbHMuVE9FR0VWT0VHRDtcbiAgICB9XG5cbiAgICBnZXRQcGxnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW4uZ2V0UFBMRygpO1xuICAgIH1cblxuICAgIGdldFBwbGdTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VmFuU2VpblBwbGcoKSA9PT0gdGhpcy5nZXROYWFyU2VpblBwbGcoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFuU2VpblBwbGcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhblNlaW5QcGxnKCkgKyAnIC8gJyArIHRoaXMuZ2V0TmFhclNlaW5QcGxnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoZWVmdFZyaWplYmFhbkluZm8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkgJiYgISF0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmR3YW5nO1xuICAgIH1cblxuICAgIGdldFZyaWplYmFhblBybFJvdXRlKCk6IGRvbWVpbi5Sb3V0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpPy5nZXRSb3V0ZSgpO1xuICAgIH1cblxuICAgIGdldFRvcG9sb2dpZUVsZW1lbnRlbigpOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIGdldEJld2VnaW5nSWQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIHRoaXMuYmV3ZWdpbmcuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGdldFRyZWluTnVtbWVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJld2VnaW5nPy50cmVpbk51bW1lcikge1xuICAgICAgICAgICAgcmV0dXJuICcnICsgdGhpcy5iZXdlZ2luZy50cmVpbk51bW1lcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZ2V0VmFuU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLnZhblNlaW5QcGxnIDogdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLm5hYXJTZWluUHBsZyA6IHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXRWYW5TZWluTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2Vpbk5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgfVxuXG4gICAgYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHNibVNlcnZpY2U6IFNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IHNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRSb3V0ZSgpKTtcblxuICAgICAgICBpZiAodGhpcy5oZWVmdFZyaWplYmFhbkluZm8oKSkge1xuICAgICAgICAgICAgY29uc3QgdnJpamViYWFuVG9wb0VsZW1lbnRlbiA9IHNibVNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRWcmlqZWJhYW5QcmxSb3V0ZSgpKTtcbiAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucHVzaCguLi52cmlqZWJhYW5Ub3BvRWxlbWVudGVuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbWVudGVuO1xuICAgIH1cbn1cbiJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicml0ZGVlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zdC12aWV3ZXIvc3JjL2xpYi9tb2RlbC9yaXRkZWVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFdkYsTUFBTSxDQUFOLElBQVksb0JBSVg7QUFKRCxXQUFZLG9CQUFvQjtJQUM1Qix5RUFBYSxDQUFBO0lBQ2IsMkdBQThCLENBQUE7SUFDOUIsdUdBQTRCLENBQUE7QUFDaEMsQ0FBQyxFQUpXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJL0I7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUtoQixZQUE2QiwwQkFBMkQsRUFDckUsTUFBZSxFQUNOLFFBQWtCLEVBQzNCLG1DQUFvRSxFQUNwRSxZQUFvQixFQUNuQixhQUF1QztRQUw5QiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQWlDO1FBQ3JFLFdBQU0sR0FBTixNQUFNLENBQVM7UUFDTixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQzNCLHdDQUFtQyxHQUFuQyxtQ0FBbUMsQ0FBaUM7UUFDcEUsaUJBQVksR0FBWixZQUFZLENBQVE7UUFDbkIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBVG5ELHVCQUFrQixHQUE4QixFQUFFLENBQUM7UUFDbkQsa0JBQWEsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUM7UUFDL0MsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO0lBUXpDLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxXQUF5QjtRQUNsQyxNQUFNLGdDQUFnQyxHQUNsQyxJQUFJLCtCQUEr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QixDQUFDLCtCQUErQjtRQUNwRCxNQUFNLGFBQWEsR0FBRywrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUU1RixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxzQkFBc0IsR0FBRywrQkFBK0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1lBQ2pILGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkb21laW4sIEpzSmF2YVV0aWwsIHNiYmxhZCB9IGZyb20gJ0Bsb3hpYS9yaWp3ZWdlbic7XG5pbXBvcnQgeyBBY3RpZSwgQmV3ZWdpbmcgfSBmcm9tICcuLi9vcHRpbW8nO1xuaW1wb3J0IHsgQmV3ZWdpbmdVdGlscyB9IGZyb20gJy4uL3NlcnZpY2VzL2Jld2VnaW5nLXV0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSB9IGZyb20gJy4vcmlqd2VncGxhbi1yaWp3ZWctZHdhbmctY29tYmluYXRpZSc7XG5cbmV4cG9ydCBlbnVtIFJpdGRlZWxaaWNodGJhYXJoZWlkIHtcbiAgICBaSUNIVEJBQVIgPSAxLFxuICAgIE9OWklDSFRCQUFSX0RPT1JfR0VCUlVJS0VSID0gMixcbiAgICBPTlpJQ0hUQkFBUl9ET09SX1NZU1RFRU0gPSAzXG59XG5cbmV4cG9ydCBjbGFzcyBSaXRkZWVsIHtcbiAgICBwcml2YXRlIGFsdGVybmF0aWV2ZVJvdXRlczogc2JibGFkLkFsdGVybmF0aXZlUm91dGVbXSA9IFtdO1xuICAgIHByaXZhdGUgemljaHRiYWFyaGVpZCA9IFJpdGRlZWxaaWNodGJhYXJoZWlkLlpJQ0hUQkFBUjtcbiAgICBwcml2YXRlIHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaTogUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmluYXRpZSxcbiAgICAgICAgICAgICAgICBwdWJsaWMgYWN0aWVzOiBBY3RpZVtdLFxuICAgICAgICAgICAgICAgIHB1YmxpYyByZWFkb25seSBiZXdlZ2luZzogQmV3ZWdpbmcsXG4gICAgICAgICAgICAgICAgcHVibGljIHZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpOiBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllLFxuICAgICAgICAgICAgICAgIHB1YmxpYyB2ZXJ2b2xnU3Bvb3I6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRvcG9FbGVtZW50ZW46IHNiYmxhZC5Ub3BvbG9neUVsZW1lbnRbXSkge1xuICAgIH1cblxuICAgIGdldEFsdGVybmF0aWV2ZVJvdXRlcygpOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgIH1cblxuICAgIGNvcHlNZXREd2FuZyhuaWV1d2VEd2FuZzogZG9tZWluLkR3YW5nKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpID1cbiAgICAgICAgICAgIG5ldyBSaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaW5hdGllKFxuICAgICAgICAgICAgICAgIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VncGxhbiwgdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWcsIG5pZXV3ZUR3YW5nKTtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKG5pZXV3ZVJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCBbXSwgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IHRoaXMuYWx0ZXJuYXRpZXZlUm91dGVzO1xuICAgICAgICBjb3B5LnppY2h0YmFhcmhlaWQgPSB0aGlzLnppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgUml0ZGVlbCh0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLCB0aGlzLmFjdGllcywgdGhpcy5iZXdlZ2luZyxcbiAgICAgICAgICAgIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMudmVydm9sZ1Nwb29yLCB0aGlzLnRvcG9FbGVtZW50ZW4pO1xuICAgICAgICBjb3B5LmFsdGVybmF0aWV2ZVJvdXRlcyA9IGFsdGVybmF0aWV2ZVJvdXRlcztcbiAgICAgICAgY29weS56aWNodGJhYXJoZWlkID0gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuXG4gICAgICAgIHJldHVybiBjb3B5O1xuICAgIH1cblxuICAgIGNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXNab25kZXJBY3RpZXMoYWx0ZXJuYXRpZXZlUm91dGVzOiBzYmJsYWQuQWx0ZXJuYXRpdmVSb3V0ZVtdKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRBbHRlcm5hdGlldmVSb3V0ZXMoYWx0ZXJuYXRpZXZlUm91dGVzKTtcbiAgICAgICAgaWYgKGNvcHkuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIGNvcHkuYWN0aWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWQoemljaHRiYWFyaGVpZDogUml0ZGVlbFppY2h0YmFhcmhlaWQpOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHppY2h0YmFhcmhlaWQ7XG4gICAgICAgIGNvcHkuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID0gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgY29weU1ldFppY2h0YmFhcmhlaWRFblBhZ2luYXRpZSh6aWNodGJhYXJoZWlkOiBSaXRkZWVsWmljaHRiYWFyaGVpZCwgemljaHRiYWFyQnVpdGVuUGFnaW5hdGllOiBib29sZWFuKTogUml0ZGVlbCB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlNZXRaaWNodGJhYXJoZWlkKHppY2h0YmFhcmhlaWQpO1xuICAgICAgICBjb3B5LnppY2h0YmFhckJ1aXRlblBhZ2luYXRpZSA9IHppY2h0YmFhckJ1aXRlblBhZ2luYXRpZTtcblxuICAgICAgICByZXR1cm4gY29weTtcbiAgICB9XG5cbiAgICBjb3B5TWV0WmljaHRiYWFyaGVpZEJ1aXRlblBhZ2luYXRpZSh6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU6IGJvb2xlYW4pOiBSaXRkZWVsIHtcbiAgICAgICAgY29uc3QgY29weSA9IG5ldyBSaXRkZWVsKHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmksIHRoaXMuYWN0aWVzLCB0aGlzLmJld2VnaW5nLFxuICAgICAgICAgICAgdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSwgdGhpcy52ZXJ2b2xnU3Bvb3IsIHRoaXMudG9wb0VsZW1lbnRlbik7XG4gICAgICAgIGNvcHkuYWx0ZXJuYXRpZXZlUm91dGVzID0gdGhpcy5hbHRlcm5hdGlldmVSb3V0ZXM7XG4gICAgICAgIGNvcHkuemljaHRiYWFyaGVpZCA9IHRoaXMuemljaHRiYWFyaGVpZDtcbiAgICAgICAgY29weS56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWUgPSB6aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG5cbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuXG4gICAgZXF1YWxzKG90aGVyOiBSaXRkZWVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghb3RoZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3RoZXIucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkgPT09IHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmk7XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VncGxhbigpOiBkb21laW4uUmlqd2VncGxhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW47XG4gICAgfVxuXG4gICAgZ2V0Umlqd2VnKCk6IGRvbWVpbi5SaWp3ZWcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5yaWp3ZWc7XG4gICAgfVxuXG4gICAgZ2V0RHdhbmcoKTogZG9tZWluLkR3YW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZHdhbmc7XG4gICAgfVxuXG4gICAgZ2V0Um91dGUoKTogZG9tZWluLlJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKTtcbiAgICB9XG5cbiAgICBnZXRTZWluZW4oKTogZG9tZWluLlNlaW5bXSB7XG4gICAgICAgIGNvbnN0IHNlaW5lbjogZG9tZWluLlNlaW5bXSA9IEpzSmF2YVV0aWwubGlzdFRvQXJyYXkodGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRSb3V0ZSgpLmdldFNlaW5lbigpKTtcbiAgICAgICAgaWYgKHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlaW46IGRvbWVpbi5TZWluW10gPSBKc0phdmFVdGlsLmxpc3RUb0FycmF5KHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkuZ2V0Um91dGUoKS5nZXRTZWluZW4oKSk7XG4gICAgICAgICAgICBzZWluZW4ucHVzaCguLi5zZWluKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VpbmVuO1xuICAgIH1cblxuICAgIGdldFZhblBybFNwb29yKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldFZhblBybFNwb29yKCk7XG4gICAgfVxuXG4gICAgZ2V0VmlzdWVlbE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy52ZXJ2b2xnU3Bvb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnZvbGdTcG9vcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgIH1cblxuICAgIGdldE5hYXJQcmxTcG9vcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXROYWFyUHJsU3Bvb3IoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyUHJsU3Bvb3JUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXR2YWwgPSB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLmdldE5hYXJQcmxTcG9vcigpO1xuICAgICAgICBpZiAodGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaSkge1xuICAgICAgICAgICAgcmV0dmFsICs9ICdfZSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudmVydm9sZ1Nwb29yKSB7XG4gICAgICAgICAgICByZXR2YWwgKz0gJygnICsgdGhpcy52ZXJ2b2xnU3Bvb3IgKyAnKSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldHZhbDtcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5SaWp3ZWdwbGFuKCk6IGRvbWVpbi5SaWp3ZWdwbGFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudnJpamViYWFuUmlqd2VncGxhblJpandlZ0R3YW5nQ29tYmkucmlqd2VncGxhbjtcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5SaWp3ZWcoKTogZG9tZWluLlJpandlZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZztcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5Ed2FuZygpOiBkb21laW4uRHdhbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5kd2FuZztcbiAgICB9XG5cbiAgICBnZXREd2FuZ051bW1lcigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXREd2FuZ051bW1lcigpO1xuICAgIH1cblxuICAgIGdldFppY2h0YmFhcmhlaWQoKTogUml0ZGVlbFppY2h0YmFhcmhlaWQge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkO1xuICAgIH1cblxuICAgIGlzWmljaHRiYWFyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5aSUNIVEJBQVI7XG4gICAgfVxuXG4gICAgaXNaaWNodGJhYXJCaW5uZW5XaW5kb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWmljaHRiYWFyKCkgJiYgIXRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllO1xuICAgIH1cblxuICAgIGlzQmlubmVuV2luZG93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuWklDSFRCQUFSIHx8XG4gICAgICAgICAgICAgICAgdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUilcbiAgICAgICAgICAgICYmIHRoaXMuemljaHRiYWFyQnVpdGVuUGFnaW5hdGllID09PSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc05pZXRCZXNjaGlrYmFhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuemljaHRiYWFyaGVpZCA9PT0gUml0ZGVlbFppY2h0YmFhcmhlaWQuT05aSUNIVEJBQVJfRE9PUl9TWVNURUVNO1xuICAgIH1cblxuICAgIGlzT256aWNodGJhYXJEb29yR2VicnVpa2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJoZWlkID09PSBSaXRkZWVsWmljaHRiYWFyaGVpZC5PTlpJQ0hUQkFBUl9ET09SX0dFQlJVSUtFUjtcbiAgICB9XG5cbiAgICBpc05pZXV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuYmV3ZWdpbmcgfHwgdGhpcy5iZXdlZ2luZy53aWp6aWdTdGF0dXMgPT09IEJld2VnaW5nVXRpbHMuVE9FR0VWT0VHRDtcbiAgICB9XG5cbiAgICBnZXRQcGxnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpLnJpandlZ3BsYW4uZ2V0UFBMRygpO1xuICAgIH1cblxuICAgIGdldFBwbGdTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0VmFuU2VpblBwbGcoKSA9PT0gdGhpcy5nZXROYWFyU2VpblBwbGcoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFuU2VpblBwbGcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFZhblNlaW5QcGxnKCkgKyAnIC8gJyArIHRoaXMuZ2V0TmFhclNlaW5QcGxnKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoZWVmdFZyaWplYmFhbkluZm8oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZyaWplYmFhblJpandlZ3BsYW5SaWp3ZWdEd2FuZ0NvbWJpICYmICEhdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5kd2FuZztcbiAgICB9XG5cbiAgICBnZXRWcmlqZWJhYW5QcmxSb3V0ZSgpOiBkb21laW4uUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy52cmlqZWJhYW5SaWp3ZWdwbGFuUmlqd2VnRHdhbmdDb21iaS5nZXRSb3V0ZSgpO1xuICAgIH1cblxuICAgIGdldFRvcG9sb2dpZUVsZW1lbnRlbigpOiBzYmJsYWQuVG9wb2xvZ3lFbGVtZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BvRWxlbWVudGVuO1xuICAgIH1cblxuICAgIGdldEJld2VnaW5nSWQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuYmV3ZWdpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiAnJyArIHRoaXMuYmV3ZWdpbmcuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGdldFRyZWluTnVtbWVyKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmJld2VnaW5nPy50cmVpbk51bW1lcikge1xuICAgICAgICAgICAgcmV0dXJuICcnICsgdGhpcy5iZXdlZ2luZy50cmVpbk51bW1lcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgZ2V0VmFuU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLnZhblNlaW5QcGxnIDogdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2VpblBwbGcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmV3ZWdpbmcgPyB0aGlzLmJld2VnaW5nLm5hYXJTZWluUHBsZyA6IHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldFBQTEcoKTtcbiAgICB9XG5cbiAgICBnZXRWYW5TZWluTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRSb3V0ZSgpLmdldEJlZ2luU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXROYWFyU2Vpbk5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um91dGUoKS5nZXRFaW5kU2VpbigpLmdldE5hbWUoKTtcbiAgICB9XG5cbiAgICBnZXRaaWNodGJhYXJoZWlkQnVpdGVuUGFnaW5hdGllKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy56aWNodGJhYXJCdWl0ZW5QYWdpbmF0aWU7XG4gICAgfVxuXG4gICAgYmVwYWFsVG9wb2xvZ2llRWxlbWVudGVuKHNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdG9wb0VsZW1lbnRlbiA9IHNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRSb3V0ZSgpKTtcblxuICAgICAgICBpZiAodGhpcy5oZWVmdFZyaWplYmFhbkluZm8oKSkge1xuICAgICAgICAgICAgY29uc3QgdnJpamViYWFuVG9wb0VsZW1lbnRlbiA9IHNpZ25hbGVyaW5nc0JlZWxkTWFuYWdlclNlcnZpY2UuYmVwYWFsUm91dGVFbGVtZW50ZW4odGhpcy5nZXRWcmlqZWJhYW5QcmxSb3V0ZSgpKTtcbiAgICAgICAgICAgIHRvcG9FbGVtZW50ZW4ucHVzaCguLi52cmlqZWJhYW5Ub3BvRWxlbWVudGVuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvcG9FbGVtZW50ZW4gPSB0b3BvRWxlbWVudGVuO1xuICAgIH1cbn1cbiJdfQ==