@sbb-esta/lyne-elements 2.3.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +1 -0
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  3. package/autocomplete/autocomplete.d.ts.map +1 -1
  4. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid.js +0 -1
  6. package/autocomplete.js +28 -28
  7. package/button/common/button-common.d.ts.map +1 -1
  8. package/calendar/calendar.d.ts +55 -11
  9. package/calendar/calendar.d.ts.map +1 -1
  10. package/calendar.js +374 -224
  11. package/card/common/card-action-common.d.ts.map +1 -1
  12. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  13. package/checkbox/checkbox-group.js +1 -1
  14. package/checkbox/common/checkbox-common.d.ts.map +1 -1
  15. package/core/controllers/escapable-overlay-controller.d.ts +11 -0
  16. package/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  17. package/core/controllers.d.ts +1 -0
  18. package/core/controllers.d.ts.map +1 -1
  19. package/core/controllers.js +73 -47
  20. package/core/datetime/date-adapter.d.ts +4 -2
  21. package/core/datetime/date-adapter.d.ts.map +1 -1
  22. package/core/datetime/native-date-adapter.d.ts +1 -1
  23. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  24. package/core/datetime.js +51 -43
  25. package/core/decorators/date-converter.d.ts +8 -0
  26. package/core/decorators/date-converter.d.ts.map +1 -0
  27. package/core/decorators/date-only-type.d.ts +8 -0
  28. package/core/decorators/date-only-type.d.ts.map +1 -0
  29. package/core/decorators/get-override.d.ts.map +1 -1
  30. package/core/decorators/handle-distinct-change.d.ts.map +1 -1
  31. package/core/decorators/host-attributes.d.ts.map +1 -1
  32. package/core/decorators/slot-state.d.ts.map +1 -1
  33. package/core/decorators.d.ts +2 -0
  34. package/core/decorators.d.ts.map +1 -1
  35. package/core/decorators.js +52 -31
  36. package/core/dom/input-element.d.ts +1 -1
  37. package/core/dom/input-element.d.ts.map +1 -1
  38. package/core/dom.js +5 -5
  39. package/core/eventing/throttle.d.ts.map +1 -1
  40. package/core/i18n/i18n.d.ts +4 -0
  41. package/core/i18n/i18n.d.ts.map +1 -1
  42. package/core/i18n.js +87 -63
  43. package/core/mixins/disabled-mixin.d.ts.map +1 -1
  44. package/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  45. package/core/mixins/form-associated-input-mixin.d.ts +25 -0
  46. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  47. package/core/mixins/form-associated-mixin.d.ts +13 -0
  48. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  49. package/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  50. package/core/mixins/hydration-mixin.d.ts.map +1 -1
  51. package/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  52. package/core/mixins/negative-mixin.d.ts.map +1 -1
  53. package/core/mixins/panel-mixin.d.ts.map +1 -1
  54. package/core/mixins/required-mixin.d.ts.map +1 -1
  55. package/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  56. package/core/mixins.d.ts +1 -0
  57. package/core/mixins.d.ts.map +1 -1
  58. package/core/mixins.js +518 -333
  59. package/core/styles/core.scss +3 -1
  60. package/core/testing/mocha-extensions.d.ts.map +1 -1
  61. package/core/testing/wait-for-render.d.ts.map +1 -1
  62. package/core.css +2 -2
  63. package/custom-elements.json +18176 -14267
  64. package/date-input/date-input.d.ts +67 -0
  65. package/date-input/date-input.d.ts.map +1 -0
  66. package/date-input.d.ts +2 -0
  67. package/date-input.d.ts.map +1 -0
  68. package/date-input.js +149 -0
  69. package/datepicker/common/datepicker-button.d.ts.map +1 -1
  70. package/datepicker/common.js +49 -45
  71. package/datepicker/datepicker/datepicker.d.ts +16 -6
  72. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  73. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  74. package/datepicker/datepicker-toggle.js +41 -38
  75. package/datepicker/datepicker.js +94 -76
  76. package/development/autocomplete/autocomplete-base-element.d.ts +1 -0
  77. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  78. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  79. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -1
  80. package/development/autocomplete-grid/autocomplete-grid.js +1 -2
  81. package/development/autocomplete.js +9 -4
  82. package/development/button/common/button-common.d.ts.map +1 -1
  83. package/development/calendar/calendar.d.ts +55 -11
  84. package/development/calendar/calendar.d.ts.map +1 -1
  85. package/development/calendar.js +301 -87
  86. package/development/card/common/card-action-common.d.ts.map +1 -1
  87. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/development/checkbox/checkbox-group.js +2 -2
  89. package/development/checkbox/common/checkbox-common.d.ts.map +1 -1
  90. package/development/core/controllers/escapable-overlay-controller.d.ts +11 -0
  91. package/development/core/controllers/escapable-overlay-controller.d.ts.map +1 -0
  92. package/development/core/controllers.d.ts +1 -0
  93. package/development/core/controllers.d.ts.map +1 -1
  94. package/development/core/controllers.js +36 -1
  95. package/development/core/datetime/date-adapter.d.ts +4 -2
  96. package/development/core/datetime/date-adapter.d.ts.map +1 -1
  97. package/development/core/datetime/native-date-adapter.d.ts +1 -1
  98. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  99. package/development/core/datetime.js +14 -2
  100. package/development/core/decorators/date-converter.d.ts +8 -0
  101. package/development/core/decorators/date-converter.d.ts.map +1 -0
  102. package/development/core/decorators/date-only-type.d.ts +8 -0
  103. package/development/core/decorators/date-only-type.d.ts.map +1 -0
  104. package/development/core/decorators/get-override.d.ts.map +1 -1
  105. package/development/core/decorators/handle-distinct-change.d.ts.map +1 -1
  106. package/development/core/decorators/host-attributes.d.ts.map +1 -1
  107. package/development/core/decorators/slot-state.d.ts.map +1 -1
  108. package/development/core/decorators.d.ts +2 -0
  109. package/development/core/decorators.d.ts.map +1 -1
  110. package/development/core/decorators.js +23 -2
  111. package/development/core/dom/input-element.d.ts +1 -1
  112. package/development/core/dom/input-element.d.ts.map +1 -1
  113. package/development/core/dom.js +3 -3
  114. package/development/core/eventing/throttle.d.ts.map +1 -1
  115. package/development/core/i18n/i18n.d.ts +4 -0
  116. package/development/core/i18n/i18n.d.ts.map +1 -1
  117. package/development/core/i18n.js +29 -1
  118. package/development/core/mixins/disabled-mixin.d.ts.map +1 -1
  119. package/development/core/mixins/form-associated-checkbox-mixin.d.ts.map +1 -1
  120. package/development/core/mixins/form-associated-input-mixin.d.ts +25 -0
  121. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -0
  122. package/development/core/mixins/form-associated-mixin.d.ts +13 -0
  123. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  124. package/development/core/mixins/form-associated-radio-button-mixin.d.ts.map +1 -1
  125. package/development/core/mixins/hydration-mixin.d.ts.map +1 -1
  126. package/development/core/mixins/named-slot-list-mixin.d.ts.map +1 -1
  127. package/development/core/mixins/negative-mixin.d.ts.map +1 -1
  128. package/development/core/mixins/panel-mixin.d.ts.map +1 -1
  129. package/development/core/mixins/required-mixin.d.ts.map +1 -1
  130. package/development/core/mixins/update-scheduler-mixin.d.ts.map +1 -1
  131. package/development/core/mixins.d.ts +1 -0
  132. package/development/core/mixins.d.ts.map +1 -1
  133. package/development/core/mixins.js +379 -88
  134. package/development/core/testing/mocha-extensions.d.ts.map +1 -1
  135. package/development/core/testing/wait-for-render.d.ts.map +1 -1
  136. package/development/date-input/date-input.d.ts +67 -0
  137. package/development/date-input/date-input.d.ts.map +1 -0
  138. package/development/date-input.d.ts +2 -0
  139. package/development/date-input.d.ts.map +1 -0
  140. package/development/date-input.js +259 -0
  141. package/development/datepicker/common/datepicker-button.d.ts.map +1 -1
  142. package/development/datepicker/common.js +11 -2
  143. package/development/datepicker/datepicker/datepicker.d.ts +16 -6
  144. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  145. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  146. package/development/datepicker/datepicker-toggle.js +12 -3
  147. package/development/datepicker/datepicker.js +65 -39
  148. package/development/dialog/dialog/dialog.d.ts.map +1 -1
  149. package/development/dialog/dialog.js +3 -1
  150. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  151. package/development/expansion-panel/expansion-panel.js +2 -2
  152. package/development/file-selector/common/file-selector-common.d.ts.map +1 -1
  153. package/development/form-field/form-field/form-field.d.ts +1 -1
  154. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  155. package/development/form-field/form-field.js +19 -13
  156. package/development/header/common/header-action-common.d.ts.map +1 -1
  157. package/development/icon/icon-name-mixin.d.ts.map +1 -1
  158. package/development/icon/icon-request.d.ts.map +1 -1
  159. package/development/icon/icon-validate.d.ts.map +1 -1
  160. package/development/link/common/block-link-common.d.ts.map +1 -1
  161. package/development/link/common/inline-link-common.d.ts.map +1 -1
  162. package/development/link/common/link-common.d.ts.map +1 -1
  163. package/development/menu/common/menu-action-common.d.ts.map +1 -1
  164. package/development/menu/menu/menu.d.ts +1 -1
  165. package/development/menu/menu/menu.d.ts.map +1 -1
  166. package/development/menu/menu.js +5 -15
  167. package/development/navigation/common/navigation-action-common.d.ts.map +1 -1
  168. package/development/navigation/navigation/navigation.d.ts +1 -3
  169. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  170. package/development/navigation/navigation.js +8 -21
  171. package/development/overlay/overlay-base-element.d.ts +2 -2
  172. package/development/overlay/overlay-base-element.d.ts.map +1 -1
  173. package/development/overlay/overlay.d.ts.map +1 -1
  174. package/development/overlay.js +6 -13
  175. package/development/paginator/common/paginator-common.d.ts.map +1 -1
  176. package/development/popover/popover/popover.d.ts +1 -1
  177. package/development/popover/popover/popover.d.ts.map +1 -1
  178. package/development/popover/popover.js +5 -15
  179. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  180. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  181. package/development/radio-button/radio-button-group.js +2 -2
  182. package/development/select/select.d.ts +3 -1
  183. package/development/select/select.d.ts.map +1 -1
  184. package/development/select.js +12 -8
  185. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  186. package/development/selection-expansion-panel.js +2 -2
  187. package/development/stepper/step/step.d.ts +0 -2
  188. package/development/stepper/step/step.d.ts.map +1 -1
  189. package/development/stepper/step.js +1 -16
  190. package/development/stepper/stepper/stepper.d.ts +11 -0
  191. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  192. package/development/stepper/stepper.js +30 -3
  193. package/development/tag/tag/tag.d.ts +11 -0
  194. package/development/tag/tag/tag.d.ts.map +1 -1
  195. package/development/tag/tag-group/tag-group.d.ts +1 -1
  196. package/development/tag/tag-group/tag-group.d.ts.map +1 -1
  197. package/development/tag/tag-group.js +9 -3
  198. package/development/tag/tag.js +37 -10
  199. package/development/teaser-product/common/teaser-product-common.d.ts.map +1 -1
  200. package/dialog/dialog/dialog.d.ts.map +1 -1
  201. package/dialog/dialog.js +2 -2
  202. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  203. package/expansion-panel/expansion-panel.js +1 -1
  204. package/file-selector/common/file-selector-common.d.ts.map +1 -1
  205. package/form-field/form-field/form-field.d.ts +1 -1
  206. package/form-field/form-field/form-field.d.ts.map +1 -1
  207. package/form-field/form-field.js +30 -24
  208. package/header/common/header-action-common.d.ts.map +1 -1
  209. package/icon/icon-name-mixin.d.ts.map +1 -1
  210. package/icon/icon-request.d.ts.map +1 -1
  211. package/icon/icon-validate.d.ts.map +1 -1
  212. package/index.d.ts +2 -0
  213. package/index.js +2 -0
  214. package/link/common/block-link-common.d.ts.map +1 -1
  215. package/link/common/inline-link-common.d.ts.map +1 -1
  216. package/link/common/link-common.d.ts.map +1 -1
  217. package/menu/common/menu-action-common.d.ts.map +1 -1
  218. package/menu/menu/menu.d.ts +1 -1
  219. package/menu/menu/menu.d.ts.map +1 -1
  220. package/menu/menu.js +25 -34
  221. package/navigation/common/navigation-action-common.d.ts.map +1 -1
  222. package/navigation/navigation/navigation.d.ts +1 -3
  223. package/navigation/navigation/navigation.d.ts.map +1 -1
  224. package/navigation/navigation.js +45 -54
  225. package/overlay/overlay-base-element.d.ts +2 -2
  226. package/overlay/overlay-base-element.d.ts.map +1 -1
  227. package/overlay/overlay.d.ts.map +1 -1
  228. package/overlay.js +57 -63
  229. package/package.json +6 -1
  230. package/paginator/common/paginator-common.d.ts.map +1 -1
  231. package/popover/popover/popover.d.ts +1 -1
  232. package/popover/popover/popover.d.ts.map +1 -1
  233. package/popover/popover.js +101 -110
  234. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  235. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  236. package/radio-button/radio-button-group.js +1 -1
  237. package/select/select.d.ts +3 -1
  238. package/select/select.d.ts.map +1 -1
  239. package/select.js +39 -37
  240. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  241. package/selection-expansion-panel.js +1 -1
  242. package/standard-theme.css +2 -2
  243. package/stepper/step/step.d.ts +0 -2
  244. package/stepper/step/step.d.ts.map +1 -1
  245. package/stepper/step.js +24 -36
  246. package/stepper/stepper/stepper.d.ts +11 -0
  247. package/stepper/stepper/stepper.d.ts.map +1 -1
  248. package/stepper/stepper.js +59 -41
  249. package/tag/tag/tag.d.ts +11 -0
  250. package/tag/tag/tag.d.ts.map +1 -1
  251. package/tag/tag-group/tag-group.d.ts +1 -1
  252. package/tag/tag-group/tag-group.d.ts.map +1 -1
  253. package/tag/tag-group.js +32 -29
  254. package/tag/tag.js +60 -41
  255. package/teaser-product/common/teaser-product-common.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"card-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/card/common/card-action-common.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAKhE,OAAO,6BAA6B,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,mCAAmC;IACtD,SAAgB,MAAM,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzC;AAGD,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,cAEvC,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,CAqF7D,CAAC"}
1
+ {"version":3,"file":"card-action-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/card/common/card-action-common.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAKhE,OAAO,6BAA6B,CAAC;AAErC,MAAM,CAAC,OAAO,OAAO,mCAAmC;IACtD,SAAgB,MAAM,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;CACzC;AAGD,eAAO,MAAM,+BAA+B,GAC1C,CAAC,SAAS,mBAAmB,CAAC,oBAAoB,CAAC,EAEnD,YAAY,CAAC,KACZ,mBAAmB,CAAC,mCAAmC,CAAC,GAAG,CAqF7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/checkbox-group/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAMvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;;AAIpD;;;;;GAKG;AACH,qBAGM,uBAAwB,SAAQ,4BAA4B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,8CAA8C;IAC9C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA4B,IAAI,EAAE,eAAe,CAAyB;IAE1E,yDAAyD;IACzD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,qFAAqF;IACrF,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,2CAA2C;IAC3C,IAAW,UAAU,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,EAAE,CAMxE;;IAOe,iBAAiB,IAAI,IAAI;cAQtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc5E,OAAO,CAAC,cAAc;cA0BH,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,oBAAoB,EAAE,uBAAuB,CAAC;KAC/C;CACF"}
1
+ {"version":3,"file":"checkbox-group.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/checkbox-group/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;;AAIpD;;;;;GAKG;AACH,qBAGM,uBAAwB,SAAQ,4BAA4B;IAChE,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD,8CAA8C;IAC9C,SAEgB,QAAQ,EAAE,OAAO,CAAS;IAE1C;;;OAGG;IACH,SAA4B,IAAI,EAAE,eAAe,CAAyB;IAE1E,yDAAyD;IACzD,SACgB,cAAc,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAEhE,qFAAqF;IACrF,SACgB,WAAW,EAAE,cAAc,CAAgB;IAE3D,2CAA2C;IAC3C,IAAW,UAAU,IAAI,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,EAAE,CAMxE;;IAOe,iBAAiB,IAAI,IAAI;cAKtB,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAc5E,OAAO,CAAC,cAAc;cA0BH,MAAM,IAAI,cAAc;CAU5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,oBAAoB,EAAE,uBAAuB,CAAC;KAC/C;CACF"}
@@ -218,7 +218,7 @@ let SbbCheckboxGroupElement = (() => {
218
218
  connectedCallback() {
219
219
  var _a2;
220
220
  super.connectedCallback();
221
- this.toggleAttribute("data-has-panel", !!((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-selection-expansion-panel, sbb-checkbox-panel")));
221
+ this.toggleAttribute("data-has-panel", !!((_a2 = this.querySelector) == null ? void 0 : _a2.call(this, "sbb-checkbox-panel")));
222
222
  }
223
223
  willUpdate(changedProperties) {
224
224
  super.willUpdate(changedProperties);
@@ -291,4 +291,4 @@ let SbbCheckboxGroupElement = (() => {
291
291
  export {
292
292
  SbbCheckboxGroupElement
293
293
  };
294
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vY2hlY2tib3gtcGFuZWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDaGVja2JveEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94U2l6ZSB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoZWNrYm94LWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItY2hlY2tib3hgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hlY2tib3hgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqIEBzbG90IGVycm9yIC0gU2xvdCB1c2VkIHRvIHJlbmRlciBhIGBzYmItZm9ybS1lcnJvcmAgaW5zaWRlIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoZWNrYm94LWdyb3VwJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgbSwgcyBvciB4cy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3hzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJDaGVja2JveFNpemUgPSBpc0xlYW4oKSA/ICd4cycgOiAnbSc7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3VyIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvcml6b250YWxGcm9tOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjaGVja2JveGVzIGluc2lkZSB0aGUgYDxzYmItY2hlY2tib3gtZ3JvdXA+YC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKiBMaXN0IG9mIGNvbnRhaW5lZCBjaGVja2JveCBlbGVtZW50cy4gKi9cbiAgcHVibGljIGdldCBjaGVja2JveGVzKCk6IChTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudClbXSB7XG4gICAgcmV0dXJuIDwoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10+KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWNoZWNrYm94LCBzYmItY2hlY2tib3gtcGFuZWwnKSA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAoZWwpID0+IGVsLmNsb3Nlc3QoJ3NiYi1jaGVja2JveC1ncm91cCcpID09PSB0aGlzLFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtaGFzLXBhbmVsJyxcbiAgICAgICEhdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1zZWxlY3Rpb24tZXhwYW5zaW9uLXBhbmVsLCBzYmItY2hlY2tib3gtcGFuZWwnKSxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ2Rpc2FibGVkJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdyZXF1aXJlZCcpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ3JlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdzaXplJykpIHtcbiAgICAgIHRoaXMuY2hlY2tib3hlcy5mb3JFYWNoKChjKSA9PiBjLnJlcXVlc3RVcGRhdGU/Lignc2l6ZScpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVLZXlEb3duKGV2dDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGVja2JveGVzOiAoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10gPVxuICAgICAgdGhpcy5jaGVja2JveGVzLmZpbHRlcihcbiAgICAgICAgKGNoZWNrYm94OiBTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudCkgPT5cbiAgICAgICAgICAhY2hlY2tib3guZGlzYWJsZWQgJiYgaW50ZXJhY3Rpdml0eUNoZWNrZXIuaXNWaXNpYmxlKGNoZWNrYm94IGFzIEhUTUxFbGVtZW50KSxcbiAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAhZW5hYmxlZENoZWNrYm94ZXMgfHxcbiAgICAgIC8vIGRvbid0IHRyYXAgbmVzdGVkIGhhbmRsaW5nXG4gICAgICAoKGV2dC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpICE9PSB0aGlzICYmXG4gICAgICAgIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50ICE9PSB0aGlzICYmXG4gICAgICAgIChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5wYXJlbnRFbGVtZW50IS5sb2NhbE5hbWUgIT09ICdzYmItc2VsZWN0aW9uLWV4cGFuc2lvbi1wYW5lbCcpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2dCkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IG51bWJlciA9IGVuYWJsZWRDaGVja2JveGVzLmZpbmRJbmRleChcbiAgICAgICAgKGU6IFNiYkNoZWNrYm94RWxlbWVudCB8IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50KSA9PiBlID09PSBldnQudGFyZ2V0LFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleDogbnVtYmVyID0gZ2V0TmV4dEVsZW1lbnRJbmRleChldnQsIGN1cnJlbnQsIGVuYWJsZWRDaGVja2JveGVzLmxlbmd0aCk7XG4gICAgICBlbmFibGVkQ2hlY2tib3hlc1tuZXh0SW5kZXhdPy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1jaGVja2JveC1ncm91cFwiPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2hlY2tib3gtZ3JvdXBfX2Vycm9yXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJlcnJvclwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGVja2JveC1ncm91cCc6IFNiYkNoZWNrYm94R3JvdXBFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3Qk0sMkJBQXVCLE1BQUE7O0FBRjVCLE1BQUEsbUJBQUEsQ0FBQSxjQUFjLG9CQUFvQixHQUNsQyxXQUFXOzs7O29CQUMwQixpQkFBaUIsVUFBVTs7Ozs7Ozs7Ozs7OztBQUFuQyxFQUFBLG1CQUFRLFlBQTRCO0FBQUEsSUErQmhFLGNBQUE7OztBQXpCQSxxREFBQSxrQkFBQSxNQUFBLHdCQUFvQyxLQUFLO0FBTTdCLGtEQUF3QyxrQkFBQSxNQUFBLDJCQUFBLEdBQUEsa0JBQUEsTUFBQSxvQkFBQSxXQUFXLE9BQU8sR0FBRztBQUl6RSw0REFBQSxrQkFBQSxNQUFBLHVCQUFBLEdBQUEsa0JBQUEsTUFBQSw4QkFBMkQsSUFBSTtBQUkvRCx5REFBQSxrQkFBQSxNQUFBLGlDQUFBLEdBQUEsa0JBQUEsTUFBQSwyQkFBOEMsWUFBWTs7QUFheEQsT0FBQUEsTUFBQSxLQUFLLHFCQUFMLGdCQUFBQSxJQUFBLFdBQXdCLFdBQVcsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDO0FBQUEsSUFBQztBQUFBO0FBQUEsSUEzQmxFLElBQWdCLFdBQTBCO0FBQUEsYUFBQSxtQkFBQTtB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
294
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBQcm9wZXJ0eVZhbHVlcywgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaW50ZXJhY3Rpdml0eUNoZWNrZXIsIGlzQXJyb3dLZXlQcmVzc2VkIH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSwgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzTGVhbiB9IGZyb20gJy4uLy4uL2NvcmUvZG9tLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiSG9yaXpvbnRhbEZyb20sIFNiYk9yaWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vY29yZS9pbnRlcmZhY2VzLmpzJztcbmltcG9ydCB7IFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50IH0gZnJvbSAnLi4vY2hlY2tib3gtcGFuZWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJDaGVja2JveEVsZW1lbnQgfSBmcm9tICcuLi9jaGVja2JveC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkNoZWNrYm94U2l6ZSB9IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoZWNrYm94LWdyb3VwLnNjc3M/bGl0JmlubGluZSc7XG5cbi8qKlxuICogSXQgY2FuIGJlIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtb3JlIGBzYmItY2hlY2tib3hgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hlY2tib3hgIGVsZW1lbnRzIHRvIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqIEBzbG90IGVycm9yIC0gU2xvdCB1c2VkIHRvIHJlbmRlciBhIGBzYmItZm9ybS1lcnJvcmAgaW5zaWRlIHRoZSBgc2JiLWNoZWNrYm94LWdyb3VwYC5cbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoZWNrYm94LWdyb3VwJylcbkBzbG90U3RhdGUoKVxuY2xhc3MgU2JiQ2hlY2tib3hHcm91cEVsZW1lbnQgZXh0ZW5kcyBTYmJEaXNhYmxlZE1peGluKExpdEVsZW1lbnQpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGdyb3VwIGlzIHJlcXVpcmVkLiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB2YXJpYW50LCBlaXRoZXIgbSwgcyBvciB4cy5cbiAgICogQGRlZmF1bHQgJ20nIC8gJ3hzJyAobGVhbilcbiAgICovXG4gIEBwcm9wZXJ0eSgpIHB1YmxpYyBhY2Nlc3NvciBzaXplOiBTYmJDaGVja2JveFNpemUgPSBpc0xlYW4oKSA/ICd4cycgOiAnbSc7XG5cbiAgLyoqIE92ZXJyaWRlcyB0aGUgYmVoYXZpb3VyIG9mIGBvcmllbnRhdGlvbmAgcHJvcGVydHkuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hvcml6b250YWwtZnJvbScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvcml6b250YWxGcm9tOiBTYmJIb3Jpem9udGFsRnJvbSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjaGVja2JveGVzIGluc2lkZSB0aGUgYDxzYmItY2hlY2tib3gtZ3JvdXA+YC4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igb3JpZW50YXRpb246IFNiYk9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuXG4gIC8qKiBMaXN0IG9mIGNvbnRhaW5lZCBjaGVja2JveCBlbGVtZW50cy4gKi9cbiAgcHVibGljIGdldCBjaGVja2JveGVzKCk6IChTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudClbXSB7XG4gICAgcmV0dXJuIDwoU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpW10+KFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/Lignc2JiLWNoZWNrYm94LCBzYmItY2hlY2tib3gtcGFuZWwnKSA/PyBbXSkuZmlsdGVyKFxuICAgICAgICAoZWwpID0+IGVsLmNsb3Nlc3QoJ3NiYi1jaGVja2JveC1ncm91cCcpID09PSB0aGlzLFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXI/Ligna2V5ZG93bicsIChlKSA9PiB0aGlzLl9oYW5kbGVLZXlEb3duKGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWhhcy1wYW5lbCcsICEhdGhpcy5xdWVyeVNlbGVjdG9yPy4oJ3NiYi1jaGVja2JveC1wYW5lbCcpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5jaGVja2JveGVzLmZvckVhY2goKGMpID0+IGMucmVxdWVzdFVwZGF0ZT8uKCdkaXNhYmxlZCcpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygncmVxdWlyZWQnKSkge1xuICAgICAgdGhpcy5jaGVja2JveGVzLmZvckVhY2goKGMpID0+IGMucmVxdWVzdFVwZGF0ZT8uKCdyZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2l6ZScpKSB7XG4gICAgICB0aGlzLmNoZWNrYm94ZXMuZm9yRWFjaCgoYykgPT4gYy5yZXF1ZXN0VXBkYXRlPy4oJ3NpemUnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlS2V5RG93bihldnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbmFibGVkQ2hlY2tib3hlczogKFNiYkNoZWNrYm94RWxlbWVudCB8IFNiYkNoZWNrYm94UGFuZWxFbGVtZW50KVtdID1cbiAgICAgIHRoaXMuY2hlY2tib3hlcy5maWx0ZXIoXG4gICAgICAgIChjaGVja2JveDogU2JiQ2hlY2tib3hFbGVtZW50IHwgU2JiQ2hlY2tib3hQYW5lbEVsZW1lbnQpID0+XG4gICAgICAgICAgIWNoZWNrYm94LmRpc2FibGVkICYmIGludGVyYWN0aXZpdHlDaGVja2VyLmlzVmlzaWJsZShjaGVja2JveCBhcyBIVE1MRWxlbWVudCksXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIWVuYWJsZWRDaGVja2JveGVzIHx8XG4gICAgICAvLyBkb24ndCB0cmFwIG5lc3RlZCBoYW5kbGluZ1xuICAgICAgKChldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSAhPT0gdGhpcyAmJlxuICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCAhPT0gdGhpcyAmJlxuICAgICAgICAoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudCEubG9jYWxOYW1lICE9PSAnc2JiLXNlbGVjdGlvbi1leHBhbnNpb24tcGFuZWwnKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0Fycm93S2V5UHJlc3NlZChldnQpKSB7XG4gICAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSBlbmFibGVkQ2hlY2tib3hlcy5maW5kSW5kZXgoXG4gICAgICAgIChlOiBTYmJDaGVja2JveEVsZW1lbnQgfCBTYmJDaGVja2JveFBhbmVsRWxlbWVudCkgPT4gZSA9PT0gZXZ0LnRhcmdldCxcbiAgICAgICk7XG4gICAgICBjb25zdCBuZXh0SW5kZXg6IG51bWJlciA9IGdldE5leHRFbGVtZW50SW5kZXgoZXZ0LCBjdXJyZW50LCBlbmFibGVkQ2hlY2tib3hlcy5sZW5ndGgpO1xuICAgICAgZW5hYmxlZENoZWNrYm94ZXNbbmV4dEluZGV4XT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxkaXYgY2xhc3M9XCJzYmItY2hlY2tib3gtZ3JvdXBcIj5cbiAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWNoZWNrYm94LWdyb3VwX19lcnJvclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiZXJyb3JcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2hlY2tib3gtZ3JvdXAnOiBTYmJDaGVja2JveEdyb3VwRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0JNLDJCQUF1QixNQUFBOztBQUY1QixNQUFBLG1CQUFBLENBQUEsY0FBYyxvQkFBb0IsR0FDbEMsV0FBVzs7OztvQkFDMEIsaUJBQWlCLFVBQVU7Ozs7Ozs7Ozs7Ozs7QUFBbkMsRUFBQSxtQkFBUSxZQUE0QjtBQUFBLElBK0JoRSxjQUFBOzs7QUF6QkEscURBQUEsa0JBQUEsTUFBQSx3QkFBb0MsS0FBSztBQU03QixrREFBd0Msa0JBQUEsTUFBQSwyQkFBQSxHQUFBLGtCQUFBLE1BQUEsb0JBQUEsV0FBVyxPQUFPLEdBQUc7QUFJekUsNERBQUEsa0JBQUEsTUFBQSx1QkFBQSxHQUFBLGtCQUFBLE1BQUEsOEJBQTJELElBQUk7QUFJL0QseURBQUEsa0JBQUEsTUFBQSxpQ0FBQSxHQUFBLGtCQUFBLE1BQUEsMkJBQThDLFlBQVk7O0FBYXhELE9BQUFBLE1BQUEsS0FBSyxxQkFBTCxnQkFBQUEsSUFBQSxXQUF3QixXQUFXLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQztBQUFBLElBQUM7QUFBQTtBQUFBLElBM0JsRSxJQUFnQixXQUEwQjtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBMUMsSUFBZ0IsU0FBMEIsT0FBQTtBQUFBLHlCQUFBLDRCQUFB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
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/common/checkbox-common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAItD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,iCACnB,SAAQ,kCACR,YAAW,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAEvE,SAAgB,aAAa,EAAE,OAAO,CAAC;IAEvC,IAAW,KAAK,IAAI,uBAAuB,GAAG,IAAI,CAAC;CACpD;AAGD,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,cACjE,CAAC,KACZ,WAAW,CAAC,iCAAiC,CAAC,GAAG,CA+CnD,CAAC"}
1
+ {"version":3,"file":"checkbox-common.d.ts","sourceRoot":"","sources":["../../../../../src/elements/checkbox/common/checkbox-common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AAItD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAEzB,KAAK,kCAAkC,EACvC,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,iCACnB,SAAQ,kCACR,YAAW,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAEvE,SAAgB,aAAa,EAAE,OAAO,CAAC;IAEvC,IAAW,KAAK,IAAI,uBAAuB,GAAG,IAAI,CAAC;CACpD;AAGD,eAAO,MAAM,6BAA6B,GAAI,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAC7E,YAAY,CAAC,KACZ,WAAW,CAAC,iCAAiC,CAAC,GAAG,CA+CnD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ import { SbbOpenCloseBaseElement } from '../base-elements/open-close-base-element.js';
3
+ export declare class SbbEscapableOverlayController implements ReactiveController {
4
+ private _host;
5
+ private _overlayStack;
6
+ constructor(_host: ReactiveControllerHost & SbbOpenCloseBaseElement, _overlayStack?: SbbOpenCloseBaseElement[]);
7
+ hostDisconnected(): void;
8
+ connect(): void;
9
+ disconnect(): void;
10
+ }
11
+ //# sourceMappingURL=escapable-overlay-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapable-overlay-controller.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/controllers/escapable-overlay-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAErF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAa3F,qBAAa,6BAA8B,YAAW,kBAAkB;IAEpE,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,aAAa;gBADb,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,EACvD,aAAa,GAAE,uBAAuB,EAAiB;IAK1D,gBAAgB,IAAI,IAAI;IAKxB,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,IAAI;CAQ1B"}
@@ -2,5 +2,6 @@ export * from './controllers/connected-abort-controller.js';
2
2
  export * from './controllers/inert-controller.js';
3
3
  export * from './controllers/language-controller.js';
4
4
  export * from './controllers/media-matchers-controller.js';
5
+ export * from './controllers/escapable-overlay-controller.js';
5
6
  export * from './controllers/slot-state-controller.js';
6
7
  //# sourceMappingURL=controllers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/controllers.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"controllers.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/controllers.ts"],"names":[],"mappings":"AAAA,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC"}
@@ -225,6 +225,40 @@ class SbbMediaMatcherController {
225
225
  }
226
226
  }
227
227
  }
228
+ const overlayStack = new Array();
229
+ if (!isServer) {
230
+ window.addEventListener("keydown", (event) => {
231
+ var _a;
232
+ if (event.key === "Escape" && !event.defaultPrevented) {
233
+ event.preventDefault();
234
+ (_a = overlayStack.at(-1)) == null ? void 0 : _a.close();
235
+ }
236
+ });
237
+ }
238
+ class SbbEscapableOverlayController {
239
+ constructor(_host, _overlayStack = overlayStack) {
240
+ var _a, _b;
241
+ this._host = _host;
242
+ this._overlayStack = _overlayStack;
243
+ (_b = (_a = this._host).addController) == null ? void 0 : _b.call(_a, this);
244
+ }
245
+ hostDisconnected() {
246
+ this.disconnect();
247
+ }
248
+ // This must be called when the overlay is opened
249
+ connect() {
250
+ this._overlayStack.push(this._host);
251
+ }
252
+ // This must be called when the overlay is closed
253
+ disconnect() {
254
+ if (this._overlayStack.length) {
255
+ const findElIndex = this._overlayStack.findIndex((e) => e === this._host);
256
+ if (findElIndex !== -1) {
257
+ this._overlayStack.splice(findElIndex, 1);
258
+ }
259
+ }
260
+ }
261
+ }
228
262
  class SbbSlotStateController {
229
263
  constructor(_host, _onChangeCallback = null) {
230
264
  this._host = _host;
@@ -271,6 +305,7 @@ class SbbSlotStateController {
271
305
  }
272
306
  export {
273
307
  SbbConnectedAbortController,
308
+ SbbEscapableOverlayController,
274
309
  SbbInertController,
275
310
  SbbLanguageController,
276
311
  SbbMediaMatcherController,
@@ -281,4 +316,4 @@ export {
281
316
  SbbMediaQueryPointerCoarse,
282
317
  SbbSlotStateController
283
318
  };
284
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvc2xvdC1zdGF0ZS1jb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVhY3RpdmVDb250cm9sbGVyLCBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBObyByZXBsYWNlbWVudCBzaG91bGQgYmUgbmVjZXNzYXJ5LCBhcyB0aGlzIHdhcyBpbnRlbmRlZFxuICogICBmb3IgZXZlbnQgbGlzdGVuZXJzLCB3aGljaCBzaG91bGQgYmUgYXBwbGllZCBpbiB0aGUgY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIF9hYm9ydENvbnRyb2xsZXI/OiBBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIGdldCBzaWduYWwoKTogQWJvcnRTaWduYWwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LnNpZ25hbDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9hYm9ydENvbnRyb2xsZXIpIHtcbiAgICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB0eXBlIHsgU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi9iYXNlLWVsZW1lbnRzL29wZW4tY2xvc2UtYmFzZS1lbGVtZW50LmpzJztcblxuY29uc3QgSUdOT1JFRF9FTEVNRU5UUyA9IFsnc2NyaXB0JywgJ2hlYWQnLCAndGVtcGxhdGUnLCAnc3R5bGUnXTtcbmNvbnN0IGluZXJ0RWxlbWVudHMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuY29uc3QgaW5lcnRPdmVybGF5cyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjbGFzcyBTYmJJbmVydENvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LFxuICAgIHByaXZhdGUgX2luZXJ0RWxlbWVudHMgPSBpbmVydEVsZW1lbnRzLFxuICAgIHByaXZhdGUgX2luZXJ0T3ZlcmxheXMgPSBpbmVydE92ZXJsYXlzLFxuICApIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXI/Lih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9ob3N0LmlzT3Blbikge1xuICAgICAgdGhpcy5hY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEFwcGxpZXMgaW5lcnQgc3RhdGUgdG8gZXZlcnkgb3RoZXIgZWxlbWVudCBvbiB0aGUgcGFnZSBleGNlcHQgdGhlIG92ZXJsYXkuICovXG4gIHB1YmxpYyBhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICAvLyBSZW1vdmUgaW5lcnQgc3RhdGUgZnJvbSBwcmV2aW91cyBvcGVuZWQgb3ZlcmxheVxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cblxuICAgIHRoaXMuX2luZXJ0T3ZlcmxheXMuYWRkKHRoaXMuX2hvc3QpO1xuICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICB9XG5cbiAgLyoqIFJlbW92ZXMgaW5lcnQgc3RhdGUuICovXG4gIHB1YmxpYyBkZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50T3ZlcmxheSgpICE9PSB0aGlzLl9ob3N0KSB7XG4gICAgICAvLyBJZiBlLmcuIGEgY29tcG9uZW50IGdldHMgZGlzY29ubmVjdGVkLCBpdCBjb3VsZCBiZSB0aGF0IGl0IGlzIG5vdCB0aGUgdG9wIG1vc3QuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIGNhbiBkaXJlY3RseSByZW1vdmUgaXQsIGFzIHRoZXJlIGlzIGN1cnJlbnRseSBubyBpbmVydCBzdGF0ZSBhcHBsaWVkLlxuICAgICAgaWYgKHRoaXMuX2luZXJ0T3ZlcmxheXMuaGFzKHRoaXMuX2hvc3QpKSB7XG4gICAgICAgIHRoaXMuX2luZXJ0T3ZlcmxheXMuZGVsZXRlKHRoaXMuX2hvc3QpO1xuICAgICAgfSBlbHNlIGlmIChpbXBvcnQubWV0YS5lbnYuREVWKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnVHJ5aW5nIHRvIHJlbW92ZSBpbmVydCBzdGF0ZSBvZiBhbiBvdmVybGF5IHdoaWNoIG5ldmVyIGhhZCBhbiBhcHBsaWVkIGluZXJ0IHN0YXRlLicsXG4gICAgICAgICAgdGhpcy5faG9zdCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlbW92ZUluZXJ0QXR0cmlidXRlcygpO1xuICAgIHRoaXMuX2luZXJ0T3ZlcmxheXMuZGVsZXRlKHRoaXMuX2hvc3QpO1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYXMgcHJldmlvdXMgb3BlbmVkIG92ZXJsYXksIHNldCBpdHMgaW5lcnQgc3RhdGUgYWdhaW4uXG4gICAgaWYgKHRoaXMuX2luZXJ0T3ZlcmxheXMuc2l6ZSkge1xuICAgICAgdGhpcy5fYWRkSW5lcnRBdHRyaWJ1dGVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudE92ZXJsYXkoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2luZXJ0T3ZlcmxheXNdLnBvcCgpID8/IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5faW5lcnRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpKSB7XG4gICAgICAgIGVsZW1lbnQuaW5lcnQgPSBmYWxzZTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWluZXJ0Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItYXJpYS1oaWRkZW4nKSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5faW5lcnRFbGVtZW50cy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIGxldCBlbGVtZW50OiBFbGVtZW50IHwgbnVsbCA9IHRoaXMuX2N1cnJlbnRPdmVybGF5KCk7XG5cbiAgICB3aGlsZSAoZWxlbWVudCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIEFycmF5LmZyb20oKGVsZW1lbnQ/LnBhcmVudEVsZW1lbnQgPz8gZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSk/LmNoaWxkTm9kZXMgPz8gW10pXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGNoaWxkKTogY2hpbGQgaXMgSFRNTEVsZW1lbnQgPT5cbiAgICAgICAgICAgIGNoaWxkICE9PSBlbGVtZW50ICYmXG4gICAgICAgICAgICBjaGlsZCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJlxuICAgICAgICAgICAgIUlHTk9SRURfRUxFTUVOVFMuaW5jbHVkZXMoY2hpbGQubG9jYWxOYW1lKSxcbiAgICAgICAgKVxuICAgICAgICAuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuYWRkKGVsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKCFlbGVtZW50LmluZXJ0KSB7XG4gICAgICAgICAgICBlbGVtZW50LmluZXJ0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcsIHRydWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItYXJpYS1oaWRkZW4nLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBXZSBuZWVkIHRvIHBpZXJjZSB0aHJvdWdoIFNoYWRvdyBET00gYm91bmRhcnlcbiAgICAgIGVsZW1lbnQgPSBlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IChlbGVtZW50Py5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3QpPy5ob3N0ID8/IG51bGw7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuLi9jb25maWcuanMnO1xuXG4vKipcbiAqIFRoZSBMYW5ndWFnZUNvbnRyb2xsZXIgaXMgYSByZWFjdGl2ZSBjb250cm9sbGVyIHRoYXQgb2JzZXJ2ZXMgdGhlIFwibGFuZ1wiIGF0dHJpYnV0ZVxuICogb2YgdGhlIDxodG1sPiB0YWcuXG4gKiBPbiBjaGFuZ2Ugb2YgdGhlIFwibGFuZ1wiIGF0dHJpYnV0ZSwgaXQgd2lsbCByZXF1ZXN0IGFuIHVwZGF0ZSBvZiBjb25uZWN0ZWRcbiAqIGNvbXBvbmVudHMuXG4gKlxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL2xhbmdcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYkxhbmd1YWdlQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kZWZhdWx0TGFuZ3VhZ2UgPSAnZW4nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3VwcG9ydGVkTG9jYWxlcyA9IFsnZW4nLCAnZGUnLCAnZnInLCAnaXQnXTtcblxuICAvKiogQSBzZXQgb2YgY29ubmVjdGVkIGNvbXBvbmVudHMgdGhhdCBzaG91bGQgYmUgbm90aWZpZWQgb24gbGFuZ3VhZ2UgY2hhbmdlLiAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbGlzdGVuZXJzID0gbmV3IFNldDxTYmJMYW5ndWFnZUNvbnRyb2xsZXI+KCk7XG5cbiAgLyoqIE11dGF0aW9uT2JzZXJ2ZXIgdGhhdCBvYnNlcnZlcyB0aGUgXCJsYW5nXCIgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX29ic2VydmVyID0gIWlzU2VydmVyXG4gICAgPyBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbnNbMF0ub2xkVmFsdWUgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSkge1xuICAgICAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmZvckVhY2goKGwpID0+IGwuX2NhbGxIYW5kbGVycygpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICA6IG51bGw7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlckNvbmZpZyA9IHtcbiAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnbGFuZyddLFxuICAgIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlLFxuICB9O1xuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGN1cnJlbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYW5ndWFnZSA9XG4gICAgICAocmVhZENvbmZpZygpLmxhbmd1YWdlID8/XG4gICAgICAgIChpc1NlcnZlclxuICAgICAgICAgID8gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2VcbiAgICAgICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2xhbmcnKSkpIHx8XG4gICAgICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcblxuICAgIC8vIFN1cHBvcnQgZS5nLiBjYXNlcyBsaWtlIGBkZS1jaGAuXG4gICAgY29uc3QgbGFuZ0F0dHJpYnV0ZU5vcm1hbGl6ZWQgPSBsYW5ndWFnZS5zcGxpdCgnLScpWzBdO1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX3N1cHBvcnRlZExvY2FsZXMuaW5jbHVkZXMobGFuZ0F0dHJpYnV0ZU5vcm1hbGl6ZWQpXG4gICAgICA/IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkXG4gICAgICA6IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBsYW5ndWFnZS4gKi9cbiAgcHVibGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJldmlvdXNMYW5ndWFnZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfaGFuZGxlcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QpIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICAvKiogQWRkIGEgbGFuZ3VhZ2UgY2hhbmdlIGhhbmRsZXIuICovXG4gIHB1YmxpYyB3aXRoSGFuZGxlcihoYW5kbGVyOiAoKSA9PiB2b2lkKTogdGhpcyB7XG4gICAgLy8gV2UgdXNlIHVuc2hpZnQgaGVyZSwgdG8gcHJlcGVuZCBhZGRpdGlvbmFsIGhhbmRsZXJzLlxuICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHJlcXVlc3RVcGRhdGUgaXMgY2FsbGVkIGFmdGVyIHRoZSBvdGhlciBoYW5kbGVycy5cbiAgICB0aGlzLl9oYW5kbGVycy51bnNoaWZ0KGhhbmRsZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGhvc3RDb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlciEub2JzZXJ2ZShcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX29ic2VydmVyQ29uZmlnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2xpc3RlbmVycy5hZGQodGhpcyk7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzTGFuZ3VhZ2UgIT09IHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5fY2FsbEhhbmRsZXJzKHRoaXMuX3ByZXZpb3VzTGFuZ3VhZ2UgIT09IHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3ByZXZpb3VzTGFuZ3VhZ2UgPSB0aGlzLmN1cnJlbnQ7XG4gICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuZGVsZXRlKHRoaXMpO1xuICAgIGlmICghU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuc2l6ZSkge1xuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlciEuZGlzY29ubmVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhbGxIYW5kbGVycyhyZXF1ZXN0VXBkYXRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIHRoaXMuX2hhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoKSk7XG4gICAgaWYgKHJlcXVlc3RVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2hvc3QucmVxdWVzdFVwZGF0ZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgU2JiQnJlYWtwb2ludE1lZGl1bU1pbixcbiAgU2JiQnJlYWtwb2ludFNtYWxsTWF4LFxuICBTYmJUeXBvU2NhbGVEZWZhdWx0LFxufSBmcm9tICdAc2JiLWVzdGEvbHluZS1kZXNpZ24tdG9rZW5zJztcbmltcG9ydCB7IGlzU2VydmVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuY29uc3QgcHhUb1JlbSA9IChweDogbnVtYmVyKTogbnVtYmVyID0+IHB4IC8gU2JiVHlwb1NjYWxlRGVmYXVsdDtcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUZvcmNlZENvbG9ycyA9ICcoZm9yY2VkLWNvbG9yczogYWN0aXZlKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeUhvdmVyID0gJyhhbnktaG92ZXI6IGhvdmVyKSc7XG5leHBvcnQgY29uc3QgU2JiTWVkaWFRdWVyeVBvaW50ZXJDb2Fyc2UgPSAnKHBvaW50ZXI6IGNvYXJzZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50TWVkaXVtQW5kQWJvdmUgPSBgKG1pbi13aWR0aDogJHtweFRvUmVtKFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4pfXJlbSlgO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlCcmVha3BvaW50U21hbGxBbmRCZWxvdyA9IGAobWF4LXdpZHRoOiAke3B4VG9SZW0oU2JiQnJlYWtwb2ludFNtYWxsTWF4KX1yZW0pYDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbi8qKlxuICogQSBjYWxsYmFjaywgd2hpY2ggaXMgaW52b2tlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIG1lZGlhIHF1ZXJ5IG1hdGNoXG4gKiBzdGF0dXMgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU2JiTWVkaWFNYXRjaGVySGFuZGxlciA9IChtYXRjaGVzOiBib29sZWFuKSA9PiB2b2lkO1xuXG5pbnRlcmZhY2UgTWVkaWFRdWVyeUVudHJ5IHtcbiAgbWVkaWFRdWVyeUxpc3Q6IE1lZGlhUXVlcnlMaXN0O1xuICBldmVudEhhbmRsZXI6IChldmVudDogTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4gdm9pZDtcbiAgaGFuZGxlcnM6IFNldDxTYmJNZWRpYU1hdGNoZXJIYW5kbGVyPjtcbn1cblxuLyoqXG4gKiBXZSB3YW50IHRvIGNhY2hlIE1lZGlhUXVlcnlMaXN0IGluc3RhbmNlcyBhbmQgY29ycmVzcG9uZGluZ1xuICogZXZlbnQgaGFuZGxlcnMsIGFzIGEgbXVsdGl0dWRlIG9mIGV2ZW50IGhhbmRsZXJzIG9uIGdsb2JhbCBvYmplY3RzXG4gKiBjYW4gZGVncmFkZSBwZXJmb3JtYW5jZSB3aXRoIHRpbWUuXG4gKi9cbmNvbnN0IG1lZGlhUXVlcnlSZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBNZWRpYVF1ZXJ5RW50cnk+KCk7XG5cbi8qKlxuICogVGhpcyBjb250cm9sbGVyIGFsbG93cyBsaXN0ZW5pbmcgdG8gbWVkaWEgcXVlcnkgY2hhbmdlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3IFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIodGhpcywge1xuICogICBbU2JiRm9yY2VkQ29sb3JzUXVlcnldOiAobWF0Y2hlcykgPT4gZG9Tb21ldGhpbmcobWF0Y2hlcyksXG4gKiB9KVxuICovXG5leHBvcnQgY2xhc3MgU2JiTWVkaWFNYXRjaGVyQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0LFxuICAgIHByaXZhdGUgX3F1ZXJpZXM6IFJlY29yZDxzdHJpbmcsIFNiYk1lZGlhTWF0Y2hlckhhbmRsZXI+LFxuICApIHtcbiAgICBob3N0LmFkZENvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBxdWVyeSBtYXRjaGVzLiBSZXR1cm5zIG51bGwgd2l0aCBTU1IuXG4gICAqIEBwYXJhbSBxdWVyeSBUaGUgcXVlcnkgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcXVlcnkgbWF0Y2hlcyBvciBudWxsIHdpdGggU1NSLlxuICAgKi9cbiAgcHVibGljIG1hdGNoZXMocXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChxdWVyeSk7XG4gICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgIHJldHVybiBtZWRpYVF1ZXJ5Lm1lZGlhUXVlcnlMaXN0Lm1hdGNoZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtYXRjaE1lZGlhKHF1ZXJ5KS5tYXRjaGVzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3F1ZXJ5LCBoYW5kbGVyXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9xdWVyaWVzKSkge1xuICAgICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgbWVkaWFRdWVyeS5oYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtZWRpYVF1ZXJ5TGlzdCA9IG1hdGNoTWVkaWEocXVlcnkpO1xuICAgICAgICBjb25zdCBoYW5kbGVycyA9IG5ldyBTZXQoW2hhbmRsZXJdKTtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0gKGU6IE1lZGlhUXVlcnlMaXN0RXZlbnQpOiB2b2lkID0+XG4gICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaCgoaCkgPT4gaChlLm1hdGNoZXMpKTtcbiAgICAgICAgbWVkaWFRdWVyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgbWVkaWFRdWVyeVJlZ2lzdHJ5LnNldChxdWVyeSwgeyBtZWRpYVF1ZXJ5TGlzdCwgaGFuZGxlcnMsIGV2ZW50SGFuZGxlciB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgICAgICBpZiAoIW1lZGlhUXVlcnkuaGFuZGxlcnMuc2l6ZSkge1xuICAgICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5kZWxldGUocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogVGhpcyBjb250cm9sbGVyIGNoZWNrcyBmb3Igc2xvdHRlZCBjaGlsZHJlbi4gRnJvbSB0aGVzZSBpdCBnZW5lcmF0ZXNcbiAqIGEgbGlzdCBvZiB1c2VkIHNsb3QgbmFtZXMgKGB1bm5hbWVkYCBmb3IgY2hpbGRyZW4gd2l0aG91dCBhIHNsb3QgYXR0cmlidXRlKVxuICogYW5kIGFkZHMgdGhpcyB0byB0aGUgYGRhdGEtc2xvdC1uYW1lc2AgYXR0cmlidXRlLCBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0LlxuICpcbiAqIFRoaXMgYWxsb3dzIENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IgdG8gZGlzcGxheS9oaWRlL2NvbmZpZ3VyZSBhIHNlY3Rpb25cbiAqIG9mIHRoZSBjb21wb25lbnQgYXMgcmVxdWlyZWQgKHNlZSBbYXR0cn49dmFsdWVdIHNlbGVjdG9yIHNwZWNpZmljYWxseSkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC5leGFtcGxlIHtcbiAqICAgZGlzcGxheTogbm9uZTtcbiAqXG4gKiAgIDpob3N0KFtkYXRhLXNsb3QtbmFtZXN+PVwiaWNvblwiXSkgJiB7XG4gKiAgICAgZGlzcGxheTogaW5saW5lO1xuICogICB9XG4gKiB9XG4gKlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0F0dHJpYnV0ZV9zZWxlY3RvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNsb3RTdGF0ZUNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgc2xvdHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgX29uQ2hhbmdlQ2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsLFxuICApIHtcbiAgICB0aGlzLl9ob3N0LmFkZENvbnRyb2xsZXIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICAvLyBUT0RPOiBDaGVjayBpZiB0aGlzIGlzIHJlYWxseSBuZWVkZWQgd2l0aCBTU1IuXG4gICAgdGhpcy5fc3luY1Nsb3RzKC4uLnRoaXMuX2hvc3QucXVlcnlTZWxlY3RvckFsbCEoJ3Nsb3QnKSk7XG4gICAgdGhpcy5faG9zdC5zaGFkb3dSb290Py5hZGRFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5fc2xvdGNoYW5nZUhhbmRsZXIpO1xuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5faG9zdC5zaGFkb3dSb290Py5yZW1vdmVFdmVudExpc3RlbmVyKCdzbG90Y2hhbmdlJywgdGhpcy5fc2xvdGNoYW5nZUhhbmRsZXIpO1xuICB9XG5cbiAgLy8gV2UgYXZvaWQgdXNpbmcgQWJvcnRDb250cm9sbGVyIGhlcmUsIGFzIGl0IHdvdWxkIG1lYW4gY3JlYXRpbmdcbiAgLy8gYSBuZXcgaW5zdGFuY2UgZm9yIGV2ZXJ5IFNiYlNsb3RTdGF0ZUNvbnRyb2xsZXIgaW5zdGFuY2UuXG4gIHByaXZhdGUgX3Nsb3RjaGFuZ2VIYW5kbGVyID0gKGV2ZW50OiBFdmVudCk6IHZvaWQgPT4ge1xuICAgIHRoaXMuX3N5bmNTbG90cyhldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KTtcbiAgfTtcblxuICBwcml2YXRlIF9zeW5jU2xvdHMoLi4uc2xvdHM6IEhUTUxTbG90RWxlbWVudFtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzbG90IG9mIHNsb3RzKSB7XG4gICAgICBjb25zdCBzbG90TmFtZSA9IHNsb3QubmFtZSB8fCAndW5uYW1lZCc7XG4gICAgICAvLyBXZSB3YW50IHRvIGNoZWNrLCB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgc2xvdHRlZCBvciBhIHRleHQgbm9kZSB3aXRoIGFjdHVhbCBjb250ZW50LlxuICAgICAgaWYgKHNsb3QuYXNzaWduZWROb2RlcygpLnNvbWUoKG4pID0+ICd0YWdOYW1lJyBpbiBuIHx8IG4udGV4dENvbnRlbnQ/LnRyaW0oKSkpIHtcbiAgICAgICAgdGhpcy5zbG90cy5hZGQoc2xvdE5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zbG90cy5kZWxldGUoc2xvdE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5faG9zdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycpO1xuICAgIGNvbnN0IGpvaW5lZFNsb3ROYW1lcyA9IFsuLi50aGlzLnNsb3RzXS5zb3J0KCkuam9pbignICcpO1xuICAgIGlmICgham9pbmVkU2xvdE5hbWVzKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9ob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJykgIT09IGpvaW5lZFNsb3ROYW1lcykge1xuICAgICAgdGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2xvdC1uYW1lcycsIGpvaW5lZFNsb3ROYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKGpvaW5lZFNsb3ROYW1lcyAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s/LigpO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbImVsZW1lbnQiLCJfYSJdLCJtYXBwaW5ncyI6Ijs7O01BTWEsNEJBQTJC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
319
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbGxlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2Nvbm5lY3RlZC1hYm9ydC1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvaW5lcnQtY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL2xhbmd1YWdlLWNvbnRyb2xsZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvZWxlbWVudHMvY29yZS9jb250cm9sbGVycy9tZWRpYS1tYXRjaGVycy1jb250cm9sbGVyLnRzIiwiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMvZXNjYXBhYmxlLW92ZXJsYXktY29udHJvbGxlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzL3Nsb3Qtc3RhdGUtY29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlYWN0aXZlQ29udHJvbGxlciwgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgTm8gcmVwbGFjZW1lbnQgc2hvdWxkIGJlIG5lY2Vzc2FyeSwgYXMgdGhpcyB3YXMgaW50ZW5kZWRcbiAqICAgZm9yIGV2ZW50IGxpc3RlbmVycywgd2hpY2ggc2hvdWxkIGJlIGFwcGxpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICovXG5leHBvcnQgY2xhc3MgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBfYWJvcnRDb250cm9sbGVyPzogQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gIHB1YmxpYyBnZXQgc2lnbmFsKCk6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fYWJvcnRDb250cm9sbGVyPy5zaWduYWw7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWJvcnRDb250cm9sbGVyKSB7XG4gICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fYWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBSZWFjdGl2ZUNvbnRyb2xsZXIsIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IElHTk9SRURfRUxFTUVOVFMgPSBbJ3NjcmlwdCcsICdoZWFkJywgJ3RlbXBsYXRlJywgJ3N0eWxlJ107XG5jb25zdCBpbmVydEVsZW1lbnRzID0gbmV3IFNldDxIVE1MRWxlbWVudD4oKTtcbmNvbnN0IGluZXJ0T3ZlcmxheXMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG5leHBvcnQgY2xhc3MgU2JiSW5lcnRDb250cm9sbGVyIGltcGxlbWVudHMgUmVhY3RpdmVDb250cm9sbGVyIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2hvc3Q6IFJlYWN0aXZlQ29udHJvbGxlckhvc3QgJiBTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudCxcbiAgICBwcml2YXRlIF9pbmVydEVsZW1lbnRzID0gaW5lcnRFbGVtZW50cyxcbiAgICBwcml2YXRlIF9pbmVydE92ZXJsYXlzID0gaW5lcnRPdmVybGF5cyxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faG9zdC5pc09wZW4pIHtcbiAgICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5oYXModGhpcy5faG9zdCkpIHtcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBBcHBsaWVzIGluZXJ0IHN0YXRlIHRvIGV2ZXJ5IG90aGVyIGVsZW1lbnQgb24gdGhlIHBhZ2UgZXhjZXB0IHRoZSBvdmVybGF5LiAqL1xuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIGluZXJ0IHN0YXRlIGZyb20gcHJldmlvdXMgb3BlbmVkIG92ZXJsYXlcbiAgICBpZiAodGhpcy5faW5lcnRPdmVybGF5cy5zaXplKSB7XG4gICAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmFkZCh0aGlzLl9ob3N0KTtcbiAgICB0aGlzLl9hZGRJbmVydEF0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGluZXJ0IHN0YXRlLiAqL1xuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudE92ZXJsYXkoKSAhPT0gdGhpcy5faG9zdCkge1xuICAgICAgLy8gSWYgZS5nLiBhIGNvbXBvbmVudCBnZXRzIGRpc2Nvbm5lY3RlZCwgaXQgY291bGQgYmUgdGhhdCBpdCBpcyBub3QgdGhlIHRvcCBtb3N0LlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBjYW4gZGlyZWN0bHkgcmVtb3ZlIGl0LCBhcyB0aGVyZSBpcyBjdXJyZW50bHkgbm8gaW5lcnQgc3RhdGUgYXBwbGllZC5cbiAgICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLmhhcyh0aGlzLl9ob3N0KSkge1xuICAgICAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcbiAgICAgIH0gZWxzZSBpZiAoaW1wb3J0Lm1ldGEuZW52LkRFVikge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1RyeWluZyB0byByZW1vdmUgaW5lcnQgc3RhdGUgb2YgYW4gb3ZlcmxheSB3aGljaCBuZXZlciBoYWQgYW4gYXBwbGllZCBpbmVydCBzdGF0ZS4nLFxuICAgICAgICAgIHRoaXMuX2hvc3QsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZW1vdmVJbmVydEF0dHJpYnV0ZXMoKTtcbiAgICB0aGlzLl9pbmVydE92ZXJsYXlzLmRlbGV0ZSh0aGlzLl9ob3N0KTtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFzIHByZXZpb3VzIG9wZW5lZCBvdmVybGF5LCBzZXQgaXRzIGluZXJ0IHN0YXRlIGFnYWluLlxuICAgIGlmICh0aGlzLl9pbmVydE92ZXJsYXlzLnNpemUpIHtcbiAgICAgIHRoaXMuX2FkZEluZXJ0QXR0cmlidXRlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRPdmVybGF5KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9pbmVydE92ZXJsYXlzXS5wb3AoKSA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVtb3ZlSW5lcnRBdHRyaWJ1dGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnKSkge1xuICAgICAgICBlbGVtZW50LmluZXJ0ID0gZmFsc2U7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1pbmVydCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNiYi1hcmlhLWhpZGRlbicpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2luZXJ0RWxlbWVudHMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FkZEluZXJ0QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBsZXQgZWxlbWVudDogRWxlbWVudCB8IG51bGwgPSB0aGlzLl9jdXJyZW50T3ZlcmxheSgpO1xuXG4gICAgd2hpbGUgKGVsZW1lbnQgIT09IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBlbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBBcnJheS5mcm9tKChlbGVtZW50Py5wYXJlbnRFbGVtZW50ID8/IGVsZW1lbnQ/LmdldFJvb3ROb2RlKCkpPy5jaGlsZE5vZGVzID8/IFtdKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChjaGlsZCk6IGNoaWxkIGlzIEhUTUxFbGVtZW50ID0+XG4gICAgICAgICAgICBjaGlsZCAhPT0gZWxlbWVudCAmJlxuICAgICAgICAgICAgY2hpbGQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgICAgICFJR05PUkVEX0VMRU1FTlRTLmluY2x1ZGVzKGNoaWxkLmxvY2FsTmFtZSksXG4gICAgICAgIClcbiAgICAgICAgLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbmVydEVsZW1lbnRzLmFkZChlbGVtZW50KTtcblxuICAgICAgICAgIGlmICghZWxlbWVudC5pbmVydCkge1xuICAgICAgICAgICAgZWxlbWVudC5pbmVydCA9IHRydWU7XG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1zYmItaW5lcnQnLCB0cnVlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgICAgICAgZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtc2JiLWFyaWEtaGlkZGVuJywgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBwaWVyY2UgdGhyb3VnaCBTaGFkb3cgRE9NIGJvdW5kYXJ5XG4gICAgICBlbGVtZW50ID0gZWxlbWVudD8ucGFyZW50RWxlbWVudCA/PyAoZWxlbWVudD8uZ2V0Um9vdE5vZGUoKSBhcyBTaGFkb3dSb290KT8uaG9zdCA/PyBudWxsO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuLyoqXG4gKiBUaGUgTGFuZ3VhZ2VDb250cm9sbGVyIGlzIGEgcmVhY3RpdmUgY29udHJvbGxlciB0aGF0IG9ic2VydmVzIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGVcbiAqIG9mIHRoZSA8aHRtbD4gdGFnLlxuICogT24gY2hhbmdlIG9mIHRoZSBcImxhbmdcIiBhdHRyaWJ1dGUsIGl0IHdpbGwgcmVxdWVzdCBhbiB1cGRhdGUgb2YgY29ubmVjdGVkXG4gKiBjb21wb25lbnRzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9sYW5nXG4gKi9cbmV4cG9ydCBjbGFzcyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGVmYXVsdExhbmd1YWdlID0gJ2VuJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3N1cHBvcnRlZExvY2FsZXMgPSBbJ2VuJywgJ2RlJywgJ2ZyJywgJ2l0J107XG5cbiAgLyoqIEEgc2V0IG9mIGNvbm5lY3RlZCBjb21wb25lbnRzIHRoYXQgc2hvdWxkIGJlIG5vdGlmaWVkIG9uIGxhbmd1YWdlIGNoYW5nZS4gKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xpc3RlbmVycyA9IG5ldyBTZXQ8U2JiTGFuZ3VhZ2VDb250cm9sbGVyPigpO1xuXG4gIC8qKiBNdXRhdGlvbk9ic2VydmVyIHRoYXQgb2JzZXJ2ZXMgdGhlIFwibGFuZ1wiIGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQuICovXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9vYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuICAgICAgICBpZiAobXV0YXRpb25zWzBdLm9sZFZhbHVlICE9PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpIHtcbiAgICAgICAgICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2xpc3RlbmVycy5mb3JFYWNoKChsKSA9PiBsLl9jYWxsSGFuZGxlcnMoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgOiBudWxsO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfb2JzZXJ2ZXJDb25maWcgPSB7XG4gICAgYXR0cmlidXRlRmlsdGVyOiBbJ2xhbmcnXSxcbiAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgfTtcblxuICAvKiogR2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBjdXJyZW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPVxuICAgICAgKHJlYWRDb25maWcoKS5sYW5ndWFnZSA/P1xuICAgICAgICAoaXNTZXJ2ZXJcbiAgICAgICAgICA/IFNiYkxhbmd1YWdlQ29udHJvbGxlci5fZGVmYXVsdExhbmd1YWdlXG4gICAgICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYW5nJykpKSB8fFxuICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9kZWZhdWx0TGFuZ3VhZ2U7XG5cbiAgICAvLyBTdXBwb3J0IGUuZy4gY2FzZXMgbGlrZSBgZGUtY2hgLlxuICAgIGNvbnN0IGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkID0gbGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXTtcbiAgICByZXR1cm4gU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9zdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKGxhbmdBdHRyaWJ1dGVOb3JtYWxpemVkKVxuICAgICAgPyBsYW5nQXR0cmlidXRlTm9ybWFsaXplZFxuICAgICAgOiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuX2RlZmF1bHRMYW5ndWFnZTtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzTGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hhbmRsZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0KSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqIEFkZCBhIGxhbmd1YWdlIGNoYW5nZSBoYW5kbGVyLiAqL1xuICBwdWJsaWMgd2l0aEhhbmRsZXIoaGFuZGxlcjogKCkgPT4gdm9pZCk6IHRoaXMge1xuICAgIC8vIFdlIHVzZSB1bnNoaWZ0IGhlcmUsIHRvIHByZXBlbmQgYWRkaXRpb25hbCBoYW5kbGVycy5cbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCByZXF1ZXN0VXBkYXRlIGlzIGNhbGxlZCBhZnRlciB0aGUgb3RoZXIgaGFuZGxlcnMuXG4gICAgdGhpcy5faGFuZGxlcnMudW5zaGlmdChoYW5kbGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLm9ic2VydmUoXG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxcbiAgICAgICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9vYnNlcnZlckNvbmZpZyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLl9saXN0ZW5lcnMuYWRkKHRoaXMpO1xuICAgIGlmICh0aGlzLl9wcmV2aW91c0xhbmd1YWdlICE9PSB0aGlzLmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuX2NhbGxIYW5kbGVycyh0aGlzLl9wcmV2aW91c0xhbmd1YWdlICE9PSB1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBob3N0RGlzY29ubmVjdGVkKCk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9wcmV2aW91c0xhbmd1YWdlID0gdGhpcy5jdXJyZW50O1xuICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLmRlbGV0ZSh0aGlzKTtcbiAgICBpZiAoIVNiYkxhbmd1YWdlQ29udHJvbGxlci5fbGlzdGVuZXJzLnNpemUpIHtcbiAgICAgIFNiYkxhbmd1YWdlQ29udHJvbGxlci5fb2JzZXJ2ZXIhLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYWxsSGFuZGxlcnMocmVxdWVzdFVwZGF0ZSA9IHRydWUpOiB2b2lkIHtcbiAgICB0aGlzLl9oYW5kbGVycy5mb3JFYWNoKChoKSA9PiBoKCkpO1xuICAgIGlmIChyZXF1ZXN0VXBkYXRlKSB7XG4gICAgICB0aGlzLl9ob3N0LnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIFNiYkJyZWFrcG9pbnRNZWRpdW1NaW4sXG4gIFNiYkJyZWFrcG9pbnRTbWFsbE1heCxcbiAgU2JiVHlwb1NjYWxlRGVmYXVsdCxcbn0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZGVzaWduLXRva2Vucyc7XG5pbXBvcnQgeyBpc1NlcnZlciwgdHlwZSBSZWFjdGl2ZUNvbnRyb2xsZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVySG9zdCB9IGZyb20gJ2xpdCc7XG5cbmNvbnN0IHB4VG9SZW0gPSAocHg6IG51bWJlcik6IG51bWJlciA9PiBweCAvIFNiYlR5cG9TY2FsZURlZmF1bHQ7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlGb3JjZWRDb2xvcnMgPSAnKGZvcmNlZC1jb2xvcnM6IGFjdGl2ZSknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlIb3ZlciA9ICcoYW55LWhvdmVyOiBob3ZlciknO1xuZXhwb3J0IGNvbnN0IFNiYk1lZGlhUXVlcnlQb2ludGVyQ29hcnNlID0gJyhwb2ludGVyOiBjb2Fyc2UpJztcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludE1lZGl1bUFuZEFib3ZlID0gYChtaW4td2lkdGg6ICR7cHhUb1JlbShTYmJCcmVha3BvaW50TWVkaXVtTWluKX1yZW0pYDtcbmV4cG9ydCBjb25zdCBTYmJNZWRpYVF1ZXJ5QnJlYWtwb2ludFNtYWxsQW5kQmVsb3cgPSBgKG1heC13aWR0aDogJHtweFRvUmVtKFNiYkJyZWFrcG9pbnRTbWFsbE1heCl9cmVtKWA7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuXG4vKipcbiAqIEEgY2FsbGJhY2ssIHdoaWNoIGlzIGludm9rZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBtZWRpYSBxdWVyeSBtYXRjaFxuICogc3RhdHVzIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFNiYk1lZGlhTWF0Y2hlckhhbmRsZXIgPSAobWF0Y2hlczogYm9vbGVhbikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIE1lZGlhUXVlcnlFbnRyeSB7XG4gIG1lZGlhUXVlcnlMaXN0OiBNZWRpYVF1ZXJ5TGlzdDtcbiAgZXZlbnRIYW5kbGVyOiAoZXZlbnQ6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHZvaWQ7XG4gIGhhbmRsZXJzOiBTZXQ8U2JiTWVkaWFNYXRjaGVySGFuZGxlcj47XG59XG5cbi8qKlxuICogV2Ugd2FudCB0byBjYWNoZSBNZWRpYVF1ZXJ5TGlzdCBpbnN0YW5jZXMgYW5kIGNvcnJlc3BvbmRpbmdcbiAqIGV2ZW50IGhhbmRsZXJzLCBhcyBhIG11bHRpdHVkZSBvZiBldmVudCBoYW5kbGVycyBvbiBnbG9iYWwgb2JqZWN0c1xuICogY2FuIGRlZ3JhZGUgcGVyZm9ybWFuY2Ugd2l0aCB0aW1lLlxuICovXG5jb25zdCBtZWRpYVF1ZXJ5UmVnaXN0cnkgPSBuZXcgTWFwPHN0cmluZywgTWVkaWFRdWVyeUVudHJ5PigpO1xuXG4vKipcbiAqIFRoaXMgY29udHJvbGxlciBhbGxvd3MgbGlzdGVuaW5nIHRvIG1lZGlhIHF1ZXJ5IGNoYW5nZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIG5ldyBTYmJNZWRpYU1hdGNoZXJDb250cm9sbGVyKHRoaXMsIHtcbiAqICAgW1NiYkZvcmNlZENvbG9yc1F1ZXJ5XTogKG1hdGNoZXMpID0+IGRvU29tZXRoaW5nKG1hdGNoZXMpLFxuICogfSlcbiAqL1xuZXhwb3J0IGNsYXNzIFNiYk1lZGlhTWF0Y2hlckNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCxcbiAgICBwcml2YXRlIF9xdWVyaWVzOiBSZWNvcmQ8c3RyaW5nLCBTYmJNZWRpYU1hdGNoZXJIYW5kbGVyPixcbiAgKSB7XG4gICAgaG9zdC5hZGRDb250cm9sbGVyKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciB0aGUgZ2l2ZW4gcXVlcnkgbWF0Y2hlcy4gUmV0dXJucyBudWxsIHdpdGggU1NSLlxuICAgKiBAcGFyYW0gcXVlcnkgVGhlIHF1ZXJ5IHRvIGNoZWNrIGFnYWluc3QuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHF1ZXJ5IG1hdGNoZXMgb3IgbnVsbCB3aXRoIFNTUi5cbiAgICovXG4gIHB1YmxpYyBtYXRjaGVzKHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgaWYgKGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IG1lZGlhUXVlcnlSZWdpc3RyeS5nZXQocXVlcnkpO1xuICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICByZXR1cm4gbWVkaWFRdWVyeS5tZWRpYVF1ZXJ5TGlzdC5tYXRjaGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaG9zdENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IFtxdWVyeSwgaGFuZGxlcl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fcXVlcmllcykpIHtcbiAgICAgIGNvbnN0IG1lZGlhUXVlcnkgPSBtZWRpYVF1ZXJ5UmVnaXN0cnkuZ2V0KHF1ZXJ5KTtcbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIG1lZGlhUXVlcnkuaGFuZGxlcnMuYWRkKGhhbmRsZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWVkaWFRdWVyeUxpc3QgPSBtYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICAgICAgY29uc3QgaGFuZGxlcnMgPSBuZXcgU2V0KFtoYW5kbGVyXSk7XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlciA9IChlOiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KTogdm9pZCA9PlxuICAgICAgICAgIGhhbmRsZXJzLmZvckVhY2goKGgpID0+IGgoZS5tYXRjaGVzKSk7XG4gICAgICAgIG1lZGlhUXVlcnlMaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGV2ZW50SGFuZGxlcik7XG4gICAgICAgIG1lZGlhUXVlcnlSZWdpc3RyeS5zZXQocXVlcnksIHsgbWVkaWFRdWVyeUxpc3QsIGhhbmRsZXJzLCBldmVudEhhbmRsZXIgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhvc3REaXNjb25uZWN0ZWQoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbcXVlcnksIGhhbmRsZXJdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3F1ZXJpZXMpKSB7XG4gICAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gbWVkaWFRdWVyeVJlZ2lzdHJ5LmdldChxdWVyeSk7XG4gICAgICBpZiAobWVkaWFRdWVyeSkge1xuICAgICAgICBtZWRpYVF1ZXJ5LmhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICAgICAgaWYgKCFtZWRpYVF1ZXJ5LmhhbmRsZXJzLnNpemUpIHtcbiAgICAgICAgICBtZWRpYVF1ZXJ5UmVnaXN0cnkuZGVsZXRlKHF1ZXJ5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIsIHR5cGUgUmVhY3RpdmVDb250cm9sbGVyLCB0eXBlIFJlYWN0aXZlQ29udHJvbGxlckhvc3QgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50IH0gZnJvbSAnLi4vYmFzZS1lbGVtZW50cy9vcGVuLWNsb3NlLWJhc2UtZWxlbWVudC5qcyc7XG5cbmNvbnN0IG92ZXJsYXlTdGFjayA9IG5ldyBBcnJheTxTYmJPcGVuQ2xvc2VCYXNlRWxlbWVudD4oKTtcblxuaWYgKCFpc1NlcnZlcikge1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgb3ZlcmxheVN0YWNrLmF0KC0xKT8uY2xvc2UoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgU2JiRXNjYXBhYmxlT3ZlcmxheUNvbnRyb2xsZXIgaW1wbGVtZW50cyBSZWFjdGl2ZUNvbnRyb2xsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfaG9zdDogUmVhY3RpdmVDb250cm9sbGVySG9zdCAmIFNiYk9wZW5DbG9zZUJhc2VFbGVtZW50LFxuICAgIHByaXZhdGUgX292ZXJsYXlTdGFjazogU2JiT3BlbkNsb3NlQmFzZUVsZW1lbnRbXSA9IG92ZXJsYXlTdGFjayxcbiAgKSB7XG4gICAgdGhpcy5faG9zdC5hZGRDb250cm9sbGVyPy4odGhpcyk7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWRcbiAgcHVibGljIGNvbm5lY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fb3ZlcmxheVN0YWNrLnB1c2godGhpcy5faG9zdCk7XG4gIH1cblxuICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG92ZXJsYXkgaXMgY2xvc2VkXG4gIHB1YmxpYyBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9vdmVybGF5U3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaW5kRWxJbmRleCA9IHRoaXMuX292ZXJsYXlTdGFjay5maW5kSW5kZXgoKGUpID0+IGUgPT09IHRoaXMuX2hvc3QpO1xuICAgICAgaWYgKGZpbmRFbEluZGV4ICE9PSAtMSkge1xuICAgICAgICB0aGlzLl9vdmVybGF5U3RhY2suc3BsaWNlKGZpbmRFbEluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgUmVhY3RpdmVDb250cm9sbGVyLCBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0IH0gZnJvbSAnbGl0JztcblxuLyoqXG4gKiBUaGlzIGNvbnRyb2xsZXIgY2hlY2tzIGZvciBzbG90dGVkIGNoaWxkcmVuLiBGcm9tIHRoZXNlIGl0IGdlbmVyYXRlc1xuICogYSBsaXN0IG9mIHVzZWQgc2xvdCBuYW1lcyAoYHVubmFtZWRgIGZvciBjaGlsZHJlbiB3aXRob3V0IGEgc2xvdCBhdHRyaWJ1dGUpXG4gKiBhbmQgYWRkcyB0aGlzIHRvIHRoZSBgZGF0YS1zbG90LW5hbWVzYCBhdHRyaWJ1dGUsIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QuXG4gKlxuICogVGhpcyBhbGxvd3MgQ1NTIGF0dHJpYnV0ZSBzZWxlY3RvciB0byBkaXNwbGF5L2hpZGUvY29uZmlndXJlIGEgc2VjdGlvblxuICogb2YgdGhlIGNvbXBvbmVudCBhcyByZXF1aXJlZCAoc2VlIFthdHRyfj12YWx1ZV0gc2VsZWN0b3Igc3BlY2lmaWNhbGx5KS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLmV4YW1wbGUge1xuICogICBkaXNwbGF5OiBub25lO1xuICpcbiAqICAgOmhvc3QoW2RhdGEtc2xvdC1uYW1lc349XCJpY29uXCJdKSAmIHtcbiAqICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQXR0cmlidXRlX3NlbGVjdG9yc1xuICovXG5leHBvcnQgY2xhc3MgU2JiU2xvdFN0YXRlQ29udHJvbGxlciBpbXBsZW1lbnRzIFJlYWN0aXZlQ29udHJvbGxlciB7XG4gIHB1YmxpYyByZWFkb25seSBzbG90cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ob3N0OiBSZWFjdGl2ZUNvbnRyb2xsZXJIb3N0ICYgSFRNTEVsZW1lbnQsXG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGwsXG4gICkge1xuICAgIHRoaXMuX2hvc3QuYWRkQ29udHJvbGxlcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBob3N0Q29ubmVjdGVkKCk6IHZvaWQge1xuICAgIC8vIFRPRE86IENoZWNrIGlmIHRoaXMgaXMgcmVhbGx5IG5lZWRlZCB3aXRoIFNTUi5cbiAgICB0aGlzLl9zeW5jU2xvdHMoLi4udGhpcy5faG9zdC5xdWVyeVNlbGVjdG9yQWxsISgnc2xvdCcpKTtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICBwdWJsaWMgaG9zdERpc2Nvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9ob3N0LnNoYWRvd1Jvb3Q/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9zbG90Y2hhbmdlSGFuZGxlcik7XG4gIH1cblxuICAvLyBXZSBhdm9pZCB1c2luZyBBYm9ydENvbnRyb2xsZXIgaGVyZSwgYXMgaXQgd291bGQgbWVhbiBjcmVhdGluZ1xuICAvLyBhIG5ldyBpbnN0YW5jZSBmb3IgZXZlcnkgU2JiU2xvdFN0YXRlQ29udHJvbGxlciBpbnN0YW5jZS5cbiAgcHJpdmF0ZSBfc2xvdGNoYW5nZUhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgdGhpcy5fc3luY1Nsb3RzKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpO1xuICB9O1xuXG4gIHByaXZhdGUgX3N5bmNTbG90cyguLi5zbG90czogSFRNTFNsb3RFbGVtZW50W10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHNsb3Qgb2Ygc2xvdHMpIHtcbiAgICAgIGNvbnN0IHNsb3ROYW1lID0gc2xvdC5uYW1lIHx8ICd1bm5hbWVkJztcbiAgICAgIC8vIFdlIHdhbnQgdG8gY2hlY2ssIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBzbG90dGVkIG9yIGEgdGV4dCBub2RlIHdpdGggYWN0dWFsIGNvbnRlbnQuXG4gICAgICBpZiAoc2xvdC5hc3NpZ25lZE5vZGVzKCkuc29tZSgobikgPT4gJ3RhZ05hbWUnIGluIG4gfHwgbi50ZXh0Q29udGVudD8udHJpbSgpKSkge1xuICAgICAgICB0aGlzLnNsb3RzLmFkZChzbG90TmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNsb3RzLmRlbGV0ZShzbG90TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLl9ob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJyk7XG4gICAgY29uc3Qgam9pbmVkU2xvdE5hbWVzID0gWy4uLnRoaXMuc2xvdHNdLnNvcnQoKS5qb2luKCcgJyk7XG4gICAgaWYgKCFqb2luZWRTbG90TmFtZXMpIHtcbiAgICAgIHRoaXMuX2hvc3QucmVtb3ZlQXR0cmlidXRlKCdkYXRhLXNsb3QtbmFtZXMnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2hvc3QuZ2V0QXR0cmlidXRlKCdkYXRhLXNsb3QtbmFtZXMnKSAhPT0gam9pbmVkU2xvdE5hbWVzKSB7XG4gICAgICB0aGlzLl9ob3N0LnNldEF0dHJpYnV0ZSgnZGF0YS1zbG90LW5hbWVzJywgam9pbmVkU2xvdE5hbWVzKTtcbiAgICB9XG5cbiAgICBpZiAoam9pbmVkU2xvdE5hbWVzICE9PSBvbGRWYWx1ZSkge1xuICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz8uKCk7XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiZWxlbWVudCIsIl9hIl0sIm1hcHBpbmdzIjoiOzs7TUFNYSw0QkFBMkI7QUFBQSxFQUd0QyxJQUFXLFNBQU07O0FBQ2YsWUFBTyxVQUFLLHFCQUFMLG1CQUF1QjtBQUFBLEVBQUE7QUFBQSxFQUdoQyxZQUEyQixPQUE2QjtBQUE3QixTQUFLLFFBQUw7QUFObkIsU0FBQSxtQkFBcUMsSUFBSSxnQkFBZTtBQU96RCxTQUFBLE1BQU0sY0FBYyxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBR3hCLGdCQUFhO0FBQ2QsUUFBQSxDQUFDLEtBQUssa0JBQWtCO0FBQ3JCLFdBQUEsbUJBQW1CLElBQUk7O0VBQzlCO0FBQUEsRUFHSyxtQkFBZ0I7O0FBQ3JCLGVBQUsscUJBQUwsbUJBQXVCO0FBQ3ZCLFNBQUssbUJBQW1CO0FBQUEsRUFBQTtBQUUzQjtBQ3ZCRCxNQUFNLG1CQUFtQixDQUFDLFVBQVUsUUFBUSxZQUFZLE9BQU87QUFDL0QsTUFBTSxvQ0FBb0I7QUFDMUIsTUFBTSxvQ0FBb0I7TUFFYixtQkFBa0I7QUFBQSxFQUM3QixZQUNVLE9BQ0EsaUJBQWlCLGVBQ2pC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
@@ -1,8 +1,10 @@
1
1
  export declare const DAYS_PER_ROW: number;
2
2
  export declare const MONTHS_PER_ROW: number;
3
3
  export declare const YEARS_PER_ROW: number;
4
+ export declare const MONTHS_PER_PAGE: number;
4
5
  export declare const YEARS_PER_PAGE: number;
5
6
  export declare const FORMAT_DATE: RegExp;
7
+ export declare const ISO8601_FORMAT_DATE: RegExp;
6
8
  /**
7
9
  * Abstract date functionality.
8
10
  *
@@ -109,14 +111,14 @@ export declare abstract class DateAdapter<T = any> {
109
111
  * @param value The date in the format DD.MM.YYYY.
110
112
  * @param now The current date as Date.
111
113
  */
112
- abstract parse(value: string | null | undefined, now: T): T | null;
114
+ abstract parse(value: string | null | undefined, now?: T): T | null;
113
115
  /**
114
116
  * Format the given date as string.
115
117
  * @param date The date to format.
116
118
  * @param options options object with weekdayStyle as property
117
119
  */
118
120
  format(date: T | null | undefined, options?: {
119
- weekdayStyle?: 'long' | 'short' | 'narrow';
121
+ weekdayStyle?: 'long' | 'short' | 'narrow' | 'none';
120
122
  }): string;
121
123
  /**
122
124
  * Checks whether the given `obj` is a Date.
@@ -1 +1 @@
1
- {"version":3,"file":"date-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/datetime/date-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/datetime/date-adapter.ts"],"names":[],"mappings":"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"}
@@ -57,7 +57,7 @@ export declare class NativeDateAdapter extends DateAdapter<Date> {
57
57
  /** Creates a Date from a valid input (Date, string or number in seconds). */
58
58
  deserialize(date: SbbDateLike | null | undefined): Date | null;
59
59
  /** Returns the right format for the `valueAsDate` property. */
60
- parse(value: string | null | undefined, now: Date): Date | null;
60
+ parse(value: string | null | undefined, now?: Date): Date | null;
61
61
  invalid(): Date;
62
62
  /**
63
63
  * Creates an array with the given length and fills it by mapping with the provided function.
@@ -1 +1 @@
1
- {"version":3,"file":"native-date-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/datetime/native-date-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAe,MAAM,mBAAmB,CAAC;AAU7D,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,IAAI,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAExB,gBAAgB,GAAE,MAAW;IAKhD,uCAAuC;IAChC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIlC,wCAAwC;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC,sCAAsC;IAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIlC,kDAAkD;IAC3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIvC,yCAAyC;IAClC,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM;IAS9D;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAKlE,iGAAiG;IAC1F,YAAY,IAAI,MAAM,EAAE;IAK/B;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAM/D,iBAAiB,IAAI,MAAM;IAIlC,6EAA6E;IACtE,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI5C,4BAA4B;IACrB,KAAK,IAAI,IAAI;IAIpB,+FAA+F;IACxF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAmBlE,gDAAgD;IACzC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAIxC,uDAAuD;IAChD,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,IAAI;IAI3D,mDAAmD;IAC5C,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI9B;;;;OAIG;IACI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxD;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ1D,yFAAyF;IAClF,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtD,6EAA6E;IAC7D,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI;IAkB9E,+DAA+D;IACxD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IA4BtD,OAAO,IAAI,IAAI;IAI/B;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAId,gEAAgE;IAChE,OAAO,CAAC,uBAAuB;CAShC;AAED,eAAO,MAAM,kBAAkB,mBAA0B,CAAC"}
1
+ {"version":3,"file":"native-date-adapter.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/datetime/native-date-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAUlF,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,IAAI,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;gBAExB,gBAAgB,GAAE,MAAW;IAKhD,uCAAuC;IAChC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIlC,wCAAwC;IACjC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC,sCAAsC;IAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIlC,kDAAkD;IAC3C,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAIvC,yCAAyC;IAClC,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM;IAS9D;;;;OAIG;IACI,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAKlE,iGAAiG;IAC1F,YAAY,IAAI,MAAM,EAAE;IAK/B;;;;OAIG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAE;IAM/D,iBAAiB,IAAI,MAAM;IAIlC,6EAA6E;IACtE,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAI5C,4BAA4B;IACrB,KAAK,IAAI,IAAI;IAIpB,+FAA+F;IACxF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAmBlE,gDAAgD;IACzC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAIxC,uDAAuD;IAChD,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,IAAI;IAI3D,mDAAmD;IAC5C,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI9B;;;;OAIG;IACI,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxD;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ1D,yFAAyF;IAClF,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKtD,6EAA6E;IAC7D,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI;IAkB9E,+DAA+D;IACxD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,GAAG,GAAE,IAAmB,GAAG,IAAI,GAAG,IAAI;IAkCrE,OAAO,IAAI,IAAI;IAI/B;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAId,gEAAgE;IAChE,OAAO,CAAC,uBAAuB;CAShC;AAED,eAAO,MAAM,kBAAkB,mBAA0B,CAAC"}
@@ -2,8 +2,10 @@ import { SbbLanguageController } from "./controllers.js";
2
2
  const DAYS_PER_ROW = 7;
3
3
  const MONTHS_PER_ROW = 4;
4
4
  const YEARS_PER_ROW = 4;
5
+ const MONTHS_PER_PAGE = 12;
5
6
  const YEARS_PER_PAGE = 24;
6
7
  const FORMAT_DATE = /(^0?[1-9]?|[12]?[0-9]?|3?[01]?)[.,\\/\-\s](0?[1-9]?|1?[0-2]?)?[.,\\/\-\s](\d{1,4}$)?/;
8
+ const ISO8601_FORMAT_DATE = /^(\d{4})-(\d{2})-(\d{2})$/;
7
9
  class DateAdapter {
8
10
  /**
9
11
  * Attempts to deserialize a value to a valid date object. This is different from parsing in that
@@ -34,6 +36,9 @@ class DateAdapter {
34
36
  month: "2-digit",
35
37
  year: "numeric"
36
38
  });
39
+ if ((options == null ? void 0 : options.weekdayStyle) === "none") {
40
+ return dateFormatter.format(value);
41
+ }
37
42
  const weekdayStyle = (options == null ? void 0 : options.weekdayStyle) ?? "short";
38
43
  let weekday = this.getDayOfWeekNames(weekdayStyle)[this.getDayOfWeek(date)];
39
44
  weekday = weekday.charAt(0).toUpperCase() + weekday.substring(1);
@@ -244,10 +249,15 @@ class NativeDateAdapter extends DateAdapter {
244
249
  return super.deserialize(date);
245
250
  }
246
251
  /** Returns the right format for the `valueAsDate` property. */
247
- parse(value, now) {
252
+ parse(value, now = this.today()) {
248
253
  if (!value) {
249
254
  return null;
250
255
  }
256
+ const isoMatch = value.match(ISO8601_FORMAT_DATE);
257
+ const date = isoMatch ? this.createDate(+isoMatch[1], +isoMatch[2], +isoMatch[3]) : null;
258
+ if (this.isValid(date)) {
259
+ return date;
260
+ }
251
261
  const strippedValue = value.replace(/\D/g, " ").trim();
252
262
  const match = strippedValue == null ? void 0 : strippedValue.match(FORMAT_DATE);
253
263
  if (!match || match.index !== 0 || match.length <= 2 || match.some((e) => e === void 0) || !this.isValid(this.createDate(+match[3], +match[2], +match[1]))) {
@@ -285,10 +295,12 @@ export {
285
295
  DAYS_PER_ROW,
286
296
  DateAdapter,
287
297
  FORMAT_DATE,
298
+ ISO8601_FORMAT_DATE,
299
+ MONTHS_PER_PAGE,
288
300
  MONTHS_PER_ROW,
289
301
  NativeDateAdapter,
290
302
  YEARS_PER_PAGE,
291
303
  YEARS_PER_ROW,
292
304
  defaultDateAdapter
293
305
  };
294
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IFlFQVJTX1BFUl9QQUdFOiBudW1iZXIgPSAyNDtcbmV4cG9ydCBjb25zdCBGT1JNQVRfREFURSA9XG4gIC8oXjA/WzEtOV0/fFsxMl0/WzAtOV0/fDM/WzAxXT8pWy4sXFxcXC9cXC1cXHNdKDA/WzEtOV0/fDE/WzAtMl0/KT9bLixcXFxcL1xcLVxcc10oXFxkezEsNH0kKT8vO1xuXG4vKipcbiAqIEFic3RyYWN0IGRhdGUgZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9ibG9iL21haW4vc3JjL21hdGVyaWFsL2NvcmUvZGF0ZXRpbWUvZGF0ZS1hZGFwdGVyLnRzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlQWRhcHRlcjxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIHllYXIgYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0WWVhcihkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1vbnRoIGFzIGEgbnVtYmVyLlxuICAgKiBBdHRlbnRpb246IFRoaXMgcmV0dXJucyAxLTEyIGFuZCBtaXRpZ2F0ZXMgdGhlIGRlZmF1bHQgSmF2YVNjcmlwdCBEYXRlIGJlaGF2aW9yLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG9mIHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgRGF5IG9mIHRoZSB3ZWVrIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERheU9mV2VlayhkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKiBHZXQgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgbW9udGguXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE51bURheXNJbk1vbnRoKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBtb250aHMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgLyoqIEdldCBhIHN0cmluZyBhcnJheSB3aXRoIGxlbmd0aCA9IDMxLCBmaWxsZWQgd2l0aCB0aGUgZGF5cyBpbiBhIG1vbnRoLCBzdGFydGluZyBmcm9tIDEuICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSB3ZWVrIGRheXMgaW4gYSBnaXZlbiBzdHlsZS5cbiAgICogQHBhcmFtIHN0eWxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBDcmVhdGVzIHRvZGF5J3MgZGF0ZS4gKi9cbiAgcHVibGljIGFic3RyYWN0IHRvZGF5KCk6IFQ7XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gYGRhdGVgIGlzIHZhbGlkLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpOiBkYXRlIGlzIFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBjbG9uaW5nIHRoZSBnaXZlbiBvbmUuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2xvbmUoZGF0ZTogVCk6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSwgZ2l2ZW4gZGF5LCBtb250aCBhbmQgeWVhcjsgd2l0aG91dCBkYXRlJ3Mgb3ZlcmZsb3cuXG4gICAqIEBwYXJhbSB5ZWFyXG4gICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggb2YgdGhlIGRhdGUgKDEtaW5kZXhlZCwgMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBkZXNlcmlhbGl6ZSBhIHZhbHVlIHRvIGEgdmFsaWQgZGF0ZSBvYmplY3QuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gcGFyc2luZyBpbiB0aGF0XG4gICAqIGRlc2VyaWFsaXplIHNob3VsZCBvbmx5IGFjY2VwdCBub24tYW1iaWd1b3VzLCBsb2NhbGUtaW5kZXBlbmRlbnQgZm9ybWF0cyAoZS5nLiBhIElTTyA4NjAxXG4gICAqIHN0cmluZykuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFsbG93IGFueSBkZXNlcmlhbGl6YXRpb24sIGl0IHNpbXBseSBjaGVja3MgdGhhdFxuICAgKiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYWxyZWFkeSBhIHZhbGlkIGRhdGUgb2JqZWN0IG9yIG51bGwuXG4gICAqIEBwYXJhbSB2YWx1ZSBFaXRoZXIgRGF0ZSwgSVNPU3RyaW5nLCBVbml4IFRpbWVzdGFtcCAobnVtYmVyIG9mIHNlY29uZHMgc2luY2UgSmFuIDEsIDE5NzApLlxuICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBpZiB0aGUgaW5wdXQgaXMgdmFsaWQsIGBudWxsYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgZGVzZXJpYWxpemUodmFsdWU6IFQgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogVCB8IG51bGwge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09IG51bGwgfHxcbiAgICAgICh0aGlzLmlzRGF0ZUluc3RhbmNlKHZhbHVlKSAmJiB0aGlzLmlzVmFsaWQodmFsdWUgYXMgVCB8IG51bGwgfCB1bmRlZmluZWQpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHZhbHVlIGFzIFQgfCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGB5ZWFyc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSB5ZWFycyBUaGUgbnVtYmVyIG9mIHllYXJzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhclllYXJzKGRhdGU6IFQsIHllYXJzOiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYWRkaW5nIHRoZSBudW1iZXIgb2YgcHJvdmlkZWQgYG1vbnRoc2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogSWYgdGhlIGNhbGN1bGF0ZWQgbW9udGggaGFzIGZld2VyIGRheXMgdGhhbiB0aGUgb3JpZ2luYWwgb25lLCB0aGUgZGF0ZSBpcyBzZXQgdG8gdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aC5cbiAgICogRS5nLiB3aXRoIGBkYXRlYCA9IG5ldyBEYXRlKDIwMjIsIDAsIDMxKSBhbmQgYG1vbnRoc2AgPSAxLCBpdCByZXR1cm5zIG5ldyBEYXRlKDIwMjIsIDEsIDI4KS5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSBtb250aHMgVGhlIG51bWJlciBvZiBtb250aHMgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IFQsIG1vbnRoczogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBkYXlzYCB0byB0aGUgcHJvdmlkZWQgYGRhdGVgLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgc3RhcnRpbmcgZGF0ZS5cbiAgICogQHBhcmFtIGRheXMgVGhlIG51bWJlciBvZiBkYXlzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhckRheXMoZGF0ZTogVCwgZGF5czogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogR2V0IHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGZvcm1hdFxuICAgKiBAcmV0dXJucyBUaGUgYGRhdGVgIGluIHRoZSBsb2NhbCBmb3JtYXQgYXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEFjY2Vzc2liaWxpdHlGb3JtYXREYXRlKGRhdGU6IFQgfCBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZ2l2ZW4gc3RyaW5nIGFzIERhdGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgZGF0ZSBpbiB0aGUgZm9ybWF0IERELk1NLllZWVkuXG4gICAqIEBwYXJhbSBub3cgVGhlIGN1cnJlbnQgZGF0ZSBhcyBEYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHBhcnNlKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBub3c6IFQpOiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogRm9ybWF0IHRoZSBnaXZlbiBkYXRlIGFzIHN0cmluZy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zIG9iamVjdCB3aXRoIHdlZWtkYXlTdHlsZSBhcyBwcm9wZXJ0eVxuICAgKi9cbiAgcHVibGljIGZvcm1hdChcbiAgICBkYXRlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zPzogeyB3ZWVrZGF5U3R5bGU/OiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGUodGhpcy50b0lzbzg2MDEoZGF0ZSEpICsgJ1QwMDowMDowMCcpO1xuICAgIGNvbnN0IGRhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZGUtQ0gnLCB7XG4gICAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB3ZWVrZGF5U3R5bGUgPSBvcHRpb25zPy53ZWVrZGF5U3R5bGUgPz8gJ3Nob3J0JztcbiAgICBsZXQgd2Vla2RheSA9IHRoaXMuZ2V0RGF5T2ZXZWVrTmFtZXMod2Vla2RheVN0eWxlKVt0aGlzLmdldERheU9mV2VlayhkYXRlISldO1xuICAgIHdlZWtkYXkgPSB3ZWVrZGF5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd2Vla2RheS5zdWJzdHJpbmcoMSk7XG4gICAgLy8gV2UgaGF2ZSB0aGUgc3BlY2lhbCByZXF1aXJlbWVudCBmb3IgZGF0ZSBmb3JtYXRzIGF0IFNCQiwgd2hlcmUgdGhlIHNob3J0IGZvcm1cbiAgICAvLyBmb3Igd2Vla2RheXMgc2hvdWxkIGJlIHR3byBjaGFyYWN0ZXJzIGluIGxlbmd0aC5cbiAgICBpZiAod2Vla2RheVN0eWxlID09PSAnc2hvcnQnKSB7XG4gICAgICB3ZWVrZGF5ID0gd2Vla2RheS5zdWJzdHJpbmcoMCwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dlZWtkYXl9LCAke2RhdGVGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuXG4gICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBjaGVjay5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdldHMgZGF0ZSBpbnN0YW5jZSB0aGF0IGlzIG5vdCB2YWxpZC5cbiAgICogQHJldHVybnMgQW4gaW52YWxpZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGludmFsaWQoKTogVDtcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBkYXRlIGFzIElTTyBTdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbnZlcnQgdG8gSVNPIFN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0lzbzg2MDEoZGF0ZTogVCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFkID0gKHZhbHVlOiBudW1iZXIsIGxlbmd0aCA9IDIpOiBzdHJpbmcgPT4gYCR7dmFsdWV9YC5wYWRTdGFydChsZW5ndGgsICcwJyk7XG4gICAgcmV0dXJuIGAke3BhZCh0aGlzLmdldFllYXIoZGF0ZSksIDQpfS0ke3BhZCh0aGlzLmdldE1vbnRoKGRhdGUpKX0tJHtwYWQodGhpcy5nZXREYXRlKGRhdGUpKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcG90ZW50aWFsIGRhdGUgb2JqZWN0LCByZXR1cm5zIHRoYXQgc2FtZSBkYXRlIG9iamVjdCBpZiBpdCBpc1xuICAgKiBhIHZhbGlkIGRhdGUsIG9yIGBudWxsYCBpZiBpdCdzIG5vdCBhIHZhbGlkIGRhdGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBBIGRhdGUgb3IgYG51bGxgLlxuICAgKi9cbiAgcHVibGljIGdldFZhbGlkRGF0ZU9yTnVsbCh2YWx1ZTogdW5rbm93bik6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh2YWx1ZSkgJiYgdGhpcy5pc1ZhbGlkKHZhbHVlIGFzIFQpID8gKHZhbHVlIGFzIFQpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgsIGFuZCB0aGVuIGl0cyBvZmZzZXQgZnJvbSB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIGdldEZpcnN0V2Vla09mZnNldChkYXRlOiBUKTogbnVtYmVyIHtcbiAgICBjb25zdCBmaXJzdE9mTW9udGggPSB0aGlzLmNyZWF0ZURhdGUodGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAxKSE7XG4gICAgcmV0dXJuIChcbiAgICAgIChEQVlTX1BFUl9ST1cgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIERBWVNfUEVSX1JPV1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iLCJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCB7IERhdGVBZGFwdGVyLCBGT1JNQVRfREFURSB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLmpzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuIHdpdGhvdXQgb2YgYm91bmRzIG1vbnRoLCBkYXRlLCBldGMuXG4gKi9cbmNvbnN0IElTT184NjAxX1JFR0VYID1cbiAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfSg/OlRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCspPyg/Olp8KD86KD86XFwrfC0pXFxkezJ9OlxcZHsyfSkpPyk/JC87XG5cbmV4cG9ydCBjbGFzcyBOYXRpdmVEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERhdGU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3V0b2ZmWWVhck9mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjdXRvZmZZZWFyT2Zmc2V0OiBudW1iZXIgPSAxNSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgb3B0aW9ucykuZm9ybWF0KG5ldyBEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBsZW5ndGggPSAxMiwgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vbnRocyBzdGFydGluZyBmcm9tIEphbnVhcnksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgbW9udGhgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgOiBgbG9uZ2AgZm9yIGZ1bGwgbmFtZSwgYHNob3J0YCBmb3Igc2hvcnQgbmFtZSwgYG5hcnJvd2AgZm9yIHNpbmdsZSBsZXR0ZXIsXG4gICAqIEUuZy4sIHdpdGggSmFudWFyeSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJKYW51YXJ5XCIsIGBzaG9ydGAgcmV0dXJucyBcIkphblwiLCBgbmFycm93YCByZXR1cm5zIFwiSlwiLlxuICAgKi9cbiAgcHVibGljIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBtb250aDogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDEyLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qIERlZmluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIGdpdmVuIHRoZSB5ZWFyIGFuZCB0aGUgbW9udGguICovXG4gIHB1YmxpYyBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyB0b2RheSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlLCBnaXZlbiBkYXksIG1vbnRoIGFuZCB5ZWFyOyB0aGUgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgZGF0ZSdzIG92ZXJmbG93LiAqL1xuICBwdWJsaWMgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBEYXRlKS5cbiAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIGluZGV4IFwiJHttb250aH1cIi4gTW9udGggaW5kZXggaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgMTIuYCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoIC0gMSwgZGF0ZSk7XG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgZGF0ZSB3YXNuJ3QgYWJvdmUgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgbW9udGgsIGNhdXNpbmcgdGhlIG1vbnRoIHRvIG92ZXJmbG93XG4gICAgaWYgKHJlc3VsdC5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRhdGUgXCIke2RhdGV9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS4gKi9cbiAgcHVibGljIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIERhdGUuICovXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gISFkYXRlICYmICFpc05hTihkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGNsb25pbmcgdGhlIGdpdmVuIG9uZS4gKi9cbiAgcHVibGljIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyBtb250aHM7XG4gICAgY29uc3QgZGF0ZVdpdGhDb3JyZWN0TW9udGggPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIHRhcmdldE1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhDb3JyZWN0TW9udGgpO1xuICAgIC8vIEFkYXB0IHRoZSBsYXN0IGRheSBvZiBtb250aCBmb3Igc2hvcnRlciBtb250aHNcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jbG9uZShkYXRlKS5zZXRNb250aCh0YXJnZXRNb250aCwgTWF0aC5taW4oZGF5c0luTW9udGgsIGRhdGUuZ2V0RGF0ZSgpKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC4gKi9cbiAgcHVibGljIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXREYXkgPSBkYXRlLmdldERhdGUoKSArIGRheXM7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCB0YXJnZXREYXksIDAsIDAsIDAsIDApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBEYXRlIGZyb20gYSB2YWxpZCBpbnB1dCAoRGF0ZSwgc3RyaW5nIG9yIG51bWJlciBpbiBzZWNvbmRzKS4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRlc2VyaWFsaXplKGRhdGU6IFNiYkRhdGVMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNOYU4oK2RhdGUpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbChuZXcgRGF0ZSgrZGF0ZSAqIDEwMDApKTtcblxuICAgICAgICAvLyBUaGUgYERhdGVgIGNvbnN0cnVjdG9yIGFjY2VwdHMgZm9ybWF0cyBvdGhlciB0aGFuIElTTyA4NjAxLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUuaW5jbHVkZXMoJ1QnKSA/IGRhdGUgOiBkYXRlICsgJ1QwMDowMDowMCcpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUgKiAxMDAwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSByaWdodCBmb3JtYXQgZm9yIHRoZSBgdmFsdWVBc0RhdGVgIHByb3BlcnR5LiAqL1xuICBwdWJsaWMgcGFyc2UodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIG5vdzogRGF0ZSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBzdHJpcHBlZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvXFxEL2csICcgJykudHJpbSgpO1xuXG4gICAgY29uc3QgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsIHwgdW5kZWZpbmVkID0gc3RyaXBwZWRWYWx1ZT8ubWF0Y2goRk9STUFUX0RBVEUpO1xuICAgIGlmIChcbiAgICAgICFtYXRjaCB8fFxuICAgICAgbWF0Y2guaW5kZXggIT09IDAgfHxcbiAgICAgIG1hdGNoLmxlbmd0aCA8PSAyIHx8XG4gICAgICBtYXRjaC5zb21lKChlKSA9PiBlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAhdGhpcy5pc1ZhbGlkKHRoaXMuY3JlYXRlRGF0ZSgrbWF0Y2hbM10sICttYXRjaFsyXSwgK21hdGNoWzFdKSlcbiAgICApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCB5ZWFyID0gK21hdGNoWzNdO1xuXG4gICAgaWYgKHR5cGVvZiB5ZWFyID09PSAnbnVtYmVyJyAmJiB5ZWFyIDwgMTAwICYmIHllYXIgPj0gMCkge1xuICAgICAgY29uc3Qgc2hpZnQgPSBub3cuZ2V0RnVsbFllYXIoKSAtIDIwMDAgKyB0aGlzLl9jdXRvZmZZZWFyT2Zmc2V0O1xuICAgICAgeWVhciA9IHllYXIgPD0gc2hpZnQgPyAyMDAwICsgeWVhciA6IDE5MDAgKyB5ZWFyO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCArbWF0Y2hbMl0gLSAxLCArbWF0Y2hbMV0pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGludmFsaWQoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhcnJheSB3aXRoIHRoZSBnaXZlbiBsZW5ndGggYW5kIGZpbGxzIGl0IGJ5IG1hcHBpbmcgd2l0aCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24uXG4gICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgdG8gYmUgY3JlYXRlZC5cbiAgICogQHBhcmFtIHZhbHVlRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIG9mIGFycmF5J3MgaW5kZXggdXNlZCB0byBmaWxsIHRoZSBhcnJheS5cbiAgICovXG4gIHByaXZhdGUgX3JhbmdlPFQ+KGxlbmd0aDogbnVtYmVyLCB2YWx1ZUZ1bmN0aW9uOiAoaW5kZXg6IG51bWJlcikgPT4gVCk6IFRbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGggfSkubWFwKChfLCBpKSA9PiB2YWx1ZUZ1bmN0aW9uKGkpKTtcbiAgfVxuXG4gIC8qKiBDcmVhdGVzIGEgZGF0ZSBidXQgYWxsb3dzIHRoZSBtb250aCBhbmQgZGF0ZSB0byBvdmVyZmxvdy4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcbiAgICAvLyBXZSBuZWVkIHRvIGNvcnJlY3QgZm9yIHRoZSBmYWN0IHRoYXQgSlMgbmF0aXZlIERhdGUgdHJlYXRzIHllYXJzIGluIHJhbmdlIFswLCA5OV0gYXNcbiAgICAvLyBhYmJyZXZpYXRpb25zIGZvciAxOXh4LlxuICAgIGlmICh5ZWFyID49IDAgJiYgeWVhciA8IDEwMCkge1xuICAgICAgcmVzdWx0LnNldEZ1bGxZZWFyKHRoaXMuZ2V0WWVhcihyZXN1bHQpIC0gMTkwMCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHREYXRlQWRhcHRlciA9IG5ldyBOYXRpdmVEYXRlQWRhcHRlcigpO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBTyxNQUFNLGVBQXVCO0FBQzdCLE1BQU0saUJBQXlCO0FBQy9CLE1BQU0sZ0JBQXdCO0FBQzlCLE1BQU0saUJBQXlCO0FBQy9CLE1BQU0sY0FDWDtNQU9vQixZQUFXO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0Z4QixZQUFZLE9BQTZDO0FBRTVELFFBQUEsU0FBUyxRQUNSLEtBQUssZUFBZSxLQUFLLEtBQUssS0FBSyxRQUFRLEtBQTZCLEdBQ3pFO0FBQ08sYUFBQTtBQUFBLElBQUE7QUFFVCxXQUFPLEtBQUssUUFBTztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUE2Q2QsT0FDTCxNQUNBLFNBQXdEO0FBRXhELFFBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxHQUFHO0FBQ2hCLGFBQUE7QUFBQSxJQUFBO0FBR1QsVUFBTSxRQUFZLG9CQUFBLEtBQUssS0FBSyxVQUFVLElBQUssSUFBSSxXQUFXO0FBQzFELFVBQU0sZ0JBQWdCLElBQUksS0FBSyxlQUFlLFNBQVM7QUFBQSxNQUNyRCxLQUFLO0FBQUEsTUFDTCxPQUFPO0FBQUEsTUFDUCxNQUFNO0FBQUEsSUFBQSxDQUNQO0FBRUssVUFBQSxnQkFBZSxtQ0FBUyxpQkFBZ0I7QUFDMUMsUUFBQSxVQUFVLEtBQUssa0JBQWtCLFlBQVksRUFBRSxLQUFLLGFBQWEsSUFBSyxDQUFD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
306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50cyIsIi4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jb3JlL2RhdGV0aW1lL25hdGl2ZS1kYXRlLWFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERBWVNfUEVSX1JPVzogbnVtYmVyID0gNztcbmV4cG9ydCBjb25zdCBNT05USFNfUEVSX1JPVzogbnVtYmVyID0gNDtcbmV4cG9ydCBjb25zdCBZRUFSU19QRVJfUk9XOiBudW1iZXIgPSA0O1xuZXhwb3J0IGNvbnN0IE1PTlRIU19QRVJfUEFHRTogbnVtYmVyID0gMTI7XG5leHBvcnQgY29uc3QgWUVBUlNfUEVSX1BBR0U6IG51bWJlciA9IDI0O1xuZXhwb3J0IGNvbnN0IEZPUk1BVF9EQVRFID1cbiAgLyheMD9bMS05XT98WzEyXT9bMC05XT98Mz9bMDFdPylbLixcXFxcL1xcLVxcc10oMD9bMS05XT98MT9bMC0yXT8pP1suLFxcXFwvXFwtXFxzXShcXGR7MSw0fSQpPy87XG5leHBvcnQgY29uc3QgSVNPODYwMV9GT1JNQVRfREFURSA9IC9eKFxcZHs0fSktKFxcZHsyfSktKFxcZHsyfSkkLztcblxuLyoqXG4gKiBBYnN0cmFjdCBkYXRlIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9tYXRlcmlhbC9jb3JlL2RhdGV0aW1lL2RhdGUtYWRhcHRlci50c1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0ZUFkYXB0ZXI8VCA9IGFueT4ge1xuICAvKipcbiAgICogR2V0IHRoZSB5ZWFyIGFzIGEgbnVtYmVyLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBhcyBhIG51bWJlci5cbiAgICogQXR0ZW50aW9uOiBUaGlzIHJldHVybnMgMS0xMiBhbmQgbWl0aWdhdGVzIHRoZSBkZWZhdWx0IEphdmFTY3JpcHQgRGF0ZSBiZWhhdmlvci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgbW9udGggYXMgYSBudW1iZXIuXG4gICAqIEBwYXJhbSBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZShkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIERheSBvZiB0aGUgd2VlayBhcyBhIG51bWJlci5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKiogR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDA6IHN1bmRheTsgMTogbW9uZGF5OyBldGMuKS4gKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoLlxuICAgKiBAcGFyYW0geWVhclxuICAgKiBAcGFyYW0gbW9udGhcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgbW9udGhzIGluIGEgZ2l2ZW4gc3R5bGUuXG4gICAqIEBwYXJhbSBzdHlsZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gIC8qKiBHZXQgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgd2VlayBkYXlzIGluIGEgZ2l2ZW4gc3R5bGUuXG4gICAqIEBwYXJhbSBzdHlsZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXTtcblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0b2RheSgpOiBUO1xuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIGBkYXRlYCBpcyB2YWxpZC5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc1ZhbGlkKGRhdGU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUgYnkgY2xvbmluZyB0aGUgZ2l2ZW4gb25lLlxuICAgKiBAcGFyYW0gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb25lKGRhdGU6IFQpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGRhdGUsIGdpdmVuIGRheSwgbW9udGggYW5kIHllYXI7IHdpdGhvdXQgZGF0ZSdzIG92ZXJmbG93LlxuICAgKiBAcGFyYW0geWVhclxuICAgKiBAcGFyYW0gbW9udGggVGhlIG1vbnRoIG9mIHRoZSBkYXRlICgxLWluZGV4ZWQsIDEgPSBKYW51YXJ5KS4gTXVzdCBiZSBhbiBpbnRlZ2VyIDEgLSAxMi5cbiAgICogQHBhcmFtIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjcmVhdGVEYXRlKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF0ZTogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQXR0ZW1wdHMgdG8gZGVzZXJpYWxpemUgYSB2YWx1ZSB0byBhIHZhbGlkIGRhdGUgb2JqZWN0LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHBhcnNpbmcgaW4gdGhhdFxuICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxuICAgKiBzdHJpbmcpLiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBhbnkgZGVzZXJpYWxpemF0aW9uLCBpdCBzaW1wbHkgY2hlY2tzIHRoYXRcbiAgICogdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSB2YWxpZCBkYXRlIG9iamVjdCBvciBudWxsLlxuICAgKiBAcGFyYW0gdmFsdWUgRWl0aGVyIERhdGUsIElTT1N0cmluZywgVW5peCBUaW1lc3RhbXAgKG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIEphbiAxLCAxOTcwKS5cbiAgICogQHJldHVybnMgVGhlIGRhdGUgaWYgdGhlIGlucHV0IGlzIHZhbGlkLCBgbnVsbGAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIGRlc2VyaWFsaXplKHZhbHVlOiBUIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IFQgfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PSBudWxsIHx8XG4gICAgICAodGhpcy5pc0RhdGVJbnN0YW5jZSh2YWx1ZSkgJiYgdGhpcy5pc1ZhbGlkKHZhbHVlIGFzIFQgfCBudWxsIHwgdW5kZWZpbmVkKSlcbiAgICApIHtcbiAgICAgIHJldHVybiB2YWx1ZSBhcyBUIHwgbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBULCB5ZWFyczogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4gd2l0aCBgZGF0ZWAgPSBuZXcgRGF0ZSgyMDIyLCAwLCAzMSkgYW5kIGBtb250aHNgID0gMSwgaXQgcmV0dXJucyBuZXcgRGF0ZSgyMDIyLCAxLCAyOCkuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBULCBtb250aHM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC5cbiAgICogQHBhcmFtIGRhdGUgVGhlIHN0YXJ0aW5nIGRhdGUuXG4gICAqIEBwYXJhbSBkYXlzIFRoZSBudW1iZXIgb2YgZGF5cyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IFQsIGRheXM6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF0ZSBpbiB0aGUgbG9jYWwgZm9ybWF0LlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBmb3JtYXRcbiAgICogQHJldHVybnMgVGhlIGBkYXRlYCBpbiB0aGUgbG9jYWwgZm9ybWF0IGFzIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBUIHwgc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGdpdmVuIHN0cmluZyBhcyBEYXRlLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIGRhdGUgaW4gdGhlIGZvcm1hdCBERC5NTS5ZWVlZLlxuICAgKiBAcGFyYW0gbm93IFRoZSBjdXJyZW50IGRhdGUgYXMgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYXJzZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbm93PzogVCk6IFQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGb3JtYXQgdGhlIGdpdmVuIGRhdGUgYXMgc3RyaW5nLlxuICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBmb3JtYXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnMgb2JqZWN0IHdpdGggd2Vla2RheVN0eWxlIGFzIHByb3BlcnR5XG4gICAqL1xuICBwdWJsaWMgZm9ybWF0KFxuICAgIGRhdGU6IFQgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM/OiB7IHdlZWtkYXlTdHlsZT86ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93JyB8ICdub25lJyB9LFxuICApOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKGRhdGUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnRvSXNvODYwMShkYXRlISkgKyAnVDAwOjAwOjAwJyk7XG4gICAgY29uc3QgZGF0ZUZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdkZS1DSCcsIHtcbiAgICAgIGRheTogJzItZGlnaXQnLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zPy53ZWVrZGF5U3R5bGUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGRhdGVGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCB3ZWVrZGF5U3R5bGUgPSBvcHRpb25zPy53ZWVrZGF5U3R5bGUgPz8gJ3Nob3J0JztcbiAgICBsZXQgd2Vla2RheSA9IHRoaXMuZ2V0RGF5T2ZXZWVrTmFtZXMod2Vla2RheVN0eWxlKVt0aGlzLmdldERheU9mV2VlayhkYXRlISldO1xuICAgIHdlZWtkYXkgPSB3ZWVrZGF5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd2Vla2RheS5zdWJzdHJpbmcoMSk7XG4gICAgLy8gV2UgaGF2ZSB0aGUgc3BlY2lhbCByZXF1aXJlbWVudCBmb3IgZGF0ZSBmb3JtYXRzIGF0IFNCQiwgd2hlcmUgdGhlIHNob3J0IGZvcm1cbiAgICAvLyBmb3Igd2Vla2RheXMgc2hvdWxkIGJlIHR3byBjaGFyYWN0ZXJzIGluIGxlbmd0aC5cbiAgICBpZiAod2Vla2RheVN0eWxlID09PSAnc2hvcnQnKSB7XG4gICAgICB3ZWVrZGF5ID0gd2Vla2RheS5zdWJzdHJpbmcoMCwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dlZWtkYXl9LCAke2RhdGVGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBgb2JqYCBpcyBhIERhdGUuXG4gICAqIEBwYXJhbSBvYmogVGhlIG9iamVjdCB0byBjaGVjay5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0RhdGVJbnN0YW5jZShvYmo6IGFueSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdldHMgZGF0ZSBpbnN0YW5jZSB0aGF0IGlzIG5vdCB2YWxpZC5cbiAgICogQHJldHVybnMgQW4gaW52YWxpZCBkYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGludmFsaWQoKTogVDtcblxuICAvKipcbiAgICogR2V0IHRoZSBnaXZlbiBkYXRlIGFzIElTTyBTdHJpbmcuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGNvbnZlcnQgdG8gSVNPIFN0cmluZy5cbiAgICovXG4gIHB1YmxpYyB0b0lzbzg2MDEoZGF0ZTogVCk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFkID0gKHZhbHVlOiBudW1iZXIsIGxlbmd0aCA9IDIpOiBzdHJpbmcgPT4gYCR7dmFsdWV9YC5wYWRTdGFydChsZW5ndGgsICcwJyk7XG4gICAgcmV0dXJuIGAke3BhZCh0aGlzLmdldFllYXIoZGF0ZSksIDQpfS0ke3BhZCh0aGlzLmdldE1vbnRoKGRhdGUpKX0tJHtwYWQodGhpcy5nZXREYXRlKGRhdGUpKX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgcG90ZW50aWFsIGRhdGUgb2JqZWN0LCByZXR1cm5zIHRoYXQgc2FtZSBkYXRlIG9iamVjdCBpZiBpdCBpc1xuICAgKiBhIHZhbGlkIGRhdGUsIG9yIGBudWxsYCBpZiBpdCdzIG5vdCBhIHZhbGlkIGRhdGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBBIGRhdGUgb3IgYG51bGxgLlxuICAgKi9cbiAgcHVibGljIGdldFZhbGlkRGF0ZU9yTnVsbCh2YWx1ZTogdW5rbm93bik6IFQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVJbnN0YW5jZSh2YWx1ZSkgJiYgdGhpcy5pc1ZhbGlkKHZhbHVlIGFzIFQpID8gKHZhbHVlIGFzIFQpIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGVzIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGgsIGFuZCB0aGVuIGl0cyBvZmZzZXQgZnJvbSB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgKi9cbiAgcHVibGljIGdldEZpcnN0V2Vla09mZnNldChkYXRlOiBUKTogbnVtYmVyIHtcbiAgICBjb25zdCBmaXJzdE9mTW9udGggPSB0aGlzLmNyZWF0ZURhdGUodGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAxKSE7XG4gICAgcmV0dXJuIChcbiAgICAgIChEQVlTX1BFUl9ST1cgKyB0aGlzLmdldERheU9mV2VlayhmaXJzdE9mTW9udGgpIC0gdGhpcy5nZXRGaXJzdERheU9mV2VlaygpKSAlIERBWVNfUEVSX1JPV1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgKiBAcGFyYW0gZmlyc3QgVGhlIGZpcnN0IGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgKiAgICAgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDAgaWYgdGhlIGZpcnN0IGRhdGUgaXMgbGF0ZXIuXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZURhdGUoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHR3byBkYXRlcyBhcmUgZXF1YWwuXG4gICAqICAgICBOdWxsIGRhdGVzIGFyZSBjb25zaWRlcmVkIGVxdWFsIHRvIG90aGVyIG51bGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2FtZURhdGUoZmlyc3Q6IFQgfCBudWxsLCBzZWNvbmQ6IFQgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZpcnN0ICYmIHNlY29uZCkge1xuICAgICAgY29uc3QgZmlyc3RWYWxpZCA9IHRoaXMuaXNWYWxpZChmaXJzdCk7XG4gICAgICBjb25zdCBzZWNvbmRWYWxpZCA9IHRoaXMuaXNWYWxpZChzZWNvbmQpO1xuICAgICAgaWYgKGZpcnN0VmFsaWQgJiYgc2Vjb25kVmFsaWQpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbXBhcmVEYXRlKGZpcnN0LCBzZWNvbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpcnN0VmFsaWQgPT0gc2Vjb25kVmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmaXJzdCA9PSBzZWNvbmQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xhbXAgdGhlIGdpdmVuIGRhdGUgYmV0d2VlbiBtaW4gYW5kIG1heCBkYXRlcy5cbiAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xhbXAuXG4gICAqIEBwYXJhbSBtaW4gVGhlIG1pbmltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtaW4gaXMgZW5mb3JjZWQuXG4gICAqIEBwYXJhbSBtYXggVGhlIG1heGltdW0gdmFsdWUgdG8gYWxsb3cuIElmIG51bGwgb3Igb21pdHRlZCBubyBtYXggaXMgZW5mb3JjZWQuXG4gICAqIEByZXR1cm5zIGBtaW5gIGlmIGBkYXRlYCBpcyBsZXNzIHRoYW4gYG1pbmAsIGBtYXhgIGlmIGRhdGUgaXMgZ3JlYXRlciB0aGFuIGBtYXhgLFxuICAgKiAgICAgb3RoZXJ3aXNlIGBkYXRlYC5cbiAgICovXG4gIHB1YmxpYyBjbGFtcERhdGUoZGF0ZTogVCwgbWluPzogVCB8IG51bGwsIG1heD86IFQgfCBudWxsKTogVCB7XG4gICAgaWYgKG1pbiAmJiB0aGlzLmNvbXBhcmVEYXRlKGRhdGUsIG1pbikgPCAwKSB7XG4gICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBpZiAobWF4ICYmIHRoaXMuY29tcGFyZURhdGUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iLCJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICcuLi9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYkRhdGVMaWtlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy5qcyc7XG5cbmltcG9ydCB7IERhdGVBZGFwdGVyLCBGT1JNQVRfREFURSwgSVNPODYwMV9GT1JNQVRfREFURSB9IGZyb20gJy4vZGF0ZS1hZGFwdGVyLmpzJztcblxuLyoqXG4gKiBNYXRjaGVzIHN0cmluZ3MgdGhhdCBoYXZlIHRoZSBmb3JtIG9mIGEgdmFsaWQgUkZDIDMzMzkgc3RyaW5nXG4gKiAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpLiBOb3RlIHRoYXQgdGhlIHN0cmluZyBtYXkgbm90IGFjdHVhbGx5IGJlIGEgdmFsaWQgZGF0ZVxuICogYmVjYXVzZSB0aGUgcmVnZXggd2lsbCBtYXRjaCBzdHJpbmdzIGFuIHdpdGhvdXQgb2YgYm91bmRzIG1vbnRoLCBkYXRlLCBldGMuXG4gKi9cbmNvbnN0IElTT184NjAxX1JFR0VYID1cbiAgL15cXGR7NH0tXFxkezJ9LVxcZHsyfSg/OlRcXGR7Mn06XFxkezJ9OlxcZHsyfSg/OlxcLlxcZCspPyg/Olp8KD86KD86XFwrfC0pXFxkezJ9OlxcZHsyfSkpPyk/JC87XG5cbmV4cG9ydCBjbGFzcyBOYXRpdmVEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERhdGU+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3V0b2ZmWWVhck9mZnNldDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjdXRvZmZZZWFyT2Zmc2V0OiBudW1iZXIgPSAxNSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fY3V0b2ZmWWVhck9mZnNldCA9IGN1dG9mZlllYXJPZmZzZXQ7XG4gIH1cblxuICAvKiogR2V0cyB0aGUgeWVhciBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldFllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldE1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERhdGUoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgaW5wdXQgZGF0ZS4gKi9cbiAgcHVibGljIGdldERheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZGF0ZS5nZXREYXkoKTtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBkYXRlIGluIHRoZSBsb2NhbCBmb3JtYXQuICovXG4gIHB1YmxpYyBnZXRBY2Nlc3NpYmlsaXR5Rm9ybWF0RGF0ZShkYXRlOiBEYXRlIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgb3B0aW9ucykuZm9ybWF0KG5ldyBEYXRlKGRhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBsZW5ndGggPSAxMiwgZmlsbGVkIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vbnRocyBzdGFydGluZyBmcm9tIEphbnVhcnksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgbW9udGhgIGluIGBEYXRlVGltZUZvcm1hdE9wdGlvbnNgOiBgbG9uZ2AgZm9yIGZ1bGwgbmFtZSwgYHNob3J0YCBmb3Igc2hvcnQgbmFtZSwgYG5hcnJvd2AgZm9yIHNpbmdsZSBsZXR0ZXIsXG4gICAqIEUuZy4sIHdpdGggSmFudWFyeSBpbiBlbi1nYjogYGxvbmdgIHJldHVybnMgXCJKYW51YXJ5XCIsIGBzaG9ydGAgcmV0dXJucyBcIkphblwiLCBgbmFycm93YCByZXR1cm5zIFwiSlwiLlxuICAgKi9cbiAgcHVibGljIGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBtb250aDogc3R5bGUgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlKDEyLCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCBpLCAxKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSAzMSwgZmlsbGVkIHdpdGggdGhlIGRheXMgaW4gYSBtb250aCwgc3RhcnRpbmcgZnJvbSAxLiAqL1xuICBwdWJsaWMgZ2V0RGF0ZU5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChTYmJMYW5ndWFnZUNvbnRyb2xsZXIuY3VycmVudCwgeyBkYXk6ICdudW1lcmljJyB9KTtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2UoMzEsIChpKSA9PiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDAsIGkgKyAxKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBzdHJpbmcgYXJyYXkgd2l0aCBsZW5ndGggPSA3LCBmaWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF5cyBpbiBhIHdlZWsgc3RhcnRpbmcgZnJvbSBTdW5kYXksIGluIHRoZSBkb2N1bWVudCBsYW5ndWFnZS5cbiAgICogQHBhcmFtIHN0eWxlIFNlZSBgd2Vla2RheWAgaW4gYERhdGVUaW1lRm9ybWF0T3B0aW9uc2AgLSAnbG9uZycgZm9yIGZ1bGwgbmFtZSwgJ3Nob3J0JyBmb3Igc2hvcnQgbmFtZSwgJ25hcnJvdycgZm9yIHNpbmdsZSBsZXR0ZXI7XG4gICAqIEUuZy4sIHdpdGggTW9uZGF5IGluIGVuLWdiOiBgbG9uZ2AgcmV0dXJucyBcIk1vbmRheVwiLCBgc2hvcnRgIHJldHVybnMgXCJNb25cIiwgYG5hcnJvd2AgcmV0dXJucyBcIk1cIi5cbiAgICovXG4gIHB1YmxpYyBnZXREYXlPZldlZWtOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KFNiYkxhbmd1YWdlQ29udHJvbGxlci5jdXJyZW50LCB7IHdlZWtkYXk6IHN0eWxlIH0pO1xuICAgIHJldHVybiB0aGlzLl9yYW5nZSg3LCAoaSkgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSgyMDE3LCAwLCBpICsgMSkpKTtcbiAgfVxuXG4gIC8qIERlZmluZXMgd2hpY2ggaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMDogc3VuZGF5OyAxOiBtb25kYXk7IGV0Yy4pLiAqL1xuICBwdWJsaWMgZ2V0Rmlyc3REYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhIG1vbnRoIGdpdmVuIHRoZSB5ZWFyIGFuZCB0aGUgbW9udGguICovXG4gIHB1YmxpYyBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRlKHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKGRhdGUpLCB0aGlzLmdldE1vbnRoKGRhdGUpLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyB0b2RheSdzIGRhdGUuICovXG4gIHB1YmxpYyB0b2RheSgpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlLCBnaXZlbiBkYXksIG1vbnRoIGFuZCB5ZWFyOyB0aGUgbWV0aG9kIGRvZXNuJ3QgYWxsb3cgZGF0ZSdzIG92ZXJmbG93LiAqL1xuICBwdWJsaWMgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGRhdGU6IG51bWJlcik6IERhdGUge1xuICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIG1vbnRoIGFuZCBkYXRlIChleGNlcHQgdXBwZXIgYm91bmQgb24gZGF0ZSB3aGljaCB3ZSBoYXZlIHRvIGNoZWNrIGFmdGVyIGNyZWF0aW5nIHRoZSBEYXRlKS5cbiAgICBpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIG1vbnRoIGluZGV4IFwiJHttb250aH1cIi4gTW9udGggaW5kZXggaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgMTIuYCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUgPCAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlIFwiJHtkYXRlfVwiLiBEYXRlIGhhcyB0byBiZSBncmVhdGVyIHRoYW4gMC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHllYXIsIG1vbnRoIC0gMSwgZGF0ZSk7XG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgZGF0ZSB3YXNuJ3QgYWJvdmUgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgbW9udGgsIGNhdXNpbmcgdGhlIG1vbnRoIHRvIG92ZXJmbG93XG4gICAgaWYgKHJlc3VsdC5nZXRNb250aCgpICsgMSAhPT0gbW9udGgpIHtcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIGRhdGUgXCIke2RhdGV9XCIgZm9yIG1vbnRoIHdpdGggaW5kZXggXCIke21vbnRofVwiLmApO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBvYmpgIGlzIGEgRGF0ZS4gKi9cbiAgcHVibGljIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIERhdGU7XG4gIH1cblxuICAvKiogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGBkYXRlYCBpcyBhIHZhbGlkIERhdGUuICovXG4gIHB1YmxpYyBpc1ZhbGlkKGRhdGU6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogZGF0ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gISFkYXRlICYmICFpc05hTihkYXRlLnZhbHVlT2YoKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIG5ldyBkYXRlIGJ5IGNsb25pbmcgdGhlIGdpdmVuIG9uZS4gKi9cbiAgcHVibGljIGNsb25lKGRhdGU6IERhdGUpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgZGF0ZSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgeWVhcnNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIEBwYXJhbSBkYXRlIFRoZSBzdGFydGluZyBkYXRlLlxuICAgKiBAcGFyYW0geWVhcnMgVGhlIG51bWJlciBvZiB5ZWFycyB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBEYXRlLCB5ZWFyczogbnVtYmVyKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2FsZW5kYXJNb250aHMoZGF0ZSwgeWVhcnMgKiAxMik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBkYXRlIGFkZGluZyB0aGUgbnVtYmVyIG9mIHByb3ZpZGVkIGBtb250aHNgIHRvIHRoZSBwcm92aWRlZCBgZGF0ZWAuXG4gICAqIElmIHRoZSBjYWxjdWxhdGVkIG1vbnRoIGhhcyBmZXdlciBkYXlzIHRoYW4gdGhlIG9yaWdpbmFsIG9uZSwgdGhlIGRhdGUgaXMgc2V0IHRvIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguXG4gICAqIEUuZy4sIHdpdGggYGRhdGVgID0gbmV3IERhdGUoMjAyMiwgMCwgMzEpIGFuZCBgbW9udGhzYCA9IDEsIGl0IHJldHVybnMgbmV3IERhdGUoMjAyMiwgMSwgMjgpLlxuICAgKi9cbiAgcHVibGljIGFkZENhbGVuZGFyTW9udGhzKGRhdGU6IERhdGUsIG1vbnRoczogbnVtYmVyKTogRGF0ZSB7XG4gICAgY29uc3QgdGFyZ2V0TW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyBtb250aHM7XG4gICAgY29uc3QgZGF0ZVdpdGhDb3JyZWN0TW9udGggPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIHRhcmdldE1vbnRoLCAxLCAwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IHRoaXMuZ2V0TnVtRGF5c0luTW9udGgoZGF0ZVdpdGhDb3JyZWN0TW9udGgpO1xuICAgIC8vIEFkYXB0IHRoZSBsYXN0IGRheSBvZiBtb250aCBmb3Igc2hvcnRlciBtb250aHNcbiAgICByZXR1cm4gbmV3IERhdGUodGhpcy5jbG9uZShkYXRlKS5zZXRNb250aCh0YXJnZXRNb250aCwgTWF0aC5taW4oZGF5c0luTW9udGgsIGRhdGUuZ2V0RGF0ZSgpKSkpO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBuZXcgZGF0ZSBieSBhZGRpbmcgdGhlIG51bWJlciBvZiBwcm92aWRlZCBgZGF5c2AgdG8gdGhlIHByb3ZpZGVkIGBkYXRlYC4gKi9cbiAgcHVibGljIGFkZENhbGVuZGFyRGF5cyhkYXRlOiBEYXRlLCBkYXlzOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCB0YXJnZXREYXkgPSBkYXRlLmdldERhdGUoKSArIGRheXM7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCB0YXJnZXREYXksIDAsIDAsIDAsIDApO1xuICB9XG5cbiAgLyoqIENyZWF0ZXMgYSBEYXRlIGZyb20gYSB2YWxpZCBpbnB1dCAoRGF0ZSwgc3RyaW5nIG9yIG51bWJlciBpbiBzZWNvbmRzKS4gKi9cbiAgcHVibGljIG92ZXJyaWRlIGRlc2VyaWFsaXplKGRhdGU6IFNiYkRhdGVMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoIWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2UgaWYgKCFOdW1iZXIuaXNOYU4oK2RhdGUpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFZhbGlkRGF0ZU9yTnVsbChuZXcgRGF0ZSgrZGF0ZSAqIDEwMDApKTtcblxuICAgICAgICAvLyBUaGUgYERhdGVgIGNvbnN0cnVjdG9yIGFjY2VwdHMgZm9ybWF0cyBvdGhlciB0aGFuIElTTyA4NjAxLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzIHRoZSByaWdodCBmb3JtYXQgZmlyc3QuXG4gICAgICB9IGVsc2UgaWYgKElTT184NjAxX1JFR0VYLnRlc3QoZGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUuaW5jbHVkZXMoJ1QnKSA/IGRhdGUgOiBkYXRlICsgJ1QwMDowMDowMCcpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsaWREYXRlT3JOdWxsKG5ldyBEYXRlKGRhdGUgKiAxMDAwKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5kZXNlcmlhbGl6ZShkYXRlKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSByaWdodCBmb3JtYXQgZm9yIHRoZSBgdmFsdWVBc0RhdGVgIHByb3BlcnR5LiAqL1xuICBwdWJsaWMgcGFyc2UodmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIG5vdzogRGF0ZSA9IHRoaXMudG9kYXkoKSk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBpc29NYXRjaCA9IHZhbHVlLm1hdGNoKElTTzg2MDFfRk9STUFUX0RBVEUpO1xuICAgIGNvbnN0IGRhdGUgPSBpc29NYXRjaCA/IHRoaXMuY3JlYXRlRGF0ZSgraXNvTWF0Y2hbMV0sICtpc29NYXRjaFsyXSwgK2lzb01hdGNoWzNdKSA6IG51bGw7XG4gICAgaWYgKHRoaXMuaXNWYWxpZChkYXRlKSkge1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyaXBwZWRWYWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnICcpLnRyaW0oKTtcblxuICAgIGNvbnN0IG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCB8IHVuZGVmaW5lZCA9IHN0cmlwcGVkVmFsdWU/Lm1hdGNoKEZPUk1BVF9EQVRFKTtcbiAgICBpZiAoXG4gICAgICAhbWF0Y2ggfHxcbiAgICAgIG1hdGNoLmluZGV4ICE9PSAwIHx8XG4gICAgICBtYXRjaC5sZW5ndGggPD0gMiB8fFxuICAgICAgbWF0Y2guc29tZSgoZSkgPT4gZSA9PT0gdW5kZWZpbmVkKSB8fFxuICAgICAgIXRoaXMuaXNWYWxpZCh0aGlzLmNyZWF0ZURhdGUoK21hdGNoWzNdLCArbWF0Y2hbMl0sICttYXRjaFsxXSkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgeWVhciA9ICttYXRjaFszXTtcblxuICAgIGlmICh0eXBlb2YgeWVhciA9PT0gJ251bWJlcicgJiYgeWVhciA8IDEwMCAmJiB5ZWFyID49IDApIHtcbiAgICAgIGNvbnN0IHNoaWZ0ID0gbm93LmdldEZ1bGxZZWFyKCkgLSAyMDAwICsgdGhpcy5fY3V0b2ZmWWVhck9mZnNldDtcbiAgICAgIHllYXIgPSB5ZWFyIDw9IHNoaWZ0ID8gMjAwMCArIHllYXIgOiAxOTAwICsgeWVhcjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgK21hdGNoWzJdIC0gMSwgK21hdGNoWzFdKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpbnZhbGlkKCk6IERhdGUge1xuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gbGVuZ3RoIGFuZCBmaWxscyBpdCBieSBtYXBwaW5nIHdpdGggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB2YWx1ZUZ1bmN0aW9uIFRoZSBmdW5jdGlvbiBvZiBhcnJheSdzIGluZGV4IHVzZWQgdG8gZmlsbCB0aGUgYXJyYXkuXG4gICAqL1xuICBwcml2YXRlIF9yYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoIH0pLm1hcCgoXywgaSkgPT4gdmFsdWVGdW5jdGlvbihpKSk7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhIGRhdGUgYnV0IGFsbG93cyB0aGUgbW9udGggYW5kIGRhdGUgdG8gb3ZlcmZsb3cuICovXG4gIHByaXZhdGUgX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3coeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEYXRlIHtcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSk7XG4gICAgLy8gV2UgbmVlZCB0byBjb3JyZWN0IGZvciB0aGUgZmFjdCB0aGF0IEpTIG5hdGl2ZSBEYXRlIHRyZWF0cyB5ZWFycyBpbiByYW5nZSBbMCwgOTldIGFzXG4gICAgLy8gYWJicmV2aWF0aW9ucyBmb3IgMTl4eC5cbiAgICBpZiAoeWVhciA+PSAwICYmIHllYXIgPCAxMDApIHtcbiAgICAgIHJlc3VsdC5zZXRGdWxsWWVhcih0aGlzLmdldFllYXIocmVzdWx0KSAtIDE5MDApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0RGF0ZUFkYXB0ZXIgPSBuZXcgTmF0aXZlRGF0ZUFkYXB0ZXIoKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTSxlQUF1QjtBQUM3QixNQUFNLGlCQUF5QjtBQUMvQixNQUFNLGdCQUF3QjtBQUM5QixNQUFNLGtCQUEwQjtBQUNoQyxNQUFNLGlCQUF5QjtBQUMvQixNQUFNLGNBQ1g7QUFDSyxNQUFNLHNCQUFzQjtNQU9iLFlBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
@@ -0,0 +1,8 @@
1
+ import { ComplexAttributeConverter } from 'lit';
2
+ /**
3
+ * Converts empty values to null, which will not be rendered as attributes.
4
+ * e.g. for string properties, an empty value '' will not be rendered as an
5
+ * empty attribute, as would be the default with lit.
6
+ */
7
+ export declare const dateConverter: ComplexAttributeConverter;
8
+ //# sourceMappingURL=date-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-converter.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/date-converter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,KAAK,CAAC;AAKrD;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,yBAS3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Converts the given value to a date object or null.
3
+ * Should be used as a type hint for the @property decorator.
4
+ * @param value The value to convert to a date object.
5
+ * @returns A date object or null.
6
+ */
7
+ export declare function DateOnlyType(value: unknown): unknown | null;
8
+ //# sourceMappingURL=date-only-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-only-type.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/date-only-type.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAS3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-override.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/get-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,YACvD,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,cAGjC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,WACjC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3C,GAeJ,CAAC"}
1
+ {"version":3,"file":"get-override.d.ts","sourceRoot":"","sources":["../../../../../src/elements/core/decorators/get-override.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,EACjE,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,MAGzC,QAAQ,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1C,SAAS,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,KAC3C,GAeJ,CAAC"}