@rivet-health/design-system 40.44.1 → 40.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/esm2022/lib/accessibility/sr-only/sr-only.component.mjs +3 -3
  2. package/esm2022/lib/download/download.service.mjs +6 -6
  3. package/esm2022/lib/format/pipes/common.mjs +5 -5
  4. package/esm2022/lib/format/pipes/date.pipe.mjs +3 -3
  5. package/esm2022/lib/format/pipes/days.pipe.mjs +3 -3
  6. package/esm2022/lib/format/pipes/dollars.pipe.mjs +3 -3
  7. package/esm2022/lib/format/pipes/number.pipe.mjs +3 -3
  8. package/esm2022/lib/format/pipes/percentage.pipe.mjs +3 -3
  9. package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +4 -4
  10. package/esm2022/lib/format/pipes/small-currency.pipe.mjs +4 -4
  11. package/esm2022/lib/format/pipes/small-number.pipe.mjs +4 -4
  12. package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +5 -5
  13. package/esm2022/lib/format/truncate/truncate.component.mjs +6 -6
  14. package/esm2022/lib/icon/dom-cache.mjs +1 -1
  15. package/esm2022/lib/icon/icon.component.mjs +5 -5
  16. package/esm2022/lib/icon/icons.mjs +1 -1
  17. package/esm2022/lib/input/alphabetic-field/alphabetic-field.component.mjs +3 -3
  18. package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +5 -5
  19. package/esm2022/lib/input/button/button.component.mjs +6 -6
  20. package/esm2022/lib/input/button-group/button-group.component.mjs +5 -5
  21. package/esm2022/lib/input/calendar/calendar.component.mjs +4 -4
  22. package/esm2022/lib/input/card-checkbox/card-checkbox.component.mjs +3 -3
  23. package/esm2022/lib/input/checkbox/checkbox.component.mjs +4 -4
  24. package/esm2022/lib/input/currency-field/currency-field.component.mjs +3 -3
  25. package/esm2022/lib/input/date/date.component.mjs +5 -5
  26. package/esm2022/lib/input/date-range/date-range.component.mjs +4 -4
  27. package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +5 -5
  28. package/esm2022/lib/input/filter-dropdown/filter-dropdown.component.mjs +5 -5
  29. package/esm2022/lib/input/input-label/input-label.component.mjs +3 -3
  30. package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +5 -5
  31. package/esm2022/lib/input/number-field/number-field.component.mjs +4 -4
  32. package/esm2022/lib/input/percentage-field/percentage-field.component.mjs +3 -3
  33. package/esm2022/lib/input/phone-field/phone-field.component.mjs +4 -4
  34. package/esm2022/lib/input/radio/radio.component.mjs +3 -3
  35. package/esm2022/lib/input/search/search.component.mjs +3 -3
  36. package/esm2022/lib/input/search-select/search-select.component.mjs +5 -5
  37. package/esm2022/lib/input/select/select/select.component.mjs +4 -4
  38. package/esm2022/lib/input/select/select-node/select-node.component.mjs +3 -3
  39. package/esm2022/lib/input/select/state.mjs +1 -1
  40. package/esm2022/lib/input/simple-select/option-group.pipe.mjs +3 -3
  41. package/esm2022/lib/input/simple-select/simple-select.component.mjs +4 -4
  42. package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +4 -4
  43. package/esm2022/lib/input/text-field/text-field.component.mjs +4 -4
  44. package/esm2022/lib/input/textarea-field/textarea-field.component.mjs +3 -3
  45. package/esm2022/lib/input/validation-message/validation-message.component.mjs +3 -3
  46. package/esm2022/lib/layout/card/card-actions.component.mjs +3 -3
  47. package/esm2022/lib/layout/card/card-content.component.mjs +6 -6
  48. package/esm2022/lib/layout/card/card-header.component.mjs +6 -6
  49. package/esm2022/lib/layout/card/card-link.component.mjs +5 -5
  50. package/esm2022/lib/layout/card/card-media.component.mjs +3 -3
  51. package/esm2022/lib/layout/card/card.component.mjs +5 -5
  52. package/esm2022/lib/layout/setting-row/setting-row.component.mjs +3 -3
  53. package/esm2022/lib/load/loading/loading.component.mjs +4 -4
  54. package/esm2022/lib/load/loading-cover/loading-cover.component.mjs +3 -3
  55. package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +6 -6
  56. package/esm2022/lib/navigation/link/link.component.mjs +6 -6
  57. package/esm2022/lib/navigation/page-header/page-header.component.mjs +3 -3
  58. package/esm2022/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +3 -3
  59. package/esm2022/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +3 -3
  60. package/esm2022/lib/navigation/tabs/tab/tab.component.mjs +3 -3
  61. package/esm2022/lib/navigation/tabs/tabs/tabs.component.mjs +3 -3
  62. package/esm2022/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +3 -3
  63. package/esm2022/lib/navigation/views/edit-view/edit-view.component.mjs +5 -5
  64. package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +5 -5
  65. package/esm2022/lib/navigation/views/state.mjs +1 -1
  66. package/esm2022/lib/navigation/views/view-menu/view-menu.component.mjs +5 -5
  67. package/esm2022/lib/navigation/views/views/views.component.mjs +4 -4
  68. package/esm2022/lib/notification/badge/badge.component.mjs +3 -3
  69. package/esm2022/lib/notification/banner/banner-action.component.mjs +5 -5
  70. package/esm2022/lib/notification/banner/banner.component.mjs +4 -4
  71. package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +5 -5
  72. package/esm2022/lib/notification/map-indicator/map-indicators.mjs +1 -1
  73. package/esm2022/lib/notification/notification-badge/notification-badge.component.mjs +3 -3
  74. package/esm2022/lib/overlay/callout/callout.component.mjs +6 -6
  75. package/esm2022/lib/overlay/callout/callout.helpers.mjs +1 -1
  76. package/esm2022/lib/overlay/callout/help/help.component.mjs +3 -3
  77. package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +8 -8
  78. package/esm2022/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +5 -5
  79. package/esm2022/lib/overlay/callout/menu/menu.component.mjs +3 -3
  80. package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +4 -4
  81. package/esm2022/lib/overlay/callout/tooltip/tooltip.component.mjs +3 -3
  82. package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +5 -5
  83. package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +5 -5
  84. package/esm2022/lib/overlay/modal/dialog-stack.service.mjs +3 -3
  85. package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +5 -5
  86. package/esm2022/lib/overlay/modal/modal.component.mjs +4 -4
  87. package/esm2022/lib/overlay/modal/side-sheet/side-sheet.component.mjs +3 -3
  88. package/esm2022/lib/overlay/overlay-outlet.component.mjs +4 -4
  89. package/esm2022/lib/overlay/overlay.directive.mjs +4 -4
  90. package/esm2022/lib/overlay/overlay.service.mjs +4 -4
  91. package/esm2022/lib/overlay/toast/toast-action.component.mjs +3 -3
  92. package/esm2022/lib/overlay/toast/toast.component.mjs +4 -4
  93. package/esm2022/lib/riv.module.mjs +4 -4
  94. package/esm2022/lib/size/size.directive.mjs +5 -5
  95. package/esm2022/lib/table/simple-table/coordinate-helper.mjs +1 -1
  96. package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +5 -5
  97. package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +5 -5
  98. package/esm2022/lib/table/simple-table/simple-table-row.component.mjs +3 -3
  99. package/esm2022/lib/table/simple-table/simple-table.component.mjs +4 -4
  100. package/esm2022/lib/table/table/clipboard.mjs +1 -1
  101. package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +1 -1
  102. package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +1 -1
  103. package/esm2022/lib/table/table/state-helpers/display-helpers.mjs +1 -1
  104. package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +1 -1
  105. package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +1 -1
  106. package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +1 -1
  107. package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +1 -1
  108. package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +1 -1
  109. package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +1 -1
  110. package/esm2022/lib/table/table/state.mjs +1 -1
  111. package/esm2022/lib/table/table/table/table.component.mjs +5 -5
  112. package/esm2022/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +5 -5
  113. package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +4 -4
  114. package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +4 -4
  115. package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +5 -5
  116. package/esm2022/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +6 -6
  117. package/esm2022/lib/table/table/table-search/table-search.component.mjs +4 -4
  118. package/esm2022/lib/table/table/table-search-columns/table-search-columns.component.mjs +3 -3
  119. package/esm2022/lib/visibility/visibility.directive.mjs +5 -5
  120. package/esm2022/lib/visualization/chart/chart-scaling.mjs +1 -1
  121. package/esm2022/lib/visualization/chart/chart.component.mjs +5 -5
  122. package/esm2022/lib/visualization/chart/chart.mjs +2 -2
  123. package/esm2022/lib/visualization/data-table/data-table-cell.component.mjs +5 -5
  124. package/esm2022/lib/visualization/data-table/data-table-header-cell.component.mjs +3 -3
  125. package/esm2022/lib/visualization/data-table/data-table-row.component.mjs +3 -3
  126. package/esm2022/lib/visualization/data-table/data-table.component.mjs +3 -3
  127. package/esm2022/lib/visualization/donut/donut.component.mjs +3 -3
  128. package/esm2022/lib/visualization/funnel-chart/funnel-chart.component.mjs +4 -4
  129. package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +1 -1
  130. package/esm2022/lib/visualization/highlight/highlight.component.mjs +3 -3
  131. package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +1 -1
  132. package/esm2022/lib/visualization/intervals.mjs +1 -1
  133. package/esm2022/lib/visualization/issue/issue.component.mjs +3 -3
  134. package/esm2022/lib/visualization/legend-item/legend-item.component.mjs +3 -3
  135. package/esm2022/lib/visualization/metric/metric.component.mjs +3 -3
  136. package/esm2022/lib/visualization/mini-pie/mini-pie.component.mjs +3 -3
  137. package/esm2022/lib/visualization/progress/progress.component.mjs +3 -3
  138. package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +4 -4
  139. package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +1 -1
  140. package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +5 -5
  141. package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +1 -1
  142. package/esm2022/lib/visualization/time-series/time-series.component.mjs +4 -4
  143. package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +1 -1
  144. package/esm2022/lib/visualization/trend/trend.component.mjs +4 -4
  145. package/esm2022/lib/visualization/zero-state/zero-state.component.mjs +3 -3
  146. package/fesm2022/rivet-health-design-system.mjs +418 -418
  147. package/fesm2022/rivet-health-design-system.mjs.map +1 -1
  148. package/package.json +1 -1
@@ -453,4 +453,4 @@ export var RivViews;
453
453
  }
454
454
  RivViews.toSharedUsers = toSharedUsers;
455
455
  })(RivViews || (RivViews = {}));
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQTB6QnhCO0FBMXpCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUFLekQsd0JBQWUsR0FBRyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQVUsQ0FBQztJQWtLcEUsU0FBZ0IsYUFBYSxDQUFvQyxFQUMvRCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE9BQU8sRUFDUCxlQUFlLEdBQ1U7UUFDekIsTUFBTSxZQUFZLEdBQW9CO1lBQ3BDLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLElBQUk7WUFDbEIsZUFBZSxFQUFFLElBQUk7WUFDckIsY0FBYyxFQUFFLENBQUM7WUFDakIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSzthQUNsQjtZQUNELEdB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LElBQXFCO1FBRXJCLE9BQU8sSUFBSSxFQUFFLFVBQVUsS0FBSyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUplLHFCQUFZLGVBSTNCLENBQUE7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxTQUFnQixhQUFhLENBQzNCLEtBQTRCO1FBRTVCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxJQUFvQixDQUFDO2FBQzdCO1lBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDdEMsT0FBTyxJQUFvQixDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVZlLHNCQUFhLGdCQVU1QixDQUFBO0FBQ0gsQ0FBQyxFQTF6QmdCLFFBQVEsS0FBUixRQUFRLFFBMHpCeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRnVzZSwgeyBGdXNlUmVzdWx0LCBJRnVzZU9wdGlvbnMgfSBmcm9tICdmdXNlLmpzJztcbmltcG9ydCB7IGRlYm91bmNlLCBkZWZhdWx0c0RlZXAsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQge1xuICBjb25uZWN0YWJsZSxcbiAgQ29ubmVjdGFibGUsXG4gIGZyb20sXG4gIG1hcCxcbiAgbWVyZ2VTY2FuLFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVlcFBhcnRpYWwgfSBmcm9tICd1dGlsaXR5LXR5cGVzJztcbmltcG9ydCB7IFJpdlNlbGVjdCB9IGZyb20gJy4uLy4uL2lucHV0L3NlbGVjdC9zdGF0ZSc7XG5pbXBvcnQgeyBIaWdobGlnaHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi92aXN1YWxpemF0aW9uL2hpZ2hsaWdodC9oaWdobGlnaHQuY29tcG9uZW50JztcblxuZXhwb3J0IG5hbWVzcGFjZSBSaXZWaWV3cyB7XG4gIGV4cG9ydCBjb25zdCBWaWV3UGVybWlzc2lvbnMgPSBbJ3ByaXZhdGUnLCAnc2hhcmVkJywgJ3B1YmxpYyddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWaWV3UGVybWlzc2lvbiA9ICh0eXBlb2YgVmlld1Blcm1pc3Npb25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBNZW51Q29udGV4dHMgPSBbJ3RhYicsICdhbGwtdmlld3MnLCAnb3ZlcmZsb3cnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgTWVudUNvbnRleHQgPSAodHlwZW9mIE1lbnVDb250ZXh0cylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBVc2VyID0gUml2U2VsZWN0LkJhc2VPcHRpb247XG5cbiAgZXhwb3J0IGNvbnN0IFVzZXJTZWxlY3RNb2RlcyA9IFsnc2VsZWN0JywgJ3NlYXJjaC1zZWxlY3QnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgVXNlclNlbGVjdE1vZGUgPSAodHlwZW9mIFVzZXJTZWxlY3RNb2RlcylbbnVtYmVyXTtcblxuICBleHBvcnQgdHlwZSBTZWFyY2hTZWxlY3RVc2VyPFUgZXh0ZW5kcyBVc2VyPiA9IFUgJiB7IG5ldzogYm9vbGVhbiB9O1xuXG4gIGV4cG9ydCB0eXBlIE9uQWRkVXNlcjxVIGV4dGVuZHMgVXNlcj4gPSAoXG4gICAgc2VhcmNoVGV4dDogc3RyaW5nLFxuICApID0+IFNlYXJjaFNlbGVjdFVzZXI8VT47XG5cbiAgZXhwb3J0IHR5cGUgVmlldzxVIGV4dGVuZHMgVXNlcj4gPSB7XG4gICAgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gIH0gJiAoXG4gICAgfCB7XG4gICAgICAgIHBlcm1pc3Npb246ICdwcml2YXRlJyB8ICdwdWJsaWMnO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwZXJtaXNzaW9uOiAnc2hhcmVkJztcbiAgICAgICAgc2hhcmVkVXNlcnM6IFVbXTtcbiAgICAgIH1cbiAgKTtcblxuICBleHBvcnQgdHlwZSBGdWxsVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gViAmIHtcbiAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgc3lzdGVtOiBib29sZWFuO1xuICAgIHRpdGxlSGlnaGxpZ2h0SW5kaWNlcz86IEhpZ2hsaWdodENvbXBvbmVudC5IaWdobGlnaHRJbmRpY2VzW107XG4gICAgdGVtcG9yYXJ5OiBib29sZWFuO1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIC8vXG4gIC8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQ29yZVN0YXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgdmlld3M6IFZbXTtcbiAgICBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsO1xuICAgIHRlbXBvcmFyeVZpZXdJZDogVlsnaWQnXSB8IG51bGw7XG4gICAgY29udGFpbmVyV2lkdGg6IG51bWJlcjtcbiAgICBlZGl0aW5nVmlld0NvbnRleHQ6IHtcbiAgICAgIGlkOiBWWydpZCddO1xuICAgICAgYXV0b1JlbmFtZTogYm9vbGVhbjtcbiAgICAgIG1lbnVDb250ZXh0OiBNZW51Q29udGV4dDtcbiAgICB9IHwgbnVsbDtcbiAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiB7IGlkOiBWWydpZCddOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfSB8IG51bGw7XG4gICAgb3ZlcmZsb3c6IHtcbiAgICAgIHNlYXJjaDogc3RyaW5nO1xuICAgICAgcGlja2VyT3BlbjogYm9vbGVhbjtcbiAgICB9O1xuICAgIGFsbDoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwcml2YXRlT3BlbjogYm9vbGVhbjtcbiAgICAgIHNoYXJlZE9wZW46IGJvb2xlYW47XG4gICAgICBwdWJsaWNPcGVuOiBib29sZWFuO1xuICAgIH07XG4gICAgdXNlclNvdXJjZTogVXNlclNvdXJjZTxVPjtcbiAgICB1c2VyU2VsZWN0TW9kZTogVXNlclNlbGVjdE1vZGU7XG4gICAgb25BZGRVc2VyPzogT25BZGRVc2VyPFU+O1xuICAgIG5ld1Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaGFzU3lzdGVtVmlldzogYm9vbGVhbjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBGdWxsU3RhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IENvcmVTdGF0ZTxVLCBWPiAmIHtcbiAgICBhbGxWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBkaXNwbGF5ZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBlbmFibGVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgYWxsRW5hYmxlZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGFsbDoge1xuICAgICAgcHJpdmF0ZVZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgICAgc2hhcmVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBwdWJsaWNWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICB9O1xuICB9O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gQWN0aW9ucyAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgQWN0aW9uPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPVxuICAgIHwgeyB0eXBlOiAnbG9hZCcgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnc2V0QWN0aXZlVmlldyc7XG4gICAgICAgIGlkOiBWWydpZCddO1xuICAgICAgICBzb3VyY2U/OiAndGFiJyB8ICdtZW51JyB8ICdvdmVyZmxvdyc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXRFbmFibGVkJztcbiAgICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgICAgIHNvdXJjZT86ICdtZW51JyB8ICdleWVJY29uJztcbiAgICAgIH1cbiAgICB8IHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJzsgd2lkdGg6IG51bWJlciB9XG4gICAgfCB7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOyBvcGVuOiBib29sZWFuIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOyBxdWVyeTogc3RyaW5nIH1cbiAgICB8IHsgdHlwZTogJ3VwZGF0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2RlbGV0ZVZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ2R1cGxpY2F0ZVZpZXcnOyB2aWV3OiBWOyBtZW51Q29udGV4dDogTWVudUNvbnRleHQgfVxuICAgIHwgeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnOyB2aWV3OiBWIH1cbiAgICB8IHsgdHlwZTogJ3NldEVkaXRpbmdWaWV3JzsgY29udGV4dDogQ29yZVN0YXRlPFUsIFY+WydlZGl0aW5nVmlld0NvbnRleHQnXSB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXREZWxldGluZ1ZpZXcnO1xuICAgICAgICBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2RlbGV0aW5nVmlld0NvbnRleHQnXTtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3ZpZXdPcmRlckNoYW5nZSc7XG4gICAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogbnVtYmVyO1xuICAgICAgICBzb3VyY2U/OiAndGFiRHJhZycgfCAnb3ZlcmZsb3dEcmFnJztcbiAgICAgICAgdmlld1RpdGxlPzogVlsndGl0bGUnXTtcbiAgICAgIH1cbiAgICB8IHsgdHlwZTogJ3NldEFsbFZpZXdzVG9nZ2xlJzsgcGVybWlzc2lvbjogVmlld1Blcm1pc3Npb247IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnY3JlYXRlVGVtcG9yYXJ5Vmlldyc7IHZpZXc6IFYgfTtcblxuICAvLy8vLy8vLy8vLy9cbiAgLy8gU291cmNlIC8vXG4gIC8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIFNvdXJjZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKCkgPT5cbiAgICB8IFZbXVxuICAgIHwgUHJvbWlzZTxWW10+O1xuICBleHBvcnQgdHlwZSBTYXZlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoXG4gICAgdmlld3M6IFZbXSxcbiAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgZXhwb3J0IHR5cGUgRHVwbGljYXRlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoXG4gICAgdmlld1RvRHVwbGljYXRlOiBWLFxuICApID0+IFYgfCBQcm9taXNlPFY+O1xuICBleHBvcnQgdHlwZSBVc2VyU291cmNlPFUgZXh0ZW5kcyBVc2VyPiA9ICgpID0+IFVbXSB8IFByb21pc2U8VVtdPjtcbiAgZXhwb3J0IHR5cGUgQ29weUxpbms8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3OiBWLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBTZXRBY3RpdmVWaWV3SWQ8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICBpZDogVlsnaWQnXSxcbiAgKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuICAvLy8vLy8vLy8vLy8vXG4gIC8vIE1hbmFnZXIgLy9cbiAgLy8vLy8vLy8vLy8vL1xuXG4gIGV4cG9ydCB0eXBlIE1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IHtcbiAgICBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj47XG4gICAgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxVLCBWPj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlck9wdGlvbnM8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IHtcbiAgICBpbml0aWFsU3RhdGU/OiBEZWVwUGFydGlhbDxDb3JlU3RhdGU8VSwgVj4+O1xuICAgIGZ1c2VPcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+O1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIENyZWF0ZU1hbmFnZXJJbnB1dDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIHNvdXJjZTogU291cmNlPFUsIFY+O1xuICAgIHNhdmU6IFNhdmU8VSwgVj47XG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8VSwgVj47XG4gICAgdXNlclNvdXJjZTogVXNlclNvdXJjZTxVPjtcbiAgICB1c2VyU2VsZWN0TW9kZT86IFVzZXJTZWxlY3RNb2RlO1xuICAgIG9uQWRkVXNlcj86IE9uQWRkVXNlcjxVPjtcbiAgICBuZXdUb29sdGlwPzogc3RyaW5nO1xuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPjtcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPjtcbiAgICBvcHRpb25zPzogTWFuYWdlck9wdGlvbnM8VSwgVj47XG4gIH07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1hbmFnZXI8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+Pih7XG4gICAgc291cmNlLFxuICAgIHNhdmUsXG4gICAgZHVwbGljYXRlLFxuICAgIHVzZXJTb3VyY2UsXG4gICAgdXNlclNlbGVjdE1vZGUsXG4gICAgb25BZGRVc2VyLFxuICAgIG5ld1Rvb2x0aXAsXG4gICAgY29weUxpbmssXG4gICAgb3B0aW9ucyxcbiAgICBzZXRBY3RpdmVWaWV3SWQsXG4gIH06IENyZWF0ZU1hbmFnZXJJbnB1dDxVLCBWPik6IE1hbmFnZXI8VSwgVj4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGF0ZTogQ29yZVN0YXRlPFUsIFY+ID0ge1xuICAgICAgdmlld3M6IFtdLFxuICAgICAgYWN0aXZlVmlld0lkOiBudWxsLFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgY29udGFpbmVyV2lkdGg6IDAsXG4gICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IG51bGwsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcGlja2VyT3BlbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAgYWxsOiB7XG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIHByaXZhdGVPcGVuOiB0cnVlLFxuICAgICAgICBzaGFyZWRPcGVuOiB0cnVlLFxuICAgICAgICBwdWJsaWNPcGVuOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHVzZXJTb3VyY2UsXG4gICAgICB1c2VyU2VsZWN0TW9kZTogdXNlclNlbGVjdE1vZGUgPz8gJ3NlbGVjdCcsXG4gICAgICBvbkFkZFVzZXIsXG4gICAgICBuZXdUb29sdGlwLFxuICAgICAgaGFzU3lzdGVtVmlldzogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdGVkSW5pdGlhbFN0YXRlOiBDb3JlU3RhdGU8VSwgVj4gPSBkZWZhdWx0c0RlZXAoXG4gICAgICB7fSxcbiAgICAgIG9wdGlvbnM/LmluaXRpYWxTdGF0ZSxcbiAgICAgIGRlZmF1bHRTdGF0ZSxcbiAgICApO1xuXG4gICAgY29uc3QgYWN0aW9uczogU3ViamVjdDxBY3Rpb248VSwgVj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgICBjb25zdCBjb3JlU3RhdGU6IE9ic2VydmFibGU8Q29yZVN0YXRlPFUsIFY+PiA9IGFjdGlvbnMucGlwZShcbiAgICAgIG1lcmdlU2NhbihcbiAgICAgICAgKHN0YXRlLCBhY3Rpb24pID0+XG4gICAgICAgICAgZnJvbShcbiAgICAgICAgICAgIHJlZHVjZShcbiAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICBkZWJvdW5jZShzYXZlLCAyMDApLFxuICAgICAgICAgICAgICBkdXBsaWNhdGUsXG4gICAgICAgICAgICAgIGNvcHlMaW5rLFxuICAgICAgICAgICAgICBzZXRBY3RpdmVWaWV3SWQsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIGRlZmF1bHRlZEluaXRpYWxTdGF0ZSxcbiAgICAgICAgMSxcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoZGVmYXVsdGVkSW5pdGlhbFN0YXRlKSxcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGU6IENvbm5lY3RhYmxlPEZ1bGxTdGF0ZTxVLCBWPj4gPSBjb25uZWN0YWJsZShcbiAgICAgIGNvcmVTdGF0ZS5waXBlKFxuICAgICAgICBtYXAocyA9PiB7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZE5vcm1hbFZpZXdzOiBWW10gPSBnZXRFbmFibGVkVmlld3Mocy52aWV3cyk7XG4gICAgICAgICAgY29uc3QgYWN0aXZlVmlldzogViB8IHVuZGVmaW5lZCA9IGVuYWJsZWROb3JtYWxWaWV3cy5maW5kKFxuICAgICAgICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzLmFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIElmIGZvciBzb21lIHJlYXNvbiB0aGUgYWN0aXZlIHZpZXcgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkLCB3ZSdsbFxuICAgICAgICAgIC8vIGRlZmF1bHQgdG8gbWFraW5nIHRoZSBmaXJzdCBlbmFibGVkIHZpZXcgYWN0aXZlIGluc3RlYWQuXG4gICAgICAgICAgY29uc3QgYWN0aXZlVmlld0lkOiBWWydpZCddIHwgbnVsbCA9IGFjdGl2ZVZpZXdcbiAgICAgICAgICAgID8gYWN0aXZlVmlldy5pZFxuICAgICAgICAgICAgOiBlbmFibGVkTm9ybWFsVmlld3MubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBlbmFibGVkTm9ybWFsVmlld3NbMF0uaWRcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgIGNvbnN0IGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdID0gcy52aWV3cy5tYXAoKHZpZXcsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzU3lzdGVtVmlldzogYm9vbGVhbiA9IHMuaGFzU3lzdGVtVmlldyAmJiBpID09PSAwO1xuICAgICAgICAgICAgY29uc3QgaXNUZW1wb3JhcnlWaWV3OiBib29sZWFuID0gcy50ZW1wb3JhcnlWaWV3SWQgPT09IHZpZXcuaWQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi52aWV3LFxuICAgICAgICAgICAgICBlbmFibGVkOiB2aWV3LmVuYWJsZWQgfHwgaXNTeXN0ZW1WaWV3IHx8IGlzVGVtcG9yYXJ5VmlldyxcbiAgICAgICAgICAgICAgYWN0aXZlOiBhY3RpdmVWaWV3SWQgPT09IHZpZXcuaWQsXG4gICAgICAgICAgICAgIHN5c3RlbTogaXNTeXN0ZW1WaWV3LFxuICAgICAgICAgICAgICB0ZW1wb3Jhcnk6IGlzVGVtcG9yYXJ5VmlldyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBhbGxFbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3MoYWxsVmlld3MpO1xuXG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkVmlld3MgPSBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3cyhcbiAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU92ZXJmbG93Vmlld0luZGV4KHMpLFxuICAgICAgICAgICAgYWN0aXZlVmlld0lkLFxuICAgICAgICAgICAgcy50ZW1wb3JhcnlWaWV3SWQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IHMub3ZlcmZsb3cuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKFxuICAgICAgICAgICAgICAgIGFsbEVuYWJsZWRWaWV3cyxcbiAgICAgICAgICAgICAgICBzLm92ZXJmbG93LnNlYXJjaCxcbiAgICAgICAgICAgICAgICBvcHRpb25zPy5mdXNlT3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBhbGxFbmFibGVkVmlld3M7XG5cbiAgICAgICAgICBjb25zdCBhbGxQZXJtYW5lbnRWaWV3cyA9IGFsbFZpZXdzLmZpbHRlcih2aWV3ID0+ICF2aWV3LnRlbXBvcmFyeSk7XG4gICAgICAgICAgY29uc3QgYWxsVmlld3NGaWx0ZXJlZCA9IHMuYWxsLnNlYXJjaFxuICAgICAgICAgICAgPyBzZWFyY2hWaWV3cyhhbGxQZXJtYW5lbnRWaWV3cywgcy5hbGwuc2VhcmNoLCBvcHRpb25zPy5mdXNlT3B0aW9ucylcbiAgICAgICAgICAgIDogYWxsUGVybWFuZW50Vmlld3M7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hpbmdBbGxWaWV3cyA9ICEhcy5hbGwuc2VhcmNoO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnMsXG4gICAgICAgICAgICBhbGxWaWV3cyxcbiAgICAgICAgICAgIGRpc3BsYXllZFZpZXdzLFxuICAgICAgICAgICAgZW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAgIC4uLnMuYWxsLFxuICAgICAgICAgICAgICBwcml2YXRlT3Blbjogc2VhcmNoaW5nQWxsVmlld3MgfHwgcy5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICAgIHByaXZhdGVWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3ByaXZhdGUnKSxcbiAgICAgICAgICAgICAgc2hhcmVkT3Blbjogc2VhcmNoaW5nQWxsVmlld3MgfHwgcy5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgICAgc2hhcmVkVmlld3M6IHZpZXdzQnlQZXJtaXNzaW9uKGFsbFZpZXdzRmlsdGVyZWQsICdzaGFyZWQnKSxcbiAgICAgICAgICAgICAgcHVibGljT3Blbjogc2VhcmNoaW5nQWxsVmlld3MgfHwgcy5hbGwucHVibGljT3BlbixcbiAgICAgICAgICAgICAgcHVibGljVmlld3M6IHZpZXdzQnlQZXJtaXNzaW9uKGFsbFZpZXdzRmlsdGVyZWQsICdwdWJsaWMnKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3RpdmVWaWV3SWQ6IGFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3RvcjogKCkgPT4gbmV3IFJlcGxheVN1YmplY3QoMSksXG4gICAgICAgIHJlc2V0T25EaXNjb25uZWN0OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBzdGF0ZS5jb25uZWN0KCk7XG5cbiAgICAvLyBMb2FkIHRoZSB2aWV3cyBpbW1lZGlhdGVseVxuICAgIGFjdGlvbnMubmV4dCh7IHR5cGU6ICdsb2FkJyB9KTtcblxuICAgIHJldHVybiB7IGFjdGlvbnMsIHN0YXRlIH07XG4gIH1cblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFN0YXRlIHJlZHVjZXIgKHdpdGggaGVscGVycykgLy9cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4gIGZ1bmN0aW9uIGdldEVuYWJsZWRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KHZpZXdzOiBWW10pOiBWW107XG4gIGZ1bmN0aW9uIGdldEVuYWJsZWRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICByZXR1cm4gdmlld3MuZmlsdGVyKCh2LCBpKSA9PiB2LmVuYWJsZWQgfHwgdi5zeXN0ZW0gfHwgdi50ZW1wb3JhcnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zbGF0ZXMgYW4gaW5kZXggaW4gdGhlIGVuYWJsZWQgdmlld3MgbGlzdCB0byB0aGUgY29ycmVzcG9uZGluZyBpbmRleFxuICAgKiBpbiB0aGUgZnVsbCB2aWV3cyBsaXN0LiBUaGlzIGlzIHVzZWQgdG8gcmVzb2x2ZSBVSSBpbmRpY2VzICh3aGljaCBvbmx5XG4gICAqIHNob3cgZW5hYmxlZCB2aWV3cykgdG8gc3RhdGUudmlld3MgaW5kaWNlcyAod2hpY2ggaW5jbHVkZXMgYWxsIHZpZXdzKS5cbiAgICovXG4gIGZ1bmN0aW9uIG1hcEVuYWJsZWRJbmRleFRvVmlld0luZGV4PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IFZbXSxcbiAgICBlbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Modmlld3MpO1xuXG4gICAgY29uc3QgdGFyZ2V0VmlldyA9IGVuYWJsZWRWaWV3c1tlbmFibGVkSW5kZXhdO1xuICAgIGlmICghdGFyZ2V0VmlldykgcmV0dXJuIGVuYWJsZWRJbmRleDtcblxuICAgIGNvbnN0IHZpZXdJbmRleCA9IHZpZXdzLmZpbmRJbmRleCh2aWV3ID0+IHZpZXcuaWQgPT09IHRhcmdldFZpZXcuaWQpO1xuICAgIHJldHVybiB2aWV3SW5kZXggPT09IC0xID8gZW5hYmxlZEluZGV4IDogdmlld0luZGV4O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXg8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhzdGF0ZS52aWV3cyk7XG5cbiAgICAvLyBUYWJzIGhhdmUgYSBtaW5pbXVtIHdpZHRoIG9mIDkycHguXG4gICAgY29uc3QgcG9zc2libGVTbG90Q291bnQgPSBNYXRoLmZsb29yKHN0YXRlLmNvbnRhaW5lcldpZHRoIC8gOTIpO1xuXG4gICAgLy8gVGhlIFwiYWxsIHZpZXdzXCIgc2lkZWJhciB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90LlxuICAgIGNvbnN0IGF2YWlsYWJsZVNsb3RDb3VudCA9IHBvc3NpYmxlU2xvdENvdW50IC0gMTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSB0b28gbWFueSB0YWJzLCB0aGUgXCJOIG1vcmVcIiB0cmlnZ2VyIHRha2VzIHVwIG9uZSBzbG90IGFzIHdlbGwuXG4gICAgLy8gQnV0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIFwiMSBtb3JlXCIgY2FzZSwgc28gd2Ugb25seSB1c2UgYSBzbG90IGZvciBcIk4gbW9yZVwiIGlmIE4gIT0gMS5cbiAgICBpZiAoYXZhaWxhYmxlU2xvdENvdW50ID49IGVuYWJsZWRWaWV3cy5sZW5ndGgpIHJldHVybiBlbmFibGVkVmlld3MubGVuZ3RoO1xuICAgIGVsc2UgcmV0dXJuIGF2YWlsYWJsZVNsb3RDb3VudCAtIDE7IC8vIHRoZSBcIk4gbW9yZVwiIHVzZXMgdXAgYSBzbG90LlxuICB9XG5cbiAgZnVuY3Rpb24gY2FsY3VsYXRlRGlzcGxheWVkVmlld3M8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBmdWxsVmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICAgb3ZlcmZsb3dWaWV3SW5kZXg6IG51bWJlcixcbiAgICBhY3RpdmVWaWV3SWQ6IENvcmVTdGF0ZTxVLCBWPlsnYWN0aXZlVmlld0lkJ10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGZ1bGxWaWV3cy5zbGljZSgwLCBvdmVyZmxvd1ZpZXdJbmRleCk7XG5cbiAgICBjb25zdCB2aWV3c1RvQWx3YXlzRGlzcGxheTogRnVsbFZpZXc8VSwgVj5bXSA9IFtdO1xuXG4gICAgLy8gVGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBhbHdheXMgYmUgZGlzcGxheWVkIGlmIGl0IGV4aXN0c1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJbkRpc3BsYXkgPSBkaXNwbGF5ZWRWaWV3cy5zb21lKFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQsXG4gICAgKTtcbiAgICBpZiAoYWN0aXZlVmlld0lkICE9PSBudWxsICYmICFhY3RpdmVWaWV3SW5EaXNwbGF5KSB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gZnVsbFZpZXdzLmZpbmQodmlldyA9PiB2aWV3LmlkID09PSBhY3RpdmVWaWV3SWQpO1xuICAgICAgaWYgKGFjdGl2ZVZpZXcgJiYgZGlzcGxheWVkVmlld3MubGVuZ3RoID4gMCkge1xuICAgICAgICB2aWV3c1RvQWx3YXlzRGlzcGxheS5wdXNoKGFjdGl2ZVZpZXcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIHNob3VsZCB0cnkgdG8gZGlzcGxheSB0aGUgdGVtcG9yYXJ5IHZpZXcgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgdGVtcG9yYXJ5Vmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IHRlbXBvcmFyeVZpZXdJZCxcbiAgICApO1xuICAgIGlmIChcbiAgICAgIHRlbXBvcmFyeVZpZXdJZCAhPT0gbnVsbCAmJlxuICAgICAgIXRlbXBvcmFyeVZpZXdJbkRpc3BsYXkgJiZcbiAgICAgIHRlbXBvcmFyeVZpZXdJZCAhPSBhY3RpdmVWaWV3SWRcbiAgICApIHtcbiAgICAgIGNvbnN0IHRlbXBvcmFyeVZpZXcgPSBmdWxsVmlld3MuZmluZCh2aWV3ID0+IHZpZXcuaWQgPT09IHRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICBpZiAoXG4gICAgICAgIHRlbXBvcmFyeVZpZXcgJiZcbiAgICAgICAgZGlzcGxheWVkVmlld3MubGVuZ3RoID4gdmlld3NUb0Fsd2F5c0Rpc3BsYXkubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgdmlld3NUb0Fsd2F5c0Rpc3BsYXkucHVzaCh0ZW1wb3JhcnlWaWV3KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmlld3NUb0Fsd2F5c0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbnVtVmlld3NUb1JlcGxhY2U6IG51bWJlciA9IHZpZXdzVG9BbHdheXNEaXNwbGF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmRpc3BsYXllZFZpZXdzLnNsaWNlKDAsIC0xICogbnVtVmlld3NUb1JlcGxhY2UpLFxuICAgICAgICAuLi52aWV3c1RvQWx3YXlzRGlzcGxheSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpc3BsYXllZFZpZXdzO1xuICB9XG5cbiAgZnVuY3Rpb24gdmlld3NCeVBlcm1pc3Npb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgcmV0dXJuIHNvcnRCeShcbiAgICAgIHZpZXdzLmZpbHRlcih2aWV3ID0+IHZpZXcucGVybWlzc2lvbiA9PT0gcGVybWlzc2lvbiksXG4gICAgICBbdiA9PiAhdi5zeXN0ZW0sICd0aXRsZSddLFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBzZWFyY2hWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHF1ZXJ5OiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IElGdXNlT3B0aW9uczxWPixcbiAgKTogRnVsbFZpZXc8VSwgVj5bXSB7XG4gICAgY29uc3QgZnVzZSA9IG5ldyBGdXNlKHZpZXdzLCB7XG4gICAgICB0aHJlc2hvbGQ6IDAuMixcbiAgICAgIGtleXM6IFsndGl0bGUnXSxcbiAgICAgIGluY2x1ZGVNYXRjaGVzOiB0cnVlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1hdGNoZWRPcHRpb25zOiBGdXNlUmVzdWx0PEZ1bGxWaWV3PFUsIFY+PltdID0gZnVzZS5zZWFyY2gocXVlcnkpO1xuXG4gICAgcmV0dXJuIG1hdGNoZWRPcHRpb25zLm1hcChyZXN1bHQgPT4gKHtcbiAgICAgIC4uLnJlc3VsdC5pdGVtLFxuICAgICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzOiBbXG4gICAgICAgIC4uLihyZXN1bHQubWF0Y2hlcz8uZmluZChtYXRjaCA9PiBtYXRjaC5rZXkgPT09ICd0aXRsZScpPy5pbmRpY2VzID8/XG4gICAgICAgICAgW10pLFxuICAgICAgXSxcbiAgICB9KSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXROZXh0QmVzdEFjdGl2ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICApOiBWWydpZCddIHwgbnVsbCB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHN0YXRlLnZpZXdzKTtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlVmlld0luZGV4ID0gZW5hYmxlZFZpZXdzLmZpbmRJbmRleChcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gc3RhdGUuYWN0aXZlVmlld0lkLFxuICAgICk7XG5cbiAgICBpZiAoZW5hYmxlZFZpZXdzLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPT09IC0xKSByZXR1cm4gZW5hYmxlZFZpZXdzWzBdLmlkO1xuICAgIHJldHVybiAoXG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCArIDFdPy5pZCA/P1xuICAgICAgZW5hYmxlZFZpZXdzW2N1cnJlbnRBY3RpdmVWaWV3SW5kZXggLSAxXT8uaWQgPz9cbiAgICAgIGVuYWJsZWRWaWV3c1swXS5pZFxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWxldGVWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgKTogQ29yZVN0YXRlPFUsIFY+IHtcbiAgICBjb25zdCBhY3RpdmVWaWV3SWQgPVxuICAgICAgc3RhdGUuYWN0aXZlVmlld0lkID09PSBpZFxuICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgOiBzdGF0ZS5hY3RpdmVWaWV3SWQ7XG4gICAgY29uc3QgdGVtcG9yYXJ5Vmlld0lkID1cbiAgICAgIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCA9PT0gaWQgPyBudWxsIDogc3RhdGUudGVtcG9yYXJ5Vmlld0lkO1xuICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPT0gaWQpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzLFxuICAgICAgYWN0aXZlVmlld0lkLFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkLFxuICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0RW5hYmxlZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgaWQ6IFZbJ2lkJ10sXG4gICAgZW5hYmxlZDogYm9vbGVhbixcbiAgKTogQ29yZVN0YXRlPFUsIFY+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICB2aWV3czogc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgdmlldy5pZCA9PT0gaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQgfSA6IHZpZXcsXG4gICAgICApLFxuICAgICAgYWN0aXZlVmlld0lkOlxuICAgICAgICAhZW5hYmxlZCAmJiBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgICAgPyBnZXROZXh0QmVzdEFjdGl2ZVZpZXcoc3RhdGUpXG4gICAgICAgICAgOiBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdpdGhEdXBsaWNhdGVWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IFZbXSxcbiAgICBkdXBsaWNhdGVkVmlldzogVixcbiAgICBuZXdWaWV3OiBWLFxuICApOiBWW10ge1xuICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gZHVwbGljYXRlZFZpZXcuaWQpO1xuICAgIGlmIChzb3VyY2VJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBbbmV3VmlldywgLi4udmlld3NdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi52aWV3cy5zbGljZSgwLCBzb3VyY2VJbmRleCArIDEpLFxuICAgICAgICBuZXdWaWV3LFxuICAgICAgICAuLi52aWV3cy5zbGljZShzb3VyY2VJbmRleCArIDEpLFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3T3JkZXJDaGFuZ2U8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIHByZXZpb3VzRW5hYmxlZEluZGV4OiBudW1iZXIsXG4gICAgbmV3RW5hYmxlZEluZGV4OiBudW1iZXIsXG4gICk6IHsgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPjsgc2hvdWxkU2F2ZTogYm9vbGVhbiB9IHtcbiAgICBpZiAoXG4gICAgICBzdGF0ZS5oYXNTeXN0ZW1WaWV3ICYmXG4gICAgICAocHJldmlvdXNFbmFibGVkSW5kZXggPT09IDAgfHwgbmV3RW5hYmxlZEluZGV4ID09PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHsgc3RhdGUsIHNob3VsZFNhdmU6IGZhbHNlIH07IC8vIEtlZXAgc3lzdGVtIHZpZXcgKGluZGV4IDApIGluIHBsYWNlXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsUHJldmlvdXNJbmRleCA9IG1hcEVuYWJsZWRJbmRleFRvVmlld0luZGV4KFxuICAgICAgc3RhdGUudmlld3MsXG4gICAgICBwcmV2aW91c0VuYWJsZWRJbmRleCxcbiAgICApO1xuICAgIGNvbnN0IGFjdHVhbE5ld0luZGV4ID0gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXgoXG4gICAgICBzdGF0ZS52aWV3cyxcbiAgICAgIG5ld0VuYWJsZWRJbmRleCxcbiAgICApO1xuXG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnZpZXdzW2FjdHVhbFByZXZpb3VzSW5kZXhdO1xuICAgIGNvbnN0IHdpdGhvdXRJdGVtID0gc3RhdGUudmlld3MuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBhY3R1YWxQcmV2aW91c0luZGV4KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZToge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdmlld3M6IFtcbiAgICAgICAgICAuLi53aXRob3V0SXRlbS5zbGljZSgwLCBhY3R1YWxOZXdJbmRleCksXG4gICAgICAgICAgaXRlbSxcbiAgICAgICAgICAuLi53aXRob3V0SXRlbS5zbGljZShhY3R1YWxOZXdJbmRleCksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgc2hvdWxkU2F2ZTogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0UGVybWFuZW50Vmlld3M8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIHRlbXBvcmFyeVZpZXdJZDogQ29yZVN0YXRlPFUsIFY+Wyd0ZW1wb3JhcnlWaWV3SWQnXSxcbiAgKTogVltdIHtcbiAgICByZXR1cm4gdmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5pZCAhPSB0ZW1wb3JhcnlWaWV3SWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2F2ZVBlcm1hbmVudFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc2F2ZTogU2F2ZTxVLCBWPixcbiAgICB2aWV3czogVltdLFxuICAgIHRlbXBvcmFyeVZpZXdJZDogQ29yZVN0YXRlPFUsIFY+Wyd0ZW1wb3JhcnlWaWV3SWQnXSxcbiAgKSB7XG4gICAgY29uc3QgcGVybWFuZW50Vmlld3MgPSBnZXRQZXJtYW5lbnRWaWV3cyh2aWV3cywgdGVtcG9yYXJ5Vmlld0lkKTtcblxuICAgIHNhdmUocGVybWFuZW50Vmlld3MpO1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVkdWNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgICBhY3Rpb246IEFjdGlvbjxVLCBWPixcbiAgICBzb3VyY2U6IFNvdXJjZTxVLCBWPixcbiAgICBzYXZlOiBTYXZlPFUsIFY+LFxuICAgIGR1cGxpY2F0ZTogRHVwbGljYXRlPFUsIFY+LFxuICAgIGNvcHlMaW5rOiBDb3B5TGluazxVLCBWPixcbiAgICBzZXRBY3RpdmVWaWV3SWQ6IFNldEFjdGl2ZVZpZXdJZDxVLCBWPixcbiAgKTogUHJvbWlzZTxDb3JlU3RhdGU8VSwgVj4+IHtcbiAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlICdsb2FkJzpcbiAgICAgICAgY29uc3Qgdmlld3MgPSBhd2FpdCBzb3VyY2UoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB2aWV3cyxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWN0aXZlVmlldyc6IHtcbiAgICAgICAgY29uc3QgYWN0aXZlVmlldyA9IHN0YXRlLnZpZXdzLmZpbmQodiA9PiB2LmlkID09PSBhY3Rpb24uaWQpO1xuICAgICAgICBjb25zdCB2aWV3cyA9XG4gICAgICAgICAgYWN0aXZlVmlldyAmJiAhYWN0aXZlVmlldy5lbmFibGVkXG4gICAgICAgICAgICA/IHN0YXRlLnZpZXdzLm1hcCh2aWV3ID0+XG4gICAgICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLmlkID8geyAuLi52aWV3LCBlbmFibGVkOiB0cnVlIH0gOiB2aWV3LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHN0YXRlLnZpZXdzO1xuICAgICAgICAvLyBJZiBlbmFibGluZyB0aGUgdmlldyBjaGFuZ2VkIHRoZSB2aWV3cywgd2UgbmVlZCB0byBzYXZlLlxuICAgICAgICBpZiAodmlld3MgIT09IHN0YXRlLnZpZXdzKSB7XG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIHZpZXdzLCBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgdGhlIGFjdGl2ZSB2aWV3IGhhcyBjaGFuZ2VkXG4gICAgICAgIHNldEFjdGl2ZVZpZXdJZChhY3Rpb24uaWQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLmlkLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0RW5hYmxlZCc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBzZXRFbmFibGVkKHN0YXRlLCBhY3Rpb24uaWQsIGFjdGlvbi5lbmFibGVkKTtcbiAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIG5ld1N0YXRlLnZpZXdzLCBuZXdTdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3NldENvbnRhaW5lcldpZHRoJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBjb250YWluZXJXaWR0aDogYWN0aW9uLndpZHRoLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHBpY2tlck9wZW46IGFjdGlvbi5vcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93U2VhcmNoUXVlcnknOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG92ZXJmbG93OiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5vdmVyZmxvdyxcbiAgICAgICAgICAgIHNlYXJjaDogYWN0aW9uLnF1ZXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzU2VhcmNoUXVlcnknOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAndXBkYXRlVmlldyc6IHtcbiAgICAgICAgaWYgKGFjdGlvbi52aWV3LmlkICE9IHN0YXRlLnRlbXBvcmFyeVZpZXdJZCkge1xuICAgICAgICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi52aWV3LmlkID8gYWN0aW9uLnZpZXcgOiB2aWV3LFxuICAgICAgICAgICk7XG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIHZpZXdzLCBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHZpZXdzOiB2aWV3cyxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFVwZGF0aW5nIGEgdGVtcG9yYXJ5IHZpZXcgc2F2ZXMgdGhlIHZpZXcgYW5kIG1ha2VzIGl0IHBlcm1hbmVudFxuICAgICAgICAgIGNvbnN0IHRlbXBvcmFyeVZpZXdUb1NhdmUgPSBhd2FpdCBkdXBsaWNhdGUoeyAuLi5hY3Rpb24udmlldyB9KTtcblxuICAgICAgICAgIGNvbnN0IHZpZXdzID0gc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgIHZpZXcuaWQgPT09IGFjdGlvbi52aWV3LmlkID8gdGVtcG9yYXJ5Vmlld1RvU2F2ZSA6IHZpZXcsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHNhdmVQZXJtYW5lbnRWaWV3cyhzYXZlLCB2aWV3cywgbnVsbCk7XG4gICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSB2aWV3IHdlIGp1c3Qgc2F2ZWQgaXMgdGhlIGFjdGl2ZSB2aWV3XG4gICAgICAgICAgc2V0QWN0aXZlVmlld0lkKHRlbXBvcmFyeVZpZXdUb1NhdmUuaWQpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgIHZpZXdzOiB2aWV3cyxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXdJZDogdGVtcG9yYXJ5Vmlld1RvU2F2ZS5pZCxcbiAgICAgICAgICAgIHRlbXBvcmFyeVZpZXdJZDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2RlbGV0ZVZpZXcnOiB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0gZGVsZXRlVmlldyhzdGF0ZSwgYWN0aW9uLnZpZXcuaWQpO1xuICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgbmV3U3RhdGUudmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZHVwbGljYXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3VmlldyA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3IH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzOiB3aXRoRHVwbGljYXRlVmlldyhzdGF0ZS52aWV3cywgYWN0aW9uLnZpZXcsIG5ld1ZpZXcpLFxuICAgICAgICAgIGVkaXRpbmdWaWV3Q29udGV4dDoge1xuICAgICAgICAgICAgaWQ6IG5ld1ZpZXcuaWQsXG4gICAgICAgICAgICBhdXRvUmVuYW1lOiB0cnVlLFxuICAgICAgICAgICAgbWVudUNvbnRleHQ6IGFjdGlvbi5tZW51Q29udGV4dCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogbmV3Vmlldy5pZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnY29weUxpbmtUb1ZpZXcnOlxuICAgICAgICBhd2FpdCBjb3B5TGluayhhY3Rpb24udmlldyk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY2FzZSAndmlld09yZGVyQ2hhbmdlJzoge1xuICAgICAgICBjb25zdCB7IHN0YXRlOiBuZXdTdGF0ZSwgc2hvdWxkU2F2ZSB9ID0gdmlld09yZGVyQ2hhbmdlKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGFjdGlvbi5wcmV2aW91c0VuYWJsZWRJbmRleCxcbiAgICAgICAgICBhY3Rpb24ubmV3RW5hYmxlZEluZGV4LFxuICAgICAgICApO1xuICAgICAgICBpZiAoc2hvdWxkU2F2ZSkge1xuICAgICAgICAgIHNhdmVQZXJtYW5lbnRWaWV3cyhzYXZlLCBuZXdTdGF0ZS52aWV3cywgc3RhdGUudGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ3NldEFsbFZpZXdzVG9nZ2xlJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLmFsbCxcbiAgICAgICAgICAgIHByaXZhdGVPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3ByaXZhdGUnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnByaXZhdGVPcGVuLFxuICAgICAgICAgICAgc2hhcmVkT3BlbjpcbiAgICAgICAgICAgICAgYWN0aW9uLnBlcm1pc3Npb24gPT09ICdzaGFyZWQnXG4gICAgICAgICAgICAgICAgPyBhY3Rpb24ub3BlblxuICAgICAgICAgICAgICAgIDogc3RhdGUuYWxsLnNoYXJlZE9wZW4sXG4gICAgICAgICAgICBwdWJsaWNPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3B1YmxpYydcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHVibGljT3BlbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRFZGl0aW5nVmlldyc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0RGVsZXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBhY3Rpb24uY29udGV4dCxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnY3JlYXRlVGVtcG9yYXJ5Vmlldyc6XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUGVybWFuZW50Vmlld3MgPSBnZXRQZXJtYW5lbnRWaWV3cyhcbiAgICAgICAgICBzdGF0ZS52aWV3cyxcbiAgICAgICAgICBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU3dhcCB0aGUgYWN0aXZlIHZpZXcgdG8gdGhlIHRlbXBvcmFyeSB2aWV3XG4gICAgICAgIHNldEFjdGl2ZVZpZXdJZChhY3Rpb24udmlldy5pZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBhY3Rpb24udmlldy5pZCxcbiAgICAgICAgICBhY3RpdmVWaWV3SWQ6IGFjdGlvbi52aWV3LmlkLFxuICAgICAgICAgIHZpZXdzOiBbLi4uZXhpc3RpbmdQZXJtYW5lbnRWaWV3cywgYWN0aW9uLnZpZXddLFxuICAgICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vL1xuICAvLyBVdGlsaXRpZXMgLy9cbiAgLy8vLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFBlcm1pc3Npb25UaXRsZShwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdQcml2YXRlJztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnU2hhcmVkJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnUHVibGljJztcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ1ByaXZhdGUgLSBPbmx5IGF2YWlsYWJsZSB0byB5b3UnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdTaGFyZWQgLSBPbmx5IHZpc2libGUgdG8gdGhvc2Ugd2l0aCBhY2Nlc3MnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdQdWJsaWMgLSBWaXNpYmxlIHRvIGV2ZXJ5b25lJztcbiAgICB9XG4gIH1cblxuICBleHBvcnQgZnVuY3Rpb24gaXNTaGFyZWRWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlldz86IEZ1bGxWaWV3PFUsIFY+LFxuICApOiB2aWV3IGlzIEZ1bGxWaWV3PFUsIFY+ICYgeyBwZXJtaXNzaW9uOiAnc2hhcmVkJzsgc2hhcmVkVXNlcnM6IFVbXSB9IHtcbiAgICByZXR1cm4gdmlldz8ucGVybWlzc2lvbiA9PT0gJ3NoYXJlZCc7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgU2VhcmNoU2VsZWN0VXNlcjxVPiBpdGVtcyBiYWNrIHRvIFVbXSBmb3Igc3RvcmFnZSBpbiBzaGFyZWRVc2Vycy5cbiAgICpcbiAgICogQ2FzdCByZXF1aXJlZCBiZWNhdXNlIFR5cGVTY3JpcHQgY2Fubm90IHByb3ZlIHRoYXQgZGVzdHJ1Y3R1cmluZyBgbmV3YFxuICAgKiBmcm9tIGBVICYgeyBuZXc6IGJvb2xlYW4gfWAgeWllbGRzIGV4YWN0bHkgYFVgIChzcHJlYWQvcmVzdCBkb2Vzbid0XG4gICAqIG5hcnJvdyBpbnRlcnNlY3Rpb24gdHlwZXMpLlxuICAgKlxuICAgKiAtIFN0cmlwcyBgbmV3OiBmYWxzZWAgc28gaXNFcXVhbCgpIGNvbXBhcmlzb25zIHdvcmsgKG9yaWdpbmFsIHVzZXJzIGxhY2sgYG5ld2ApXG4gICAqIC0gUHJlc2VydmVzIGBuZXc6IHRydWVgIHNvIHRoZSBiYWNrZW5kIGtub3dzIHdoaWNoIHVzZXJzIHRvIGNyZWF0ZVxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHRvU2hhcmVkVXNlcnM8VSBleHRlbmRzIFVzZXI+KFxuICAgIHVzZXJzOiBTZWFyY2hTZWxlY3RVc2VyPFU+W10sXG4gICk6IFVbXSB7XG4gICAgcmV0dXJuIHVzZXJzLm1hcCh1c2VyID0+IHtcbiAgICAgIGlmICh1c2VyLm5ldykge1xuICAgICAgICByZXR1cm4gdXNlciBhcyB1bmtub3duIGFzIFU7XG4gICAgICB9XG4gICAgICBjb25zdCB7IG5ldzogX2lzTmV3LCAuLi5yZXN0IH0gPSB1c2VyO1xuICAgICAgcmV0dXJuIHJlc3QgYXMgdW5rbm93biBhcyBVO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
456
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBa0MsTUFBTSxTQUFTLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxXQUFXLEVBRVgsSUFBSSxFQUNKLEdBQUcsRUFDSCxTQUFTLEVBRVQsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxNQUFNLENBQUM7QUFLZCxNQUFNLEtBQVcsUUFBUSxDQTB6QnhCO0FBMXpCRCxXQUFpQixRQUFRO0lBQ1Ysd0JBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHM0QscUJBQVksR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7SUFLekQsd0JBQWUsR0FBRyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQVUsQ0FBQztJQWtLcEUsU0FBZ0IsYUFBYSxDQUFvQyxFQUMvRCxNQUFNLEVBQ04sSUFBSSxFQUNKLFNBQVMsRUFDVCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFNBQVMsRUFDVCxVQUFVLEVBQ1YsUUFBUSxFQUNSLE9BQU8sRUFDUCxlQUFlLEdBQ1U7UUFDekIsTUFBTSxZQUFZLEdBQW9CO1lBQ3BDLEtBQUssRUFBRSxFQUFFO1lBQ1QsWUFBWSxFQUFFLElBQUk7WUFDbEIsZUFBZSxFQUFFLElBQUk7WUFDckIsY0FBYyxFQUFFLENBQUM7WUFDakIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFFBQVEsRUFBRTtnQkFDUixNQUFNLEVBQUUsRUFBRTtnQkFDVixVQUFVLEVBQUUsS0FBSzthQUNsQjtZQUNELEdB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Q0FBQyxVQUEwQjtRQUNqRSxRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLGlDQUFpQyxDQUFDO1lBQzNDLEtBQUssUUFBUTtnQkFDWCxPQUFPLDRDQUE0QyxDQUFDO1lBQ3RELEtBQUssUUFBUTtnQkFDWCxPQUFPLDhCQUE4QixDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBVGUsaUNBQXdCLDJCQVN2QyxDQUFBO0lBRUQsU0FBZ0IsWUFBWSxDQUMxQixJQUFxQjtRQUVyQixPQUFPLElBQUksRUFBRSxVQUFVLEtBQUssUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFKZSxxQkFBWSxlQUkzQixDQUFBO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsU0FBZ0IsYUFBYSxDQUMzQixLQUE0QjtRQUU1QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxJQUFvQixDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQztZQUN0QyxPQUFPLElBQW9CLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBVmUsc0JBQWEsZ0JBVTVCLENBQUE7QUFDSCxDQUFDLEVBMXpCZ0IsUUFBUSxLQUFSLFFBQVEsUUEwekJ4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGdXNlLCB7IEZ1c2VSZXN1bHQsIElGdXNlT3B0aW9ucyB9IGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IHsgZGVib3VuY2UsIGRlZmF1bHRzRGVlcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIGNvbm5lY3RhYmxlLFxuICBDb25uZWN0YWJsZSxcbiAgZnJvbSxcbiAgbWFwLFxuICBtZXJnZVNjYW4sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIHN0YXJ0V2l0aCxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZWVwUGFydGlhbCB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuaW1wb3J0IHsgUml2U2VsZWN0IH0gZnJvbSAnLi4vLi4vaW5wdXQvc2VsZWN0L3N0YXRlJztcbmltcG9ydCB7IEhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Zpc3VhbGl6YXRpb24vaGlnaGxpZ2h0L2hpZ2hsaWdodC5jb21wb25lbnQnO1xuXG5leHBvcnQgbmFtZXNwYWNlIFJpdlZpZXdzIHtcbiAgZXhwb3J0IGNvbnN0IFZpZXdQZXJtaXNzaW9ucyA9IFsncHJpdmF0ZScsICdzaGFyZWQnLCAncHVibGljJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZpZXdQZXJtaXNzaW9uID0gKHR5cGVvZiBWaWV3UGVybWlzc2lvbnMpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IE1lbnVDb250ZXh0cyA9IFsndGFiJywgJ2FsbC12aWV3cycsICdvdmVyZmxvdyddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBNZW51Q29udGV4dCA9ICh0eXBlb2YgTWVudUNvbnRleHRzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCB0eXBlIFVzZXIgPSBSaXZTZWxlY3QuQmFzZU9wdGlvbjtcblxuICBleHBvcnQgY29uc3QgVXNlclNlbGVjdE1vZGVzID0gWydzZWxlY3QnLCAnc2VhcmNoLXNlbGVjdCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBVc2VyU2VsZWN0TW9kZSA9ICh0eXBlb2YgVXNlclNlbGVjdE1vZGVzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCB0eXBlIFNlYXJjaFNlbGVjdFVzZXI8VSBleHRlbmRzIFVzZXI+ID0gVSAmIHsgbmV3OiBib29sZWFuIH07XG5cbiAgZXhwb3J0IHR5cGUgT25BZGRVc2VyPFUgZXh0ZW5kcyBVc2VyPiA9IChcbiAgICBzZWFyY2hUZXh0OiBzdHJpbmcsXG4gICkgPT4gU2VhcmNoU2VsZWN0VXNlcjxVPjtcblxuICBleHBvcnQgdHlwZSBWaWV3PFUgZXh0ZW5kcyBVc2VyPiA9IHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgfSAmIChcbiAgICB8IHtcbiAgICAgICAgcGVybWlzc2lvbjogJ3ByaXZhdGUnIHwgJ3B1YmxpYyc7XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIHBlcm1pc3Npb246ICdzaGFyZWQnO1xuICAgICAgICBzaGFyZWRVc2VyczogVVtdO1xuICAgICAgfVxuICApO1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxWaWV3PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSBWICYge1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBzeXN0ZW06IGJvb2xlYW47XG4gICAgdGl0bGVIaWdobGlnaHRJbmRpY2VzPzogSGlnaGxpZ2h0Q29tcG9uZW50LkhpZ2hsaWdodEluZGljZXNbXTtcbiAgICB0ZW1wb3Jhcnk6IGJvb2xlYW47XG4gIH07XG5cbiAgLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgLy9cbiAgLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBDb3JlU3RhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IHtcbiAgICB2aWV3czogVltdO1xuICAgIGFjdGl2ZVZpZXdJZDogVlsnaWQnXSB8IG51bGw7XG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBWWydpZCddIHwgbnVsbDtcbiAgICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICAgIGVkaXRpbmdWaWV3Q29udGV4dDoge1xuICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICBhdXRvUmVuYW1lOiBib29sZWFuO1xuICAgICAgbWVudUNvbnRleHQ6IE1lbnVDb250ZXh0O1xuICAgIH0gfCBudWxsO1xuICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IHsgaWQ6IFZbJ2lkJ107IG1lbnVDb250ZXh0OiBNZW51Q29udGV4dCB9IHwgbnVsbDtcbiAgICBvdmVyZmxvdzoge1xuICAgICAgc2VhcmNoOiBzdHJpbmc7XG4gICAgICBwaWNrZXJPcGVuOiBib29sZWFuO1xuICAgIH07XG4gICAgYWxsOiB7XG4gICAgICBzZWFyY2g6IHN0cmluZztcbiAgICAgIHByaXZhdGVPcGVuOiBib29sZWFuO1xuICAgICAgc2hhcmVkT3BlbjogYm9vbGVhbjtcbiAgICAgIHB1YmxpY09wZW46IGJvb2xlYW47XG4gICAgfTtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIHVzZXJTZWxlY3RNb2RlOiBVc2VyU2VsZWN0TW9kZTtcbiAgICBvbkFkZFVzZXI/OiBPbkFkZFVzZXI8VT47XG4gICAgbmV3VG9vbHRpcD86IHN0cmluZztcbiAgICBoYXNTeXN0ZW1WaWV3OiBib29sZWFuO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIEZ1bGxTdGF0ZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gQ29yZVN0YXRlPFUsIFY+ICYge1xuICAgIGFsbFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGRpc3BsYXllZFZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIGVuYWJsZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICBhbGxFbmFibGVkVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgYWxsOiB7XG4gICAgICBwcml2YXRlVmlld3M6IEZ1bGxWaWV3PFUsIFY+W107XG4gICAgICBzaGFyZWRWaWV3czogRnVsbFZpZXc8VSwgVj5bXTtcbiAgICAgIHB1YmxpY1ZpZXdzOiBGdWxsVmlldzxVLCBWPltdO1xuICAgIH07XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vL1xuICAvLyBBY3Rpb25zIC8vXG4gIC8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgdHlwZSBBY3Rpb248VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9XG4gICAgfCB7IHR5cGU6ICdsb2FkJyB9XG4gICAgfCB7XG4gICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JztcbiAgICAgICAgaWQ6IFZbJ2lkJ107XG4gICAgICAgIHNvdXJjZT86ICd0YWInIHwgJ21lbnUnIHwgJ292ZXJmbG93JztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnO1xuICAgICAgICBpZDogVlsnaWQnXTtcbiAgICAgICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAgICAgc291cmNlPzogJ21lbnUnIHwgJ2V5ZUljb24nO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnOyB3aWR0aDogbnVtYmVyIH1cbiAgICB8IHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3Blbic7IG9wZW46IGJvb2xlYW4gfVxuICAgIHwgeyB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc7IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIHwgeyB0eXBlOiAndXBkYXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZGVsZXRlVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnZHVwbGljYXRlVmlldyc7IHZpZXc6IFY7IG1lbnVDb250ZXh0OiBNZW51Q29udGV4dCB9XG4gICAgfCB7IHR5cGU6ICdjb3B5TGlua1RvVmlldyc7IHZpZXc6IFYgfVxuICAgIHwgeyB0eXBlOiAnc2V0RWRpdGluZ1ZpZXcnOyBjb250ZXh0OiBDb3JlU3RhdGU8VSwgVj5bJ2VkaXRpbmdWaWV3Q29udGV4dCddIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3NldERlbGV0aW5nVmlldyc7XG4gICAgICAgIGNvbnRleHQ6IENvcmVTdGF0ZTxVLCBWPlsnZGVsZXRpbmdWaWV3Q29udGV4dCddO1xuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJztcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcjtcbiAgICAgICAgbmV3RW5hYmxlZEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNvdXJjZT86ICd0YWJEcmFnJyB8ICdvdmVyZmxvd0RyYWcnO1xuICAgICAgICB2aWV3VGl0bGU/OiBWWyd0aXRsZSddO1xuICAgICAgfVxuICAgIHwgeyB0eXBlOiAnc2V0QWxsVmlld3NUb2dnbGUnOyBwZXJtaXNzaW9uOiBWaWV3UGVybWlzc2lvbjsgb3BlbjogYm9vbGVhbiB9XG4gICAgfCB7IHR5cGU6ICdjcmVhdGVUZW1wb3JhcnlWaWV3JzsgdmlldzogViB9O1xuXG4gIC8vLy8vLy8vLy8vL1xuICAvLyBTb3VyY2UgLy9cbiAgLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgU291cmNlPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSAoKSA9PlxuICAgIHwgVltdXG4gICAgfCBQcm9taXNlPFZbXT47XG4gIGV4cG9ydCB0eXBlIFNhdmU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3czogVltdLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICBleHBvcnQgdHlwZSBEdXBsaWNhdGU8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PiA9IChcbiAgICB2aWV3VG9EdXBsaWNhdGU6IFYsXG4gICkgPT4gViB8IFByb21pc2U8Vj47XG4gIGV4cG9ydCB0eXBlIFVzZXJTb3VyY2U8VSBleHRlbmRzIFVzZXI+ID0gKCkgPT4gVVtdIHwgUHJvbWlzZTxVW10+O1xuICBleHBvcnQgdHlwZSBDb3B5TGluazxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIHZpZXc6IFYsXG4gICkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIGV4cG9ydCB0eXBlIFNldEFjdGl2ZVZpZXdJZDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0gKFxuICAgIGlkOiBWWydpZCddLFxuICApID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIC8vLy8vLy8vLy8vLy9cbiAgLy8gTWFuYWdlciAvL1xuICAvLy8vLy8vLy8vLy8vXG5cbiAgZXhwb3J0IHR5cGUgTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGFjdGlvbnM6IFN1YmplY3Q8QWN0aW9uPFUsIFY+PjtcbiAgICBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PjtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYW5hZ2VyT3B0aW9uczxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+ID0ge1xuICAgIGluaXRpYWxTdGF0ZT86IERlZXBQYXJ0aWFsPENvcmVTdGF0ZTxVLCBWPj47XG4gICAgZnVzZU9wdGlvbnM/OiBJRnVzZU9wdGlvbnM8Vj47XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgQ3JlYXRlTWFuYWdlcklucHV0PFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4gPSB7XG4gICAgc291cmNlOiBTb3VyY2U8VSwgVj47XG4gICAgc2F2ZTogU2F2ZTxVLCBWPjtcbiAgICBkdXBsaWNhdGU6IER1cGxpY2F0ZTxVLCBWPjtcbiAgICB1c2VyU291cmNlOiBVc2VyU291cmNlPFU+O1xuICAgIHVzZXJTZWxlY3RNb2RlPzogVXNlclNlbGVjdE1vZGU7XG4gICAgb25BZGRVc2VyPzogT25BZGRVc2VyPFU+O1xuICAgIG5ld1Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgY29weUxpbms6IENvcHlMaW5rPFUsIFY+O1xuICAgIHNldEFjdGl2ZVZpZXdJZDogU2V0QWN0aXZlVmlld0lkPFUsIFY+O1xuICAgIG9wdGlvbnM/OiBNYW5hZ2VyT3B0aW9uczxVLCBWPjtcbiAgfTtcblxuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFuYWdlcjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KHtcbiAgICBzb3VyY2UsXG4gICAgc2F2ZSxcbiAgICBkdXBsaWNhdGUsXG4gICAgdXNlclNvdXJjZSxcbiAgICB1c2VyU2VsZWN0TW9kZSxcbiAgICBvbkFkZFVzZXIsXG4gICAgbmV3VG9vbHRpcCxcbiAgICBjb3B5TGluayxcbiAgICBvcHRpb25zLFxuICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgfTogQ3JlYXRlTWFuYWdlcklucHV0PFUsIFY+KTogTWFuYWdlcjxVLCBWPiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXRlOiBDb3JlU3RhdGU8VSwgVj4gPSB7XG4gICAgICB2aWV3czogW10sXG4gICAgICBhY3RpdmVWaWV3SWQ6IG51bGwsXG4gICAgICB0ZW1wb3JhcnlWaWV3SWQ6IG51bGwsXG4gICAgICBjb250YWluZXJXaWR0aDogMCxcbiAgICAgIGVkaXRpbmdWaWV3Q29udGV4dDogbnVsbCxcbiAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IG51bGwsXG4gICAgICBvdmVyZmxvdzoge1xuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBwaWNrZXJPcGVuOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBhbGw6IHtcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgcHJpdmF0ZU9wZW46IHRydWUsXG4gICAgICAgIHNoYXJlZE9wZW46IHRydWUsXG4gICAgICAgIHB1YmxpY09wZW46IHRydWUsXG4gICAgICB9LFxuICAgICAgdXNlclNvdXJjZSxcbiAgICAgIHVzZXJTZWxlY3RNb2RlOiB1c2VyU2VsZWN0TW9kZSA/PyAnc2VsZWN0JyxcbiAgICAgIG9uQWRkVXNlcixcbiAgICAgIG5ld1Rvb2x0aXAsXG4gICAgICBoYXNTeXN0ZW1WaWV3OiB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBkZWZhdWx0ZWRJbml0aWFsU3RhdGU6IENvcmVTdGF0ZTxVLCBWPiA9IGRlZmF1bHRzRGVlcChcbiAgICAgIHt9LFxuICAgICAgb3B0aW9ucz8uaW5pdGlhbFN0YXRlLFxuICAgICAgZGVmYXVsdFN0YXRlLFxuICAgICk7XG5cbiAgICBjb25zdCBhY3Rpb25zOiBTdWJqZWN0PEFjdGlvbjxVLCBWPj4gPSBuZXcgU3ViamVjdCgpO1xuICAgIGNvbnN0IGNvcmVTdGF0ZTogT2JzZXJ2YWJsZTxDb3JlU3RhdGU8VSwgVj4+ID0gYWN0aW9ucy5waXBlKFxuICAgICAgbWVyZ2VTY2FuKFxuICAgICAgICAoc3RhdGUsIGFjdGlvbikgPT5cbiAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgcmVkdWNlKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICAgIGRlYm91bmNlKHNhdmUsIDIwMCksXG4gICAgICAgICAgICAgIGR1cGxpY2F0ZSxcbiAgICAgICAgICAgICAgY29weUxpbmssXG4gICAgICAgICAgICAgIHNldEFjdGl2ZVZpZXdJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZGVmYXVsdGVkSW5pdGlhbFN0YXRlLFxuICAgICAgICAxLFxuICAgICAgKSxcbiAgICAgIHN0YXJ0V2l0aChkZWZhdWx0ZWRJbml0aWFsU3RhdGUpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdGF0ZTogQ29ubmVjdGFibGU8RnVsbFN0YXRlPFUsIFY+PiA9IGNvbm5lY3RhYmxlKFxuICAgICAgY29yZVN0YXRlLnBpcGUoXG4gICAgICAgIG1hcChzID0+IHtcbiAgICAgICAgICBjb25zdCBlbmFibGVkTm9ybWFsVmlld3M6IFZbXSA9IGdldEVuYWJsZWRWaWV3cyhzLnZpZXdzKTtcbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3OiBWIHwgdW5kZWZpbmVkID0gZW5hYmxlZE5vcm1hbFZpZXdzLmZpbmQoXG4gICAgICAgICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IHMuYWN0aXZlVmlld0lkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgLy8gSWYgZm9yIHNvbWUgcmVhc29uIHRoZSBhY3RpdmUgdmlldyBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQsIHdlJ2xsXG4gICAgICAgICAgLy8gZGVmYXVsdCB0byBtYWtpbmcgdGhlIGZpcnN0IGVuYWJsZWQgdmlldyBhY3RpdmUgaW5zdGVhZC5cbiAgICAgICAgICBjb25zdCBhY3RpdmVWaWV3SWQ6IFZbJ2lkJ10gfCBudWxsID0gYWN0aXZlVmlld1xuICAgICAgICAgICAgPyBhY3RpdmVWaWV3LmlkXG4gICAgICAgICAgICA6IGVuYWJsZWROb3JtYWxWaWV3cy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IGVuYWJsZWROb3JtYWxWaWV3c1swXS5pZFxuICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgICAgY29uc3QgYWxsVmlld3M6IEZ1bGxWaWV3PFUsIFY+W10gPSBzLnZpZXdzLm1hcCgodmlldywgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNTeXN0ZW1WaWV3OiBib29sZWFuID0gcy5oYXNTeXN0ZW1WaWV3ICYmIGkgPT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc1RlbXBvcmFyeVZpZXc6IGJvb2xlYW4gPSBzLnRlbXBvcmFyeVZpZXdJZCA9PT0gdmlldy5pZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnZpZXcsXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHZpZXcuZW5hYmxlZCB8fCBpc1N5c3RlbVZpZXcgfHwgaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgICBhY3RpdmU6IGFjdGl2ZVZpZXdJZCA9PT0gdmlldy5pZCxcbiAgICAgICAgICAgICAgc3lzdGVtOiBpc1N5c3RlbVZpZXcsXG4gICAgICAgICAgICAgIHRlbXBvcmFyeTogaXNUZW1wb3JhcnlWaWV3LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IGFsbEVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyhhbGxWaWV3cyk7XG5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRWaWV3cyA9IGNhbGN1bGF0ZURpc3BsYXllZFZpZXdzKFxuICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgY2FsY3VsYXRlT3ZlcmZsb3dWaWV3SW5kZXgocyksXG4gICAgICAgICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICAgICAgICBzLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZFZpZXdzID0gcy5vdmVyZmxvdy5zZWFyY2hcbiAgICAgICAgICAgID8gc2VhcmNoVmlld3MoXG4gICAgICAgICAgICAgICAgYWxsRW5hYmxlZFZpZXdzLFxuICAgICAgICAgICAgICAgIHMub3ZlcmZsb3cuc2VhcmNoLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LmZ1c2VPcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGFsbEVuYWJsZWRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IGFsbFBlcm1hbmVudFZpZXdzID0gYWxsVmlld3MuZmlsdGVyKHZpZXcgPT4gIXZpZXcudGVtcG9yYXJ5KTtcbiAgICAgICAgICBjb25zdCBhbGxWaWV3c0ZpbHRlcmVkID0gcy5hbGwuc2VhcmNoXG4gICAgICAgICAgICA/IHNlYXJjaFZpZXdzKGFsbFBlcm1hbmVudFZpZXdzLCBzLmFsbC5zZWFyY2gsIG9wdGlvbnM/LmZ1c2VPcHRpb25zKVxuICAgICAgICAgICAgOiBhbGxQZXJtYW5lbnRWaWV3cztcblxuICAgICAgICAgIGNvbnN0IHNlYXJjaGluZ0FsbFZpZXdzID0gISFzLmFsbC5zZWFyY2g7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucyxcbiAgICAgICAgICAgIGFsbFZpZXdzLFxuICAgICAgICAgICAgZGlzcGxheWVkVmlld3MsXG4gICAgICAgICAgICBlbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGxFbmFibGVkVmlld3MsXG4gICAgICAgICAgICBhbGw6IHtcbiAgICAgICAgICAgICAgLi4ucy5hbGwsXG4gICAgICAgICAgICAgIHByaXZhdGVPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wcml2YXRlT3BlbixcbiAgICAgICAgICAgICAgcHJpdmF0ZVZpZXdzOiB2aWV3c0J5UGVybWlzc2lvbihhbGxWaWV3c0ZpbHRlcmVkLCAncHJpdmF0ZScpLFxuICAgICAgICAgICAgICBzaGFyZWRPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5zaGFyZWRPcGVuLFxuICAgICAgICAgICAgICBzaGFyZWRWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3NoYXJlZCcpLFxuICAgICAgICAgICAgICBwdWJsaWNPcGVuOiBzZWFyY2hpbmdBbGxWaWV3cyB8fCBzLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgICAgICBwdWJsaWNWaWV3czogdmlld3NCeVBlcm1pc3Npb24oYWxsVmlld3NGaWx0ZXJlZCwgJ3B1YmxpYycpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aXZlVmlld0lkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgY29ubmVjdG9yOiAoKSA9PiBuZXcgUmVwbGF5U3ViamVjdCgxKSxcbiAgICAgICAgcmVzZXRPbkRpc2Nvbm5lY3Q6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuICAgIHN0YXRlLmNvbm5lY3QoKTtcblxuICAgIC8vIExvYWQgdGhlIHZpZXdzIGltbWVkaWF0ZWx5XG4gICAgYWN0aW9ucy5uZXh0KHsgdHlwZTogJ2xvYWQnIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucywgc3RhdGUgfTtcbiAgfVxuXG4gIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgLy8gU3RhdGUgcmVkdWNlciAod2l0aCBoZWxwZXJzKSAvL1xuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4odmlld3M6IFZbXSk6IFZbXTtcbiAgZnVuY3Rpb24gZ2V0RW5hYmxlZFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIoKHYsIGkpID0+IHYuZW5hYmxlZCB8fCB2LnN5c3RlbSB8fCB2LnRlbXBvcmFyeSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNsYXRlcyBhbiBpbmRleCBpbiB0aGUgZW5hYmxlZCB2aWV3cyBsaXN0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4XG4gICAqIGluIHRoZSBmdWxsIHZpZXdzIGxpc3QuIFRoaXMgaXMgdXNlZCB0byByZXNvbHZlIFVJIGluZGljZXMgKHdoaWNoIG9ubHlcbiAgICogc2hvdyBlbmFibGVkIHZpZXdzKSB0byBzdGF0ZS52aWV3cyBpbmRpY2VzICh3aGljaCBpbmNsdWRlcyBhbGwgdmlld3MpLlxuICAgKi9cbiAgZnVuY3Rpb24gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXg8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGVuYWJsZWRJbmRleDogbnVtYmVyLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGVuYWJsZWRWaWV3cyA9IGdldEVuYWJsZWRWaWV3cyh2aWV3cyk7XG5cbiAgICBjb25zdCB0YXJnZXRWaWV3ID0gZW5hYmxlZFZpZXdzW2VuYWJsZWRJbmRleF07XG4gICAgaWYgKCF0YXJnZXRWaWV3KSByZXR1cm4gZW5hYmxlZEluZGV4O1xuXG4gICAgY29uc3Qgdmlld0luZGV4ID0gdmlld3MuZmluZEluZGV4KHZpZXcgPT4gdmlldy5pZCA9PT0gdGFyZ2V0Vmlldy5pZCk7XG4gICAgcmV0dXJuIHZpZXdJbmRleCA9PT0gLTEgPyBlbmFibGVkSW5kZXggOiB2aWV3SW5kZXg7XG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVPdmVyZmxvd1ZpZXdJbmRleDxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IG51bWJlciB7XG4gICAgY29uc3QgZW5hYmxlZFZpZXdzID0gZ2V0RW5hYmxlZFZpZXdzKHN0YXRlLnZpZXdzKTtcblxuICAgIC8vIFRhYnMgaGF2ZSBhIG1pbmltdW0gd2lkdGggb2YgOTJweC5cbiAgICBjb25zdCBwb3NzaWJsZVNsb3RDb3VudCA9IE1hdGguZmxvb3Ioc3RhdGUuY29udGFpbmVyV2lkdGggLyA5Mik7XG5cbiAgICAvLyBUaGUgXCJhbGwgdmlld3NcIiBzaWRlYmFyIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QuXG4gICAgY29uc3QgYXZhaWxhYmxlU2xvdENvdW50ID0gcG9zc2libGVTbG90Q291bnQgLSAxO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIHRvbyBtYW55IHRhYnMsIHRoZSBcIk4gbW9yZVwiIHRyaWdnZXIgdGFrZXMgdXAgb25lIHNsb3QgYXMgd2VsbC5cbiAgICAvLyBCdXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgXCIxIG1vcmVcIiBjYXNlLCBzbyB3ZSBvbmx5IHVzZSBhIHNsb3QgZm9yIFwiTiBtb3JlXCIgaWYgTiAhPSAxLlxuICAgIGlmIChhdmFpbGFibGVTbG90Q291bnQgPj0gZW5hYmxlZFZpZXdzLmxlbmd0aCkgcmV0dXJuIGVuYWJsZWRWaWV3cy5sZW5ndGg7XG4gICAgZWxzZSByZXR1cm4gYXZhaWxhYmxlU2xvdENvdW50IC0gMTsgLy8gdGhlIFwiTiBtb3JlXCIgdXNlcyB1cCBhIHNsb3QuXG4gIH1cblxuICBmdW5jdGlvbiBjYWxjdWxhdGVEaXNwbGF5ZWRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIGZ1bGxWaWV3czogRnVsbFZpZXc8VSwgVj5bXSxcbiAgICBvdmVyZmxvd1ZpZXdJbmRleDogbnVtYmVyLFxuICAgIGFjdGl2ZVZpZXdJZDogQ29yZVN0YXRlPFUsIFY+WydhY3RpdmVWaWV3SWQnXSxcbiAgICB0ZW1wb3JhcnlWaWV3SWQ6IENvcmVTdGF0ZTxVLCBWPlsndGVtcG9yYXJ5Vmlld0lkJ10sXG4gICk6IEZ1bGxWaWV3PFUsIFY+W10ge1xuICAgIGNvbnN0IGRpc3BsYXllZFZpZXdzID0gZnVsbFZpZXdzLnNsaWNlKDAsIG92ZXJmbG93Vmlld0luZGV4KTtcblxuICAgIGNvbnN0IHZpZXdzVG9BbHdheXNEaXNwbGF5OiBGdWxsVmlldzxVLCBWPltdID0gW107XG5cbiAgICAvLyBUaGUgYWN0aXZlIHZpZXcgc2hvdWxkIGFsd2F5cyBiZSBkaXNwbGF5ZWQgaWYgaXQgZXhpc3RzXG4gICAgY29uc3QgYWN0aXZlVmlld0luRGlzcGxheSA9IGRpc3BsYXllZFZpZXdzLnNvbWUoXG4gICAgICB2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCxcbiAgICApO1xuICAgIGlmIChhY3RpdmVWaWV3SWQgIT09IG51bGwgJiYgIWFjdGl2ZVZpZXdJbkRpc3BsYXkpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBmdWxsVmlld3MuZmluZCh2aWV3ID0+IHZpZXcuaWQgPT09IGFjdGl2ZVZpZXdJZCk7XG4gICAgICBpZiAoYWN0aXZlVmlldyAmJiBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZpZXdzVG9BbHdheXNEaXNwbGF5LnB1c2goYWN0aXZlVmlldyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2Ugc2hvdWxkIHRyeSB0byBkaXNwbGF5IHRoZSB0ZW1wb3JhcnkgdmlldyBpZiBpdCBleGlzdHNcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SW5EaXNwbGF5ID0gZGlzcGxheWVkVmlld3Muc29tZShcbiAgICAgIHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkLFxuICAgICk7XG4gICAgaWYgKFxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9PSBudWxsICYmXG4gICAgICAhdGVtcG9yYXJ5Vmlld0luRGlzcGxheSAmJlxuICAgICAgdGVtcG9yYXJ5Vmlld0lkICE9IGFjdGl2ZVZpZXdJZFxuICAgICkge1xuICAgICAgY29uc3QgdGVtcG9yYXJ5VmlldyA9IGZ1bGxWaWV3cy5maW5kKHZpZXcgPT4gdmlldy5pZCA9PT0gdGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGVtcG9yYXJ5VmlldyAmJlxuICAgICAgICBkaXNwbGF5ZWRWaWV3cy5sZW5ndGggPiB2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGhcbiAgICAgICkge1xuICAgICAgICB2aWV3c1RvQWx3YXlzRGlzcGxheS5wdXNoKHRlbXBvcmFyeVZpZXcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2aWV3c1RvQWx3YXlzRGlzcGxheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBudW1WaWV3c1RvUmVwbGFjZTogbnVtYmVyID0gdmlld3NUb0Fsd2F5c0Rpc3BsYXkubGVuZ3RoO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZGlzcGxheWVkVmlld3Muc2xpY2UoMCwgLTEgKiBudW1WaWV3c1RvUmVwbGFjZSksXG4gICAgICAgIC4uLnZpZXdzVG9BbHdheXNEaXNwbGF5LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlzcGxheWVkVmlld3M7XG4gIH1cblxuICBmdW5jdGlvbiB2aWV3c0J5UGVybWlzc2lvbjxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBGdWxsVmlldzxVLCBWPltdLFxuICAgIHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uLFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICByZXR1cm4gc29ydEJ5KFxuICAgICAgdmlld3MuZmlsdGVyKHZpZXcgPT4gdmlldy5wZXJtaXNzaW9uID09PSBwZXJtaXNzaW9uKSxcbiAgICAgIFt2ID0+ICF2LnN5c3RlbSwgJ3RpdGxlJ10sXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlYXJjaFZpZXdzPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgdmlld3M6IEZ1bGxWaWV3PFUsIFY+W10sXG4gICAgcXVlcnk6IHN0cmluZyxcbiAgICBvcHRpb25zPzogSUZ1c2VPcHRpb25zPFY+LFxuICApOiBGdWxsVmlldzxVLCBWPltdIHtcbiAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2Uodmlld3MsIHtcbiAgICAgIHRocmVzaG9sZDogMC4yLFxuICAgICAga2V5czogWyd0aXRsZSddLFxuICAgICAgaW5jbHVkZU1hdGNoZXM6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbWF0Y2hlZE9wdGlvbnM6IEZ1c2VSZXN1bHQ8RnVsbFZpZXc8VSwgVj4+W10gPSBmdXNlLnNlYXJjaChxdWVyeSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlZE9wdGlvbnMubWFwKHJlc3VsdCA9PiAoe1xuICAgICAgLi4ucmVzdWx0Lml0ZW0sXG4gICAgICB0aXRsZUhpZ2hsaWdodEluZGljZXM6IFtcbiAgICAgICAgLi4uKHJlc3VsdC5tYXRjaGVzPy5maW5kKG1hdGNoID0+IG1hdGNoLmtleSA9PT0gJ3RpdGxlJyk/LmluZGljZXMgPz9cbiAgICAgICAgICBbXSksXG4gICAgICBdLFxuICAgIH0pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE5leHRCZXN0QWN0aXZlVmlldzxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICk6IFZbJ2lkJ10gfCBudWxsIHtcbiAgICBjb25zdCBlbmFibGVkVmlld3MgPSBnZXRFbmFibGVkVmlld3Moc3RhdGUudmlld3MpO1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVWaWV3SW5kZXggPSBlbmFibGVkVmlld3MuZmluZEluZGV4KFxuICAgICAgdmlldyA9PiB2aWV3LmlkID09PSBzdGF0ZS5hY3RpdmVWaWV3SWQsXG4gICAgKTtcblxuICAgIGlmIChlbmFibGVkVmlld3MubGVuZ3RoID09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoY3VycmVudEFjdGl2ZVZpZXdJbmRleCA9PT0gLTEpIHJldHVybiBlbmFibGVkVmlld3NbMF0uaWQ7XG4gICAgcmV0dXJuIChcbiAgICAgIGVuYWJsZWRWaWV3c1tjdXJyZW50QWN0aXZlVmlld0luZGV4ICsgMV0/LmlkID8/XG4gICAgICBlbmFibGVkVmlld3NbY3VycmVudEFjdGl2ZVZpZXdJbmRleCAtIDFdPy5pZCA/P1xuICAgICAgZW5hYmxlZFZpZXdzWzBdLmlkXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlbGV0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGlkOiBWWydpZCddLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIGNvbnN0IGFjdGl2ZVZpZXdJZCA9XG4gICAgICBzdGF0ZS5hY3RpdmVWaWV3SWQgPT09IGlkXG4gICAgICAgID8gZ2V0TmV4dEJlc3RBY3RpdmVWaWV3KHN0YXRlKVxuICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZDtcbiAgICBjb25zdCB0ZW1wb3JhcnlWaWV3SWQgPVxuICAgICAgc3RhdGUudGVtcG9yYXJ5Vmlld0lkID09PSBpZCA/IG51bGwgOiBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQ7XG4gICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9PSBpZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgdmlld3MsXG4gICAgICBhY3RpdmVWaWV3SWQsXG4gICAgICB0ZW1wb3JhcnlWaWV3SWQsXG4gICAgICBkZWxldGluZ1ZpZXdDb250ZXh0OiBudWxsLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBzZXRFbmFibGVkPFUgZXh0ZW5kcyBVc2VyLCBWIGV4dGVuZHMgVmlldzxVPj4oXG4gICAgc3RhdGU6IENvcmVTdGF0ZTxVLCBWPixcbiAgICBpZDogVlsnaWQnXSxcbiAgICBlbmFibGVkOiBib29sZWFuLFxuICApOiBDb3JlU3RhdGU8VSwgVj4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdzOiBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICB2aWV3LmlkID09PSBpZCA/IHsgLi4udmlldywgZW5hYmxlZCB9IDogdmlldyxcbiAgICAgICksXG4gICAgICBhY3RpdmVWaWV3SWQ6XG4gICAgICAgICFlbmFibGVkICYmIHN0YXRlLmFjdGl2ZVZpZXdJZCA9PT0gaWRcbiAgICAgICAgICA/IGdldE5leHRCZXN0QWN0aXZlVmlldyhzdGF0ZSlcbiAgICAgICAgICA6IHN0YXRlLmFjdGl2ZVZpZXdJZCxcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd2l0aER1cGxpY2F0ZVZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3czogVltdLFxuICAgIGR1cGxpY2F0ZWRWaWV3OiBWLFxuICAgIG5ld1ZpZXc6IFYsXG4gICk6IFZbXSB7XG4gICAgY29uc3Qgc291cmNlSW5kZXggPSB2aWV3cy5maW5kSW5kZXgodmlldyA9PiB2aWV3LmlkID09PSBkdXBsaWNhdGVkVmlldy5pZCk7XG4gICAgaWYgKHNvdXJjZUluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtuZXdWaWV3LCAuLi52aWV3c107XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKDAsIHNvdXJjZUluZGV4ICsgMSksXG4gICAgICAgIG5ld1ZpZXcsXG4gICAgICAgIC4uLnZpZXdzLnNsaWNlKHNvdXJjZUluZGV4ICsgMSksXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHZpZXdPcmRlckNoYW5nZTxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHN0YXRlOiBDb3JlU3RhdGU8VSwgVj4sXG4gICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgICBuZXdFbmFibGVkSW5kZXg6IG51bWJlcixcbiAgKTogeyBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+OyBzaG91bGRTYXZlOiBib29sZWFuIH0ge1xuICAgIGlmIChcbiAgICAgIHN0YXRlLmhhc1N5c3RlbVZpZXcgJiZcbiAgICAgIChwcmV2aW91c0VuYWJsZWRJbmRleCA9PT0gMCB8fCBuZXdFbmFibGVkSW5kZXggPT09IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4geyBzdGF0ZSwgc2hvdWxkU2F2ZTogZmFsc2UgfTsgLy8gS2VlcCBzeXN0ZW0gdmlldyAoaW5kZXggMCkgaW4gcGxhY2VcbiAgICB9XG5cbiAgICBjb25zdCBhY3R1YWxQcmV2aW91c0luZGV4ID0gbWFwRW5hYmxlZEluZGV4VG9WaWV3SW5kZXgoXG4gICAgICBzdGF0ZS52aWV3cyxcbiAgICAgIHByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICk7XG4gICAgY29uc3QgYWN0dWFsTmV3SW5kZXggPSBtYXBFbmFibGVkSW5kZXhUb1ZpZXdJbmRleChcbiAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgbmV3RW5hYmxlZEluZGV4LFxuICAgICk7XG5cbiAgICBjb25zdCBpdGVtID0gc3RhdGUudmlld3NbYWN0dWFsUHJldmlvdXNJbmRleF07XG4gICAgY29uc3Qgd2l0aG91dEl0ZW0gPSBzdGF0ZS52aWV3cy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGFjdHVhbFByZXZpb3VzSW5kZXgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlOiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB2aWV3czogW1xuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKDAsIGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgICBpdGVtLFxuICAgICAgICAgIC4uLndpdGhvdXRJdGVtLnNsaWNlKGFjdHVhbE5ld0luZGV4KSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBzaG91bGRTYXZlOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBnZXRQZXJtYW5lbnRWaWV3czxVIGV4dGVuZHMgVXNlciwgViBleHRlbmRzIFZpZXc8VT4+KFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApOiBWW10ge1xuICAgIHJldHVybiB2aWV3cy5maWx0ZXIodmlldyA9PiB2aWV3LmlkICE9IHRlbXBvcmFyeVZpZXdJZCk7XG4gIH1cblxuICBmdW5jdGlvbiBzYXZlUGVybWFuZW50Vmlld3M8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzYXZlOiBTYXZlPFUsIFY+LFxuICAgIHZpZXdzOiBWW10sXG4gICAgdGVtcG9yYXJ5Vmlld0lkOiBDb3JlU3RhdGU8VSwgVj5bJ3RlbXBvcmFyeVZpZXdJZCddLFxuICApIHtcbiAgICBjb25zdCBwZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKHZpZXdzLCB0ZW1wb3JhcnlWaWV3SWQpO1xuXG4gICAgc2F2ZShwZXJtYW5lbnRWaWV3cyk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWR1Y2U8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICBzdGF0ZTogQ29yZVN0YXRlPFUsIFY+LFxuICAgIGFjdGlvbjogQWN0aW9uPFUsIFY+LFxuICAgIHNvdXJjZTogU291cmNlPFUsIFY+LFxuICAgIHNhdmU6IFNhdmU8VSwgVj4sXG4gICAgZHVwbGljYXRlOiBEdXBsaWNhdGU8VSwgVj4sXG4gICAgY29weUxpbms6IENvcHlMaW5rPFUsIFY+LFxuICAgIHNldEFjdGl2ZVZpZXdJZDogU2V0QWN0aXZlVmlld0lkPFUsIFY+LFxuICApOiBQcm9taXNlPENvcmVTdGF0ZTxVLCBWPj4ge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2xvYWQnOlxuICAgICAgICBjb25zdCB2aWV3cyA9IGF3YWl0IHNvdXJjZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHZpZXdzLFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXRBY3RpdmVWaWV3Jzoge1xuICAgICAgICBjb25zdCBhY3RpdmVWaWV3ID0gc3RhdGUudmlld3MuZmluZCh2ID0+IHYuaWQgPT09IGFjdGlvbi5pZCk7XG4gICAgICAgIGNvbnN0IHZpZXdzID1cbiAgICAgICAgICBhY3RpdmVWaWV3ICYmICFhY3RpdmVWaWV3LmVuYWJsZWRcbiAgICAgICAgICAgID8gc3RhdGUudmlld3MubWFwKHZpZXcgPT5cbiAgICAgICAgICAgICAgICB2aWV3LmlkID09PSBhY3Rpb24uaWQgPyB7IC4uLnZpZXcsIGVuYWJsZWQ6IHRydWUgfSA6IHZpZXcsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogc3RhdGUudmlld3M7XG4gICAgICAgIC8vIElmIGVuYWJsaW5nIHRoZSB2aWV3IGNoYW5nZWQgdGhlIHZpZXdzLCB3ZSBuZWVkIHRvIHNhdmUuXG4gICAgICAgIGlmICh2aWV3cyAhPT0gc3RhdGUudmlld3MpIHtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm90aWZ5IHRoZSBjYWxsZXIgdGhhdCB0aGUgYWN0aXZlIHZpZXcgaGFzIGNoYW5nZWRcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi5pZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBhY3Rpb24uaWQsXG4gICAgICAgICAgdmlld3MsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiAnJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdzZXRFbmFibGVkJzoge1xuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHNldEVuYWJsZWQoc3RhdGUsIGFjdGlvbi5pZCwgYWN0aW9uLmVuYWJsZWQpO1xuICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgbmV3U3RhdGUudmlld3MsIG5ld1N0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0Q29udGFpbmVyV2lkdGgnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbnRhaW5lcldpZHRoOiBhY3Rpb24ud2lkdGgsXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldE92ZXJmbG93UGlja2VyT3Blbic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgcGlja2VyT3BlbjogYWN0aW9uLm9wZW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgb3ZlcmZsb3c6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLm92ZXJmbG93LFxuICAgICAgICAgICAgc2VhcmNoOiBhY3Rpb24ucXVlcnksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NTZWFyY2hRdWVyeSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgYWxsOiB7XG4gICAgICAgICAgICAuLi5zdGF0ZS5hbGwsXG4gICAgICAgICAgICBzZWFyY2g6IGFjdGlvbi5xdWVyeSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICd1cGRhdGVWaWV3Jzoge1xuICAgICAgICBpZiAoYWN0aW9uLnZpZXcuaWQgIT0gc3RhdGUudGVtcG9yYXJ5Vmlld0lkKSB7XG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyBhY3Rpb24udmlldyA6IHZpZXcsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzYXZlUGVybWFuZW50Vmlld3Moc2F2ZSwgdmlld3MsIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXBkYXRpbmcgYSB0ZW1wb3JhcnkgdmlldyBzYXZlcyB0aGUgdmlldyBhbmQgbWFrZXMgaXQgcGVybWFuZW50XG4gICAgICAgICAgY29uc3QgdGVtcG9yYXJ5Vmlld1RvU2F2ZSA9IGF3YWl0IGR1cGxpY2F0ZSh7IC4uLmFjdGlvbi52aWV3IH0pO1xuXG4gICAgICAgICAgY29uc3Qgdmlld3MgPSBzdGF0ZS52aWV3cy5tYXAodmlldyA9PlxuICAgICAgICAgICAgdmlldy5pZCA9PT0gYWN0aW9uLnZpZXcuaWQgPyB0ZW1wb3JhcnlWaWV3VG9TYXZlIDogdmlldyxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIHZpZXdzLCBudWxsKTtcbiAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHZpZXcgd2UganVzdCBzYXZlZCBpcyB0aGUgYWN0aXZlIHZpZXdcbiAgICAgICAgICBzZXRBY3RpdmVWaWV3SWQodGVtcG9yYXJ5Vmlld1RvU2F2ZS5pZCk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgdmlld3M6IHZpZXdzLFxuICAgICAgICAgICAgYWN0aXZlVmlld0lkOiB0ZW1wb3JhcnlWaWV3VG9TYXZlLmlkLFxuICAgICAgICAgICAgdGVtcG9yYXJ5Vmlld0lkOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSAnZGVsZXRlVmlldyc6IHtcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSBkZWxldGVWaWV3KHN0YXRlLCBhY3Rpb24udmlldy5pZCk7XG4gICAgICAgIHNhdmVQZXJtYW5lbnRWaWV3cyhzYXZlLCBuZXdTdGF0ZS52aWV3cywgc3RhdGUudGVtcG9yYXJ5Vmlld0lkKTtcbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdkdXBsaWNhdGVWaWV3Jzoge1xuICAgICAgICBjb25zdCBuZXdWaWV3ID0gYXdhaXQgZHVwbGljYXRlKHsgLi4uYWN0aW9uLnZpZXcgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgdmlld3M6IHdpdGhEdXBsaWNhdGVWaWV3KHN0YXRlLnZpZXdzLCBhY3Rpb24udmlldywgbmV3VmlldyksXG4gICAgICAgICAgZWRpdGluZ1ZpZXdDb250ZXh0OiB7XG4gICAgICAgICAgICBpZDogbmV3Vmlldy5pZCxcbiAgICAgICAgICAgIGF1dG9SZW5hbWU6IHRydWUsXG4gICAgICAgICAgICBtZW51Q29udGV4dDogYWN0aW9uLm1lbnVDb250ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWN0aXZlVmlld0lkOiBuZXdWaWV3LmlkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlICdjb3B5TGlua1RvVmlldyc6XG4gICAgICAgIGF3YWl0IGNvcHlMaW5rKGFjdGlvbi52aWV3KTtcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjYXNlICd2aWV3T3JkZXJDaGFuZ2UnOiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGU6IG5ld1N0YXRlLCBzaG91bGRTYXZlIH0gPSB2aWV3T3JkZXJDaGFuZ2UoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgYWN0aW9uLnByZXZpb3VzRW5hYmxlZEluZGV4LFxuICAgICAgICAgIGFjdGlvbi5uZXdFbmFibGVkSW5kZXgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzaG91bGRTYXZlKSB7XG4gICAgICAgICAgc2F2ZVBlcm1hbmVudFZpZXdzKHNhdmUsIG5ld1N0YXRlLnZpZXdzLCBzdGF0ZS50ZW1wb3JhcnlWaWV3SWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnc2V0QWxsVmlld3NUb2dnbGUnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGFsbDoge1xuICAgICAgICAgICAgLi4uc3RhdGUuYWxsLFxuICAgICAgICAgICAgcHJpdmF0ZU9wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHJpdmF0ZSdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwucHJpdmF0ZU9wZW4sXG4gICAgICAgICAgICBzaGFyZWRPcGVuOlxuICAgICAgICAgICAgICBhY3Rpb24ucGVybWlzc2lvbiA9PT0gJ3NoYXJlZCdcbiAgICAgICAgICAgICAgICA/IGFjdGlvbi5vcGVuXG4gICAgICAgICAgICAgICAgOiBzdGF0ZS5hbGwuc2hhcmVkT3BlbixcbiAgICAgICAgICAgIHB1YmxpY09wZW46XG4gICAgICAgICAgICAgIGFjdGlvbi5wZXJtaXNzaW9uID09PSAncHVibGljJ1xuICAgICAgICAgICAgICAgID8gYWN0aW9uLm9wZW5cbiAgICAgICAgICAgICAgICA6IHN0YXRlLmFsbC5wdWJsaWNPcGVuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgIGNhc2UgJ3NldEVkaXRpbmdWaWV3JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdzZXREZWxldGluZ1ZpZXcnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQ6IGFjdGlvbi5jb250ZXh0LFxuICAgICAgICB9O1xuXG4gICAgICBjYXNlICdjcmVhdGVUZW1wb3JhcnlWaWV3JzpcbiAgICAgICAgY29uc3QgZXhpc3RpbmdQZXJtYW5lbnRWaWV3cyA9IGdldFBlcm1hbmVudFZpZXdzKFxuICAgICAgICAgIHN0YXRlLnZpZXdzLFxuICAgICAgICAgIHN0YXRlLnRlbXBvcmFyeVZpZXdJZCxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTd2FwIHRoZSBhY3RpdmUgdmlldyB0byB0aGUgdGVtcG9yYXJ5IHZpZXdcbiAgICAgICAgc2V0QWN0aXZlVmlld0lkKGFjdGlvbi52aWV3LmlkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICB0ZW1wb3JhcnlWaWV3SWQ6IGFjdGlvbi52aWV3LmlkLFxuICAgICAgICAgIGFjdGl2ZVZpZXdJZDogYWN0aW9uLnZpZXcuaWQsXG4gICAgICAgICAgdmlld3M6IFsuLi5leGlzdGluZ1Blcm1hbmVudFZpZXdzLCBhY3Rpb24udmlld10sXG4gICAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8vLy8vLy8vLy8vLy8vXG4gIC8vIFV0aWxpdGllcyAvL1xuICAvLy8vLy8vLy8vLy8vLy9cblxuICBleHBvcnQgZnVuY3Rpb24gZ2V0UGVybWlzc2lvblRpdGxlKHBlcm1pc3Npb246IFZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ1ByaXZhdGUnO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdTaGFyZWQnO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdQdWJsaWMnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24ocGVybWlzc2lvbjogVmlld1Blcm1pc3Npb24pOiBzdHJpbmcge1xuICAgIHN3aXRjaCAocGVybWlzc2lvbikge1xuICAgICAgY2FzZSAncHJpdmF0ZSc6XG4gICAgICAgIHJldHVybiAnUHJpdmF0ZSAtIE9ubHkgYXZhaWxhYmxlIHRvIHlvdSc7XG4gICAgICBjYXNlICdzaGFyZWQnOlxuICAgICAgICByZXR1cm4gJ1NoYXJlZCAtIE9ubHkgdmlzaWJsZSB0byB0aG9zZSB3aXRoIGFjY2Vzcyc7XG4gICAgICBjYXNlICdwdWJsaWMnOlxuICAgICAgICByZXR1cm4gJ1B1YmxpYyAtIFZpc2libGUgdG8gZXZlcnlvbmUnO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1NoYXJlZFZpZXc8VSBleHRlbmRzIFVzZXIsIFYgZXh0ZW5kcyBWaWV3PFU+PihcbiAgICB2aWV3PzogRnVsbFZpZXc8VSwgVj4sXG4gICk6IHZpZXcgaXMgRnVsbFZpZXc8VSwgVj4gJiB7IHBlcm1pc3Npb246ICdzaGFyZWQnOyBzaGFyZWRVc2VyczogVVtdIH0ge1xuICAgIHJldHVybiB2aWV3Py5wZXJtaXNzaW9uID09PSAnc2hhcmVkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBTZWFyY2hTZWxlY3RVc2VyPFU+IGl0ZW1zIGJhY2sgdG8gVVtdIGZvciBzdG9yYWdlIGluIHNoYXJlZFVzZXJzLlxuICAgKlxuICAgKiBDYXN0IHJlcXVpcmVkIGJlY2F1c2UgVHlwZVNjcmlwdCBjYW5ub3QgcHJvdmUgdGhhdCBkZXN0cnVjdHVyaW5nIGBuZXdgXG4gICAqIGZyb20gYFUgJiB7IG5ldzogYm9vbGVhbiB9YCB5aWVsZHMgZXhhY3RseSBgVWAgKHNwcmVhZC9yZXN0IGRvZXNuJ3RcbiAgICogbmFycm93IGludGVyc2VjdGlvbiB0eXBlcykuXG4gICAqXG4gICAqIC0gU3RyaXBzIGBuZXc6IGZhbHNlYCBzbyBpc0VxdWFsKCkgY29tcGFyaXNvbnMgd29yayAob3JpZ2luYWwgdXNlcnMgbGFjayBgbmV3YClcbiAgICogLSBQcmVzZXJ2ZXMgYG5ldzogdHJ1ZWAgc28gdGhlIGJhY2tlbmQga25vd3Mgd2hpY2ggdXNlcnMgdG8gY3JlYXRlXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gdG9TaGFyZWRVc2VyczxVIGV4dGVuZHMgVXNlcj4oXG4gICAgdXNlcnM6IFNlYXJjaFNlbGVjdFVzZXI8VT5bXSxcbiAgKTogVVtdIHtcbiAgICByZXR1cm4gdXNlcnMubWFwKHVzZXIgPT4ge1xuICAgICAgaWYgKHVzZXIubmV3KSB7XG4gICAgICAgIHJldHVybiB1c2VyIGFzIHVua25vd24gYXMgVTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgbmV3OiBfaXNOZXcsIC4uLnJlc3QgfSA9IHVzZXI7XG4gICAgICByZXR1cm4gcmVzdCBhcyB1bmtub3duIGFzIFU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -11,13 +11,13 @@ export class ViewMenuComponent {
11
11
  this.el = el;
12
12
  this.menuContext = 'tab';
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewMenuComponent, selector: "riv-view-menu", inputs: { manager: "manager", view: "view", menuContext: "menuContext" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["menuTrigger"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled,\n source: 'menu'\n })\n \"\n [disabled]=\"view.system || view.temporary\"\n [attr.aria-disabled]=\"view.system || view.temporary ? 'true' : null\"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: false, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Edit view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: true, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Rename view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({ type: 'duplicateView', view, menuContext })\n \"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Duplicate view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setDeletingView',\n context: { id: view.id, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Delete view\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <ng-container *ngIf=\"manager?.state | async; let state\">\n <ng-container *ngIf=\"state.editingViewContext; let editingViewContext\">\n <riv-edit-view\n *ngIf=\"\n editingViewContext.id === view.id &&\n editingViewContext.menuContext === menuContext\n \"\n [view]=\"view\"\n [userSource]=\"state.userSource\"\n [userSelectMode]=\"state.userSelectMode\"\n [onAddUser]=\"state.onAddUser\"\n [newTooltip]=\"state.newTooltip\"\n [autoSelectName]=\"editingViewContext.autoRename\"\n [anchor]=\"el.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"\n manager?.actions?.next({ type: 'setEditingView', context: null })\n \"\n ></riv-edit-view>\n </ng-container>\n\n <ng-container *ngIf=\"state.deletingViewContext; let deletingViewContext\">\n <riv-dialog\n *ngIf=\"\n deletingViewContext.id === view.id &&\n deletingViewContext.menuContext === menuContext\n \"\n [title]=\"'Delete view'\"\n (close)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n <div class=\"delete-dialog\">\n <div class=\"delete-title\">\n Are you sure you want to delete the following view?\n </div>\n <p>{{ view.title }}</p>\n </div>\n <footer class=\"delete-footer\">\n <button\n type=\"button\"\n rivButton\n (click)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n rivButton\n [variant]=\"'danger'\"\n (click)=\"\n manager?.actions?.next({\n type: 'deleteView',\n view\n })\n \"\n >\n Delete view\n </button>\n </footer>\n </riv-dialog>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;align-items:stretch}riv-menu{width:100%;max-width:100%;height:100%;max-height:100%}.delete-dialog{padding:var(--size-xlarge);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 120);max-width:100%}.delete-title{font:var(--title-02)}.delete-footer{padding:var(--size-medium);display:flex;justify-content:space-between;gap:var(--size-medium)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.DialogComponent, selector: "riv-dialog", inputs: ["title", "minWidth", "customBody", "customFooter"], outputs: ["close"] }, { kind: "component", type: i4.EditViewComponent, selector: "riv-edit-view", inputs: ["anchor", "autoSelectName", "view", "userSource", "userSelectMode", "onAddUser", "newTooltip", "mode"], outputs: ["save", "delete", "close"] }, { kind: "component", type: i5.MenuComponent, selector: "riv-menu", inputs: ["preferredPosition", "disabled"] }, { kind: "component", type: i6.MenuItemComponent, selector: "[riv-menu-item]", inputs: ["locked", "disabled", "variant"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ViewMenuComponent, selector: "riv-view-menu", inputs: { manager: "manager", view: "view", menuContext: "menuContext" }, queries: [{ propertyName: "triggerTemplate", first: true, predicate: ["menuTrigger"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled,\n source: 'menu'\n })\n \"\n [disabled]=\"view.system || view.temporary\"\n [attr.aria-disabled]=\"view.system || view.temporary ? 'true' : null\"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: false, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Edit view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: true, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Rename view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({ type: 'duplicateView', view, menuContext })\n \"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Duplicate view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setDeletingView',\n context: { id: view.id, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Delete view\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <ng-container *ngIf=\"manager?.state | async; let state\">\n <ng-container *ngIf=\"state.editingViewContext; let editingViewContext\">\n <riv-edit-view\n *ngIf=\"\n editingViewContext.id === view.id &&\n editingViewContext.menuContext === menuContext\n \"\n [view]=\"view\"\n [userSource]=\"state.userSource\"\n [userSelectMode]=\"state.userSelectMode\"\n [onAddUser]=\"state.onAddUser\"\n [newTooltip]=\"state.newTooltip\"\n [autoSelectName]=\"editingViewContext.autoRename\"\n [anchor]=\"el.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"\n manager?.actions?.next({ type: 'setEditingView', context: null })\n \"\n ></riv-edit-view>\n </ng-container>\n\n <ng-container *ngIf=\"state.deletingViewContext; let deletingViewContext\">\n <riv-dialog\n *ngIf=\"\n deletingViewContext.id === view.id &&\n deletingViewContext.menuContext === menuContext\n \"\n [title]=\"'Delete view'\"\n (close)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n <div class=\"delete-dialog\">\n <div class=\"delete-title\">\n Are you sure you want to delete the following view?\n </div>\n <p>{{ view.title }}</p>\n </div>\n <footer class=\"delete-footer\">\n <button\n type=\"button\"\n rivButton\n (click)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n rivButton\n [variant]=\"'danger'\"\n (click)=\"\n manager?.actions?.next({\n type: 'deleteView',\n view\n })\n \"\n >\n Delete view\n </button>\n </footer>\n </riv-dialog>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;align-items:stretch}riv-menu{width:100%;max-width:100%;height:100%;max-height:100%}.delete-dialog{padding:var(--size-xlarge);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 120);max-width:100%}.delete-title{font:var(--title-02)}.delete-footer{padding:var(--size-medium);display:flex;justify-content:space-between;gap:var(--size-medium)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i3.DialogComponent, selector: "riv-dialog", inputs: ["title", "minWidth", "customBody", "customFooter"], outputs: ["close"] }, { kind: "component", type: i4.EditViewComponent, selector: "riv-edit-view", inputs: ["anchor", "autoSelectName", "view", "userSource", "userSelectMode", "onAddUser", "newTooltip", "mode"], outputs: ["save", "delete", "close"] }, { kind: "component", type: i5.MenuComponent, selector: "riv-menu", inputs: ["preferredPosition", "disabled"] }, { kind: "component", type: i6.MenuItemComponent, selector: "[riv-menu-item]", inputs: ["locked", "disabled", "variant"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewMenuComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewMenuComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: 'riv-view-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"view\">\n <riv-menu\n #menu\n [preferredPosition]=\"'bottom-right'\"\n (click)=\"$event.stopPropagation()\"\n >\n <ng-container *ngIf=\"triggerTemplate\">\n <ng-template #trigger>\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEnabled',\n id: view.id,\n enabled: !view.enabled,\n source: 'menu'\n })\n \"\n [disabled]=\"view.system || view.temporary\"\n [attr.aria-disabled]=\"view.system || view.temporary ? 'true' : null\"\n >\n {{ view.enabled ? 'Hide tab' : 'Show tab' }}\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: false, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Edit view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setEditingView',\n context: { id: view.id, autoRename: true, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Rename view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({ type: 'duplicateView', view, menuContext })\n \"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Duplicate view\n </button>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"\n manager?.actions?.next({\n type: 'setDeletingView',\n context: { id: view.id, menuContext }\n })\n \"\n [disabled]=\"view.system\"\n [attr.aria-disabled]=\"view.system ? 'true' : null\"\n >\n Delete view\n </button>\n <div class=\"riv-divider\"></div>\n <button\n type=\"button\"\n riv-menu-item\n (click)=\"manager?.actions?.next({ type: 'copyLinkToView', view })\"\n [disabled]=\"view.temporary\"\n [attr.aria-disabled]=\"view.temporary ? 'true' : null\"\n >\n Copy link to view\n </button>\n </riv-menu>\n\n <ng-container *ngIf=\"manager?.state | async; let state\">\n <ng-container *ngIf=\"state.editingViewContext; let editingViewContext\">\n <riv-edit-view\n *ngIf=\"\n editingViewContext.id === view.id &&\n editingViewContext.menuContext === menuContext\n \"\n [view]=\"view\"\n [userSource]=\"state.userSource\"\n [userSelectMode]=\"state.userSelectMode\"\n [onAddUser]=\"state.onAddUser\"\n [newTooltip]=\"state.newTooltip\"\n [autoSelectName]=\"editingViewContext.autoRename\"\n [anchor]=\"el.nativeElement\"\n (save)=\"manager?.actions?.next({ type: 'updateView', view: $event })\"\n (delete)=\"manager?.actions?.next({ type: 'deleteView', view: $event })\"\n (close)=\"\n manager?.actions?.next({ type: 'setEditingView', context: null })\n \"\n ></riv-edit-view>\n </ng-container>\n\n <ng-container *ngIf=\"state.deletingViewContext; let deletingViewContext\">\n <riv-dialog\n *ngIf=\"\n deletingViewContext.id === view.id &&\n deletingViewContext.menuContext === menuContext\n \"\n [title]=\"'Delete view'\"\n (close)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n <div class=\"delete-dialog\">\n <div class=\"delete-title\">\n Are you sure you want to delete the following view?\n </div>\n <p>{{ view.title }}</p>\n </div>\n <footer class=\"delete-footer\">\n <button\n type=\"button\"\n rivButton\n (click)=\"\n manager?.actions?.next({ type: 'setDeletingView', context: null })\n \"\n >\n Cancel\n </button>\n <button\n type=\"button\"\n rivButton\n [variant]=\"'danger'\"\n (click)=\"\n manager?.actions?.next({\n type: 'deleteView',\n view\n })\n \"\n >\n Delete view\n </button>\n </footer>\n </riv-dialog>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:inline-flex;align-items:stretch}riv-menu{width:100%;max-width:100%;height:100%;max-height:100%}.delete-dialog{padding:var(--size-xlarge);display:flex;flex-direction:column;gap:var(--size-large);width:calc(var(--base-grid-size) * 120);max-width:100%}.delete-title{font:var(--title-02)}.delete-footer{padding:var(--size-medium);display:flex;justify-content:space-between;gap:var(--size-medium)}\n"] }]
20
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { manager: [{
20
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { manager: [{
21
21
  type: Input
22
22
  }], view: [{
23
23
  type: Input
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
27
27
  type: ContentChild,
28
28
  args: ['menuTrigger']
29
29
  }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3Mvdmlldy1tZW51L3ZpZXctbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXctbWVudS92aWV3LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFTdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFxQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQVNuQyxnQkFBVyxHQUF5QixLQUFLLENBQUM7SUFUSixDQUFDOytHQUo1QixpQkFBaUI7bUdBQWpCLGlCQUFpQiwyT0NoQjlCLGdzSkFnS0E7OzRGRGhKYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNO2lHQVMvQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlldy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctbWVudS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TWVudUNvbXBvbmVudDxcbiAgVSBleHRlbmRzIFJpdlZpZXdzLlVzZXIsXG4gIFYgZXh0ZW5kcyBSaXZWaWV3cy5WaWV3PFU+LFxuPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHZpZXc/OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPjtcblxuICBASW5wdXQoKVxuICBtZW51Q29udGV4dDogUml2Vmlld3MuTWVudUNvbnRleHQgPSAndGFiJztcblxuICBAQ29udGVudENoaWxkKCdtZW51VHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdcIj5cbiAgPHJpdi1tZW51XG4gICAgI21lbnVcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICN0cmlnZ2VyPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnLFxuICAgICAgICAgIGlkOiB2aWV3LmlkLFxuICAgICAgICAgIGVuYWJsZWQ6ICF2aWV3LmVuYWJsZWQsXG4gICAgICAgICAgc291cmNlOiAnbWVudSdcbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW0gfHwgdmlldy50ZW1wb3JhcnlcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSB8fCB2aWV3LnRlbXBvcmFyeSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIHt7IHZpZXcuZW5hYmxlZCA/ICdIaWRlIHRhYicgOiAnU2hvdyB0YWInIH19XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cInJpdi1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICByaXYtbWVudS1pdGVtXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgIHR5cGU6ICdzZXRFZGl0aW5nVmlldycsXG4gICAgICAgICAgY29udGV4dDogeyBpZDogdmlldy5pZCwgYXV0b1JlbmFtZTogZmFsc2UsIG1lbnVDb250ZXh0IH1cbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIEVkaXQgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnc2V0RWRpdGluZ1ZpZXcnLFxuICAgICAgICAgIGNvbnRleHQ6IHsgaWQ6IHZpZXcuaWQsIGF1dG9SZW5hbWU6IHRydWUsIG1lbnVDb250ZXh0IH1cbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIFJlbmFtZSB2aWV3XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICByaXYtbWVudS1pdGVtXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnZHVwbGljYXRlVmlldycsIHZpZXcsIG1lbnVDb250ZXh0IH0pXG4gICAgICBcIlxuICAgICAgW2Rpc2FibGVkXT1cInZpZXcudGVtcG9yYXJ5XCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidmlldy50ZW1wb3JhcnkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICA+XG4gICAgICBEdXBsaWNhdGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JyxcbiAgICAgICAgICBjb250ZXh0OiB7IGlkOiB2aWV3LmlkLCBtZW51Q29udGV4dCB9XG4gICAgICAgIH0pXG4gICAgICBcIlxuICAgICAgW2Rpc2FibGVkXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidmlldy5zeXN0ZW0gPyAndHJ1ZScgOiBudWxsXCJcbiAgICA+XG4gICAgICBEZWxldGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJyaXYtZGl2aWRlclwiPjwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnLCB2aWV3IH0pXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ2aWV3LnRlbXBvcmFyeVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInZpZXcudGVtcG9yYXJ5ID8gJ3RydWUnIDogbnVsbFwiXG4gICAgPlxuICAgICAgQ29weSBsaW5rIHRvIHZpZXdcbiAgICA8L2J1dHRvbj5cbiAgPC9yaXYtbWVudT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFuYWdlcj8uc3RhdGUgfCBhc3luYzsgbGV0IHN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlLmVkaXRpbmdWaWV3Q29udGV4dDsgbGV0IGVkaXRpbmdWaWV3Q29udGV4dFwiPlxuICAgICAgPHJpdi1lZGl0LXZpZXdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQuaWQgPT09IHZpZXcuaWQgJiZcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQubWVudUNvbnRleHQgPT09IG1lbnVDb250ZXh0XG4gICAgICAgIFwiXG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbdXNlclNvdXJjZV09XCJzdGF0ZS51c2VyU291cmNlXCJcbiAgICAgICAgW3VzZXJTZWxlY3RNb2RlXT1cInN0YXRlLnVzZXJTZWxlY3RNb2RlXCJcbiAgICAgICAgW29uQWRkVXNlcl09XCJzdGF0ZS5vbkFkZFVzZXJcIlxuICAgICAgICBbbmV3VG9vbHRpcF09XCJzdGF0ZS5uZXdUb29sdGlwXCJcbiAgICAgICAgW2F1dG9TZWxlY3ROYW1lXT1cImVkaXRpbmdWaWV3Q29udGV4dC5hdXRvUmVuYW1lXCJcbiAgICAgICAgW2FuY2hvcl09XCJlbC5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgKHNhdmUpPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICd1cGRhdGVWaWV3JywgdmlldzogJGV2ZW50IH0pXCJcbiAgICAgICAgKGRlbGV0ZSk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2RlbGV0ZVZpZXcnLCB2aWV3OiAkZXZlbnQgfSlcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRFZGl0aW5nVmlldycsIGNvbnRleHQ6IG51bGwgfSlcbiAgICAgICAgXCJcbiAgICAgID48L3Jpdi1lZGl0LXZpZXc+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUuZGVsZXRpbmdWaWV3Q29udGV4dDsgbGV0IGRlbGV0aW5nVmlld0NvbnRleHRcIj5cbiAgICAgIDxyaXYtZGlhbG9nXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dC5pZCA9PT0gdmlldy5pZCAmJlxuICAgICAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQubWVudUNvbnRleHQgPT09IG1lbnVDb250ZXh0XG4gICAgICAgIFwiXG4gICAgICAgIFt0aXRsZV09XCInRGVsZXRlIHZpZXcnXCJcbiAgICAgICAgKGNsb3NlKT1cIlxuICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JywgY29udGV4dDogbnVsbCB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWRpYWxvZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtdGl0bGVcIj5cbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIGZvbGxvd2luZyB2aWV3P1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7IHZpZXcudGl0bGUgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Zm9vdGVyIGNsYXNzPVwiZGVsZXRlLWZvb3RlclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JywgY29udGV4dDogbnVsbCB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2RhbmdlcidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlVmlldycsXG4gICAgICAgICAgICAgICAgdmlld1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEZWxldGUgdmlld1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvcml2LWRpYWxvZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL25hdmlnYXRpb24vdmlld3Mvdmlldy1tZW51L3ZpZXctbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXctbWVudS92aWV3LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFTdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFxQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQVNuQyxnQkFBVyxHQUF5QixLQUFLLENBQUM7SUFUSixDQUFDOytHQUo1QixpQkFBaUI7bUdBQWpCLGlCQUFpQiwyT0NoQjlCLGdzSkFnS0E7OzRGRGhKYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOytFQVMvQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixlQUFlO3NCQURkLFlBQVk7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlldy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctbWVudS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctbWVudS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3TWVudUNvbXBvbmVudDxcbiAgVSBleHRlbmRzIFJpdlZpZXdzLlVzZXIsXG4gIFYgZXh0ZW5kcyBSaXZWaWV3cy5WaWV3PFU+LFxuPiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmKSB7fVxuXG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHZpZXc/OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPjtcblxuICBASW5wdXQoKVxuICBtZW51Q29udGV4dDogUml2Vmlld3MuTWVudUNvbnRleHQgPSAndGFiJztcblxuICBAQ29udGVudENoaWxkKCdtZW51VHJpZ2dlcicpXG4gIHRyaWdnZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdcIj5cbiAgPHJpdi1tZW51XG4gICAgI21lbnVcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1yaWdodCdcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyaWdnZXJUZW1wbGF0ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlICN0cmlnZ2VyPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJpdi1tZW51LWl0ZW1cbiAgICAgIChjbGljayk9XCJcbiAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgdHlwZTogJ3NldEVuYWJsZWQnLFxuICAgICAgICAgIGlkOiB2aWV3LmlkLFxuICAgICAgICAgIGVuYWJsZWQ6ICF2aWV3LmVuYWJsZWQsXG4gICAgICAgICAgc291cmNlOiAnbWVudSdcbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW0gfHwgdmlldy50ZW1wb3JhcnlcIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSB8fCB2aWV3LnRlbXBvcmFyeSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIHt7IHZpZXcuZW5hYmxlZCA/ICdIaWRlIHRhYicgOiAnU2hvdyB0YWInIH19XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cInJpdi1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICByaXYtbWVudS1pdGVtXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgIHR5cGU6ICdzZXRFZGl0aW5nVmlldycsXG4gICAgICAgICAgY29udGV4dDogeyBpZDogdmlldy5pZCwgYXV0b1JlbmFtZTogZmFsc2UsIG1lbnVDb250ZXh0IH1cbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIEVkaXQgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnc2V0RWRpdGluZ1ZpZXcnLFxuICAgICAgICAgIGNvbnRleHQ6IHsgaWQ6IHZpZXcuaWQsIGF1dG9SZW5hbWU6IHRydWUsIG1lbnVDb250ZXh0IH1cbiAgICAgICAgfSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ2aWV3LnN5c3RlbSA/ICd0cnVlJyA6IG51bGxcIlxuICAgID5cbiAgICAgIFJlbmFtZSB2aWV3XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICByaXYtbWVudS1pdGVtXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnZHVwbGljYXRlVmlldycsIHZpZXcsIG1lbnVDb250ZXh0IH0pXG4gICAgICBcIlxuICAgICAgW2Rpc2FibGVkXT1cInZpZXcudGVtcG9yYXJ5XCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidmlldy50ZW1wb3JhcnkgPyAndHJ1ZScgOiBudWxsXCJcbiAgICA+XG4gICAgICBEdXBsaWNhdGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JyxcbiAgICAgICAgICBjb250ZXh0OiB7IGlkOiB2aWV3LmlkLCBtZW51Q29udGV4dCB9XG4gICAgICAgIH0pXG4gICAgICBcIlxuICAgICAgW2Rpc2FibGVkXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidmlldy5zeXN0ZW0gPyAndHJ1ZScgOiBudWxsXCJcbiAgICA+XG4gICAgICBEZWxldGUgdmlld1xuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJyaXYtZGl2aWRlclwiPjwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcml2LW1lbnUtaXRlbVxuICAgICAgKGNsaWNrKT1cIm1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnY29weUxpbmtUb1ZpZXcnLCB2aWV3IH0pXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ2aWV3LnRlbXBvcmFyeVwiXG4gICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInZpZXcudGVtcG9yYXJ5ID8gJ3RydWUnIDogbnVsbFwiXG4gICAgPlxuICAgICAgQ29weSBsaW5rIHRvIHZpZXdcbiAgICA8L2J1dHRvbj5cbiAgPC9yaXYtbWVudT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibWFuYWdlcj8uc3RhdGUgfCBhc3luYzsgbGV0IHN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlLmVkaXRpbmdWaWV3Q29udGV4dDsgbGV0IGVkaXRpbmdWaWV3Q29udGV4dFwiPlxuICAgICAgPHJpdi1lZGl0LXZpZXdcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQuaWQgPT09IHZpZXcuaWQgJiZcbiAgICAgICAgICBlZGl0aW5nVmlld0NvbnRleHQubWVudUNvbnRleHQgPT09IG1lbnVDb250ZXh0XG4gICAgICAgIFwiXG4gICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICBbdXNlclNvdXJjZV09XCJzdGF0ZS51c2VyU291cmNlXCJcbiAgICAgICAgW3VzZXJTZWxlY3RNb2RlXT1cInN0YXRlLnVzZXJTZWxlY3RNb2RlXCJcbiAgICAgICAgW29uQWRkVXNlcl09XCJzdGF0ZS5vbkFkZFVzZXJcIlxuICAgICAgICBbbmV3VG9vbHRpcF09XCJzdGF0ZS5uZXdUb29sdGlwXCJcbiAgICAgICAgW2F1dG9TZWxlY3ROYW1lXT1cImVkaXRpbmdWaWV3Q29udGV4dC5hdXRvUmVuYW1lXCJcbiAgICAgICAgW2FuY2hvcl09XCJlbC5uYXRpdmVFbGVtZW50XCJcbiAgICAgICAgKHNhdmUpPVwibWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICd1cGRhdGVWaWV3JywgdmlldzogJGV2ZW50IH0pXCJcbiAgICAgICAgKGRlbGV0ZSk9XCJtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ2RlbGV0ZVZpZXcnLCB2aWV3OiAkZXZlbnQgfSlcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRFZGl0aW5nVmlldycsIGNvbnRleHQ6IG51bGwgfSlcbiAgICAgICAgXCJcbiAgICAgID48L3Jpdi1lZGl0LXZpZXc+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RhdGUuZGVsZXRpbmdWaWV3Q29udGV4dDsgbGV0IGRlbGV0aW5nVmlld0NvbnRleHRcIj5cbiAgICAgIDxyaXYtZGlhbG9nXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgZGVsZXRpbmdWaWV3Q29udGV4dC5pZCA9PT0gdmlldy5pZCAmJlxuICAgICAgICAgIGRlbGV0aW5nVmlld0NvbnRleHQubWVudUNvbnRleHQgPT09IG1lbnVDb250ZXh0XG4gICAgICAgIFwiXG4gICAgICAgIFt0aXRsZV09XCInRGVsZXRlIHZpZXcnXCJcbiAgICAgICAgKGNsb3NlKT1cIlxuICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JywgY29udGV4dDogbnVsbCB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlLWRpYWxvZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZWxldGUtdGl0bGVcIj5cbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIGZvbGxvd2luZyB2aWV3P1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwPnt7IHZpZXcudGl0bGUgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Zm9vdGVyIGNsYXNzPVwiZGVsZXRlLWZvb3RlclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0RGVsZXRpbmdWaWV3JywgY29udGV4dDogbnVsbCB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgICAgW3ZhcmlhbnRdPVwiJ2RhbmdlcidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZGVsZXRlVmlldycsXG4gICAgICAgICAgICAgICAgdmlld1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBEZWxldGUgdmlld1xuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvcml2LWRpYWxvZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -73,10 +73,10 @@ export class ViewsComponent {
73
73
  getPermissionDescription(permission) {
74
74
  return RivViews.getPermissionDescription(permission);
75
75
  }
76
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n <riv-icon\n class=\"permission-icon\"\n [name]=\"getPermissionIcon(view.permission)\"\n [size]=\"12\"\n [rivTooltip]=\"getPermissionDescription(view.permission)\"\n ></riv-icon>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n type=\"button\"\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n type=\"button\"\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n type=\"button\"\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}.permission-icon{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);flex-shrink:0}.tab.active .permission-icon{color:var(--purp-80)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "directive", type: i11.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }, { kind: "component", type: i12.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i13.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i14.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ViewsComponent, selector: "riv-views", inputs: { manager: "manager", sideSheetTopOffset: "sideSheetTopOffset" }, viewQueries: [{ propertyName: "overflowTrigger", first: true, predicate: ["overflowTrigger"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n <riv-icon\n class=\"permission-icon\"\n [name]=\"getPermissionIcon(view.permission)\"\n [size]=\"12\"\n [rivTooltip]=\"getPermissionDescription(view.permission)\"\n ></riv-icon>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n type=\"button\"\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n type=\"button\"\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n type=\"button\"\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}.permission-icon{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);flex-shrink:0}.tab.active .permission-icon{color:var(--purp-80)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AllViewsModalComponent, selector: "riv-all-views-modal", inputs: ["manager", "topOffset"], outputs: ["close"] }, { kind: "component", type: i3.ButtonComponent, selector: "[rivButton]", inputs: ["locked", "disabled", "loading", "full", "size", "variant", "icon", "iconPosition", "current"] }, { kind: "component", type: i4.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i5.HighlightComponent, selector: "riv-highlight", inputs: ["text", "indices"] }, { kind: "component", type: i6.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }, { kind: "directive", type: i7.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i8.SearchComponent, selector: "riv-search", inputs: ["placeholder", "name", "labelTemplate"] }, { kind: "directive", type: i9.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i10.ToastComponent, selector: "riv-toast", inputs: ["variant", "icon"], outputs: ["close"] }, { kind: "directive", type: i11.TooltipDirective, selector: "[rivTooltip]", inputs: ["rivTooltip", "rivTooltipTheme", "rivTooltipMaxWidth", "rivTooltipPreferredPosition", "rivTooltipAnchor", "rivTooltipCloseDelay", "rivTooltipOpenDelay", "rivTooltipGracePeriod"] }, { kind: "component", type: i12.TruncateComponent, selector: "[rivTruncate]", inputs: ["maxTooltipWidth"] }, { kind: "component", type: i13.ViewMenuComponent, selector: "riv-view-menu", inputs: ["manager", "view", "menuContext"] }, { kind: "component", type: i14.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.NumberPipe, name: "rivNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
78
  }
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewsComponent, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewsComponent, decorators: [{
80
80
  type: Component,
81
81
  args: [{ selector: 'riv-views', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n (rivClientSize)=\"\n manager?.actions?.next({ type: 'setContainerWidth', width: $event.width })\n \"\n class=\"container\"\n>\n <ng-container *ngIf=\"manager?.state | async; let s\">\n <ng-container\n *ngFor=\"let view of s.displayedViews; let i = index; trackBy: trackById\"\n >\n <ng-container *ngIf=\"view.active; else inactiveTab\">\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'tab'\"\n class=\"active-menu\"\n >\n <ng-template #menuTrigger>\n <div\n class=\"tab active\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div rivTruncate>\n {{ view.title }}\n </div>\n <riv-icon\n class=\"permission-icon\"\n [name]=\"getPermissionIcon(view.permission)\"\n [size]=\"12\"\n [rivTooltip]=\"getPermissionDescription(view.permission)\"\n ></riv-icon>\n </div>\n </ng-template>\n </riv-view-menu>\n </ng-container>\n <ng-template #inactiveTab>\n <button\n type=\"button\"\n class=\"tab\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-left]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-right]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, false)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'tab'\n })\n \"\n >\n <riv-icon\n class=\"tab-reorder\"\n [class.hidden-class]=\"view.system\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <span rivTruncate>\n {{ view.title }}\n </span>\n </button>\n </ng-template>\n </ng-container>\n <button\n type=\"button\"\n *ngIf=\"s.allEnabledViews.length - s.displayedViews.length; let count\"\n class=\"tab overflow\"\n rivTruncate\n #overflowTrigger\n (click)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: true })\n \"\n >\n {{ count | rivNumber }} more\n </button>\n <ng-container *ngIf=\"s.overflow.pickerOpen\">\n <riv-callout\n *riv-overlay\n [anchor]=\"overflowTrigger?.nativeElement\"\n [isModal]=\"true\"\n [showCaret]=\"false\"\n [theme]=\"'light'\"\n [preferredPosition]=\"'bottom-left'\"\n (close)=\"\n manager?.actions?.next({ type: 'setOverflowPickerOpen', open: false })\n \"\n >\n <div class=\"overflow-callout\">\n <riv-search\n [value]=\"s.overflow.search\"\n (valueChange)=\"\n manager?.actions?.next({\n type: 'setOverflowSearchQuery',\n query: $event\n })\n \"\n ></riv-search>\n <div class=\"overflow-view-list\">\n <button\n type=\"button\"\n *ngFor=\"let view of s.enabledViews; let i = index\"\n class=\"overflow-view\"\n [class.system]=\"view.system\"\n [class.dragging]=\"draggedTabIndex === i\"\n [class.dragged-over-top]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex > i\n \"\n [class.dragged-over-bottom]=\"\n draggedOverTabIndex === i &&\n draggedTabIndex !== null &&\n draggedTabIndex < i\n \"\n [attr.draggable]=\"!view.system\"\n [attr.droppable]=\"!view.system\"\n (dragstart)=\"dragStart(i, view.title, view.system)\"\n (dragenter)=\"$event.preventDefault()\"\n (dragover)=\"$event.preventDefault(); dragOver(i, view.system)\"\n (drop)=\"drop(i, true)\"\n (click)=\"\n manager?.actions?.next({\n type: 'setActiveView',\n id: view.id,\n source: 'overflow'\n });\n manager?.actions?.next({\n type: 'setOverflowPickerOpen',\n open: false\n })\n \"\n >\n <riv-icon\n *ngIf=\"!view.system\"\n class=\"overflow-reorder\"\n [name]=\"'Reorder'\"\n [size]=\"16\"\n ></riv-icon>\n <div class=\"overflow-title\" rivTruncate>\n <riv-highlight\n [indices]=\"view.titleHighlightIndices ?? []\"\n [text]=\"view.title\"\n ></riv-highlight>\n </div>\n <riv-view-menu\n [manager]=\"manager\"\n [view]=\"view\"\n [menuContext]=\"'overflow'\"\n ></riv-view-menu>\n </button>\n <riv-zero-state\n *ngIf=\"!s.enabledViews.length\"\n [message]=\"'No matching views.'\"\n ></riv-zero-state>\n </div>\n </div>\n </riv-callout>\n </ng-container>\n <div class=\"all-views-button-container\">\n <button\n type=\"button\"\n rivButton\n [variant]=\"'ghost'\"\n [size]=\"'medium'\"\n (click)=\"showAllViews = true\"\n >\n All views\n </button>\n </div>\n </ng-container>\n</div>\n\n<riv-all-views-modal\n *ngIf=\"showAllViews\"\n [manager]=\"manager\"\n [topOffset]=\"sideSheetTopOffset\"\n (close)=\"showAllViews = false\"\n></riv-all-views-modal>\n\n<riv-toast *ngIf=\"showLinkCopiedToast | async\" (close)=\"toastClosed.next()\">\n Link to view copied to clipboard\n</riv-toast>\n", styles: [".container{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,calc(var(--base-grid-size) * 81));justify-content:start;border-bottom:var(--border-width) solid var(--border-light)}.tab{font:var(--input-medium);color:var(--type-light-low-contrast);background-color:var(--surface-light-1);border:var(--border-width) solid var(--border-light);border-bottom:none;border-top-left-radius:var(--border-radius-medium);border-top-right-radius:var(--border-radius-medium);padding:var(--size-small) var(--size-large) var(--size-small) 0;cursor:pointer;transition:background-color var(--medium-transition);display:flex;justify-content:flex-start;align-items:center;position:relative}.tab:hover{background-color:var(--surface-light-2)}.tab:active{background-color:var(--surface-light-3)}.tab:not(:first-child),.active-menu{margin-left:calc(var(--border-width) * -1)}.tab.active{color:var(--purp-80);background-color:var(--surface-light-0);border-bottom:var(--border-width) solid var(--surface-light-0);margin-bottom:calc(var(--border-width) * -1);z-index:1;width:100%;max-width:100%;height:100%;max-height:100%}.tab.active:active{border:var(--border-width) solid var(--purp-80)}.tab.dragging{cursor:grabbing}.tab.dragged-over-left:before,.tab.dragged-over-right:before{content:\"\";position:absolute;top:0;bottom:0;width:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.tab.dragged-over-left:before{left:0}.tab.dragged-over-right:before{right:0}.tab-reorder{color:var(--type-light-low-contrast);opacity:0;transition:opacity var(--short-transition);cursor:grab;margin:0 var(--size-xsmall)}.tab:hover .tab-reorder{opacity:1}.hidden-class{visibility:hidden}.active-menu{display:inline-flex;color:var(--type-light-link-hover);--size: calc(100% + calc(var(--border-width)));width:var(--size);max-width:var(--size);height:var(--size);max-height:var(--size);cursor:pointer;font:var(--input-medium)}.tab.overflow{padding-left:var(--size-large)}.all-views-button-container{padding:var(--size-xxsmall)}.overflow-callout{padding:var(--size-large);display:flex;flex-direction:column;gap:var(--size-medium);height:calc(var(--base-grid-size) * 120);max-height:50vh;width:calc(var(--base-grid-size) * 75);max-width:50vw}.overflow-view-list{display:flex;flex-direction:column;gap:var(--size-small);flex-grow:1;overflow-y:auto}.overflow-view{display:flex;align-items:center;gap:var(--size-small);cursor:pointer;border-radius:var(--border-radius-medium);transition:background-color var(--short-transition);position:relative}.overflow-view.system{padding-left:var(--size-small)}.overflow-view:hover{background-color:var(--surface-light-2)}.overflow-view.dragged-over-top:before,.overflow-view.dragged-over-bottom:before{content:\"\";position:absolute;left:0;right:0;height:var(--size-xxsmall);background-color:var(--brand);box-shadow:0 0 var(--size-xxsmall) var(--brand)}.overflow-view.dragged-over-top:before{top:0}.overflow-view.dragged-over-bottom:before{bottom:0}.overflow-reorder{color:var(--type-light-low-contrast);cursor:grab}.overflow-title{flex-grow:1;text-align:left}.permission-icon{color:var(--type-light-low-contrast);margin-left:var(--size-xsmall);flex-shrink:0}.tab.active .permission-icon{color:var(--purp-80)}\n"] }]
82
82
  }], propDecorators: { manager: [{
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
87
87
  type: ViewChild,
88
88
  args: ['overflowTrigger', { read: ElementRef }]
89
89
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFLeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFDMUMscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQW1DM0MsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBWWxDLGNBQVMsR0FBNkMsQ0FDcEQsQ0FBUyxFQUNULENBQTBCLEVBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBZ0JYO0lBaEVDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBaUIsRUFBRSxZQUFxQjtRQUMvRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDM0MsNkNBQTZDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztTQUNsQzthQUFNO1lBQ0wsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBYSxFQUFFLFlBQXFCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixvQkFBb0IsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDMUMsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDakQsU0FBUyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTO2FBQzlDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFJRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FDOUIsSUFBSSxDQUFDLE9BQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsRUFDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNoQixFQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQU9ELGlCQUFpQixDQUFDLFVBQW1DO1FBQ25ELFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssU0FBUztnQkFDWixPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxXQUFXLENBQUM7WUFDckIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQW1DO1FBQzFELE9BQU8sUUFBUSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBakZVLGNBQWM7bUdBQWQsY0FBYywwTkFTYSxVQUFVLDZCQzVCbEQseXZPQXlOQTs7NEZEdE1hLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzhCQU0vQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFJpdlZpZXdzIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtdmlld3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlld3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92aWV3cy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBWaWV3c0NvbXBvbmVudDxVIGV4dGVuZHMgUml2Vmlld3MuVXNlciwgViBleHRlbmRzIFJpdlZpZXdzLlZpZXc8VT4+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIEBJbnB1dCgpXG4gIG1hbmFnZXI/OiBSaXZWaWV3cy5NYW5hZ2VyPFUsIFY+O1xuXG4gIEBJbnB1dCgpXG4gIHNpZGVTaGVldFRvcE9mZnNldDogbnVtYmVyID0gMDtcblxuICBAVmlld0NoaWxkKCdvdmVyZmxvd1RyaWdnZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgb3ZlcmZsb3dUcmlnZ2VyPzogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2hvd0FsbFZpZXdzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZHJhZ2dlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dlZE92ZXJUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIGRyYWdnZWRWaWV3VGl0bGU6IFZbJ3RpdGxlJ10gfCBudWxsID0gbnVsbDtcblxuICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlciwgdGl0bGU6IFZbJ3RpdGxlJ10sIGlzU3lzdGVtVmlldzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IGxldCB5b3UgZHJhZyB0aGUgc3lzdGVtIHZpZXdcbiAgICBpZiAoIWlzU3lzdGVtVmlldykge1xuICAgICAgdGhpcy5kcmFnZ2VkVGFiSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuZHJhZ2dlZFZpZXdUaXRsZSA9IHRpdGxlO1xuICAgIH1cbiAgfVxuXG4gIGRyYWdPdmVyKGluZGV4OiBudW1iZXIsIGlzU3lzdGVtVmlldzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIFdlIGRvbid0IGxldCB5b3UgZHJhZyBvdmVyIHRoZSBzeXN0ZW0gdmlld1xuICAgIGlmICghaXNTeXN0ZW1WaWV3KSB7XG4gICAgICB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBpbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcmFnZ2VkT3ZlclRhYkluZGV4ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBkcm9wKGluZGV4OiBudW1iZXIsIG92ZXJmbG93TWVudTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5tYW5hZ2VyPy5hY3Rpb25zLm5leHQoe1xuICAgICAgICB0eXBlOiAndmlld09yZGVyQ2hhbmdlJyxcbiAgICAgICAgcHJldmlvdXNFbmFibGVkSW5kZXg6IHRoaXMuZHJhZ2dlZFRhYkluZGV4LFxuICAgICAgICBuZXdFbmFibGVkSW5kZXg6IGluZGV4LFxuICAgICAgICBzb3VyY2U6IG92ZXJmbG93TWVudSA/ICdvdmVyZmxvd0RyYWcnIDogJ3RhYkRyYWcnLFxuICAgICAgICB2aWV3VGl0bGU6IHRoaXMuZHJhZ2dlZFZpZXdUaXRsZSB8fCB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IG51bGw7XG4gICAgdGhpcy5kcmFnZ2VkVmlld1RpdGxlID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBudWxsO1xuICB9XG5cbiAgdG9hc3RDbG9zZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBzaG93TGlua0NvcGllZFRvYXN0PzogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zaG93TGlua0NvcGllZFRvYXN0ID0gbWVyZ2UoXG4gICAgICB0aGlzLm1hbmFnZXIhLmFjdGlvbnMucGlwZShcbiAgICAgICAgZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gJ2NvcHlMaW5rVG9WaWV3JyksXG4gICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICksXG4gICAgICB0aGlzLnRvYXN0Q2xvc2VkLnBpcGUobWFwKCgpID0+IGZhbHNlKSksXG4gICAgKTtcbiAgfVxuXG4gIHRyYWNrQnlJZDogVHJhY2tCeUZ1bmN0aW9uPFJpdlZpZXdzLkZ1bGxWaWV3PFUsIFY+PiA9IChcbiAgICBfOiBudW1iZXIsXG4gICAgdjogUml2Vmlld3MuRnVsbFZpZXc8VSwgVj4sXG4gICkgPT4gdi5pZDtcblxuICBnZXRQZXJtaXNzaW9uSWNvbihwZXJtaXNzaW9uOiBSaXZWaWV3cy5WaWV3UGVybWlzc2lvbik6IEljb25Db21wb25lbnQuTmFtZSB7XG4gICAgc3dpdGNoIChwZXJtaXNzaW9uKSB7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuICdMb2NrJztcbiAgICAgIGNhc2UgJ3NoYXJlZCc6XG4gICAgICAgIHJldHVybiAnVXNlckNoZWNrJztcbiAgICAgIGNhc2UgJ3B1YmxpYyc6XG4gICAgICAgIHJldHVybiAnVXNlcnMnO1xuICAgIH1cbiAgfVxuXG4gIGdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uOiBSaXZWaWV3cy5WaWV3UGVybWlzc2lvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFJpdlZpZXdzLmdldFBlcm1pc3Npb25EZXNjcmlwdGlvbihwZXJtaXNzaW9uKTtcbiAgfVxufVxuIiwiPGRpdlxuICAocml2Q2xpZW50U2l6ZSk9XCJcbiAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldENvbnRhaW5lcldpZHRoJywgd2lkdGg6ICRldmVudC53aWR0aCB9KVxuICBcIlxuICBjbGFzcz1cImNvbnRhaW5lclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYW5hZ2VyPy5zdGF0ZSB8IGFzeW5jOyBsZXQgc1wiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZGlzcGxheWVkVmlld3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXcuYWN0aXZlOyBlbHNlIGluYWN0aXZlVGFiXCI+XG4gICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgW21lbnVDb250ZXh0XT1cIid0YWInXCJcbiAgICAgICAgICBjbGFzcz1cImFjdGl2ZS1tZW51XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudVRyaWdnZXI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFiIGFjdGl2ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICAgICAgZHJhZ2dlZE92ZXJUYWJJbmRleCA9PT0gaSAmJlxuICAgICAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1yaWdodF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgZmFsc2UpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWItcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbi1jbGFzc109XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IHJpdlRydW5jYXRlPlxuICAgICAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGVybWlzc2lvbi1pY29uXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJnZXRQZXJtaXNzaW9uSWNvbih2aWV3LnBlcm1pc3Npb24pXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxMlwiXG4gICAgICAgICAgICAgICAgW3JpdlRvb2x0aXBdPVwiZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHZpZXcucGVybWlzc2lvbilcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcml2LXZpZXctbWVudT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNpbmFjdGl2ZVRhYj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwidGFiXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dpbmddPVwiZHJhZ2dlZFRhYkluZGV4ID09PSBpXCJcbiAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWxlZnRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA+IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItcmlnaHRdPVwiXG4gICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCA8IGlcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIFthdHRyLmRyb3BwYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgKGRyYWdvdmVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBkcmFnT3ZlcihpLCB2aWV3LnN5c3RlbSlcIlxuICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgZmFsc2UpXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgdHlwZTogJ3NldEFjdGl2ZVZpZXcnLFxuICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgc291cmNlOiAndGFiJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInRhYi1yZW9yZGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5oaWRkZW4tY2xhc3NdPVwidmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICA8c3BhbiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgIHt7IHZpZXcudGl0bGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICpuZ0lmPVwicy5hbGxFbmFibGVkVmlld3MubGVuZ3RoIC0gcy5kaXNwbGF5ZWRWaWV3cy5sZW5ndGg7IGxldCBjb3VudFwiXG4gICAgICBjbGFzcz1cInRhYiBvdmVyZmxvd1wiXG4gICAgICByaXZUcnVuY2F0ZVxuICAgICAgI292ZXJmbG93VHJpZ2dlclxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IHRydWUgfSlcbiAgICAgIFwiXG4gICAgPlxuICAgICAge3sgY291bnQgfCByaXZOdW1iZXIgfX0gbW9yZVxuICAgIDwvYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzLm92ZXJmbG93LnBpY2tlck9wZW5cIj5cbiAgICAgIDxyaXYtY2FsbG91dFxuICAgICAgICAqcml2LW92ZXJsYXlcbiAgICAgICAgW2FuY2hvcl09XCJvdmVyZmxvd1RyaWdnZXI/Lm5hdGl2ZUVsZW1lbnRcIlxuICAgICAgICBbaXNNb2RhbF09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dDYXJldF09XCJmYWxzZVwiXG4gICAgICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgICAgICAgW3ByZWZlcnJlZFBvc2l0aW9uXT1cIidib3R0b20tbGVmdCdcIlxuICAgICAgICAoY2xvc2UpPVwiXG4gICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7IHR5cGU6ICdzZXRPdmVyZmxvd1BpY2tlck9wZW4nLCBvcGVuOiBmYWxzZSB9KVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctY2FsbG91dFwiPlxuICAgICAgICAgIDxyaXYtc2VhcmNoXG4gICAgICAgICAgICBbdmFsdWVdPVwicy5vdmVyZmxvdy5zZWFyY2hcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIlxuICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2V0T3ZlcmZsb3dTZWFyY2hRdWVyeScsXG4gICAgICAgICAgICAgICAgcXVlcnk6ICRldmVudFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9yaXYtc2VhcmNoPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy12aWV3LWxpc3RcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2aWV3IG9mIHMuZW5hYmxlZFZpZXdzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy12aWV3XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnN5c3RlbV09XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXRvcF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLWJvdHRvbV09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5kcmFnZ2FibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICAgIChkcmFnc3RhcnQpPVwiZHJhZ1N0YXJ0KGksIHZpZXcudGl0bGUsIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcmFnZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgICAgIChkcm9wKT1cImRyb3AoaSwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0QWN0aXZlVmlldycsXG4gICAgICAgICAgICAgICAgICBpZDogdmlldy5pZCxcbiAgICAgICAgICAgICAgICAgIHNvdXJjZTogJ292ZXJmbG93J1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsXG4gICAgICAgICAgICAgICAgICBvcGVuOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxyaXYtaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXJlb3JkZXJcIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIidSZW9yZGVyJ1wiXG4gICAgICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgICAgICA+PC9yaXYtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXRpdGxlXCIgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAgPHJpdi1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICAgIFtpbmRpY2VzXT1cInZpZXcudGl0bGVIaWdobGlnaHRJbmRpY2VzID8/IFtdXCJcbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInZpZXcudGl0bGVcIlxuICAgICAgICAgICAgICAgID48L3Jpdi1oaWdobGlnaHQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8cml2LXZpZXctbWVudVxuICAgICAgICAgICAgICAgIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICAgICAgICAgICAgICAgIFt2aWV3XT1cInZpZXdcIlxuICAgICAgICAgICAgICAgIFttZW51Q29udGV4dF09XCInb3ZlcmZsb3cnXCJcbiAgICAgICAgICAgICAgPjwvcml2LXZpZXctbWVudT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHJpdi16ZXJvLXN0YXRlXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXMuZW5hYmxlZFZpZXdzLmxlbmd0aFwiXG4gICAgICAgICAgICAgIFttZXNzYWdlXT1cIidObyBtYXRjaGluZyB2aWV3cy4nXCJcbiAgICAgICAgICAgID48L3Jpdi16ZXJvLXN0YXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcml2LWNhbGxvdXQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImFsbC12aWV3cy1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICByaXZCdXR0b25cbiAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgKGNsaWNrKT1cInNob3dBbGxWaWV3cyA9IHRydWVcIlxuICAgICAgPlxuICAgICAgICBBbGwgdmlld3NcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48cml2LWFsbC12aWV3cy1tb2RhbFxuICAqbmdJZj1cInNob3dBbGxWaWV3c1wiXG4gIFttYW5hZ2VyXT1cIm1hbmFnZXJcIlxuICBbdG9wT2Zmc2V0XT1cInNpZGVTaGVldFRvcE9mZnNldFwiXG4gIChjbG9zZSk9XCJzaG93QWxsVmlld3MgPSBmYWxzZVwiXG4+PC9yaXYtYWxsLXZpZXdzLW1vZGFsPlxuXG48cml2LXRvYXN0ICpuZ0lmPVwic2hvd0xpbmtDb3BpZWRUb2FzdCB8IGFzeW5jXCIgKGNsb3NlKT1cInRvYXN0Q2xvc2VkLm5leHQoKVwiPlxuICBMaW5rIHRvIHZpZXcgY29waWVkIHRvIGNsaXBib2FyZFxuPC9yaXYtdG9hc3Q+XG4iXX0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbmF2aWdhdGlvbi92aWV3cy92aWV3cy92aWV3cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9uYXZpZ2F0aW9uL3ZpZXdzL3ZpZXdzL3ZpZXdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRcEMsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFhRSx1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUFLeEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFckMsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQ3RDLHdCQUFtQixHQUFrQixJQUFJLENBQUM7UUFDMUMscUJBQWdCLEdBQXNCLElBQUksQ0FBQztRQW1DM0MsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBWWxDLGNBQVMsR0FBNkMsQ0FDcEQsQ0FBUyxFQUNULENBQTBCLEVBQzFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBZ0JYO0lBaEVDLFNBQVMsQ0FBQyxLQUFhLEVBQUUsS0FBaUIsRUFBRSxZQUFxQjtRQUMvRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLFlBQXFCO1FBQzNDLDZDQUE2QztRQUM3QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBYSxFQUFFLFlBQXFCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUMxQyxlQUFlLEVBQUUsS0FBSztnQkFDdEIsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNqRCxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLFNBQVM7YUFDOUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBSUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQzlCLElBQUksQ0FBQyxPQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDeEIsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLEVBQy9DLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsRUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFPRCxpQkFBaUIsQ0FBQyxVQUFtQztRQUNuRCxRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ25CLEtBQUssU0FBUztnQkFDWixPQUFPLE1BQU0sQ0FBQztZQUNoQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxXQUFXLENBQUM7WUFDckIsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsVUFBbUM7UUFDMUQsT0FBTyxRQUFRLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FqRlUsY0FBYzttR0FBZCxjQUFjLDBOQVNhLFVBQVUsNkJDNUJsRCx5dk9BeU5BOzs0RkR0TWEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxXQUFXLG1CQUdKLHVCQUF1QixDQUFDLE1BQU07OEJBTS9DLE9BQU87c0JBRE4sS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUml2Vmlld3MgfSBmcm9tICcuLi9zdGF0ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi12aWV3cycsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXdzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdzQ29tcG9uZW50PFUgZXh0ZW5kcyBSaXZWaWV3cy5Vc2VyLCBWIGV4dGVuZHMgUml2Vmlld3MuVmlldzxVPj5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgQElucHV0KClcbiAgbWFuYWdlcj86IFJpdlZpZXdzLk1hbmFnZXI8VSwgVj47XG5cbiAgQElucHV0KClcbiAgc2lkZVNoZWV0VG9wT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJmbG93VHJpZ2dlcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBvdmVyZmxvd1RyaWdnZXI/OiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzaG93QWxsVmlld3M6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBkcmFnZ2VkVGFiSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBkcmFnZ2VkT3ZlclRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgZHJhZ2dlZFZpZXdUaXRsZTogVlsndGl0bGUnXSB8IG51bGwgPSBudWxsO1xuXG4gIGRyYWdTdGFydChpbmRleDogbnVtYmVyLCB0aXRsZTogVlsndGl0bGUnXSwgaXNTeXN0ZW1WaWV3OiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gV2UgZG9uJ3QgbGV0IHlvdSBkcmFnIHRoZSBzeXN0ZW0gdmlld1xuICAgIGlmICghaXNTeXN0ZW1WaWV3KSB7XG4gICAgICB0aGlzLmRyYWdnZWRUYWJJbmRleCA9IGluZGV4O1xuICAgICAgdGhpcy5kcmFnZ2VkVmlld1RpdGxlID0gdGl0bGU7XG4gICAgfVxuICB9XG5cbiAgZHJhZ092ZXIoaW5kZXg6IG51bWJlciwgaXNTeXN0ZW1WaWV3OiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gV2UgZG9uJ3QgbGV0IHlvdSBkcmFnIG92ZXIgdGhlIHN5c3RlbSB2aWV3XG4gICAgaWYgKCFpc1N5c3RlbVZpZXcpIHtcbiAgICAgIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IGluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYWdnZWRPdmVyVGFiSW5kZXggPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGRyb3AoaW5kZXg6IG51bWJlciwgb3ZlcmZsb3dNZW51OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsKSB7XG4gICAgICB0aGlzLm1hbmFnZXI/LmFjdGlvbnMubmV4dCh7XG4gICAgICAgIHR5cGU6ICd2aWV3T3JkZXJDaGFuZ2UnLFxuICAgICAgICBwcmV2aW91c0VuYWJsZWRJbmRleDogdGhpcy5kcmFnZ2VkVGFiSW5kZXgsXG4gICAgICAgIG5ld0VuYWJsZWRJbmRleDogaW5kZXgsXG4gICAgICAgIHNvdXJjZTogb3ZlcmZsb3dNZW51ID8gJ292ZXJmbG93RHJhZycgOiAndGFiRHJhZycsXG4gICAgICAgIHZpZXdUaXRsZTogdGhpcy5kcmFnZ2VkVmlld1RpdGxlIHx8IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZHJhZ2dlZFRhYkluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmRyYWdnZWRWaWV3VGl0bGUgPSBudWxsO1xuICAgIHRoaXMuZHJhZ2dlZE92ZXJUYWJJbmRleCA9IG51bGw7XG4gIH1cblxuICB0b2FzdENsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHNob3dMaW5rQ29waWVkVG9hc3Q/OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNob3dMaW5rQ29waWVkVG9hc3QgPSBtZXJnZShcbiAgICAgIHRoaXMubWFuYWdlciEuYWN0aW9ucy5waXBlKFxuICAgICAgICBmaWx0ZXIoKHsgdHlwZSB9KSA9PiB0eXBlID09PSAnY29weUxpbmtUb1ZpZXcnKSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgKSxcbiAgICAgIHRoaXMudG9hc3RDbG9zZWQucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICApO1xuICB9XG5cbiAgdHJhY2tCeUlkOiBUcmFja0J5RnVuY3Rpb248Uml2Vmlld3MuRnVsbFZpZXc8VSwgVj4+ID0gKFxuICAgIF86IG51bWJlcixcbiAgICB2OiBSaXZWaWV3cy5GdWxsVmlldzxVLCBWPixcbiAgKSA9PiB2LmlkO1xuXG4gIGdldFBlcm1pc3Npb25JY29uKHBlcm1pc3Npb246IFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uKTogSWNvbkNvbXBvbmVudC5OYW1lIHtcbiAgICBzd2l0Y2ggKHBlcm1pc3Npb24pIHtcbiAgICAgIGNhc2UgJ3ByaXZhdGUnOlxuICAgICAgICByZXR1cm4gJ0xvY2snO1xuICAgICAgY2FzZSAnc2hhcmVkJzpcbiAgICAgICAgcmV0dXJuICdVc2VyQ2hlY2snO1xuICAgICAgY2FzZSAncHVibGljJzpcbiAgICAgICAgcmV0dXJuICdVc2Vycyc7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHBlcm1pc3Npb246IFJpdlZpZXdzLlZpZXdQZXJtaXNzaW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUml2Vmlld3MuZ2V0UGVybWlzc2lvbkRlc2NyaXB0aW9uKHBlcm1pc3Npb24pO1xuICB9XG59XG4iLCI8ZGl2XG4gIChyaXZDbGllbnRTaXplKT1cIlxuICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0Q29udGFpbmVyV2lkdGgnLCB3aWR0aDogJGV2ZW50LndpZHRoIH0pXG4gIFwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hbmFnZXI/LnN0YXRlIHwgYXN5bmM7IGxldCBzXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5kaXNwbGF5ZWRWaWV3czsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUlkXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlldy5hY3RpdmU7IGVsc2UgaW5hY3RpdmVUYWJcIj5cbiAgICAgICAgPHJpdi12aWV3LW1lbnVcbiAgICAgICAgICBbbWFuYWdlcl09XCJtYW5hZ2VyXCJcbiAgICAgICAgICBbdmlld109XCJ2aWV3XCJcbiAgICAgICAgICBbbWVudUNvbnRleHRdPVwiJ3RhYidcIlxuICAgICAgICAgIGNsYXNzPVwiYWN0aXZlLW1lbnVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51VHJpZ2dlcj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWIgYWN0aXZlXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItbGVmdF09XCJcbiAgICAgICAgICAgICAgICBkcmFnZ2VkT3ZlclRhYkluZGV4ID09PSBpICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZHJhZ2dlZC1vdmVyLXJpZ2h0XT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSwgdmlldy50aXRsZSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyb3ApPVwiZHJvcChpLCBmYWxzZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYi1yZW9yZGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuLWNsYXNzXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIjE2XCJcbiAgICAgICAgICAgICAgPjwvcml2LWljb24+XG4gICAgICAgICAgICAgIDxkaXYgcml2VHJ1bmNhdGU+XG4gICAgICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwZXJtaXNzaW9uLWljb25cIlxuICAgICAgICAgICAgICAgIFtuYW1lXT1cImdldFBlcm1pc3Npb25JY29uKHZpZXcucGVybWlzc2lvbilcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIjEyXCJcbiAgICAgICAgICAgICAgICBbcml2VG9vbHRpcF09XCJnZXRQZXJtaXNzaW9uRGVzY3JpcHRpb24odmlldy5wZXJtaXNzaW9uKVwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9yaXYtdmlldy1tZW51PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luYWN0aXZlVGFiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJ0YWJcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2luZ109XCJkcmFnZ2VkVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItbGVmdF09XCJcbiAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4ID4gaVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmRyYWdnZWQtb3Zlci1yaWdodF09XCJcbiAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgIGRyYWdnZWRUYWJJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgZHJhZ2dlZFRhYkluZGV4IDwgaVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2F0dHIuZHJhZ2dhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgW2F0dHIuZHJvcHBhYmxlXT1cIiF2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSwgdmlldy50aXRsZSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAoZHJhZ2VudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAoZHJhZ292ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IGRyYWdPdmVyKGksIHZpZXcuc3lzdGVtKVwiXG4gICAgICAgICAgKGRyb3ApPVwiZHJvcChpLCBmYWxzZSlcIlxuICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICB0eXBlOiAnc2V0QWN0aXZlVmlldycsXG4gICAgICAgICAgICAgIGlkOiB2aWV3LmlkLFxuICAgICAgICAgICAgICBzb3VyY2U6ICd0YWInXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cml2LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwidGFiLXJlb3JkZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmhpZGRlbi1jbGFzc109XCJ2aWV3LnN5c3RlbVwiXG4gICAgICAgICAgICBbbmFtZV09XCInUmVvcmRlcidcIlxuICAgICAgICAgICAgW3NpemVdPVwiMTZcIlxuICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgIDxzcGFuIHJpdlRydW5jYXRlPlxuICAgICAgICAgICAge3sgdmlldy50aXRsZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKm5nSWY9XCJzLmFsbEVuYWJsZWRWaWV3cy5sZW5ndGggLSBzLmRpc3BsYXllZFZpZXdzLmxlbmd0aDsgbGV0IGNvdW50XCJcbiAgICAgIGNsYXNzPVwidGFiIG92ZXJmbG93XCJcbiAgICAgIHJpdlRydW5jYXRlXG4gICAgICAjb3ZlcmZsb3dUcmlnZ2VyXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoeyB0eXBlOiAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJywgb3BlbjogdHJ1ZSB9KVxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyBjb3VudCB8IHJpdk51bWJlciB9fSBtb3JlXG4gICAgPC9idXR0b24+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInMub3ZlcmZsb3cucGlja2VyT3BlblwiPlxuICAgICAgPHJpdi1jYWxsb3V0XG4gICAgICAgICpyaXYtb3ZlcmxheVxuICAgICAgICBbYW5jaG9yXT1cIm92ZXJmbG93VHJpZ2dlcj8ubmF0aXZlRWxlbWVudFwiXG4gICAgICAgIFtpc01vZGFsXT1cInRydWVcIlxuICAgICAgICBbc2hvd0NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgW3RoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2JvdHRvbS1sZWZ0J1wiXG4gICAgICAgIChjbG9zZSk9XCJcbiAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHsgdHlwZTogJ3NldE92ZXJmbG93UGlja2VyT3BlbicsIG9wZW46IGZhbHNlIH0pXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvdmVyZmxvdy1jYWxsb3V0XCI+XG4gICAgICAgICAgPHJpdi1zZWFyY2hcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzLm92ZXJmbG93LnNlYXJjaFwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiXG4gICAgICAgICAgICAgIG1hbmFnZXI/LmFjdGlvbnM/Lm5leHQoe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRPdmVyZmxvd1NlYXJjaFF1ZXJ5JyxcbiAgICAgICAgICAgICAgICBxdWVyeTogJGV2ZW50XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L3Jpdi1zZWFyY2g+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LXZpZXctbGlzdFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZpZXcgb2Ygcy5lbmFibGVkVmlld3M7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm92ZXJmbG93LXZpZXdcIlxuICAgICAgICAgICAgICBbY2xhc3Muc3lzdGVtXT1cInZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmRyYWdnaW5nXT1cImRyYWdnZWRUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItdG9wXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPiBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5kcmFnZ2VkLW92ZXItYm90dG9tXT1cIlxuICAgICAgICAgICAgICAgIGRyYWdnZWRPdmVyVGFiSW5kZXggPT09IGkgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkcmFnZ2VkVGFiSW5kZXggPCBpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmRyYWdnYWJsZV09XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgICBbYXR0ci5kcm9wcGFibGVdPVwiIXZpZXcuc3lzdGVtXCJcbiAgICAgICAgICAgICAgKGRyYWdzdGFydCk9XCJkcmFnU3RhcnQoaSwgdmlldy50aXRsZSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyYWdlbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAgIChkcmFnb3Zlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZHJhZ092ZXIoaSwgdmlldy5zeXN0ZW0pXCJcbiAgICAgICAgICAgICAgKGRyb3ApPVwiZHJvcChpLCB0cnVlKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICBtYW5hZ2VyPy5hY3Rpb25zPy5uZXh0KHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXRBY3RpdmVWaWV3JyxcbiAgICAgICAgICAgICAgICAgIGlkOiB2aWV3LmlkLFxuICAgICAgICAgICAgICAgICAgc291cmNlOiAnb3ZlcmZsb3cnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWFuYWdlcj8uYWN0aW9ucz8ubmV4dCh7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0T3ZlcmZsb3dQaWNrZXJPcGVuJyxcbiAgICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHJpdi1pY29uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhdmlldy5zeXN0ZW1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3ZlcmZsb3ctcmVvcmRlclwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiJ1Jlb3JkZXInXCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCIxNlwiXG4gICAgICAgICAgICAgID48L3Jpdi1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctdGl0bGVcIiByaXZUcnVuY2F0ZT5cbiAgICAgICAgICAgICAgICA8cml2LWhpZ2hsaWdodFxuICAgICAgICAgICAgICAgICAgW2luZGljZXNdPVwidmlldy50aXRsZUhpZ2hsaWdodEluZGljZXMgPz8gW11cIlxuICAgICAgICAgICAgICAgICAgW3RleHRdPVwidmlldy50aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvcml2LWhpZ2hsaWdodD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxyaXYtdmlldy1tZW51XG4gICAgICAgICAgICAgICAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gICAgICAgICAgICAgICAgW3ZpZXddPVwidmlld1wiXG4gICAgICAgICAgICAgICAgW21lbnVDb250ZXh0XT1cIidvdmVyZmxvdydcIlxuICAgICAgICAgICAgICA+PC9yaXYtdmlldy1tZW51PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cml2LXplcm8tc3RhdGVcbiAgICAgICAgICAgICAgKm5nSWY9XCIhcy5lbmFibGVkVmlld3MubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiJ05vIG1hdGNoaW5nIHZpZXdzLidcIlxuICAgICAgICAgICAgPjwvcml2LXplcm8tc3RhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9yaXYtY2FsbG91dD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWxsLXZpZXdzLWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHJpdkJ1dHRvblxuICAgICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAoY2xpY2spPVwic2hvd0FsbFZpZXdzID0gdHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIEFsbCB2aWV3c1xuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxyaXYtYWxsLXZpZXdzLW1vZGFsXG4gICpuZ0lmPVwic2hvd0FsbFZpZXdzXCJcbiAgW21hbmFnZXJdPVwibWFuYWdlclwiXG4gIFt0b3BPZmZzZXRdPVwic2lkZVNoZWV0VG9wT2Zmc2V0XCJcbiAgKGNsb3NlKT1cInNob3dBbGxWaWV3cyA9IGZhbHNlXCJcbj48L3Jpdi1hbGwtdmlld3MtbW9kYWw+XG5cbjxyaXYtdG9hc3QgKm5nSWY9XCJzaG93TGlua0NvcGllZFRvYXN0IHwgYXN5bmNcIiAoY2xvc2UpPVwidG9hc3RDbG9zZWQubmV4dCgpXCI+XG4gIExpbmsgdG8gdmlldyBjb3BpZWQgdG8gY2xpcGJvYXJkXG48L3Jpdi10b2FzdD5cbiJdfQ==