@fundamental-ngx/core 0.44.1-rc.3 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (500) hide show
  1. package/action-sheet/action-sheet.module.d.ts +5 -6
  2. package/action-sheet/index.d.ts +0 -1
  3. package/avatar/avatar.component.d.ts +1 -6
  4. package/bar/bar.module.d.ts +4 -6
  5. package/bar/directives/bar-element.directive.d.ts +1 -6
  6. package/bar/index.d.ts +0 -2
  7. package/breadcrumb/breadcrumb.component.d.ts +1 -9
  8. package/breadcrumb/breadcrumb.module.d.ts +12 -13
  9. package/breadcrumb/index.d.ts +0 -1
  10. package/button/button.module.d.ts +4 -5
  11. package/button/index.d.ts +0 -1
  12. package/calendar/calendar.module.d.ts +5 -6
  13. package/calendar/index.d.ts +0 -1
  14. package/card/card.module.d.ts +6 -7
  15. package/card/index.d.ts +0 -1
  16. package/carousel/carousel.component.d.ts +1 -13
  17. package/checkbox/checkbox.module.d.ts +4 -5
  18. package/checkbox/index.d.ts +0 -1
  19. package/combobox/combobox.module.d.ts +12 -13
  20. package/combobox/index.d.ts +0 -1
  21. package/content-density/index.d.ts +0 -4
  22. package/date-picker/date-picker.component.d.ts +1 -62
  23. package/date-picker/date-picker.module.d.ts +12 -13
  24. package/date-picker/index.d.ts +0 -1
  25. package/datetime-picker/datetime-picker.component.d.ts +1 -49
  26. package/datetime-picker/datetime-picker.module.d.ts +14 -15
  27. package/datetime-picker/index.d.ts +0 -1
  28. package/dialog/dialog.module.d.ts +14 -16
  29. package/dialog/index.d.ts +0 -2
  30. package/dialog/utils/dialog-config.class.d.ts +0 -2
  31. package/dynamic-page/dynamic-page.module.d.ts +10 -11
  32. package/dynamic-page/index.d.ts +0 -1
  33. package/esm2022/action-sheet/action-sheet.module.mjs +3 -8
  34. package/esm2022/action-sheet/index.mjs +1 -2
  35. package/esm2022/avatar/avatar.component.mjs +3 -13
  36. package/esm2022/bar/bar.module.mjs +3 -13
  37. package/esm2022/bar/directives/bar-element.directive.mjs +3 -16
  38. package/esm2022/bar/index.mjs +1 -3
  39. package/esm2022/breadcrumb/breadcrumb.component.mjs +5 -19
  40. package/esm2022/breadcrumb/breadcrumb.module.mjs +6 -18
  41. package/esm2022/breadcrumb/index.mjs +1 -2
  42. package/esm2022/button/button.module.mjs +4 -5
  43. package/esm2022/button/index.mjs +1 -2
  44. package/esm2022/calendar/calendar.module.mjs +3 -8
  45. package/esm2022/calendar/index.mjs +1 -2
  46. package/esm2022/card/card.module.mjs +4 -8
  47. package/esm2022/card/index.mjs +1 -2
  48. package/esm2022/carousel/carousel.component.mjs +4 -30
  49. package/esm2022/checkbox/checkbox.module.mjs +4 -5
  50. package/esm2022/checkbox/index.mjs +1 -2
  51. package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +1 -1
  52. package/esm2022/combobox/combobox.component.mjs +1 -1
  53. package/esm2022/combobox/combobox.module.mjs +6 -8
  54. package/esm2022/combobox/index.mjs +1 -2
  55. package/esm2022/content-density/index.mjs +1 -5
  56. package/esm2022/date-picker/date-picker.component.mjs +4 -104
  57. package/esm2022/date-picker/date-picker.module.mjs +5 -6
  58. package/esm2022/date-picker/index.mjs +1 -2
  59. package/esm2022/datetime-picker/datetime-picker.component.mjs +4 -83
  60. package/esm2022/datetime-picker/datetime-picker.module.mjs +5 -6
  61. package/esm2022/datetime-picker/index.mjs +1 -2
  62. package/esm2022/dialog/dialog-default/dialog-default.component.mjs +1 -1
  63. package/esm2022/dialog/dialog-header/dialog-header.component.mjs +1 -1
  64. package/esm2022/dialog/dialog.component.mjs +3 -3
  65. package/esm2022/dialog/dialog.module.mjs +1 -9
  66. package/esm2022/dialog/index.mjs +1 -3
  67. package/esm2022/dialog/utils/dialog-config.class.mjs +1 -1
  68. package/esm2022/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +1 -1
  69. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +1 -1
  70. package/esm2022/dynamic-page/dynamic-page.module.mjs +3 -8
  71. package/esm2022/dynamic-page/index.mjs +1 -2
  72. package/esm2022/facets/facet/facet.component.mjs +1 -1
  73. package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +14 -40
  74. package/esm2022/file-uploader/file-uploader.module.mjs +4 -23
  75. package/esm2022/file-uploader/index.mjs +1 -2
  76. package/esm2022/form/form-control/form-control.module.mjs +4 -23
  77. package/esm2022/form/form-label/form-label.component.mjs +3 -40
  78. package/esm2022/form/form-message/form-message.component.mjs +1 -1
  79. package/esm2022/form/form-message/popover-form-message.service.mjs +1 -1
  80. package/esm2022/form/index.mjs +1 -2
  81. package/esm2022/fundamental-ngx.module.mjs +1 -5
  82. package/esm2022/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +1 -1
  83. package/esm2022/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +1 -1
  84. package/esm2022/index.mjs +1 -2
  85. package/esm2022/inline-help/inline-help.directive.mjs +3 -18
  86. package/esm2022/input-group/index.mjs +1 -2
  87. package/esm2022/input-group/input-group.component.mjs +6 -28
  88. package/esm2022/input-group/input-group.module.mjs +1 -6
  89. package/esm2022/link/link.component.mjs +5 -8
  90. package/esm2022/list/index.mjs +1 -2
  91. package/esm2022/list/list-item/list-item.component.mjs +3 -46
  92. package/esm2022/list/list-message.directive.mjs +1 -1
  93. package/esm2022/list/list.module.mjs +3 -8
  94. package/esm2022/menu/index.mjs +1 -2
  95. package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +1 -1
  96. package/esm2022/menu/menu.module.mjs +3 -8
  97. package/esm2022/message-box/index.mjs +1 -3
  98. package/esm2022/message-box/message-box-default/message-box-default.component.mjs +1 -1
  99. package/esm2022/message-box/message-box-header/message-box-header.component.mjs +1 -1
  100. package/esm2022/message-box/message-box.module.mjs +3 -11
  101. package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +3 -3
  102. package/esm2022/message-strip/alert/message-strip-alert.service.mjs +8 -2
  103. package/esm2022/message-strip/message-strip.component.mjs +3 -16
  104. package/esm2022/micro-process-flow/index.mjs +1 -2
  105. package/esm2022/micro-process-flow/micro-process-flow.module.mjs +5 -10
  106. package/esm2022/multi-combobox/mobile/mobile-multi-combobox.component.mjs +1 -1
  107. package/esm2022/multi-combobox/multi-combobox.component.mjs +1 -1
  108. package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +1 -1
  109. package/esm2022/multi-input/index.mjs +1 -2
  110. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  111. package/esm2022/multi-input/multi-input.component.mjs +1 -1
  112. package/esm2022/multi-input/multi-input.module.mjs +6 -8
  113. package/esm2022/nested-list/index.mjs +1 -2
  114. package/esm2022/nested-list/nested-list.module.mjs +3 -8
  115. package/esm2022/object-number/object-number.component.mjs +3 -3
  116. package/esm2022/overflow-layout/overflow-layout.component.mjs +3 -3
  117. package/esm2022/pagination/index.mjs +1 -2
  118. package/esm2022/pagination/pagination.component.mjs +8 -186
  119. package/esm2022/pagination/pagination.module.mjs +6 -7
  120. package/esm2022/panel/index.mjs +1 -2
  121. package/esm2022/panel/panel.module.mjs +4 -15
  122. package/esm2022/popover/base/base-popover.class.mjs +2 -33
  123. package/esm2022/popover/popover.component.mjs +1 -19
  124. package/esm2022/product-switch/product-switch/product-switch.component.mjs +4 -17
  125. package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
  126. package/esm2022/product-switch/product-switch-body/product-switch.item.mjs +1 -1
  127. package/esm2022/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +1 -1
  128. package/esm2022/quick-view/quick-view-title/quick-view-title.component.mjs +1 -1
  129. package/esm2022/radio/index.mjs +1 -2
  130. package/esm2022/radio/radio.module.mjs +4 -5
  131. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +3 -3
  132. package/esm2022/select/index.mjs +1 -2
  133. package/esm2022/select/select.component.mjs +1 -1
  134. package/esm2022/select/select.module.mjs +5 -6
  135. package/esm2022/shellbar/index.mjs +1 -2
  136. package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -17
  137. package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +3 -5
  138. package/esm2022/shellbar/shellbar.module.mjs +3 -8
  139. package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +1 -1
  140. package/esm2022/slider/index.mjs +1 -2
  141. package/esm2022/slider/slider.component.mjs +3 -49
  142. package/esm2022/slider/slider.module.mjs +4 -5
  143. package/esm2022/split-button/index.mjs +1 -2
  144. package/esm2022/split-button/split-button.component.mjs +3 -27
  145. package/esm2022/split-button/split-button.module.mjs +4 -5
  146. package/esm2022/splitter/splitter-pagination/splitter-pagination.component.mjs +3 -10
  147. package/esm2022/splitter/splitter.component.mjs +2 -16
  148. package/esm2022/step-input/index.mjs +1 -2
  149. package/esm2022/step-input/step-input.component.mjs +5 -31
  150. package/esm2022/step-input/step-input.module.mjs +5 -6
  151. package/esm2022/switch/index.mjs +1 -2
  152. package/esm2022/switch/switch.component.mjs +5 -43
  153. package/esm2022/switch/switch.module.mjs +4 -5
  154. package/esm2022/table/index.mjs +1 -3
  155. package/esm2022/table/table.module.mjs +3 -13
  156. package/esm2022/tabs/index.mjs +1 -2
  157. package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +8 -22
  158. package/esm2022/tabs/tab-list.component.mjs +5 -18
  159. package/esm2022/tabs/tabs.module.mjs +3 -8
  160. package/esm2022/text/text.component.mjs +3 -29
  161. package/esm2022/time/index.mjs +1 -3
  162. package/esm2022/time/time.component.mjs +8 -65
  163. package/esm2022/time/time.module.mjs +5 -6
  164. package/esm2022/time-picker/index.mjs +1 -2
  165. package/esm2022/time-picker/time-picker.component.mjs +1 -1
  166. package/esm2022/time-picker/time-picker.module.mjs +6 -22
  167. package/esm2022/timeline/components/timeline-node-body/timeline-node-body.component.mjs +1 -1
  168. package/esm2022/timeline/timeline.component.mjs +1 -1
  169. package/esm2022/token/index.mjs +1 -2
  170. package/esm2022/token/token.component.mjs +4 -30
  171. package/esm2022/token/token.module.mjs +5 -24
  172. package/esm2022/token/tokenizer.component.mjs +3 -3
  173. package/esm2022/toolbar/toolbar.component.mjs +8 -24
  174. package/esm2022/tree/tree.component.mjs +1 -1
  175. package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +9 -87
  176. package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +9 -21
  177. package/esm2022/upload-collection/upload-collection-item.directive.mjs +4 -3
  178. package/esm2022/upload-collection/upload-collection-simple.directives.mjs +22 -15
  179. package/esm2022/upload-collection/upload-collection.component.mjs +5 -4
  180. package/esm2022/upload-collection/upload-collection.module.mjs +7 -13
  181. package/esm2022/wizard/index.mjs +1 -2
  182. package/esm2022/wizard/wizard.module.mjs +3 -8
  183. package/feed-list-item/components/item/feed-list-item.component.d.ts +9 -25
  184. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +5 -36
  185. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  186. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -12
  187. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  188. package/fesm2022/fundamental-ngx-core-bar.mjs +7 -81
  189. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  190. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +11 -63
  191. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  192. package/fesm2022/fundamental-ngx-core-button.mjs +6 -33
  193. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  194. package/fesm2022/fundamental-ngx-core-calendar.mjs +4 -35
  195. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  196. package/fesm2022/fundamental-ngx-core-card.mjs +6 -36
  197. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  198. package/fesm2022/fundamental-ngx-core-carousel.mjs +3 -29
  199. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  200. package/fesm2022/fundamental-ngx-core-checkbox.mjs +6 -33
  201. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  202. package/fesm2022/fundamental-ngx-core-combobox.mjs +9 -37
  203. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  204. package/fesm2022/fundamental-ngx-core-content-density.mjs +1 -148
  205. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  206. package/fesm2022/fundamental-ngx-core-date-picker.mjs +10 -137
  207. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  208. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +10 -116
  209. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  210. package/fesm2022/fundamental-ngx-core-dialog.mjs +6 -57
  211. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  212. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +7 -38
  213. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  214. package/fesm2022/fundamental-ngx-core-facets.mjs +1 -1
  215. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  216. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +13 -39
  217. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  218. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +5 -50
  219. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  220. package/fesm2022/fundamental-ngx-core-form.mjs +7 -88
  221. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  222. package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
  223. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  224. package/fesm2022/fundamental-ngx-core-inline-help.mjs +2 -17
  225. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  226. package/fesm2022/fundamental-ngx-core-input-group.mjs +8 -60
  227. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  228. package/fesm2022/fundamental-ngx-core-link.mjs +4 -7
  229. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  230. package/fesm2022/fundamental-ngx-core-list.mjs +6 -80
  231. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  232. package/fesm2022/fundamental-ngx-core-menu.mjs +7 -38
  233. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  234. package/fesm2022/fundamental-ngx-core-message-box.mjs +7 -59
  235. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  236. package/fesm2022/fundamental-ngx-core-message-strip.mjs +11 -19
  237. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  238. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +7 -38
  239. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  240. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +3 -3
  241. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  242. package/fesm2022/fundamental-ngx-core-multi-input.mjs +9 -36
  243. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  244. package/fesm2022/fundamental-ngx-core-nested-list.mjs +4 -34
  245. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  246. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  247. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  248. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  249. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  250. package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -219
  251. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  252. package/fesm2022/fundamental-ngx-core-panel.mjs +6 -43
  253. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  254. package/fesm2022/fundamental-ngx-core-popover.mjs +2 -50
  255. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  256. package/fesm2022/fundamental-ngx-core-product-switch.mjs +6 -18
  257. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  258. package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
  259. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  260. package/fesm2022/fundamental-ngx-core-radio.mjs +6 -33
  261. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  262. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
  263. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  264. package/fesm2022/fundamental-ngx-core-select.mjs +7 -34
  265. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  266. package/fesm2022/fundamental-ngx-core-shellbar.mjs +11 -57
  267. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  268. package/fesm2022/fundamental-ngx-core-slider.mjs +8 -70
  269. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  270. package/fesm2022/fundamental-ngx-core-split-button.mjs +8 -59
  271. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  272. package/fesm2022/fundamental-ngx-core-splitter.mjs +4 -24
  273. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  274. package/fesm2022/fundamental-ngx-core-step-input.mjs +11 -64
  275. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  276. package/fesm2022/fundamental-ngx-core-switch.mjs +9 -74
  277. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  278. package/fesm2022/fundamental-ngx-core-table.mjs +5 -65
  279. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  280. package/fesm2022/fundamental-ngx-core-tabs.mjs +14 -69
  281. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  282. package/fesm2022/fundamental-ngx-core-text.mjs +2 -28
  283. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  284. package/fesm2022/fundamental-ngx-core-time-picker.mjs +9 -51
  285. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  286. package/fesm2022/fundamental-ngx-core-time.mjs +12 -143
  287. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  288. package/fesm2022/fundamental-ngx-core-timeline.mjs +2 -2
  289. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  290. package/fesm2022/fundamental-ngx-core-token.mjs +11 -82
  291. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  292. package/fesm2022/fundamental-ngx-core-toolbar.mjs +6 -22
  293. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  294. package/fesm2022/fundamental-ngx-core-tree.mjs +1 -1
  295. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  296. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +46 -131
  297. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  298. package/fesm2022/fundamental-ngx-core-wizard.mjs +5 -36
  299. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  300. package/fesm2022/fundamental-ngx-core.mjs +0 -5
  301. package/fesm2022/fundamental-ngx-core.mjs.map +1 -1
  302. package/file-uploader/file-uploader.module.d.ts +6 -7
  303. package/file-uploader/index.d.ts +0 -1
  304. package/form/form-control/form-control.module.d.ts +3 -4
  305. package/form/form-label/form-label.component.d.ts +1 -16
  306. package/form/form-message/form-message.component.d.ts +0 -2
  307. package/form/form-message/popover-form-message.service.d.ts +2 -2
  308. package/form/index.d.ts +0 -1
  309. package/fundamental-ngx-core-v0.45.0.tgz +0 -0
  310. package/fundamental-ngx.module.d.ts +89 -90
  311. package/index.d.ts +0 -1
  312. package/inline-help/inline-help.directive.d.ts +1 -7
  313. package/input-group/index.d.ts +0 -1
  314. package/input-group/input-group.component.d.ts +6 -13
  315. package/input-group/input-group.module.d.ts +6 -7
  316. package/link/link.component.d.ts +1 -1
  317. package/list/index.d.ts +0 -1
  318. package/list/list-item/list-item.component.d.ts +1 -25
  319. package/list/list-message.directive.d.ts +2 -2
  320. package/list/list.module.d.ts +5 -6
  321. package/menu/index.d.ts +0 -1
  322. package/menu/menu.module.d.ts +6 -7
  323. package/message-box/index.d.ts +0 -2
  324. package/message-box/message-box.module.d.ts +15 -17
  325. package/message-strip/message-strip.component.d.ts +1 -9
  326. package/micro-process-flow/index.d.ts +0 -1
  327. package/micro-process-flow/micro-process-flow.module.d.ts +4 -5
  328. package/multi-input/index.d.ts +0 -1
  329. package/multi-input/multi-input.module.d.ts +12 -13
  330. package/nested-list/index.d.ts +0 -1
  331. package/nested-list/nested-list.module.d.ts +6 -7
  332. package/package.json +3 -9
  333. package/pagination/index.d.ts +0 -1
  334. package/pagination/pagination.component.d.ts +2 -111
  335. package/pagination/pagination.module.d.ts +10 -11
  336. package/panel/index.d.ts +0 -1
  337. package/panel/panel.module.d.ts +4 -5
  338. package/popover/base/base-popover.class.d.ts +1 -16
  339. package/popover/popover.component.d.ts +0 -11
  340. package/product-switch/product-switch/product-switch.component.d.ts +1 -8
  341. package/product-switch/product-switch-body/product-switch.item.d.ts +0 -4
  342. package/radio/index.d.ts +0 -1
  343. package/radio/radio.module.d.ts +4 -5
  344. package/schematics/add-dependencies/index.js +4 -4
  345. package/select/index.d.ts +0 -1
  346. package/select/select.component.d.ts +0 -2
  347. package/select/select.module.d.ts +9 -10
  348. package/shellbar/index.d.ts +0 -1
  349. package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +1 -9
  350. package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +3 -5
  351. package/shellbar/shellbar.module.d.ts +14 -15
  352. package/slider/index.d.ts +0 -1
  353. package/slider/slider.component.d.ts +1 -31
  354. package/slider/slider.module.d.ts +7 -8
  355. package/split-button/index.d.ts +0 -1
  356. package/split-button/split-button.component.d.ts +3 -12
  357. package/split-button/split-button.module.d.ts +6 -7
  358. package/splitter/splitter-pagination/splitter-pagination.component.d.ts +0 -5
  359. package/splitter/splitter.component.d.ts +1 -9
  360. package/step-input/index.d.ts +0 -1
  361. package/step-input/step-input.component.d.ts +1 -17
  362. package/step-input/step-input.module.d.ts +7 -8
  363. package/switch/index.d.ts +0 -1
  364. package/switch/switch.component.d.ts +1 -19
  365. package/switch/switch.module.d.ts +5 -6
  366. package/table/index.d.ts +0 -2
  367. package/table/table.module.d.ts +4 -6
  368. package/tabs/index.d.ts +0 -1
  369. package/tabs/tab-item-expand/tab-item-expand.component.d.ts +1 -8
  370. package/tabs/tab-list.component.d.ts +1 -9
  371. package/tabs/tabs.module.d.ts +12 -13
  372. package/text/text.component.d.ts +1 -17
  373. package/time/index.d.ts +0 -2
  374. package/time/time.component.d.ts +2 -15
  375. package/time/time.module.d.ts +9 -10
  376. package/time-picker/index.d.ts +0 -1
  377. package/time-picker/time-picker.module.d.ts +9 -10
  378. package/token/index.d.ts +0 -1
  379. package/token/token.component.d.ts +1 -17
  380. package/token/token.module.d.ts +8 -9
  381. package/toolbar/toolbar.component.d.ts +4 -12
  382. package/upload-collection/upload-collection-button-group/upload-collection-button-group.component.d.ts +2 -50
  383. package/upload-collection/upload-collection-form-item/upload-collection-form-item.component.d.ts +1 -9
  384. package/upload-collection/upload-collection-item.directive.d.ts +1 -1
  385. package/upload-collection/upload-collection-simple.directives.d.ts +7 -7
  386. package/upload-collection/upload-collection.component.d.ts +1 -1
  387. package/upload-collection/upload-collection.module.d.ts +1 -8
  388. package/wizard/index.d.ts +0 -1
  389. package/wizard/wizard.module.d.ts +8 -9
  390. package/action-sheet/deprecated-action-sheet-compact.directive.d.ts +0 -8
  391. package/alert/README.md +0 -25
  392. package/alert/alert-service/alert.service.d.ts +0 -41
  393. package/alert/alert-utils/alert-animations.d.ts +0 -8
  394. package/alert/alert-utils/alert-config.d.ts +0 -34
  395. package/alert/alert-utils/alert-container.component.d.ts +0 -14
  396. package/alert/alert-utils/alert-ref.d.ts +0 -26
  397. package/alert/alert.component.d.ts +0 -87
  398. package/alert/alert.module.d.ts +0 -18
  399. package/alert/index.d.ts +0 -7
  400. package/bar/deprecated-bar-button-content-density.directive.d.ts +0 -8
  401. package/bar/deprecated-bar-content-density.directive.d.ts +0 -8
  402. package/breadcrumb/deprecated-breadcrumbs-compact.directive.d.ts +0 -8
  403. package/button/deprecated-button-content-density.directive.d.ts +0 -8
  404. package/calendar/deprecated-calendar-content-density.directive.d.ts +0 -8
  405. package/card/deprecated-card-content-density.directive.d.ts +0 -8
  406. package/checkbox/deprecated-checkbox-content-density.directive.d.ts +0 -8
  407. package/combobox/deprecated-combobox-content-density.directive.d.ts +0 -10
  408. package/content-density/classes/deprecated-compact.directive.d.ts +0 -26
  409. package/content-density/classes/deprecated-condensed.directive.d.ts +0 -26
  410. package/content-density/classes/deprecated-content-density.directive.d.ts +0 -26
  411. package/content-density/classes/deprecated-cozy.directive.d.ts +0 -26
  412. package/date-picker/deprecated-date-picker-compact.directive.d.ts +0 -8
  413. package/datetime-picker/deprecated-date-time-picker-content-density.directive.d.ts +0 -8
  414. package/dialog/dialog-footer-button/dialog-footer-button.component.d.ts +0 -12
  415. package/dialog/directives/dialog-decisive-button.directive.d.ts +0 -11
  416. package/dynamic-page/deprecated-dynamic-page-compact.directive.d.ts +0 -8
  417. package/esm2022/action-sheet/deprecated-action-sheet-compact.directive.mjs +0 -30
  418. package/esm2022/alert/alert-service/alert.service.mjs +0 -85
  419. package/esm2022/alert/alert-utils/alert-animations.mjs +0 -38
  420. package/esm2022/alert/alert-utils/alert-config.mjs +0 -27
  421. package/esm2022/alert/alert-utils/alert-container.component.mjs +0 -29
  422. package/esm2022/alert/alert-utils/alert-ref.mjs +0 -29
  423. package/esm2022/alert/alert.component.mjs +0 -212
  424. package/esm2022/alert/alert.module.mjs +0 -33
  425. package/esm2022/alert/fundamental-ngx-core-alert.mjs +0 -5
  426. package/esm2022/alert/index.mjs +0 -8
  427. package/esm2022/bar/deprecated-bar-button-content-density.directive.mjs +0 -30
  428. package/esm2022/bar/deprecated-bar-content-density.directive.mjs +0 -29
  429. package/esm2022/breadcrumb/deprecated-breadcrumbs-compact.directive.mjs +0 -30
  430. package/esm2022/button/deprecated-button-content-density.directive.mjs +0 -30
  431. package/esm2022/calendar/deprecated-calendar-content-density.directive.mjs +0 -30
  432. package/esm2022/card/deprecated-card-content-density.directive.mjs +0 -30
  433. package/esm2022/checkbox/deprecated-checkbox-content-density.directive.mjs +0 -30
  434. package/esm2022/combobox/deprecated-combobox-content-density.directive.mjs +0 -31
  435. package/esm2022/content-density/classes/deprecated-compact.directive.mjs +0 -39
  436. package/esm2022/content-density/classes/deprecated-condensed.directive.mjs +0 -39
  437. package/esm2022/content-density/classes/deprecated-content-density.directive.mjs +0 -49
  438. package/esm2022/content-density/classes/deprecated-cozy.directive.mjs +0 -39
  439. package/esm2022/date-picker/deprecated-date-picker-compact.directive.mjs +0 -30
  440. package/esm2022/datetime-picker/deprecated-date-time-picker-content-density.directive.mjs +0 -30
  441. package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +0 -25
  442. package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +0 -26
  443. package/esm2022/dynamic-page/deprecated-dynamic-page-compact.directive.mjs +0 -30
  444. package/esm2022/file-uploader/deprecated-file-uploader-content-density.directive.mjs +0 -30
  445. package/esm2022/form/form-control/deprecated-form-control-content-density.directive.mjs +0 -29
  446. package/esm2022/input-group/deprecated-input-group-compact.directive.mjs +0 -30
  447. package/esm2022/list/deprecated-list-content-density,directive.mjs +0 -30
  448. package/esm2022/menu/directives/deprecated-menu-compact.directive.mjs +0 -30
  449. package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +0 -27
  450. package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +0 -25
  451. package/esm2022/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.mjs +0 -30
  452. package/esm2022/multi-input/deprecated-multi-input-compact.directive.mjs +0 -30
  453. package/esm2022/nested-list/deprecated-nested-list-compact.directive.mjs +0 -29
  454. package/esm2022/pagination/deprecated-pagination-compact.directive.mjs +0 -30
  455. package/esm2022/panel/deprecated-panel-compact.directive.mjs +0 -30
  456. package/esm2022/radio/deprecated-radio-button-compact.directive.mjs +0 -30
  457. package/esm2022/select/deprecated-select-compact.directive.mjs +0 -30
  458. package/esm2022/shellbar/deprecated-shellbar-compact.directive.mjs +0 -30
  459. package/esm2022/slider/deprecated-slider-cozy.directive.mjs +0 -20
  460. package/esm2022/split-button/deprecated-split-button-compact.directive.mjs +0 -30
  461. package/esm2022/step-input/deprecated-step-input-compact.directive.mjs +0 -30
  462. package/esm2022/switch/deprecated-switch-compact.directive.mjs +0 -30
  463. package/esm2022/table/deprecated-table-compact.directive.mjs +0 -29
  464. package/esm2022/table/deprecated-table-condensed.directive.mjs +0 -29
  465. package/esm2022/tabs/deprecated-tabs-compact.directive.mjs +0 -29
  466. package/esm2022/time/deprecated-time-content-density.directive.mjs +0 -30
  467. package/esm2022/time/i18n/time-i18n.mjs +0 -52
  468. package/esm2022/time-picker/deprecated-timepicker-compact.directive.mjs +0 -30
  469. package/esm2022/token/deprecated-tokenizer-content-density.directive.mjs +0 -30
  470. package/esm2022/wizard/deprecated-wizard-compact.directive.mjs +0 -30
  471. package/fesm2022/fundamental-ngx-core-alert.mjs +0 -437
  472. package/fesm2022/fundamental-ngx-core-alert.mjs.map +0 -1
  473. package/file-uploader/deprecated-file-uploader-content-density.directive.d.ts +0 -8
  474. package/form/form-control/deprecated-form-control-content-density.directive.d.ts +0 -8
  475. package/fundamental-ngx-core-v0.44.1-rc.3.tgz +0 -0
  476. package/input-group/deprecated-input-group-compact.directive.d.ts +0 -8
  477. package/list/deprecated-list-content-density,directive.d.ts +0 -8
  478. package/menu/directives/deprecated-menu-compact.directive.d.ts +0 -8
  479. package/message-box/directives/message-box-decisive-button.directive.d.ts +0 -11
  480. package/message-box/message-box-footer-button/message-box-footer-button.component.d.ts +0 -12
  481. package/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.d.ts +0 -8
  482. package/multi-input/deprecated-multi-input-compact.directive.d.ts +0 -8
  483. package/nested-list/deprecated-nested-list-compact.directive.d.ts +0 -8
  484. package/pagination/deprecated-pagination-compact.directive.d.ts +0 -8
  485. package/panel/deprecated-panel-compact.directive.d.ts +0 -8
  486. package/radio/deprecated-radio-button-compact.directive.d.ts +0 -8
  487. package/select/deprecated-select-compact.directive.d.ts +0 -8
  488. package/shellbar/deprecated-shellbar-compact.directive.d.ts +0 -8
  489. package/slider/deprecated-slider-cozy.directive.d.ts +0 -8
  490. package/split-button/deprecated-split-button-compact.directive.d.ts +0 -8
  491. package/step-input/deprecated-step-input-compact.directive.d.ts +0 -8
  492. package/switch/deprecated-switch-compact.directive.d.ts +0 -8
  493. package/table/deprecated-table-compact.directive.d.ts +0 -8
  494. package/table/deprecated-table-condensed.directive.d.ts +0 -8
  495. package/tabs/deprecated-tabs-compact.directive.d.ts +0 -8
  496. package/time/deprecated-time-content-density.directive.d.ts +0 -8
  497. package/time/i18n/time-i18n.d.ts +0 -42
  498. package/time-picker/deprecated-timepicker-compact.directive.d.ts +0 -8
  499. package/token/deprecated-tokenizer-content-density.directive.d.ts +0 -8
  500. package/wizard/deprecated-wizard-compact.directive.d.ts +0 -8
@@ -8,7 +8,6 @@ import { LiveAnnouncer } from '@angular/cdk/a11y';
8
8
  import { BehaviorSubject, combineLatest, fromEvent, of, Subject } from 'rxjs';
9
9
  import { debounceTime, distinctUntilChanged, map, mapTo, skip, startWith, switchMap, take, takeUntil } from 'rxjs/operators';
10
10
  import { PopoverComponent } from '@fundamental-ngx/core/popover';
11
- import { warnOnce } from '@fundamental-ngx/cdk/utils';
12
11
  import { SliderRangeHandles, SliderValueTargets } from './slider.model';
13
12
  import { MIN_DISTANCE_BETWEEN_TICKS } from './constants';
14
13
  import { applyCssClass, KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';
@@ -78,45 +77,6 @@ export class SliderComponent {
78
77
  get tickmarksBetweenLabels() {
79
78
  return this._tickmarksBetweenLabels;
80
79
  }
81
- /**
82
- * slider current value verbose string.
83
- * This will be read only once by screen reader and upon slider value change,
84
- * this string will not be read.
85
- * @deprecated no longer used, use i18n capabilities instead
86
- */
87
- set singleSliderCurrentValuePrefix(value) {
88
- warnOnce('Property singleSliderCurrentValuePrefix is deprecated. Use i18n capabilities instead.');
89
- this._singleSliderCurrentValuePrefix = value;
90
- }
91
- get singleSliderCurrentValuePrefix() {
92
- return this._singleSliderCurrentValuePrefix;
93
- }
94
- /**
95
- * @hidden range slider handle 1 current value supporting string
96
- * This will be read only once by screen reader and upon slider value change,
97
- * this string will not be read.
98
- * * @deprecated no longer used, use i18n capabilities instead
99
- */
100
- set rangeSliderHandle1CurrentValuePrefix(value) {
101
- warnOnce('Property rangeSliderHandle1CurrentValuePrefix is deprecated. Use i18n capabilities instead.');
102
- this._rangeSliderHandle1CurrentValuePrefix = value;
103
- }
104
- get rangeSliderHandle1CurrentValuePrefix() {
105
- return this._rangeSliderHandle1CurrentValuePrefix;
106
- }
107
- /**
108
- * @hidden range slider handle 2 current value supporting string
109
- * This will be read only once by screen reader and upon slider value change,
110
- * this string will not be read.
111
- * * @deprecated no longer used, use i18n capabilities instead
112
- */
113
- set rangeSliderHandle2CurrentValuePrefix(value) {
114
- warnOnce('Property rangeSliderHandle2CurrentValuePrefix is deprecated. Use i18n capabilities instead.');
115
- this._rangeSliderHandle2CurrentValuePrefix = value;
116
- }
117
- get rangeSliderHandle2CurrentValuePrefix() {
118
- return this._rangeSliderHandle2CurrentValuePrefix;
119
- }
120
80
  /** Control value */
121
81
  set value(value) {
122
82
  this._setValue(value);
@@ -735,7 +695,7 @@ export class SliderComponent {
735
695
  return of(false);
736
696
  }
737
697
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: SliderComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.Platform }, { token: i2.LiveAnnouncer }, { token: i3.RtlService, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
738
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SliderComponent, selector: "fd-slider", inputs: { id: "id", class: "class", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", min: "min", max: "max", step: "step", jump: "jump", tickmarksBetweenLabels: "tickmarksBetweenLabels", mode: "mode", showTicks: "showTicks", showTicksLabels: "showTicksLabels", customValues: "customValues", tooltipMode: "tooltipMode", hideProgressBar: "hideProgressBar", disabled: "disabled", singleSliderCurrentValuePrefix: "singleSliderCurrentValuePrefix", rangeSliderHandle1CurrentValuePrefix: "rangeSliderHandle1CurrentValuePrefix", rangeSliderHandle2CurrentValuePrefix: "rangeSliderHandle2CurrentValuePrefix", value: "value" }, host: { listeners: { "mouseenter": "this._componentHovered$.next(true)", "mouseleave": "this._componentHovered$.next(false)", "focusout": "onTouched()" }, properties: { "attr.id": "this.id", "class.fd-slider--range": "this._isRange" } }, providers: [
698
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: SliderComponent, selector: "fd-slider", inputs: { id: "id", class: "class", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", min: "min", max: "max", step: "step", jump: "jump", tickmarksBetweenLabels: "tickmarksBetweenLabels", mode: "mode", showTicks: "showTicks", showTicksLabels: "showTicksLabels", customValues: "customValues", tooltipMode: "tooltipMode", hideProgressBar: "hideProgressBar", disabled: "disabled", value: "value" }, host: { listeners: { "mouseenter": "this._componentHovered$.next(true)", "mouseleave": "this._componentHovered$.next(false)", "focusout": "onTouched()" }, properties: { "attr.id": "this.id", "class.fd-slider--range": "this._isRange" } }, providers: [
739
699
  SLIDER_VALUE_ACCESSOR,
740
700
  registerFormItemControl(SliderComponent),
741
701
  contentDensityObserverProviders({
@@ -744,7 +704,7 @@ export class SliderComponent {
744
704
  [ContentDensityMode.COZY]: 'fd-slider--lg'
745
705
  }
746
706
  })
747
- ], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider__inner:after,.fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);-webkit-box-shadow:var(--fdSlider_Handle_Box_Shadow);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-shadow:var(--fdSlider_Handle_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);outline:.0625rem var(--sapContent_FocusStyle) var(--fdSlider_Focus_Handle_Outline_Color);outline-offset:.0625rem;z-index:5}.fd-slider__handle.is-hover,.fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color);box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow)}.fd-slider__handle.is-active,.fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);box-shadow:var(--fdSlider_Active_Handle_Box_Shadow)}.fd-slider__handle--lg{height:var(--fdSlider_Mobile_Handle_Height);width:var(--fdSlider_Mobile_Handle_Width)}.fd-slider__handle--lg:before{height:var(--fdSlider_Mobile_Handle_Active_Size);width:var(--fdSlider_Mobile_Handle_Active_Size)}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before,.fd-slider--range .fd-slider__inner[dir=rtl]:after,.fd-slider--range .fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider--range .fd-slider__inner:after,[dir=rtl] .fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{-webkit-box-shadow:var(--fdSlider_Range_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border);box-shadow:var(--fdSlider_Range_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:none}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{-webkit-box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:none}/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:2.25rem;min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:1.625rem;margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:1.625rem;min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i6.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits], [fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i8.SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
707
+ ], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n >\n {{ tick.label }}\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate : { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate : { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate : { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate : { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate : { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\" class=\"fd-slider--tooltip\">\n {{ customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target] }}\n </div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fdkOnlyDigits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider__inner:after,.fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);-webkit-box-shadow:var(--fdSlider_Handle_Box_Shadow);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-shadow:var(--fdSlider_Handle_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);outline:.0625rem var(--sapContent_FocusStyle) var(--fdSlider_Focus_Handle_Outline_Color);outline-offset:.0625rem;z-index:5}.fd-slider__handle.is-hover,.fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color);box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow)}.fd-slider__handle.is-active,.fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);box-shadow:var(--fdSlider_Active_Handle_Box_Shadow)}.fd-slider__handle--lg{height:var(--fdSlider_Mobile_Handle_Height);width:var(--fdSlider_Mobile_Handle_Width)}.fd-slider__handle--lg:before{height:var(--fdSlider_Mobile_Handle_Active_Size);width:var(--fdSlider_Mobile_Handle_Active_Size)}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before,.fd-slider--range .fd-slider__inner[dir=rtl]:after,.fd-slider--range .fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider--range .fd-slider__inner:after,[dir=rtl] .fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{-webkit-box-shadow:var(--fdSlider_Range_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border);box-shadow:var(--fdSlider_Range_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:none}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{-webkit-box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:none}/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle, var(--sapField_BackgroundStyle));background-color:var(--sapField_Background, var(--sapField_Background));border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdInput_Field_Margin, .25rem 0);min-height:2.25rem;min-width:var(2.75rem, 2.75rem);outline:none;overflow:hidden;padding:0;padding:var(--fdInput_Field_Padding, 0 .625rem);text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle, var(--sapField_Hover_BackgroundStyle));background-color:var(--sapField_Hover_Background, var(--sapField_Hover_Background));border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background, var(--sapField_Focus_Background));box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input[class*=-compact],.fd-input[class*=-condensed],[class*=-compact] .fd-input:not([class*=-cozy]),[class*=-condensed] .fd-input:not([class*=-cozy]){box-sizing:border-box;height:1.625rem;margin:var(--fdInput_Field_Compact_Margin, .1875rem 0);min-height:1.625rem;min-width:var(--fdInput_Field_Compact_Min_Width, 2rem);padding:var(--fdInput_Field_Compact_Padding, 0 .5rem)}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius)}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{-webkit-box-shadow:none;background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i6.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i8.SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
748
708
  }
749
709
  __decorate([
750
710
  applyCssClass,
@@ -805,12 +765,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
805
765
  type: Input
806
766
  }], disabled: [{
807
767
  type: Input
808
- }], singleSliderCurrentValuePrefix: [{
809
- type: Input
810
- }], rangeSliderHandle1CurrentValuePrefix: [{
811
- type: Input
812
- }], rangeSliderHandle2CurrentValuePrefix: [{
813
- type: Input
814
768
  }], value: [{
815
769
  type: Input
816
770
  }], trackEl: [{
@@ -843,4 +797,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
843
797
  type: HostBinding,
844
798
  args: ['class.fd-slider--range']
845
799
  }], buildComponentCssClass: [] } });
846
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwr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SztnQkFVRiw4QkFBOEI7c0JBRGpDLEtBQUs7Z0JBa0JGLG9DQUFvQztzQkFEdkMsS0FBSztnQkFrQkYsb0NBQW9DO3NCQUR2QyxLQUFLO2dCQWdCRixLQUFLO3NCQURSLEtBQUs7Z0JBaUJOLE9BQU87c0JBSE4sU0FBUzt1QkFBQyxPQUFPLEVBQUU7d0JBQ2hCLElBQUksRUFBRSxVQUFVO3FCQUNuQjtnQkFPRCxNQUFNO3NCQUhMLFNBQVM7dUJBQUMsUUFBUSxFQUFFO3dCQUNqQixJQUFJLEVBQUUsVUFBVTtxQkFDbkI7Z0JBT0QsWUFBWTtzQkFIWCxTQUFTO3VCQUFDLGNBQWMsRUFBRTt3QkFDdkIsSUFBSSxFQUFFLFVBQVU7cUJBQ25CO2dCQU9ELFlBQVk7c0JBSFgsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3ZCLElBQUksRUFBRSxVQUFVO3FCQUNuQjtnQkFLRCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsZ0JBQWdCO2dCQUs5QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsc0JBQXNCO2dCQVdwQyxRQUFRO3NCQURQLFdBQVc7dUJBQUMsd0JBQXdCO2dCQXdKckMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1hcFRvLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3BvcG92ZXInO1xuaW1wb3J0IHsgTnVsbGFibGUsIHdhcm5PbmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBTbGlkZXJDb250cm9sVmFsdWUsXG4gICAgU2xpZGVyQ3VzdG9tVmFsdWUsXG4gICAgU2xpZGVyUmFuZ2VIYW5kbGVzLFxuICAgIFNsaWRlclRpY2tNYXJrLFxuICAgIFNsaWRlclZhbHVlVGFyZ2V0c1xufSBmcm9tICcuL3NsaWRlci5tb2RlbCc7XG5pbXBvcnQgeyBNSU5fRElTVEFOQ0VfQkVUV0VFTl9USUNLUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciwgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1JdGVtQ29udHJvbCwgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5cbmV4cG9ydCBjb25zdCBTTElERVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbmxldCBzbGlkZXJJZCA9IDA7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNsaWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgU0xJREVSX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAnZmQtc2xpZGVyLS1sZydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICd0aGlzLl9jb21wb25lbnRIb3ZlcmVkJC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICd0aGlzLl9jb21wb25lbnRIb3ZlcmVkJC5uZXh0KGZhbHNlKScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ29uVG91Y2hlZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ3NzQ2xhc3NCdWlsZGVyLCBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogU2xpZGVyIGlkLCBpdCBoYXMgc29tZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCBzZXQsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBpZCA9ICdmZC1zbGlkZXItaWQtJyArIHNsaWRlcklkKys7XG5cbiAgICAvKiogVXNlcidzIGN1c3RvbSBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBzbGlkZXIuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogTWluaW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9taW4pO1xuICAgICAgICBpZiAoKCh0aGlzLm1heCAtIG5ld1ZhbHVlKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogTWF4aW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9tYXgpO1xuICAgICAgICBpZiAoKChuZXdWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgfVxuXG4gICAgLyoqIEp1bXAgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQganVtcCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2p1bXAgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fanVtcCk7XG4gICAgfVxuICAgIGdldCBqdW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9qdW1wO1xuICAgIH1cblxuICAgIC8qKiBQdXQgYSBsYWJlbCBvbiBldmVyeSBOLXRoIHRpY2ttYXJrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRpY2ttYXJrc0JldHdlZW5MYWJlbHModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMpO1xuICAgIH1cbiAgICBnZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGlkZXIgbW9kZS5cbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdzaW5nbGUnIHwgJ3JhbmdlJ1xuICAgICAqIFRoZSBkZWZhdWx0IGlzIHNldCB0byAnc2luZ2xlJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogJ3NpbmdsZScgfCAncmFuZ2UnID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmtzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmsgbGFiZWxzLiBNdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnc2hvd1RpY2tzJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzTGFiZWxzID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgY3VzdG9tIHZhbHVlcyB0byB1c2UgZm9yIFNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVZhbHVlczogU2xpZGVyQ3VzdG9tVmFsdWVbXSA9IFtdO1xuXG4gICAgLyoqIFRvb2x0aXAgY2FuIGJlIHR3byB0eXBlcywgJ3JlYWRvbmx5JyB0byBkaXNwbGF5IHZhbHVlIGFuZCAnZWRpdGFibGUnIHRvIG1ha2UgdGhlIGFiaWxpdHkgdG8gc2V0IGFuZCBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9vbHRpcE1vZGU6ICdyZWFkb25seScgfCAnZWRpdGFibGUnO1xuXG4gICAgLyoqIEhpZGVzIGRpc3BsYXkgb2YgY29sb3JlZCBwcm9ncmVzcyBiYXIuICovXG4gICAgQElucHV0KClcbiAgICBoaWRlUHJvZ3Jlc3NCYXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIHNsaWRlciBjdXJyZW50IHZhbHVlIHZlcmJvc2Ugc3RyaW5nLlxuICAgICAqIFRoaXMgd2lsbCBiZSByZWFkIG9ubHkgb25jZSBieSBzY3JlZW4gcmVhZGVyIGFuZCB1cG9uIHNsaWRlciB2YWx1ZSBjaGFuZ2UsXG4gICAgICogdGhpcyBzdHJpbmcgd2lsbCBub3QgYmUgcmVhZC5cbiAgICAgKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgdXNlZCwgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaW5nbGVTbGlkZXJDdXJyZW50VmFsdWVQcmVmaXgodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZSgnUHJvcGVydHkgc2luZ2xlU2xpZGVyQ3VycmVudFZhbHVlUHJlZml4IGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkLicpO1xuICAgICAgICB0aGlzLl9zaW5nbGVTbGlkZXJDdXJyZW50VmFsdWVQcmVmaXggPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHNpbmdsZVNsaWRlckN1cnJlbnRWYWx1ZVByZWZpeCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2luZ2xlU2xpZGVyQ3VycmVudFZhbHVlUHJlZml4O1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NpbmdsZVNsaWRlckN1cnJlbnRWYWx1ZVByZWZpeDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiByYW5nZSBzbGlkZXIgaGFuZGxlIDEgY3VycmVudCB2YWx1ZSBzdXBwb3J0aW5nIHN0cmluZ1xuICAgICAqIFRoaXMgd2lsbCBiZSByZWFkIG9ubHkgb25jZSBieSBzY3JlZW4gcmVhZGVyIGFuZCB1cG9uIHNsaWRlciB2YWx1ZSBjaGFuZ2UsXG4gICAgICogdGhpcyBzdHJpbmcgd2lsbCBub3QgYmUgcmVhZC5cbiAgICAgKiAqIEBkZXByZWNhdGVkIG5vIGxvbmdlciB1c2VkLCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHJhbmdlU2xpZGVySGFuZGxlMUN1cnJlbnRWYWx1ZVByZWZpeCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKCdQcm9wZXJ0eSByYW5nZVNsaWRlckhhbmRsZTFDdXJyZW50VmFsdWVQcmVmaXggaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWQuJyk7XG4gICAgICAgIHRoaXMuX3JhbmdlU2xpZGVySGFuZGxlMUN1cnJlbnRWYWx1ZVByZWZpeCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgcmFuZ2VTbGlkZXJIYW5kbGUxQ3VycmVudFZhbHVlUHJlZml4KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYW5nZVNsaWRlckhhbmRsZTFDdXJyZW50VmFsdWVQcmVmaXg7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmFuZ2VTbGlkZXJIYW5kbGUxQ3VycmVudFZhbHVlUHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHJhbmdlIHNsaWRlciBoYW5kbGUgMiBjdXJyZW50IHZhbHVlIHN1cHBvcnRpbmcgc3RyaW5nXG4gICAgICogVGhpcyB3aWxsIGJlIHJlYWQgb25seSBvbmNlIGJ5IHNjcmVlbiByZWFkZXIgYW5kIHVwb24gc2xpZGVyIHZhbHVlIGNoYW5nZSxcbiAgICAgKiB0aGlzIHN0cmluZyB3aWxsIG5vdCBiZSByZWFkLlxuICAgICAqICogQGRlcHJlY2F0ZWQgbm8gbG9uZ2VyIHVzZWQsIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcmFuZ2VTbGlkZXJIYW5kbGUyQ3VycmVudFZhbHVlUHJlZml4KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoJ1Byb3BlcnR5IHJhbmdlU2xpZGVySGFuZGxlMkN1cnJlbnRWYWx1ZVByZWZpeCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZC4nKTtcbiAgICAgICAgdGhpcy5fcmFuZ2VTbGlkZXJIYW5kbGUyQ3VycmVudFZhbHVlUHJlZml4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCByYW5nZVNsaWRlckhhbmRsZTJDdXJyZW50VmFsdWVQcmVmaXgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlU2xpZGVySGFuZGxlMkN1cnJlbnRWYWx1ZVByZWZpeDtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yYW5nZVNsaWRlckhhbmRsZTJDdXJyZW50VmFsdWVQcmVmaXg6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Bvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSA9IDA7XG5cbiAgICAvKiogQ29udHJvbCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogU2xpZGVyQ29udHJvbFZhbHVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9wb3BvdmVyVmFsdWVSZWYoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gW3RoaXMuX3Bvc2l0aW9uIGFzIG51bWJlciwgdGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWVdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndHJhY2snLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIHRyYWNrRWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoYW5kbGUnLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIGhhbmRsZTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JhbmdlSGFuZGxlMScsIHtcbiAgICAgICAgcmVhZDogRWxlbWVudFJlZlxuICAgIH0pXG4gICAgcmFuZ2VIYW5kbGUxOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncmFuZ2VIYW5kbGUyJywge1xuICAgICAgICByZWFkOiBFbGVtZW50UmVmXG4gICAgfSlcbiAgICByYW5nZUhhbmRsZTI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFBvcG92ZXJDb21wb25lbnQpXG4gICAgX3BvcG92ZXJzOiBRdWVyeUxpc3Q8UG9wb3ZlckNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3NsaWRlclRvb2x0aXBXcmFwcGVyJylcbiAgICBfc2xpZGVyVG9vbHRpcFdyYXBwZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1zbGlkZXItLXJhbmdlJylcbiAgICBfaXNSYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVBvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUxVmFsdWUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMlZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JhbmdlUHJvZ3Jlc3MgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGlja01hcmtzOiBTbGlkZXJUaWNrTWFya1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zbGlkZXJWYWx1ZVRhcmdldHMgPSBTbGlkZXJWYWx1ZVRhcmdldHM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVySW5wdXRGaWVsZENsYXNzID0gYGZkLXNsaWRlci1wb3BvdmVyLWlucHV0LSR7c2xpZGVySWR9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogd2hldGhlciB0byB1c2UgdmFsdWUgd2l0aCBhIHByZWZpeCBmb3IgYW5ub3VuY2luZ1xuICAgICAqL1xuICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heCA9IDEwMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2p1bXAgPSAxMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGlja21hcmtzQmV0d2VlbkxhYmVscyA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlc0J5U3RlcHM6IG51bWJlcltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29tcG9uZW50SG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2hhbmRsZUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTFGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcmFuZ2VIYW5kbGUyRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuX29uUmVzaXplKCk7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0VmFsdWVzQnlTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXNsaWRlcicsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faXNSYW5nZSA/ICdmZC1zbGlkZXItLXJhbmdlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5zaG93VGlja3MgJiYgdGhpcy5zaG93VGlja3NMYWJlbHMgPyAnZmQtc2xpZGVyLS13aXRoLWxhYmVscycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybS5FREdFIHx8IHRoaXMuX3BsYXRmb3JtLlRSSURFTlQgPyAnZmQtc2xpZGVyX19hbHRlcm5hdGl2ZS10aWNrLXdpZHRoJyA6ICcnXG4gICAgICAgIF07XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRyYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihldmVudCkpO1xuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbW92ZScsIChtb3ZlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcztcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNldXAgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUoKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlRnJvbU1vdXNldXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxvd2VkS2V5czogbnVtYmVyW10gPSBbTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XLCBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0VdO1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBhbGxvd2VkS2V5cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkaWZmID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmp1bXAgOiB0aGlzLnN0ZXA7XG4gICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHByZXZWYWx1ZSA9IHRoaXMuX3Bvc2l0aW9uIGFzIG51bWJlcjtcbiAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcHJldlZhbHVlID0gdGhpcy5faGFuZGxlMVZhbHVlO1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLkZpcnN0O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwcmV2VmFsdWUgPSB0aGlzLl9oYW5kbGUyVmFsdWU7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUnRsKCkpIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgLSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX3Byb2Nlc3NOZXdWYWx1ZShuZXdWYWx1ZSBhcyBudW1iZXIsICF0aGlzLl9pc1JhbmdlKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGVJbmRleCwgbmV3VmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXBkYXRlVmFsdWVGcm9tSW5wdXQodmFsdWU6IHN0cmluZywgdGFyZ2V0OiBTbGlkZXJWYWx1ZVRhcmdldHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUoK3ZhbHVlKSBhcyBudW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5faXNSYW5nZSAmJiB0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0ID09PSBTbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikge1xuICAgICAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGUoKHZhbHVlID8/IFswLjBdKSBhcyBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZSgodmFsdWUgPz8gMCkgYXMgbnVtYmVyIHwgU2xpZGVyVGlja01hcmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIucmVmcmVzaFBvc2l0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50LCB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoIH0gPSB0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoZXZlbnQuY2xpZW50WCAtIGxlZnQpIC8gd2lkdGg7XG4gICAgICAgIGlmICh0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5taW4gKyBwZXJjZW50YWdlICogKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkaWZmOiBNYXRoLmFicyhzdGVwVmFsdWUgLSBuZXdWYWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN0ZXBWYWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5kaWZmIC0gYi5kaWZmKTtcbiAgICAgICAgbGV0IHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IG51bWJlciA9IHN0ZXBEaWZmQXJyYXlbMF0udmFsdWU7XG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmFuZ2VQcm9ncmVzcyA9IE1hdGguYWJzKHRoaXMuX2hhbmRsZTJQb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdIHtcbiAgICAgICAgbGV0IHJhbmdlTG93ZXJWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICBsZXQgcmFuZ2VIaWdoZXJWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICBsZXQgcmFuZ2VWYWx1ZTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdID0gW1xuICAgICAgICAgICAgTWF0aC5taW4odGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWUpLFxuICAgICAgICAgICAgTWF0aC5tYXgodGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWUpXG4gICAgICAgIF07XG4gICAgICAgIHJhbmdlTG93ZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMF07XG4gICAgICAgIHJhbmdlSGlnaGVyVmFsdWUgPSByYW5nZVZhbHVlWzFdO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWluID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVswXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICBjb25zdCBtYXggPSB0aGlzLmN1c3RvbVZhbHVlc1tyYW5nZVZhbHVlWzFdXSB8fCB0aGlzLmN1c3RvbVZhbHVlc1t0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJhbmdlVmFsdWUgPSBbbWluLCBtYXhdO1xuICAgICAgICAgICAgcmFuZ2VMb3dlclZhbHVlID0gcmFuZ2VWYWx1ZVswXS5sYWJlbDtcbiAgICAgICAgICAgIHJhbmdlSGlnaGVyVmFsdWUgPSByYW5nZVZhbHVlWzFdLmxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UoJ3JhbmdlIHZhbHVlIGJldHdlZW4gJyArIHJhbmdlTG93ZXJWYWx1ZSArICcgYW5kICcgKyByYW5nZUhpZ2hlclZhbHVlLCAncG9saXRlJyk7XG4gICAgICAgIHJldHVybiByYW5nZVZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXR0YWNoUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25SZXNpemUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZXNCeVN0ZXBzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aDogKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwICsgMVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKF8sIGkpID0+IE51bWJlcigodGhpcy5taW4gKyBpICogdGhpcy5zdGVwKS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFRpY2tNYXJrcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykge1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gW107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVZhbHVlc0xlbmd0aCA9IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSB0aGlzLmN1c3RvbVZhbHVlcy5tYXAoKGl0ZW0sIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogKDEwMCAvIGN1c3RvbVZhbHVlc0xlbmd0aCkgKiBpXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMubWF4IC0gdGhpcy5taW47XG4gICAgICAgICAgICBjb25zdCB0aWNrTWFya3NDb3VudCA9IHRvdGFsIC8gdGhpcy5zdGVwICsgMTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIgIT09IHVuZGVmaW5lZCAmJiB0aWNrTWFya3NDb3VudCA+IHRoaXMuX21heFRpY2tNYXJrc051bWJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLm1pbn1gXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG90YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5tYXh9YFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGlja01hcmtzQ291bnQgJSAxID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiB0aWNrTWFya3NDb3VudFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoXywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGkgKiB0aGlzLnN0ZXAgKiAxMDApIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodmFsdWUgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5taW4gKyB2YWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX21heFRpY2tNYXJrc051bWJlcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMudHJhY2tFbCB8fCAhdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIE1JTl9ESVNUQU5DRV9CRVRXRUVOX1RJQ0tTKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGNQcm9ncmVzcyh2YWx1ZTogbnVtYmVyLCBza2lwUnRsID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBsZXQgcHJvZ3Jlc3MgPSAoKHZhbHVlIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcbiAgICAgICAgaWYgKCFza2lwUnRsICYmIHRoaXMuX2lzUnRsKSB7XG4gICAgICAgICAgICBwcm9ncmVzcyA9IDEwMCAtIHByb2dyZXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvZ3Jlc3MgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWNhbGNIYW5kbGVQb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5faGFuZGxlMVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJQb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9oYW5kbGUyVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VQcm9ncmVzcyA9IE1hdGguYWJzKHRoaXMuX2hhbmRsZTJQb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrSXNJblJhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNSYW5nZSA9IHRoaXMubW9kZSA9PT0gJ3JhbmdlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXNSdGwgPSBpc1J0bDtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlKHZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZSh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFyayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMubWluKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzID0gdGhpcy5fY2FsY1Byb2dyZXNzKHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWUoc2xpZGVyVGlja01hcms6IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHNsaWRlclRpY2tNYXJrKSBhcyBudW1iZXIpIHx8IHRoaXMubWluO1xuICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlKHZhbHVlOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWVzKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0SGFuZGxlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWVbMF0sIHRoaXMubWluKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kSGFuZGxlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWVbMV0sIHRoaXMubWF4KTtcbiAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZURlZmF1bHQoW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGVEZWZhdWx0KFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV07XG4gICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIGZpcnN0SGFuZGxlKTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIHNlY29uZEhhbmRsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyhbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbihbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pIHx8IFt0aGlzLm1pbiwgdGhpcy5tYXhdO1xuICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlRGVmYXVsdCh2YWx1ZSBhcyBudW1iZXJbXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbih2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBTbGlkZXJUaWNrTWFya1tdKTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbnModmFsdWU6IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUgYXMgU2xpZGVyVGlja01hcmtbXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNSYW5nZSA/IFswLCB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUoc2Vjb25kSGFuZGxlKSkge1xuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlyc3RIYW5kbGVQb3NpdGlvbiA9IHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gZmlyc3RIYW5kbGUudmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kSGFuZGxlUG9zaXRpb24gPSB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IHNlY29uZEhhbmRsZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBpbmRleGVzID0gW1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlUG9zaXRpb24gPj0gMCA/IGZpcnN0SGFuZGxlUG9zaXRpb24gOiAwLFxuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZVBvc2l0aW9uID49IDAgPyBzZWNvbmRIYW5kbGVQb3NpdGlvbiA6IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gaW5kZXhlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmaXJzdEhhbmRsZSA9IHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUoZmlyc3RIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RIYW5kbGUgPSB0aGlzLmN1c3RvbVZhbHVlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGZpcnN0SGFuZGxlLnZhbHVlKSB8fCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgU2xpZGVyQ3VzdG9tVmFsdWUge1xuICAgICAgICByZXR1cm4gISFvYmplY3QgJiYgJ3ZhbHVlJyBpbiBvYmplY3QgJiYgJ2xhYmVsJyBpbiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0ludGVyYWN0aW9uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlSGFuZGxlMUZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcmFuZ2VIYW5kbGUyRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVySW5wdXRGaWVsZEZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50SG92ZXJlZCQsXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgoc3RhdGVzKSA9PiBzdGF0ZXMuc29tZShCb29sZWFuKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChmb2N1c2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90IGZvY3VzZWQsIGNoZWNrIGZvciB0aGUgZWRnZSBjYXNlLFxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGhvdmVyIGlzIG9uIHRoZSBmZC1wb3BvdmVyLWJvZHksIHRoYXQgaXMgYSBwYXJlbnQgZm9yIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRydWUsIHdoZW4gaG92ZXJpbmcgdGhlIGdhcCBiZXR3ZWVuIGhhbmRsZSBhbmQgdGhlIHRvb2x0aXAuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1BvcG92ZXJIb3ZlcmVkKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIub3BlbigpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldFByZWZpeCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVycy5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLmNsb3NlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIHJlc2V0IGRlZmF1bHQgcHJlZml4IG9uIGxlYXZpbmcgdGhlIHNsaWRlciAqL1xuICAgIHByaXZhdGUgX3Jlc2V0UHJlZml4KCk6IHZvaWQge1xuICAgICAgICAvLyByZXNldCBwcmVmaXggc3RyaW5nIGZvciBzbGlkZXIgY3VycmVudCB2YWx1ZSB0aGF0IG5lZWQgdG8gYmUgYW5ub3VuY2VkXG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDaGVja3Mgd2hldGhlciBpbnB1dCBwb3BvdmVyIGVsZW1lbnQgaXMgaG92ZXJlZC5cbiAgICAgKiBXaWxsIGFsc28gcmV0dXJuIHRydWUsIHdoZW4gaG92ZXJpbmcgdGhlIGdhcCBiZXR3ZWVuIGhhbmRsZSBhbmQgdGhlIHRvb2x0aXAuXG4gICAgICogSWYgeWVzLCByZXR1cm5zIFwidHJ1ZVwiIGluc3RhbnRseSBhbmQgXCJmYWxzZVwiIG9uY2UgaXQncyBub3QgaG92ZXJlZCBhbnltb3JlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzUG9wb3ZlckhvdmVyZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJCb2R5ID0gdGhpcy5fc2xpZGVyVG9vbHRpcFdyYXBwZXJzLmZpcnN0Py5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2ZkLXBvcG92ZXItYm9keScpO1xuICAgICAgICBpZiAocG9wb3ZlckJvZHk/Lm1hdGNoZXMoJzpob3ZlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbUV2ZW50KHBvcG92ZXJCb2R5LCAnbW91c2VsZWF2ZScpLnBpcGUobWFwVG8oZmFsc2UpLCB0YWtlKDEpLCBzdGFydFdpdGgodHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9faW5uZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2lzUmFuZ2UgPyByYW5nZU1vZGUgOiBzaW5nbGVNb2RlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190cmFja1wiIChjbGljayk9XCJvblRyYWNrQ2xpY2soJGV2ZW50KVwiICN0cmFjaz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIl9pc1JhbmdlID8gcmFuZ2VNb2RlVHJhY2sgOiBzaW5nbGVNb2RlVHJhY2tcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2std3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190aWNrc1wiIChjbGljayk9XCJvblRyYWNrQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUaWNrc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpY2sgb2YgX3RpY2tNYXJrczsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdGlja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0aWNrLnBvc2l0aW9uIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9fdGljay0taW4tcmFuZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGVQcm9ncmVzc0JhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfaXNSYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRpY2sudmFsdWUgPj0gX3Bvc2l0aW9uWzBdICYmIHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGljay52YWx1ZSA8PSBfcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxzXCIgKm5nSWY9XCJzaG93VGlja3MgJiYgc2hvd1RpY2tzTGFiZWxzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGk7IGxhc3QgYXMgbGFzdDsgZmlyc3QgYXMgZmlyc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3QgfHwgbGFzdCB8fCBpICUgdGlja21hcmtzQmV0d2VlbkxhYmVscyA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGVUcmFjaz5cbiAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiIFtzdHlsZS53aWR0aC4lXT1cIl9wcm9ncmVzc1wiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGVUcmFjaz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIl9yYW5nZVByb2dyZXNzXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMVBvc2l0aW9uIDwgX2hhbmRsZTJQb3NpdGlvbiA/IF9oYW5kbGUxUG9zaXRpb24gOiBfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjaGFuZGxlXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIuc2luZ2xlTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gc2luZ2xlU2xpZGVyUG9wb3ZlciA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIuc2luZ2xlVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIuc2luZ2xlVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbcG9zaXRpb25dPVwiX3Byb2dyZXNzXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgIChibHVyKT1cIl9oYW5kbGVGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjc2luZ2xlU2xpZGVyUG9wb3ZlclxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJoYW5kbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUiwgcG9zaXRpb246IF9wb3NpdGlvbiB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjcmFuZ2VIYW5kbGUxXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gcmFuZ2VTbGlkZXJQb3BvdmVyMSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUxRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgI3JhbmdlSGFuZGxlMlxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9faGFuZGxlXCJcbiAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9faGFuZGxlLS1sZ109XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgIHJvbGU9XCJzbGlkZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgYXJpYUxhYmVsIHx8ICdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMk1pbk1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMilcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTJGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcmFuZ2VTbGlkZXJQb3BvdmVyMVxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJyYW5nZUhhbmRsZTFcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC1wb3BvdmVyXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSwgcG9zaXRpb246IF9oYW5kbGUxVmFsdWUgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtcG9wb3Zlcj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIyXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyLCBwb3NpdGlvbjogX2hhbmRsZTJWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVySW5uZXIgbGV0LXRhcmdldD1cInRhcmdldFwiIGxldC1wb3NpdGlvbj1cInBvc2l0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgICAjc2xpZGVyVG9vbHRpcFdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtd3JhcHBlclwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQubmV4dChmYWxzZSlcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihjdXN0b21WYWx1ZXMgJiYgY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHx8IHRvb2x0aXBNb2RlID09PSAncmVhZG9ubHknXCIgY2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXBcIj5cbiAgICAgICAgICAgIHt7IGN1c3RvbVZhbHVlcyAmJiBjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IGN1c3RvbVZhbHVlc1twb3NpdGlvbl0ubGFiZWwgOiBfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF0gfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcG9wb3ZlcklucHV0RmllbGRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIGZka09ubHlEaWdpdHNcbiAgICAgICAgICAgIFtkZWNpbWFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLmNoXT1cIignJyArIF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XSkubGVuZ3RoICsgMlwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0IGZkLXNsaWRlci0tdG9vbHRpcCB7eyBfcG9wb3ZlcklucHV0RmllbGRDbGFzcyB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1c3RvbVZhbHVlcz8ubGVuZ3RoID09PSAwICYmIHRvb2x0aXBNb2RlID09PSAnZWRpdGFibGUnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdXCJcbiAgICAgICAgICAgIChibHVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfdXBkYXRlVmFsdWVGcm9tSW5wdXQocG9wb3ZlcklucHV0RmllbGQudmFsdWUsIHRhcmdldClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIl9wb3BvdmVySW5wdXRGaWVsZEZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
800
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwr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LGNBQWM7c0JBRGIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBS0YsR0FBRztzQkFETixLQUFLO2dCQWNGLEdBQUc7c0JBRE4sS0FBSztnQkFjRixJQUFJO3NCQURQLEtBQUs7Z0JBY0YsSUFBSTtzQkFEUCxLQUFLO2dCQVVGLHNCQUFzQjtzQkFEekIsS0FBSztnQkFjTixJQUFJO3NCQURILEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBUUYsS0FBSztzQkFEUixLQUFLO2dCQWlCTixPQUFPO3NCQUhOLFNBQVM7dUJBQUMsT0FBTyxFQUFFO3dCQUNoQixJQUFJLEVBQUUsVUFBVTtxQkFDbkI7Z0JBT0QsTUFBTTtzQkFITCxTQUFTO3VCQUFDLFFBQVEsRUFBRTt3QkFDakIsSUFBSSxFQUFFLFVBQVU7cUJBQ25CO2dCQU9ELFlBQVk7c0JBSFgsU0FBUzt1QkFBQyxjQUFjLEVBQUU7d0JBQ3ZCLElBQUksRUFBRSxVQUFVO3FCQUNuQjtnQkFPRCxZQUFZO3NCQUhYLFNBQVM7dUJBQUMsY0FBYyxFQUFFO3dCQUN2QixJQUFJLEVBQUUsVUFBVTtxQkFDbkI7Z0JBS0QsU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLHNCQUFzQjtnQkFXcEMsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkF3SnJDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIG1hcCxcbiAgICBtYXBUbyxcbiAgICBza2lwLFxuICAgIHN0YXJ0V2l0aCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGFrZSxcbiAgICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBTbGlkZXJDb250cm9sVmFsdWUsXG4gICAgU2xpZGVyQ3VzdG9tVmFsdWUsXG4gICAgU2xpZGVyUmFuZ2VIYW5kbGVzLFxuICAgIFNsaWRlclRpY2tNYXJrLFxuICAgIFNsaWRlclZhbHVlVGFyZ2V0c1xufSBmcm9tICcuL3NsaWRlci5tb2RlbCc7XG5pbXBvcnQgeyBNSU5fRElTVEFOQ0VfQkVUV0VFTl9USUNLUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciwgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZvcm1JdGVtQ29udHJvbCwgcmVnaXN0ZXJGb3JtSXRlbUNvbnRyb2wgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQge1xuICAgIENvbnRlbnREZW5zaXR5TW9kZSxcbiAgICBDb250ZW50RGVuc2l0eU9ic2VydmVyLFxuICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnNcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5cbmV4cG9ydCBjb25zdCBTTElERVJfVkFMVUVfQUNDRVNTT1IgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcbmxldCBzbGlkZXJJZCA9IDA7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXNsaWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgU0xJREVSX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICByZWdpc3RlckZvcm1JdGVtQ29udHJvbChTbGlkZXJDb21wb25lbnQpLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgICAgICBtb2RpZmllcnM6IHtcbiAgICAgICAgICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAnZmQtc2xpZGVyLS1sZydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICd0aGlzLl9jb21wb25lbnRIb3ZlcmVkJC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICd0aGlzLl9jb21wb25lbnRIb3ZlcmVkJC5uZXh0KGZhbHNlKScsXG4gICAgICAgICcoZm9jdXNvdXQpJzogJ29uVG91Y2hlZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgQ3NzQ2xhc3NCdWlsZGVyLCBGb3JtSXRlbUNvbnRyb2xcbntcbiAgICAvKiogU2xpZGVyIGlkLCBpdCBoYXMgc29tZSBkZWZhdWx0IHZhbHVlIGlmIG5vdCBzZXQsICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBpZCA9ICdmZC1zbGlkZXItaWQtJyArIHNsaWRlcklkKys7XG5cbiAgICAvKiogVXNlcidzIGN1c3RvbSBjbGFzc2VzICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIElEIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbGxlZEJ5OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBzbGlkZXIuICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWw6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogTWluaW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9taW4pO1xuICAgICAgICBpZiAoKCh0aGlzLm1heCAtIG5ld1ZhbHVlKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgICB9XG5cbiAgICAvKiogTWF4aW11bSB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9tYXgpO1xuICAgICAgICBpZiAoKChuZXdWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgJSAxICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gICAgfVxuXG4gICAgLyoqIEp1bXAgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQganVtcCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2p1bXAgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fanVtcCk7XG4gICAgfVxuICAgIGdldCBqdW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9qdW1wO1xuICAgIH1cblxuICAgIC8qKiBQdXQgYSBsYWJlbCBvbiBldmVyeSBOLXRoIHRpY2ttYXJrLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRpY2ttYXJrc0JldHdlZW5MYWJlbHModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMpO1xuICAgIH1cbiAgICBnZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTbGlkZXIgbW9kZS5cbiAgICAgKiBPcHRpb25zIGluY2x1ZGU6ICdzaW5nbGUnIHwgJ3JhbmdlJ1xuICAgICAqIFRoZSBkZWZhdWx0IGlzIHNldCB0byAnc2luZ2xlJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9kZTogJ3NpbmdsZScgfCAncmFuZ2UnID0gJ3NpbmdsZSc7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmtzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aWNrIG1hcmsgbGFiZWxzLiBNdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnc2hvd1RpY2tzJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd1RpY2tzTGFiZWxzID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgY3VzdG9tIHZhbHVlcyB0byB1c2UgZm9yIFNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVZhbHVlczogU2xpZGVyQ3VzdG9tVmFsdWVbXSA9IFtdO1xuXG4gICAgLyoqIFRvb2x0aXAgY2FuIGJlIHR3byB0eXBlcywgJ3JlYWRvbmx5JyB0byBkaXNwbGF5IHZhbHVlIGFuZCAnZWRpdGFibGUnIHRvIG1ha2UgdGhlIGFiaWxpdHkgdG8gc2V0IGFuZCBkaXNwbGF5IHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG9vbHRpcE1vZGU6ICdyZWFkb25seScgfCAnZWRpdGFibGUnO1xuXG4gICAgLyoqIEhpZGVzIGRpc3BsYXkgb2YgY29sb3JlZCBwcm9ncmVzcyBiYXIuICovXG4gICAgQElucHV0KClcbiAgICBoaWRlUHJvZ3Jlc3NCYXIgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Bvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSA9IDA7XG5cbiAgICAvKiogQ29udHJvbCB2YWx1ZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgdmFsdWUoKTogU2xpZGVyQ29udHJvbFZhbHVlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9wb3BvdmVyVmFsdWVSZWYoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gW3RoaXMuX3Bvc2l0aW9uIGFzIG51bWJlciwgdGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWVdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndHJhY2snLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIHRyYWNrRWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoYW5kbGUnLCB7XG4gICAgICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgICB9KVxuICAgIGhhbmRsZTogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3JhbmdlSGFuZGxlMScsIHtcbiAgICAgICAgcmVhZDogRWxlbWVudFJlZlxuICAgIH0pXG4gICAgcmFuZ2VIYW5kbGUxOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncmFuZ2VIYW5kbGUyJywge1xuICAgICAgICByZWFkOiBFbGVtZW50UmVmXG4gICAgfSlcbiAgICByYW5nZUhhbmRsZTI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFBvcG92ZXJDb21wb25lbnQpXG4gICAgX3BvcG92ZXJzOiBRdWVyeUxpc3Q8UG9wb3ZlckNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3NsaWRlclRvb2x0aXBXcmFwcGVyJylcbiAgICBfc2xpZGVyVG9vbHRpcFdyYXBwZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1zbGlkZXItLXJhbmdlJylcbiAgICBfaXNSYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVBvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUxVmFsdWUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMlZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JhbmdlUHJvZ3Jlc3MgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGlja01hcmtzOiBTbGlkZXJUaWNrTWFya1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zbGlkZXJWYWx1ZVRhcmdldHMgPSBTbGlkZXJWYWx1ZVRhcmdldHM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVySW5wdXRGaWVsZENsYXNzID0gYGZkLXNsaWRlci1wb3BvdmVyLWlucHV0LSR7c2xpZGVySWR9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogd2hldGhlciB0byB1c2UgdmFsdWUgd2l0aCBhIHByZWZpeCBmb3IgYW5ub3VuY2luZ1xuICAgICAqL1xuICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heCA9IDEwMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2p1bXAgPSAxMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGlja21hcmtzQmV0d2VlbkxhYmVscyA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlc0J5U3RlcHM6IG51bWJlcltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29tcG9uZW50SG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2hhbmRsZUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTFGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcmFuZ2VIYW5kbGUyRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2xpdmVBbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7XG4gICAgICAgIF9jb250ZW50RGVuc2l0eU9ic2VydmVyLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUnRsKCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgICAgIHRoaXMuX29uUmVzaXplKCk7XG4gICAgICAgIGlmICh0aGlzLl92YWx1ZXNCeVN0ZXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fY29uc3RydWN0VmFsdWVzQnlTdGVwcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXNsaWRlcicsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faXNSYW5nZSA/ICdmZC1zbGlkZXItLXJhbmdlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5zaG93VGlja3MgJiYgdGhpcy5zaG93VGlja3NMYWJlbHMgPyAnZmQtc2xpZGVyLS13aXRoLWxhYmVscycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybS5FREdFIHx8IHRoaXMuX3BsYXRmb3JtLlRSSURFTlQgPyAnZmQtc2xpZGVyX19hbHRlcm5hdGl2ZS10aWNrLXdpZHRoJyA6ICcnXG4gICAgICAgIF07XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRyYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihldmVudCkpO1xuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgIHRoaXMuaGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uSGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlbW92ZScsIChtb3ZlRXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQpKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcztcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHVuc3Vic2NyaWJlRnJvbU1vdXNldXAgPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZW1vdmUoKTtcbiAgICAgICAgICAgIHVuc3Vic2NyaWJlRnJvbU1vdXNldXAoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxvd2VkS2V5czogbnVtYmVyW10gPSBbTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XLCBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0VdO1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBhbGxvd2VkS2V5cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBkaWZmID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmp1bXAgOiB0aGlzLnN0ZXA7XG4gICAgICAgIGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsgfCBudWxsID0gbnVsbDtcbiAgICAgICAgbGV0IHByZXZWYWx1ZSA9IHRoaXMuX3Bvc2l0aW9uIGFzIG51bWJlcjtcbiAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcHJldlZhbHVlID0gdGhpcy5faGFuZGxlMVZhbHVlO1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLkZpcnN0O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwcmV2VmFsdWUgPSB0aGlzLl9oYW5kbGUyVmFsdWU7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuU2Vjb25kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUnRsKCkpIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgTEVGVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgLSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobmV3VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX3Byb2Nlc3NOZXdWYWx1ZShuZXdWYWx1ZSBhcyBudW1iZXIsICF0aGlzLl9pc1JhbmdlKTtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGVJbmRleCwgbmV3VmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXBkYXRlVmFsdWVGcm9tSW5wdXQodmFsdWU6IHN0cmluZywgdGFyZ2V0OiBTbGlkZXJWYWx1ZVRhcmdldHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUoK3ZhbHVlKSBhcyBudW1iZXI7XG4gICAgICAgIGlmICghdGhpcy5faXNSYW5nZSAmJiB0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFyZ2V0ID09PSBTbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikge1xuICAgICAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh0aGlzLl9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGUoKHZhbHVlID8/IFswLjBdKSBhcyBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZSgodmFsdWUgPz8gMCkgYXMgbnVtYmVyIHwgU2xpZGVyVGlja01hcmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIucmVmcmVzaFBvc2l0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50LCB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoIH0gPSB0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoZXZlbnQuY2xpZW50WCAtIGxlZnQpIC8gd2lkdGg7XG4gICAgICAgIGlmICh0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5taW4gKyBwZXJjZW50YWdlICogKHRoaXMubWF4IC0gdGhpcy5taW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdWYWx1ZSA8IHRoaXMubWluKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkaWZmOiBNYXRoLmFicyhzdGVwVmFsdWUgLSBuZXdWYWx1ZSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHN0ZXBWYWx1ZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5kaWZmIC0gYi5kaWZmKTtcbiAgICAgICAgbGV0IHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IG51bWJlciA9IHN0ZXBEaWZmQXJyYXlbMF0udmFsdWU7XG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXMsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5GaXJzdCkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmFuZ2VQcm9ncmVzcyA9IE1hdGguYWJzKHRoaXMuX2hhbmRsZTJQb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb25zdHJ1Y3RSYW5nZU1vZGVsVmFsdWUoKTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdIHtcbiAgICAgICAgbGV0IHJhbmdlTG93ZXJWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICBsZXQgcmFuZ2VIaWdoZXJWYWx1ZTogbnVtYmVyIHwgc3RyaW5nO1xuICAgICAgICBsZXQgcmFuZ2VWYWx1ZTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdID0gW1xuICAgICAgICAgICAgTWF0aC5taW4odGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWUpLFxuICAgICAgICAgICAgTWF0aC5tYXgodGhpcy5faGFuZGxlMVZhbHVlLCB0aGlzLl9oYW5kbGUyVmFsdWUpXG4gICAgICAgIF07XG4gICAgICAgIHJhbmdlTG93ZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMF07XG4gICAgICAgIHJhbmdlSGlnaGVyVmFsdWUgPSByYW5nZVZhbHVlWzFdO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWluID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVswXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICBjb25zdCBtYXggPSB0aGlzLmN1c3RvbVZhbHVlc1tyYW5nZVZhbHVlWzFdXSB8fCB0aGlzLmN1c3RvbVZhbHVlc1t0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIHJhbmdlVmFsdWUgPSBbbWluLCBtYXhdO1xuICAgICAgICAgICAgcmFuZ2VMb3dlclZhbHVlID0gcmFuZ2VWYWx1ZVswXS5sYWJlbDtcbiAgICAgICAgICAgIHJhbmdlSGlnaGVyVmFsdWUgPSByYW5nZVZhbHVlWzFdLmxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UoJ3JhbmdlIHZhbHVlIGJldHdlZW4gJyArIHJhbmdlTG93ZXJWYWx1ZSArICcgYW5kICcgKyByYW5nZUhpZ2hlclZhbHVlLCAncG9saXRlJyk7XG4gICAgICAgIHJldHVybiByYW5nZVZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXR0YWNoUmVzaXplTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fb25SZXNpemUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZXNCeVN0ZXBzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aDogKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwICsgMVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKF8sIGkpID0+IE51bWJlcigodGhpcy5taW4gKyBpICogdGhpcy5zdGVwKS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFRpY2tNYXJrcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykge1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gW107XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVZhbHVlc0xlbmd0aCA9IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSB0aGlzLmN1c3RvbVZhbHVlcy5tYXAoKGl0ZW0sIGkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogKDEwMCAvIGN1c3RvbVZhbHVlc0xlbmd0aCkgKiBpXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbCA9IHRoaXMubWF4IC0gdGhpcy5taW47XG4gICAgICAgICAgICBjb25zdCB0aWNrTWFya3NDb3VudCA9IHRvdGFsIC8gdGhpcy5zdGVwICsgMTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIgIT09IHVuZGVmaW5lZCAmJiB0aWNrTWFya3NDb3VudCA+IHRoaXMuX21heFRpY2tNYXJrc051bWJlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tNYXJrcyA9IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBgJHt0aGlzLm1pbn1gXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdG90YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5tYXh9YFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGlja01hcmtzQ291bnQgJSAxID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiB0aWNrTWFya3NDb3VudFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoXywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLnJvdW5kKGkgKiB0aGlzLnN0ZXAgKiAxMDApIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodmFsdWUgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYCR7dGhpcy5taW4gKyB2YWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX21heFRpY2tNYXJrc051bWJlcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMudHJhY2tFbCB8fCAhdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcih0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIE1JTl9ESVNUQU5DRV9CRVRXRUVOX1RJQ0tTKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGNQcm9ncmVzcyh2YWx1ZTogbnVtYmVyLCBza2lwUnRsID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgICBsZXQgcHJvZ3Jlc3MgPSAoKHZhbHVlIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcbiAgICAgICAgaWYgKCFza2lwUnRsICYmIHRoaXMuX2lzUnRsKSB7XG4gICAgICAgICAgICBwcm9ncmVzcyA9IDEwMCAtIHByb2dyZXNzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvZ3Jlc3MgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvZ3Jlc3M7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWNhbGNIYW5kbGVQb3NpdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUxUG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5faGFuZGxlMVZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJQb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh0aGlzLl9oYW5kbGUyVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VQcm9ncmVzcyA9IE1hdGguYWJzKHRoaXMuX2hhbmRsZTJQb3NpdGlvbiAtIHRoaXMuX2hhbmRsZTFQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrSXNJblJhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNSYW5nZSA9IHRoaXMubW9kZSA9PT0gJ3JhbmdlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ydGxTZXJ2aWNlLnJ0bC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChpc1J0bDogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXNSdGwgPSBpc1J0bDtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlKHZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZSh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFyayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMubWluKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzID0gdGhpcy5fY2FsY1Byb2dyZXNzKHZhbHVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWUoc2xpZGVyVGlja01hcms6IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHNsaWRlclRpY2tNYXJrKSBhcyBudW1iZXIpIHx8IHRoaXMubWluO1xuICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlKHZhbHVlOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVXaXRoQ3VzdG9tVmFsdWVzKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpcnN0SGFuZGxlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWVbMF0sIHRoaXMubWluKTtcbiAgICAgICAgY29uc3Qgc2Vjb25kSGFuZGxlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWVbMV0sIHRoaXMubWF4KTtcbiAgICAgICAgdGhpcy5faW5pdFJhbmdlTW9kZURlZmF1bHQoW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRSYW5nZU1vZGVEZWZhdWx0KFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXTogbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV07XG4gICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIGZpcnN0SGFuZGxlKTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIHNlY29uZEhhbmRsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyhbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbihbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pIHx8IFt0aGlzLm1pbiwgdGhpcy5tYXhdO1xuICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlRGVmYXVsdCh2YWx1ZSBhcyBudW1iZXJbXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbih2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBTbGlkZXJUaWNrTWFya1tdKTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9ucyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbnModmFsdWU6IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSB8fCAodmFsdWUgYXMgU2xpZGVyVGlja01hcmtbXSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNSYW5nZSA/IFswLCB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUoc2Vjb25kSGFuZGxlKSkge1xuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZmlyc3RIYW5kbGVQb3NpdGlvbiA9IHRoaXMuY3VzdG9tVmFsdWVzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS52YWx1ZSA9PT0gZmlyc3RIYW5kbGUudmFsdWUpO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kSGFuZGxlUG9zaXRpb24gPSB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IHNlY29uZEhhbmRsZS52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBpbmRleGVzID0gW1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlUG9zaXRpb24gPj0gMCA/IGZpcnN0SGFuZGxlUG9zaXRpb24gOiAwLFxuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZVBvc2l0aW9uID49IDAgPyBzZWNvbmRIYW5kbGVQb3NpdGlvbiA6IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICByZXR1cm4gaW5kZXhlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmaXJzdEhhbmRsZSA9IHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUoZmlyc3RIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RIYW5kbGUgPSB0aGlzLmN1c3RvbVZhbHVlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGZpcnN0SGFuZGxlLnZhbHVlKSB8fCAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnN0YW5jZU9mQ3VzdG9tVmFsdWUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgU2xpZGVyQ3VzdG9tVmFsdWUge1xuICAgICAgICByZXR1cm4gISFvYmplY3QgJiYgJ3ZhbHVlJyBpbiBvYmplY3QgJiYgJ2xhYmVsJyBpbiBvYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0ludGVyYWN0aW9uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlSGFuZGxlMUZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcmFuZ2VIYW5kbGUyRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVySW5wdXRGaWVsZEZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50SG92ZXJlZCQsXG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkXG4gICAgICAgIF0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIG1hcCgoc3RhdGVzKSA9PiBzdGF0ZXMuc29tZShCb29sZWFuKSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKChmb2N1c2VkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90IGZvY3VzZWQsIGNoZWNrIGZvciB0aGUgZWRnZSBjYXNlLFxuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGhvdmVyIGlzIG9uIHRoZSBmZC1wb3BvdmVyLWJvZHksIHRoYXQgaXMgYSBwYXJlbnQgZm9yIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmV0dXJuIHRydWUsIHdoZW4gaG92ZXJpbmcgdGhlIGdhcCBiZXR3ZWVuIGhhbmRsZSBhbmQgdGhlIHRvb2x0aXAuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1BvcG92ZXJIb3ZlcmVkKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEwKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZm9jdXNlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIub3BlbigpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldFByZWZpeCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVycy5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLmNsb3NlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIHJlc2V0IGRlZmF1bHQgcHJlZml4IG9uIGxlYXZpbmcgdGhlIHNsaWRlciAqL1xuICAgIHByaXZhdGUgX3Jlc2V0UHJlZml4KCk6IHZvaWQge1xuICAgICAgICAvLyByZXNldCBwcmVmaXggc3RyaW5nIGZvciBzbGlkZXIgY3VycmVudCB2YWx1ZSB0aGF0IG5lZWQgdG8gYmUgYW5ub3VuY2VkXG4gICAgICAgIHRoaXMuX3VzZVNsaWRlclZhbHVlUHJlZml4ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDaGVja3Mgd2hldGhlciBpbnB1dCBwb3BvdmVyIGVsZW1lbnQgaXMgaG92ZXJlZC5cbiAgICAgKiBXaWxsIGFsc28gcmV0dXJuIHRydWUsIHdoZW4gaG92ZXJpbmcgdGhlIGdhcCBiZXR3ZWVuIGhhbmRsZSBhbmQgdGhlIHRvb2x0aXAuXG4gICAgICogSWYgeWVzLCByZXR1cm5zIFwidHJ1ZVwiIGluc3RhbnRseSBhbmQgXCJmYWxzZVwiIG9uY2UgaXQncyBub3QgaG92ZXJlZCBhbnltb3JlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzUG9wb3ZlckhvdmVyZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJCb2R5ID0gdGhpcy5fc2xpZGVyVG9vbHRpcFdyYXBwZXJzLmZpcnN0Py5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJ2ZkLXBvcG92ZXItYm9keScpO1xuICAgICAgICBpZiAocG9wb3ZlckJvZHk/Lm1hdGNoZXMoJzpob3ZlcicpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbUV2ZW50KHBvcG92ZXJCb2R5LCAnbW91c2VsZWF2ZScpLnBpcGUobWFwVG8oZmFsc2UpLCB0YWtlKDEpLCBzdGFydFdpdGgodHJ1ZSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9faW5uZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiX2lzUmFuZ2UgPyByYW5nZU1vZGUgOiBzaW5nbGVNb2RlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190cmFja1wiIChjbGljayk9XCJvblRyYWNrQ2xpY2soJGV2ZW50KVwiICN0cmFjaz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIl9pc1JhbmdlID8gcmFuZ2VNb2RlVHJhY2sgOiBzaW5nbGVNb2RlVHJhY2tcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2std3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190aWNrc1wiIChjbGljayk9XCJvblRyYWNrQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUaWNrc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRpY2sgb2YgX3RpY2tNYXJrczsgaW5kZXggYXMgaVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fdGlja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCJ0aWNrLnBvc2l0aW9uIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9fdGljay0taW4tcmFuZ2VdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhpZGVQcm9ncmVzc0JhciAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfaXNSYW5nZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRpY2sudmFsdWUgPj0gX3Bvc2l0aW9uWzBdICYmIHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uWzFdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGljay52YWx1ZSA8PSBfcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxzXCIgKm5nSWY9XCJzaG93VGlja3MgJiYgc2hvd1RpY2tzTGFiZWxzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGk7IGxhc3QgYXMgbGFzdDsgZmlyc3QgYXMgZmlyc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3QgfHwgbGFzdCB8fCBpICUgdGlja21hcmtzQmV0d2VlbkxhYmVscyA9PT0gMFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGVUcmFjaz5cbiAgICA8ZGl2ICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiIFtzdHlsZS53aWR0aC4lXT1cIl9wcm9ncmVzc1wiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGVUcmFjaz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIWhpZGVQcm9ncmVzc0JhclwiXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX190cmFjay1yYW5nZVwiXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cIl9yYW5nZVByb2dyZXNzXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMVBvc2l0aW9uIDwgX2hhbmRsZTJQb3NpdGlvbiA/IF9oYW5kbGUxUG9zaXRpb24gOiBfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICA+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbmdsZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjaGFuZGxlXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIuc2luZ2xlTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gc2luZ2xlU2xpZGVyUG9wb3ZlciA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIuc2luZ2xlVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIuc2luZ2xlVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbcG9zaXRpb25dPVwiX3Byb2dyZXNzXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgIChibHVyKT1cIl9oYW5kbGVGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjc2luZ2xlU2xpZGVyUG9wb3ZlclxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJoYW5kbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUiwgcG9zaXRpb246IF9wb3NpdGlvbiB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjcmFuZ2VIYW5kbGUxXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgbWluOiBtaW5WYWx1ZSwgbWF4OiBtYXhWYWx1ZSB9XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgIFtmZFBvcG92ZXJUcmlnZ2VyXT1cInRvb2x0aXBNb2RlID8gcmFuZ2VTbGlkZXJQb3BvdmVyMSA6IG51bGxcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWluRGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZXRleHRdPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlIDogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUxRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICAgI3JhbmdlSGFuZGxlMlxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9faGFuZGxlXCJcbiAgICAgICAgW2NsYXNzLmZkLXNsaWRlcl9faGFuZGxlLS1sZ109XCJfY29udGVudERlbnNpdHlPYnNlcnZlci5pc0NvenkkIHwgYXN5bmNcIlxuICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgIHJvbGU9XCJzbGlkZXJcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgYXJpYUxhYmVsIHx8ICdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMk1pbk1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBtYXhWYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUyVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMilcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMlBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTJGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjcmFuZ2VTbGlkZXJQb3BvdmVyMVxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJyYW5nZUhhbmRsZTFcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgYWRkaXRpb25hbEJvZHlDbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC1wb3BvdmVyXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSwgcG9zaXRpb246IF9oYW5kbGUxVmFsdWUgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtcG9wb3Zlcj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIyXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMlwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyLCBwb3NpdGlvbjogX2hhbmRsZTJWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb3BvdmVySW5uZXIgbGV0LXRhcmdldD1cInRhcmdldFwiIGxldC1wb3NpdGlvbj1cInBvc2l0aW9uXCI+XG4gICAgPGRpdlxuICAgICAgICAjc2xpZGVyVG9vbHRpcFdyYXBwZXJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtd3JhcHBlclwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAobW91c2VlbnRlcik9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQubmV4dChmYWxzZSlcIlxuICAgID5cbiAgICAgICAgPGRpdiAqbmdJZj1cIihjdXN0b21WYWx1ZXMgJiYgY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHx8IHRvb2x0aXBNb2RlID09PSAncmVhZG9ubHknXCIgY2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXBcIj5cbiAgICAgICAgICAgIHt7IGN1c3RvbVZhbHVlcyAmJiBjdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IGN1c3RvbVZhbHVlc1twb3NpdGlvbl0ubGFiZWwgOiBfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF0gfX1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcG9wb3ZlcklucHV0RmllbGRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIGZka09ubHlEaWdpdHNcbiAgICAgICAgICAgIFtkZWNpbWFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLmNoXT1cIignJyArIF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XSkubGVuZ3RoICsgMlwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0IGZkLXNsaWRlci0tdG9vbHRpcCB7eyBfcG9wb3ZlcklucHV0RmllbGRDbGFzcyB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1c3RvbVZhbHVlcz8ubGVuZ3RoID09PSAwICYmIHRvb2x0aXBNb2RlID09PSAnZWRpdGFibGUnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdXCJcbiAgICAgICAgICAgIChibHVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfdXBkYXRlVmFsdWVGcm9tSW5wdXQocG9wb3ZlcklucHV0RmllbGQudmFsdWUsIHRhcmdldClcIlxuICAgICAgICAgICAgKGZvY3VzKT1cIl9wb3BvdmVySW5wdXRGaWVsZEZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgICAgICAvPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==