@acorex/components 5.2.2 → 5.3.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 (147) hide show
  1. package/esm2020/lib/alert/alert-button.component.mjs +2 -3
  2. package/esm2020/lib/alert/alert.component.mjs +33 -23
  3. package/esm2020/lib/alert/alert.module.mjs +6 -22
  4. package/esm2020/lib/alert/index.mjs +1 -5
  5. package/esm2020/lib/base/components.class.mjs +17 -0
  6. package/esm2020/lib/base/events.class.mjs +1 -1
  7. package/esm2020/lib/base/index.mjs +2 -1
  8. package/esm2020/lib/base/mixin/base-components.class.mjs +5 -5
  9. package/esm2020/lib/base/mixin/base-menu-mixin.class.mjs +4 -3
  10. package/esm2020/lib/base/mixin/color-look-mixing.class.mjs +1 -1
  11. package/esm2020/lib/base/mixin/datalist-component.class.mjs +2 -1
  12. package/esm2020/lib/base/styles.class.mjs +1 -1
  13. package/esm2020/lib/button/button-group.component.mjs +1 -1
  14. package/esm2020/lib/button/button-item.class.mjs +1 -1
  15. package/esm2020/lib/button/button.module.mjs +4 -5
  16. package/esm2020/lib/calendar/calendar.component.mjs +4 -4
  17. package/esm2020/lib/calendar/calendar.module.mjs +4 -5
  18. package/esm2020/lib/checkbox/checkbox.module.mjs +5 -5
  19. package/esm2020/lib/datepicker/datepicker.component.mjs +11 -7
  20. package/esm2020/lib/datepicker/datepicker.module.mjs +4 -7
  21. package/esm2020/lib/decorators/close-button.component.mjs +40 -0
  22. package/esm2020/lib/decorators/decorators.module.mjs +37 -7
  23. package/esm2020/lib/decorators/footer.component.mjs +24 -0
  24. package/esm2020/lib/decorators/header.component.mjs +3 -5
  25. package/esm2020/lib/decorators/icon.component.mjs +28 -0
  26. package/esm2020/lib/decorators/index.mjs +5 -1
  27. package/esm2020/lib/decorators/prefix.component.mjs +3 -3
  28. package/esm2020/lib/decorators/suffix.component.mjs +3 -3
  29. package/esm2020/lib/decorators/title.component.mjs +24 -0
  30. package/esm2020/lib/dialog/dialog.module.mjs +4 -4
  31. package/esm2020/lib/drawer/drawer-container.component.mjs +17 -57
  32. package/esm2020/lib/drawer/drawer.component.mjs +97 -127
  33. package/esm2020/lib/drawer/drawer.module.mjs +3 -4
  34. package/esm2020/lib/drawer/index.mjs +1 -2
  35. package/esm2020/lib/dropdown/dropdown-panel.component.mjs +4 -4
  36. package/esm2020/lib/dropdown/dropdown.module.mjs +5 -6
  37. package/esm2020/lib/menu/menu.component.mjs +20 -7
  38. package/esm2020/lib/menu/menu.module.mjs +4 -7
  39. package/esm2020/lib/number-box/number-box.component.mjs +2 -2
  40. package/esm2020/lib/number-box/number-box.module.mjs +4 -7
  41. package/esm2020/lib/page/base-page.class.mjs +3 -3
  42. package/esm2020/lib/page/index.mjs +1 -3
  43. package/esm2020/lib/page/page.module.mjs +4 -6
  44. package/esm2020/lib/password-box/password-box.component.mjs +2 -2
  45. package/esm2020/lib/password-box/password-box.module.mjs +4 -7
  46. package/esm2020/lib/picker/picker.component.mjs +260 -25
  47. package/esm2020/lib/picker/picker.model.class.mjs +2 -0
  48. package/esm2020/lib/popover/popover.component.mjs +6 -3
  49. package/esm2020/lib/popup/popup.component.mjs +13 -10
  50. package/esm2020/lib/popup/popup.module.mjs +4 -3
  51. package/esm2020/lib/radio/index.mjs +1 -1
  52. package/esm2020/lib/radio/radio.component.mjs +3 -3
  53. package/esm2020/lib/radio/radio.module.mjs +1 -1
  54. package/esm2020/lib/searchbox/index.mjs +3 -0
  55. package/esm2020/lib/searchbox/searchbox.component.mjs +47 -0
  56. package/esm2020/lib/searchbox/searchbox.module.mjs +24 -0
  57. package/esm2020/lib/selectbox/selectbox.component.mjs +33 -26
  58. package/esm2020/lib/selectbox/selectbox.module.mjs +5 -9
  59. package/esm2020/lib/tabs/tabs.module.mjs +4 -4
  60. package/esm2020/lib/textbox/textbox.module.mjs +5 -9
  61. package/esm2020/lib/toast/toast.class.mjs +1 -1
  62. package/esm2020/lib/toast/toast.component.mjs +14 -12
  63. package/esm2020/lib/toast/toast.module.mjs +5 -3
  64. package/esm2020/lib/toast/toast.service.mjs +37 -9
  65. package/esm2020/public-api.mjs +2 -2
  66. package/fesm2015/acorex-components.mjs +849 -662
  67. package/fesm2015/acorex-components.mjs.map +1 -1
  68. package/fesm2020/acorex-components.mjs +840 -662
  69. package/fesm2020/acorex-components.mjs.map +1 -1
  70. package/lib/alert/alert.component.d.ts +7 -6
  71. package/lib/alert/alert.module.d.ts +4 -8
  72. package/lib/alert/index.d.ts +0 -4
  73. package/lib/badge/badge.component.d.ts +3 -3
  74. package/lib/base/components.class.d.ts +11 -0
  75. package/lib/base/index.d.ts +1 -0
  76. package/lib/base/mixin/base-components.class.d.ts +2 -2
  77. package/lib/base/mixin/button-mixin.class.d.ts +0 -3
  78. package/lib/base/mixin/color-look-mixing.class.d.ts +4 -4
  79. package/lib/base/mixin/mixin.class.d.ts +6 -6
  80. package/lib/base/mixin/selection-component.class.d.ts +3 -0
  81. package/lib/base/mixin/textbox-mixin.class.d.ts +3 -3
  82. package/lib/base/styles.class.d.ts +1 -1
  83. package/lib/button/button-group.component.d.ts +4 -4
  84. package/lib/button/button-item.class.d.ts +2 -2
  85. package/lib/button/button.module.d.ts +2 -3
  86. package/lib/calendar/calendar.module.d.ts +4 -5
  87. package/lib/checkbox/checkbox.module.d.ts +1 -1
  88. package/lib/datepicker/datepicker.module.d.ts +3 -4
  89. package/lib/decorators/close-button.component.d.ts +13 -0
  90. package/lib/decorators/decorators.module.d.ts +10 -6
  91. package/lib/decorators/footer.component.d.ts +8 -0
  92. package/lib/decorators/header.component.d.ts +1 -1
  93. package/lib/decorators/icon.component.d.ts +10 -0
  94. package/lib/decorators/index.d.ts +4 -0
  95. package/lib/decorators/prefix.component.d.ts +1 -1
  96. package/lib/decorators/suffix.component.d.ts +1 -1
  97. package/lib/decorators/title.component.d.ts +9 -0
  98. package/lib/dialog/dialog.module.d.ts +1 -1
  99. package/lib/drawer/drawer-container.component.d.ts +5 -8
  100. package/lib/drawer/drawer.component.d.ts +23 -19
  101. package/lib/drawer/drawer.module.d.ts +2 -3
  102. package/lib/drawer/index.d.ts +0 -1
  103. package/lib/dropdown/dropdown.module.d.ts +3 -4
  104. package/lib/menu/menu.component.d.ts +1 -0
  105. package/lib/menu/menu.module.d.ts +2 -2
  106. package/lib/number-box/number-box.module.d.ts +2 -3
  107. package/lib/page/base-page.class.d.ts +2 -2
  108. package/lib/page/index.d.ts +0 -2
  109. package/lib/page/page.module.d.ts +1 -3
  110. package/lib/password-box/password-box.module.d.ts +1 -2
  111. package/lib/picker/picker.component.d.ts +54 -13
  112. package/lib/picker/picker.model.class.d.ts +10 -0
  113. package/lib/popover/popover.component.d.ts +2 -1
  114. package/lib/popup/popup.module.d.ts +2 -1
  115. package/lib/searchbox/index.d.ts +2 -0
  116. package/lib/searchbox/searchbox.component.d.ts +16 -0
  117. package/lib/searchbox/searchbox.module.d.ts +11 -0
  118. package/lib/selectbox/selectbox.component.d.ts +4 -14
  119. package/lib/selectbox/selectbox.module.d.ts +6 -7
  120. package/lib/tabs/tabs.module.d.ts +1 -1
  121. package/lib/textbox/textbox.module.d.ts +2 -3
  122. package/lib/toast/toast.class.d.ts +4 -3
  123. package/lib/toast/toast.component.d.ts +0 -2
  124. package/lib/toast/toast.module.d.ts +3 -1
  125. package/lib/toast/toast.service.d.ts +4 -0
  126. package/package.json +1 -1
  127. package/public-api.d.ts +1 -1
  128. package/esm2020/lib/alert/alert-content.component.mjs +0 -21
  129. package/esm2020/lib/alert/alert-footer.component.mjs +0 -27
  130. package/esm2020/lib/alert/alert-suffix.component.mjs +0 -27
  131. package/esm2020/lib/alert/alert-title.component.mjs +0 -23
  132. package/esm2020/lib/drawer/drawer-content.component.mjs +0 -27
  133. package/esm2020/lib/icon/icon.component.mjs +0 -28
  134. package/esm2020/lib/icon/icon.module.mjs +0 -21
  135. package/esm2020/lib/icon/index.mjs +0 -3
  136. package/esm2020/lib/page/page-footer.component.mjs +0 -28
  137. package/esm2020/lib/page/page-header.component.mjs +0 -28
  138. package/lib/alert/alert-content.component.d.ts +0 -5
  139. package/lib/alert/alert-footer.component.d.ts +0 -5
  140. package/lib/alert/alert-suffix.component.d.ts +0 -5
  141. package/lib/alert/alert-title.component.d.ts +0 -5
  142. package/lib/drawer/drawer-content.component.d.ts +0 -8
  143. package/lib/icon/icon.component.d.ts +0 -10
  144. package/lib/icon/icon.module.d.ts +0 -8
  145. package/lib/icon/index.d.ts +0 -2
  146. package/lib/page/page-footer.component.d.ts +0 -7
  147. package/lib/page/page-header.component.d.ts +0 -7
@@ -1,48 +1,283 @@
1
- import { Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';
1
+ import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewChildren } from '@angular/core';
2
2
  import { AXBaseValueComponentMixin } from '../base';
3
3
  import { VALUE_INPUTS, VALUE_OUTPUT } from '../base/mixin/value-mixin.class';
4
4
  import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
5
6
  export class AXPickerComponent extends AXBaseValueComponentMixin {
6
- /**
7
- * @ignore
8
- */
9
7
  constructor(elementRef, cdr) {
10
8
  super(elementRef, cdr);
11
- this.rows = 3;
9
+ this.cdr = cdr;
12
10
  this.items = [];
13
- // require.ensure(['path/to/your/module'], require => {
14
- // let yourModule = require('path/to/your/module');
15
- // yourModule.someFunction();
16
- // });
11
+ this.OnChange = new EventEmitter();
12
+ this.touchOrMouse = {
13
+ isTouchable: 'ontouchstart' in window,
14
+ isMouseDown: false
15
+ };
16
+ this.draggingInfo = {
17
+ isDragging: false,
18
+ groupIndex: null,
19
+ startPageY: null
20
+ };
21
+ this.itemPerDegree = 23;
22
+ this.safeDoTimeoutId = null;
23
+ }
24
+ ngOnInit() {
25
+ this.currentIndexList = this.getInitialCurrentIndexList();
26
+ this.lastCurrentIndexList = [].concat(this.currentIndexList);
27
+ this.groupsRectList = new Array(this.items.length);
28
+ this.eventsRegister();
29
+ window.addEventListener('resize', this.safeGetRectsBindEvents.bind(this));
17
30
  }
18
31
  ngAfterViewInit() {
32
+ this.getGroupsRectList();
33
+ }
34
+ ngOnDestroy() {
35
+ window.removeEventListener('resize', this.safeGetRectsBindEvents.bind(this));
36
+ }
37
+ setGroupData(gIndex, groupData) {
38
+ if (!this.currentIndexList) {
39
+ this.currentIndexList = this.getInitialCurrentIndexList();
40
+ }
41
+ this.items[gIndex] = groupData;
42
+ const iCI = groupData.currentIndex;
43
+ let movedIndex = 0;
44
+ if (typeof iCI === 'number' && iCI >= 0 && groupData.list && groupData.list.length && iCI <= groupData.list.length - 1) {
45
+ movedIndex = Math.round(iCI);
46
+ }
47
+ this.currentIndexList[gIndex] = movedIndex;
48
+ this.lastCurrentIndexList = [].concat(this.currentIndexList);
49
+ }
50
+ getInitialCurrentIndexList() {
51
+ return this.items.map((item, index) => {
52
+ const iCI = item.currentIndex;
53
+ if (typeof iCI === 'number' && iCI >= 0 && item.list && item.list.length && iCI <= item.list.length - 1) {
54
+ return Math.round(iCI);
55
+ }
56
+ return 0;
57
+ });
58
+ }
59
+ safeGetRectsBindEvents() {
60
+ if (this.safeDoTimeoutId) {
61
+ clearTimeout(this.safeDoTimeoutId);
62
+ }
63
+ this.safeDoTimeoutId = setTimeout(() => {
64
+ this.getGroupsRectList();
65
+ }, 200);
66
+ }
67
+ getGroupsRectList() {
68
+ if (this.pickerGroupLayer) {
69
+ this.pickerGroupLayer.toArray().forEach((item, index) => {
70
+ this.groupsRectList[index] = item.nativeElement.getBoundingClientRect();
71
+ });
72
+ }
73
+ }
74
+ eventsRegister() {
75
+ const handleEventLayer = this.pickerHandleLayer.nativeElement;
76
+ if (handleEventLayer) {
77
+ this.addEventsForElement(handleEventLayer);
78
+ }
79
+ }
80
+ addEventsForElement(el) {
81
+ const _ = this.touchOrMouse.isTouchable;
82
+ const eventHandlerList = [
83
+ { name: _ ? 'touchstart' : 'mousedown', handler: this.handleStart },
84
+ { name: _ ? 'touchmove' : 'mousemove', handler: this.handleMove },
85
+ { name: _ ? 'touchend' : 'mouseup', handler: this.handleEnd },
86
+ { name: _ ? 'touchcancel' : 'mouseleave', handler: this.handleCancel }
87
+ ];
88
+ eventHandlerList.forEach((item, index) => {
89
+ el.removeEventListener(item.name, item.handler, false);
90
+ el.addEventListener(item.name, item.handler.bind(this), false);
91
+ });
92
+ }
93
+ triggerMiddleLayerGroupClick(gIndex) {
94
+ const data = this.items;
95
+ if (typeof gIndex === 'number' && typeof data[gIndex].onClick === 'function') {
96
+ data[gIndex].onClick(gIndex, this.currentIndexList[gIndex]);
97
+ }
98
+ }
99
+ triggerAboveLayerClick(ev, gIndex) {
100
+ const movedIndex = this.currentIndexList[gIndex] + 1;
101
+ this.currentIndexList[gIndex] = movedIndex;
102
+ this.correctionCurrentIndex(ev, gIndex);
103
+ }
104
+ triggerMiddleLayerClick(ev, gIndex) {
105
+ this.triggerMiddleLayerGroupClick(gIndex);
106
+ }
107
+ triggerBelowLayerClick(ev, gIndex) {
108
+ const movedIndex = this.currentIndexList[gIndex] - 1;
109
+ this.currentIndexList[gIndex] = movedIndex;
110
+ this.correctionCurrentIndex(ev, gIndex);
111
+ }
112
+ getTouchInfo(ev) {
113
+ return this.touchOrMouse.isTouchable ? ev.changedTouches[0] || ev.touches[0] : ev;
114
+ }
115
+ getGroupIndexBelongsEvent(ev) {
116
+ const touchInfo = this.getTouchInfo(ev);
117
+ for (let i = 0; i < this.groupsRectList.length; i++) {
118
+ const item = this.groupsRectList[i];
119
+ if (item.left < touchInfo.pageX && touchInfo.pageX < item.right) {
120
+ return i;
121
+ }
122
+ }
123
+ return null;
124
+ }
125
+ handleEventClick(ev) {
126
+ const gIndex = this.getGroupIndexBelongsEvent(ev);
127
+ switch (ev.target.dataset.type) {
128
+ case 'top':
129
+ this.triggerAboveLayerClick(ev, gIndex);
130
+ break;
131
+ case 'middle':
132
+ this.triggerMiddleLayerClick(ev, gIndex);
133
+ break;
134
+ case 'bottom':
135
+ this.triggerBelowLayerClick(ev, gIndex);
136
+ break;
137
+ default:
138
+ }
19
139
  }
20
- _handleMoveChange(e) {
21
- this.value = this.items[e.value];
140
+ handleStart(ev) {
141
+ if (ev.cancelable) {
142
+ ev.preventDefault();
143
+ ev.stopPropagation();
144
+ }
145
+ const touchInfo = this.getTouchInfo(ev);
146
+ this.draggingInfo.startPageY = touchInfo.pageY;
147
+ if (!this.touchOrMouse.isTouchable) {
148
+ this.touchOrMouse.isMouseDown = true;
149
+ }
22
150
  }
23
- open() {
151
+ handleMove(ev) {
152
+ ev.preventDefault();
153
+ ev.stopPropagation();
154
+ if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {
155
+ this.draggingInfo.isDragging = true;
156
+ this.setCurrentIndexOnMove(ev);
157
+ }
158
+ }
159
+ handleEnd(ev) {
160
+ ev.preventDefault();
161
+ ev.stopPropagation();
162
+ if (!this.draggingInfo.isDragging) {
163
+ this.handleEventClick(ev);
164
+ }
165
+ this.draggingInfo.isDragging = false;
166
+ this.touchOrMouse.isMouseDown = false;
167
+ this.correctionAfterDragging(ev);
168
+ }
169
+ handleCancel(ev) {
170
+ ev.preventDefault();
171
+ ev.stopPropagation();
172
+ if (this.touchOrMouse.isTouchable || this.touchOrMouse.isMouseDown) {
173
+ this.correctionAfterDragging(ev);
174
+ this.touchOrMouse.isMouseDown = false;
175
+ this.draggingInfo.isDragging = false;
176
+ }
177
+ }
178
+ setCurrentIndexOnMove(ev) {
179
+ const touchInfo = this.getTouchInfo(ev);
180
+ if (this.draggingInfo.groupIndex === null) {
181
+ this.draggingInfo.groupIndex = this.getGroupIndexBelongsEvent(ev);
182
+ }
183
+ const gIndex = this.draggingInfo.groupIndex;
184
+ if (typeof gIndex === 'number' && (this.items[gIndex].divider || !this.items[gIndex].list)) {
185
+ return;
186
+ }
187
+ const moveCount = (this.draggingInfo.startPageY - touchInfo.pageY) / 32;
188
+ const movedIndex = this.currentIndexList[gIndex] + moveCount;
189
+ this.currentIndexList[gIndex] = movedIndex;
190
+ this.draggingInfo.startPageY = touchInfo.pageY;
191
+ }
192
+ correctionAfterDragging(ev) {
193
+ const gIndex = this.draggingInfo.groupIndex;
194
+ this.correctionCurrentIndex(ev, gIndex);
195
+ this.draggingInfo.groupIndex = null;
196
+ this.draggingInfo.startPageY = null;
197
+ }
198
+ correctionCurrentIndex(ev, gIndex) {
199
+ setTimeout(() => {
200
+ if (typeof gIndex === 'number' && this.items[gIndex].divider !== true && this.items[gIndex].list.length > 0) {
201
+ const unsafeGroupIndex = this.currentIndexList[gIndex];
202
+ let movedIndex = unsafeGroupIndex;
203
+ if (unsafeGroupIndex > this.items[gIndex].list.length - 1) {
204
+ movedIndex = this.items[gIndex].list.length - 1;
205
+ }
206
+ else if (unsafeGroupIndex < 0) {
207
+ movedIndex = 0;
208
+ }
209
+ movedIndex = Math.round(movedIndex);
210
+ this.currentIndexList[gIndex] = movedIndex;
211
+ if (movedIndex !== this.lastCurrentIndexList[gIndex]) {
212
+ this.OnChange.emit({ gIndex, iIndex: movedIndex });
213
+ }
214
+ this.lastCurrentIndexList = [].concat(this.currentIndexList);
215
+ }
216
+ }, 100);
217
+ }
218
+ isCurrentItem(gIndex, iIndex) {
219
+ return this.currentIndexList[gIndex] === iIndex;
220
+ }
221
+ getCurrentIndexList() {
222
+ return this.currentIndexList;
223
+ }
224
+ getGroupClass(gIndex) {
225
+ const group = this.items[gIndex];
226
+ const defaultWeightClass = 'weight-' + (group.weight || 1);
227
+ const groupClass = [defaultWeightClass];
228
+ if (group.className) {
229
+ groupClass.push(group.className);
230
+ }
231
+ return groupClass;
232
+ }
233
+ getItemClass(gIndex, iIndex, isDivider = false) {
234
+ const group = this.items[gIndex];
235
+ const itemClass = [];
236
+ if (!isDivider && this.isCurrentItem(gIndex, iIndex)) {
237
+ itemClass.push('smooth-item-selected');
238
+ }
239
+ if (group.textAlign) {
240
+ itemClass.push('text-' + group.textAlign);
241
+ }
242
+ return itemClass;
243
+ }
244
+ getItemStyle(gIndex, iIndex) {
245
+ const gapCount = this.currentIndexList[gIndex] - iIndex;
246
+ if (Math.abs(gapCount) < (90 / this.itemPerDegree)) {
247
+ const rotateStyle = {
248
+ transform: 'rotateX(' + gapCount * this.itemPerDegree + 'deg) translate3d(0, 0, 5.625em)',
249
+ opacity: (1 - Math.abs(gapCount) / (90 / this.itemPerDegree)).toString()
250
+ };
251
+ if (!this.draggingInfo.isDragging) {
252
+ rotateStyle['transition'] = 'transform 150ms ease-out';
253
+ }
254
+ return rotateStyle;
255
+ }
256
+ if (gapCount > 0) {
257
+ return { transform: 'rotateX(90deg) translate3d(0, 0, 5.625em)' };
258
+ }
259
+ else {
260
+ return { transform: 'rotateX(-90deg) translate3d(0, 0, 5.625em)' };
261
+ }
24
262
  }
25
263
  }
26
264
  AXPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXPickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
27
- AXPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXPickerComponent, selector: "ax-picker", inputs: { readonly: "readonly", allowNull: "allowNull", value: "value", debounceTime: "debounceTime", name: "name", checked: "checked", rows: "rows", width: "width", height: "height", itemHeight: "itemHeight", items: "items" }, outputs: { valueChange: "valueChange", onValueChanged: "onValueChanged" }, host: { classAttribute: "ax-picker" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <ax-carousel [width]=\"width\" [height]=\"height\" [fixedWidth]=\"width\" [fixedHeight]=\"itemHeight\" [centered]=\"true\" [vertical]=\"true\" [loop]=\"false\" [wheel]=\"true\" (onSlideChanged)=\"_handleMoveChange($event)\">\r\n <ax-carousel-item class=\"ax-picker-item\" *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ax-carousel-item>\r\n</ax-carousel> -->\r\n<!-- <ul class=\"scroller\">\r\n <li *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </li>\r\n\r\n</ul> -->\r\n\r\n<button id=\"picker\" #picker>open picker</button>" });
265
+ AXPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXPickerComponent, selector: "ax-picker", inputs: { readonly: "readonly", allowNull: "allowNull", value: "value", debounceTime: "debounceTime", name: "name", checked: "checked", items: "items" }, outputs: { valueChange: "valueChange", onValueChanged: "onValueChanged", OnChange: "OnChange" }, host: { classAttribute: "ax-picker" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "pickerHandleLayer", first: true, predicate: ["pickerHandleLayer"], descendants: true, static: true }, { propertyName: "pickerGroupLayer", predicate: ["pickerGroupLayer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <ax-carousel [width]=\"width\" [height]=\"height\" [fixedWidth]=\"width\" [fixedHeight]=\"itemHeight\" [centered]=\"true\" [vertical]=\"true\" [loop]=\"false\" [wheel]=\"true\" (onSlideChanged)=\"_handleMoveChange($event)\">\r\n <ax-carousel-item class=\"ax-picker-item\" *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ax-carousel-item>\r\n</ax-carousel> -->\r\n<div class=\"ng-data-picker flex-box\">\r\n\r\n <!-- picker-group-layer -->\r\n <div #pickerGroupLayer *ngFor=\"let group of items; let gI = index\" class=\"picker-group\" [ngClass]=\"getGroupClass(gI)\">\r\n\r\n <div class=\"picker-list\">\r\n <div *ngIf=\"group.divider else ngIfElse\" class=\"picker-item divider\" [ngClass]=\"getItemClass(gI, i, true)\">\r\n {{ group.text }}\r\n </div>\r\n\r\n <div #ngIfElse *ngFor=\"let item of group.list; let i = index\" class=\"picker-item\" [ngClass]=\"getItemClass(gI, i)\"\r\n [ngStyle]=\"getItemStyle(gI, i)\">\r\n {{ item.value || item }}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div #pickerHandleLayer class=\"picker-handle-layer flex-box dir-column\">\r\n <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n <div data-type=\"middle\" class=\"picker-middle\"></div>\r\n <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n </div>\r\n\r\n</div>", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
28
266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXPickerComponent, decorators: [{
29
267
  type: Component,
30
- args: [{ selector: 'ax-picker', host: { class: 'ax-picker' }, inputs: [...VALUE_INPUTS], outputs: [...VALUE_OUTPUT], template: "<!-- <ax-carousel [width]=\"width\" [height]=\"height\" [fixedWidth]=\"width\" [fixedHeight]=\"itemHeight\" [centered]=\"true\" [vertical]=\"true\" [loop]=\"false\" [wheel]=\"true\" (onSlideChanged)=\"_handleMoveChange($event)\">\r\n <ax-carousel-item class=\"ax-picker-item\" *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ax-carousel-item>\r\n</ax-carousel> -->\r\n<!-- <ul class=\"scroller\">\r\n <li *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </li>\r\n\r\n</ul> -->\r\n\r\n<button id=\"picker\" #picker>open picker</button>" }]
31
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { picker: [{
268
+ args: [{ selector: 'ax-picker', host: { class: 'ax-picker' }, inputs: [...VALUE_INPUTS], outputs: [...VALUE_OUTPUT], template: "<!-- <ax-carousel [width]=\"width\" [height]=\"height\" [fixedWidth]=\"width\" [fixedHeight]=\"itemHeight\" [centered]=\"true\" [vertical]=\"true\" [loop]=\"false\" [wheel]=\"true\" (onSlideChanged)=\"_handleMoveChange($event)\">\r\n <ax-carousel-item class=\"ax-picker-item\" *ngFor=\"let item of items\">\r\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </ax-carousel-item>\r\n</ax-carousel> -->\r\n<div class=\"ng-data-picker flex-box\">\r\n\r\n <!-- picker-group-layer -->\r\n <div #pickerGroupLayer *ngFor=\"let group of items; let gI = index\" class=\"picker-group\" [ngClass]=\"getGroupClass(gI)\">\r\n\r\n <div class=\"picker-list\">\r\n <div *ngIf=\"group.divider else ngIfElse\" class=\"picker-item divider\" [ngClass]=\"getItemClass(gI, i, true)\">\r\n {{ group.text }}\r\n </div>\r\n\r\n <div #ngIfElse *ngFor=\"let item of group.list; let i = index\" class=\"picker-item\" [ngClass]=\"getItemClass(gI, i)\"\r\n [ngStyle]=\"getItemStyle(gI, i)\">\r\n {{ item.value || item }}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div #pickerHandleLayer class=\"picker-handle-layer flex-box dir-column\">\r\n <div data-type=\"top\" class=\"picker-top weight-1\"></div>\r\n <div data-type=\"middle\" class=\"picker-middle\"></div>\r\n <div data-type=\"bottom\" class=\"picker-bottom weight-1\"></div>\r\n </div>\r\n\r\n</div>" }]
269
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { pickerGroupLayer: [{
270
+ type: ViewChildren,
271
+ args: ['pickerGroupLayer']
272
+ }], pickerHandleLayer: [{
32
273
  type: ViewChild,
33
- args: ['picker']
274
+ args: ['pickerHandleLayer', { static: true }]
34
275
  }], itemTemplate: [{
35
276
  type: ContentChild,
36
277
  args: [TemplateRef]
37
- }], rows: [{
38
- type: Input
39
- }], width: [{
40
- type: Input
41
- }], height: [{
42
- type: Input
43
- }], itemHeight: [{
44
- type: Input
45
278
  }], items: [{
46
279
  type: Input
280
+ }], OnChange: [{
281
+ type: Output
47
282
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvcGlja2VyL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BpY2tlci9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFjLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNwSSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFRN0UsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHlCQUF5QjtJQXNCNUQ7O01BRUU7SUFDRixZQUFZLFVBQXNCLEVBQUUsR0FBc0I7UUFDdEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQWpCM0IsU0FBSSxHQUFXLENBQUMsQ0FBQztRQVdqQixVQUFLLEdBQVUsRUFBRSxDQUFDO1FBT2hCLHlEQUF5RDtRQUN6RCx1REFBdUQ7UUFDdkQsaUNBQWlDO1FBQ2pDLFFBQVE7SUFDVixDQUFDO0lBRUQsZUFBZTtJQUVmLENBQUM7SUFHRCxpQkFBaUIsQ0FBQyxDQUFNO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckMsQ0FBQztJQUNELElBQUk7SUFFSixDQUFDOzs4R0E1Q1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsaWJBSVosV0FBVyx5S0NkN0IsMnhCQWFnRDsyRkRIbkMsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNJLFdBQVcsUUFFZixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFDcEIsQ0FBQyxHQUFHLFlBQVksQ0FBQyxXQUNoQixDQUFDLEdBQUcsWUFBWSxDQUFDO2lJQUlMLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFHbkIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLFdBQVc7Z0JBS3pCLElBQUk7c0JBREgsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUdOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlVmFsdWVDb21wb25lbnRNaXhpbiB9IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBWQUxVRV9JTlBVVFMsIFZBTFVFX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vdmFsdWUtbWl4aW4uY2xhc3MnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXgtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgaG9zdDogeyBjbGFzczogJ2F4LXBpY2tlcicgfSxcclxuICAgIGlucHV0czogWy4uLlZBTFVFX0lOUFVUU10sXHJcbiAgICBvdXRwdXRzOiBbLi4uVkFMVUVfT1VUUFVUXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VWYWx1ZUNvbXBvbmVudE1peGluIHtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdwaWNrZXInKSBwaWNrZXI6RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD5cclxuXHJcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKVxyXG4gICAgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+XHJcblxyXG4gICAgXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcm93czogbnVtYmVyID0gMztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgd2lkdGg6IHN0cmluZztcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgaGVpZ2h0OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgaXRlbUhlaWdodDogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBpdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICogIEBpZ25vcmVcclxuICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcclxuICAgICAgLy8gICByZXF1aXJlLmVuc3VyZShbJ3BhdGgvdG8veW91ci9tb2R1bGUnXSwgcmVxdWlyZSA9PiB7XHJcbiAgICAgIC8vICAgICBsZXQgeW91ck1vZHVsZSA9IHJlcXVpcmUoJ3BhdGgvdG8veW91ci9tb2R1bGUnKTtcclxuICAgICAgLy8gICAgIHlvdXJNb2R1bGUuc29tZUZ1bmN0aW9uKCk7XHJcbiAgICAgIC8vICB9KTsgXHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBfaGFuZGxlTW92ZUNoYW5nZShlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5pdGVtc1tlLnZhbHVlXTtcclxuXHJcbiAgICB9XHJcbiAgICBvcGVuKCl7XHJcbiAgICAgXHJcbiAgICB9XHJcbn1cclxuIiwiPCEtLSA8YXgtY2Fyb3VzZWwgW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIiBbZml4ZWRXaWR0aF09XCJ3aWR0aFwiIFtmaXhlZEhlaWdodF09XCJpdGVtSGVpZ2h0XCIgIFtjZW50ZXJlZF09XCJ0cnVlXCIgW3ZlcnRpY2FsXT1cInRydWVcIiBbbG9vcF09XCJmYWxzZVwiIFt3aGVlbF09XCJ0cnVlXCIgKG9uU2xpZGVDaGFuZ2VkKT1cIl9oYW5kbGVNb3ZlQ2hhbmdlKCRldmVudClcIj5cclxuICAgIDxheC1jYXJvdXNlbC1pdGVtIGNsYXNzPVwiYXgtcGlja2VyLWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2F4LWNhcm91c2VsLWl0ZW0+XHJcbjwvYXgtY2Fyb3VzZWw+IC0tPlxyXG48IS0tIDx1bCBjbGFzcz1cInNjcm9sbGVyXCI+XHJcbiAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2xpPlxyXG5cclxuPC91bD4gLS0+XHJcblxyXG48YnV0dG9uIGlkPVwicGlja2VyXCIgI3BpY2tlcj5vcGVuIHBpY2tlcjwvYnV0dG9uPiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvcGlja2VyL3BpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BpY2tlci9waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFTN0UsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHlCQUF5QjtJQXlCNUQsWUFBWSxVQUFzQixFQUFVLEdBQXNCO1FBQzlELEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFEaUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFqQnpELFVBQUssR0FBaUIsRUFBRSxDQUFBO1FBQ3ZCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQTtRQUsvRCxpQkFBWSxHQUFHO1lBQ1gsV0FBVyxFQUFFLGNBQWMsSUFBSSxNQUFNO1lBQ3JDLFdBQVcsRUFBRSxLQUFLO1NBQ3JCLENBQUE7UUFDRCxpQkFBWSxHQUFHO1lBQ1gsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUk7U0FDbkIsQ0FBQTtRQUNELGtCQUFhLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLG9CQUFlLEdBQVEsSUFBSSxDQUFBO0lBRzNCLENBQUM7SUFH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QkFBMEIsQ0FBQTthQUN6RDtZQUNELE9BQU8sV0FBVyxDQUFBO1NBQ3JCO1FBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQ0FBMkMsRUFBRSxDQUFBO1NBQ3BFO2FBQU07WUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLDRDQUE0QyxFQUFFLENBQUE7U0FDckU7SUFDTCxDQUFDOzs4R0F2U1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsNlhBS1osV0FBVyx1U0NoQjdCLDA5Q0E4Qk07MkZEbkJPLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDSSxXQUFXLFFBRWYsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQ3BCLENBQUMsR0FBRyxZQUFZLENBQUMsV0FDaEIsQ0FBQyxHQUFHLFlBQVksQ0FBQztpSUFJUSxnQkFBZ0I7c0JBQWpELFlBQVk7dUJBQUMsa0JBQWtCO2dCQUNrQixpQkFBaUI7c0JBQWxFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdoRCxZQUFZO3NCQURYLFlBQVk7dUJBQUMsV0FBVztnQkFHaEIsS0FBSztzQkFBYixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZVZhbHVlQ29tcG9uZW50TWl4aW4gfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQgfSBmcm9tICcuLi9iYXNlL21peGluL3ZhbHVlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgUGlja2VySXRlbSB9IGZyb20gJy4vcGlja2VyLm1vZGVsLmNsYXNzJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2F4LXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIGhvc3Q6IHsgY2xhc3M6ICdheC1waWNrZXInIH0sXHJcbiAgICBpbnB1dHM6IFsuLi5WQUxVRV9JTlBVVFNdLFxyXG4gICAgb3V0cHV0czogWy4uLlZBTFVFX09VVFBVVF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlVmFsdWVDb21wb25lbnRNaXhpbiB7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbigncGlja2VyR3JvdXBMYXllcicpIHBpY2tlckdyb3VwTGF5ZXJcclxuICAgIEBWaWV3Q2hpbGQoJ3BpY2tlckhhbmRsZUxheWVyJywgeyBzdGF0aWM6IHRydWUgfSkgcGlja2VySGFuZGxlTGF5ZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZilcclxuICAgIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PlxyXG5cclxuICAgIEBJbnB1dCgpIGl0ZW1zOiBQaWNrZXJJdGVtW10gPSBbXVxyXG4gICAgQE91dHB1dCgpIE9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcblxyXG4gICAgY3VycmVudEluZGV4TGlzdDogbnVtYmVyW11cclxuICAgIGxhc3RDdXJyZW50SW5kZXhMaXN0OiBudW1iZXJbXVxyXG4gICAgZ3JvdXBzUmVjdExpc3Q6IGFueVtdXHJcbiAgICB0b3VjaE9yTW91c2UgPSB7XHJcbiAgICAgICAgaXNUb3VjaGFibGU6ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdyxcclxuICAgICAgICBpc01vdXNlRG93bjogZmFsc2VcclxuICAgIH1cclxuICAgIGRyYWdnaW5nSW5mbyA9IHtcclxuICAgICAgICBpc0RyYWdnaW5nOiBmYWxzZSxcclxuICAgICAgICBncm91cEluZGV4OiBudWxsLFxyXG4gICAgICAgIHN0YXJ0UGFnZVk6IG51bGxcclxuICAgIH1cclxuICAgIGl0ZW1QZXJEZWdyZWUgPSAyM1xyXG4gICAgc2FmZURvVGltZW91dElkOiBhbnkgPSBudWxsXHJcbiAgICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleExpc3QgPSB0aGlzLmdldEluaXRpYWxDdXJyZW50SW5kZXhMaXN0KClcclxuICAgICAgICB0aGlzLmxhc3RDdXJyZW50SW5kZXhMaXN0ID0gW10uY29uY2F0KHRoaXMuY3VycmVudEluZGV4TGlzdClcclxuXHJcbiAgICAgICAgdGhpcy5ncm91cHNSZWN0TGlzdCA9IG5ldyBBcnJheSh0aGlzLml0ZW1zLmxlbmd0aClcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudHNSZWdpc3RlcigpXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuc2FmZUdldFJlY3RzQmluZEV2ZW50cy5iaW5kKHRoaXMpKVxyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdldEdyb3Vwc1JlY3RMaXN0KClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5zYWZlR2V0UmVjdHNCaW5kRXZlbnRzLmJpbmQodGhpcykpXHJcbiAgICB9XHJcblxyXG4gICAgc2V0R3JvdXBEYXRhKGdJbmRleCwgZ3JvdXBEYXRhKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRJbmRleExpc3QpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXhMaXN0ID0gdGhpcy5nZXRJbml0aWFsQ3VycmVudEluZGV4TGlzdCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbXNbZ0luZGV4XSA9IGdyb3VwRGF0YVxyXG4gICAgICAgIGNvbnN0IGlDSSA9IGdyb3VwRGF0YS5jdXJyZW50SW5kZXhcclxuICAgICAgICBsZXQgbW92ZWRJbmRleCA9IDBcclxuICAgICAgICBpZiAodHlwZW9mIGlDSSA9PT0gJ251bWJlcicgJiYgaUNJID49IDAgJiYgZ3JvdXBEYXRhLmxpc3QgJiYgZ3JvdXBEYXRhLmxpc3QubGVuZ3RoICYmIGlDSSA8PSBncm91cERhdGEubGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIG1vdmVkSW5kZXggPSBNYXRoLnJvdW5kKGlDSSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0gPSBtb3ZlZEluZGV4XHJcbiAgICAgICAgdGhpcy5sYXN0Q3VycmVudEluZGV4TGlzdCA9IFtdLmNvbmNhdCh0aGlzLmN1cnJlbnRJbmRleExpc3QpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SW5pdGlhbEN1cnJlbnRJbmRleExpc3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpQ0kgPSBpdGVtLmN1cnJlbnRJbmRleFxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGlDSSA9PT0gJ251bWJlcicgJiYgaUNJID49IDAgJiYgaXRlbS5saXN0ICYmIGl0ZW0ubGlzdC5sZW5ndGggJiYgaUNJIDw9IGl0ZW0ubGlzdC5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChpQ0kpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIDBcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNhZmVHZXRSZWN0c0JpbmRFdmVudHMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2FmZURvVGltZW91dElkKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNhZmVEb1RpbWVvdXRJZClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zYWZlRG9UaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcm91cHNSZWN0TGlzdCgpXHJcbiAgICAgICAgfSwgMjAwKVxyXG4gICAgfVxyXG5cclxuICAgIGdldEdyb3Vwc1JlY3RMaXN0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBpY2tlckdyb3VwTGF5ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5waWNrZXJHcm91cExheWVyLnRvQXJyYXkoKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cHNSZWN0TGlzdFtpbmRleF0gPSBpdGVtLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnRzUmVnaXN0ZXIoKSB7XHJcbiAgICAgICAgY29uc3QgaGFuZGxlRXZlbnRMYXllciA9IHRoaXMucGlja2VySGFuZGxlTGF5ZXIubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIGlmIChoYW5kbGVFdmVudExheWVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRzRm9yRWxlbWVudChoYW5kbGVFdmVudExheWVyKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRFdmVudHNGb3JFbGVtZW50KGVsKSB7XHJcbiAgICAgICAgY29uc3QgXyA9IHRoaXMudG91Y2hPck1vdXNlLmlzVG91Y2hhYmxlXHJcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyTGlzdCA9IFtcclxuICAgICAgICAgICAgeyBuYW1lOiBfID8gJ3RvdWNoc3RhcnQnIDogJ21vdXNlZG93bicsIGhhbmRsZXI6IHRoaXMuaGFuZGxlU3RhcnQgfSxcclxuICAgICAgICAgICAgeyBuYW1lOiBfID8gJ3RvdWNobW92ZScgOiAnbW91c2Vtb3ZlJywgaGFuZGxlcjogdGhpcy5oYW5kbGVNb3ZlIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogXyA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCcsIGhhbmRsZXI6IHRoaXMuaGFuZGxlRW5kIH0sXHJcbiAgICAgICAgICAgIHsgbmFtZTogXyA/ICd0b3VjaGNhbmNlbCcgOiAnbW91c2VsZWF2ZScsIGhhbmRsZXI6IHRoaXMuaGFuZGxlQ2FuY2VsIH1cclxuICAgICAgICBdXHJcbiAgICAgICAgZXZlbnRIYW5kbGVyTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGl0ZW0ubmFtZSwgaXRlbS5oYW5kbGVyLCBmYWxzZSlcclxuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihpdGVtLm5hbWUsIGl0ZW0uaGFuZGxlci5iaW5kKHRoaXMpLCBmYWxzZSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRyaWdnZXJNaWRkbGVMYXllckdyb3VwQ2xpY2soZ0luZGV4KSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuaXRlbXNcclxuICAgICAgICBpZiAodHlwZW9mIGdJbmRleCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGRhdGFbZ0luZGV4XS5vbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIGRhdGFbZ0luZGV4XS5vbkNsaWNrKGdJbmRleCwgdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyaWdnZXJBYm92ZUxheWVyQ2xpY2soZXYsIGdJbmRleCkge1xyXG4gICAgICAgIGNvbnN0IG1vdmVkSW5kZXggPSB0aGlzLmN1cnJlbnRJbmRleExpc3RbZ0luZGV4XSArIDFcclxuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleExpc3RbZ0luZGV4XSA9IG1vdmVkSW5kZXhcclxuICAgICAgICB0aGlzLmNvcnJlY3Rpb25DdXJyZW50SW5kZXgoZXYsIGdJbmRleClcclxuICAgIH1cclxuXHJcbiAgICB0cmlnZ2VyTWlkZGxlTGF5ZXJDbGljayhldiwgZ0luZGV4KSB7XHJcbiAgICAgICAgdGhpcy50cmlnZ2VyTWlkZGxlTGF5ZXJHcm91cENsaWNrKGdJbmRleClcclxuICAgIH1cclxuXHJcbiAgICB0cmlnZ2VyQmVsb3dMYXllckNsaWNrKGV2LCBnSW5kZXgpIHtcclxuICAgICAgICBjb25zdCBtb3ZlZEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0gLSAxXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0gPSBtb3ZlZEluZGV4XHJcbiAgICAgICAgdGhpcy5jb3JyZWN0aW9uQ3VycmVudEluZGV4KGV2LCBnSW5kZXgpXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VG91Y2hJbmZvKGV2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG91Y2hPck1vdXNlLmlzVG91Y2hhYmxlID8gZXYuY2hhbmdlZFRvdWNoZXNbMF0gfHwgZXYudG91Y2hlc1swXSA6IGV2XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R3JvdXBJbmRleEJlbG9uZ3NFdmVudChldikge1xyXG4gICAgICAgIGNvbnN0IHRvdWNoSW5mbyA9IHRoaXMuZ2V0VG91Y2hJbmZvKGV2KVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5ncm91cHNSZWN0TGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5ncm91cHNSZWN0TGlzdFtpXVxyXG4gICAgICAgICAgICBpZiAoaXRlbS5sZWZ0IDwgdG91Y2hJbmZvLnBhZ2VYICYmIHRvdWNoSW5mby5wYWdlWCA8IGl0ZW0ucmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGxcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFdmVudENsaWNrKGV2KSB7XHJcbiAgICAgICAgY29uc3QgZ0luZGV4ID0gdGhpcy5nZXRHcm91cEluZGV4QmVsb25nc0V2ZW50KGV2KVxyXG4gICAgICAgIHN3aXRjaCAoZXYudGFyZ2V0LmRhdGFzZXQudHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyQWJvdmVMYXllckNsaWNrKGV2LCBnSW5kZXgpXHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdtaWRkbGUnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyTWlkZGxlTGF5ZXJDbGljayhldiwgZ0luZGV4KVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlckJlbG93TGF5ZXJDbGljayhldiwgZ0luZGV4KVxyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlU3RhcnQoZXYpIHtcclxuICAgICAgICBpZiAoZXYuY2FuY2VsYWJsZSkge1xyXG4gICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRvdWNoSW5mbyA9IHRoaXMuZ2V0VG91Y2hJbmZvKGV2KVxyXG4gICAgICAgIHRoaXMuZHJhZ2dpbmdJbmZvLnN0YXJ0UGFnZVkgPSB0b3VjaEluZm8ucGFnZVlcclxuICAgICAgICBpZiAoIXRoaXMudG91Y2hPck1vdXNlLmlzVG91Y2hhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hPck1vdXNlLmlzTW91c2VEb3duID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVNb3ZlKGV2KSB7XHJcbiAgICAgICAgZXYucHJldmVudERlZmF1bHQoKVxyXG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpXHJcbiAgICAgICAgaWYgKHRoaXMudG91Y2hPck1vdXNlLmlzVG91Y2hhYmxlIHx8IHRoaXMudG91Y2hPck1vdXNlLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZHJhZ2dpbmdJbmZvLmlzRHJhZ2dpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudEluZGV4T25Nb3ZlKGV2KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVFbmQoZXYpIHtcclxuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICBpZiAoIXRoaXMuZHJhZ2dpbmdJbmZvLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFdmVudENsaWNrKGV2KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRyYWdnaW5nSW5mby5pc0RyYWdnaW5nID0gZmFsc2VcclxuICAgICAgICB0aGlzLnRvdWNoT3JNb3VzZS5pc01vdXNlRG93biA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5jb3JyZWN0aW9uQWZ0ZXJEcmFnZ2luZyhldilcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVDYW5jZWwoZXYpIHtcclxuICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICBpZiAodGhpcy50b3VjaE9yTW91c2UuaXNUb3VjaGFibGUgfHwgdGhpcy50b3VjaE9yTW91c2UuaXNNb3VzZURvd24pIHtcclxuICAgICAgICAgICAgdGhpcy5jb3JyZWN0aW9uQWZ0ZXJEcmFnZ2luZyhldilcclxuICAgICAgICAgICAgdGhpcy50b3VjaE9yTW91c2UuaXNNb3VzZURvd24gPSBmYWxzZVxyXG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nSW5mby5pc0RyYWdnaW5nID0gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q3VycmVudEluZGV4T25Nb3ZlKGV2KSB7XHJcbiAgICAgICAgY29uc3QgdG91Y2hJbmZvID0gdGhpcy5nZXRUb3VjaEluZm8oZXYpXHJcbiAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmdJbmZvLmdyb3VwSW5kZXggPT09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZ0luZm8uZ3JvdXBJbmRleCA9IHRoaXMuZ2V0R3JvdXBJbmRleEJlbG9uZ3NFdmVudChldilcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZ0luZGV4ID0gdGhpcy5kcmFnZ2luZ0luZm8uZ3JvdXBJbmRleFxyXG4gICAgICAgIGlmICh0eXBlb2YgZ0luZGV4ID09PSAnbnVtYmVyJyAmJiAodGhpcy5pdGVtc1tnSW5kZXhdLmRpdmlkZXIgfHwgIXRoaXMuaXRlbXNbZ0luZGV4XS5saXN0KSkge1xyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbW92ZUNvdW50ID0gKHRoaXMuZHJhZ2dpbmdJbmZvLnN0YXJ0UGFnZVkgLSB0b3VjaEluZm8ucGFnZVkpIC8gMzJcclxuICAgICAgICBjb25zdCBtb3ZlZEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0gKyBtb3ZlQ291bnRcclxuICAgICAgICB0aGlzLmN1cnJlbnRJbmRleExpc3RbZ0luZGV4XSA9IG1vdmVkSW5kZXhcclxuICAgICAgICB0aGlzLmRyYWdnaW5nSW5mby5zdGFydFBhZ2VZID0gdG91Y2hJbmZvLnBhZ2VZXHJcbiAgICB9XHJcblxyXG4gICAgY29ycmVjdGlvbkFmdGVyRHJhZ2dpbmcoZXYpIHtcclxuICAgICAgICBjb25zdCBnSW5kZXggPSB0aGlzLmRyYWdnaW5nSW5mby5ncm91cEluZGV4XHJcbiAgICAgICAgdGhpcy5jb3JyZWN0aW9uQ3VycmVudEluZGV4KGV2LCBnSW5kZXgpXHJcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0luZm8uZ3JvdXBJbmRleCA9IG51bGxcclxuICAgICAgICB0aGlzLmRyYWdnaW5nSW5mby5zdGFydFBhZ2VZID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIGNvcnJlY3Rpb25DdXJyZW50SW5kZXgoZXYsIGdJbmRleCkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGdJbmRleCA9PT0gJ251bWJlcicgJiYgdGhpcy5pdGVtc1tnSW5kZXhdLmRpdmlkZXIgIT09IHRydWUgJiYgdGhpcy5pdGVtc1tnSW5kZXhdLmxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdW5zYWZlR3JvdXBJbmRleCA9IHRoaXMuY3VycmVudEluZGV4TGlzdFtnSW5kZXhdXHJcbiAgICAgICAgICAgICAgICBsZXQgbW92ZWRJbmRleCA9IHVuc2FmZUdyb3VwSW5kZXhcclxuICAgICAgICAgICAgICAgIGlmICh1bnNhZmVHcm91cEluZGV4ID4gdGhpcy5pdGVtc1tnSW5kZXhdLmxpc3QubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vdmVkSW5kZXggPSB0aGlzLml0ZW1zW2dJbmRleF0ubGlzdC5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVuc2FmZUdyb3VwSW5kZXggPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW92ZWRJbmRleCA9IDBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1vdmVkSW5kZXggPSBNYXRoLnJvdW5kKG1vdmVkSW5kZXgpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleExpc3RbZ0luZGV4XSA9IG1vdmVkSW5kZXhcclxuICAgICAgICAgICAgICAgIGlmIChtb3ZlZEluZGV4ICE9PSB0aGlzLmxhc3RDdXJyZW50SW5kZXhMaXN0W2dJbmRleF0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk9uQ2hhbmdlLmVtaXQoeyBnSW5kZXgsIGlJbmRleDogbW92ZWRJbmRleCB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0Q3VycmVudEluZGV4TGlzdCA9IFtdLmNvbmNhdCh0aGlzLmN1cnJlbnRJbmRleExpc3QpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDApXHJcbiAgICB9XHJcblxyXG4gICAgaXNDdXJyZW50SXRlbShnSW5kZXgsIGlJbmRleCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleExpc3RbZ0luZGV4XSA9PT0gaUluZGV4XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q3VycmVudEluZGV4TGlzdCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXhMaXN0XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0R3JvdXBDbGFzcyhnSW5kZXgpIHtcclxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuaXRlbXNbZ0luZGV4XVxyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRXZWlnaHRDbGFzcyA9ICd3ZWlnaHQtJyArIChncm91cC53ZWlnaHQgfHwgMSlcclxuICAgICAgICBjb25zdCBncm91cENsYXNzID0gW2RlZmF1bHRXZWlnaHRDbGFzc11cclxuICAgICAgICBpZiAoZ3JvdXAuY2xhc3NOYW1lKSB7XHJcbiAgICAgICAgICAgIGdyb3VwQ2xhc3MucHVzaChncm91cC5jbGFzc05hbWUpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBncm91cENsYXNzXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUNsYXNzKGdJbmRleCwgaUluZGV4LCBpc0RpdmlkZXIgPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5pdGVtc1tnSW5kZXhdXHJcbiAgICAgICAgY29uc3QgaXRlbUNsYXNzID0gW11cclxuICAgICAgICBpZiAoIWlzRGl2aWRlciAmJiB0aGlzLmlzQ3VycmVudEl0ZW0oZ0luZGV4LCBpSW5kZXgpKSB7XHJcbiAgICAgICAgICAgIGl0ZW1DbGFzcy5wdXNoKCdzbW9vdGgtaXRlbS1zZWxlY3RlZCcpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChncm91cC50ZXh0QWxpZ24pIHtcclxuICAgICAgICAgICAgaXRlbUNsYXNzLnB1c2goJ3RleHQtJyArIGdyb3VwLnRleHRBbGlnbilcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW1DbGFzc1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1TdHlsZShnSW5kZXgsIGlJbmRleCkge1xyXG4gICAgICAgIGNvbnN0IGdhcENvdW50ID0gdGhpcy5jdXJyZW50SW5kZXhMaXN0W2dJbmRleF0gLSBpSW5kZXhcclxuICAgICAgICBpZiAoTWF0aC5hYnMoZ2FwQ291bnQpIDwgKDkwIC8gdGhpcy5pdGVtUGVyRGVncmVlKSkge1xyXG4gICAgICAgICAgICBjb25zdCByb3RhdGVTdHlsZSA9IHtcclxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZVgoJyArIGdhcENvdW50ICogdGhpcy5pdGVtUGVyRGVncmVlICsgJ2RlZykgdHJhbnNsYXRlM2QoMCwgMCwgNS42MjVlbSknLFxyXG4gICAgICAgICAgICAgICAgb3BhY2l0eTogKDEgLSBNYXRoLmFicyhnYXBDb3VudCkgLyAoOTAgLyB0aGlzLml0ZW1QZXJEZWdyZWUpKS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nSW5mby5pc0RyYWdnaW5nKSB7XHJcbiAgICAgICAgICAgICAgICByb3RhdGVTdHlsZVsndHJhbnNpdGlvbiddID0gJ3RyYW5zZm9ybSAxNTBtcyBlYXNlLW91dCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcm90YXRlU3R5bGVcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGdhcENvdW50ID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4geyB0cmFuc2Zvcm06ICdyb3RhdGVYKDkwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCA1LjYyNWVtKScgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHRyYW5zZm9ybTogJ3JvdGF0ZVgoLTkwZGVnKSB0cmFuc2xhdGUzZCgwLCAwLCA1LjYyNWVtKScgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8IS0tIDxheC1jYXJvdXNlbCBbd2lkdGhdPVwid2lkdGhcIiBbaGVpZ2h0XT1cImhlaWdodFwiIFtmaXhlZFdpZHRoXT1cIndpZHRoXCIgW2ZpeGVkSGVpZ2h0XT1cIml0ZW1IZWlnaHRcIiAgW2NlbnRlcmVkXT1cInRydWVcIiBbdmVydGljYWxdPVwidHJ1ZVwiIFtsb29wXT1cImZhbHNlXCIgW3doZWVsXT1cInRydWVcIiAob25TbGlkZUNoYW5nZWQpPVwiX2hhbmRsZU1vdmVDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPGF4LWNhcm91c2VsLWl0ZW0gY2xhc3M9XCJheC1waWNrZXItaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYXgtY2Fyb3VzZWwtaXRlbT5cclxuPC9heC1jYXJvdXNlbD4gLS0+XHJcbjxkaXYgY2xhc3M9XCJuZy1kYXRhLXBpY2tlciBmbGV4LWJveFwiPlxyXG5cclxuICA8IS0tIHBpY2tlci1ncm91cC1sYXllciAtLT5cclxuICA8ZGl2ICNwaWNrZXJHcm91cExheWVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBpdGVtczsgbGV0IGdJID0gaW5kZXhcIiBjbGFzcz1cInBpY2tlci1ncm91cFwiIFtuZ0NsYXNzXT1cImdldEdyb3VwQ2xhc3MoZ0kpXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBpY2tlci1saXN0XCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJncm91cC5kaXZpZGVyIGVsc2UgbmdJZkVsc2VcIiBjbGFzcz1cInBpY2tlci1pdGVtIGRpdmlkZXJcIiBbbmdDbGFzc109XCJnZXRJdGVtQ2xhc3MoZ0ksIGksIHRydWUpXCI+XHJcbiAgICAgICAge3sgZ3JvdXAudGV4dCB9fVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgI25nSWZFbHNlICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwLmxpc3Q7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInBpY2tlci1pdGVtXCIgW25nQ2xhc3NdPVwiZ2V0SXRlbUNsYXNzKGdJLCBpKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0SXRlbVN0eWxlKGdJLCBpKVwiPlxyXG4gICAgICAgIHt7IGl0ZW0udmFsdWUgfHwgaXRlbSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiAjcGlja2VySGFuZGxlTGF5ZXIgY2xhc3M9XCJwaWNrZXItaGFuZGxlLWxheWVyIGZsZXgtYm94IGRpci1jb2x1bW5cIj5cclxuICAgIDxkaXYgZGF0YS10eXBlPVwidG9wXCIgY2xhc3M9XCJwaWNrZXItdG9wIHdlaWdodC0xXCI+PC9kaXY+XHJcbiAgICA8ZGl2IGRhdGEtdHlwZT1cIm1pZGRsZVwiIGNsYXNzPVwicGlja2VyLW1pZGRsZVwiPjwvZGl2PlxyXG4gICAgPGRpdiBkYXRhLXR5cGU9XCJib3R0b21cIiBjbGFzcz1cInBpY2tlci1ib3R0b20gd2VpZ2h0LTFcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLm1vZGVsLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvbXBvbmVudHMvc3JjL2xpYi9waWNrZXIvcGlja2VyLm1vZGVsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFBpY2tlckl0ZW0ge1xyXG4gIHRleHRBbGlnbj86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ2p1c3RpZnknIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdub3dyYXAnIHwgJ3dyYXAnXHJcbiAgd2VpZ2h0PzogMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTAgfCAxMSB8IDEyXHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nXHJcblxyXG4gIG9uQ2xpY2s/OiBGdW5jdGlvblxyXG4gIGN1cnJlbnRJbmRleD86IG51bWJlclxyXG4gIGxpc3Q/Olx0QXJyYXk8YW55PlxyXG5cclxuICBkaXZpZGVyPzogYm9vbGVhblxyXG4gIHRleHQ/OiBzdHJpbmdcclxufSJdfQ==
@@ -38,6 +38,7 @@ export class AXPopoverComponent extends AXInteractiveComponenetMixin {
38
38
  this.closeTrigger = 'clickout';
39
39
  //
40
40
  this.hasBackdrop = false;
41
+ this.adaptivityEnabled = false;
41
42
  //
42
43
  this._mousePos = { x: 0, y: 0 };
43
44
  this._isScrollAttached = false;
@@ -150,7 +151,7 @@ export class AXPopoverComponent extends AXInteractiveComponenetMixin {
150
151
  if (!targetRef)
151
152
  return;
152
153
  if (!this._overlayRef) {
153
- if (this._platform.is('Mobile')) {
154
+ if (this._platform.is('Mobile') && this.adaptivityEnabled) {
154
155
  this._openAsActionsheet();
155
156
  }
156
157
  else {
@@ -220,7 +221,7 @@ export class AXPopoverComponent extends AXInteractiveComponenetMixin {
220
221
  }
221
222
  }
222
223
  AXPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXPopoverComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.Overlay }, { token: i2.AXPlatform }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
223
- AXPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXPopoverComponent, selector: "ax-popover", inputs: { target: "target", position: "position", openTrigger: "openTrigger", closeTrigger: "closeTrigger", hasBackdrop: "hasBackdrop", backdropClass: "backdropClass" }, outputs: { onOpened: "onOpened", onClosed: "onClosed" }, host: { listeners: { "keydown": "_handleKeydownHandler($event)" } }, viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
224
+ AXPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: AXPopoverComponent, selector: "ax-popover", inputs: { target: "target", position: "position", openTrigger: "openTrigger", closeTrigger: "closeTrigger", hasBackdrop: "hasBackdrop", backdropClass: "backdropClass", adaptivityEnabled: "adaptivityEnabled" }, outputs: { onOpened: "onOpened", onClosed: "onClosed" }, host: { listeners: { "keydown": "_handleKeydownHandler($event)" } }, viewQueries: [{ propertyName: "_baseTemplate", first: true, predicate: ["baseTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #baseTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
224
225
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: AXPopoverComponent, decorators: [{
225
226
  type: Component,
226
227
  args: [{ selector: 'ax-popover', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #baseTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>" }]
@@ -239,6 +240,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
239
240
  type: Input
240
241
  }], backdropClass: [{
241
242
  type: Input
243
+ }], adaptivityEnabled: [{
244
+ type: Input
242
245
  }], onOpened: [{
243
246
  type: Output
244
247
  }], onClosed: [{
@@ -247,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
247
250
  type: HostListener,
248
251
  args: ['keydown', ['$event']]
249
252
  }] } });
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNkIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBb0IsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbE4sT0FBTyxFQUFFLGVBQWUsRUFBZ0MsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEcsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFZOUMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLDRCQUE0QjtJQUVsRSxZQUNVLFdBQXVCLEVBQ3hCLElBQXVCLEVBQ3RCLEtBQWEsRUFDYixRQUFpQixFQUNqQixTQUFxQixFQUNyQixpQkFBbUM7UUFHM0MsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQVJqQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFzQjdDLGFBQVEsR0FBZ0Q7WUFDdEQ7Z0JBQ0UsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRO2FBQ25CO1NBQ0YsQ0FBQztRQU9GLFVBQUssR0FBbUIsRUFBRSxDQUFDO1FBQzNCLEVBQUU7UUFFRixnQkFBVyxHQUFnRCxRQUFRLENBQUM7UUFDcEUsRUFBRTtRQUVGLGlCQUFZLEdBQXVDLFVBQVUsQ0FBQztRQUM5RCxFQUFFO1FBRUYsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFJN0IsRUFBRTtRQUNNLGNBQVMsR0FBWSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3BDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUMzQyxFQUFFO1FBRUYsYUFBUSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTlELGFBQVEsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQTFEOUQsQ0FBQztJQUdELElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsQ0FBNkM7UUFDN0QsSUFBSSxDQUFDLFlBQVksV0FBVztZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzthQUNkLElBQUksQ0FBQyxZQUFZLFVBQVU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO2FBQzVCLElBQUksQ0FBQyxZQUFZLGVBQWU7WUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBOENELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsRUFBRTtJQUNGLFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsRUFBRTtnQkFDcEMsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFhLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUM3QyxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDckQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ0w7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFO2dCQUNwQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQWEsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO29CQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO29CQUM3QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2YsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0NBQ2hKLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDakIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO3FCQUNSO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7YUFFTDtZQUNELEVBQUU7WUFDRixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFO2dCQUNqRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQWEsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNoQyxJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzdELENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDTDtTQUNGO0lBQ0gsQ0FBQztJQUNELEVBQUU7SUFDRixTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxDQUFnQjtRQUNwQyxtREFBbUQ7UUFDbkQsbUJBQW1CO1FBQ25CLElBQUk7UUFDSixJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxFQUFFO0lBQ0YsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFDRCxFQUFFO0lBQ0YsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVM7WUFDWixPQUFPO1FBRVQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDM0I7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ2hFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFxQixDQUFDO29CQUN2QyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7b0JBQzFCLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTt3QkFDL0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUNkO2dCQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDTDtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDL0MsSUFBSSxDQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBc0IsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7NEJBQ3BFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDMUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDSixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2lCQUMvQjtZQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDTDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUN2RjtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsU0FBc0I7UUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUN0QyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtpQkFDdkMsbUJBQW1CLENBQUMsU0FBUyxDQUFDO2lCQUM5QixhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM3RSxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2xCLG1CQUFtQixFQUFFLElBQUk7WUFDekIsVUFBVSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsbUJBQW1CLENBQUM7WUFDdEQsU0FBUyxFQUFFLE9BQU87WUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksa0NBQWtDLENBQUM7U0FDMUUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQztnQkFDMUY7b0JBQ0UsT0FBTyxFQUFFLFFBQVE7b0JBQ2pCLE9BQU8sRUFBRSxRQUFRO29CQUNqQixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsUUFBUSxFQUFFLFFBQVE7aUJBQ25CO2FBQ0YsQ0FBQztZQUNGLG1CQUFtQixFQUFFLElBQUk7WUFDekIsVUFBVSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLENBQUM7WUFDekQsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbkUsQ0FBQztJQUVPLE9BQU8sQ0FBQyxHQUFpQjtRQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBR0QsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzs7K0dBeFBVLGtCQUFrQjttR0FBbEIsa0JBQWtCLGdlQ25CL0IsOEVBRWM7MkZEaUJELGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGlCQUVQLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07b09Ba0JwQyxNQUFNO3NCQURoQixLQUFLO2dCQWVOLFFBQVE7c0JBRFAsS0FBSztnQkFpQk4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGNBQWM7Z0JBUXpCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFPTixRQUFRO3NCQURQLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxNQUFNO2dCQTREUCxxQkFBcUI7c0JBRHBCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBFbGVtZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmLCBIb3N0TGlzdGVuZXIsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudCwgQVhDb25uZWN0ZWRQb3NpdGlvbiwgQVhFdmVudCwgQVhJbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbiB9IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBBWERyYXdpbmdVdGlsLCBBWFBsYXRmb3JtLCBBWFBvaW50IH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgdGhyb3R0bGVUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtcG9wb3ZlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFBvcG92ZXJDb21wb25lbnQgZXh0ZW5kcyBBWEludGVyYWN0aXZlQ29tcG9uZW5ldE1peGluIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgX3BsYXRmb3JtOiBBWFBsYXRmb3JtLFxyXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuXHJcbiAgKSB7XHJcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgX2Nkcik7XHJcbiAgfVxyXG4gIC8vXHJcbiAgcHJpdmF0ZSBfdGFyZ2V0OiBIVE1MRWxlbWVudDtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdGFyZ2V0KCk6IEhUTUxFbGVtZW50IHwgRWxlbWVudFJlZiB8IEFYQmFzZUNvbXBvbmVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHRhcmdldCh2OiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBBWEJhc2VDb21wb25lbnQpIHtcclxuICAgIGlmICh2IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpXHJcbiAgICAgIHRoaXMuX3RhcmdldCA9IHY7XHJcbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgRWxlbWVudFJlZilcclxuICAgICAgdGhpcy5fdGFyZ2V0ID0gdi5uYXRpdmVFbGVtZW50O1xyXG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEFYQmFzZUNvbXBvbmVudClcclxuICAgICAgdGhpcy5fdGFyZ2V0ID0gdi5fZ2V0SW5uZXJFbGVtZW50KCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBwb3NpdGlvbjogQVhDb25uZWN0ZWRQb3NpdGlvbiB8IEFYQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcclxuICAgIHtcclxuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxyXG4gICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgfVxyXG4gIF07XHJcbiAgLy9cclxuICBAVmlld0NoaWxkKCdiYXNlVGVtcGxhdGUnKVxyXG4gIF9iYXNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgX3RlbXBsYXRlUG9ydGFsOiBUZW1wbGF0ZVBvcnRhbDtcclxuXHJcbiAgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgLy9cclxuICBASW5wdXQoKVxyXG4gIG9wZW5UcmlnZ2VyOiAnbWFudWFsJyB8ICdjbGljaycgfCAnbW91c2VvdmVyJyB8ICd0b2dnbGUnID0gJ3RvZ2dsZSc7XHJcbiAgLy9cclxuICBASW5wdXQoKVxyXG4gIGNsb3NlVHJpZ2dlcjogJ21hbnVhbCcgfCAnY2xpY2tvdXQnIHwgJ21vdXNlb3V0JyA9ICdjbGlja291dCc7XHJcbiAgLy9cclxuICBASW5wdXQoKVxyXG4gIGhhc0JhY2tkcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmFja2Ryb3BDbGFzczogc3RyaW5nO1xyXG4gIC8vXHJcbiAgcHJpdmF0ZSBfbW91c2VQb3M6IEFYUG9pbnQgPSB7IHg6IDAsIHk6IDAgfTtcclxuICBwcml2YXRlIF9pc1Njcm9sbEF0dGFjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLy9cclxuICBAT3V0cHV0KClcclxuICBvbk9wZW5lZDogRXZlbnRFbWl0dGVyPEFYRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uQ2xvc2VkOiBFdmVudEVtaXR0ZXI8QVhFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRXZlbnQ+KCk7XHJcblxyXG4gIF9lbWl0T25PcGVuZWRFdmVudCgpIHtcclxuICAgIHRoaXMub25PcGVuZWQuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuX2dldEhvc3RFbGVtZW50KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX2VtaXRPbkNsb3NlZEV2ZW50KCkge1xyXG4gICAgdGhpcy5vbkNsb3NlZC5lbWl0KHtcclxuICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5fZ2V0SG9zdEVsZW1lbnQoKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vXHJcbiAgb25WaWV3SW5pdCgpIHtcclxuICAgIGlmICh0aGlzLl90YXJnZXQpIHtcclxuICAgICAgaWYgKHRoaXMub3BlblRyaWdnZXIgPT09ICdtb3VzZW92ZXInKSB7XHJcbiAgICAgICAgY29uc3QgbW91c2VFbnRlciQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fdGFyZ2V0LCAnbW91c2VvdmVyJyk7XHJcbiAgICAgICAgdGhpcy5fYWRkU3ViKG1vdXNlRW50ZXIkLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICAgIGNvbnN0IHBvaW50ID0geyB4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WSB9O1xyXG4gICAgICAgICAgaWYgKEFYRHJhd2luZ1V0aWwuaXNJbkVsZW1lbnRCb3VuZChwb2ludCwgdGhpcy5fdGFyZ2V0KSlcclxuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNsb3NlVHJpZ2dlciA9PT0gJ21vdXNlb3V0Jykge1xyXG4gICAgICAgIGNvbnN0IG1vdXNlTW92ZSQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKTtcclxuICAgICAgICB0aGlzLl9hZGRTdWIobW91c2VNb3ZlJC5waXBlKHRocm90dGxlVGltZSg1MCkpLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICAgIHRoaXMuX21vdXNlUG9zLnggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgICB0aGlzLl9tb3VzZVBvcy55ID0gZS5jbGllbnRZO1xyXG4gICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghXy5zb21lKFt0aGlzLl90YXJnZXQsIHRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnRdLCBlbCA9PiBfLmluY2x1ZGVzKGRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHRoaXMuX21vdXNlUG9zLngsIHRoaXMuX21vdXNlUG9zLnkpLCBlbCkpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9LCAxMDApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgfVxyXG4gICAgICAvL1xyXG4gICAgICBpZiAodGhpcy5vcGVuVHJpZ2dlciA9PT0gJ2NsaWNrJyB8fCB0aGlzLm9wZW5UcmlnZ2VyID09PSAndG9nZ2xlJykge1xyXG4gICAgICAgIGNvbnN0IGNsaWNrJCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLl90YXJnZXQsICdjbGljaycpO1xyXG4gICAgICAgIHRoaXMuX2FkZFN1YihjbGljayQuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcGVuVHJpZ2dlciA9PSAndG9nZ2xlJyA/IHRoaXMudG9nZ2xlKCkgOiB0aGlzLm9wZW4oKTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy9cclxuICBvbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kZXRhY2goKTtcclxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHtcclxuICAgICAgcz8udW5zdWJzY3JpYmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgX2hhbmRsZUtleWRvd25IYW5kbGVyKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgLy8gICB0aGlzLnRvZ2dsZSgpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCkge1xyXG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcclxuICB9XHJcbiAgLy9cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLl9lbWl0T25DbG9zZWRFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgZGlzcG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xyXG4gIH1cclxuICAvL1xyXG4gIG9wZW4oKSB7XHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZW5zdXJlT3ZlcmxheUNyZWF0ZWQoKTtcclxuICAgIHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3RlbXBsYXRlUG9ydGFsKTtcclxuICAgIHRoaXMuX2VtaXRPbk9wZW5lZEV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbnN1cmVPdmVybGF5Q3JlYXRlZCgpIHtcclxuICAgIGNvbnN0IHRhcmdldFJlZiA9IHRoaXMuX3RhcmdldDtcclxuICAgIGlmICghdGFyZ2V0UmVmKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgIGlmICh0aGlzLl9wbGF0Zm9ybS5pcygnTW9iaWxlJykpIHtcclxuICAgICAgICB0aGlzLl9vcGVuQXNBY3Rpb25zaGVldCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX29wZW5Bc1BvcG92ZXIodGFyZ2V0UmVmKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY2xvc2VUcmlnZ2VyID09ICdjbGlja291dCcpIHtcclxuICAgICAgICB0aGlzLl9hZGRTdWIodGhpcy5fb3ZlcmxheVJlZi5fb3V0c2lkZVBvaW50ZXJFdmVudHMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYy50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCBjb21FbGVtID0gdGFyZ2V0UmVmO1xyXG4gICAgICAgICAgaWYgKCEoY29tRWxlbS5jb250YWlucyh0YXJnZXQpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9vdmVybGF5UmVmLmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzU2Nyb2xsQXR0YWNoZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9wbGF0Zm9ybS5zY3JvbGwuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIShjLm5hdGl2ZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LW92ZXJsYXktcGFuZScpKVxyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuX2lzU2Nyb2xsQXR0YWNoZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl90ZW1wbGF0ZVBvcnRhbCkge1xyXG4gICAgICB0aGlzLl90ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9iYXNlVGVtcGxhdGUsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3BlbkFzUG9wb3Zlcih0YXJnZXRSZWY6IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXHJcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoQXJyYXkuaXNBcnJheSh0aGlzLnBvc2l0aW9uKSA/IHRoaXMucG9zaXRpb24gOiBbdGhpcy5wb3NpdGlvbl0pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKSxcclxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWZhZGVJbicsICdheC1hbmltYXRlLWZhc3RlciddLFxyXG4gICAgICBtYXhIZWlnaHQ6ICd1bnNldCcsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmhhc0JhY2tkcm9wLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiBbdGhpcy5iYWNrZHJvcENsYXNzIHx8ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCddXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5Bc0FjdGlvbnNoZWV0KCkge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8oZG9jdW1lbnQuYm9keSkud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgIH1cclxuICAgICAgXSksXHJcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXgtYW5pbWF0ZS1zbGlkZUluVXAnLCAnYXgtYW5pbWF0ZS1mYXN0ZXInXSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnMTAwJSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmID8gdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRTdWIoc3ViOiBTdWJzY3JpcHRpb24pIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChzdWIpO1xyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjYmFzZVRlbXBsYXRlPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNkIsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFlLFVBQVUsRUFBb0IsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbE4sT0FBTyxFQUFFLGVBQWUsRUFBZ0MsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEcsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFZOUMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLDRCQUE0QjtJQUVsRSxZQUNVLFdBQXVCLEVBQ3hCLElBQXVCLEVBQ3RCLEtBQWEsRUFDYixRQUFpQixFQUNqQixTQUFxQixFQUNyQixpQkFBbUM7UUFHM0MsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQVJqQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN4QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEs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QWVOLFFBQVE7c0JBRFAsS0FBSztnQkFpQk4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGNBQWM7Z0JBUXpCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sUUFBUTtzQkFEUCxNQUFNO2dCQUdQLFFBQVE7c0JBRFAsTUFBTTtnQkE0RFAscUJBQXFCO3NCQURwQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3RW5jYXBzdWxhdGlvbiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgRWxlbWVudFJlZiwgVmlld0NvbnRhaW5lclJlZiwgSG9zdExpc3RlbmVyLCBFdmVudEVtaXR0ZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEJhc2VDb21wb25lbnQsIEFYQ29ubmVjdGVkUG9zaXRpb24sIEFYRXZlbnQsIEFYSW50ZXJhY3RpdmVDb21wb25lbmV0TWl4aW4gfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgQVhEcmF3aW5nVXRpbCwgQVhQbGF0Zm9ybSwgQVhQb2ludCB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcblxyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXBvcG92ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhQb3BvdmVyQ29tcG9uZW50IGV4dGVuZHMgQVhJbnRlcmFjdGl2ZUNvbXBvbmVuZXRNaXhpbiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcclxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXHJcbiAgICBwcml2YXRlIF9wbGF0Zm9ybTogQVhQbGF0Zm9ybSxcclxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcblxyXG4gICkge1xyXG4gICAgc3VwZXIoX2VsZW1lbnRSZWYsIF9jZHIpO1xyXG4gIH1cclxuICAvL1xyXG4gIHByaXZhdGUgX3RhcmdldDogSFRNTEVsZW1lbnQ7XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IHRhcmdldCgpOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWYgfCBBWEJhc2VDb21wb25lbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcclxuICB9XHJcbiAgcHVibGljIHNldCB0YXJnZXQodjogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgQVhCYXNlQ29tcG9uZW50KSB7XHJcbiAgICBpZiAodiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KVxyXG4gICAgICB0aGlzLl90YXJnZXQgPSB2O1xyXG4gICAgZWxzZSBpZiAodiBpbnN0YW5jZW9mIEVsZW1lbnRSZWYpXHJcbiAgICAgIHRoaXMuX3RhcmdldCA9IHYubmF0aXZlRWxlbWVudDtcclxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBWEJhc2VDb21wb25lbnQpXHJcbiAgICAgIHRoaXMuX3RhcmdldCA9IHYuX2dldElubmVyRWxlbWVudCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IEFYQ29ubmVjdGVkUG9zaXRpb24gfCBBWENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcclxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgb3JpZ2luWTogJ3RvcCcsXHJcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbSdcclxuICAgIH1cclxuICBdO1xyXG4gIC8vXHJcbiAgQFZpZXdDaGlsZCgnYmFzZVRlbXBsYXRlJylcclxuICBfYmFzZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xyXG4gIF90ZW1wbGF0ZVBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XHJcblxyXG4gIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG4gIC8vXHJcbiAgQElucHV0KClcclxuICBvcGVuVHJpZ2dlcjogJ21hbnVhbCcgfCAnY2xpY2snIHwgJ21vdXNlb3ZlcicgfCAndG9nZ2xlJyA9ICd0b2dnbGUnO1xyXG4gIC8vXHJcbiAgQElucHV0KClcclxuICBjbG9zZVRyaWdnZXI6ICdtYW51YWwnIHwgJ2NsaWNrb3V0JyB8ICdtb3VzZW91dCcgPSAnY2xpY2tvdXQnO1xyXG4gIC8vXHJcbiAgQElucHV0KClcclxuICBoYXNCYWNrZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBhZGFwdGl2aXR5RW5hYmxlZDogYm9vbGVhbj1mYWxzZTtcclxuICAvL1xyXG4gIHByaXZhdGUgX21vdXNlUG9zOiBBWFBvaW50ID0geyB4OiAwLCB5OiAwIH07XHJcbiAgcHJpdmF0ZSBfaXNTY3JvbGxBdHRhY2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8vXHJcbiAgQE91dHB1dCgpXHJcbiAgb25PcGVuZWQ6IEV2ZW50RW1pdHRlcjxBWEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhFdmVudD4oKTtcclxuICBAT3V0cHV0KClcclxuICBvbkNsb3NlZDogRXZlbnRFbWl0dGVyPEFYRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEV2ZW50PigpO1xyXG5cclxuICBfZW1pdE9uT3BlbmVkRXZlbnQoKSB7XHJcbiAgICB0aGlzLm9uT3BlbmVkLmVtaXQoe1xyXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLl9nZXRIb3N0RWxlbWVudCgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9lbWl0T25DbG9zZWRFdmVudCgpIHtcclxuICAgIHRoaXMub25DbG9zZWQuZW1pdCh7XHJcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuX2dldEhvc3RFbGVtZW50KClcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL1xyXG4gIG9uVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5fdGFyZ2V0KSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5UcmlnZ2VyID09PSAnbW91c2VvdmVyJykge1xyXG4gICAgICAgIGNvbnN0IG1vdXNlRW50ZXIkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuX3RhcmdldCwgJ21vdXNlb3ZlcicpO1xyXG4gICAgICAgIHRoaXMuX2FkZFN1Yihtb3VzZUVudGVyJC5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBwb2ludCA9IHsgeDogZS5jbGllbnRYLCB5OiBlLmNsaWVudFkgfTtcclxuICAgICAgICAgIGlmIChBWERyYXdpbmdVdGlsLmlzSW5FbGVtZW50Qm91bmQocG9pbnQsIHRoaXMuX3RhcmdldCkpXHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jbG9zZVRyaWdnZXIgPT09ICdtb3VzZW91dCcpIHtcclxuICAgICAgICBjb25zdCBtb3VzZU1vdmUkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJyk7XHJcbiAgICAgICAgdGhpcy5fYWRkU3ViKG1vdXNlTW92ZSQucGlwZSh0aHJvdHRsZVRpbWUoNTApKS5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9tb3VzZVBvcy54ID0gZS5jbGllbnRYO1xyXG4gICAgICAgICAgdGhpcy5fbW91c2VQb3MueSA9IGUuY2xpZW50WTtcclxuICAgICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIV8uc29tZShbdGhpcy5fdGFyZ2V0LCB0aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50XSwgZWwgPT4gXy5pbmNsdWRlcyhkb2N1bWVudC5lbGVtZW50c0Zyb21Qb2ludCh0aGlzLl9tb3VzZVBvcy54LCB0aGlzLl9tb3VzZVBvcy55KSwgZWwpKSlcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgfSwgMTAwKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgIH1cclxuICAgICAgLy9cclxuICAgICAgaWYgKHRoaXMub3BlblRyaWdnZXIgPT09ICdjbGljaycgfHwgdGhpcy5vcGVuVHJpZ2dlciA9PT0gJ3RvZ2dsZScpIHtcclxuICAgICAgICBjb25zdCBjbGljayQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fdGFyZ2V0LCAnY2xpY2snKTtcclxuICAgICAgICB0aGlzLl9hZGRTdWIoY2xpY2skLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICAgIHRoaXMub3BlblRyaWdnZXIgPT0gJ3RvZ2dsZScgPyB0aGlzLnRvZ2dsZSgpIDogdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vXHJcbiAgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8uZGV0YWNoKCk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiB7XHJcbiAgICAgIHM/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gIF9oYW5kbGVLZXlkb3duSGFuZGxlcihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgZS50eXBlID09PSAna2V5ZG93bicpIHtcclxuICAgIC8vICAgdGhpcy50b2dnbGUoKTtcclxuICAgIC8vIH1cclxuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XHJcbiAgfVxyXG4gIC8vXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xyXG4gICAgdGhpcy5fZW1pdE9uQ2xvc2VkRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIGRpc3Bvc2UoKSB7XHJcbiAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcclxuICB9XHJcbiAgLy9cclxuICBvcGVuKCkge1xyXG4gICAgaWYgKHRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2Vuc3VyZU92ZXJsYXlDcmVhdGVkKCk7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaCh0aGlzLl90ZW1wbGF0ZVBvcnRhbCk7XHJcbiAgICB0aGlzLl9lbWl0T25PcGVuZWRFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZW5zdXJlT3ZlcmxheUNyZWF0ZWQoKSB7XHJcbiAgICBjb25zdCB0YXJnZXRSZWYgPSB0aGlzLl90YXJnZXQ7XHJcbiAgICBpZiAoIXRhcmdldFJlZilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICBpZiAodGhpcy5fcGxhdGZvcm0uaXMoJ01vYmlsZScpICYmIHRoaXMuYWRhcHRpdml0eUVuYWJsZWQpIHtcclxuICAgICAgICB0aGlzLl9vcGVuQXNBY3Rpb25zaGVldCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX29wZW5Bc1BvcG92ZXIodGFyZ2V0UmVmKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY2xvc2VUcmlnZ2VyID09ICdjbGlja291dCcpIHtcclxuICAgICAgICB0aGlzLl9hZGRTdWIodGhpcy5fb3ZlcmxheVJlZi5fb3V0c2lkZVBvaW50ZXJFdmVudHMuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gYy50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCBjb21FbGVtID0gdGFyZ2V0UmVmO1xyXG4gICAgICAgICAgaWYgKCEoY29tRWxlbS5jb250YWlucyh0YXJnZXQpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9vdmVybGF5UmVmLmF0dGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzU2Nyb2xsQXR0YWNoZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2FkZFN1Yih0aGlzLl9wbGF0Zm9ybS5zY3JvbGwuc3Vic2NyaWJlKGMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIShjLm5hdGl2ZUV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnLmF4LW92ZXJsYXktcGFuZScpKVxyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIHRoaXMuX2lzU2Nyb2xsQXR0YWNoZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLl90ZW1wbGF0ZVBvcnRhbCkge1xyXG4gICAgICB0aGlzLl90ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9iYXNlVGVtcGxhdGUsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfb3BlbkFzUG9wb3Zlcih0YXJnZXRSZWY6IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0YXJnZXRSZWYpXHJcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoQXJyYXkuaXNBcnJheSh0aGlzLnBvc2l0aW9uKSA/IHRoaXMucG9zaXRpb24gOiBbdGhpcy5wb3NpdGlvbl0pXHJcbiAgICAgICAgLndpdGhQdXNoKGZhbHNlKSxcclxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWZhZGVJbicsICdheC1hbmltYXRlLWZhc3RlciddLFxyXG4gICAgICBtYXhIZWlnaHQ6ICd1bnNldCcsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmhhc0JhY2tkcm9wLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiBbdGhpcy5iYWNrZHJvcENsYXNzIHx8ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCddXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29wZW5Bc0FjdGlvbnNoZWV0KCkge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8oZG9jdW1lbnQuYm9keSkud2l0aFBvc2l0aW9ucyhbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcclxuICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xyXG4gICAgICAgIH1cclxuICAgICAgXSksXHJcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXgtYW5pbWF0ZS1zbGlkZUluVXAnLCAnYXgtYW5pbWF0ZS1mYXN0ZXInXSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiAnMTAwJSdcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9vdmVybGF5UmVmID8gdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRTdWIoc3ViOiBTdWJzY3JpcHRpb24pIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChzdWIpO1xyXG4gIH1cclxuXHJcblxyXG4gIHVwZGF0ZVBvc2l0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3ZlcmxheVJlZj8udXBkYXRlUG9zaXRpb24oKTtcclxuICAgIHRoaXMuZm9jdXMoKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjYmFzZVRlbXBsYXRlPlxyXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=