@angular/cdk-experimental 16.0.0-next.5 → 16.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/column-resize/index.d.ts +3 -2
  2. package/{esm2020 → esm2022}/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  3. package/{esm2020 → esm2022}/column-resize/column-resize-directives/column-resize.mjs +3 -3
  4. package/{esm2020 → esm2022}/column-resize/column-resize-directives/default-enabled-column-resize-flex.mjs +6 -6
  5. package/{esm2020 → esm2022}/column-resize/column-resize-directives/default-enabled-column-resize.mjs +6 -6
  6. package/{esm2020 → esm2022}/column-resize/column-resize-module.mjs +7 -7
  7. package/{esm2020 → esm2022}/column-resize/column-resize-notifier.mjs +5 -5
  8. package/{esm2020 → esm2022}/column-resize/column-resize.mjs +3 -3
  9. package/{esm2020 → esm2022}/column-resize/column-size-store.mjs +3 -3
  10. package/{esm2020 → esm2022}/column-resize/event-dispatcher.mjs +3 -3
  11. package/{esm2020 → esm2022}/column-resize/overlay-handle.mjs +3 -3
  12. package/{esm2020 → esm2022}/column-resize/resizable.mjs +3 -3
  13. package/esm2022/column-resize/resize-strategy.mjs +242 -0
  14. package/{esm2020 → esm2022}/combobox/combobox-module.mjs +4 -4
  15. package/{esm2020 → esm2022}/combobox/combobox-popup.mjs +3 -3
  16. package/{esm2020 → esm2022}/combobox/combobox.mjs +3 -3
  17. package/{esm2020 → esm2022}/popover-edit/edit-event-dispatcher.mjs +3 -3
  18. package/{esm2020 → esm2022}/popover-edit/edit-ref.mjs +3 -3
  19. package/{esm2020 → esm2022}/popover-edit/edit-services.mjs +3 -3
  20. package/{esm2020 → esm2022}/popover-edit/focus-dispatcher.mjs +3 -3
  21. package/{esm2020 → esm2022}/popover-edit/focus-escape-notifier.mjs +3 -3
  22. package/{esm2020 → esm2022}/popover-edit/lens-directives.mjs +7 -7
  23. package/esm2022/popover-edit/popover-edit-module.mjs +63 -0
  24. package/{esm2020 → esm2022}/popover-edit/popover-edit-position-strategy-factory.mjs +5 -5
  25. package/{esm2020 → esm2022}/popover-edit/table-directives.mjs +11 -11
  26. package/{esm2020 → esm2022}/scrolling/auto-size-virtual-scroll.mjs +9 -9
  27. package/{esm2020 → esm2022}/scrolling/scrolling-module.mjs +4 -4
  28. package/esm2022/selection/row-selection.mjs +52 -0
  29. package/{esm2020 → esm2022}/selection/select-all.mjs +3 -3
  30. package/{esm2020 → esm2022}/selection/selection-column.mjs +5 -5
  31. package/{esm2020 → esm2022}/selection/selection-module.mjs +8 -8
  32. package/{esm2020 → esm2022}/selection/selection-toggle.mjs +3 -3
  33. package/{esm2020 → esm2022}/selection/selection.mjs +3 -3
  34. package/{esm2020 → esm2022}/table-scroll-container/table-scroll-container-module.mjs +4 -4
  35. package/esm2022/table-scroll-container/table-scroll-container.mjs +141 -0
  36. package/{esm2020 → esm2022}/version.mjs +1 -1
  37. package/{fesm2015 → fesm2022}/cdk-experimental.mjs +1 -1
  38. package/{fesm2015 → fesm2022}/cdk-experimental.mjs.map +1 -1
  39. package/{fesm2020 → fesm2022}/column-resize.mjs +51 -42
  40. package/fesm2022/column-resize.mjs.map +1 -0
  41. package/{fesm2020 → fesm2022}/combobox.mjs +7 -7
  42. package/{fesm2020 → fesm2022}/combobox.mjs.map +1 -1
  43. package/{fesm2020 → fesm2022}/popover-edit.mjs +52 -52
  44. package/{fesm2020 → fesm2022}/popover-edit.mjs.map +1 -1
  45. package/{fesm2020 → fesm2022}/scrolling.mjs +11 -11
  46. package/{fesm2020 → fesm2022}/scrolling.mjs.map +1 -1
  47. package/{fesm2020 → fesm2022}/selection.mjs +21 -19
  48. package/{fesm2015 → fesm2022}/selection.mjs.map +1 -1
  49. package/{fesm2020 → fesm2022}/table-scroll-container.mjs +16 -7
  50. package/fesm2022/table-scroll-container.mjs.map +1 -0
  51. package/package.json +24 -42
  52. package/table-scroll-container/index.d.ts +3 -2
  53. package/esm2020/column-resize/resize-strategy.mjs +0 -233
  54. package/esm2020/popover-edit/popover-edit-module.mjs +0 -63
  55. package/esm2020/selection/row-selection.mjs +0 -50
  56. package/esm2020/table-scroll-container/table-scroll-container.mjs +0 -132
  57. package/fesm2015/column-resize.mjs +0 -907
  58. package/fesm2015/column-resize.mjs.map +0 -1
  59. package/fesm2015/combobox.mjs +0 -359
  60. package/fesm2015/combobox.mjs.map +0 -1
  61. package/fesm2015/popover-edit.mjs +0 -1151
  62. package/fesm2015/popover-edit.mjs.map +0 -1
  63. package/fesm2015/scrolling.mjs +0 -434
  64. package/fesm2015/scrolling.mjs.map +0 -1
  65. package/fesm2015/selection.mjs +0 -618
  66. package/fesm2015/table-scroll-container.mjs +0 -147
  67. package/fesm2015/table-scroll-container.mjs.map +0 -1
  68. package/fesm2020/cdk-experimental.mjs +0 -7
  69. package/fesm2020/cdk-experimental.mjs.map +0 -1
  70. package/fesm2020/column-resize.mjs.map +0 -1
  71. package/fesm2020/selection.mjs.map +0 -1
  72. package/fesm2020/table-scroll-container.mjs.map +0 -1
  73. /package/{esm2020 → esm2022}/column-resize/column-resize-directives/constants.mjs +0 -0
  74. /package/{esm2020 → esm2022}/column-resize/column-resize_public_index.mjs +0 -0
  75. /package/{esm2020 → esm2022}/column-resize/index.mjs +0 -0
  76. /package/{esm2020 → esm2022}/column-resize/public-api.mjs +0 -0
  77. /package/{esm2020 → esm2022}/column-resize/resize-ref.mjs +0 -0
  78. /package/{esm2020 → esm2022}/column-resize/selectors.mjs +0 -0
  79. /package/{esm2020 → esm2022}/combobox/combobox_public_index.mjs +0 -0
  80. /package/{esm2020 → esm2022}/combobox/index.mjs +0 -0
  81. /package/{esm2020 → esm2022}/combobox/public-api.mjs +0 -0
  82. /package/{esm2020 → esm2022}/index.mjs +0 -0
  83. /package/{esm2020 → esm2022}/popover-edit/constants.mjs +0 -0
  84. /package/{esm2020 → esm2022}/popover-edit/form-value-container.mjs +0 -0
  85. /package/{esm2020 → esm2022}/popover-edit/index.mjs +0 -0
  86. /package/{esm2020 → esm2022}/popover-edit/polyfill.mjs +0 -0
  87. /package/{esm2020 → esm2022}/popover-edit/popover-edit_public_index.mjs +0 -0
  88. /package/{esm2020 → esm2022}/popover-edit/public-api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  90. /package/{esm2020 → esm2022}/scrolling/index.mjs +0 -0
  91. /package/{esm2020 → esm2022}/scrolling/public-api.mjs +0 -0
  92. /package/{esm2020 → esm2022}/scrolling/scrolling_public_index.mjs +0 -0
  93. /package/{esm2020 → esm2022}/selection/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/selection/public-api.mjs +0 -0
  95. /package/{esm2020 → esm2022}/selection/selection-set.mjs +0 -0
  96. /package/{esm2020 → esm2022}/selection/selection_public_index.mjs +0 -0
  97. /package/{esm2020 → esm2022}/table-scroll-container/index.mjs +0 -0
  98. /package/{esm2020 → esm2022}/table-scroll-container/public-api.mjs +0 -0
  99. /package/{esm2020 → esm2022}/table-scroll-container/table-scroll-container_public_index.mjs +0 -0
@@ -1,132 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Directive, ElementRef, Inject, Optional } from '@angular/core';
9
- import { DOCUMENT } from '@angular/common';
10
- import { Directionality } from '@angular/cdk/bidi';
11
- import { _getShadowRoot } from '@angular/cdk/platform';
12
- import { STICKY_POSITIONING_LISTENER, } from '@angular/cdk/table';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "@angular/cdk/bidi";
15
- let nextId = 0;
16
- /**
17
- * Applies styles to the host element that make its scrollbars match up with
18
- * the non-sticky scrollable portions of the CdkTable contained within.
19
- *
20
- * This visual effect only works in Webkit and Blink based browsers (eg Chrome,
21
- * Safari, Edge). Other browsers such as Firefox will gracefully degrade to
22
- * normal scrollbar appearance.
23
- * Further note: These styles have no effect when the browser is using OS-default
24
- * scrollbars. The easiest way to force them into custom mode is to specify width
25
- * and height for the scrollbar and thumb.
26
- */
27
- class CdkTableScrollContainer {
28
- constructor(_elementRef, _document, _directionality) {
29
- this._elementRef = _elementRef;
30
- this._document = _document;
31
- this._directionality = _directionality;
32
- /** The most recent sticky column size values from the CdkTable. */
33
- this._startSizes = [];
34
- this._endSizes = [];
35
- this._headerSizes = [];
36
- this._footerSizes = [];
37
- this._uniqueClassName = `cdk-table-scroll-container-${++nextId}`;
38
- _elementRef.nativeElement.classList.add(this._uniqueClassName);
39
- }
40
- ngOnInit() {
41
- // Note that we need to look up the root node in ngOnInit, rather than the constructor, because
42
- // Angular seems to create the element outside the shadow root and then moves it inside, if the
43
- // node is inside an `ngIf` and a ShadowDom-encapsulated component.
44
- this._styleRoot = _getShadowRoot(this._elementRef.nativeElement) ?? this._document.head;
45
- }
46
- ngOnDestroy() {
47
- this._styleElement?.remove();
48
- this._styleElement = undefined;
49
- }
50
- stickyColumnsUpdated({ sizes }) {
51
- this._startSizes = sizes;
52
- this._updateScrollbar();
53
- }
54
- stickyEndColumnsUpdated({ sizes }) {
55
- this._endSizes = sizes;
56
- this._updateScrollbar();
57
- }
58
- stickyHeaderRowsUpdated({ sizes }) {
59
- this._headerSizes = sizes;
60
- this._updateScrollbar();
61
- }
62
- stickyFooterRowsUpdated({ sizes }) {
63
- this._footerSizes = sizes;
64
- this._updateScrollbar();
65
- }
66
- /**
67
- * Set padding on the scrollbar track based on the sticky states from CdkTable.
68
- */
69
- _updateScrollbar() {
70
- const topMargin = computeMargin(this._headerSizes);
71
- const bottomMargin = computeMargin(this._footerSizes);
72
- const startMargin = computeMargin(this._startSizes);
73
- const endMargin = computeMargin(this._endSizes);
74
- if (topMargin === 0 && bottomMargin === 0 && startMargin === 0 && endMargin === 0) {
75
- this._clearCss();
76
- return;
77
- }
78
- const direction = this._directionality ? this._directionality.value : 'ltr';
79
- const leftMargin = direction === 'rtl' ? endMargin : startMargin;
80
- const rightMargin = direction === 'rtl' ? startMargin : endMargin;
81
- this._applyCss(`${topMargin}px ${rightMargin}px ${bottomMargin}px ${leftMargin}px`);
82
- }
83
- /** Gets the stylesheet for the scrollbar styles and creates it if need be. */
84
- _getStyleSheet() {
85
- if (!this._styleElement) {
86
- this._styleElement = this._document.createElement('style');
87
- this._styleRoot.appendChild(this._styleElement);
88
- }
89
- return this._styleElement.sheet;
90
- }
91
- /** Updates the stylesheet with the specified scrollbar style. */
92
- _applyCss(value) {
93
- this._clearCss();
94
- const selector = `.${this._uniqueClassName}::-webkit-scrollbar-track`;
95
- this._getStyleSheet().insertRule(`${selector} {margin: ${value}}`, 0);
96
- }
97
- _clearCss() {
98
- const styleSheet = this._getStyleSheet();
99
- if (styleSheet.cssRules.length > 0) {
100
- styleSheet.deleteRule(0);
101
- }
102
- }
103
- }
104
- CdkTableScrollContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: CdkTableScrollContainer, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
105
- CdkTableScrollContainer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.7", type: CdkTableScrollContainer, selector: "[cdkTableScrollContainer]", host: { classAttribute: "cdk-table-scroll-container" }, providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer }], ngImport: i0 });
106
- export { CdkTableScrollContainer };
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.7", ngImport: i0, type: CdkTableScrollContainer, decorators: [{
108
- type: Directive,
109
- args: [{
110
- selector: '[cdkTableScrollContainer]',
111
- host: {
112
- 'class': 'cdk-table-scroll-container',
113
- },
114
- providers: [{ provide: STICKY_POSITIONING_LISTENER, useExisting: CdkTableScrollContainer }],
115
- }]
116
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{
117
- type: Inject,
118
- args: [DOCUMENT]
119
- }] }, { type: i1.Directionality, decorators: [{
120
- type: Optional
121
- }] }]; } });
122
- function computeMargin(sizes) {
123
- let margin = 0;
124
- for (const size of sizes) {
125
- if (size == null) {
126
- break;
127
- }
128
- margin += size;
129
- }
130
- return margin;
131
- }
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jZGstZXhwZXJpbWVudGFsL3RhYmxlLXNjcm9sbC1jb250YWluZXIvdGFibGUtc2Nyb2xsLWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQXFCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsMkJBQTJCLEdBSTVCLE1BQU0sb0JBQW9CLENBQUM7OztBQUU1QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFFZjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFPYSx1QkFBdUI7SUFXbEMsWUFDbUIsV0FBb0MsRUFDbEIsU0FBbUIsRUFDekIsZUFBZ0M7UUFGNUMsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ2xCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDekIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBVC9ELG1FQUFtRTtRQUMzRCxnQkFBVyxHQUFpQixFQUFFLENBQUM7UUFDL0IsY0FBUyxHQUFpQixFQUFFLENBQUM7UUFDN0IsaUJBQVksR0FBaUIsRUFBRSxDQUFDO1FBQ2hDLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQztRQU90QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsOEJBQThCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDakUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRO1FBQ04sK0ZBQStGO1FBQy9GLCtGQUErRjtRQUMvRixtRUFBbUU7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztJQUMxRixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVELG9CQUFvQixDQUFDLEVBQUMsS0FBSyxFQUFlO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFDLEtBQUssRUFBZTtRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsRUFBQyxLQUFLLEVBQWU7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELHVCQUF1QixDQUFDLEVBQUMsS0FBSyxFQUFlO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRCxNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhELElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxZQUFZLEtBQUssQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsRUFBRTtZQUNqRixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsT0FBTztTQUNSO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM1RSxNQUFNLFVBQVUsR0FBRyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNqRSxNQUFNLFdBQVcsR0FBRyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVsRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxNQUFNLFdBQVcsTUFBTSxZQUFZLE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsOEVBQThFO0lBQ3RFLGNBQWM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakQ7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBc0IsQ0FBQztJQUNuRCxDQUFDO0lBRUQsaUVBQWlFO0lBQ3pELFNBQVMsQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsMkJBQTJCLENBQUM7UUFDdEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsYUFBYSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7MkhBaEdVLHVCQUF1Qiw0Q0FheEIsUUFBUTsrR0FiUCx1QkFBdUIsNEdBRnZCLENBQUMsRUFBQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsV0FBVyxFQUFFLHVCQUF1QixFQUFDLENBQUM7U0FFOUUsdUJBQXVCO2tHQUF2Qix1QkFBdUI7a0JBUG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSw0QkFBNEI7cUJBQ3RDO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFdBQVcseUJBQXlCLEVBQUMsQ0FBQztpQkFDMUY7OzBCQWNJLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7QUFxRmIsU0FBUyxhQUFhLENBQUMsS0FBb0M7SUFDekQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFO1lBQ2hCLE1BQU07U0FDUDtRQUNELE1BQU0sSUFBSSxJQUFJLENBQUM7S0FDaEI7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtfZ2V0U2hhZG93Um9vdH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7XG4gIFNUSUNLWV9QT1NJVElPTklOR19MSVNURU5FUixcbiAgU3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcixcbiAgU3RpY2t5U2l6ZSxcbiAgU3RpY2t5VXBkYXRlLFxufSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuLyoqXG4gKiBBcHBsaWVzIHN0eWxlcyB0byB0aGUgaG9zdCBlbGVtZW50IHRoYXQgbWFrZSBpdHMgc2Nyb2xsYmFycyBtYXRjaCB1cCB3aXRoXG4gKiB0aGUgbm9uLXN0aWNreSBzY3JvbGxhYmxlIHBvcnRpb25zIG9mIHRoZSBDZGtUYWJsZSBjb250YWluZWQgd2l0aGluLlxuICpcbiAqIFRoaXMgdmlzdWFsIGVmZmVjdCBvbmx5IHdvcmtzIGluIFdlYmtpdCBhbmQgQmxpbmsgYmFzZWQgYnJvd3NlcnMgKGVnIENocm9tZSxcbiAqIFNhZmFyaSwgRWRnZSkuIE90aGVyIGJyb3dzZXJzIHN1Y2ggYXMgRmlyZWZveCB3aWxsIGdyYWNlZnVsbHkgZGVncmFkZSB0b1xuICogbm9ybWFsIHNjcm9sbGJhciBhcHBlYXJhbmNlLlxuICogRnVydGhlciBub3RlOiBUaGVzZSBzdHlsZXMgaGF2ZSBubyBlZmZlY3Qgd2hlbiB0aGUgYnJvd3NlciBpcyB1c2luZyBPUy1kZWZhdWx0XG4gKiBzY3JvbGxiYXJzLiBUaGUgZWFzaWVzdCB3YXkgdG8gZm9yY2UgdGhlbSBpbnRvIGN1c3RvbSBtb2RlIGlzIHRvIHNwZWNpZnkgd2lkdGhcbiAqIGFuZCBoZWlnaHQgZm9yIHRoZSBzY3JvbGxiYXIgYW5kIHRodW1iLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY2RrVGFibGVTY3JvbGxDb250YWluZXJdJyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdjZGstdGFibGUtc2Nyb2xsLWNvbnRhaW5lcicsXG4gIH0sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBTVElDS1lfUE9TSVRJT05JTkdfTElTVEVORVIsIHVzZUV4aXN0aW5nOiBDZGtUYWJsZVNjcm9sbENvbnRhaW5lcn1dLFxufSlcbmV4cG9ydCBjbGFzcyBDZGtUYWJsZVNjcm9sbENvbnRhaW5lciBpbXBsZW1lbnRzIFN0aWNreVBvc2l0aW9uaW5nTGlzdGVuZXIsIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdW5pcXVlQ2xhc3NOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0eWxlUm9vdCE6IE5vZGU7XG4gIHByaXZhdGUgX3N0eWxlRWxlbWVudD86IEhUTUxTdHlsZUVsZW1lbnQ7XG5cbiAgLyoqIFRoZSBtb3N0IHJlY2VudCBzdGlja3kgY29sdW1uIHNpemUgdmFsdWVzIGZyb20gdGhlIENka1RhYmxlLiAqL1xuICBwcml2YXRlIF9zdGFydFNpemVzOiBTdGlja3lTaXplW10gPSBbXTtcbiAgcHJpdmF0ZSBfZW5kU2l6ZXM6IFN0aWNreVNpemVbXSA9IFtdO1xuICBwcml2YXRlIF9oZWFkZXJTaXplczogU3RpY2t5U2l6ZVtdID0gW107XG4gIHByaXZhdGUgX2Zvb3RlclNpemVzOiBTdGlja3lTaXplW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogRG9jdW1lbnQsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfZGlyZWN0aW9uYWxpdHk/OiBEaXJlY3Rpb25hbGl0eSxcbiAgKSB7XG4gICAgdGhpcy5fdW5pcXVlQ2xhc3NOYW1lID0gYGNkay10YWJsZS1zY3JvbGwtY29udGFpbmVyLSR7KytuZXh0SWR9YDtcbiAgICBfZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fdW5pcXVlQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIE5vdGUgdGhhdCB3ZSBuZWVkIHRvIGxvb2sgdXAgdGhlIHJvb3Qgbm9kZSBpbiBuZ09uSW5pdCwgcmF0aGVyIHRoYW4gdGhlIGNvbnN0cnVjdG9yLCBiZWNhdXNlXG4gICAgLy8gQW5ndWxhciBzZWVtcyB0byBjcmVhdGUgdGhlIGVsZW1lbnQgb3V0c2lkZSB0aGUgc2hhZG93IHJvb3QgYW5kIHRoZW4gbW92ZXMgaXQgaW5zaWRlLCBpZiB0aGVcbiAgICAvLyBub2RlIGlzIGluc2lkZSBhbiBgbmdJZmAgYW5kIGEgU2hhZG93RG9tLWVuY2Fwc3VsYXRlZCBjb21wb25lbnQuXG4gICAgdGhpcy5fc3R5bGVSb290ID0gX2dldFNoYWRvd1Jvb3QodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSA/PyB0aGlzLl9kb2N1bWVudC5oZWFkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3R5bGVFbGVtZW50Py5yZW1vdmUoKTtcbiAgICB0aGlzLl9zdHlsZUVsZW1lbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBzdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXN9OiBTdGlja3lVcGRhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFNpemVzID0gc2l6ZXM7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyKCk7XG4gIH1cblxuICBzdGlja3lFbmRDb2x1bW5zVXBkYXRlZCh7c2l6ZXN9OiBTdGlja3lVcGRhdGUpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmRTaXplcyA9IHNpemVzO1xuICAgIHRoaXMuX3VwZGF0ZVNjcm9sbGJhcigpO1xuICB9XG5cbiAgc3RpY2t5SGVhZGVyUm93c1VwZGF0ZWQoe3NpemVzfTogU3RpY2t5VXBkYXRlKTogdm9pZCB7XG4gICAgdGhpcy5faGVhZGVyU2l6ZXMgPSBzaXplcztcbiAgICB0aGlzLl91cGRhdGVTY3JvbGxiYXIoKTtcbiAgfVxuXG4gIHN0aWNreUZvb3RlclJvd3NVcGRhdGVkKHtzaXplc306IFN0aWNreVVwZGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX2Zvb3RlclNpemVzID0gc2l6ZXM7XG4gICAgdGhpcy5fdXBkYXRlU2Nyb2xsYmFyKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHBhZGRpbmcgb24gdGhlIHNjcm9sbGJhciB0cmFjayBiYXNlZCBvbiB0aGUgc3RpY2t5IHN0YXRlcyBmcm9tIENka1RhYmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlU2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIGNvbnN0IHRvcE1hcmdpbiA9IGNvbXB1dGVNYXJnaW4odGhpcy5faGVhZGVyU2l6ZXMpO1xuICAgIGNvbnN0IGJvdHRvbU1hcmdpbiA9IGNvbXB1dGVNYXJnaW4odGhpcy5fZm9vdGVyU2l6ZXMpO1xuICAgIGNvbnN0IHN0YXJ0TWFyZ2luID0gY29tcHV0ZU1hcmdpbih0aGlzLl9zdGFydFNpemVzKTtcbiAgICBjb25zdCBlbmRNYXJnaW4gPSBjb21wdXRlTWFyZ2luKHRoaXMuX2VuZFNpemVzKTtcblxuICAgIGlmICh0b3BNYXJnaW4gPT09IDAgJiYgYm90dG9tTWFyZ2luID09PSAwICYmIHN0YXJ0TWFyZ2luID09PSAwICYmIGVuZE1hcmdpbiA9PT0gMCkge1xuICAgICAgdGhpcy5fY2xlYXJDc3MoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSB0aGlzLl9kaXJlY3Rpb25hbGl0eSA/IHRoaXMuX2RpcmVjdGlvbmFsaXR5LnZhbHVlIDogJ2x0cic7XG4gICAgY29uc3QgbGVmdE1hcmdpbiA9IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyBlbmRNYXJnaW4gOiBzdGFydE1hcmdpbjtcbiAgICBjb25zdCByaWdodE1hcmdpbiA9IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyBzdGFydE1hcmdpbiA6IGVuZE1hcmdpbjtcblxuICAgIHRoaXMuX2FwcGx5Q3NzKGAke3RvcE1hcmdpbn1weCAke3JpZ2h0TWFyZ2lufXB4ICR7Ym90dG9tTWFyZ2lufXB4ICR7bGVmdE1hcmdpbn1weGApO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIHN0eWxlc2hlZXQgZm9yIHRoZSBzY3JvbGxiYXIgc3R5bGVzIGFuZCBjcmVhdGVzIGl0IGlmIG5lZWQgYmUuICovXG4gIHByaXZhdGUgX2dldFN0eWxlU2hlZXQoKTogQ1NTU3R5bGVTaGVldCB7XG4gICAgaWYgKCF0aGlzLl9zdHlsZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICB0aGlzLl9zdHlsZVJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3R5bGVFbGVtZW50LnNoZWV0IGFzIENTU1N0eWxlU2hlZXQ7XG4gIH1cblxuICAvKiogVXBkYXRlcyB0aGUgc3R5bGVzaGVldCB3aXRoIHRoZSBzcGVjaWZpZWQgc2Nyb2xsYmFyIHN0eWxlLiAqL1xuICBwcml2YXRlIF9hcHBseUNzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2xlYXJDc3MoKTtcblxuICAgIGNvbnN0IHNlbGVjdG9yID0gYC4ke3RoaXMuX3VuaXF1ZUNsYXNzTmFtZX06Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrYDtcbiAgICB0aGlzLl9nZXRTdHlsZVNoZWV0KCkuaW5zZXJ0UnVsZShgJHtzZWxlY3Rvcn0ge21hcmdpbjogJHt2YWx1ZX19YCwgMCk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckNzcygpIHtcbiAgICBjb25zdCBzdHlsZVNoZWV0ID0gdGhpcy5fZ2V0U3R5bGVTaGVldCgpO1xuICAgIGlmIChzdHlsZVNoZWV0LmNzc1J1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHN0eWxlU2hlZXQuZGVsZXRlUnVsZSgwKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZU1hcmdpbihzaXplczogKG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpW10pOiBudW1iZXIge1xuICBsZXQgbWFyZ2luID0gMDtcbiAgZm9yIChjb25zdCBzaXplIG9mIHNpemVzKSB7XG4gICAgaWYgKHNpemUgPT0gbnVsbCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIG1hcmdpbiArPSBzaXplO1xuICB9XG4gIHJldHVybiBtYXJnaW47XG59XG4iXX0=