@kirbydesign/designsystem 5.1.1 → 5.2.3-beta.0

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 (191) hide show
  1. package/bundles/kirbydesign-designsystem-testing-base.umd.js +4 -1
  2. package/bundles/kirbydesign-designsystem-testing-base.umd.js.map +1 -1
  3. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js +1 -1
  4. package/bundles/kirbydesign-designsystem-testing-base.umd.min.js.map +1 -1
  5. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.js.map +1 -1
  6. package/bundles/kirbydesign-designsystem-testing-jasmine.umd.min.js.map +1 -1
  7. package/bundles/kirbydesign-designsystem-testing-jest.umd.js.map +1 -1
  8. package/bundles/kirbydesign-designsystem-testing-jest.umd.min.js.map +1 -1
  9. package/bundles/kirbydesign-designsystem.umd.js +82 -46
  10. package/bundles/kirbydesign-designsystem.umd.js.map +1 -1
  11. package/bundles/kirbydesign-designsystem.umd.min.js +1 -1
  12. package/bundles/kirbydesign-designsystem.umd.min.js.map +1 -1
  13. package/esm2015/lib/components/avatar/avatar.component.js +1 -1
  14. package/esm2015/lib/components/button/button.component.js +1 -1
  15. package/esm2015/lib/components/calendar/calendar.component.js +9 -3
  16. package/esm2015/lib/components/calendar/calendar.component.metadata.json +1 -1
  17. package/esm2015/lib/components/card/card-header/card-header.component.js +1 -1
  18. package/esm2015/lib/components/card/card-header/card-header.component.metadata.json +1 -1
  19. package/esm2015/lib/components/card/card.component.js +7 -2
  20. package/esm2015/lib/components/card/card.component.metadata.json +1 -1
  21. package/esm2015/lib/components/chart/chart-js/chart-js.service.js +22 -6
  22. package/esm2015/lib/components/chart/chart-js/chartjs-plugin-marker/chartjs-plugin-marker.js +1 -1
  23. package/esm2015/lib/components/chart/chart-js/configured-chart-js.js +4 -3
  24. package/esm2015/lib/components/chart/chart-js/configured-chart-js.metadata.json +1 -1
  25. package/esm2015/lib/components/chart-deprecated/chart-deprecated.component.js +3 -3
  26. package/esm2015/lib/components/chart-deprecated/options/areaspline.js +1 -1
  27. package/esm2015/lib/components/chart-deprecated/options/timeseries.js +1 -1
  28. package/esm2015/lib/components/dropdown/dropdown.component.js +1 -1
  29. package/esm2015/lib/components/dropdown/dropdown.component.metadata.json +1 -1
  30. package/esm2015/lib/components/fab-sheet/fab-sheet.component.js +4 -3
  31. package/esm2015/lib/components/fab-sheet/fab-sheet.component.metadata.json +1 -1
  32. package/esm2015/lib/components/flag/flag.component.js +4 -6
  33. package/esm2015/lib/components/flag/flag.component.metadata.json +1 -1
  34. package/esm2015/lib/components/form-field/form-field.component.js +1 -1
  35. package/esm2015/lib/components/form-field/form-field.component.metadata.json +1 -1
  36. package/esm2015/lib/components/form-field/input/input.component.js +2 -2
  37. package/esm2015/lib/components/form-field/input/input.component.metadata.json +1 -1
  38. package/esm2015/lib/components/form-field/input-counter/input-counter.component.js +2 -3
  39. package/esm2015/lib/components/form-field/input-counter/input-counter.component.metadata.json +1 -1
  40. package/esm2015/lib/components/form-field/textarea/textarea.component.js +1 -1
  41. package/esm2015/lib/components/form-field/textarea/textarea.component.metadata.json +1 -1
  42. package/esm2015/lib/components/icon/icon.component.js +2 -2
  43. package/esm2015/lib/components/icon/icon.component.metadata.json +1 -1
  44. package/esm2015/lib/components/item/item.component.js +2 -2
  45. package/esm2015/lib/components/item/item.component.metadata.json +1 -1
  46. package/esm2015/lib/components/list/list-item/list-item.component.js +1 -1
  47. package/esm2015/lib/components/list/list-item/list-item.component.metadata.json +1 -1
  48. package/esm2015/lib/components/list/list-section-header/list-section-header.component.js +2 -3
  49. package/esm2015/lib/components/list/list-section-header/list-section-header.component.metadata.json +1 -1
  50. package/esm2015/lib/components/list/list.component.js +1 -1
  51. package/esm2015/lib/components/list/list.component.metadata.json +1 -1
  52. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.js +1 -1
  53. package/esm2015/lib/components/modal/action-sheet/action-sheet.component.metadata.json +1 -1
  54. package/esm2015/lib/components/modal/footer/modal-footer.component.js +1 -1
  55. package/esm2015/lib/components/modal/footer/modal-footer.component.metadata.json +1 -1
  56. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.js +2 -2
  57. package/esm2015/lib/components/modal/modal-wrapper/modal-wrapper.component.metadata.json +1 -1
  58. package/esm2015/lib/components/modal/services/modal-navigation.service.js +2 -4
  59. package/esm2015/lib/components/page/page.component.js +5 -13
  60. package/esm2015/lib/components/page/page.component.metadata.json +1 -1
  61. package/esm2015/lib/components/popover/popover.component.js +2 -4
  62. package/esm2015/lib/components/popover/popover.component.metadata.json +1 -1
  63. package/esm2015/lib/components/radio/radio.component.js +2 -2
  64. package/esm2015/lib/components/radio/radio.component.metadata.json +1 -1
  65. package/esm2015/lib/components/range/range.component.js +1 -1
  66. package/esm2015/lib/components/range/range.component.metadata.json +1 -1
  67. package/esm2015/lib/components/reorder-list/reorder-list.component.js +3 -3
  68. package/esm2015/lib/components/reorder-list/reorder-list.component.metadata.json +1 -1
  69. package/esm2015/lib/components/segmented-control/segmented-control.component.js +1 -1
  70. package/esm2015/lib/components/slide-button/slide-button.component.js +1 -1
  71. package/esm2015/lib/components/slide-button/slide-button.component.metadata.json +1 -1
  72. package/esm2015/lib/components/stock-chart-deprecated/options/stock-chart-deprecated-options.js +1 -1
  73. package/esm2015/lib/components/tabs/tabs.component.js +1 -1
  74. package/esm2015/lib/components/tabs/tabs.component.metadata.json +1 -1
  75. package/esm2015/lib/directives/fit-heading/fit-heading.directive.js +10 -2
  76. package/esm2015/testing-base/lib/components/mock.accordion-item.component.js +1 -1
  77. package/esm2015/testing-base/lib/components/mock.action-sheet.component.js +1 -1
  78. package/esm2015/testing-base/lib/components/mock.app.component.js +1 -1
  79. package/esm2015/testing-base/lib/components/mock.avatar.component.js +2 -2
  80. package/esm2015/testing-base/lib/components/mock.button.component.js +2 -2
  81. package/esm2015/testing-base/lib/components/mock.calendar.component.js +2 -1
  82. package/esm2015/testing-base/lib/components/mock.calendar.component.metadata.json +1 -1
  83. package/esm2015/testing-base/lib/components/mock.card-footer.component.js +1 -1
  84. package/esm2015/testing-base/lib/components/mock.card-header.component.js +1 -1
  85. package/esm2015/testing-base/lib/components/mock.card.component.js +2 -1
  86. package/esm2015/testing-base/lib/components/mock.card.component.metadata.json +1 -1
  87. package/esm2015/testing-base/lib/components/mock.chart-deprecated.component.js +1 -1
  88. package/esm2015/testing-base/lib/components/mock.chart.component.js +1 -1
  89. package/esm2015/testing-base/lib/components/mock.checkbox.component.js +1 -1
  90. package/esm2015/testing-base/lib/components/mock.chip.component.js +1 -1
  91. package/esm2015/testing-base/lib/components/mock.divider.component.js +1 -1
  92. package/esm2015/testing-base/lib/components/mock.dropdown.component.js +2 -2
  93. package/esm2015/testing-base/lib/components/mock.empty-state.component.js +1 -1
  94. package/esm2015/testing-base/lib/components/mock.fab-sheet.component.js +1 -1
  95. package/esm2015/testing-base/lib/components/mock.flag.component.js +1 -1
  96. package/esm2015/testing-base/lib/components/mock.form-field-message.component.js +1 -1
  97. package/esm2015/testing-base/lib/components/mock.form-field.component.js +1 -1
  98. package/esm2015/testing-base/lib/components/mock.grid.component.js +1 -1
  99. package/esm2015/testing-base/lib/components/mock.icon.component.js +2 -2
  100. package/esm2015/testing-base/lib/components/mock.input-counter.component.js +1 -1
  101. package/esm2015/testing-base/lib/components/mock.input.component.js +2 -2
  102. package/esm2015/testing-base/lib/components/mock.item-group.component.js +1 -1
  103. package/esm2015/testing-base/lib/components/mock.item-sliding.component.js +1 -1
  104. package/esm2015/testing-base/lib/components/mock.item.component.js +2 -2
  105. package/esm2015/testing-base/lib/components/mock.label.component.js +1 -1
  106. package/esm2015/testing-base/lib/components/mock.list-experimental.component.js +1 -1
  107. package/esm2015/testing-base/lib/components/mock.list-header.component.js +1 -1
  108. package/esm2015/testing-base/lib/components/mock.list-item.component.js +1 -1
  109. package/esm2015/testing-base/lib/components/mock.list-section-header.component.js +1 -1
  110. package/esm2015/testing-base/lib/components/mock.list.component.js +1 -1
  111. package/esm2015/testing-base/lib/components/mock.loading-overlay.component.js +1 -1
  112. package/esm2015/testing-base/lib/components/mock.modal-footer.component.js +3 -2
  113. package/esm2015/testing-base/lib/components/mock.modal-footer.component.metadata.json +1 -1
  114. package/esm2015/testing-base/lib/components/mock.page-footer.component.js +1 -1
  115. package/esm2015/testing-base/lib/components/mock.page.component.js +1 -1
  116. package/esm2015/testing-base/lib/components/mock.popover.component.js +2 -2
  117. package/esm2015/testing-base/lib/components/mock.progress-circle.component.js +1 -1
  118. package/esm2015/testing-base/lib/components/mock.radio-group.component.js +1 -1
  119. package/esm2015/testing-base/lib/components/mock.radio.component.js +1 -1
  120. package/esm2015/testing-base/lib/components/mock.range.component.js +1 -1
  121. package/esm2015/testing-base/lib/components/mock.reorder-list.component.js +1 -1
  122. package/esm2015/testing-base/lib/components/mock.router-outlet.component.js +1 -1
  123. package/esm2015/testing-base/lib/components/mock.section-header.component.js +1 -1
  124. package/esm2015/testing-base/lib/components/mock.segmented-control.component.js +2 -2
  125. package/esm2015/testing-base/lib/components/mock.slide-button.component.js +1 -1
  126. package/esm2015/testing-base/lib/components/mock.spinner.component.js +1 -1
  127. package/esm2015/testing-base/lib/components/mock.tab-button.component.js +1 -1
  128. package/esm2015/testing-base/lib/components/mock.tabs.component.js +1 -1
  129. package/esm2015/testing-base/lib/components/mock.textarea.component.js +1 -1
  130. package/esm2015/testing-base/lib/components/mock.toggle-button.component.js +1 -1
  131. package/esm2015/testing-base/lib/components/mock.toggle.component.js +1 -1
  132. package/esm2015/testing-base/lib/mock-components.js +1 -1
  133. package/esm2015/testing-jasmine/lib/mock-providers.js +1 -1
  134. package/esm2015/testing-jest/lib/mock-providers.js +1 -1
  135. package/fesm2015/kirbydesign-designsystem-testing-base.js +4 -1
  136. package/fesm2015/kirbydesign-designsystem-testing-base.js.map +1 -1
  137. package/fesm2015/kirbydesign-designsystem-testing-jasmine.js.map +1 -1
  138. package/fesm2015/kirbydesign-designsystem-testing-jest.js.map +1 -1
  139. package/fesm2015/kirbydesign-designsystem.js +76 -55
  140. package/fesm2015/kirbydesign-designsystem.js.map +1 -1
  141. package/kirbydesign-designsystem.metadata.json +1 -1
  142. package/lib/components/avatar/avatar.component.d.ts +2 -2
  143. package/lib/components/button/button.component.d.ts +2 -2
  144. package/lib/components/calendar/calendar.component.d.ts +1 -0
  145. package/lib/components/card/card.component.d.ts +2 -0
  146. package/lib/components/chart/chart-js/configured-chart-js.d.ts +1 -0
  147. package/lib/components/dropdown/dropdown.component.d.ts +2 -2
  148. package/lib/components/form-field/input/input.component.d.ts +1 -1
  149. package/lib/components/form-field/input-counter/input-counter.component.d.ts +2 -2
  150. package/lib/components/icon/icon.component.d.ts +1 -1
  151. package/lib/components/item/item.component.d.ts +1 -1
  152. package/lib/components/popover/popover.component.d.ts +1 -1
  153. package/lib/components/segmented-control/segmented-control.component.d.ts +1 -1
  154. package/package.json +2 -2
  155. package/polyfills/intersection-observer-polyfill-loader.js +12 -12
  156. package/polyfills/resize-observer-polyfill-loader.js +1 -1
  157. package/readme.md +2 -7
  158. package/scss/_trigger-publish.scss +1 -0
  159. package/scss/_trigger.scss +1 -0
  160. package/scss/awesome-stylesheet.scss +1 -0
  161. package/scss/base/_awesome-partial.scss +1 -0
  162. package/scss/base/_index.scss +1 -0
  163. package/scss/base/_interaction-states.scss +1 -0
  164. package/scss/base/_link.scss +1 -0
  165. package/scss/base/index.scss +1 -0
  166. package/scss/interaction-state/_focus.scss +1 -0
  167. package/scss/interaction-state/_hover.scss +1 -0
  168. package/scss/interaction-state/_index.scss +1 -0
  169. package/scss/interaction-state/_layer.scss +1 -0
  170. package/scss/interaction-state/_state-layer.scss +1 -0
  171. package/scss/interaction-state/_utilities.scss +1 -0
  172. package/scss/interaction-state/ionic/_active.scss +1 -0
  173. package/scss/interaction-state/ionic/_hover.scss +1 -0
  174. package/scss/interaction-state/ionic/_index.scss +1 -0
  175. package/scss/interaction-states/_hover.scss +1 -0
  176. package/scss/interaction-states/_index.scss +1 -0
  177. package/scss/opt-out/_index.scss +1 -0
  178. package/scss/opt-out/_link.scss +1 -0
  179. package/testing-base/kirbydesign-designsystem-testing-base.metadata.json +1 -1
  180. package/testing-base/lib/components/mock.avatar.component.d.ts +1 -1
  181. package/testing-base/lib/components/mock.button.component.d.ts +1 -1
  182. package/testing-base/lib/components/mock.calendar.component.d.ts +1 -0
  183. package/testing-base/lib/components/mock.card.component.d.ts +1 -0
  184. package/testing-base/lib/components/mock.dropdown.component.d.ts +1 -1
  185. package/testing-base/lib/components/mock.icon.component.d.ts +1 -1
  186. package/testing-base/lib/components/mock.input.component.d.ts +1 -1
  187. package/testing-base/lib/components/mock.item.component.d.ts +1 -1
  188. package/testing-base/lib/components/mock.modal-footer.component.d.ts +1 -0
  189. package/testing-base/lib/components/mock.popover.component.d.ts +1 -1
  190. package/testing-base/lib/components/mock.segmented-control.component.d.ts +1 -1
  191. package/README.md +0 -7
@@ -88,9 +88,7 @@ export class ModalNavigationService {
88
88
  return routePathsWithoutChildSegments;
89
89
  }
90
90
  findChildRouteForUrl(url, routes) {
91
- const moduleRelativePaths = this.getRoutePaths(routes, [''])
92
- .sort()
93
- .reverse(); // Ensure child paths are evaluated first
91
+ const moduleRelativePaths = this.getRoutePaths(routes, ['']).sort().reverse(); // Ensure child paths are evaluated first
94
92
  let matchedChildRoute = moduleRelativePaths.find((path) => url.endsWith(path));
95
93
  if (!matchedChildRoute) {
96
94
  // No static child route found matching current route - look for child route with url params:
@@ -276,4 +274,4 @@ ModalNavigationService.ctorParameters = () => [
276
274
  { type: Router },
277
275
  { type: ActivatedRoute }
278
276
  ];
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL3NlcnZpY2VzL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFpQixNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLE1BQWMsRUFBVSxLQUFxQjtRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUE0THpELDJCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO0lBOUxrRSxDQUFDO0lBRXJFLFlBQVksQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUM1QixVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUNw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O0tBQUE7SUFFTyxnQkFBZ0IsQ0FBQyxxQkFBcUM7UUFDNUQsSUFBSSxXQUFXLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBQy9DLE9BQU8sV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUNwRSxXQUFXLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztTQUNsQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Ozs7WUFwVUYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7OztZQU5xQixNQUFNO1lBQXBELGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1zLCBSb3V0ZSwgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgcGFpcndpc2UsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTW9kYWxSb3V0ZUFjdGl2YXRpb24gfSBmcm9tICcuL21vZGFsLmludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsTmF2aWdhdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICBpc01vZGFsUm91dGUodXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXJsLmluY2x1ZGVzKCcobW9kYWw6Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpOiBBY3RpdmF0ZWRSb3V0ZSB7XG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1vZGFsUm91dGVzKFxuICAgIHJvdXRlQ29uZmlnOiBSb3V0ZXNbXSxcbiAgICBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBmbGF0dGVuZWRSb3V0ZXM6IFJvdXRlcyA9IFtdLmNvbmNhdCguLi5yb3V0ZUNvbmZpZyk7XG4gICAgbGV0IG1vZGFsUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IG1vZHVsZVJvb3RQYXRocyA9IGF3YWl0IHRoaXMuZ2V0TW9kdWxlUm9vdFBhdGgoZmxhdHRlbmVkUm91dGVzLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICBpZiAobW9kdWxlUm9vdFBhdGhzKSB7XG4gICAgICBtb2RhbFJvdXRlcyA9IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKGZsYXR0ZW5lZFJvdXRlcywgbW9kdWxlUm9vdFBhdGhzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGFsUm91dGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRNb2R1bGVSb290UGF0aChyb3V0ZXM6IFJvdXRlcywgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAobW9kdWxlUm9vdFJvdXRlUGF0aCkge1xuICAgICAgY29uc3QgdHJpbW1lZFBhdGhzID0gbW9kdWxlUm9vdFJvdXRlUGF0aFxuICAgICAgICAudHJpbSgpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5maWx0ZXIoKHBhdGgpID0+ICEhcGF0aCk7XG4gICAgICBjb25zdCByb290UGF0aCA9IFsnJ107XG4gICAgICByZXR1cm4gcm9vdFBhdGguY29uY2F0KHRyaW1tZWRQYXRocyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFJvdXRlUGF0aHMgPSBhd2FpdCB0aGlzLmdldEN1cnJlbnRSb3V0ZVBhdGhzKCk7XG4gICAgY29uc3QgbW9kdWxlUm9vdFBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHMoY3VycmVudFJvdXRlUGF0aHMsIHJvdXRlcyk7XG4gICAgcmV0dXJuIG1vZHVsZVJvb3RQYXRocztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q3VycmVudFJvdXRlUGF0aHMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gWycnXTtcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMucm91dGVyLm5hdmlnYXRlZCAmJiAhY3VycmVudE5hdmlnYXRpb24pIHtcbiAgICAgIC8vIElmIHJvdXRlciBoYXNuJ3QgbmF2aWdhdGVkIHlldCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIG5hdmlnYXRpbmcsIGFzc3VtZSByb290OlxuICAgICAgcmV0dXJuIHJvb3RQYXRoO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgLy8gV2FpdCBmb3IgY3VycmVudCBuYXZpZ2F0aW9uIHRvIGZpbmlzaDpcbiAgICAgIGF3YWl0IHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpO1xuICAgIH1cblxuICAgIGxldCBjaGlsZFJvdXRlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5yb290O1xuICAgIHdoaWxlIChjaGlsZFJvdXRlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIGNoaWxkUm91dGUgPSBjaGlsZFJvdXRlLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aCA9IGNoaWxkUm91dGUucGF0aEZyb21Sb290LmZpbHRlcihcbiAgICAgIChyb3V0ZSkgPT4gcm91dGUub3V0bGV0ICE9PSAnbW9kYWwnXG4gICAgKTtcblxuICAgIHJldHVybiByb290UGF0aC5jb25jYXQoXG4gICAgICAuLi5jdXJyZW50QmFja2Ryb3BSb3V0ZVBhdGgubWFwKChyb3V0ZSkgPT5cbiAgICAgICAgcm91dGUudXJsLmZpbHRlcigoc2VnbWVudCkgPT4gISFzZWdtZW50LnBhdGgpLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC5wYXRoKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aHNXaXRob3V0Q2hpbGRTZWdtZW50cyhyb3V0ZVBhdGhzOiBzdHJpbmdbXSwgcm91dGVzOiBSb3V0ZXMpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFyb3V0ZVBhdGhzLmxlbmd0aCkgcmV0dXJuIHJvdXRlUGF0aHM7XG5cbiAgICBjb25zdCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IHRoaXMuZmluZENoaWxkUm91dGVGb3JVcmwocm91dGVQYXRocy5qb2luKCcvJyksIHJvdXRlcyk7XG5cbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IHN0YXJ0U2xhc2hSZWdleCA9IC9eXFwvLztcbiAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBtYXRjaGVkQ2hpbGRSb3V0ZS5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgIGNvbnN0IGNoaWxkU2VnbWVudENvdW50ID0gcmVsYXRpdmVDaGlsZFJvdXRlLnNwbGl0KCcvJykubGVuZ3RoO1xuICAgIGNvbnN0IHJvdXRlUGF0aHNXaXRob3V0Q2hpbGRTZWdtZW50cyA9IHJvdXRlUGF0aHMuc2xpY2UoMCwgLWNoaWxkU2VnbWVudENvdW50KTsgLy8gUmVtb3ZlIGNoaWxkIHNlZ21lbnRzIGZyb20gZW5kIG9mIHJvdXRlIHBhdGggYXJyYXlcbiAgICByZXR1cm4gcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ2hpbGRSb3V0ZUZvclVybCh1cmw6IHN0cmluZywgcm91dGVzOiBSb3V0ZXMpIHtcbiAgICBjb25zdCBtb2R1bGVSZWxhdGl2ZVBhdGhzID0gdGhpcy5nZXRSb3V0ZVBhdGhzKHJvdXRlcywgWycnXSlcbiAgICAgIC5zb3J0KClcbiAgICAgIC5yZXZlcnNlKCk7IC8vIEVuc3VyZSBjaGlsZCBwYXRocyBhcmUgZXZhbHVhdGVkIGZpcnN0XG4gICAgbGV0IG1hdGNoZWRDaGlsZFJvdXRlID0gbW9kdWxlUmVsYXRpdmVQYXRocy5maW5kKChwYXRoKSA9PiB1cmwuZW5kc1dpdGgocGF0aCkpO1xuICAgIGlmICghbWF0Y2hlZENoaWxkUm91dGUpIHtcbiAgICAgIC8vIE5vIHN0YXRpYyBjaGlsZCByb3V0ZSBmb3VuZCBtYXRjaGluZyBjdXJyZW50IHJvdXRlIC0gbG9vayBmb3IgY2hpbGQgcm91dGUgd2l0aCB1cmwgcGFyYW1zOlxuICAgICAgY29uc3QgZXhhY3RNYXRjaCA9IGZhbHNlO1xuICAgICAgbWF0Y2hlZENoaWxkUm91dGUgPSBtb2R1bGVSZWxhdGl2ZVBhdGhzLmZpbmQoXG4gICAgICAgIChwYXRoKSA9PlxuICAgICAgICAgIHBhdGguaW5jbHVkZXMoJy86JykgJiYgdGhpcy5wYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyh1cmwsIHBhdGgsIGV4YWN0TWF0Y2gpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hlZENoaWxkUm91dGU7XG4gIH1cblxuICBwcml2YXRlIHBhdGhDb250YWluc0NoaWxkUm91dGVXaXRoVXJsUGFyYW1zKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBjaGlsZFJvdXRlV2l0aFVybFBhcmFtczogc3RyaW5nLFxuICAgIGV4YWN0TWF0Y2g6IGJvb2xlYW5cbiAgKSB7XG4gICAgY29uc3QgcGF0aFNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpO1xuICAgIGNvbnN0IHN0YXJ0U2xhc2hSZWdleCA9IC9eXFwvLztcbiAgICBsZXQgY2hpbGRSb3V0ZVRvTWF0Y2ggPSBjaGlsZFJvdXRlV2l0aFVybFBhcmFtcztcbiAgICBpZiAoIWV4YWN0TWF0Y2gpIHtcbiAgICAgIGNvbnN0IHJlbGF0aXZlQ2hpbGRSb3V0ZSA9IGNoaWxkUm91dGVXaXRoVXJsUGFyYW1zLnJlcGxhY2Uoc3RhcnRTbGFzaFJlZ2V4LCAnJyk7XG4gICAgICBjaGlsZFJvdXRlVG9NYXRjaCA9IHJlbGF0aXZlQ2hpbGRSb3V0ZTtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRSb3V0ZVNlZ21lbnRzID0gY2hpbGRSb3V0ZVRvTWF0Y2guc3BsaXQoJy8nKTtcbiAgICAvLyBNYXRjaCBlYWNoIGNoaWxkIHJvdXRlIHNlZ21lbnQgYWdhaW5zdCB1cmxcbiAgICAvLyBNYXRjaCBiYWNrd2FyZHMgZnJvbSBlbmQgdG8gc3RhcnQgb2YgY2hpbGQgcm91dGUsIGkuZS4gXCJ1cmwgZW5kcyB3aXRoIGNoaWxkIHJvdXRlXCI6XG4gICAgY29uc3QgcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZSA9IGNoaWxkUm91dGVTZWdtZW50cy5yZXZlcnNlKCkuZXZlcnkoKGNoaWxkUm91dGVTZWdtZW50KSA9PiB7XG4gICAgICBjb25zdCBwYXRoU2VnbWVudCA9IHBhdGhTZWdtZW50cy5wb3AoKTtcbiAgICAgIC8vIHVybCBwYXJhbXMgKGUuZy4gYC86aWQvYCkgYXJlIHRyZWF0ZWQgYXMgYSBtYXRjaDpcbiAgICAgIHJldHVybiBjaGlsZFJvdXRlU2VnbWVudC5zdGFydHNXaXRoKCc6JykgfHwgY2hpbGRSb3V0ZVNlZ21lbnQgPT09IHBhdGhTZWdtZW50O1xuICAgIH0pO1xuICAgIGlmIChleGFjdE1hdGNoKSB7XG4gICAgICAvLyBPbmx5IG1hdGNoIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIHN0YXJ0IG9mIHRoZSB1cmwgdG8gbWF0Y2ggYWdhaW5zdDpcbiAgICAgIHJldHVybiBwYXRoU2VnbWVudHMubGVuZ3RoID09PSAwICYmIHBhdGhDb250YWluc0NoaWxkUm91dGU7XG4gICAgfVxuICAgIHJldHVybiBwYXRoQ29udGFpbnNDaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSb3V0ZVBhdGhzKHJvdXRlczogUm91dGVzLCBwYXJlbnRQYXRoOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3V0ZXMpXG4gICAgICA/IChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB0aGlzLmdldFJvdXRlUGF0aChyb3V0ZSwgcGFyZW50UGF0aCkpKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRoKHJvdXRlOiBSb3V0ZSwgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3Qgcm91dGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICghIXJvdXRlLm91dGxldCkgcmV0dXJuIHJvdXRlczsgLy8gRG9uJ3QgcmV0dXJuIHJlbGF0aXZlIHBhdGhzIGZvciBvdXRsZXQgcm91dGVzXG5cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAoISFyb3V0ZS5wYXRoKSB7XG4gICAgICBjdXJyZW50UGF0aC5wdXNoKHJvdXRlLnBhdGgpO1xuICAgICAgcm91dGVzLnB1c2goY3VycmVudFBhdGguam9pbignLycpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGVzLmNvbmNhdCh0aGlzLmdldFJvdXRlUGF0aHMocm91dGUuY2hpbGRyZW4sIGN1cnJlbnRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGFsUm91dGVQYXRoKHJvdXRlOiBSb3V0ZSwgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbW9kYWxPdXRsZXROYW1lID0gJ21vZGFsJztcbiAgICBpZiAoISFyb3V0ZS5wYXRoICYmIHJvdXRlLm91dGxldCA9PT0gbW9kYWxPdXRsZXROYW1lKSB7XG4gICAgICBjb25zdCBtb2RhbE91dGxldFBhdGggPSBgKCR7bW9kYWxPdXRsZXROYW1lfToke3JvdXRlLnBhdGh9KWA7XG4gICAgICBjb25zdCBtb2RhbFJvdXRlUGF0aCA9IFsuLi5wYXJlbnRQYXRoLCBtb2RhbE91dGxldFBhdGhdLmpvaW4oJy8nKTtcbiAgICAgIHJldHVybiBbbW9kYWxSb3V0ZVBhdGhdO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IFsuLi5wYXJlbnRQYXRoXTtcbiAgICBpZiAoISFyb3V0ZS5wYXRoKSB7XG4gICAgICBjdXJyZW50UGF0aC5wdXNoKHJvdXRlLnBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4udGhpcy5nZXRNb2RhbFJvdXRlUGF0aHMocm91dGUuY2hpbGRyZW4sIGN1cnJlbnRQYXRoKSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vZGFsUm91dGVQYXRocyhyb3V0ZXM6IFJvdXRlcywgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocm91dGVzKVxuICAgICAgPyAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5yb3V0ZXMubWFwKChyb3V0ZSkgPT4gdGhpcy5nZXRNb2RhbFJvdXRlUGF0aChyb3V0ZSwgcGFyZW50UGF0aCkpKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNOZXdNb2RhbFdpbmRvdyhuYXZpZ2F0aW9uRW5kOiBOYXZpZ2F0aW9uRW5kKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudE5hdmlnYXRpb24gPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpO1xuICAgIGlmICghY3VycmVudE5hdmlnYXRpb24gfHwgIWN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzUm91dGVQYXRoID0gKFxuICAgICAgY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uLmZpbmFsVXJsIHx8XG4gICAgICBjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24uZXh0cmFjdGVkVXJsXG4gICAgKS50b1N0cmluZygpO1xuICAgIGNvbnN0IHdhc01vZGFsUm91dGUgPSB0aGlzLmlzTW9kYWxSb3V0ZShwcmV2aW91c1JvdXRlUGF0aCk7XG4gICAgY29uc3QgaXNNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUobmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgaWYgKCF3YXNNb2RhbFJvdXRlICYmIGlzTW9kYWxSb3V0ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudE1vZGFsUm91dGVQYXJlbnQgPSBuYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzLnNwbGl0KCcvKG1vZGFsOicpWzBdO1xuICAgIGNvbnN0IHByZXZpb3VzTW9kYWxSb3V0ZVBhcmVudCA9IHByZXZpb3VzUm91dGVQYXRoLnNwbGl0KCcvKG1vZGFsOicpWzBdO1xuXG4gICAgcmV0dXJuIHByZXZpb3VzTW9kYWxSb3V0ZVBhcmVudCAhPT0gY3VycmVudE1vZGFsUm91dGVQYXJlbnQ7XG4gIH1cblxuICBwcml2YXRlIG5hdmlnYXRpb25FbmRMaXN0ZW5lciQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgTmF2aWdhdGlvbkVuZCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICk7XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yQ3VycmVudFRoZW5HZXROYXZpZ2F0aW9uRW5kU3RyZWFtKCk6IFByb21pc2U8T2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPj4ge1xuICAgIGlmICh0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpKSB7XG4gICAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbkVuZCA9IGF3YWl0IHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKGZpcnN0KCkpLnRvUHJvbWlzZSgpO1xuICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJC5waXBlKHN0YXJ0V2l0aChjdXJyZW50TmF2aWdhdGlvbkVuZCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj4ge1xuICAgIHJldHVybiBuYXZpZ2F0aW9uRW5kJC5waXBlKFxuICAgICAgZmlsdGVyKChuYXZpZ2F0aW9uRW5kKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgbmF2aWdhdGlvbkVuZCwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksXG4gICAgICBtYXAoKG5hdmlnYXRpb25FbmQpID0+ICh7XG4gICAgICAgIHJvdXRlOiB0aGlzLmdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpLFxuICAgICAgICBpc05ld01vZGFsOiB0aGlzLmlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZCksXG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlRGVhY3RpdmF0ZWRGb3IoXG4gICAgbmF2aWdhdGlvbkVuZCQ6IE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4sXG4gICAgbW9kYWxSb3V0ZVNldDogU2V0PHN0cmluZz4sXG4gICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtczogYm9vbGVhblxuICApOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmF2aWdhdGlvbkVuZCQucGlwZShcbiAgICAgIHBhaXJ3aXNlKCksXG4gICAgICBmaWx0ZXIoKFtwcmV2TmF2aWdhdGlvbiwgX10pID0+XG4gICAgICAgIHRoaXMubW9kYWxSb3V0ZVNldENvbnRhaW5zUGF0aChtb2RhbFJvdXRlU2V0LCBwcmV2TmF2aWdhdGlvbiwgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcylcbiAgICAgICksIC8vIE9ubHkgZW1pdCBpZiBwcmV2aW91cyByb3V0ZSB3YXMgbW9kYWxcbiAgICAgIG1hcCgoW18sIGN1cnJlbnROYXZpZ2F0aW9uXSkgPT4ge1xuICAgICAgICBjb25zdCBpc05ld01vZGFsUm91dGUgPSB0aGlzLmlzTW9kYWxSb3V0ZShjdXJyZW50TmF2aWdhdGlvbi51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgIC8vIERlYWN0aXZhdGUgbW9kYWwgcm91dGUgaWYgbmV3IHJvdXRlIGlzIE5PVCBtb2RhbCBPUiBpcyBvdXRzaWRlIGN1cnJlbnQgcGFyZW50IHJvdXRlOlxuICAgICAgICByZXR1cm4gIWlzTmV3TW9kYWxSb3V0ZSB8fCB0aGlzLmlzTmV3TW9kYWxXaW5kb3coY3VycmVudE5hdmlnYXRpb24pO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoKGlzRGVhY3RpdmF0aW9uKSA9PiBpc0RlYWN0aXZhdGlvbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG5hdmlnYXRpb25FbmQ6IE5hdmlnYXRpb25FbmQsXG4gICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtczogYm9vbGVhblxuICApIHtcbiAgICBjb25zdCBwYXRobmFtZSA9IG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMuc3BsaXQoJz8nKVswXTtcbiAgICBsZXQgaGFzUm91dGUgPSBtb2RhbFJvdXRlU2V0LmhhcyhwYXRobmFtZSk7XG4gICAgaWYgKCFoYXNSb3V0ZSAmJiBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zKSB7XG4gICAgICAvLyBVc2UgYGZvciAuLi4gb2ZgIGluc3RlYWQgb2YgYGZvckVhY2hgIHNvIHdlIGNhbiBicmVhayBvdXQgb2YgdGhlIGxvb3AgaWYgcm91dGUgaXMgZm91bmQ6XG4gICAgICBmb3IgKGxldCByb3V0ZSBvZiBtb2RhbFJvdXRlU2V0KSB7XG4gICAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSB0cnVlO1xuICAgICAgICBjb25zdCByb3V0ZU1hdGNoZXNQYXRoID0gdGhpcy5wYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgICByb3V0ZSxcbiAgICAgICAgICBleGFjdE1hdGNoXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyb3V0ZU1hdGNoZXNQYXRoKSB7XG4gICAgICAgICAgaGFzUm91dGUgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXNSb3V0ZTtcbiAgfVxuXG4gIGFzeW5jIGdldE1vZGFsTmF2aWdhdGlvbihcbiAgICByb3V0ZUNvbmZpZzogUm91dGVzW10sXG4gICAgbW9kdWxlUm9vdFJvdXRlUGF0aD86IHN0cmluZ1xuICApOiBQcm9taXNlPHsgYWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxNb2RhbFJvdXRlQWN0aXZhdGlvbj47IGRlYWN0aXZhdGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiB9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocm91dGVDb25maWcpKSB7XG4gICAgICBjb25zdCBuYXZpZ2F0aW9uRW5kJCA9IGF3YWl0IHRoaXMud2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpO1xuICAgICAgY29uc3QgbW9kYWxSb3V0ZXMgPSBhd2FpdCB0aGlzLmdldE1vZGFsUm91dGVzKHJvdXRlQ29uZmlnLCBtb2R1bGVSb290Um91dGVQYXRoKTtcbiAgICAgIGNvbnN0IGhhc01vZGFsUm91dGVzID0gbW9kYWxSb3V0ZXMubGVuZ3RoID4gMDtcbiAgICAgIGlmIChoYXNNb2RhbFJvdXRlcykge1xuICAgICAgICBjb25zdCBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zID0gbW9kYWxSb3V0ZXMuc29tZSgocm91dGUpID0+IHJvdXRlLmluY2x1ZGVzKCcvOicpKTtcbiAgICAgICAgY29uc3QgbW9kYWxSb3V0ZVNldCA9IG5ldyBTZXQobW9kYWxSb3V0ZXMpO1xuICAgICAgICBjb25zdCBhY3RpdmF0ZWQkID0gdGhpcy5tb2RhbFJvdXRlQWN0aXZhdGVkRm9yKFxuICAgICAgICAgIG5hdmlnYXRpb25FbmQkLFxuICAgICAgICAgIG1vZGFsUm91dGVTZXQsXG4gICAgICAgICAgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtc1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWFjdGl2YXRlZCQgPSB0aGlzLm1vZGFsUm91dGVEZWFjdGl2YXRlZEZvcihcbiAgICAgICAgICBuYXZpZ2F0aW9uRW5kJCxcbiAgICAgICAgICBtb2RhbFJvdXRlU2V0LFxuICAgICAgICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgYWN0aXZhdGVkJCwgZGVhY3RpdmF0ZWQkIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGFjdGl2YXRlZCQ6IEVNUFRZLCBkZWFjdGl2YXRlZCQ6IEVNUFRZIH07XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVRvTW9kYWwocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIHF1ZXJ5UGFyYW1zPzogUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29tbWFuZHMgPSBBcnJheS5pc0FycmF5KHBhdGgpID8gcGF0aCA6IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBjaGlsZFBhdGggPSBjb21tYW5kcy5wb3AoKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbLi4uY29tbWFuZHMsIHsgb3V0bGV0czogeyBtb2RhbDogW2NoaWxkUGF0aF0gfSB9XSwge1xuICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhc3luYyBuYXZpZ2F0ZVdpdGhpbk1vZGFsKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBxdWVyeVBhcmFtcz86IFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcmVsYXRpdmVQYXRoXSwge1xuICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLmdldEN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSgpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVPdXRPZk1vZGFsT3V0bGV0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGxldCByZXN1bHQgPSBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgY29uc3QgY3VycmVudEFjdGl2YXRlZFJvdXRlID0gdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKTtcbiAgICBpZiAoY3VycmVudEFjdGl2YXRlZFJvdXRlLm91dGxldCA9PT0gJ21vZGFsJykge1xuICAgICAgY29uc3QgcGFyZW50Um91dGUgPSB0aGlzLmdldEJhY2tkcm9wUm91dGUoY3VycmVudEFjdGl2YXRlZFJvdXRlKTtcbiAgICAgIHJlc3VsdCA9IHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLi8nXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiBwYXJlbnRSb3V0ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYWNrZHJvcFJvdXRlKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcbiAgICBsZXQgcGFyZW50Um91dGUgPSBjdXJyZW50QWN0aXZhdGVkUm91dGUucGFyZW50O1xuICAgIHdoaWxlIChwYXJlbnRSb3V0ZSAmJiAhcGFyZW50Um91dGUuY29tcG9uZW50ICYmICEhcGFyZW50Um91dGUucGFyZW50KSB7XG4gICAgICBwYXJlbnRSb3V0ZSA9IHBhcmVudFJvdXRlLnBhcmVudDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudFJvdXRlO1xuICB9XG59XG4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kZXNpZ25zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL21vZGFsL3NlcnZpY2VzL21vZGFsLW5hdmlnYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFpQixNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLE1BQWMsRUFBVSxLQUFxQjtRQUE3QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUEwTHpELDJCQUFzQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdEQsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUEwQixFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUMxRSxDQUFDO0lBNUxrRSxDQUFDO0lBRXJFLFlBQVksQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE9BQU8sVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUM1QixVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUNw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S0FBQTtJQUVPLGdCQUFnQixDQUFDLHFCQUFxQztRQUM1RCxJQUFJLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFDL0MsT0FBTyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO1lBQ3BFLFdBQVcsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1NBQ2xDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7OztZQWxVRixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzs7O1lBTnFCLE1BQU07WUFBcEQsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlLCBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFTVBUWSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNb2RhbFJvdXRlQWN0aXZhdGlvbiB9IGZyb20gJy4vbW9kYWwuaW50ZXJmYWNlcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7fVxuXG4gIGlzTW9kYWxSb3V0ZSh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1cmwuaW5jbHVkZXMoJyhtb2RhbDonKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCk6IEFjdGl2YXRlZFJvdXRlIHtcbiAgICBsZXQgY2hpbGRSb3V0ZSA9IHRoaXMucm91dGUucm9vdDtcbiAgICB3aGlsZSAoY2hpbGRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICBjaGlsZFJvdXRlID0gY2hpbGRSb3V0ZS5maXJzdENoaWxkO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0TW9kYWxSb3V0ZXMoXG4gICAgcm91dGVDb25maWc6IFJvdXRlc1tdLFxuICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IGZsYXR0ZW5lZFJvdXRlczogUm91dGVzID0gW10uY29uY2F0KC4uLnJvdXRlQ29uZmlnKTtcbiAgICBsZXQgbW9kYWxSb3V0ZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgbW9kdWxlUm9vdFBhdGhzID0gYXdhaXQgdGhpcy5nZXRNb2R1bGVSb290UGF0aChmbGF0dGVuZWRSb3V0ZXMsIG1vZHVsZVJvb3RSb3V0ZVBhdGgpO1xuICAgIGlmIChtb2R1bGVSb290UGF0aHMpIHtcbiAgICAgIG1vZGFsUm91dGVzID0gdGhpcy5nZXRNb2RhbFJvdXRlUGF0aHMoZmxhdHRlbmVkUm91dGVzLCBtb2R1bGVSb290UGF0aHMpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kYWxSb3V0ZXM7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldE1vZHVsZVJvb3RQYXRoKHJvdXRlczogUm91dGVzLCBtb2R1bGVSb290Um91dGVQYXRoPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmIChtb2R1bGVSb290Um91dGVQYXRoKSB7XG4gICAgICBjb25zdCB0cmltbWVkUGF0aHMgPSBtb2R1bGVSb290Um91dGVQYXRoXG4gICAgICAgIC50cmltKClcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLmZpbHRlcigocGF0aCkgPT4gISFwYXRoKTtcbiAgICAgIGNvbnN0IHJvb3RQYXRoID0gWycnXTtcbiAgICAgIHJldHVybiByb290UGF0aC5jb25jYXQodHJpbW1lZFBhdGhzKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50Um91dGVQYXRocyA9IGF3YWl0IHRoaXMuZ2V0Q3VycmVudFJvdXRlUGF0aHMoKTtcbiAgICBjb25zdCBtb2R1bGVSb290UGF0aHMgPSB0aGlzLmdldFJvdXRlUGF0aHNXaXRob3V0Q2hpbGRTZWdtZW50cyhjdXJyZW50Um91dGVQYXRocywgcm91dGVzKTtcbiAgICByZXR1cm4gbW9kdWxlUm9vdFBhdGhzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDdXJyZW50Um91dGVQYXRocygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3Qgcm9vdFBhdGggPSBbJyddO1xuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5yb3V0ZXIubmF2aWdhdGVkICYmICFjdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgLy8gSWYgcm91dGVyIGhhc24ndCBuYXZpZ2F0ZWQgeWV0IGFuZCB3ZSBhcmUgbm90IGluIHRoZSBtaWRkbGUgb2YgbmF2aWdhdGluZywgYXNzdW1lIHJvb3Q6XG4gICAgICByZXR1cm4gcm9vdFBhdGg7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnROYXZpZ2F0aW9uKSB7XG4gICAgICAvLyBXYWl0IGZvciBjdXJyZW50IG5hdmlnYXRpb24gdG8gZmluaXNoOlxuICAgICAgYXdhaXQgdGhpcy5uYXZpZ2F0aW9uRW5kTGlzdGVuZXIkLnBpcGUoZmlyc3QoKSkudG9Qcm9taXNlKCk7XG4gICAgfVxuXG4gICAgbGV0IGNoaWxkUm91dGUgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgd2hpbGUgKGNoaWxkUm91dGUuZmlyc3RDaGlsZCkge1xuICAgICAgY2hpbGRSb3V0ZSA9IGNoaWxkUm91dGUuZmlyc3RDaGlsZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEJhY2tkcm9wUm91dGVQYXRoID0gY2hpbGRSb3V0ZS5wYXRoRnJvbVJvb3QuZmlsdGVyKFxuICAgICAgKHJvdXRlKSA9PiByb3V0ZS5vdXRsZXQgIT09ICdtb2RhbCdcbiAgICApO1xuXG4gICAgcmV0dXJuIHJvb3RQYXRoLmNvbmNhdChcbiAgICAgIC4uLmN1cnJlbnRCYWNrZHJvcFJvdXRlUGF0aC5tYXAoKHJvdXRlKSA9PlxuICAgICAgICByb3V0ZS51cmwuZmlsdGVyKChzZWdtZW50KSA9PiAhIXNlZ21lbnQucGF0aCkubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzKHJvdXRlUGF0aHM6IHN0cmluZ1tdLCByb3V0ZXM6IFJvdXRlcyk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIXJvdXRlUGF0aHMubGVuZ3RoKSByZXR1cm4gcm91dGVQYXRocztcblxuICAgIGNvbnN0IG1hdGNoZWRDaGlsZFJvdXRlID0gdGhpcy5maW5kQ2hpbGRSb3V0ZUZvclVybChyb3V0ZVBhdGhzLmpvaW4oJy8nKSwgcm91dGVzKTtcblxuICAgIGlmICghbWF0Y2hlZENoaWxkUm91dGUpIHJldHVybiByb3V0ZVBhdGhzO1xuXG4gICAgY29uc3Qgc3RhcnRTbGFzaFJlZ2V4ID0gL15cXC8vO1xuICAgIGNvbnN0IHJlbGF0aXZlQ2hpbGRSb3V0ZSA9IG1hdGNoZWRDaGlsZFJvdXRlLnJlcGxhY2Uoc3RhcnRTbGFzaFJlZ2V4LCAnJyk7XG4gICAgY29uc3QgY2hpbGRTZWdtZW50Q291bnQgPSByZWxhdGl2ZUNoaWxkUm91dGUuc3BsaXQoJy8nKS5sZW5ndGg7XG4gICAgY29uc3Qgcm91dGVQYXRoc1dpdGhvdXRDaGlsZFNlZ21lbnRzID0gcm91dGVQYXRocy5zbGljZSgwLCAtY2hpbGRTZWdtZW50Q291bnQpOyAvLyBSZW1vdmUgY2hpbGQgc2VnbWVudHMgZnJvbSBlbmQgb2Ygcm91dGUgcGF0aCBhcnJheVxuICAgIHJldHVybiByb3V0ZVBhdGhzV2l0aG91dENoaWxkU2VnbWVudHM7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDaGlsZFJvdXRlRm9yVXJsKHVybDogc3RyaW5nLCByb3V0ZXM6IFJvdXRlcykge1xuICAgIGNvbnN0IG1vZHVsZVJlbGF0aXZlUGF0aHMgPSB0aGlzLmdldFJvdXRlUGF0aHMocm91dGVzLCBbJyddKS5zb3J0KCkucmV2ZXJzZSgpOyAvLyBFbnN1cmUgY2hpbGQgcGF0aHMgYXJlIGV2YWx1YXRlZCBmaXJzdFxuICAgIGxldCBtYXRjaGVkQ2hpbGRSb3V0ZSA9IG1vZHVsZVJlbGF0aXZlUGF0aHMuZmluZCgocGF0aCkgPT4gdXJsLmVuZHNXaXRoKHBhdGgpKTtcbiAgICBpZiAoIW1hdGNoZWRDaGlsZFJvdXRlKSB7XG4gICAgICAvLyBObyBzdGF0aWMgY2hpbGQgcm91dGUgZm91bmQgbWF0Y2hpbmcgY3VycmVudCByb3V0ZSAtIGxvb2sgZm9yIGNoaWxkIHJvdXRlIHdpdGggdXJsIHBhcmFtczpcbiAgICAgIGNvbnN0IGV4YWN0TWF0Y2ggPSBmYWxzZTtcbiAgICAgIG1hdGNoZWRDaGlsZFJvdXRlID0gbW9kdWxlUmVsYXRpdmVQYXRocy5maW5kKFxuICAgICAgICAocGF0aCkgPT5cbiAgICAgICAgICBwYXRoLmluY2x1ZGVzKCcvOicpICYmIHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXModXJsLCBwYXRoLCBleGFjdE1hdGNoKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdGNoZWRDaGlsZFJvdXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRoQ29udGFpbnNDaGlsZFJvdXRlV2l0aFVybFBhcmFtcyhcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM6IHN0cmluZyxcbiAgICBleGFjdE1hdGNoOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBzdGFydFNsYXNoUmVnZXggPSAvXlxcLy87XG4gICAgbGV0IGNoaWxkUm91dGVUb01hdGNoID0gY2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXM7XG4gICAgaWYgKCFleGFjdE1hdGNoKSB7XG4gICAgICBjb25zdCByZWxhdGl2ZUNoaWxkUm91dGUgPSBjaGlsZFJvdXRlV2l0aFVybFBhcmFtcy5yZXBsYWNlKHN0YXJ0U2xhc2hSZWdleCwgJycpO1xuICAgICAgY2hpbGRSb3V0ZVRvTWF0Y2ggPSByZWxhdGl2ZUNoaWxkUm91dGU7XG4gICAgfVxuICAgIGNvbnN0IGNoaWxkUm91dGVTZWdtZW50cyA9IGNoaWxkUm91dGVUb01hdGNoLnNwbGl0KCcvJyk7XG4gICAgLy8gTWF0Y2ggZWFjaCBjaGlsZCByb3V0ZSBzZWdtZW50IGFnYWluc3QgdXJsXG4gICAgLy8gTWF0Y2ggYmFja3dhcmRzIGZyb20gZW5kIHRvIHN0YXJ0IG9mIGNoaWxkIHJvdXRlLCBpLmUuIFwidXJsIGVuZHMgd2l0aCBjaGlsZCByb3V0ZVwiOlxuICAgIGNvbnN0IHBhdGhDb250YWluc0NoaWxkUm91dGUgPSBjaGlsZFJvdXRlU2VnbWVudHMucmV2ZXJzZSgpLmV2ZXJ5KChjaGlsZFJvdXRlU2VnbWVudCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFNlZ21lbnQgPSBwYXRoU2VnbWVudHMucG9wKCk7XG4gICAgICAvLyB1cmwgcGFyYW1zIChlLmcuIGAvOmlkL2ApIGFyZSB0cmVhdGVkIGFzIGEgbWF0Y2g6XG4gICAgICByZXR1cm4gY2hpbGRSb3V0ZVNlZ21lbnQuc3RhcnRzV2l0aCgnOicpIHx8IGNoaWxkUm91dGVTZWdtZW50ID09PSBwYXRoU2VnbWVudDtcbiAgICB9KTtcbiAgICBpZiAoZXhhY3RNYXRjaCkge1xuICAgICAgLy8gT25seSBtYXRjaCBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBzdGFydCBvZiB0aGUgdXJsIHRvIG1hdGNoIGFnYWluc3Q6XG4gICAgICByZXR1cm4gcGF0aFNlZ21lbnRzLmxlbmd0aCA9PT0gMCAmJiBwYXRoQ29udGFpbnNDaGlsZFJvdXRlO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aENvbnRhaW5zQ2hpbGRSb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVQYXRocyhyb3V0ZXM6IFJvdXRlcywgcGFyZW50UGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocm91dGVzKVxuICAgICAgPyAoW10gYXMgc3RyaW5nW10pLmNvbmNhdCguLi5yb3V0ZXMubWFwKChyb3V0ZSkgPT4gdGhpcy5nZXRSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGdldFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJvdXRlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoISFyb3V0ZS5vdXRsZXQpIHJldHVybiByb3V0ZXM7IC8vIERvbid0IHJldHVybiByZWxhdGl2ZSBwYXRocyBmb3Igb3V0bGV0IHJvdXRlc1xuXG4gICAgY29uc3QgY3VycmVudFBhdGggPSBbLi4ucGFyZW50UGF0aF07XG4gICAgaWYgKCEhcm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICAgIHJvdXRlcy5wdXNoKGN1cnJlbnRQYXRoLmpvaW4oJy8nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvdXRlcy5jb25jYXQodGhpcy5nZXRSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aChyb3V0ZTogUm91dGUsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG1vZGFsT3V0bGV0TmFtZSA9ICdtb2RhbCc7XG4gICAgaWYgKCEhcm91dGUucGF0aCAmJiByb3V0ZS5vdXRsZXQgPT09IG1vZGFsT3V0bGV0TmFtZSkge1xuICAgICAgY29uc3QgbW9kYWxPdXRsZXRQYXRoID0gYCgke21vZGFsT3V0bGV0TmFtZX06JHtyb3V0ZS5wYXRofSlgO1xuICAgICAgY29uc3QgbW9kYWxSb3V0ZVBhdGggPSBbLi4ucGFyZW50UGF0aCwgbW9kYWxPdXRsZXRQYXRoXS5qb2luKCcvJyk7XG4gICAgICByZXR1cm4gW21vZGFsUm91dGVQYXRoXTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudFBhdGggPSBbLi4ucGFyZW50UGF0aF07XG4gICAgaWYgKCEhcm91dGUucGF0aCkge1xuICAgICAgY3VycmVudFBhdGgucHVzaChyb3V0ZS5wYXRoKTtcbiAgICB9XG4gICAgcmV0dXJuIChbXSBhcyBzdHJpbmdbXSkuY29uY2F0KC4uLnRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGhzKHJvdXRlLmNoaWxkcmVuLCBjdXJyZW50UGF0aCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2RhbFJvdXRlUGF0aHMocm91dGVzOiBSb3V0ZXMsIHBhcmVudFBhdGg6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvdXRlcylcbiAgICAgID8gKFtdIGFzIHN0cmluZ1tdKS5jb25jYXQoLi4ucm91dGVzLm1hcCgocm91dGUpID0+IHRoaXMuZ2V0TW9kYWxSb3V0ZVBhdGgocm91dGUsIHBhcmVudFBhdGgpKSlcbiAgICAgIDogW107XG4gIH1cblxuICBwcml2YXRlIGlzTmV3TW9kYWxXaW5kb3cobmF2aWdhdGlvbkVuZDogTmF2aWdhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcbiAgICBpZiAoIWN1cnJlbnROYXZpZ2F0aW9uIHx8ICFjdXJyZW50TmF2aWdhdGlvbi5wcmV2aW91c05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBwcmV2aW91c1JvdXRlUGF0aCA9IChcbiAgICAgIGN1cnJlbnROYXZpZ2F0aW9uLnByZXZpb3VzTmF2aWdhdGlvbi5maW5hbFVybCB8fFxuICAgICAgY3VycmVudE5hdmlnYXRpb24ucHJldmlvdXNOYXZpZ2F0aW9uLmV4dHJhY3RlZFVybFxuICAgICkudG9TdHJpbmcoKTtcbiAgICBjb25zdCB3YXNNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUocHJldmlvdXNSb3V0ZVBhdGgpO1xuICAgIGNvbnN0IGlzTW9kYWxSb3V0ZSA9IHRoaXMuaXNNb2RhbFJvdXRlKG5hdmlnYXRpb25FbmQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgIGlmICghd2FzTW9kYWxSb3V0ZSAmJiBpc01vZGFsUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50ID0gbmF2aWdhdGlvbkVuZC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdCgnLyhtb2RhbDonKVswXTtcbiAgICBjb25zdCBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgPSBwcmV2aW91c1JvdXRlUGF0aC5zcGxpdCgnLyhtb2RhbDonKVswXTtcblxuICAgIHJldHVybiBwcmV2aW91c01vZGFsUm91dGVQYXJlbnQgIT09IGN1cnJlbnRNb2RhbFJvdXRlUGFyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kTGlzdGVuZXIkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudCk6IGV2ZW50IGlzIE5hdmlnYXRpb25FbmQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKVxuICApO1xuXG4gIHByaXZhdGUgYXN5bmMgd2FpdEZvckN1cnJlbnRUaGVuR2V0TmF2aWdhdGlvbkVuZFN0cmVhbSgpOiBQcm9taXNlPE9ic2VydmFibGU8TmF2aWdhdGlvbkVuZD4+IHtcbiAgICBpZiAodGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSkge1xuICAgICAgY29uc3QgY3VycmVudE5hdmlnYXRpb25FbmQgPSBhd2FpdCB0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQucGlwZShmaXJzdCgpKS50b1Byb21pc2UoKTtcbiAgICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb25FbmRMaXN0ZW5lciQucGlwZShzdGFydFdpdGgoY3VycmVudE5hdmlnYXRpb25FbmQpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbkVuZExpc3RlbmVyJDtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZUFjdGl2YXRlZEZvcihcbiAgICBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxOYXZpZ2F0aW9uRW5kPixcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zOiBib29sZWFuXG4gICk6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+IHtcbiAgICByZXR1cm4gbmF2aWdhdGlvbkVuZCQucGlwZShcbiAgICAgIGZpbHRlcigobmF2aWdhdGlvbkVuZCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbFJvdXRlU2V0Q29udGFpbnNQYXRoKG1vZGFsUm91dGVTZXQsIG5hdmlnYXRpb25FbmQsIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpXG4gICAgICApLFxuICAgICAgbWFwKChuYXZpZ2F0aW9uRW5kKSA9PiAoe1xuICAgICAgICByb3V0ZTogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICAgICAgaXNOZXdNb2RhbDogdGhpcy5pc05ld01vZGFsV2luZG93KG5hdmlnYXRpb25FbmQpLFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZURlYWN0aXZhdGVkRm9yKFxuICAgIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPE5hdmlnYXRpb25FbmQ+LFxuICAgIG1vZGFsUm91dGVTZXQ6IFNldDxzdHJpbmc+LFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIG5hdmlnYXRpb25FbmQkLnBpcGUoXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgZmlsdGVyKChbcHJldk5hdmlnYXRpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLm1vZGFsUm91dGVTZXRDb250YWluc1BhdGgobW9kYWxSb3V0ZVNldCwgcHJldk5hdmlnYXRpb24sIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXMpXG4gICAgICApLCAvLyBPbmx5IGVtaXQgaWYgcHJldmlvdXMgcm91dGUgd2FzIG1vZGFsXG4gICAgICBtYXAoKFtfLCBjdXJyZW50TmF2aWdhdGlvbl0pID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdNb2RhbFJvdXRlID0gdGhpcy5pc01vZGFsUm91dGUoY3VycmVudE5hdmlnYXRpb24udXJsQWZ0ZXJSZWRpcmVjdHMpO1xuICAgICAgICAvLyBEZWFjdGl2YXRlIG1vZGFsIHJvdXRlIGlmIG5ldyByb3V0ZSBpcyBOT1QgbW9kYWwgT1IgaXMgb3V0c2lkZSBjdXJyZW50IHBhcmVudCByb3V0ZTpcbiAgICAgICAgcmV0dXJuICFpc05ld01vZGFsUm91dGUgfHwgdGhpcy5pc05ld01vZGFsV2luZG93KGN1cnJlbnROYXZpZ2F0aW9uKTtcbiAgICAgIH0pLFxuICAgICAgZmlsdGVyKChpc0RlYWN0aXZhdGlvbikgPT4gaXNEZWFjdGl2YXRpb24pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kYWxSb3V0ZVNldENvbnRhaW5zUGF0aChcbiAgICBtb2RhbFJvdXRlU2V0OiBTZXQ8c3RyaW5nPixcbiAgICBuYXZpZ2F0aW9uRW5kOiBOYXZpZ2F0aW9uRW5kLFxuICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXM6IGJvb2xlYW5cbiAgKSB7XG4gICAgY29uc3QgcGF0aG5hbWUgPSBuYXZpZ2F0aW9uRW5kLnVybEFmdGVyUmVkaXJlY3RzLnNwbGl0KCc/JylbMF07XG4gICAgbGV0IGhhc1JvdXRlID0gbW9kYWxSb3V0ZVNldC5oYXMocGF0aG5hbWUpO1xuICAgIGlmICghaGFzUm91dGUgJiYgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcykge1xuICAgICAgLy8gVXNlIGBmb3IgLi4uIG9mYCBpbnN0ZWFkIG9mIGBmb3JFYWNoYCBzbyB3ZSBjYW4gYnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHJvdXRlIGlzIGZvdW5kOlxuICAgICAgZm9yIChsZXQgcm91dGUgb2YgbW9kYWxSb3V0ZVNldCkge1xuICAgICAgICBjb25zdCBleGFjdE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgcm91dGVNYXRjaGVzUGF0aCA9IHRoaXMucGF0aENvbnRhaW5zQ2hpbGRSb3V0ZVdpdGhVcmxQYXJhbXMoXG4gICAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgICAgcm91dGUsXG4gICAgICAgICAgZXhhY3RNYXRjaFxuICAgICAgICApO1xuICAgICAgICBpZiAocm91dGVNYXRjaGVzUGF0aCkge1xuICAgICAgICAgIGhhc1JvdXRlID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzUm91dGU7XG4gIH1cblxuICBhc3luYyBnZXRNb2RhbE5hdmlnYXRpb24oXG4gICAgcm91dGVDb25maWc6IFJvdXRlc1tdLFxuICAgIG1vZHVsZVJvb3RSb3V0ZVBhdGg/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IGFjdGl2YXRlZCQ6IE9ic2VydmFibGU8TW9kYWxSb3V0ZUFjdGl2YXRpb24+OyBkZWFjdGl2YXRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gfT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJvdXRlQ29uZmlnKSkge1xuICAgICAgY29uc3QgbmF2aWdhdGlvbkVuZCQgPSBhd2FpdCB0aGlzLndhaXRGb3JDdXJyZW50VGhlbkdldE5hdmlnYXRpb25FbmRTdHJlYW0oKTtcbiAgICAgIGNvbnN0IG1vZGFsUm91dGVzID0gYXdhaXQgdGhpcy5nZXRNb2RhbFJvdXRlcyhyb3V0ZUNvbmZpZywgbW9kdWxlUm9vdFJvdXRlUGF0aCk7XG4gICAgICBjb25zdCBoYXNNb2RhbFJvdXRlcyA9IG1vZGFsUm91dGVzLmxlbmd0aCA+IDA7XG4gICAgICBpZiAoaGFzTW9kYWxSb3V0ZXMpIHtcbiAgICAgICAgY29uc3QgbW9kYWxSb3V0ZXNDb250YWluc1VybFBhcmFtcyA9IG1vZGFsUm91dGVzLnNvbWUoKHJvdXRlKSA9PiByb3V0ZS5pbmNsdWRlcygnLzonKSk7XG4gICAgICAgIGNvbnN0IG1vZGFsUm91dGVTZXQgPSBuZXcgU2V0KG1vZGFsUm91dGVzKTtcbiAgICAgICAgY29uc3QgYWN0aXZhdGVkJCA9IHRoaXMubW9kYWxSb3V0ZUFjdGl2YXRlZEZvcihcbiAgICAgICAgICBuYXZpZ2F0aW9uRW5kJCxcbiAgICAgICAgICBtb2RhbFJvdXRlU2V0LFxuICAgICAgICAgIG1vZGFsUm91dGVzQ29udGFpbnNVcmxQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVhY3RpdmF0ZWQkID0gdGhpcy5tb2RhbFJvdXRlRGVhY3RpdmF0ZWRGb3IoXG4gICAgICAgICAgbmF2aWdhdGlvbkVuZCQsXG4gICAgICAgICAgbW9kYWxSb3V0ZVNldCxcbiAgICAgICAgICBtb2RhbFJvdXRlc0NvbnRhaW5zVXJsUGFyYW1zXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IGFjdGl2YXRlZCQsIGRlYWN0aXZhdGVkJCB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBhY3RpdmF0ZWQkOiBFTVBUWSwgZGVhY3RpdmF0ZWQkOiBFTVBUWSB9O1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVUb01vZGFsKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBxdWVyeVBhcmFtcz86IFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gQXJyYXkuaXNBcnJheShwYXRoKSA/IHBhdGggOiBwYXRoLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgY2hpbGRQYXRoID0gY29tbWFuZHMucG9wKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWy4uLmNvbW1hbmRzLCB7IG91dGxldHM6IHsgbW9kYWw6IFtjaGlsZFBhdGhdIH0gfV0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYXN5bmMgbmF2aWdhdGVXaXRoaW5Nb2RhbChyZWxhdGl2ZVBhdGg6IHN0cmluZywgcXVlcnlQYXJhbXM/OiBQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JlbGF0aXZlUGF0aF0sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5nZXRDdXJyZW50QWN0aXZhdGVkUm91dGUoKSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5hdmlnYXRlT3V0T2ZNb2RhbE91dGxldCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgcmVzdWx0ID0gUHJvbWlzZS5yZXNvbHZlKHRydWUpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuZ2V0Q3VycmVudEFjdGl2YXRlZFJvdXRlKCk7XG4gICAgaWYgKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZS5vdXRsZXQgPT09ICdtb2RhbCcpIHtcbiAgICAgIGNvbnN0IHBhcmVudFJvdXRlID0gdGhpcy5nZXRCYWNrZHJvcFJvdXRlKGN1cnJlbnRBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgICByZXN1bHQgPSB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4vJ10sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogcGFyZW50Um91dGUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmFja2Ryb3BSb3V0ZShjdXJyZW50QWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgbGV0IHBhcmVudFJvdXRlID0gY3VycmVudEFjdGl2YXRlZFJvdXRlLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50Um91dGUgJiYgIXBhcmVudFJvdXRlLmNvbXBvbmVudCAmJiAhIXBhcmVudFJvdXRlLnBhcmVudCkge1xuICAgICAgcGFyZW50Um91dGUgPSBwYXJlbnRSb3V0ZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRSb3V0ZTtcbiAgfVxufVxuIl19
@@ -84,9 +84,7 @@ export class PageProgressComponent {
84
84
  PageProgressComponent.decorators = [
85
85
  { type: Component, args: [{
86
86
  selector: 'kirby-page-progress',
87
- template: `
88
- <ng-content></ng-content>
89
- `,
87
+ template: ` <ng-content></ng-content> `,
90
88
  styles: [':host {display: flex}']
91
89
  },] }
92
90
  ];
@@ -102,9 +100,7 @@ export class PageTitleComponent {
102
100
  PageTitleComponent.decorators = [
103
101
  { type: Component, args: [{
104
102
  selector: 'kirby-page-title',
105
- template: `
106
- <ng-content></ng-content>
107
- `
103
+ template: ` <ng-content></ng-content> `
108
104
  },] }
109
105
  ];
110
106
  export class PageContentComponent {
@@ -112,9 +108,7 @@ export class PageContentComponent {
112
108
  PageContentComponent.decorators = [
113
109
  { type: Component, args: [{
114
110
  selector: 'kirby-page-content',
115
- template: `
116
- <ng-content></ng-content>
117
- `
111
+ template: ` <ng-content></ng-content> `
118
112
  },] }
119
113
  ];
120
114
  export class PageActionsComponent {
@@ -122,9 +116,7 @@ export class PageActionsComponent {
122
116
  PageActionsComponent.decorators = [
123
117
  { type: Component, args: [{
124
118
  selector: 'kirby-page-actions',
125
- template: `
126
- <ng-content select="button[kirby-button]"></ng-content>
127
- `
119
+ template: ` <ng-content select="button[kirby-button]"></ng-content> `
128
120
  },] }
129
121
  ];
130
122
  export class PageComponent {
@@ -344,4 +336,4 @@ PageComponent.propDecorators = {
344
336
  _onKeyboardWillShow: [{ type: HostListener, args: ['window:keyboardWillShow', ['$event'],] }],
345
337
  _onKeyboardWillHide: [{ type: HostListener, args: ['window:keyboardWillHide',] }]
346
338
  };
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFlLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBa0J2RCxNQUFNLE9BQU8sa0JBQWtCOzs7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RSxJQUFJLEVBQUUsVUFBVSxFQUFFO2tDQUcxRCxTQUFTLFNBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7eUNBRXBFLFNBQVMsU0FBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTt5Q0FFM0UsWUFBWSxTQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2tDQUU1RSxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7NEJBRXJFLGVBQWUsU0FBQyxvQkFBb0I7NEJBRXBDLGVBQWUsU0FBQyxvQkFBb0I7a0NBeU1wQyxZQUFZLFNBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7a0NBVWxELFlBQVksU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25Gb290ZXIsIElvbkhlYWRlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbi9raXJieS1hbmltYXRpb24nO1xuaW1wb3J0IHsgRml0SGVhZGluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZml0LWhlYWRpbmcvZml0LWhlYWRpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJy4uLy4uL3R5cGVzL3dpbmRvdy1yZWYnO1xuaW1wb3J0IHsgTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwvc2VydmljZXMvbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHNlbGVjdGVkVGFiQ2xpY2tFdmVudCB9IGZyb20gJy4uL3RhYnMvdGFiLWJ1dHRvbi90YWItYnV0dG9uLmV2ZW50cyc7XG5pbXBvcnQgeyBUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFicy90YWJzLmNvbXBvbmVudCc7XG5cbnR5cGUgc3RpY2t5Q29uZmlnID0geyBzdGlja3k6IGJvb2xlYW4gfTtcbnR5cGUgZml4ZWRDb25maWcgPSB7IGZpeGVkOiBib29sZWFuIH07XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIFwicHVsbC10by1yZWZyZXNoXCIgYmVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxUb1JlZnJlc2hFdmVudCB7XG4gIC8qKlxuICAgKiBJbnZva2UgdGhpcyBjYWxsYmFjay1tZXRob2Qgd2hlbiBhY3Rpb24gdG8gcGVyZm9ybSB1cG9uIFwicHVsbC10by1yZWZyZXNoXCIgY29tcGxldGVzLlxuICAgKi9cbiAgY29tcGxldGUoKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbJzpob3N0IHtkaXNwbGF5OiBmbGV4fSddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBGaW5kIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmdXR1cmUgcGFnZSBjb25maWd1cmF0aW9uIC8gY29uc3VtcHRpb25cbiAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3YXMgY2hvc2VuIG92ZXIgZXhwYW5kaW5nIGBtb3ZlQ2hpbGRgIG1ldGhvZCBpbiBjb21wb25lbnQgd3JhcHBlciB3aXRoIHlldCBhbm90aGVyIHNjZW5hcmlvXG4gIEBIb3N0QmluZGluZygnYXR0ci5zbG90Jykgc2xvdCA9ICdzdGFydCc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBtb2RhbFdyYXBwZXI6IE1vZGFsV3JhcHBlckNvbXBvbmVudCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RhbFdyYXBwZXIgJiYgdGhpcy5tb2RhbFdyYXBwZXIuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicpIHtcbiAgICAgIHRoaXMuc2xvdCA9ICdlbmQnO1xuICAgIH1cbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLXRpdGxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1hY3Rpb25zJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJidXR0b25ba2lyYnktYnV0dG9uXVwiPjwvbmctY29udGVudD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjb250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGlvbkhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkhlYWRlckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkZvb3RlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Gb290ZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Gb290ZXJFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdwYWdlVGl0bGUnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBwYWdlVGl0bGU6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2ltcGxlVGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNpbXBsZVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIGN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21UaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VBY3Rpb25zRGlyZWN0aXZlKVxuICBjdXN0b21BY3Rpb25zOiBRdWVyeUxpc3Q8UGFnZUFjdGlvbnNEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VDb250ZW50RGlyZWN0aXZlKVxuICBwcml2YXRlIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxQYWdlQ29udGVudERpcmVjdGl2ZT47XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNBY3Rpb25zSW5QYWdlOiBib29sZWFuO1xuICB0b29sYmFyVGl0bGVWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZTogYm9vbGVhbjtcbiAgdG9vbGJhclN0aWNreUFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuXG4gIGZpdEhlYWRpbmdDb25maWc6IEZpdEhlYWRpbmdDb25maWc7XG5cbiAgdG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcGFnZUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHN0aWNreUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRBY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgcGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWY6IEludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICBwcml2YXRlIHVybHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaGFzRW50ZXJlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIG5nT25EZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbmF2aWdhdGlvblN0YXJ0JDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpLFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydClcbiAgKTtcblxuICBwcml2YXRlIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPFJvdXRlckV2ZW50PiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHRha2VVbnRpbCh0aGlzLm5nT25EZXN0cm95JCksXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB3aW5kb3dSZWY6IFdpbmRvd1JlZixcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSB0YWJzQ29tcG9uZW50OiBUYWJzQ29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVdyYXBwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy50aXRsZU1heExpbmVzKSB7XG4gICAgICB0aGlzLmZpdEhlYWRpbmdDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZml0SGVhZGluZ0NvbmZpZyxcbiAgICAgICAgbWF4TGluZXM6IGNoYW5nZXMudGl0bGVNYXhMaW5lcy5jdXJyZW50VmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5hdmlnYXRpb25TdGFydCQuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvblN0YXJ0KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLnVybHMuaW5jbHVkZXMoZXZlbnQudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMucm91dGVyLnVybClcbiAgICAgICkge1xuICAgICAgICB0aGlzLm9uTGVhdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMubmF2aWdhdGlvbkVuZCQuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgaWYgKHRoaXMudXJscy5pbmNsdWRlcyhldmVudC51cmxBZnRlclJlZGlyZWN0cykpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihzZWxlY3RlZFRhYkNsaWNrRXZlbnQsICgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXJscy5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICB0aGlzLnVybHMucHVzaCh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihzZWxlY3RlZFRhYkNsaWNrRXZlbnQsICgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGVnYXRlUmVmcmVzaEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCh7XG4gICAgICBjb21wbGV0ZTogZXZlbnQudGFyZ2V0LmNvbXBsZXRlLmJpbmQoZXZlbnQudGFyZ2V0KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25FbnRlcigpIHtcbiAgICBpZiAodGhpcy5oYXNFbnRlcmVkKSByZXR1cm47XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICAgIGlmICh0aGlzLnBhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25MZWF2ZSgpIHtcbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYudW5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmhhc0VudGVyZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnRhYkJhckJvdHRvbUhpZGRlbiAmJiB0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaXRsZSgpIHtcbiAgICAvLyBFbnN1cmVzIGluaXRpYWxpemVUaXRsZSgpIHdvbid0IHJ1biwgaWYgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5oYXNQYWdlVGl0bGUgPSB0aGlzLnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGU7XG4gICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIXRoaXMuaGFzUGFnZVRpdGxlO1xuXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8vIHRzbGludDpkaXNhYmxlOnByZXR0aWVyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy50b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgICBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuaGFzQWN0aW9uc0luUGFnZSA9ICEhdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlV3JhcHBlcigpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQocGFyZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Gb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgfTtcblxuICAgIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy50b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQnXSlcbiAgX29uS2V5Ym9hcmRXaWxsU2hvdyhpbmZvPzogeyBrZXlib2FyZEhlaWdodDogbnVtYmVyIH0pIHtcbiAgICBpZiAoaW5mbyAmJiBpbmZvLmtleWJvYXJkSGVpZ2h0KSB7XG4gICAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLWtleWJvYXJkLW9mZnNldCcsXG4gICAgICAgIGAke2luZm8ua2V5Ym9hcmRIZWlnaHR9cHhgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxIaWRlJylcbiAgX29uS2V5Ym9hcmRXaWxsSGlkZSgpIHtcbiAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0ta2V5Ym9hcmQtb2Zmc2V0JywgJzBweCcpO1xuICB9XG59XG4iXX0=
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFlLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBa0J2RCxNQUFNLE9BQU8sa0JBQWtCOzs7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QUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2tDQUcxRCxTQUFTLFNBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7eUNBRXBFLFNBQVMsU0FBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTt5Q0FFM0UsWUFBWSxTQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2tDQUU1RSxZQUFZLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7NEJBRXJFLGVBQWUsU0FBQyxvQkFBb0I7NEJBRXBDLGVBQWUsU0FBQyxvQkFBb0I7a0NBME1wQyxZQUFZLFNBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7a0NBVWxELFlBQVksU0FBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25Db250ZW50LCBJb25Gb290ZXIsIElvbkhlYWRlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbi9raXJieS1hbmltYXRpb24nO1xuaW1wb3J0IHsgRml0SGVhZGluZ0NvbmZpZyB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZml0LWhlYWRpbmcvZml0LWhlYWRpbmcuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpbmRvd1JlZiB9IGZyb20gJy4uLy4uL3R5cGVzL3dpbmRvdy1yZWYnO1xuaW1wb3J0IHsgTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwvc2VydmljZXMvbW9kYWwtbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IHNlbGVjdGVkVGFiQ2xpY2tFdmVudCB9IGZyb20gJy4uL3RhYnMvdGFiLWJ1dHRvbi90YWItYnV0dG9uLmV2ZW50cyc7XG5pbXBvcnQgeyBUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFicy90YWJzLmNvbXBvbmVudCc7XG5cbnR5cGUgc3RpY2t5Q29uZmlnID0geyBzdGlja3k6IGJvb2xlYW4gfTtcbnR5cGUgZml4ZWRDb25maWcgPSB7IGZpeGVkOiBib29sZWFuIH07XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIFwicHVsbC10by1yZWZyZXNoXCIgYmVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxUb1JlZnJlc2hFdmVudCB7XG4gIC8qKlxuICAgKiBJbnZva2UgdGhpcyBjYWxsYmFjay1tZXRob2Qgd2hlbiBhY3Rpb24gdG8gcGVyZm9ybSB1cG9uIFwicHVsbC10by1yZWZyZXNoXCIgY29tcGxldGVzLlxuICAgKi9cbiAgY29tcGxldGUoKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG4gIHN0eWxlczogWyc6aG9zdCB7ZGlzcGxheTogZmxleH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVByb2dyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVE9ETzogRmluZCBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxpZ25zIHdpdGggZnV0dXJlIHBhZ2UgY29uZmlndXJhdGlvbiAvIGNvbnN1bXB0aW9uXG4gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gd2FzIGNob3NlbiBvdmVyIGV4cGFuZGluZyBgbW92ZUNoaWxkYCBtZXRob2QgaW4gY29tcG9uZW50IHdyYXBwZXIgd2l0aCB5ZXQgYW5vdGhlciBzY2VuYXJpb1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc2xvdCcpIHNsb3QgPSAnc3RhcnQnO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgbW9kYWxXcmFwcGVyOiBNb2RhbFdyYXBwZXJDb21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxXcmFwcGVyICYmIHRoaXMubW9kYWxXcmFwcGVyLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICB0aGlzLnNsb3QgPSAnZW5kJztcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtY29udGVudCcsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1hY3Rpb25zJyxcbiAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25zQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZUFsaWdubWVudDogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xuICBASW5wdXQoKSBkZWZhdWx0QmFja0hyZWY6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUJhY2tCdXR0b246IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRpdGxlTWF4TGluZXM6IG51bWJlcjtcblxuICBwcml2YXRlIF90YWJCYXJCb3R0b21IaWRkZW46IGJvb2xlYW47XG4gIHB1YmxpYyBnZXQgdGFiQmFyQm90dG9tSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW47XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJCYXJCb3R0b21IaWRkZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICAvLyBhcyB3ZSBhcmUgc2V0dGluZyBhIGNsYXNzIG9uIHRhYnMsIHdlIG5lZWQgdGhpcyB0byBoYXBwZW4gaW4gYSBzZXBhcmF0ZSBjZCBjeWNsZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy50YWJzQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IHZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMuX3RhYkJhckJvdHRvbUhpZGRlbiA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIGVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjxQdWxsVG9SZWZyZXNoRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3BhZ2VUaXRsZScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIHBhZ2VUaXRsZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcblxuICBoYXNQYWdlVGl0bGU6IGJvb2xlYW47XG4gIGhhc0FjdGlvbnNJblBhZ2U6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIHRvb2xiYXJGaXhlZEFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGU6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgcHJpdmF0ZSB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhhc0VudGVyZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSxcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpLFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgdGFic0NvbXBvbmVudDogVGFic0NvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVXcmFwcGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGl0bGVNYXhMaW5lcykge1xuICAgICAgdGhpcy5maXRIZWFkaW5nQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmZpdEhlYWRpbmdDb25maWcsXG4gICAgICAgIG1heExpbmVzOiBjaGFuZ2VzLnRpdGxlTWF4TGluZXMuY3VycmVudFZhbHVlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy51cmxzLmluY2x1ZGVzKGV2ZW50LnVybCkgJiZcbiAgICAgICAgIXRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5pc01vZGFsUm91dGUoZXZlbnQudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZSh0aGlzLnJvdXRlci51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLnVybHMuaW5jbHVkZXMoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpKSB7XG4gICAgICAgIHRoaXMub25FbnRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVybHMuaW5jbHVkZXModGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgdGhpcy51cmxzLnB1c2godGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgIHRoaXMub25FbnRlcigpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZVRpdGxlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQWN0aW9ucygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZVJlZnJlc2hFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoe1xuICAgICAgY29tcGxldGU6IGV2ZW50LnRhcmdldC5jb21wbGV0ZS5iaW5kKGV2ZW50LnRhcmdldCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaGFzRW50ZXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuaGFzRW50ZXJlZCA9IHRydWU7XG5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG4gICAgaWYgKHRoaXMucGFnZVRpdGxlKSB7XG4gICAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLnVub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGl0bGUoKSB7XG4gICAgLy8gRW5zdXJlcyBpbml0aWFsaXplVGl0bGUoKSB3b24ndCBydW4sIGlmIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICBpZiAodGhpcy5oYXNQYWdlVGl0bGUpIHJldHVybjtcblxuICAgIHRoaXMuaGFzUGFnZVRpdGxlID0gdGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlO1xuICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICF0aGlzLmhhc1BhZ2VUaXRsZTtcblxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRUaXRsZVRlbXBsYXRlID0gdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlIHx8IHRoaXMuc2ltcGxlVGl0bGVUZW1wbGF0ZTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpwcmV0dGllclxuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHRoaXMudG9vbGJhclRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlXG4gICAgICA/IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgIDogdHlwZW9mIHRoaXMudG9vbGJhclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgICAgOiBkZWZhdWx0VGl0bGVUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUFjdGlvbnMoKSB7XG4gICAgdGhpcy5jdXN0b21BY3Rpb25zLmZvckVhY2goKHBhZ2VBY3Rpb24pID0+IHtcbiAgICAgIGlmIChwYWdlQWN0aW9uLmlzRml4ZWQpIHtcbiAgICAgICAgdGhpcy5maXhlZEFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICAgIHRoaXMudG9vbGJhckZpeGVkQWN0aW9uc1Zpc2libGUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNTdGlja3kpIHtcbiAgICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmhhc0FjdGlvbnNJblBhZ2UgPSAhIXRoaXMucGFnZUFjdGlvbnNUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUNvbnRlbnQoKSB7XG4gICAgdGhpcy5jdXN0b21Db250ZW50LmZvckVhY2goKGNvbnRlbnQpID0+IHtcbiAgICAgIGlmIChjb250ZW50LmlzRml4ZWQpIHtcbiAgICAgICAgdGhpcy5maXhlZENvbnRlbnRUZW1wbGF0ZSA9IGNvbnRlbnQudGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmN1c3RvbUNvbnRlbnRUZW1wbGF0ZSA9IGNvbnRlbnQudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVdyYXBwZXIoKSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudCwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkhlYWRlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uRm9vdGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgIH07XG5cbiAgICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBjYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBpZiAoaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMudG9vbGJhclN0aWNreUFjdGlvbnNWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsU2hvdycsIFsnJGV2ZW50J10pXG4gIF9vbktleWJvYXJkV2lsbFNob3coaW5mbz86IHsga2V5Ym9hcmRIZWlnaHQ6IG51bWJlciB9KSB7XG4gICAgaWYgKGluZm8gJiYgaW5mby5rZXlib2FyZEhlaWdodCkge1xuICAgICAgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAnLS1rZXlib2FyZC1vZmZzZXQnLFxuICAgICAgICBgJHtpbmZvLmtleWJvYXJkSGVpZ2h0fXB4YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5Ym9hcmRXaWxsSGlkZScpXG4gIF9vbktleWJvYXJkV2lsbEhpZGUoKSB7XG4gICAgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWtleWJvYXJkLW9mZnNldCcsICcwcHgnKTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"PullToRefreshEvent":{"__symbolic":"interface"},"PageTitleDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":52,"character":1},"arguments":[{"selector":"[kirbyPageTitle]"}]}]},"PageToolbarTitleDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":57,"character":1},"arguments":[{"selector":"[kirbyPageToolbarTitle]"}]}]},"PageActionsDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"[kirbyPageActions]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3},"arguments":["kirbyPageActions"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"PageContentDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":81,"character":1},"arguments":[{"selector":"[kirbyPageContent]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3},"arguments":["kirbyPageContent"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"PageProgressComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":94,"character":1},"arguments":[{"selector":"kirby-page-progress","template":"\n <ng-content></ng-content>\n ","styles":[":host {display: flex}"]}]}],"members":{"slot":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":104,"character":3},"arguments":["attr.slot"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":106,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":106,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"../modal/modal-wrapper/modal-wrapper.component","name":"ModalWrapperComponent","line":106,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}]}},"PageTitleComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":115,"character":1},"arguments":[{"selector":"kirby-page-title","template":"\n <ng-content></ng-content>\n "}]}]},"PageContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":123,"character":1},"arguments":[{"selector":"kirby-page-content","template":"\n <ng-content></ng-content>\n "}]}]},"PageActionsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":131,"character":1},"arguments":[{"selector":"kirby-page-actions","template":"\n <ng-content select=\"button[kirby-button]\"></ng-content>\n "}]}]},"PageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":139,"character":1},"arguments":[{"selector":"kirby-page","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":143,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-title\"\n #pageTitle\n *ngIf=\"hasPageTitle\"\n [class.has-actions]=\"hasActionsInPage\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","styles":["ion-header,ion-toolbar{--background:var(--kirby-background-color);margin:0 auto}@media (min-width:1025px) and (hover:hover) and (pointer:fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width:0!important;--padding-start:4px;--padding-end:4px;--padding-top:0;--padding-bottom:0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color:var(--kirby-black);--icon-font-size:24px;height:44px;width:44px}.page-title{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom,40px)}.page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-title.text-center{text-align:center;margin-left:0}.page-title.text-right{text-align:right}.page-title h1,.page-title h2,.page-title h3,.page-title h4,.page-title h5,.page-title h6{margin:0}ion-content{--padding-start:var(--page-content-padding-start,16px);--padding-end:var(--page-content-padding-end,16px);--background:var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width,720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}"]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":147,"character":3}}]}],"toolbarTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":148,"character":3}}]}],"titleAlignment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":149,"character":3}}]}],"defaultBackHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":150,"character":3}}]}],"hideBackButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":151,"character":3}}]}],"titleMaxLines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":152,"character":3}}]}],"tabBarBottomHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":158,"character":3}}]}],"enter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":167,"character":3}}]}],"leave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":168,"character":3}}]}],"refresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":169,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":171,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":171,"character":13},{"static":true}]}]}],"ionContentElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":172,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":172,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":172,"character":47}}]}]}],"ionHeaderElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":174,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonHeader","line":174,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":174,"character":46}}]}]}],"ionFooterElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":176,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonFooter","line":176,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":176,"character":46}}]}]}],"pageTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":179,"character":3},"arguments":["pageTitle",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":179,"character":49}}]}]}],"simpleTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":182,"character":3},"arguments":["simpleTitleTemplate",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"simpleToolbarTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":184,"character":3},"arguments":["simpleToolbarTitleTemplate",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customToolbarTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":186,"character":3},"arguments":[{"__symbolic":"reference","name":"PageToolbarTitleDirective"},{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":188,"character":3},"arguments":[{"__symbolic":"reference","name":"PageTitleDirective"},{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customActions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":190,"character":3},"arguments":[{"__symbolic":"reference","name":"PageActionsDirective"}]}]}],"customContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":192,"character":3},"arguments":[{"__symbolic":"reference","name":"PageContentDirective"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":231,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":231,"character":17}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":225,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":226,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":227,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":228,"character":31},{"__symbolic":"reference","module":"../../types/window-ref","name":"WindowRef","line":229,"character":23},{"__symbolic":"reference","module":"../modal/services/modal-navigation.service","name":"ModalNavigationService","line":230,"character":36},{"__symbolic":"reference","module":"../tabs/tabs.component","name":"TabsComponent","line":231,"character":51}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"delegateRefreshEvent":[{"__symbolic":"method"}],"onEnter":[{"__symbolic":"method"}],"onLeave":[{"__symbolic":"method"}],"initializeTitle":[{"__symbolic":"method"}],"initializeActions":[{"__symbolic":"method"}],"initializeContent":[{"__symbolic":"method"}],"removeWrapper":[{"__symbolic":"method"}],"pageTitleIntersectionObserver":[{"__symbolic":"method"}],"_onKeyboardWillShow":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":393,"character":3},"arguments":["window:keyboardWillShow",["$event"]]}]}],"_onKeyboardWillHide":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":403,"character":3},"arguments":["window:keyboardWillHide"]}]}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"PullToRefreshEvent":{"__symbolic":"interface"},"PageTitleDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":52,"character":1},"arguments":[{"selector":"[kirbyPageTitle]"}]}]},"PageToolbarTitleDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":57,"character":1},"arguments":[{"selector":"[kirbyPageToolbarTitle]"}]}]},"PageActionsDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":62,"character":1},"arguments":[{"selector":"[kirbyPageActions]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3},"arguments":["kirbyPageActions"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"PageContentDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":81,"character":1},"arguments":[{"selector":"[kirbyPageContent]"}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3},"arguments":["kirbyPageContent"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}]}]}},"PageProgressComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":94,"character":1},"arguments":[{"selector":"kirby-page-progress","template":" <ng-content></ng-content> ","styles":[":host {display: flex}"]}]}],"members":{"slot":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":102,"character":3},"arguments":["attr.slot"]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":104,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":104,"character":27}}]],"parameters":[{"__symbolic":"reference","module":"../modal/modal-wrapper/modal-wrapper.component","name":"ModalWrapperComponent","line":104,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}]}},"PageTitleComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":113,"character":1},"arguments":[{"selector":"kirby-page-title","template":" <ng-content></ng-content> "}]}]},"PageContentComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":119,"character":1},"arguments":[{"selector":"kirby-page-content","template":" <ng-content></ng-content> "}]}]},"PageActionsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":125,"character":1},"arguments":[{"selector":"kirby-page-actions","template":" <ng-content select=\"button[kirby-button]\"></ng-content> "}]}]},"PageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":131,"character":1},"arguments":[{"selector":"kirby-page","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":135,"character":19},"member":"OnPush"},"template":"<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-title\"\n #pageTitle\n *ngIf=\"hasPageTitle\"\n [class.has-actions]=\"hasActionsInPage\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n","styles":["ion-header,ion-toolbar{--background:var(--kirby-background-color);margin:0 auto}@media (min-width:1025px) and (hover:hover) and (pointer:fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width:0!important;--padding-start:4px;--padding-end:4px;--padding-top:0;--padding-bottom:0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color:var(--kirby-black);--icon-font-size:24px;height:44px;width:44px}.page-title{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom,40px)}.page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-title.text-center{text-align:center;margin-left:0}.page-title.text-right{text-align:right}.page-title h1,.page-title h2,.page-title h3,.page-title h4,.page-title h5,.page-title h6{margin:0}ion-content{--padding-start:var(--page-content-padding-start,16px);--padding-end:var(--page-content-padding-end,16px);--background:var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width,720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}"]}]}],"members":{"title":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":140,"character":3}}]}],"toolbarTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":141,"character":3}}]}],"titleAlignment":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":142,"character":3}}]}],"defaultBackHref":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":143,"character":3}}]}],"hideBackButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":144,"character":3}}]}],"titleMaxLines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":145,"character":3}}]}],"tabBarBottomHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":151,"character":3}}]}],"enter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":160,"character":3}}]}],"leave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":161,"character":3}}]}],"refresh":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":162,"character":3}}]}],"content":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":164,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":164,"character":13},{"static":true}]}]}],"ionContentElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":165,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonContent","line":165,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":165,"character":47}}]}]}],"ionHeaderElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":167,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonHeader","line":167,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":167,"character":46}}]}]}],"ionFooterElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":169,"character":3},"arguments":[{"__symbolic":"reference","module":"@ionic/angular","name":"IonFooter","line":169,"character":13},{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":169,"character":46}}]}]}],"pageTitle":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":172,"character":3},"arguments":["pageTitle",{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":172,"character":49}}]}]}],"simpleTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":175,"character":3},"arguments":["simpleTitleTemplate",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"simpleToolbarTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":177,"character":3},"arguments":["simpleToolbarTitleTemplate",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customToolbarTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":179,"character":3},"arguments":[{"__symbolic":"reference","name":"PageToolbarTitleDirective"},{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customTitleTemplate":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":181,"character":3},"arguments":[{"__symbolic":"reference","name":"PageTitleDirective"},{"static":false,"read":{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":70,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}}]}]}],"customActions":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":183,"character":3},"arguments":[{"__symbolic":"reference","name":"PageActionsDirective"}]}]}],"customContent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":185,"character":3},"arguments":[{"__symbolic":"reference","name":"PageContentDirective"}]}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":225,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":225,"character":17}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":219,"character":24},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":220,"character":22},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":221,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":222,"character":31},{"__symbolic":"reference","module":"../../types/window-ref","name":"WindowRef","line":223,"character":23},{"__symbolic":"reference","module":"../modal/services/modal-navigation.service","name":"ModalNavigationService","line":224,"character":36},{"__symbolic":"reference","module":"../tabs/tabs.component","name":"TabsComponent","line":225,"character":51}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngAfterContentChecked":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"delegateRefreshEvent":[{"__symbolic":"method"}],"onEnter":[{"__symbolic":"method"}],"onLeave":[{"__symbolic":"method"}],"initializeTitle":[{"__symbolic":"method"}],"initializeActions":[{"__symbolic":"method"}],"initializeContent":[{"__symbolic":"method"}],"removeWrapper":[{"__symbolic":"method"}],"pageTitleIntersectionObserver":[{"__symbolic":"method"}],"_onKeyboardWillShow":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":387,"character":3},"arguments":["window:keyboardWillShow",["$event"]]}]}],"_onKeyboardWillHide":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":397,"character":3},"arguments":["window:keyboardWillHide"]}]}]}}}}]
@@ -134,9 +134,7 @@ export class PopoverComponent {
134
134
  PopoverComponent.decorators = [
135
135
  { type: Component, args: [{
136
136
  selector: 'kirby-popover',
137
- template: `
138
- <div #wrapper class="wrapper"><ng-content></ng-content></div>
139
- `,
137
+ template: ` <div #wrapper class="wrapper"><ng-content></ng-content></div> `,
140
138
  styles: [":host{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}"]
141
139
  },] }
142
140
  ];
@@ -153,4 +151,4 @@ PopoverComponent.propDecorators = {
153
151
  _backdropClick: [{ type: HostListener, args: ['click',] }],
154
152
  _onWindowResize: [{ type: HostListener, args: ['window:resize',] }]
155
153
  };
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsTUFBTSxDQUFOLElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixzQ0FBZSxDQUFBO0lBQ2Ysb0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCO0FBU0QsTUFBTSxPQUFPLGdCQUFnQjtJQStDM0IsWUFBb0IsVUFBbUMsRUFBVSxRQUFtQjtRQUFoRSxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5Q3BGLCtEQUErRDtRQUM5QyxzQ0FBaUMsR0FBRztZQUNuRCxPQUFPLEVBQUUsS0FBSztTQUNTLENBQUM7UUFFVCx5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNuQyxXQUFNLEdBQXdCLG1CQUFtQixDQUFDLEtBQUssQ0FBQztRQU14RCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQXlCbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUN6RCxDQUFDO0lBeEJELElBQVksYUFBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0s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QUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7OztZQXpNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7R0FFVDs7YUFFRjs7OztZQXZCQyxVQUFVO1lBTVYsU0FBUzs7OzZCQStCUixTQUFTLFNBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3FCQUd2RCxLQUFLO3FCQUdMLEtBQUs7dUJBR0wsTUFBTTs2QkFXTixZQUFZLFNBQUMsT0FBTzs4QkFNcEIsWUFBWSxTQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcblxuZXhwb3J0IGVudW0gSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gIHJpZ2h0ID0gJ3JpZ2h0JyxcbiAgbGVmdCA9ICdsZWZ0Jyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcG9wb3ZlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiAjd3JhcHBlciBjbGFzcz1cIndyYXBwZXJcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vIHJlbW92ZUV2ZW50TGlzdGVuZXIgc2FtZSBpbnN0YW5jZSBvZiBldmVudCBoYW5kbGVyICYgb3B0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXZlbnRTY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSBhcyBFdmVudExpc3RlbmVyT3B0aW9ucztcblxuICBwcml2YXRlIHJlYWRvbmx5IFBPUE9WRVJfQk9EWV9QQURESU5HID0gMTI7XG5cbiAgcHJpdmF0ZSBpc1Nob3dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0ZpcnN0VG9Mb2NrU2Nyb2xsOiBib29sZWFuO1xuICBwcml2YXRlIHpJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgd3JhcHBlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHBvcG91dDogSG9yaXpvbnRhbERpcmVjdGlvbiA9IEhvcml6b250YWxEaXJlY3Rpb24ucmlnaHQ7XG5cbiAgQElucHV0KClcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPdXRwdXQoKVxuICB3aWxsSGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGdldCB0YXJnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAodGhpcy50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy50YXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgX2JhY2tkcm9wQ2xpY2soKSB7XG4gICAgdGhpcy53aWxsSGlkZS5lbWl0KCk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIGlmICh0aGlzLmlzU2hvd2luZykge1xuICAgICAgdGhpcy53aWxsSGlkZS5lbWl0KCk7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGFjZVBvcG92ZXJBYm92ZUNsb3Nlc3RNb2RhbCgpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIHBsYWNlUG9wb3ZlckFib3ZlQ2xvc2VzdE1vZGFsKCkge1xuICAgIGNvbnN0IGNsb3Nlc3RJb25Nb2RhbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2lvbi1tb2RhbCcpO1xuICAgIGlmIChjbG9zZXN0SW9uTW9kYWwpIHtcbiAgICAgIHRoaXMuekluZGV4ID0gcGFyc2VJbnQoY2xvc2VzdElvbk1vZGFsLnN0eWxlLnpJbmRleCkgKyAxO1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gYCR7dGhpcy56SW5kZXh9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy56SW5kZXggPSBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci56TGF5ZXIoJ3BvcG92ZXInKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciBuZWVkcyB0aGUgZXhhY3Qgc2FtZSBldmVudCBoYW5kbGVyICYgb3B0aW9ucyByZWZlcmVuY2U6XG4gIHByaXZhdGUgcHJldmVudEV2ZW50KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudFNjcm9sbCgpIHtcbiAgICB0aGlzLmlzRmlyc3RUb0xvY2tTY3JvbGwgPSAhdGhpcy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnYmFja2Ryb3Atbm8tc2Nyb2xsJyk7XG4gICAgaWYgKHRoaXMuaXNGaXJzdFRvTG9ja1Njcm9sbCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdiYWNrZHJvcC1uby1zY3JvbGwnKTtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50RGVmYXVsdCBkb2VzIG5vdCB3b3JrIHdpdGggUmVuZGVyZXIyLmxpc3RlbiBtZXRob2Q7IGFkZCBldmVudCBsaXN0ZW5lciBkaXJlY3RseSB0byBkb2N1bWVudCBpbnN0ZWFkXG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNobW92ZScsXG4gICAgICB0aGlzLnByZXZlbnRFdmVudCxcbiAgICAgIHRoaXMucHJldmVudFNjcm9sbEV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVsZWFzZVNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0VG9Mb2NrU2Nyb2xsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2JhY2tkcm9wLW5vLXNjcm9sbCcpO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaG1vdmUnLFxuICAgICAgdGhpcy5wcmV2ZW50RXZlbnQsXG4gICAgICB0aGlzLnByZXZlbnRTY3JvbGxFdmVudExpc3RlbmVyT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpcy1vcGVuaW5nJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMucHJldmVudFNjcm9sbCgpO1xuICAgIHRoaXMucG9zaXRpb25XcmFwcGVyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaXMtb3BlbicpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpcy1vcGVuaW5nJyk7XG5cbiAgICB0aGlzLmlzU2hvd2luZyA9IHRydWU7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZWxlYXNlU2Nyb2xsKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3otaW5kZXgnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3BvaW50ZXItZXZlbnRzJyk7XG4gICAgdGhpcy5pc1Nob3dpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25XcmFwcGVyKCkge1xuICAgIGNvbnN0IHRhcmdldERpbWVuc2lvbnMgPSB0aGlzLnRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgY29uc3Qgd3JhcHBlckVsZW1lbnQgPSB0aGlzLndyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgd3JhcHBlckRpbWVuc2lvbnMgPSB3cmFwcGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHdyYXBwZXJFbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgdGhpcy5wb3NpdGlvbkhvcml6b250YWxseSh2aWV3cG9ydCwgd3JhcHBlckVsZW1lbnQsIHRhcmdldERpbWVuc2lvbnMsIHdyYXBwZXJEaW1lbnNpb25zKTtcbiAgICB0aGlzLnBvc2l0aW9uVmVydGljYWxseSh2aWV3cG9ydCwgd3JhcHBlckVsZW1lbnQsIHRhcmdldERpbWVuc2lvbnMsIHdyYXBwZXJEaW1lbnNpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ib3Jpem9udGFsbHkoXG4gICAgdmlld1BvcnQ6IFdpbmRvdyxcbiAgICB3cmFwcGVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgdGFyZ2V0RGltZW5zaW9uczogRE9NUmVjdCxcbiAgICB3cmFwcGVyRGltZW5zaW9uczogRE9NUmVjdFxuICApIHtcbiAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gdmlld1BvcnQuaW5uZXJXaWR0aDtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSB3cmFwcGVyRGltZW5zaW9ucy53aWR0aDtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID0gdmlld1BvcnRXaWR0aCAtIHRhcmdldERpbWVuc2lvbnMubGVmdDtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZUxlZnQgPSB0YXJnZXREaW1lbnNpb25zLnJpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRDYW5GaXRSaWdodE9mVGFyZ2V0ID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlUmlnaHQgPj0gY29udGVudFdpZHRoICsgdGhpcy5QT1BPVkVSX0JPRFlfUEFERElORztcbiAgICBjb25zdCBvcGVuUmlnaHQgPSBjb250ZW50Q2FuRml0UmlnaHRPZlRhcmdldCB8fCBhdmFpbGFibGVTcGFjZVJpZ2h0ID49IGF2YWlsYWJsZVNwYWNlTGVmdDtcblxuICAgIGNvbnN0IFtkaXJlY3Rpb24sIG9wcG9zaXRlRGlyZWN0aW9uXSA9XG4gICAgICB0aGlzLnBvcG91dCA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0IHx8ICFvcGVuUmlnaHRcbiAgICAgICAgPyBbJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgICA6IFsncmlnaHQnLCAnbGVmdCddO1xuXG4gICAgY29uc3QgcHhWYWx1ZSA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IHZpZXdQb3J0V2lkdGggLSB0YXJnZXREaW1lbnNpb25zLnJpZ2h0IDogdGFyZ2V0RGltZW5zaW9ucy5sZWZ0O1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh3cmFwcGVyRWxlbWVudCwgZGlyZWN0aW9uKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHdyYXBwZXJFbGVtZW50LCBvcHBvc2l0ZURpcmVjdGlvbiwgYCR7cHhWYWx1ZX1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvblZlcnRpY2FsbHkoXG4gICAgdmlld1BvcnQ6IFdpbmRvdyxcbiAgICB3cmFwcGVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgdGFyZ2V0RGltZW5zaW9uczogRE9NUmVjdCxcbiAgICB3cmFwcGVyRGltZW5zaW9uczogRE9NUmVjdFxuICApIHtcbiAgICBjb25zdCB2aWV3UG9ydEhlaWdodCA9IHZpZXdQb3J0LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB3cmFwcGVyRGltZW5zaW9ucy5oZWlnaHQ7XG4gICAgY29uc3QgYXZhaWxhYmxlU3BhY2VEb3duID0gdmlld1BvcnRIZWlnaHQgLSB0YXJnZXREaW1lbnNpb25zLmJvdHRvbTtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZVVwID0gdGFyZ2V0RGltZW5zaW9ucy50b3A7XG4gICAgY29uc3QgY29udGVudENhbkZpdEJlbG93VGFyZ2V0ID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlRG93biA+PSBjb250ZW50SGVpZ2h0ICsgdGhpcy5QT1BPVkVSX0JPRFlfUEFERElORztcblxuICAgIGNvbnN0IGlzQXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgICBjb250ZW50Q2FuRml0QmVsb3dUYXJnZXQgfHwgYXZhaWxhYmxlU3BhY2VEb3duID49IGF2YWlsYWJsZVNwYWNlVXA7XG4gICAgY29uc3QgW2RpcmVjdGlvbiwgb3Bwb3NpdGVEaXJlY3Rpb25dID0gaXNBdmFpbGFibGVTcGFjZUJlbG93XG4gICAgICA/IFsnYm90dG9tJywgJ3RvcCddXG4gICAgICA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgY29uc3QgcHhWYWx1ZSA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdib3R0b20nID8gdGFyZ2V0RGltZW5zaW9ucy5ib3R0b20gOiB2aWV3UG9ydEhlaWdodCAtIHRhcmdldERpbWVuc2lvbnMudG9wO1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh3cmFwcGVyRWxlbWVudCwgZGlyZWN0aW9uKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHdyYXBwZXJFbGVtZW50LCBvcHBvc2l0ZURpcmVjdGlvbiwgYCR7cHhWYWx1ZX1weGApO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgIC8vIEVuc3VyZSB0YXJnZXQgaXMgZWxldmF0ZWQgYWJvdmUgc2hhZG93cyBpbiBwb3BvdmVyLCBpLmUuIGNvbnRlbnQgd3JhcHBlZCBpbiBDYXJkOlxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhcmdldEVsZW1lbnQsICd6LWluZGV4JywgYCR7dGhpcy56SW5kZXggKyAxfWApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhcmdldEVsZW1lbnQsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsTUFBTSxDQUFOLElBQVksbUJBR1g7QUFIRCxXQUFZLG1CQUFtQjtJQUM3QixzQ0FBZSxDQUFBO0lBQ2Ysb0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCO0FBT0QsTUFBTSxPQUFPLGdCQUFnQjtJQStDM0IsWUFBb0IsVUFBbUMsRUFBVSxRQUFtQjtRQUFoRSxlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5Q3BGLCtEQUErRDtRQUM5QyxzQ0FBaUMsR0FBRztZQUNuRCxPQUFPLEVBQUUsS0FBSztTQUNTLENBQUM7UUFFVCx5QkFBb0IsR0FBRyxFQUFFLENBQUM7UUFFbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNuQyxXQUFNLEdBQW1ELG1CQUFtQixDQUFDLEtBQUssQ0FBQztRQU1uRixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQXlCbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUN6RCxDQUFDO0lBeEJELElBQVksYUFBYTtRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLE1BQU0s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QUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN0RTtJQUNILENBQUM7OztZQXZNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRSxpRUFBaUU7O2FBRTVFOzs7O1lBckJDLFVBQVU7WUFNVixTQUFTOzs7NkJBNkJSLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7cUJBR3ZELEtBQUs7cUJBR0wsS0FBSzt1QkFHTCxNQUFNOzZCQVdOLFlBQVksU0FBQyxPQUFPOzhCQU1wQixZQUFZLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEZXNpZ25Ub2tlbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuXG5leHBvcnQgZW51bSBIb3Jpem9udGFsRGlyZWN0aW9uIHtcbiAgcmlnaHQgPSAncmlnaHQnLFxuICBsZWZ0ID0gJ2xlZnQnLFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wb3BvdmVyJyxcbiAgdGVtcGxhdGU6IGAgPGRpdiAjd3JhcHBlciBjbGFzcz1cIndyYXBwZXJcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+IGAsXG4gIHN0eWxlVXJsczogWycuL3BvcG92ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vIHJlbW92ZUV2ZW50TGlzdGVuZXIgc2FtZSBpbnN0YW5jZSBvZiBldmVudCBoYW5kbGVyICYgb3B0aW9uc1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXZlbnRTY3JvbGxFdmVudExpc3RlbmVyT3B0aW9ucyA9IHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSBhcyBFdmVudExpc3RlbmVyT3B0aW9ucztcblxuICBwcml2YXRlIHJlYWRvbmx5IFBPUE9WRVJfQk9EWV9QQURESU5HID0gMTI7XG5cbiAgcHJpdmF0ZSBpc1Nob3dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc0ZpcnN0VG9Mb2NrU2Nyb2xsOiBib29sZWFuO1xuICBwcml2YXRlIHpJbmRleDogbnVtYmVyO1xuICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudDtcblxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgd3JhcHBlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIHBvcG91dDogSG9yaXpvbnRhbERpcmVjdGlvbiB8IGAke0hvcml6b250YWxEaXJlY3Rpb259YCA9IEhvcml6b250YWxEaXJlY3Rpb24ucmlnaHQ7XG5cbiAgQElucHV0KClcbiAgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPdXRwdXQoKVxuICB3aWxsSGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGdldCB0YXJnZXRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAodGhpcy50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm4gdGhpcy50YXJnZXQubmF0aXZlRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgX2JhY2tkcm9wQ2xpY2soKSB7XG4gICAgdGhpcy53aWxsSGlkZS5lbWl0KCk7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIGlmICh0aGlzLmlzU2hvd2luZykge1xuICAgICAgdGhpcy53aWxsSGlkZS5lbWl0KCk7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGFjZVBvcG92ZXJBYm92ZUNsb3Nlc3RNb2RhbCgpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIHBsYWNlUG9wb3ZlckFib3ZlQ2xvc2VzdE1vZGFsKCkge1xuICAgIGNvbnN0IGNsb3Nlc3RJb25Nb2RhbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2lvbi1tb2RhbCcpO1xuICAgIGlmIChjbG9zZXN0SW9uTW9kYWwpIHtcbiAgICAgIHRoaXMuekluZGV4ID0gcGFyc2VJbnQoY2xvc2VzdElvbk1vZGFsLnN0eWxlLnpJbmRleCkgKyAxO1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gYCR7dGhpcy56SW5kZXh9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy56SW5kZXggPSBwYXJzZUludChEZXNpZ25Ub2tlbkhlbHBlci56TGF5ZXIoJ3BvcG92ZXInKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciBuZWVkcyB0aGUgZXhhY3Qgc2FtZSBldmVudCBoYW5kbGVyICYgb3B0aW9ucyByZWZlcmVuY2U6XG4gIHByaXZhdGUgcHJldmVudEV2ZW50KGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJldmVudFNjcm9sbCgpIHtcbiAgICB0aGlzLmlzRmlyc3RUb0xvY2tTY3JvbGwgPSAhdGhpcy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnYmFja2Ryb3Atbm8tc2Nyb2xsJyk7XG4gICAgaWYgKHRoaXMuaXNGaXJzdFRvTG9ja1Njcm9sbCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdiYWNrZHJvcC1uby1zY3JvbGwnKTtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50RGVmYXVsdCBkb2VzIG5vdCB3b3JrIHdpdGggUmVuZGVyZXIyLmxpc3RlbiBtZXRob2Q7IGFkZCBldmVudCBsaXN0ZW5lciBkaXJlY3RseSB0byBkb2N1bWVudCBpbnN0ZWFkXG4gICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3RvdWNobW92ZScsXG4gICAgICB0aGlzLnByZXZlbnRFdmVudCxcbiAgICAgIHRoaXMucHJldmVudFNjcm9sbEV2ZW50TGlzdGVuZXJPcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVsZWFzZVNjcm9sbCgpIHtcbiAgICBpZiAodGhpcy5pc0ZpcnN0VG9Mb2NrU2Nyb2xsKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ2JhY2tkcm9wLW5vLXNjcm9sbCcpO1xuICAgIH1cblxuICAgIHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICd0b3VjaG1vdmUnLFxuICAgICAgdGhpcy5wcmV2ZW50RXZlbnQsXG4gICAgICB0aGlzLnByZXZlbnRTY3JvbGxFdmVudExpc3RlbmVyT3B0aW9uc1xuICAgICk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpcy1vcGVuaW5nJyk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHRoaXMucHJldmVudFNjcm9sbCgpO1xuICAgIHRoaXMucG9zaXRpb25XcmFwcGVyKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaXMtb3BlbicpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpcy1vcGVuaW5nJyk7XG5cbiAgICB0aGlzLmlzU2hvd2luZyA9IHRydWU7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZWxlYXNlU2Nyb2xsKCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3otaW5kZXgnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMudGFyZ2V0RWxlbWVudCwgJ3BvaW50ZXItZXZlbnRzJyk7XG4gICAgdGhpcy5pc1Nob3dpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25XcmFwcGVyKCkge1xuICAgIGNvbnN0IHRhcmdldERpbWVuc2lvbnMgPSB0aGlzLnRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgY29uc3Qgd3JhcHBlckVsZW1lbnQgPSB0aGlzLndyYXBwZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgd3JhcHBlckRpbWVuc2lvbnMgPSB3cmFwcGVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB2aWV3cG9ydCA9IHdyYXBwZXJFbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgdGhpcy5wb3NpdGlvbkhvcml6b250YWxseSh2aWV3cG9ydCwgd3JhcHBlckVsZW1lbnQsIHRhcmdldERpbWVuc2lvbnMsIHdyYXBwZXJEaW1lbnNpb25zKTtcbiAgICB0aGlzLnBvc2l0aW9uVmVydGljYWxseSh2aWV3cG9ydCwgd3JhcHBlckVsZW1lbnQsIHRhcmdldERpbWVuc2lvbnMsIHdyYXBwZXJEaW1lbnNpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgcG9zaXRpb25Ib3Jpem9udGFsbHkoXG4gICAgdmlld1BvcnQ6IFdpbmRvdyxcbiAgICB3cmFwcGVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgdGFyZ2V0RGltZW5zaW9uczogRE9NUmVjdCxcbiAgICB3cmFwcGVyRGltZW5zaW9uczogRE9NUmVjdFxuICApIHtcbiAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gdmlld1BvcnQuaW5uZXJXaWR0aDtcbiAgICBjb25zdCBjb250ZW50V2lkdGggPSB3cmFwcGVyRGltZW5zaW9ucy53aWR0aDtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZVJpZ2h0ID0gdmlld1BvcnRXaWR0aCAtIHRhcmdldERpbWVuc2lvbnMubGVmdDtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZUxlZnQgPSB0YXJnZXREaW1lbnNpb25zLnJpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRDYW5GaXRSaWdodE9mVGFyZ2V0ID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlUmlnaHQgPj0gY29udGVudFdpZHRoICsgdGhpcy5QT1BPVkVSX0JPRFlfUEFERElORztcbiAgICBjb25zdCBvcGVuUmlnaHQgPSBjb250ZW50Q2FuRml0UmlnaHRPZlRhcmdldCB8fCBhdmFpbGFibGVTcGFjZVJpZ2h0ID49IGF2YWlsYWJsZVNwYWNlTGVmdDtcblxuICAgIGNvbnN0IFtkaXJlY3Rpb24sIG9wcG9zaXRlRGlyZWN0aW9uXSA9XG4gICAgICB0aGlzLnBvcG91dCA9PT0gSG9yaXpvbnRhbERpcmVjdGlvbi5sZWZ0IHx8ICFvcGVuUmlnaHRcbiAgICAgICAgPyBbJ2xlZnQnLCAncmlnaHQnXVxuICAgICAgICA6IFsncmlnaHQnLCAnbGVmdCddO1xuXG4gICAgY29uc3QgcHhWYWx1ZSA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdsZWZ0JyA/IHZpZXdQb3J0V2lkdGggLSB0YXJnZXREaW1lbnNpb25zLnJpZ2h0IDogdGFyZ2V0RGltZW5zaW9ucy5sZWZ0O1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh3cmFwcGVyRWxlbWVudCwgZGlyZWN0aW9uKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHdyYXBwZXJFbGVtZW50LCBvcHBvc2l0ZURpcmVjdGlvbiwgYCR7cHhWYWx1ZX1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3NpdGlvblZlcnRpY2FsbHkoXG4gICAgdmlld1BvcnQ6IFdpbmRvdyxcbiAgICB3cmFwcGVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgdGFyZ2V0RGltZW5zaW9uczogRE9NUmVjdCxcbiAgICB3cmFwcGVyRGltZW5zaW9uczogRE9NUmVjdFxuICApIHtcbiAgICBjb25zdCB2aWV3UG9ydEhlaWdodCA9IHZpZXdQb3J0LmlubmVySGVpZ2h0O1xuICAgIGNvbnN0IGNvbnRlbnRIZWlnaHQgPSB3cmFwcGVyRGltZW5zaW9ucy5oZWlnaHQ7XG4gICAgY29uc3QgYXZhaWxhYmxlU3BhY2VEb3duID0gdmlld1BvcnRIZWlnaHQgLSB0YXJnZXREaW1lbnNpb25zLmJvdHRvbTtcbiAgICBjb25zdCBhdmFpbGFibGVTcGFjZVVwID0gdGFyZ2V0RGltZW5zaW9ucy50b3A7XG4gICAgY29uc3QgY29udGVudENhbkZpdEJlbG93VGFyZ2V0ID1cbiAgICAgIGF2YWlsYWJsZVNwYWNlRG93biA+PSBjb250ZW50SGVpZ2h0ICsgdGhpcy5QT1BPVkVSX0JPRFlfUEFERElORztcblxuICAgIGNvbnN0IGlzQXZhaWxhYmxlU3BhY2VCZWxvdyA9XG4gICAgICBjb250ZW50Q2FuRml0QmVsb3dUYXJnZXQgfHwgYXZhaWxhYmxlU3BhY2VEb3duID49IGF2YWlsYWJsZVNwYWNlVXA7XG4gICAgY29uc3QgW2RpcmVjdGlvbiwgb3Bwb3NpdGVEaXJlY3Rpb25dID0gaXNBdmFpbGFibGVTcGFjZUJlbG93XG4gICAgICA/IFsnYm90dG9tJywgJ3RvcCddXG4gICAgICA6IFsndG9wJywgJ2JvdHRvbSddO1xuXG4gICAgY29uc3QgcHhWYWx1ZSA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdib3R0b20nID8gdGFyZ2V0RGltZW5zaW9ucy5ib3R0b20gOiB2aWV3UG9ydEhlaWdodCAtIHRhcmdldERpbWVuc2lvbnMudG9wO1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh3cmFwcGVyRWxlbWVudCwgZGlyZWN0aW9uKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHdyYXBwZXJFbGVtZW50LCBvcHBvc2l0ZURpcmVjdGlvbiwgYCR7cHhWYWx1ZX1weGApO1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgIC8vIEVuc3VyZSB0YXJnZXQgaXMgZWxldmF0ZWQgYWJvdmUgc2hhZG93cyBpbiBwb3BvdmVyLCBpLmUuIGNvbnRlbnQgd3JhcHBlZCBpbiBDYXJkOlxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhcmdldEVsZW1lbnQsICd6LWluZGV4JywgYCR7dGhpcy56SW5kZXggKyAxfWApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRhcmdldEVsZW1lbnQsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"HorizontalDirection":{"right":"right","left":"left"},"PopoverComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"kirby-popover","template":"\n <div #wrapper class=\"wrapper\"><ng-content></ng-content></div>\n ","styles":[":host{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}"]}]}],"members":{"wrapperElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":40,"character":3},"arguments":["wrapper",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":40,"character":46}}]}]}],"popout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":43,"character":3}}]}],"target":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"willHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":49,"character":3}}]}],"_backdropClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":60,"character":3},"arguments":["click"]}]}],"_onWindowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":66,"character":3},"arguments":["window:resize"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":74,"character":34,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":74,"character":45,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":74,"character":77}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"placePopoverAboveClosestModal":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"preventScroll":[{"__symbolic":"method"}],"releaseScroll":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"hide":[{"__symbolic":"method"}],"positionWrapper":[{"__symbolic":"method"}],"positionHorizontally":[{"__symbolic":"method"}],"positionVertically":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"HorizontalDirection":{"right":"right","left":"left"},"PopoverComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"kirby-popover","template":" <div #wrapper class=\"wrapper\"><ng-content></ng-content></div> ","styles":[":host{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:850}:host(.is-opening){display:block;visibility:hidden}:host(.is-open){display:block}.wrapper{position:fixed;margin-top:4px;margin-bottom:4px}"]}]}],"members":{"wrapperElement":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["wrapper",{"static":true,"read":{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":38,"character":46}}]}]}],"popout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"target":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":44,"character":3}}]}],"willHide":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":47,"character":3}}]}],"_backdropClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":3},"arguments":["click"]}]}],"_onWindowResize":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":64,"character":3},"arguments":["window:resize"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":72,"character":34,"arguments":[{"__symbolic":"error","message":"Could not resolve type","line":72,"character":45,"context":{"typeName":"HTMLElement"}}]},{"__symbolic":"reference","module":"@angular/core","name":"Renderer2","line":72,"character":77}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"placePopoverAboveClosestModal":[{"__symbolic":"method"}],"preventEvent":[{"__symbolic":"method"}],"preventScroll":[{"__symbolic":"method"}],"releaseScroll":[{"__symbolic":"method"}],"show":[{"__symbolic":"method"}],"hide":[{"__symbolic":"method"}],"positionWrapper":[{"__symbolic":"method"}],"positionHorizontally":[{"__symbolic":"method"}],"positionVertically":[{"__symbolic":"method"}]}}}}]