@skyux/indicators 8.7.0 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/{esm2020 → esm2022}/lib/modules/alert/alert.component.mjs +56 -55
  2. package/{esm2020 → esm2022}/lib/modules/alert/alert.module.mjs +13 -13
  3. package/{esm2020 → esm2022}/lib/modules/chevron/chevron.component.mjs +4 -4
  4. package/{esm2020 → esm2022}/lib/modules/chevron/chevron.module.mjs +13 -13
  5. package/{esm2020 → esm2022}/lib/modules/expansion-indicator/expansion-indicator.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/modules/expansion-indicator/expansion-indicator.module.mjs +5 -5
  7. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline-aria-expanded.pipe.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline.module.mjs +13 -13
  10. package/esm2022/lib/modules/icon/icon-class-list.pipe.mjs +35 -0
  11. package/esm2022/lib/modules/icon/icon-resolver.service.mjs +57 -0
  12. package/{esm2020 → esm2022}/lib/modules/icon/icon-stack.component.mjs +4 -4
  13. package/{esm2020 → esm2022}/lib/modules/icon/icon.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/icon/icon.module.mjs +5 -5
  15. package/{esm2020 → esm2022}/lib/modules/key-info/key-info-label.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/modules/key-info/key-info-value.component.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/modules/key-info/key-info.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/modules/key-info/key-info.module.mjs +9 -9
  19. package/esm2022/lib/modules/label/label.component.mjs +118 -0
  20. package/{esm2020 → esm2022}/lib/modules/label/label.module.mjs +11 -11
  21. package/{esm2020 → esm2022}/lib/modules/shared/sky-indicators-resources.module.mjs +11 -11
  22. package/esm2022/lib/modules/status-indicator/status-indicator.component.mjs +104 -0
  23. package/{esm2020 → esm2022}/lib/modules/status-indicator/status-indicator.module.mjs +13 -13
  24. package/esm2022/lib/modules/text-highlight/text-highlight.directive.mjs +151 -0
  25. package/{esm2020 → esm2022}/lib/modules/text-highlight/text-highlight.module.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/modules/tokens/token.component.mjs +15 -15
  27. package/esm2022/lib/modules/tokens/tokens.component.mjs +332 -0
  28. package/{esm2020 → esm2022}/lib/modules/tokens/tokens.module.mjs +11 -11
  29. package/esm2022/lib/modules/wait/wait-adapter.service.mjs +224 -0
  30. package/{esm2020 → esm2022}/lib/modules/wait/wait-page.component.mjs +4 -4
  31. package/esm2022/lib/modules/wait/wait.component.mjs +171 -0
  32. package/{esm2020 → esm2022}/lib/modules/wait/wait.module.mjs +5 -5
  33. package/esm2022/lib/modules/wait/wait.service.mjs +159 -0
  34. package/esm2022/testing/alert/alert-harness.mjs +112 -0
  35. package/esm2022/testing/alert-fixture.mjs +70 -0
  36. package/esm2022/testing/chevron/chevron-harness.mjs +38 -0
  37. package/esm2022/testing/help-inline/help-inline-harness.mjs +25 -0
  38. package/esm2022/testing/icon/icon-harness.mjs +86 -0
  39. package/esm2022/testing/key-info/key-info-harness.mjs +43 -0
  40. package/{esm2020 → esm2022}/testing/key-info/key-info-label-harness.mjs +5 -5
  41. package/{esm2020 → esm2022}/testing/key-info/key-info-value-harness.mjs +5 -5
  42. package/esm2022/testing/label/label-harness.mjs +88 -0
  43. package/esm2022/testing/label-fixture.mjs +42 -0
  44. package/esm2022/testing/tokens/token-harness.mjs +63 -0
  45. package/esm2022/testing/tokens/tokens-harness.mjs +45 -0
  46. package/esm2022/testing/wait/wait-harness.mjs +60 -0
  47. package/esm2022/testing/wait-fixture.mjs +28 -0
  48. package/{fesm2020 → fesm2022}/skyux-indicators-testing.mjs +146 -190
  49. package/{fesm2020 → fesm2022}/skyux-indicators-testing.mjs.map +1 -1
  50. package/{fesm2020 → fesm2022}/skyux-indicators.mjs +756 -737
  51. package/fesm2022/skyux-indicators.mjs.map +1 -0
  52. package/lib/modules/alert/alert.component.d.ts +1 -1
  53. package/lib/modules/chevron/chevron.component.d.ts +1 -1
  54. package/lib/modules/expansion-indicator/expansion-indicator.component.d.ts +1 -1
  55. package/lib/modules/help-inline/help-inline.component.d.ts +1 -1
  56. package/lib/modules/icon/icon-stack.component.d.ts +1 -1
  57. package/lib/modules/icon/icon.component.d.ts +1 -1
  58. package/lib/modules/key-info/key-info.component.d.ts +1 -1
  59. package/lib/modules/label/label.component.d.ts +1 -1
  60. package/lib/modules/status-indicator/status-indicator.component.d.ts +1 -1
  61. package/lib/modules/text-highlight/text-highlight.directive.d.ts +1 -1
  62. package/lib/modules/tokens/token.component.d.ts +1 -1
  63. package/lib/modules/tokens/tokens.component.d.ts +1 -1
  64. package/lib/modules/wait/wait-page.component.d.ts +1 -1
  65. package/lib/modules/wait/wait.component.d.ts +1 -1
  66. package/package.json +17 -25
  67. package/esm2020/lib/modules/icon/icon-class-list.pipe.mjs +0 -40
  68. package/esm2020/lib/modules/icon/icon-resolver.service.mjs +0 -60
  69. package/esm2020/lib/modules/label/label.component.mjs +0 -116
  70. package/esm2020/lib/modules/status-indicator/status-indicator.component.mjs +0 -104
  71. package/esm2020/lib/modules/text-highlight/text-highlight.directive.mjs +0 -154
  72. package/esm2020/lib/modules/tokens/tokens.component.mjs +0 -320
  73. package/esm2020/lib/modules/wait/wait-adapter.service.mjs +0 -221
  74. package/esm2020/lib/modules/wait/wait.component.mjs +0 -167
  75. package/esm2020/lib/modules/wait/wait.service.mjs +0 -161
  76. package/esm2020/testing/alert/alert-harness.mjs +0 -118
  77. package/esm2020/testing/alert-fixture.mjs +0 -72
  78. package/esm2020/testing/chevron/chevron-harness.mjs +0 -44
  79. package/esm2020/testing/help-inline/help-inline-harness.mjs +0 -31
  80. package/esm2020/testing/icon/icon-harness.mjs +0 -90
  81. package/esm2020/testing/key-info/key-info-harness.mjs +0 -49
  82. package/esm2020/testing/label/label-harness.mjs +0 -94
  83. package/esm2020/testing/label-fixture.mjs +0 -45
  84. package/esm2020/testing/tokens/token-harness.mjs +0 -69
  85. package/esm2020/testing/tokens/tokens-harness.mjs +0 -45
  86. package/esm2020/testing/wait/wait-harness.mjs +0 -66
  87. package/esm2020/testing/wait-fixture.mjs +0 -31
  88. package/fesm2015/skyux-indicators-testing.mjs +0 -854
  89. package/fesm2015/skyux-indicators-testing.mjs.map +0 -1
  90. package/fesm2015/skyux-indicators.mjs +0 -2172
  91. package/fesm2015/skyux-indicators.mjs.map +0 -1
  92. package/fesm2020/skyux-indicators.mjs.map +0 -1
  93. /package/{esm2020 → esm2022}/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/modules/icon/icon-stack-item.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-resolved.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-type.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-variant-type.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/modules/key-info/key-info-layout-type.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/modules/label/label-type.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-description-type.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon-type.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon-utility.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/modules/tokens/types/token-selected-event-args.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/modules/tokens/types/token.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/modules/tokens/types/tokens-message-type.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/modules/tokens/types/tokens-message.mjs +0 -0
  108. /package/{esm2020 → esm2022}/skyux-indicators.mjs +0 -0
  109. /package/{esm2020 → esm2022}/testing/alert/alert-harness-filters.mjs +0 -0
  110. /package/{esm2020 → esm2022}/testing/help-inline/help-inline-harness-filters.mjs +0 -0
  111. /package/{esm2020 → esm2022}/testing/icon/icon-harness-filters.mjs +0 -0
  112. /package/{esm2020 → esm2022}/testing/key-info/key-info-harness-filters.mjs +0 -0
  113. /package/{esm2020 → esm2022}/testing/label/label-harness-filters.mjs +0 -0
  114. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  115. /package/{esm2020 → esm2022}/testing/skyux-indicators-testing.mjs +0 -0
  116. /package/{esm2020 → esm2022}/testing/tokens/token-harness-filters.mjs +0 -0
  117. /package/{esm2020 → esm2022}/testing/tokens/tokens-harness-filters.mjs +0 -0
  118. /package/{esm2020 → esm2022}/testing/wait/wait-harness-filters.mjs +0 -0
@@ -1,221 +0,0 @@
1
- var _SkyWaitAdapterService_instances, _SkyWaitAdapterService_focusableElements, _SkyWaitAdapterService_renderer, _SkyWaitAdapterService_focusNextElement, _SkyWaitAdapterService_isShift, _SkyWaitAdapterService_isElementHidden, _SkyWaitAdapterService_isElementBusyOrHidden, _SkyWaitAdapterService_clearDocumentFocus, _SkyWaitAdapterService_getFocusableElements, _SkyWaitAdapterService_clearListeners;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Injectable, } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- const busyElements = {};
6
- // Need to add the following to classes which contain static methods.
7
- // See: https://github.com/ng-packagr/ng-packagr/issues/641
8
- /**
9
- * @internal
10
- * @dynamic
11
- */
12
- export class SkyWaitAdapterService {
13
- constructor(rendererFactory) {
14
- _SkyWaitAdapterService_instances.add(this);
15
- _SkyWaitAdapterService_focusableElements.set(this, void 0);
16
- _SkyWaitAdapterService_renderer.set(this, void 0);
17
- __classPrivateFieldSet(this, _SkyWaitAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
18
- }
19
- ngOnDestroy() {
20
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_clearListeners).call(this);
21
- }
22
- setWaitBounds(waitEl) {
23
- __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").setStyle(waitEl.nativeElement.parentElement, 'position', 'relative');
24
- }
25
- removeWaitBounds(waitEl) {
26
- __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").removeStyle(waitEl.nativeElement.parentElement, 'position');
27
- }
28
- setBusyState(waitEl, isFullPage, isWaiting, isNonBlocking, waitComponentId) {
29
- const busyEl = isFullPage
30
- ? document.body
31
- : waitEl.nativeElement.parentElement;
32
- if (!isNonBlocking) {
33
- if (isWaiting) {
34
- let restoreFocusElement = undefined;
35
- let restoreFocusCheckElement = undefined;
36
- __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").setAttribute(busyEl, 'aria-busy', 'true');
37
- // Remove focus from page when full page blocking wait
38
- if (isFullPage || busyEl.contains(document.activeElement)) {
39
- if (document.activeElement !== document.body) {
40
- restoreFocusElement = document.activeElement;
41
- }
42
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_clearDocumentFocus).call(this);
43
- restoreFocusCheckElement = document.activeElement;
44
- }
45
- if (isFullPage) {
46
- SkyWaitAdapterService.isPageWaitActive = true;
47
- const endListenerFunc = __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").listen(document.body, 'keydown', (event) => {
48
- /*istanbul ignore else */
49
- if (event.key) {
50
- /* istanbul ignore else */
51
- if (event.key.toLowerCase() === 'tab') {
52
- event.target.blur();
53
- event.preventDefault();
54
- event.stopPropagation();
55
- event.stopImmediatePropagation();
56
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_clearDocumentFocus).call(this);
57
- }
58
- }
59
- });
60
- if (waitComponentId) {
61
- busyElements[waitComponentId] = {
62
- listener: endListenerFunc,
63
- busyEl: undefined,
64
- restoreFocusElement,
65
- restoreFocusCheckElement,
66
- };
67
- }
68
- }
69
- else {
70
- const endListenerFunc = __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").listen(busyEl, 'focusin', (event) => {
71
- /* istanbul ignore else */
72
- if (!isNonBlocking) {
73
- event.preventDefault();
74
- event.stopPropagation();
75
- event.stopImmediatePropagation();
76
- if (SkyWaitAdapterService.isPageWaitActive) {
77
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_clearDocumentFocus).call(this);
78
- }
79
- else {
80
- // Propagate tab navigation if attempted into waited element
81
- const target = event.target;
82
- if (target) {
83
- target.blur();
84
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_focusNextElement).call(this, target, __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isShift).call(this, event));
85
- }
86
- }
87
- }
88
- });
89
- if (waitComponentId) {
90
- busyElements[waitComponentId] = {
91
- listener: endListenerFunc,
92
- busyEl,
93
- restoreFocusElement,
94
- restoreFocusCheckElement,
95
- };
96
- }
97
- }
98
- }
99
- else {
100
- __classPrivateFieldGet(this, _SkyWaitAdapterService_renderer, "f").removeAttribute(busyEl, 'aria-busy');
101
- if (isFullPage) {
102
- SkyWaitAdapterService.isPageWaitActive = false;
103
- }
104
- if (waitComponentId && waitComponentId in busyElements) {
105
- const busyElement = busyElements[waitComponentId];
106
- busyElement.listener();
107
- // If there is a restore focus element and the focus has not moved, restore focus.
108
- if (busyElement.restoreFocusCheckElement === document.activeElement) {
109
- busyElement.restoreFocusElement?.focus();
110
- }
111
- delete busyElements[waitComponentId];
112
- }
113
- }
114
- }
115
- }
116
- }
117
- _SkyWaitAdapterService_focusableElements = new WeakMap(), _SkyWaitAdapterService_renderer = new WeakMap(), _SkyWaitAdapterService_instances = new WeakSet(), _SkyWaitAdapterService_focusNextElement = function _SkyWaitAdapterService_focusNextElement(targetElement, shiftKey) {
118
- const focusable = __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_getFocusableElements).call(this);
119
- // If shift tab, go in the other direction
120
- const modifier = shiftKey ? -1 : 1;
121
- // Find the next navigable element that isn't waiting
122
- const startingIndex = focusable.indexOf(targetElement);
123
- let curIndex = startingIndex + modifier;
124
- while (focusable[curIndex] &&
125
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementBusyOrHidden).call(this, focusable[curIndex])) {
126
- curIndex += modifier;
127
- }
128
- if (focusable[curIndex] &&
129
- !__classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementBusyOrHidden).call(this, focusable[curIndex])) {
130
- focusable[curIndex].focus();
131
- }
132
- else {
133
- // Try wrapping the navigation
134
- /* istanbul ignore next */
135
- /* sanity check */
136
- curIndex = modifier > 0 ? 0 : focusable.length - 1;
137
- while (curIndex !== startingIndex &&
138
- focusable[curIndex] &&
139
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementBusyOrHidden).call(this, focusable[curIndex])) {
140
- /* istanbul ignore next */
141
- /* sanity check */
142
- curIndex += modifier;
143
- }
144
- /* istanbul ignore else */
145
- /* sanity check */
146
- if (focusable[curIndex] &&
147
- !__classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementBusyOrHidden).call(this, focusable[curIndex])) {
148
- focusable[curIndex].focus();
149
- }
150
- else {
151
- // No valid target, wipe focus
152
- __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_clearDocumentFocus).call(this);
153
- }
154
- }
155
- // clear focusableElements list
156
- __classPrivateFieldSet(this, _SkyWaitAdapterService_focusableElements, undefined, "f");
157
- }, _SkyWaitAdapterService_isShift = function _SkyWaitAdapterService_isShift(event) {
158
- // Determine if shift+tab was used based on element order
159
- const elements = __classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_getFocusableElements).call(this).filter((elem) => !__classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementHidden).call(this, elem));
160
- const previousInd = elements.indexOf(event.relatedTarget);
161
- const currentInd = elements.indexOf(event.target);
162
- return (previousInd === currentInd + 1 ||
163
- (previousInd === 0 && currentInd === elements.length - 1) ||
164
- previousInd > currentInd ||
165
- !event.relatedTarget);
166
- }, _SkyWaitAdapterService_isElementHidden = function _SkyWaitAdapterService_isElementHidden(element) {
167
- const style = window.getComputedStyle(element);
168
- return style.display === 'none' || style.visibility === 'hidden';
169
- }, _SkyWaitAdapterService_isElementBusyOrHidden = function _SkyWaitAdapterService_isElementBusyOrHidden(element) {
170
- if (__classPrivateFieldGet(this, _SkyWaitAdapterService_instances, "m", _SkyWaitAdapterService_isElementHidden).call(this, element)) {
171
- return true;
172
- }
173
- for (const key of Object.keys(busyElements)) {
174
- const parentElement = busyElements[key].busyEl;
175
- if (parentElement && parentElement.contains(element)) {
176
- return true;
177
- }
178
- }
179
- return false;
180
- }, _SkyWaitAdapterService_clearDocumentFocus = function _SkyWaitAdapterService_clearDocumentFocus() {
181
- const activeElement = document.activeElement;
182
- /* istanbul ignore else */
183
- if (activeElement) {
184
- activeElement.blur();
185
- }
186
- document.body.focus();
187
- }, _SkyWaitAdapterService_getFocusableElements = function _SkyWaitAdapterService_getFocusableElements() {
188
- // Keep this cached so we can reduce queries
189
- if (__classPrivateFieldGet(this, _SkyWaitAdapterService_focusableElements, "f")) {
190
- return __classPrivateFieldGet(this, _SkyWaitAdapterService_focusableElements, "f");
191
- }
192
- // Select all possible focusable elements
193
- const focusableElements = 'a[href], ' +
194
- 'area[href], ' +
195
- "input:not([disabled]):not([tabindex='-1']), " +
196
- "button:not([disabled]):not([tabindex='-1']), " +
197
- "select:not([disabled]):not([tabindex='-1']), " +
198
- "textarea:not([disabled]):not([tabindex='-1']), " +
199
- 'iframe, object, embed, ' +
200
- "*[tabindex]:not([tabindex='-1']), " +
201
- '*[contenteditable=true]';
202
- __classPrivateFieldSet(this, _SkyWaitAdapterService_focusableElements, Array.prototype.filter.call(document.body.querySelectorAll(focusableElements), (element) => {
203
- return (element.offsetWidth > 0 ||
204
- element.offsetHeight > 0 ||
205
- element === document.activeElement);
206
- }), "f");
207
- return __classPrivateFieldGet(this, _SkyWaitAdapterService_focusableElements, "f");
208
- }, _SkyWaitAdapterService_clearListeners = function _SkyWaitAdapterService_clearListeners() {
209
- SkyWaitAdapterService.isPageWaitActive = false;
210
- for (const key of Object.keys(busyElements)) {
211
- busyElements[key].listener();
212
- delete busyElements[key];
213
- }
214
- };
215
- SkyWaitAdapterService.isPageWaitActive = false;
216
- SkyWaitAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
217
- SkyWaitAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitAdapterService });
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitAdapterService, decorators: [{
219
- type: Injectable
220
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCxVQUFVLEdBSVgsTUFBTSxlQUFlLENBQUM7O0FBRXZCLE1BQU0sWUFBWSxHQU9kLEVBQUUsQ0FBQztBQUVQLHFFQUFxRTtBQUNyRSwyREFBMkQ7QUFDM0Q7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFZLGVBQWlDOztRQUg3QywyREFBOEM7UUFDOUMsa0RBQXFCO1FBR25CLHVCQUFBLElBQUksbUNBQWEsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQUEsQ0FBQztJQUNuRSxDQUFDO0lBRU0sV0FBVztRQUNoQix1QkFBQSxJQUFJLCtFQUFnQixNQUFwQixJQUFJLENBQWtCLENBQUM7SUFDekIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFrQjtRQUNyQyx1QkFBQSxJQUFJLHVDQUFVLENBQUMsUUFBUSxDQUNyQixNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFDbEMsVUFBVSxFQUNWLFVBQVUsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVNLGdCQUFnQixDQUFDLE1BQWtCO1FBQ3hDLHVCQUFBLElBQUksdUNBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLFlBQVksQ0FDakIsTUFBa0IsRUFDbEIsVUFBbUIsRUFDbkIsU0FBa0IsRUFDbEIsYUFBc0IsRUFDdEIsZUFBd0I7UUFFeEIsTUFBTSxNQUFNLEdBQUcsVUFBVTtZQUN2QixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDZixDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFFdkMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNsQixJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLG1CQUFtQixHQUE0QixTQUFTLENBQUM7Z0JBQzdELElBQUksd0JBQXdCLEdBQTRCLFNBQVMsQ0FBQztnQkFDbEUsdUJBQUEsSUFBSSx1Q0FBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUV6RCxzREFBc0Q7Z0JBQ3RELElBQUksVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFO29CQUN6RCxJQUFJLFFBQVEsQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTt3QkFDNUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGFBQTRCLENBQUM7cUJBQzdEO29CQUNELHVCQUFBLElBQUksbUZBQW9CLE1BQXhCLElBQUksQ0FBc0IsQ0FBQztvQkFDM0Isd0JBQXdCLEdBQUcsUUFBUSxDQUFDLGFBQTRCLENBQUM7aUJBQ2xFO2dCQUVELElBQUksVUFBVSxFQUFFO29CQUNkLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztvQkFDOUMsTUFBTSxlQUFlLEdBQUcsdUJBQUEsSUFBSSx1Q0FBVSxDQUFDLE1BQU0sQ0FDM0MsUUFBUSxDQUFDLElBQUksRUFDYixTQUFTLEVBQ1QsQ0FBQyxLQUFvQixFQUFFLEVBQUU7d0JBQ3ZCLHlCQUF5Qjt3QkFDekIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFOzRCQUNiLDBCQUEwQjs0QkFDMUIsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTtnQ0FDcEMsS0FBSyxDQUFDLE1BQXNCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0NBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQ0FDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dDQUN4QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztnQ0FDakMsdUJBQUEsSUFBSSxtRkFBb0IsTUFBeEIsSUFBSSxDQUFzQixDQUFDOzZCQUM1Qjt5QkFDRjtvQkFDSCxDQUFDLENBQ0YsQ0FBQztvQkFFRixJQUFJLGVBQWUsRUFBRTt3QkFDbkIsWUFBWSxDQUFDLGVBQWUsQ0FBQyxHQUFHOzRCQUM5QixRQUFRLEVBQUUsZUFBZTs0QkFDekIsTUFBTSxFQUFFLFNBQVM7NEJBQ2pCLG1CQUFtQjs0QkFDbkIsd0JBQXdCO3lCQUN6QixDQUFDO3FCQUNIO2lCQUNGO3FCQUFNO29CQUNMLE1BQU0sZUFBZSxHQUFHLHVCQUFBLElBQUksdUNBQVUsQ0FBQyxNQUFNLENBQzNDLE1BQU0sRUFDTixTQUFTLEVBQ1QsQ0FBQyxLQUFvQixFQUFFLEVBQUU7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRTs0QkFDbEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDOzRCQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7NEJBQ3hCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDOzRCQUVqQyxJQUFJLHFCQUFxQixDQUFDLGdCQUFnQixFQUFFO2dDQUMxQyx1QkFBQSxJQUFJLG1GQUFvQixNQUF4QixJQUFJLENBQXNCLENBQUM7NkJBQzVCO2lDQUFNO2dDQUNMLDREQUE0RDtnQ0FDNUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7Z0NBRTNDLElBQUksTUFBTSxFQUFFO29DQUNWLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQ0FDZCx1QkFBQSxJQUFJLGlGQUFrQixNQUF0QixJQUFJLEVBQW1CLE1BQU0sRUFBRSx1QkFBQSxJQUFJLHdFQUFTLE1BQWIsSUFBSSxFQUFVLEtBQUssQ0FBQyxDQUFDLENBQUM7aUNBQ3REOzZCQUNGO3lCQUNGO29CQUNILENBQUMsQ0FDRixDQUFDO29CQUVGLElBQUksZUFBZSxFQUFFO3dCQUNuQixZQUFZLENBQUMsZUFBZSxDQUFDLEdBQUc7NEJBQzlCLFFBQVEsRUFBRSxlQUFlOzRCQUN6QixNQUFNOzRCQUNOLG1CQUFtQjs0QkFDbkIsd0JBQXdCO3lCQUN6QixDQUFDO3FCQUNIO2lCQUNGO2FBQ0Y7aUJBQU07Z0JBQ0wsdUJBQUEsSUFBSSx1Q0FBVSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRXBELElBQUksVUFBVSxFQUFFO29CQUNkLHFCQUFxQixDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztpQkFDaEQ7Z0JBRUQsSUFBSSxlQUFlLElBQUksZUFBZSxJQUFJLFlBQVksRUFBRTtvQkFDdEQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUVsRCxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBRXZCLGtGQUFrRjtvQkFDbEYsSUFBSSxXQUFXLENBQUMsd0JBQXdCLEtBQUssUUFBUSxDQUFDLGFBQWEsRUFBRTt3QkFDbkUsV0FBVyxDQUFDLG1CQUFtQixFQUFFLEtBQUssRUFBRSxDQUFDO3FCQUMxQztvQkFFRCxPQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDdEM7YUFDRjtTQUNGO0lBQ0gsQ0FBQzs7d1BBRWlCLGFBQTBCLEVBQUUsUUFBaUI7SUFDN0QsTUFBTSxTQUFTLEdBQUcsdUJBQUEsSUFBSSxxRkFBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBRS9DLDBDQUEwQztJQUMxQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkMscURBQXFEO0lBQ3JELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsSUFBSSxRQUFRLEdBQUcsYUFBYSxHQUFHLFFBQVEsQ0FBQztJQUN4QyxPQUNFLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDbkIsdUJBQUEsSUFBSSxzRkFBdUIsTUFBM0IsSUFBSSxFQUF3QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDaEQ7UUFDQSxRQUFRLElBQUksUUFBUSxDQUFDO0tBQ3RCO0lBRUQsSUFDRSxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ25CLENBQUMsdUJBQUEsSUFBSSxzRkFBdUIsTUFBM0IsSUFBSSxFQUF3QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDakQ7UUFDQSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDN0I7U0FBTTtRQUNMLDhCQUE4QjtRQUM5QiwwQkFBMEI7UUFDMUIsa0JBQWtCO1FBQ2xCLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELE9BQ0UsUUFBUSxLQUFLLGFBQWE7WUFDMUIsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUNuQix1QkFBQSxJQUFJLHNGQUF1QixNQUEzQixJQUFJLEVBQXdCLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUNoRDtZQUNBLDBCQUEwQjtZQUMxQixrQkFBa0I7WUFDbEIsUUFBUSxJQUFJLFFBQVEsQ0FBQztTQUN0QjtRQUVELDBCQUEwQjtRQUMxQixrQkFBa0I7UUFDbEIsSUFDRSxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ25CLENBQUMsdUJBQUEsSUFBSSxzRkFBdUIsTUFBM0IsSUFBSSxFQUF3QixTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsRUFDakQ7WUFDQSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDN0I7YUFBTTtZQUNMLDhCQUE4QjtZQUM5Qix1QkFBQSxJQUFJLG1GQUFvQixNQUF4QixJQUFJLENBQXNCLENBQUM7U0FDNUI7S0FDRjtJQUVELCtCQUErQjtJQUMvQix1QkFBQSxJQUFJLDRDQUFzQixTQUFTLE1BQUEsQ0FBQztBQUN0QyxDQUFDLDJFQUVRLEtBQVk7SUFDbkIseURBQXlEO0lBQ3pELE1BQU0sUUFBUSxHQUFHLHVCQUFBLElBQUkscUZBQXNCLE1BQTFCLElBQUksQ0FBd0IsQ0FBQyxNQUFNLENBQ2xELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLHVCQUFBLElBQUksZ0ZBQWlCLE1BQXJCLElBQUksRUFBa0IsSUFBSSxDQUFDLENBQ3ZDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFFLEtBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFxQixDQUFDLENBQUM7SUFFakUsT0FBTyxDQUNMLFdBQVcsS0FBSyxVQUFVLEdBQUcsQ0FBQztRQUM5QixDQUFDLFdBQVcsS0FBSyxDQUFDLElBQUksVUFBVSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELFdBQVcsR0FBRyxVQUFVO1FBQ3hCLENBQUUsS0FBYSxDQUFDLGFBQWEsQ0FDOUIsQ0FBQztBQUNKLENBQUMsMkZBRWdCLE9BQW9CO0lBQ25DLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDO0FBQ25FLENBQUMsdUdBRXNCLE9BQW9CO0lBQ3pDLElBQUksdUJBQUEsSUFBSSxnRkFBaUIsTUFBckIsSUFBSSxFQUFrQixPQUFPLENBQUMsRUFBRTtRQUNsQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQzNDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDL0MsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwRCxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7SUFHQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBNEIsQ0FBQztJQUU1RCwwQkFBMEI7SUFDMUIsSUFBSSxhQUFhLEVBQUU7UUFDakIsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ3RCO0lBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixDQUFDO0lBR0MsNENBQTRDO0lBQzVDLElBQUksdUJBQUEsSUFBSSxnREFBbUIsRUFBRTtRQUMzQixPQUFPLHVCQUFBLElBQUksZ0RBQW1CLENBQUM7S0FDaEM7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxpQkFBaUIsR0FDckIsV0FBVztRQUNYLGNBQWM7UUFDZCw4Q0FBOEM7UUFDOUMsK0NBQStDO1FBQy9DLCtDQUErQztRQUMvQyxpREFBaUQ7UUFDakQseUJBQXlCO1FBQ3pCLG9DQUFvQztRQUNwQyx5QkFBeUIsQ0FBQztJQUU1Qix1QkFBQSxJQUFJLDRDQUFzQixLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ25ELFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsRUFDakQsQ0FBQyxPQUFvQixFQUFFLEVBQUU7UUFDdkIsT0FBTyxDQUNMLE9BQU8sQ0FBQyxXQUFXLEdBQUcsQ0FBQztZQUN2QixPQUFPLENBQUMsWUFBWSxHQUFHLENBQUM7WUFDeEIsT0FBTyxLQUFLLFFBQVEsQ0FBQyxhQUFhLENBQ25DLENBQUM7SUFDSixDQUFDLENBQ0YsTUFBQSxDQUFDO0lBQ0YsT0FBTyx1QkFBQSxJQUFJLGdEQUFtQixDQUFDO0FBQ2pDLENBQUM7SUFHQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDL0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQzNDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3QixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxQjtBQUNILENBQUM7QUFsUmEsc0NBQWdCLEdBQUcsS0FBSyxDQUFDO2tIQUQ1QixxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBidXN5RWxlbWVudHM6IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIGJ1c3lFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGlzdGVuZXI6ICgpID0+IHZvaWQ7XG4gICAgcmVzdG9yZUZvY3VzRWxlbWVudD86IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIHJlc3RvcmVGb2N1c0NoZWNrRWxlbWVudD86IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICB9O1xufSA9IHt9O1xuXG4vLyBOZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGNsYXNzZXMgd2hpY2ggY29udGFpbiBzdGF0aWMgbWV0aG9kcy5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvNjQxXG4vKipcbiAqIEBpbnRlcm5hbFxuICogQGR5bmFtaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVdhaXRBZGFwdGVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzdGF0aWMgaXNQYWdlV2FpdEFjdGl2ZSA9IGZhbHNlO1xuXG4gICNmb2N1c2FibGVFbGVtZW50czogSFRNTEVsZW1lbnRbXSB8IHVuZGVmaW5lZDtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyKSB7XG4gICAgdGhpcy4jcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIodW5kZWZpbmVkLCBudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNjbGVhckxpc3RlbmVycygpO1xuICB9XG5cbiAgcHVibGljIHNldFdhaXRCb3VuZHMod2FpdEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICB3YWl0RWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuICAgICAgJ3Bvc2l0aW9uJyxcbiAgICAgICdyZWxhdGl2ZSdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVdhaXRCb3VuZHMod2FpdEVsOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlU3R5bGUod2FpdEVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCwgJ3Bvc2l0aW9uJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0QnVzeVN0YXRlKFxuICAgIHdhaXRFbDogRWxlbWVudFJlZixcbiAgICBpc0Z1bGxQYWdlOiBib29sZWFuLFxuICAgIGlzV2FpdGluZzogYm9vbGVhbixcbiAgICBpc05vbkJsb2NraW5nOiBib29sZWFuLFxuICAgIHdhaXRDb21wb25lbnRJZD86IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBidXN5RWwgPSBpc0Z1bGxQYWdlXG4gICAgICA/IGRvY3VtZW50LmJvZHlcbiAgICAgIDogd2FpdEVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcblxuICAgIGlmICghaXNOb25CbG9ja2luZykge1xuICAgICAgaWYgKGlzV2FpdGluZykge1xuICAgICAgICBsZXQgcmVzdG9yZUZvY3VzRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxldCByZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLiNyZW5kZXJlci5zZXRBdHRyaWJ1dGUoYnVzeUVsLCAnYXJpYS1idXN5JywgJ3RydWUnKTtcblxuICAgICAgICAvLyBSZW1vdmUgZm9jdXMgZnJvbSBwYWdlIHdoZW4gZnVsbCBwYWdlIGJsb2NraW5nIHdhaXRcbiAgICAgICAgaWYgKGlzRnVsbFBhZ2UgfHwgYnVzeUVsLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1c0VsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLiNjbGVhckRvY3VtZW50Rm9jdXMoKTtcbiAgICAgICAgICByZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRnVsbFBhZ2UpIHtcbiAgICAgICAgICBTa3lXYWl0QWRhcHRlclNlcnZpY2UuaXNQYWdlV2FpdEFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgY29uc3QgZW5kTGlzdGVuZXJGdW5jID0gdGhpcy4jcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICAgICdrZXlkb3duJyxcbiAgICAgICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3RhYicpIHtcbiAgICAgICAgICAgICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgdGhpcy4jY2xlYXJEb2N1bWVudEZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICh3YWl0Q29tcG9uZW50SWQpIHtcbiAgICAgICAgICAgIGJ1c3lFbGVtZW50c1t3YWl0Q29tcG9uZW50SWRdID0ge1xuICAgICAgICAgICAgICBsaXN0ZW5lcjogZW5kTGlzdGVuZXJGdW5jLFxuICAgICAgICAgICAgICBidXN5RWw6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzRWxlbWVudCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZW5kTGlzdGVuZXJGdW5jID0gdGhpcy4jcmVuZGVyZXIubGlzdGVuKFxuICAgICAgICAgICAgYnVzeUVsLFxuICAgICAgICAgICAgJ2ZvY3VzaW4nLFxuICAgICAgICAgICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgICAgIGlmICghaXNOb25CbG9ja2luZykge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2NsZWFyRG9jdW1lbnRGb2N1cygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAvLyBQcm9wYWdhdGUgdGFiIG5hdmlnYXRpb24gaWYgYXR0ZW1wdGVkIGludG8gd2FpdGVkIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNmb2N1c05leHRFbGVtZW50KHRhcmdldCwgdGhpcy4jaXNTaGlmdChldmVudCkpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAod2FpdENvbXBvbmVudElkKSB7XG4gICAgICAgICAgICBidXN5RWxlbWVudHNbd2FpdENvbXBvbmVudElkXSA9IHtcbiAgICAgICAgICAgICAgbGlzdGVuZXI6IGVuZExpc3RlbmVyRnVuYyxcbiAgICAgICAgICAgICAgYnVzeUVsLFxuICAgICAgICAgICAgICByZXN0b3JlRm9jdXNFbGVtZW50LFxuICAgICAgICAgICAgICByZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQXR0cmlidXRlKGJ1c3lFbCwgJ2FyaWEtYnVzeScpO1xuXG4gICAgICAgIGlmIChpc0Z1bGxQYWdlKSB7XG4gICAgICAgICAgU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh3YWl0Q29tcG9uZW50SWQgJiYgd2FpdENvbXBvbmVudElkIGluIGJ1c3lFbGVtZW50cykge1xuICAgICAgICAgIGNvbnN0IGJ1c3lFbGVtZW50ID0gYnVzeUVsZW1lbnRzW3dhaXRDb21wb25lbnRJZF07XG5cbiAgICAgICAgICBidXN5RWxlbWVudC5saXN0ZW5lcigpO1xuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSByZXN0b3JlIGZvY3VzIGVsZW1lbnQgYW5kIHRoZSBmb2N1cyBoYXMgbm90IG1vdmVkLCByZXN0b3JlIGZvY3VzLlxuICAgICAgICAgIGlmIChidXN5RWxlbWVudC5yZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGJ1c3lFbGVtZW50LnJlc3RvcmVGb2N1c0VsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVsZXRlIGJ1c3lFbGVtZW50c1t3YWl0Q29tcG9uZW50SWRdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI2ZvY3VzTmV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQsIHNoaWZ0S2V5OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZm9jdXNhYmxlID0gdGhpcy4jZ2V0Rm9jdXNhYmxlRWxlbWVudHMoKTtcblxuICAgIC8vIElmIHNoaWZ0IHRhYiwgZ28gaW4gdGhlIG90aGVyIGRpcmVjdGlvblxuICAgIGNvbnN0IG1vZGlmaWVyID0gc2hpZnRLZXkgPyAtMSA6IDE7XG5cbiAgICAvLyBGaW5kIHRoZSBuZXh0IG5hdmlnYWJsZSBlbGVtZW50IHRoYXQgaXNuJ3Qgd2FpdGluZ1xuICAgIGNvbnN0IHN0YXJ0aW5nSW5kZXggPSBmb2N1c2FibGUuaW5kZXhPZih0YXJnZXRFbGVtZW50KTtcbiAgICBsZXQgY3VySW5kZXggPSBzdGFydGluZ0luZGV4ICsgbW9kaWZpZXI7XG4gICAgd2hpbGUgKFxuICAgICAgZm9jdXNhYmxlW2N1ckluZGV4XSAmJlxuICAgICAgdGhpcy4jaXNFbGVtZW50QnVzeU9ySGlkZGVuKGZvY3VzYWJsZVtjdXJJbmRleF0pXG4gICAgKSB7XG4gICAgICBjdXJJbmRleCArPSBtb2RpZmllcjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBmb2N1c2FibGVbY3VySW5kZXhdICYmXG4gICAgICAhdGhpcy4jaXNFbGVtZW50QnVzeU9ySGlkZGVuKGZvY3VzYWJsZVtjdXJJbmRleF0pXG4gICAgKSB7XG4gICAgICBmb2N1c2FibGVbY3VySW5kZXhdLmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyeSB3cmFwcGluZyB0aGUgbmF2aWdhdGlvblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgY3VySW5kZXggPSBtb2RpZmllciA+IDAgPyAwIDogZm9jdXNhYmxlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIGN1ckluZGV4ICE9PSBzdGFydGluZ0luZGV4ICYmXG4gICAgICAgIGZvY3VzYWJsZVtjdXJJbmRleF0gJiZcbiAgICAgICAgdGhpcy4jaXNFbGVtZW50QnVzeU9ySGlkZGVuKGZvY3VzYWJsZVtjdXJJbmRleF0pXG4gICAgICApIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICAgIGN1ckluZGV4ICs9IG1vZGlmaWVyO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgICBpZiAoXG4gICAgICAgIGZvY3VzYWJsZVtjdXJJbmRleF0gJiZcbiAgICAgICAgIXRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICAgKSB7XG4gICAgICAgIGZvY3VzYWJsZVtjdXJJbmRleF0uZm9jdXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vIHZhbGlkIHRhcmdldCwgd2lwZSBmb2N1c1xuICAgICAgICB0aGlzLiNjbGVhckRvY3VtZW50Rm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjbGVhciBmb2N1c2FibGVFbGVtZW50cyBsaXN0XG4gICAgdGhpcy4jZm9jdXNhYmxlRWxlbWVudHMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAjaXNTaGlmdChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICAvLyBEZXRlcm1pbmUgaWYgc2hpZnQrdGFiIHdhcyB1c2VkIGJhc2VkIG9uIGVsZW1lbnQgb3JkZXJcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuI2dldEZvY3VzYWJsZUVsZW1lbnRzKCkuZmlsdGVyKFxuICAgICAgKGVsZW0pID0+ICF0aGlzLiNpc0VsZW1lbnRIaWRkZW4oZWxlbSlcbiAgICApO1xuXG4gICAgY29uc3QgcHJldmlvdXNJbmQgPSBlbGVtZW50cy5pbmRleE9mKChldmVudCBhcyBhbnkpLnJlbGF0ZWRUYXJnZXQpO1xuICAgIGNvbnN0IGN1cnJlbnRJbmQgPSBlbGVtZW50cy5pbmRleE9mKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgcHJldmlvdXNJbmQgPT09IGN1cnJlbnRJbmQgKyAxIHx8XG4gICAgICAocHJldmlvdXNJbmQgPT09IDAgJiYgY3VycmVudEluZCA9PT0gZWxlbWVudHMubGVuZ3RoIC0gMSkgfHxcbiAgICAgIHByZXZpb3VzSW5kID4gY3VycmVudEluZCB8fFxuICAgICAgIShldmVudCBhcyBhbnkpLnJlbGF0ZWRUYXJnZXRcbiAgICApO1xuICB9XG5cbiAgI2lzRWxlbWVudEhpZGRlbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gICAgcmV0dXJuIHN0eWxlLmRpc3BsYXkgPT09ICdub25lJyB8fCBzdHlsZS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJztcbiAgfVxuXG4gICNpc0VsZW1lbnRCdXN5T3JIaWRkZW4oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy4jaXNFbGVtZW50SGlkZGVuKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhidXN5RWxlbWVudHMpKSB7XG4gICAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gYnVzeUVsZW1lbnRzW2tleV0uYnVzeUVsO1xuICAgICAgaWYgKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC5jb250YWlucyhlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgI2NsZWFyRG9jdW1lbnRGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTtcbiAgfVxuXG4gICNnZXRGb2N1c2FibGVFbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICAvLyBLZWVwIHRoaXMgY2FjaGVkIHNvIHdlIGNhbiByZWR1Y2UgcXVlcmllc1xuICAgIGlmICh0aGlzLiNmb2N1c2FibGVFbGVtZW50cykge1xuICAgICAgcmV0dXJuIHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIC8vIFNlbGVjdCBhbGwgcG9zc2libGUgZm9jdXNhYmxlIGVsZW1lbnRzXG4gICAgY29uc3QgZm9jdXNhYmxlRWxlbWVudHMgPVxuICAgICAgJ2FbaHJlZl0sICcgK1xuICAgICAgJ2FyZWFbaHJlZl0sICcgK1xuICAgICAgXCJpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0nLTEnXSksIFwiICtcbiAgICAgIFwiYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSctMSddKSwgXCIgK1xuICAgICAgXCJzZWxlY3Q6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pLCBcIiArXG4gICAgICBcInRleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSctMSddKSwgXCIgK1xuICAgICAgJ2lmcmFtZSwgb2JqZWN0LCBlbWJlZCwgJyArXG4gICAgICBcIipbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9Jy0xJ10pLCBcIiArXG4gICAgICAnKltjb250ZW50ZWRpdGFibGU9dHJ1ZV0nO1xuXG4gICAgdGhpcy4jZm9jdXNhYmxlRWxlbWVudHMgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoXG4gICAgICBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3JBbGwoZm9jdXNhYmxlRWxlbWVudHMpLFxuICAgICAgKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgfHxcbiAgICAgICAgICBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgfHxcbiAgICAgICAgICBlbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy4jZm9jdXNhYmxlRWxlbWVudHM7XG4gIH1cblxuICAjY2xlYXJMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhidXN5RWxlbWVudHMpKSB7XG4gICAgICBidXN5RWxlbWVudHNba2V5XS5saXN0ZW5lcigpO1xuICAgICAgZGVsZXRlIGJ1c3lFbGVtZW50c1trZXldO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,167 +0,0 @@
1
- var _SkyWaitComponent_instances, _SkyWaitComponent_customAriaLabel, _SkyWaitComponent_customScreenReaderCompletedText, _SkyWaitComponent_id, _SkyWaitComponent_elRef, _SkyWaitComponent_adapterService, _SkyWaitComponent_liveAnnouncer, _SkyWaitComponent_resourceSvc, _SkyWaitComponent_ngUnsubscribe, _SkyWaitComponent__isFullPage, _SkyWaitComponent__isNonBlocking, _SkyWaitComponent__isWaiting, _SkyWaitComponent_publishAriaLabel, _SkyWaitComponent_publishScreenReaderCompletedText;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Component, ElementRef, Input, inject, } from '@angular/core';
4
- import { SkyLiveAnnouncerService } from '@skyux/core';
5
- import { SkyLibResourcesService } from '@skyux/i18n';
6
- import { BehaviorSubject, Subject } from 'rxjs';
7
- import { take, takeUntil } from 'rxjs/operators';
8
- import { SkyWaitAdapterService } from './wait-adapter.service';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- let nextId = 0;
12
- export class SkyWaitComponent {
13
- constructor() {
14
- _SkyWaitComponent_instances.add(this);
15
- this.ariaLabelStream = new BehaviorSubject('');
16
- this.ariaLiveText = '';
17
- this.screenReaderCompletedTextStream = new BehaviorSubject('');
18
- _SkyWaitComponent_customAriaLabel.set(this, void 0);
19
- _SkyWaitComponent_customScreenReaderCompletedText.set(this, void 0);
20
- _SkyWaitComponent_id.set(this, `sky-wait-${++nextId}`);
21
- _SkyWaitComponent_elRef.set(this, inject(ElementRef));
22
- _SkyWaitComponent_adapterService.set(this, inject(SkyWaitAdapterService));
23
- _SkyWaitComponent_liveAnnouncer.set(this, inject(SkyLiveAnnouncerService));
24
- _SkyWaitComponent_resourceSvc.set(this, inject(SkyLibResourcesService));
25
- _SkyWaitComponent_ngUnsubscribe.set(this, new Subject());
26
- _SkyWaitComponent__isFullPage.set(this, void 0);
27
- _SkyWaitComponent__isNonBlocking.set(this, void 0);
28
- _SkyWaitComponent__isWaiting.set(this, void 0);
29
- }
30
- /**
31
- * The ARIA label for the wait icon.
32
- * This sets the icon's `aria-label` attribute to provide a text equivalent for screen readers
33
- * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when an element or page loads and when users tab to a wait icon.
34
- * The default value varies based on whether the wait is for an element or a page and whether it is a blocking wait. For example, the default for a page-level blocking wait is "Page loading. Please wait."
35
- * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
36
- * "For more information, see the Design tab and the [WAI-ARIA `aria-label` definition](https://www.w3.org/TR/wai-aria/#aria-label).
37
- */
38
- set ariaLabel(value) {
39
- __classPrivateFieldSet(this, _SkyWaitComponent_customAriaLabel, value, "f");
40
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishAriaLabel).call(this);
41
- }
42
- /**
43
- * When set to `true`, wait indication appears on the parent element of the `sky-wait` component.
44
- */
45
- set isWaiting(value) {
46
- if (!this.isFullPage) {
47
- if (value) {
48
- __classPrivateFieldGet(this, _SkyWaitComponent_adapterService, "f").setWaitBounds(__classPrivateFieldGet(this, _SkyWaitComponent_elRef, "f"));
49
- }
50
- else {
51
- __classPrivateFieldGet(this, _SkyWaitComponent_adapterService, "f").removeWaitBounds(__classPrivateFieldGet(this, _SkyWaitComponent_elRef, "f"));
52
- }
53
- }
54
- __classPrivateFieldGet(this, _SkyWaitComponent_adapterService, "f").setBusyState(__classPrivateFieldGet(this, _SkyWaitComponent_elRef, "f"), !!this.isFullPage, !!value, !!this.isNonBlocking, __classPrivateFieldGet(this, _SkyWaitComponent_id, "f"));
55
- if (value) {
56
- __classPrivateFieldGet(this, _SkyWaitComponent_liveAnnouncer, "f").announce(this.ariaLabelStream.getValue());
57
- }
58
- else if (__classPrivateFieldGet(this, _SkyWaitComponent__isWaiting, "f")) {
59
- // NOTE: This should only happen if the wait was previously waiting and no longer is waiting.
60
- __classPrivateFieldGet(this, _SkyWaitComponent_liveAnnouncer, "f").announce(this.screenReaderCompletedTextStream.getValue());
61
- }
62
- __classPrivateFieldSet(this, _SkyWaitComponent__isWaiting, value, "f");
63
- }
64
- get isWaiting() {
65
- return __classPrivateFieldGet(this, _SkyWaitComponent__isWaiting, "f");
66
- }
67
- /**
68
- * When set to `true`, wait indication appears on the page level instead of the
69
- * parent element level. We recommend that you use the `beginBlockingPageWait` or
70
- * `beginNonBlockingPageWait` functions of the `SkyWaitService` instead of setting this
71
- * on the component level.
72
- * @default false
73
- */
74
- set isFullPage(value) {
75
- /* istanbul ignore else: untestable */
76
- if (value) {
77
- __classPrivateFieldGet(this, _SkyWaitComponent_adapterService, "f").removeWaitBounds(__classPrivateFieldGet(this, _SkyWaitComponent_elRef, "f"));
78
- }
79
- else if (this.isWaiting) {
80
- __classPrivateFieldGet(this, _SkyWaitComponent_adapterService, "f").setWaitBounds(__classPrivateFieldGet(this, _SkyWaitComponent_elRef, "f"));
81
- }
82
- __classPrivateFieldSet(this, _SkyWaitComponent__isFullPage, value, "f");
83
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishAriaLabel).call(this);
84
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishScreenReaderCompletedText).call(this);
85
- }
86
- get isFullPage() {
87
- return __classPrivateFieldGet(this, _SkyWaitComponent__isFullPage, "f");
88
- }
89
- /**
90
- * When set to `true`, wait indication appears in the bottom left corner of the element
91
- * instead of hiding the entire parent element.
92
- * @default false
93
- */
94
- set isNonBlocking(value) {
95
- __classPrivateFieldSet(this, _SkyWaitComponent__isNonBlocking, value, "f");
96
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishAriaLabel).call(this);
97
- }
98
- get isNonBlocking() {
99
- return __classPrivateFieldGet(this, _SkyWaitComponent__isNonBlocking, "f");
100
- }
101
- /**
102
- * Screen reader text [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when the wait toggles off.
103
- * The default varies based on whether the wait is for an element or a page.
104
- * For example, the default for a page-level wait is "Page loading complete."
105
- * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
106
- * For more information, see the Design tab and the [WCAG documentation on status messages](https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html).
107
- */
108
- set screenReaderCompletedText(value) {
109
- __classPrivateFieldSet(this, _SkyWaitComponent_customScreenReaderCompletedText, value, "f");
110
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishScreenReaderCompletedText).call(this);
111
- }
112
- ngOnInit() {
113
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishAriaLabel).call(this);
114
- __classPrivateFieldGet(this, _SkyWaitComponent_instances, "m", _SkyWaitComponent_publishScreenReaderCompletedText).call(this);
115
- }
116
- ngOnDestroy() {
117
- __classPrivateFieldGet(this, _SkyWaitComponent_ngUnsubscribe, "f").next();
118
- __classPrivateFieldGet(this, _SkyWaitComponent_ngUnsubscribe, "f").complete();
119
- }
120
- }
121
- _SkyWaitComponent_customAriaLabel = new WeakMap(), _SkyWaitComponent_customScreenReaderCompletedText = new WeakMap(), _SkyWaitComponent_id = new WeakMap(), _SkyWaitComponent_elRef = new WeakMap(), _SkyWaitComponent_adapterService = new WeakMap(), _SkyWaitComponent_liveAnnouncer = new WeakMap(), _SkyWaitComponent_resourceSvc = new WeakMap(), _SkyWaitComponent_ngUnsubscribe = new WeakMap(), _SkyWaitComponent__isFullPage = new WeakMap(), _SkyWaitComponent__isNonBlocking = new WeakMap(), _SkyWaitComponent__isWaiting = new WeakMap(), _SkyWaitComponent_instances = new WeakSet(), _SkyWaitComponent_publishAriaLabel = function _SkyWaitComponent_publishAriaLabel() {
122
- if (__classPrivateFieldGet(this, _SkyWaitComponent_customAriaLabel, "f")) {
123
- this.ariaLabelStream.next(__classPrivateFieldGet(this, _SkyWaitComponent_customAriaLabel, "f"));
124
- }
125
- else {
126
- const type = this.isFullPage ? '_page' : '';
127
- const blocking = this.isNonBlocking ? '' : '_blocking';
128
- const key = `skyux_wait${type}${blocking}_aria_alt_text`;
129
- __classPrivateFieldGet(this, _SkyWaitComponent_resourceSvc, "f")
130
- .getString(key)
131
- .pipe(take(1), takeUntil(__classPrivateFieldGet(this, _SkyWaitComponent_ngUnsubscribe, "f")))
132
- .subscribe((value) => {
133
- this.ariaLabelStream.next(value);
134
- });
135
- }
136
- }, _SkyWaitComponent_publishScreenReaderCompletedText = function _SkyWaitComponent_publishScreenReaderCompletedText() {
137
- if (__classPrivateFieldGet(this, _SkyWaitComponent_customScreenReaderCompletedText, "f")) {
138
- this.screenReaderCompletedTextStream.next(__classPrivateFieldGet(this, _SkyWaitComponent_customScreenReaderCompletedText, "f"));
139
- }
140
- else {
141
- const type = this.isFullPage ? '_page' : '';
142
- const key = `skyux_wait${type}_screen_reader_completed_text`;
143
- __classPrivateFieldGet(this, _SkyWaitComponent_resourceSvc, "f")
144
- .getString(key)
145
- .pipe(take(1), takeUntil(__classPrivateFieldGet(this, _SkyWaitComponent_ngUnsubscribe, "f")))
146
- .subscribe((value) => {
147
- this.screenReaderCompletedTextStream.next(value);
148
- });
149
- }
150
- };
151
- SkyWaitComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
152
- SkyWaitComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyWaitComponent, selector: "sky-wait", inputs: { ariaLabel: "ariaLabel", isWaiting: "isWaiting", isFullPage: "isFullPage", isNonBlocking: "isNonBlocking", screenReaderCompletedText: "screenReaderCompletedText" }, providers: [SkyWaitAdapterService], ngImport: i0, template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n <div\n *ngIf=\"isWaiting\"\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{animation-delay:-1s}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
153
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitComponent, decorators: [{
154
- type: Component,
155
- args: [{ selector: 'sky-wait', providers: [SkyWaitAdapterService], template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n <div\n *ngIf=\"isWaiting\"\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{animation-delay:-1s}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"] }]
156
- }], propDecorators: { ariaLabel: [{
157
- type: Input
158
- }], isWaiting: [{
159
- type: Input
160
- }], isFullPage: [{
161
- type: Input
162
- }], isNonBlocking: [{
163
- type: Input
164
- }], screenReaderCompletedText: [{
165
- type: Input
166
- }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRS9ELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQVFmLE1BQU0sT0FBTyxnQkFBZ0I7SUFON0I7O1FBK0dTLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbEQsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFekUsb0RBQXFDO1FBQ3JDLG9FQUFxRDtRQUNyRCwrQkFBTSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUM7UUFFN0Isa0NBQVMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFDO1FBQzVCLDJDQUFrQixNQUFNLENBQUMscUJBQXFCLENB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Q0FBQyxJQUFJLENBQ3ZDLHVCQUFBLElBQUkseURBQWlDLENBQ3RDLENBQUM7S0FDSDtTQUFNO1FBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsYUFBYSxJQUFJLCtCQUErQixDQUFDO1FBQzdELHVCQUFBLElBQUkscUNBQWE7YUFDZCxTQUFTLENBQUMsR0FBRyxDQUFDO2FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsdUJBQUEsSUFBSSx1Q0FBZSxDQUFDLENBQUM7YUFDN0MsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztLQUNOO0FBQ0gsQ0FBQzs2R0FwS1UsZ0JBQWdCO2lHQUFoQixnQkFBZ0IsaU5BRmhCLENBQUMscUJBQXFCLENBQUMsMEJDdEJwQyw4b0JBd0JBOzJGREFhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxVQUFVLGFBR1QsQ0FBQyxxQkFBcUIsQ0FBQzs4QkFZdkIsU0FBUztzQkFEbkIsS0FBSztnQkFVSyxTQUFTO3NCQURuQixLQUFLO2dCQTBDSyxVQUFVO3NCQURwQixLQUFLO2dCQXdCSyxhQUFhO3NCQUR2QixLQUFLO2dCQWtCSyx5QkFBeUI7c0JBRG5DLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVdhaXRBZGFwdGVyU2VydmljZSB9IGZyb20gJy4vd2FpdC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXdhaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2FpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5V2FpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgd2FpdCBpY29uLlxuICAgKiBUaGlzIHNldHMgdGhlIGljb24ncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHByb3ZpZGUgYSB0ZXh0IGVxdWl2YWxlbnQgZm9yIHNjcmVlbiByZWFkZXJzXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgd2hlbiBhbiBlbGVtZW50IG9yIHBhZ2UgbG9hZHMgYW5kIHdoZW4gdXNlcnMgdGFiIHRvIGEgd2FpdCBpY29uLlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSB2YXJpZXMgYmFzZWQgb24gd2hldGhlciB0aGUgd2FpdCBpcyBmb3IgYW4gZWxlbWVudCBvciBhIHBhZ2UgYW5kIHdoZXRoZXIgaXQgaXMgYSBibG9ja2luZyB3YWl0LiBGb3IgZXhhbXBsZSwgdGhlIGRlZmF1bHQgZm9yIGEgcGFnZS1sZXZlbCBibG9ja2luZyB3YWl0IGlzIFwiUGFnZSBsb2FkaW5nLiBQbGVhc2Ugd2FpdC5cIlxuICAgKiBGb3IgZWxlbWVudC1sZXZlbCB3YWl0cywgd2UgcmVjb21tZW5kIHRoYXQgY29uc3VtZXJzIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdCB0byBkZXNjcmliZSB0aGUgc3BlY2lmaWMgZWxlbWVudC5cbiAgICogXCJGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBEZXNpZ24gdGFiIGFuZCB0aGUgW1dBSS1BUklBIGBhcmlhLWxhYmVsYCBkZWZpbml0aW9uXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvI2FyaWEtbGFiZWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI2N1c3RvbUFyaWFMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMuI3B1Ymxpc2hBcmlhTGFiZWwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHdhaXQgaW5kaWNhdGlvbiBhcHBlYXJzIG9uIHRoZSBwYXJlbnQgZWxlbWVudCBvZiB0aGUgYHNreS13YWl0YCBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzV2FpdGluZyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdGhpcy5pc0Z1bGxQYWdlKSB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0V2FpdEJvdW5kcyh0aGlzLiNlbFJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5yZW1vdmVXYWl0Qm91bmRzKHRoaXMuI2VsUmVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRCdXN5U3RhdGUoXG4gICAgICB0aGlzLiNlbFJlZixcbiAgICAgICEhdGhpcy5pc0Z1bGxQYWdlLFxuICAgICAgISF2YWx1ZSxcbiAgICAgICEhdGhpcy5pc05vbkJsb2NraW5nLFxuICAgICAgdGhpcy4jaWRcbiAgICApO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyLmFubm91bmNlKHRoaXMuYXJpYUxhYmVsU3RyZWFtLmdldFZhbHVlKCkpO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jX2lzV2FpdGluZykge1xuICAgICAgLy8gTk9URTogVGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIHdhaXQgd2FzIHByZXZpb3VzbHkgd2FpdGluZyBhbmQgbm8gbG9uZ2VyIGlzIHdhaXRpbmcuXG4gICAgICB0aGlzLiNsaXZlQW5ub3VuY2VyLmFubm91bmNlKFxuICAgICAgICB0aGlzLnNjcmVlblJlYWRlckNvbXBsZXRlZFRleHRTdHJlYW0uZ2V0VmFsdWUoKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfaXNXYWl0aW5nID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzV2FpdGluZygpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzV2FpdGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHdhaXQgaW5kaWNhdGlvbiBhcHBlYXJzIG9uIHRoZSBwYWdlIGxldmVsIGluc3RlYWQgb2YgdGhlXG4gICAqIHBhcmVudCBlbGVtZW50IGxldmVsLiBXZSByZWNvbW1lbmQgdGhhdCB5b3UgdXNlIHRoZSBgYmVnaW5CbG9ja2luZ1BhZ2VXYWl0YCBvclxuICAgKiBgYmVnaW5Ob25CbG9ja2luZ1BhZ2VXYWl0YCBmdW5jdGlvbnMgb2YgdGhlIGBTa3lXYWl0U2VydmljZWAgaW5zdGVhZCBvZiBzZXR0aW5nIHRoaXNcbiAgICogb24gdGhlIGNvbXBvbmVudCBsZXZlbC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXNGdWxsUGFnZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiB1bnRlc3RhYmxlICovXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5yZW1vdmVXYWl0Qm91bmRzKHRoaXMuI2VsUmVmKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNXYWl0aW5nKSB7XG4gICAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRXYWl0Qm91bmRzKHRoaXMuI2VsUmVmKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfaXNGdWxsUGFnZSA9IHZhbHVlO1xuICAgIHRoaXMuI3B1Ymxpc2hBcmlhTGFiZWwoKTtcbiAgICB0aGlzLiNwdWJsaXNoU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0Z1bGxQYWdlKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaXNGdWxsUGFnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHdhaXQgaW5kaWNhdGlvbiBhcHBlYXJzIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGVsZW1lbnRcbiAgICogaW5zdGVhZCBvZiBoaWRpbmcgdGhlIGVudGlyZSBwYXJlbnQgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaXNOb25CbG9ja2luZyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19pc05vbkJsb2NraW5nID0gdmFsdWU7XG4gICAgdGhpcy4jcHVibGlzaEFyaWFMYWJlbCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc05vbkJsb2NraW5nKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfaXNOb25CbG9ja2luZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTY3JlZW4gcmVhZGVyIHRleHQgW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KSB3aGVuIHRoZSB3YWl0IHRvZ2dsZXMgb2ZmLlxuICAgKiAgVGhlIGRlZmF1bHQgdmFyaWVzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHdhaXQgaXMgZm9yIGFuIGVsZW1lbnQgb3IgYSBwYWdlLlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGRlZmF1bHQgZm9yIGEgcGFnZS1sZXZlbCB3YWl0IGlzIFwiUGFnZSBsb2FkaW5nIGNvbXBsZXRlLlwiXG4gICAqIEZvciBlbGVtZW50LWxldmVsIHdhaXRzLCB3ZSByZWNvbW1lbmQgdGhhdCBjb25zdW1lcnMgb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRvIGRlc2NyaWJlIHRoZSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBEZXNpZ24gdGFiIGFuZCB0aGUgW1dDQUcgZG9jdW1lbnRhdGlvbiBvbiBzdGF0dXMgbWVzc2FnZXNdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvV0NBRzIxL1VuZGVyc3RhbmRpbmcvc3RhdHVzLW1lc3NhZ2VzLmh0bWwpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNjdXN0b21TY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0ID0gdmFsdWU7XG4gICAgdGhpcy4jcHVibGlzaFNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcmlhTGFiZWxTdHJlYW0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgYXJpYUxpdmVUZXh0ID0gJyc7XG4gIHB1YmxpYyBzY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAjY3VzdG9tQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNjdXN0b21TY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNpZCA9IGBza3ktd2FpdC0keysrbmV4dElkfWA7XG5cbiAgI2VsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlKTtcbiAgI2xpdmVBbm5vdW5jZXIgPSBpbmplY3QoU2t5TGl2ZUFubm91bmNlclNlcnZpY2UpO1xuICAjcmVzb3VyY2VTdmMgPSBpbmplY3QoU2t5TGliUmVzb3VyY2VzU2VydmljZSk7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjX2lzRnVsbFBhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICNfaXNOb25CbG9ja2luZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19pc1dhaXRpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3B1Ymxpc2hBcmlhTGFiZWwoKTtcbiAgICB0aGlzLiNwdWJsaXNoU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gICNwdWJsaXNoQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXN0b21BcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMuYXJpYUxhYmVsU3RyZWFtLm5leHQodGhpcy4jY3VzdG9tQXJpYUxhYmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuaXNGdWxsUGFnZSA/ICdfcGFnZScgOiAnJztcbiAgICAgIGNvbnN0IGJsb2NraW5nID0gdGhpcy5pc05vbkJsb2NraW5nID8gJycgOiAnX2Jsb2NraW5nJztcbiAgICAgIGNvbnN0IGtleSA9IGBza3l1eF93YWl0JHt0eXBlfSR7YmxvY2tpbmd9X2FyaWFfYWx0X3RleHRgO1xuICAgICAgdGhpcy4jcmVzb3VyY2VTdmNcbiAgICAgICAgLmdldFN0cmluZyhrZXkpXG4gICAgICAgIC5waXBlKHRha2UoMSksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLmFyaWFMYWJlbFN0cmVhbS5uZXh0KHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgI3B1Ymxpc2hTY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjdXN0b21TY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KSB7XG4gICAgICB0aGlzLnNjcmVlblJlYWRlckNvbXBsZXRlZFRleHRTdHJlYW0ubmV4dChcbiAgICAgICAgdGhpcy4jY3VzdG9tU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuaXNGdWxsUGFnZSA/ICdfcGFnZScgOiAnJztcbiAgICAgIGNvbnN0IGtleSA9IGBza3l1eF93YWl0JHt0eXBlfV9zY3JlZW5fcmVhZGVyX2NvbXBsZXRlZF90ZXh0YDtcbiAgICAgIHRoaXMuI3Jlc291cmNlU3ZjXG4gICAgICAgIC5nZXRTdHJpbmcoa2V5KVxuICAgICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtLm5leHQodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktd2FpdC1jb250YWluZXJcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS13YWl0LWZ1bGwtcGFnZSc6IGlzRnVsbFBhZ2UsXG4gICAgJ3NreS13YWl0LW5vbi1ibG9ja2luZyc6IGlzTm9uQmxvY2tpbmdcbiAgfVwiXG4+XG4gIDxkaXZcbiAgICAqbmdJZj1cImlzV2FpdGluZ1wiXG4gICAgY2xhc3M9XCJza3ktd2FpdC1tYXNrXCJcbiAgICByb2xlPVwicHJvZ3Jlc3NiYXJcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsU3RyZWFtIHwgYXN5bmNcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktd2FpdC1tYXNrLWxvYWRpbmctZml4ZWQnOiBpc0Z1bGxQYWdlLFxuICAgICAgJ3NreS13YWl0LW1hc2stbG9hZGluZy1ub24tYmxvY2tpbmcnOiBpc05vbkJsb2NraW5nLFxuICAgICAgJ3NreS13YWl0LW1hc2stbG9hZGluZy1ibG9ja2luZyc6ICFpc05vbkJsb2NraW5nXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXdhaXRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktd2FpdC1kb3VibGUtYm91bmNlMVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNreS13YWl0LWRvdWJsZS1ib3VuY2UyXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=