@sbb-esta/lyne-elements 1.2.0 → 1.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 (257) hide show
  1. package/accordion/accordion.d.ts +1 -1
  2. package/accordion/accordion.d.ts.map +1 -1
  3. package/alert/alert/alert.d.ts +1 -1
  4. package/alert/alert/alert.d.ts.map +1 -1
  5. package/button/common/button-common.d.ts.map +1 -1
  6. package/button/common.js +20 -20
  7. package/button/mini-button/mini-button.d.ts +0 -1
  8. package/button/mini-button/mini-button.d.ts.map +1 -1
  9. package/button/mini-button.js +16 -18
  10. package/calendar/calendar.d.ts.map +1 -1
  11. package/calendar.js +22 -20
  12. package/checkbox/checkbox/checkbox.d.ts +0 -1
  13. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  14. package/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  15. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  16. package/checkbox/checkbox-group.js +5 -3
  17. package/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  18. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  19. package/checkbox/checkbox-panel.js +12 -11
  20. package/checkbox/checkbox.js +12 -11
  21. package/clock/clock.d.ts +19 -13
  22. package/clock/clock.d.ts.map +1 -1
  23. package/clock.js +86 -75
  24. package/core/datetime/date-adapter.d.ts +23 -13
  25. package/core/datetime/date-adapter.d.ts.map +1 -1
  26. package/core/datetime/native-date-adapter.d.ts +0 -1
  27. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  28. package/core/datetime.js +23 -23
  29. package/core/decorators/host-attributes.d.ts +1 -1
  30. package/core/decorators/slot-state.d.ts +18 -0
  31. package/core/decorators/slot-state.d.ts.map +1 -0
  32. package/core/decorators.d.ts +1 -0
  33. package/core/decorators.d.ts.map +1 -1
  34. package/core/decorators.js +15 -9
  35. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  36. package/core/mixins.js +126 -132
  37. package/core/styles/mixins/buttons.scss +15 -48
  38. package/custom-elements.json +509 -540
  39. package/datepicker/common/datepicker-button.d.ts +5 -5
  40. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  41. package/datepicker/common.js +21 -20
  42. package/datepicker/datepicker/datepicker.d.ts +55 -38
  43. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  44. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -1
  45. package/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  46. package/datepicker/datepicker-next-day.js +16 -16
  47. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -1
  48. package/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  49. package/datepicker/datepicker-previous-day.js +14 -14
  50. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -1
  51. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  52. package/datepicker/datepicker-toggle.js +25 -23
  53. package/datepicker/datepicker.js +147 -181
  54. package/development/accordion/accordion.d.ts +1 -1
  55. package/development/accordion/accordion.d.ts.map +1 -1
  56. package/development/accordion.js +1 -1
  57. package/development/alert/alert/alert.d.ts +1 -1
  58. package/development/alert/alert/alert.d.ts.map +1 -1
  59. package/development/alert/alert.js +1 -1
  60. package/development/button/common/button-common.d.ts.map +1 -1
  61. package/development/button/common.js +30 -25
  62. package/development/button/mini-button/mini-button.d.ts +0 -1
  63. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  64. package/development/button/mini-button.js +17 -55
  65. package/development/calendar/calendar.d.ts.map +1 -1
  66. package/development/calendar.js +4 -2
  67. package/development/checkbox/checkbox/checkbox.d.ts +0 -1
  68. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  69. package/development/checkbox/checkbox-group/checkbox-group.d.ts +0 -1
  70. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  71. package/development/checkbox/checkbox-group.js +6 -5
  72. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +0 -1
  73. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -1
  74. package/development/checkbox/checkbox-panel.js +5 -5
  75. package/development/checkbox/checkbox.js +5 -5
  76. package/development/clock/clock.d.ts +19 -13
  77. package/development/clock/clock.d.ts.map +1 -1
  78. package/development/clock.js +85 -80
  79. package/development/core/datetime/date-adapter.d.ts +23 -13
  80. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  81. package/development/core/datetime/native-date-adapter.d.ts +0 -1
  82. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  83. package/development/core/datetime.js +28 -26
  84. package/development/core/decorators/host-attributes.d.ts +1 -1
  85. package/development/core/decorators/slot-state.d.ts +18 -0
  86. package/development/core/decorators/slot-state.d.ts.map +1 -0
  87. package/development/core/decorators.d.ts +1 -0
  88. package/development/core/decorators.d.ts.map +1 -1
  89. package/development/core/decorators.js +11 -2
  90. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  91. package/development/core/mixins.js +15 -16
  92. package/development/datepicker/common/datepicker-button.d.ts +5 -5
  93. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  94. package/development/datepicker/common.js +10 -9
  95. package/development/datepicker/datepicker/datepicker.d.ts +55 -38
  96. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  97. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts +1 -1
  98. package/development/datepicker/datepicker-next-day/datepicker-next-day.d.ts.map +1 -1
  99. package/development/datepicker/datepicker-next-day.js +14 -54
  100. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts +1 -1
  101. package/development/datepicker/datepicker-previous-day/datepicker-previous-day.d.ts.map +1 -1
  102. package/development/datepicker/datepicker-previous-day.js +14 -54
  103. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +1 -1
  104. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  105. package/development/datepicker/datepicker-toggle.js +16 -10
  106. package/development/datepicker/datepicker.js +134 -159
  107. package/development/dialog/dialog.js +1 -1
  108. package/development/file-selector/file-selector.d.ts +0 -1
  109. package/development/file-selector/file-selector.d.ts.map +1 -1
  110. package/development/file-selector.js +6 -5
  111. package/development/form-field/form-field/form-field.d.ts +1 -2
  112. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  113. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  114. package/development/form-field/form-field-clear.js +15 -51
  115. package/development/form-field/form-field.js +8 -7
  116. package/development/icon/icon-request.d.ts.map +1 -1
  117. package/development/icon.js +8 -13
  118. package/development/link/common/link-common.d.ts.map +1 -1
  119. package/development/link/common.js +6 -7
  120. package/development/link-list/link-list.d.ts +0 -1
  121. package/development/link-list/link-list.d.ts.map +1 -1
  122. package/development/link-list.js +5 -5
  123. package/development/map-container.js +5 -2
  124. package/development/navigation/navigation-list/navigation-list.d.ts +0 -1
  125. package/development/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  126. package/development/navigation/navigation-list.js +5 -5
  127. package/development/navigation/navigation-section/navigation-section.d.ts +0 -1
  128. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  129. package/development/navigation/navigation-section.js +6 -6
  130. package/development/notification/notification.d.ts +5 -16
  131. package/development/notification/notification.d.ts.map +1 -1
  132. package/development/notification.js +8 -9
  133. package/development/option/option/option.d.ts.map +1 -1
  134. package/development/option/option.js +5 -5
  135. package/development/popover/popover/popover.d.ts +3 -1
  136. package/development/popover/popover/popover.d.ts.map +1 -1
  137. package/development/popover/popover-trigger.js +14 -49
  138. package/development/popover/popover.js +11 -4
  139. package/development/radio-button/radio-button/radio-button.d.ts +0 -1
  140. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  141. package/development/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  142. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  143. package/development/radio-button/radio-button-group.js +6 -6
  144. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  145. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  146. package/development/radio-button/radio-button-panel.js +4 -7
  147. package/development/radio-button/radio-button.js +4 -7
  148. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  149. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  150. package/development/selection-expansion-panel.js +6 -5
  151. package/development/skiplink-list/skiplink-list.d.ts +0 -1
  152. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  153. package/development/skiplink-list.js +5 -5
  154. package/development/status/status.d.ts +0 -1
  155. package/development/status/status.d.ts.map +1 -1
  156. package/development/status.js +5 -5
  157. package/development/stepper/stepper/stepper.d.ts +3 -1
  158. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  159. package/development/stepper/stepper.js +3 -2
  160. package/development/tabs/tab-group/tab-group.d.ts +3 -1
  161. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  162. package/development/tabs/tab-group.js +3 -2
  163. package/development/tabs/tab-label/tab-label.d.ts +0 -1
  164. package/development/tabs/tab-label/tab-label.d.ts.map +1 -1
  165. package/development/tabs/tab-label.js +5 -5
  166. package/development/tag/tag/tag.d.ts +0 -1
  167. package/development/tag/tag/tag.d.ts.map +1 -1
  168. package/development/tag/tag.js +6 -5
  169. package/development/teaser/teaser.d.ts +0 -1
  170. package/development/teaser/teaser.d.ts.map +1 -1
  171. package/development/teaser.js +5 -5
  172. package/development/toast/toast.d.ts +1 -2
  173. package/development/toast/toast.d.ts.map +1 -1
  174. package/development/toast.js +10 -8
  175. package/development/toggle/toggle-option/toggle-option.d.ts +0 -1
  176. package/development/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  177. package/development/toggle/toggle-option.js +6 -6
  178. package/development/toggle-check/toggle-check.d.ts +2 -3
  179. package/development/toggle-check/toggle-check.d.ts.map +1 -1
  180. package/development/toggle-check.js +5 -5
  181. package/development/visual-checkbox.js +2 -2
  182. package/dialog/dialog.js +1 -1
  183. package/file-selector/file-selector.d.ts +0 -1
  184. package/file-selector/file-selector.d.ts.map +1 -1
  185. package/file-selector.js +17 -15
  186. package/form-field/form-field/form-field.d.ts +1 -2
  187. package/form-field/form-field/form-field.d.ts.map +1 -1
  188. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  189. package/form-field/form-field-clear.js +17 -18
  190. package/form-field/form-field.js +16 -14
  191. package/icon/icon-request.d.ts.map +1 -1
  192. package/icon.js +86 -86
  193. package/link/common/link-common.d.ts.map +1 -1
  194. package/link/common.js +9 -9
  195. package/link-list/link-list.d.ts +0 -1
  196. package/link-list/link-list.d.ts.map +1 -1
  197. package/link-list.js +8 -7
  198. package/map-container.js +1 -1
  199. package/navigation/navigation-list/navigation-list.d.ts +0 -1
  200. package/navigation/navigation-list/navigation-list.d.ts.map +1 -1
  201. package/navigation/navigation-list.js +9 -8
  202. package/navigation/navigation-section/navigation-section.d.ts +0 -1
  203. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  204. package/navigation/navigation-section.js +10 -9
  205. package/notification/notification.d.ts +5 -16
  206. package/notification/notification.d.ts.map +1 -1
  207. package/notification.js +9 -9
  208. package/option/option/option.d.ts.map +1 -1
  209. package/option/option.js +6 -5
  210. package/package.json +1 -1
  211. package/popover/popover/popover.d.ts +3 -1
  212. package/popover/popover/popover.d.ts.map +1 -1
  213. package/popover/popover-trigger.js +13 -13
  214. package/popover/popover.js +55 -48
  215. package/radio-button/radio-button/radio-button.d.ts +0 -1
  216. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  217. package/radio-button/radio-button-group/radio-button-group.d.ts +0 -1
  218. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  219. package/radio-button/radio-button-group.js +7 -6
  220. package/radio-button/radio-button-panel/radio-button-panel.d.ts +0 -1
  221. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  222. package/radio-button/radio-button-panel.js +12 -14
  223. package/radio-button/radio-button.js +7 -9
  224. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -1
  225. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  226. package/selection-expansion-panel.js +15 -13
  227. package/skiplink-list/skiplink-list.d.ts +0 -1
  228. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  229. package/skiplink-list.js +4 -3
  230. package/status/status.d.ts +0 -1
  231. package/status/status.d.ts.map +1 -1
  232. package/status.js +9 -8
  233. package/stepper/stepper/stepper.d.ts +3 -1
  234. package/stepper/stepper/stepper.d.ts.map +1 -1
  235. package/stepper/stepper.js +7 -6
  236. package/tabs/tab-group/tab-group.d.ts +3 -1
  237. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  238. package/tabs/tab-group.js +14 -13
  239. package/tabs/tab-label/tab-label.d.ts +0 -1
  240. package/tabs/tab-label/tab-label.d.ts.map +1 -1
  241. package/tabs/tab-label.js +4 -3
  242. package/tag/tag/tag.d.ts +0 -1
  243. package/tag/tag/tag.d.ts.map +1 -1
  244. package/tag/tag.js +6 -4
  245. package/teaser/teaser.d.ts +0 -1
  246. package/teaser/teaser.d.ts.map +1 -1
  247. package/teaser.js +4 -3
  248. package/toast/toast.d.ts +1 -2
  249. package/toast/toast.d.ts.map +1 -1
  250. package/toast.js +15 -12
  251. package/toggle/toggle-option/toggle-option.d.ts +0 -1
  252. package/toggle/toggle-option/toggle-option.d.ts.map +1 -1
  253. package/toggle/toggle-option.js +12 -11
  254. package/toggle-check/toggle-check.d.ts +2 -3
  255. package/toggle-check/toggle-check.d.ts.map +1 -1
  256. package/toggle-check.js +4 -3
  257. package/visual-checkbox.js +4 -4
@@ -59,7 +59,9 @@ var __decorateClass = (decorators, target, key, kind) => {
59
59
  if (kind && result) __defProp(target, key, result);
60
60
  return result;
61
61
  };
62
- let SbbDatepickerToggleElement = class extends SbbNegativeMixin(SbbHydrationMixin(LitElement)) {
62
+ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(
63
+ SbbHydrationMixin(LitElement)
64
+ ) {
63
65
  constructor() {
64
66
  super();
65
67
  this._disabled = false;
@@ -149,7 +151,9 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(SbbHydrationMixi
149
151
  }
150
152
  _datePickerChanged(event) {
151
153
  this._datePickerElement = event.target;
152
- this._calendarElement.selected = this._datePickerElement.getValueAsDate();
154
+ if (this._calendarElement && this._datePickerElement.valueAsDate) {
155
+ this._calendarElement.selected = this._datePickerElement.valueAsDate;
156
+ }
153
157
  }
154
158
  _assignCalendar(calendar) {
155
159
  var _a;
@@ -157,10 +161,10 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(SbbHydrationMixi
157
161
  return;
158
162
  }
159
163
  this._calendarElement = calendar;
160
- if (!this._datePickerElement || !this._datePickerElement.getValueAsDate || !((_a = this._calendarElement) == null ? void 0 : _a.resetPosition)) {
164
+ if (!("valueAsDate" in (this._datePickerElement ?? {})) || !((_a = this._calendarElement) == null ? void 0 : _a.resetPosition)) {
161
165
  return;
162
166
  }
163
- this._calendarElement.selected = this._datePickerElement.getValueAsDate();
167
+ this._calendarElement.selected = this._datePickerElement.valueAsDate ?? void 0;
164
168
  this._configureCalendar(this._calendarElement, this._datePickerElement);
165
169
  this._calendarElement.resetPosition();
166
170
  }
@@ -199,12 +203,14 @@ let SbbDatepickerToggleElement = class extends SbbNegativeMixin(SbbHydrationMixi
199
203
  ?wide=${(_a = this._datePickerElement) == null ? void 0 : _a.wide}
200
204
  .dateFilter=${(_b = this._datePickerElement) == null ? void 0 : _b.dateFilter}
201
205
  @dateSelected=${(d) => {
202
- var _a2;
203
- const newDate = new Date(d.detail);
204
- this._calendarElement.selected = newDate;
205
- (_a2 = this._datePickerElement) == null ? void 0 : _a2.setValueAsDate(newDate);
206
+ this._calendarElement.selected = d.detail;
207
+ if (this._datePickerElement) {
208
+ this._datePickerElement.valueAsDate = d.detail;
209
+ }
206
210
  }}
207
- ${ref((calendar) => this._assignCalendar(calendar))}
211
+ ${ref(
212
+ (calendar) => this._assignCalendar(calendar)
213
+ )}
208
214
  ></sbb-calendar>` : nothing}
209
215
  </sbb-popover>
210
216
  `;
@@ -235,4 +241,4 @@ SbbDatepickerToggleElement = __decorateClass([
235
241
  export {
236
242
  SbbDatepickerToggleElement
237
243
  };
238
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkNhbGVuZGFyRWxlbWVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5TaG93Q2FsZW5kYXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50LCBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQsIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCB7IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSwgZ2V0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGVwaWNrZXIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLXRvZ2dsZS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCAnLi4vLi4vcG9wb3Zlci5qcyc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGBzYmItY2FsZW5kYXJgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIERhdGVwaWNrZXIgcmVmZXJlbmNlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdkYXRlLXBpY2tlcicgfSkgcHVibGljIGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX21pbjogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IG51bGw7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWF4OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9yZW5kZXJDYWxlbmRhciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbGVtZW50OiBTYmJEYXRlcGlja2VyRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfY2FsZW5kYXJFbGVtZW50ITogU2JiQ2FsZW5kYXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3RyaWdnZXJFbGVtZW50ITogU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50O1xuXG4gIHByaXZhdGUgX3BvcG92ZXJFbGVtZW50ITogU2JiUG9wb3ZlckVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckNvbnRyb2xsZXIhOiBBYm9ydENvbnRyb2xsZXI7XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmICghaXNTZXJ2ZXIpIHtcbiAgICAgIHRoaXMuaHlkcmF0aW9uQ29tcGxldGUudGhlbigoKSA9PiAodGhpcy5fcmVuZGVyQ2FsZW5kYXIgPSB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIHB1YmxpYyBvcGVuKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdHJpZ2dlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gdGhpcy5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yKCdzYmItcG9wb3Zlci10cmlnZ2VyJykhO1xuICAgIH1cbiAgICB0aGlzLl90cmlnZ2VyRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgaWYgKCF0aGlzLmRhdGVQaWNrZXIpIHtcbiAgICAgIHRoaXMuX2luaXQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q/Lignc2JiLWZvcm0tZmllbGQnKSA/PyB0aGlzLmNsb3Nlc3Q/LignW2RhdGEtZm9ybS1maWVsZF0nKTtcbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gZm9ybUZpZWxkLmhhc0F0dHJpYnV0ZSgnbmVnYXRpdmUnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2RhdGVQaWNrZXInKSkge1xuICAgICAgdGhpcy5faW5pdCh0aGlzLmRhdGVQaWNrZXIpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdChkYXRlUGlja2VyPzogc3RyaW5nIHwgU2JiRGF0ZXBpY2tlckVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlcj8uYWJvcnQoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGdldERhdGVQaWNrZXIodGhpcywgZGF0ZVBpY2tlcik7XG4gICAgaWYgKCF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCkge1xuICAgICAgLy8gSWYgdGhlIGNvbXBvbmVudCBpcyBhdHRhY2hlZCB0byB0aGUgRE9NIGJlZm9yZSB0aGUgZGF0ZXBpY2tlciwgaXQgaGFzIHRvIGxpc3RlbiBmb3IgdGhlIGRhdGVwaWNrZXIgaW5pdCxcbiAgICAgIC8vIGFzc3VtaW5nIHRoYXQgdGhlIHR3byBjb21wb25lbnRzIHNoYXJlIHRoZSBzYW1lIHBhcmVudCBlbGVtZW50LlxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnaW5wdXRVcGRhdGVkJyxcbiAgICAgICAgKGU6IEV2ZW50KSA9PiB0aGlzLl9pbml0KGUudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50KSxcbiAgICAgICAgeyBvbmNlOiB0cnVlLCBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdpbnB1dFVwZGF0ZWQnLFxuICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDxTYmJJbnB1dFVwZGF0ZUV2ZW50PikgPT4ge1xuICAgICAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudDtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAhIShldmVudC5kZXRhaWwuZGlzYWJsZWQgfHwgZXZlbnQuZGV0YWlsLnJlYWRvbmx5KTtcbiAgICAgICAgdGhpcy5fbWluID0gZXZlbnQuZGV0YWlsLm1pbjtcbiAgICAgICAgdGhpcy5fbWF4ID0gZXZlbnQuZGV0YWlsLm1heDtcbiAgICAgIH0sXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgKGV2ZW50OiBFdmVudCkgPT4gdGhpcy5fZGF0ZVBpY2tlckNoYW5nZWQoZXZlbnQpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkYXRlUGlja2VyVXBkYXRlZCcsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PlxuICAgICAgICB0aGlzLl9jb25maWd1cmVDYWxlbmRhcih0aGlzLl9jYWxlbmRhckVsZW1lbnQsIGV2ZW50LnRhcmdldCBhcyBTYmJEYXRlcGlja2VyRWxlbWVudCksXG4gICAgICB7IHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgKTtcbiAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5kaXNwYXRjaEV2ZW50KGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbmZpZ3VyZUNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQsIGRhdGVwaWNrZXI6IFNiYkRhdGVwaWNrZXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhciB8fCAhZGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxlbmRhci53aWRlID0gZGF0ZXBpY2tlci53aWRlO1xuICAgIGNhbGVuZGFyLm5vdyA9IHRoaXMuX25vd09yVW5kZWZpbmVkKCk7XG4gICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IGRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hc3NpZ25DYWxlbmRhcihjYWxlbmRhcjogU2JiQ2FsZW5kYXJFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NhbGVuZGFyRWxlbWVudCAmJiB0aGlzLl9jYWxlbmRhckVsZW1lbnQgPT09IGNhbGVuZGFyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9IGNhbGVuZGFyO1xuICAgIGlmIChcbiAgICAgICF0aGlzLl9kYXRlUGlja2VyRWxlbWVudCB8fFxuICAgICAgIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmdldFZhbHVlQXNEYXRlKCk7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCk7XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnJlc2V0UG9zaXRpb24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB1cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLnVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgdGhpcy5fcG9wb3ZlckVsZW1lbnQudHJpZ2dlciA9IHRoaXMuX3RyaWdnZXJFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfbm93T3JVbmRlZmluZWQoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5oYXNDdXN0b21Ob3coKSA/IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Lm5vdyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPHNiYi1wb3BvdmVyLXRyaWdnZXJcbiAgICAgICAgaWNvbi1uYW1lPVwiY2FsZW5kYXItc21hbGxcIlxuICAgICAgICBhcmlhLWxhYmVsPSR7aTE4blNob3dDYWxlbmRhclt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX1cbiAgICAgICAgP2Rpc2FibGVkPSR7IWlzU2VydmVyICYmICghdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQgfHwgdGhpcy5fZGlzYWJsZWQpfVxuICAgICAgICA/bmVnYXRpdmU9JHt0aGlzLm5lZ2F0aXZlfVxuICAgICAgICBkYXRhLWljb24tc21hbGxcbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3RyaWdnZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlclRyaWdnZXJFbGVtZW50KSl9XG4gICAgICA+PC9zYmItcG9wb3Zlci10cmlnZ2VyPlxuICAgICAgPHNiYi1wb3BvdmVyXG4gICAgICAgIEB3aWxsT3Blbj0keygpID0+IHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCl9XG4gICAgICAgIEBkaWRPcGVuPSR7KCkgPT4ge1xuICAgICAgICAgIHNiYklucHV0TW9kYWxpdHlEZXRlY3Rvci5tb3N0UmVjZW50TW9kYWxpdHkgPT09ICdrZXlib2FyZCcgJiZcbiAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9fVxuICAgICAgICAudHJpZ2dlcj0ke3RoaXMuX3RyaWdnZXJFbGVtZW50fVxuICAgICAgICBoaWRlLWNsb3NlLWJ1dHRvblxuICAgICAgICAke3JlZigoZWw/OiBFbGVtZW50KSA9PiAodGhpcy5fcG9wb3ZlckVsZW1lbnQgPSBlbCBhcyBTYmJQb3BvdmVyRWxlbWVudCkpfVxuICAgICAgPlxuICAgICAgICAke3RoaXMuX3JlbmRlckNhbGVuZGFyXG4gICAgICAgICAgPyBodG1sYDxzYmItY2FsZW5kYXJcbiAgICAgICAgICAgICAgLm1pbj0ke3RoaXMuX21pbn1cbiAgICAgICAgICAgICAgLm1heD0ke3RoaXMuX21heH1cbiAgICAgICAgICAgICAgLm5vdz0ke3RoaXMuX25vd09yVW5kZWZpbmVkKCl9XG4gICAgICAgICAgICAgID93aWRlPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LndpZGV9XG4gICAgICAgICAgICAgIC5kYXRlRmlsdGVyPSR7dGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LmRhdGVGaWx0ZXJ9XG4gICAgICAgICAgICAgIEBkYXRlU2VsZWN0ZWQ9JHsoZDogQ3VzdG9tRXZlbnQ8RGF0ZT4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoZC5kZXRhaWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IG5ld0RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQ/LnNldFZhbHVlQXNEYXRlKG5ld0RhdGUpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAke3JlZigoY2FsZW5kYXI/OiBFbGVtZW50KSA9PiB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQpKX1cbiAgICAgICAgICAgID48L3NiYi1jYWxlbmRhcj5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9zYmItcG9wb3Zlcj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZGF0ZXBpY2tlci10b2dnbGUnOiBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJPLElBQU0sNkJBQU4sY0FBeUMsaUJBQWlCLGtCQUFrQixVQUFVLENBQUMsRUFBRTtBQUFBLEVBMEJ2RixjQUFjO0FBQ2I7QUFyQkMsU0FBUSxZQUFZO0FBRXBCLFNBQVEsT0FBMkM7QUFFbkQsU0FBUSxPQUEyQztBQUVuRCxTQUFRLGtCQUFrQjtBQVkzQixTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUloRCxRQUFJLENBQUMsVUFBVTtBQUNiLFdBQUssa0JBQWtCLEtBQUssTUFBTyxLQUFLLGtCQUFrQixJQUFLO0FBQUEsSUFDakU7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxPQUFhO0FBQ2QsUUFBQSxDQUFDLEtBQUssaUJBQWlCO0FBQ3pCLFdBQUssa0JBQWtCLEtBQUssV0FBWSxjQUFjLHFCQUFxQjtBQUFBLElBQzdFO0FBQ0EsU0FBSyxnQkFBZ0I7RUFDdkI7QUFBQSxFQUVnQixvQkFBMEI7O0FBQ3hDLFVBQU0sa0JBQWtCO0FBQ3BCLFFBQUEsQ0FBQyxLQUFLLFlBQVk7QUFDcEIsV0FBSyxNQUFNO0FBQUEsSUFDYjtBQUVBLFVBQU0sY0FBWSxVQUFLLFlBQUwsOEJBQWUsd0JBQXFCLFVBQUssWUFBTCw4QkFBZTtBQUNyRSxRQUFJLFdBQVc7QUFDUixXQUFBLFdBQVcsVUFBVSxhQUFhLFVBQVU7QUFBQSxJQUNuRDtBQUFBLEVBQ0Y7QUFBQSxFQUVnQixXQUFXLG1CQUErQztBQUN4RSxVQUFNLFdBQVcsaUJBQWlCO0FBRTlCLFFBQUEsa0JBQWtCLElBQUksWUFBWSxHQUFHO0FBQ2xDLFdBQUEsTUFBTSxLQUFLLFVBQVU7QUFBQSxJQUM1QjtBQUFBLEVBQ0Y7QUFBQSxFQUVnQix1QkFBNkI7O0FBQzNDLFVBQU0scUJBQXFCO0FBQzNCLGVBQUssMEJBQUwsbUJBQTRCO0FBQUEsRUFDOUI7QUFBQSxFQUVRLE1BQU0sWUFBa0Q7O0FBQzlELGVBQUssMEJBQUwsbUJBQTRCO0FBQ3ZCLFNBQUEsd0JBQXdCLElBQUk7QUFDNUIsU0FBQSxxQkFBcUIsY0FBYyxNQUFNLFVBQVU7QUFDcEQsUUFBQSxDQUFDLEtBQUssb0JBQW9CO0FBRzVCLGlCQUFLLGtCQUFMLG1CQUFvQjtBQUFBLFFBQ2xCO0FBQUEsUUFDQSxDQUFDLE1BQWEsS0FBSyxNQUFNLEVBQUUsTUFBOEI7QUFBQSxRQUN6RCxFQUFFLE1BQU0sTUFBTSxRQUFRLEtBQUssc0JBQXNCLE9BQU87QUFBQTtBQUUxRDtBQUFBLElBQ0Y7QUFFQSxlQUFLLHVCQUFMLG1CQUF5QjtBQUFBLE1BQ3ZCO0FBQUEsTUFDQSxDQUFDLFVBQTRDO0FBQzNDLGFBQUsscUJBQXFCLE1BQU07QUFDaEMsYUFBSyxZQUFZLENBQUMsRUFBRSxNQUFNLE9BQU8sWUFBWSxNQUFNLE9BQU87QUFDckQsYUFBQSxPQUFPLE1BQU0sT0FBTztBQUNwQixhQUFBLE9BQU8sTUFBTSxPQUFPO0FBQUEsTUFDM0I7QUFBQSxNQUNBLEVBQUUsUUFBUSxLQUFLLHNCQUFzQixPQUFPO0FBQUE7QUFFOUMsZUFBSyx1QkFBTCxtQkFBeUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0EsQ0FBQyxVQUFpQixLQUFLLG1CQUFtQixLQUFLO0FBQUEsTUFDL0M7QUFBQSxRQUNFLFFBQVEsS0FBSyxzQkFBc0I7QUFBQSxNQUNyQztBQUFBO0FBRUYsZUFBSyx1QkFBTCxtQkFBeUI7QUFBQSxNQUN2QjtBQUFBLE1BQ0EsQ0FBQyxVQUNDLEtBQUssbUJBQW1CLEtBQUssa0JBQWtCLE1BQU0sTUFBOEI7QUFBQSxNQUNyRixFQUFFLFFBQVEsS0FBSyxzQkFBc0IsT0FBTztBQUFBO0FBRXpDLFNBQUEsbUJBQW1CLGNBQWMsd0NBQXlDLENBQUE7QUFBQSxFQUNqRjtBQUFBLEVBRVEsbUJBQW1CLFVBQThCLFlBQXdDO0FBQzNGLFFBQUEsQ0FBQyxZQUFZLENBQUMsWUFBWTtBQUM1QjtBQUFBLElBQ0Y7QUFDQSxhQUFTLE9BQU8sV0FBVztBQUNsQixhQUFBLE1BQU0sS0FBSztBQUNwQixhQUFTLGFBQWEsV0FBVztBQUFBLEVBQ25DO0FBQUEsRUFFUSxtQkFBbUIsT0FBb0I7QUFDN0MsU0FBSyxxQkFBcUIsTUFBTTtBQUNoQyxTQUFLLGlCQUFpQixXQUFXLEtBQUssbUJBQW1CLGVBQWU7QUFBQSxFQUMxRTtBQUFBLEVBRVEsZ0JBQWdCLFVBQW9DOztBQUMxRCxRQUFJLEtBQUssb0JBQW9CLEtBQUsscUJBQXFCLFVBQVU7QUFDL0Q7QUFBQSxJQUNGO0FBQ0EsU0FBSyxtQkFBbUI7QUFFdEIsUUFBQSxDQUFDLEtBQUssc0JBQ04sQ0FBQyxLQUFLLG1CQUFtQixrQkFDekIsR0FBQyxVQUFLLHFCQUFMLG1CQUF1QixnQkFDeEI7QUFDQTtBQUFBLElBQ0Y7QUFDQSxTQUFLLGlCQUFpQixXQUFXLEtBQUssbUJBQW1CLGVBQWU7QUFDeEUsU0FBSyxtQkFBbUIsS0FBSyxrQkFBa0IsS0FBSyxrQkFBa0I7QUFDdEUsU0FBSyxpQkFBaUI7RUFDeEI7QUFBQSxFQUVtQixRQUFRLG1CQUErQztBQUN4RSxVQUFNLFFBQVEsaUJBQWlCO0FBRTFCLFNBQUEsZ0JBQWdCLFVBQVUsS0FBSztBQUFBLEVBQ3RDO0FBQUEsRUFFUSxrQkFBb0M7O0FBQzFDLGFBQU8sVUFBSyx1QkFBTCxtQkFBeUIsa0JBQWlCLEtBQUssbUJBQW1CLE1BQU07QUFBQSxFQUNqRjtBQUFBLEVBRW1CLFNBQXlCOztBQUNuQyxXQUFBO0FBQUE7QUFBQTtBQUFBLHFCQUdVLGlCQUFpQixLQUFLLFVBQVUsT0FBTyxDQUFDO0FBQUEsb0JBQ3pDLENBQUMsYUFBYSxDQUFDLEtBQUssc0JBQXNCLEtBQUssVUFBVTtBQUFBLG9CQUN6RCxLQUFLLFFBQVE7QUFBQTtBQUFBLFVBRXZCLElBQUksQ0FBQyxPQUFrQixLQUFLLGtCQUFrQixFQUErQixDQUFDO0FBQUE7QUFBQTtBQUFBLG9CQUdwRSxNQUFNLEtBQUssaUJBQWlCLGVBQWU7QUFBQSxtQkFDNUMsTUFBTTtBQUNmLCtCQUF5Qix1QkFBdUIsY0FDOUMsS0FBSyxpQkFBaUIsTUFBTTtBQUFBLElBQUEsQ0FDL0I7QUFBQSxtQkFDVSxLQUFLLGVBQWU7QUFBQTtBQUFBLFVBRTdCLElBQUksQ0FBQyxPQUFrQixLQUFLLGtCQUFrQixFQUF3QixDQUFDO0FBQUE7QUFBQSxVQUV2RSxLQUFLLGtCQUNIO0FBQUEscUJBQ1MsS0FBSyxJQUFJO0FBQUEscUJBQ1QsS0FBSyxJQUFJO0FBQUEscUJBQ1QsS0FBSyxpQkFBaUI7QUFBQSx1QkFDckIsVUFBSyx1QkFBTCxtQkFBeUIsSUFBSTtBQUFBLDZCQUN2QixVQUFLLHVCQUFMLG1CQUF5QixVQUFVO0FBQUEsOEJBQ2pDLENBQUMsTUFBeUI7O0FBQ3hDLFlBQU0sVUFBVSxJQUFJLEtBQUssRUFBRSxNQUFNO0FBQ2pDLFdBQUssaUJBQWlCLFdBQVc7QUFDNUIsT0FBQUEsTUFBQSxLQUFBLHVCQUFBLGdCQUFBQSxJQUFvQixlQUFlO0FBQUEsSUFBTyxDQUNoRDtBQUFBLGdCQUNDLElBQUksQ0FBQyxhQUF1QixLQUFLLGdCQUFnQixRQUE4QixDQUFDLENBQUM7QUFBQSxnQ0FFckYsT0FBTztBQUFBO0FBQUE7QUFBQSxFQUdqQjtBQUNGO0FBNUxhLDJCQUNZLFNBQXlCO0FBR0QsZ0JBQUE7QUFBQSxFQUE5QyxTQUFTLEVBQUUsV0FBVyxlQUFlO0FBQUEsR0FKM0IsMkJBSW9DLFdBQUEsY0FBQSxDQUFBO0FBRTlCLGdCQUFBO0FBQUEsRUFBaEIsTUFBTTtBQUFBLEdBTkksMkJBTU0sV0FBQSxhQUFBLENBQUE7QUFFQSxnQkFBQTtBQUFBLEVBQWhCLE1BQU07QUFBQSxHQVJJLDJCQVFNLFdBQUEsUUFBQSxDQUFBO0FBRUEsZ0JBQUE7QUFBQSxFQUFoQixNQUFNO0FBQUEsR0FWSSwyQkFVTSxXQUFBLFFBQUEsQ0FBQTtBQUVBLGdCQUFBO0FBQUEsRUFBaEIsTUFBTTtBQUFBLEdBWkksMkJBWU0sV0FBQSxtQkFBQSxDQUFBO0FBWk4sNkJBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMsdUJBQXVCO0FBQUEsRUFDckMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksMEJBQUE7In0=
244
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci10b2dnbGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXItdG9nZ2xlL2RhdGVwaWNrZXItdG9nZ2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBpc1NlcnZlciwgTGl0RWxlbWVudCwgbm90aGluZyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSwgc3RhdGUgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyByZWYgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZWYuanMnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkNhbGVuZGFyRWxlbWVudCB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGhvc3RBdHRyaWJ1dGVzIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGkxOG5TaG93Q2FsZW5kYXIgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlBvcG92ZXJFbGVtZW50LCBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQgfSBmcm9tICcuLi8uLi9wb3BvdmVyLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiRGF0ZXBpY2tlckVsZW1lbnQsIFNiYklucHV0VXBkYXRlRXZlbnQgfSBmcm9tICcuLi9kYXRlcGlja2VyLmpzJztcbmltcG9ydCB7IGRhdGVwaWNrZXJDb250cm9sUmVnaXN0ZXJlZEV2ZW50RmFjdG9yeSwgZ2V0RGF0ZVBpY2tlciB9IGZyb20gJy4uL2RhdGVwaWNrZXIuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9kYXRlcGlja2VyLXRvZ2dsZS5zY3NzP2xpdCZpbmxpbmUnO1xuXG5pbXBvcnQgJy4uLy4uL2NhbGVuZGFyLmpzJztcbmltcG9ydCAnLi4vLi4vcG9wb3Zlci5qcyc7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItZGF0ZXBpY2tlcmAsIGl0IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCBhIGRhdGUgZnJvbSBhIGBzYmItY2FsZW5kYXJgLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWRhdGVwaWNrZXItdG9nZ2xlJylcbkBob3N0QXR0cmlidXRlcyh7XG4gIHNsb3Q6ICdwcmVmaXgnLFxufSlcbmV4cG9ydCBjbGFzcyBTYmJEYXRlcGlja2VyVG9nZ2xlRWxlbWVudDxUID0gRGF0ZT4gZXh0ZW5kcyBTYmJOZWdhdGl2ZU1peGluKFxuICBTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogRGF0ZXBpY2tlciByZWZlcmVuY2UuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2RhdGUtcGlja2VyJyB9KSBwdWJsaWMgZGF0ZVBpY2tlcj86IHN0cmluZyB8IFNiYkRhdGVwaWNrZXJFbGVtZW50O1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbWluOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICBAc3RhdGUoKSBwcml2YXRlIF9tYXg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3JlbmRlckNhbGVuZGFyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlckVsZW1lbnQ6IFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIF9jYWxlbmRhckVsZW1lbnQhOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD47XG5cbiAgcHJpdmF0ZSBfdHJpZ2dlckVsZW1lbnQhOiBTYmJQb3BvdmVyVHJpZ2dlckVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBfcG9wb3ZlckVsZW1lbnQhOiBTYmJQb3BvdmVyRWxlbWVudDtcblxuICBwcml2YXRlIF9kYXRlUGlja2VyQ29udHJvbGxlciE6IEFib3J0Q29udHJvbGxlcjtcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKCFpc1NlcnZlcikge1xuICAgICAgdGhpcy5oeWRyYXRpb25Db21wbGV0ZS50aGVuKCgpID0+ICh0aGlzLl9yZW5kZXJDYWxlbmRhciA9IHRydWUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgdGhlIGNhbGVuZGFyLlxuICAgKi9cbiAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90cmlnZ2VyRWxlbWVudCkge1xuICAgICAgdGhpcy5fdHJpZ2dlckVsZW1lbnQgPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3NiYi1wb3BvdmVyLXRyaWdnZXInKSE7XG4gICAgfVxuICAgIHRoaXMuX3RyaWdnZXJFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBpZiAoIXRoaXMuZGF0ZVBpY2tlcikge1xuICAgICAgdGhpcy5faW5pdCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1GaWVsZCA9IHRoaXMuY2xvc2VzdD8uKCdzYmItZm9ybS1maWVsZCcpID8/IHRoaXMuY2xvc2VzdD8uKCdbZGF0YS1mb3JtLWZpZWxkXScpO1xuICAgIGlmIChmb3JtRmllbGQpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSBmb3JtRmllbGQuaGFzQXR0cmlidXRlKCduZWdhdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGF0ZVBpY2tlcicpKSB7XG4gICAgICB0aGlzLl9pbml0KHRoaXMuZGF0ZVBpY2tlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXI/LmFib3J0KCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0KGRhdGVQaWNrZXI/OiBzdHJpbmcgfCBTYmJEYXRlcGlja2VyRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZ2V0RGF0ZVBpY2tlcjxUPih0aGlzLCBkYXRlUGlja2VyKTtcbiAgICBpZiAoIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgY29tcG9uZW50IGlzIGF0dGFjaGVkIHRvIHRoZSBET00gYmVmb3JlIHRoZSBkYXRlcGlja2VyLCBpdCBoYXMgdG8gbGlzdGVuIGZvciB0aGUgZGF0ZXBpY2tlciBpbml0LFxuICAgICAgLy8gYXNzdW1pbmcgdGhhdCB0aGUgdHdvIGNvbXBvbmVudHMgc2hhcmUgdGhlIHNhbWUgcGFyZW50IGVsZW1lbnQuXG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdpbnB1dFVwZGF0ZWQnLFxuICAgICAgICAoZTogRXZlbnQpID0+IHRoaXMuX2luaXQoZS50YXJnZXQgYXMgU2JiRGF0ZXBpY2tlckVsZW1lbnQpLFxuICAgICAgICB7IG9uY2U6IHRydWUsIHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2lucHV0VXBkYXRlZCcsXG4gICAgICAoZXZlbnQ6IEN1c3RvbUV2ZW50PFNiYklucHV0VXBkYXRlRXZlbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+O1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9ICEhKGV2ZW50LmRldGFpbC5kaXNhYmxlZCB8fCBldmVudC5kZXRhaWwucmVhZG9ubHkpO1xuICAgICAgICB0aGlzLl9taW4gPSBldmVudC5kZXRhaWwubWluO1xuICAgICAgICB0aGlzLl9tYXggPSBldmVudC5kZXRhaWwubWF4O1xuICAgICAgfSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NoYW5nZScsXG4gICAgICAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9kYXRlUGlja2VyQ2hhbmdlZChldmVudCksXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5fZGF0ZVBpY2tlckNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2RhdGVQaWNrZXJVcGRhdGVkJyxcbiAgICAgIChldmVudDogRXZlbnQpID0+XG4gICAgICAgIHRoaXMuX2NvbmZpZ3VyZUNhbGVuZGFyKHRoaXMuX2NhbGVuZGFyRWxlbWVudCwgZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+KSxcbiAgICAgIHsgc2lnbmFsOiB0aGlzLl9kYXRlUGlja2VyQ29udHJvbGxlci5zaWduYWwgfSxcbiAgICApO1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LmRpc3BhdGNoRXZlbnQoZGF0ZXBpY2tlckNvbnRyb2xSZWdpc3RlcmVkRXZlbnRGYWN0b3J5KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlndXJlQ2FsZW5kYXIoXG4gICAgY2FsZW5kYXI6IFNiYkNhbGVuZGFyRWxlbWVudDxUPixcbiAgICBkYXRlcGlja2VyOiBTYmJEYXRlcGlja2VyRWxlbWVudDxUPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhciB8fCAhZGF0ZXBpY2tlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjYWxlbmRhci53aWRlID0gZGF0ZXBpY2tlci53aWRlO1xuICAgIGNhbGVuZGFyLm5vdyA9IHRoaXMuX25vd09yVW5kZWZpbmVkKCk7XG4gICAgY2FsZW5kYXIuZGF0ZUZpbHRlciA9IGRhdGVwaWNrZXIuZGF0ZUZpbHRlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJDaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIFNiYkRhdGVwaWNrZXJFbGVtZW50PFQ+O1xuICAgIGlmICh0aGlzLl9jYWxlbmRhckVsZW1lbnQgJiYgdGhpcy5fZGF0ZVBpY2tlckVsZW1lbnQudmFsdWVBc0RhdGUpIHtcbiAgICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50LnZhbHVlQXNEYXRlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnbkNhbGVuZGFyKGNhbGVuZGFyOiBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2FsZW5kYXJFbGVtZW50ICYmIHRoaXMuX2NhbGVuZGFyRWxlbWVudCA9PT0gY2FsZW5kYXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50ID0gY2FsZW5kYXI7XG4gICAgaWYgKFxuICAgICAgISgndmFsdWVBc0RhdGUnIGluICh0aGlzLl9kYXRlUGlja2VyRWxlbWVudCA/PyB7fSkpIHx8XG4gICAgICAhdGhpcy5fY2FsZW5kYXJFbGVtZW50Py5yZXNldFBvc2l0aW9uXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IS52YWx1ZUFzRGF0ZSA/PyB1bmRlZmluZWQ7XG4gICAgdGhpcy5fY29uZmlndXJlQ2FsZW5kYXIodGhpcy5fY2FsZW5kYXJFbGVtZW50LCB0aGlzLl9kYXRlUGlja2VyRWxlbWVudCEpO1xuICAgIHRoaXMuX2NhbGVuZGFyRWxlbWVudC5yZXNldFBvc2l0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci51cGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIHRoaXMuX3BvcG92ZXJFbGVtZW50LnRyaWdnZXIgPSB0aGlzLl90cmlnZ2VyRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgX25vd09yVW5kZWZpbmVkKCk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRlUGlja2VyRWxlbWVudD8uaGFzQ3VzdG9tTm93KCkgPyB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC5ub3cgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItcG9wb3Zlci10cmlnZ2VyXG4gICAgICAgIGljb24tbmFtZT1cImNhbGVuZGFyLXNtYWxsXCJcbiAgICAgICAgYXJpYS1sYWJlbD0ke2kxOG5TaG93Q2FsZW5kYXJbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19XG4gICAgICAgID9kaXNhYmxlZD0keyFpc1NlcnZlciAmJiAoIXRoaXMuX2RhdGVQaWNrZXJFbGVtZW50IHx8IHRoaXMuX2Rpc2FibGVkKX1cbiAgICAgICAgP25lZ2F0aXZlPSR7dGhpcy5uZWdhdGl2ZX1cbiAgICAgICAgZGF0YS1pY29uLXNtYWxsXG4gICAgICAgICR7cmVmKChlbD86IEVsZW1lbnQpID0+ICh0aGlzLl90cmlnZ2VyRWxlbWVudCA9IGVsIGFzIFNiYlBvcG92ZXJUcmlnZ2VyRWxlbWVudCkpfVxuICAgICAgPjwvc2JiLXBvcG92ZXItdHJpZ2dlcj5cbiAgICAgIDxzYmItcG9wb3ZlclxuICAgICAgICBAd2lsbE9wZW49JHsoKSA9PiB0aGlzLl9jYWxlbmRhckVsZW1lbnQucmVzZXRQb3NpdGlvbigpfVxuICAgICAgICBAZGlkT3Blbj0keygpID0+IHtcbiAgICAgICAgICBzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5ID09PSAna2V5Ym9hcmQnICYmXG4gICAgICAgICAgICB0aGlzLl9jYWxlbmRhckVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfX1cbiAgICAgICAgLnRyaWdnZXI9JHt0aGlzLl90cmlnZ2VyRWxlbWVudH1cbiAgICAgICAgaGlkZS1jbG9zZS1idXR0b25cbiAgICAgICAgJHtyZWYoKGVsPzogRWxlbWVudCkgPT4gKHRoaXMuX3BvcG92ZXJFbGVtZW50ID0gZWwgYXMgU2JiUG9wb3ZlckVsZW1lbnQpKX1cbiAgICAgID5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJDYWxlbmRhclxuICAgICAgICAgID8gaHRtbGA8c2JiLWNhbGVuZGFyXG4gICAgICAgICAgICAgIC5taW49JHt0aGlzLl9taW59XG4gICAgICAgICAgICAgIC5tYXg9JHt0aGlzLl9tYXh9XG4gICAgICAgICAgICAgIC5ub3c9JHt0aGlzLl9ub3dPclVuZGVmaW5lZCgpfVxuICAgICAgICAgICAgICA/d2lkZT0ke3RoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py53aWRlfVxuICAgICAgICAgICAgICAuZGF0ZUZpbHRlcj0ke3RoaXMuX2RhdGVQaWNrZXJFbGVtZW50Py5kYXRlRmlsdGVyfVxuICAgICAgICAgICAgICBAZGF0ZVNlbGVjdGVkPSR7KGQ6IEN1c3RvbUV2ZW50PFQ+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsZW5kYXJFbGVtZW50LnNlbGVjdGVkID0gZC5kZXRhaWw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9kYXRlUGlja2VyRWxlbWVudC52YWx1ZUFzRGF0ZSA9IGQuZGV0YWlsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgJHtyZWYoKGNhbGVuZGFyPzogRWxlbWVudCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLl9hc3NpZ25DYWxlbmRhcihjYWxlbmRhciBhcyBTYmJDYWxlbmRhckVsZW1lbnQ8VD4pLFxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPjwvc2JiLWNhbGVuZGFyPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1wb3BvdmVyPlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1kYXRlcGlja2VyLXRvZ2dsZSc6IFNiYkRhdGVwaWNrZXJUb2dnbGVFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCTyxJQUFNLDZCQUFOLGNBQW1EO0FBQUEsRUFDeEQsa0JBQWtCLFVBQVU7QUFDOUIsRUFBRTtBQUFBLEVBMEJPLGNBQWM7QUFDYjtBQXJCQyxTQUFRLFlBQVk7QUFFcEIsU0FBUSxPQUEyQztBQUVuRCxTQUFRLE9BQTJDO0FBRW5ELFNBQVEsa0JBQWtCO0FBWTNCLFNBQUEsWUFBWSxJQUFJLHNCQUFzQixJQUFJO0FBSWhELFFBQUksQ0FBQyxVQUFVO0FBQ2IsV0FBSyxrQkFBa0IsS0FBSyxNQUFPLEtBQUssa0JBQWtCLElBQUs7QUFBQSxJQUNqRTtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLE9BQWE7QUFDZCxRQUFBLENBQUMsS0FBSyxpQkFBaUI7QUFDekIsV0FBSyxrQkFBa0IsS0FBSyxXQUFZLGNBQWMscUJBQXFCO0FBQUEsSUFDN0U7QUFDQSxTQUFLLGdCQUFnQjtFQUN2QjtBQUFBLEVBRWdCLG9CQUEwQjs7QUFDeEMsVUFBTSxrQkFBa0I7QUFDcEIsUUFBQSxDQUFDLEtBQUssWUFBWTtBQUNwQixXQUFLLE1BQU07QUFBQSxJQUNiO0FBRUEsVUFBTSxjQUFZLFVBQUssWUFBTCw4QkFBZSx3QkFBcUIsVUFBSyxZQUFMLDhCQUFlO0FBQ3JFLFFBQUksV0FB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