@koobiq/components 18.33.0 → 18.35.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 (309) hide show
  1. package/actions-panel/actions-panel-config.d.ts +4 -3
  2. package/actions-panel/actions-panel-container.scss +0 -6
  3. package/actions-panel/actions-panel-ref.d.ts +13 -0
  4. package/actions-panel/actions-panel.d.ts +1 -7
  5. package/button/_button-theme.scss +1 -0
  6. package/clamped-text/clamped-text.d.ts +61 -0
  7. package/clamped-text/clamped-text.scss +17 -0
  8. package/clamped-text/constants.d.ts +14 -0
  9. package/clamped-text/index.d.ts +3 -0
  10. package/clamped-text/module.d.ts +7 -0
  11. package/content-panel/content-panel-aside.scss +9 -0
  12. package/content-panel/content-panel-body.scss +9 -0
  13. package/content-panel/content-panel-container.scss +32 -0
  14. package/content-panel/content-panel-footer.scss +5 -0
  15. package/content-panel/content-panel-header.scss +30 -0
  16. package/content-panel/content-panel-tokens.scss +9 -0
  17. package/content-panel/content-panel.d.ts +149 -0
  18. package/content-panel/content-panel.scss +25 -0
  19. package/content-panel/index.d.ts +3 -0
  20. package/content-panel/module.d.ts +7 -0
  21. package/content-panel/resizable.d.ts +70 -0
  22. package/core/form-field/field-sizing-content.d.ts +21 -0
  23. package/core/form-field/index.d.ts +1 -0
  24. package/core/locales/en-US.d.ts +10 -0
  25. package/core/locales/es-LA.d.ts +10 -0
  26. package/core/locales/fa-IR.d.ts +10 -0
  27. package/core/locales/locale-service.d.ts +70 -0
  28. package/core/locales/pt-BR.d.ts +10 -0
  29. package/core/locales/ru-RU.d.ts +10 -0
  30. package/core/locales/tk-TM.d.ts +10 -0
  31. package/core/locales/types.d.ts +5 -0
  32. package/core/locales/zh-CN.d.ts +10 -0
  33. package/core/navbar/index.d.ts +1 -0
  34. package/core/navbar/rectangle-item.d.ts +14 -0
  35. package/core/option/option.d.ts +3 -1
  36. package/core/pop-up/pop-up-trigger.d.ts +2 -0
  37. package/core/public-api.d.ts +1 -0
  38. package/core/styles/common/_select.scss +6 -3
  39. package/core/utils/dom.d.ts +9 -0
  40. package/core/utils/index.d.ts +1 -0
  41. package/core/utils/utils.d.ts +4 -0
  42. package/datepicker/calendar.component.d.ts +1 -1
  43. package/datepicker/datepicker-input.directive.d.ts +19 -8
  44. package/datepicker/datepicker-toggle.component.d.ts +1 -1
  45. package/datepicker/datepicker.component.d.ts +2 -2
  46. package/dropdown/dropdown-item.scss +1 -0
  47. package/dropdown/dropdown-trigger.directive.d.ts +7 -1
  48. package/dynamic-translation/dynamic-translation.d.ts +72 -0
  49. package/dynamic-translation/index.d.ts +2 -0
  50. package/dynamic-translation/module.d.ts +7 -0
  51. package/esm2022/actions-panel/actions-panel-config.mjs +1 -1
  52. package/esm2022/actions-panel/actions-panel-container.mjs +7 -7
  53. package/esm2022/actions-panel/actions-panel-ref.mjs +17 -1
  54. package/esm2022/actions-panel/actions-panel.mjs +34 -24
  55. package/esm2022/breadcrumbs/breadcrumbs.mjs +2 -2
  56. package/esm2022/button/button.component.mjs +2 -2
  57. package/esm2022/button-toggle/button-toggle.component.mjs +9 -9
  58. package/esm2022/clamped-text/clamped-text.mjs +202 -0
  59. package/esm2022/clamped-text/constants.mjs +20 -0
  60. package/esm2022/clamped-text/index.mjs +4 -0
  61. package/esm2022/clamped-text/koobiq-components-clamped-text.mjs +5 -0
  62. package/esm2022/clamped-text/module.mjs +19 -0
  63. package/esm2022/content-panel/content-panel.mjs +432 -0
  64. package/esm2022/content-panel/index.mjs +4 -0
  65. package/esm2022/content-panel/koobiq-components-content-panel.mjs +5 -0
  66. package/esm2022/content-panel/module.mjs +42 -0
  67. package/esm2022/content-panel/resizable.mjs +138 -0
  68. package/esm2022/core/form-field/field-sizing-content.mjs +114 -0
  69. package/esm2022/core/form-field/index.mjs +2 -1
  70. package/esm2022/core/locales/en-US.mjs +11 -1
  71. package/esm2022/core/locales/es-LA.mjs +11 -1
  72. package/esm2022/core/locales/fa-IR.mjs +11 -1
  73. package/esm2022/core/locales/pt-BR.mjs +11 -1
  74. package/esm2022/core/locales/ru-RU.mjs +11 -1
  75. package/esm2022/core/locales/tk-TM.mjs +11 -1
  76. package/esm2022/core/locales/types.mjs +1 -1
  77. package/esm2022/core/locales/zh-CN.mjs +11 -1
  78. package/esm2022/core/navbar/index.mjs +2 -0
  79. package/esm2022/core/navbar/rectangle-item.mjs +39 -0
  80. package/esm2022/core/option/option.mjs +8 -4
  81. package/esm2022/core/pop-up/pop-up-trigger.mjs +5 -1
  82. package/esm2022/core/public-api.mjs +2 -1
  83. package/esm2022/core/utils/dom.mjs +14 -0
  84. package/esm2022/core/utils/index.mjs +2 -1
  85. package/esm2022/core/utils/utils.mjs +9 -1
  86. package/esm2022/core/version.mjs +2 -2
  87. package/esm2022/datepicker/calendar-header.component.mjs +6 -3
  88. package/esm2022/datepicker/calendar.component.mjs +9 -9
  89. package/esm2022/datepicker/datepicker-input.directive.mjs +24 -21
  90. package/esm2022/datepicker/datepicker-toggle.component.mjs +8 -8
  91. package/esm2022/datepicker/datepicker.component.mjs +3 -3
  92. package/esm2022/dropdown/dropdown-item.component.mjs +2 -2
  93. package/esm2022/dropdown/dropdown-trigger.directive.mjs +30 -10
  94. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  95. package/esm2022/dynamic-translation/dynamic-translation.mjs +175 -0
  96. package/esm2022/dynamic-translation/index.mjs +3 -0
  97. package/esm2022/dynamic-translation/koobiq-components-dynamic-translation.mjs +5 -0
  98. package/esm2022/dynamic-translation/module.mjs +25 -0
  99. package/esm2022/file-upload/file-drop.mjs +1 -1
  100. package/esm2022/file-upload/file-upload.mjs +6 -1
  101. package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -16
  102. package/esm2022/file-upload/single-file-upload.component.mjs +23 -16
  103. package/esm2022/filter-bar/filter-bar.mjs +3 -3
  104. package/esm2022/filter-bar/filter-refresher.mjs +5 -5
  105. package/esm2022/filter-bar/filter-reset.mjs +3 -3
  106. package/esm2022/filter-bar/filter-search.mjs +11 -11
  107. package/esm2022/filter-bar/filters.mjs +16 -4
  108. package/esm2022/filter-bar/pipe-add.mjs +6 -6
  109. package/esm2022/filter-bar/pipes/base-pipe.mjs +2 -2
  110. package/esm2022/filter-bar/pipes/pipe-button.mjs +7 -7
  111. package/esm2022/filter-bar/pipes/pipe-date.mjs +10 -2
  112. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +10 -2
  113. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +11 -17
  114. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +10 -9
  115. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +7 -7
  116. package/esm2022/filter-bar/pipes/pipe-select.mjs +3 -4
  117. package/esm2022/filter-bar/pipes/pipe-text.mjs +9 -3
  118. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +9 -3
  119. package/esm2022/form-field/cleaner.mjs +16 -11
  120. package/esm2022/form-field/fieldset.mjs +2 -2
  121. package/esm2022/form-field/form-field.mjs +5 -5
  122. package/esm2022/form-field/password-hint.mjs +14 -3
  123. package/esm2022/form-field/password-toggle.mjs +45 -10
  124. package/esm2022/form-field/reactive-password-hint.mjs +18 -17
  125. package/esm2022/form-field/stepper.mjs +9 -9
  126. package/esm2022/icon/icon-button.component.mjs +2 -2
  127. package/esm2022/input/input-number.mjs +15 -10
  128. package/esm2022/markdown/markdown.component.mjs +3 -3
  129. package/esm2022/modal/modal.component.mjs +14 -14
  130. package/esm2022/modal/modal.directive.mjs +7 -5
  131. package/esm2022/navbar/navbar-item.component.mjs +3 -3
  132. package/esm2022/navbar-ic/index.mjs +2 -0
  133. package/esm2022/navbar-ic/koobiq-components-navbar-ic.mjs +5 -0
  134. package/esm2022/navbar-ic/navbar-ic-header.mjs +58 -0
  135. package/esm2022/navbar-ic/navbar-ic-item.mjs +399 -0
  136. package/esm2022/navbar-ic/navbar-ic.animation.mjs +9 -0
  137. package/esm2022/navbar-ic/navbar-ic.mjs +281 -0
  138. package/esm2022/navbar-ic/navbar-ic.module.mjs +74 -0
  139. package/esm2022/navbar-ic/public-api.mjs +5 -0
  140. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  141. package/esm2022/popover/popover.component.mjs +10 -5
  142. package/esm2022/scrollbar/scrollbar.component.mjs +5 -5
  143. package/esm2022/select/select.component.mjs +24 -11
  144. package/esm2022/sidebar/sidebar.component.mjs +46 -27
  145. package/esm2022/sidepanel/sidepanel-container.component.mjs +15 -4
  146. package/esm2022/sidepanel/sidepanel-directives.mjs +5 -5
  147. package/esm2022/sidepanel/sidepanel-ref.mjs +8 -6
  148. package/esm2022/splitter/splitter.component.mjs +1 -1
  149. package/esm2022/tabs/tab-body.component.mjs +3 -3
  150. package/esm2022/tabs/tab-group.component.mjs +27 -27
  151. package/esm2022/tabs/tab.component.mjs +4 -4
  152. package/esm2022/tags/tag-input.mjs +2 -2
  153. package/esm2022/tags/tag-list.component.mjs +36 -17
  154. package/esm2022/tags/tag.component.mjs +231 -22
  155. package/esm2022/tags/tag.module.mjs +16 -6
  156. package/esm2022/textarea/textarea.component.mjs +6 -4
  157. package/esm2022/timepicker/timepicker.directive.mjs +1 -1
  158. package/esm2022/timezone/timezone-select.component.mjs +3 -3
  159. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  160. package/esm2022/tree/tree-selection.component.mjs +4 -4
  161. package/esm2022/tree-select/tree-select.component.mjs +11 -9
  162. package/esm2022/username/constants.mjs +25 -0
  163. package/esm2022/username/index.mjs +6 -0
  164. package/esm2022/username/koobiq-components-username.mjs +5 -0
  165. package/esm2022/username/module.mjs +35 -0
  166. package/esm2022/username/types.mjs +32 -0
  167. package/esm2022/username/username.mjs +129 -0
  168. package/esm2022/username/username.pipe.mjs +92 -0
  169. package/fesm2022/koobiq-components-actions-panel.mjs +56 -31
  170. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  171. package/fesm2022/koobiq-components-breadcrumbs.mjs +1 -1
  172. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  173. package/fesm2022/koobiq-components-button-toggle.mjs +8 -8
  174. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  175. package/fesm2022/koobiq-components-button.mjs +2 -2
  176. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  177. package/fesm2022/koobiq-components-clamped-text.mjs +242 -0
  178. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -0
  179. package/fesm2022/koobiq-components-content-panel.mjs +612 -0
  180. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -0
  181. package/fesm2022/koobiq-components-core.mjs +271 -31
  182. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  183. package/fesm2022/koobiq-components-datepicker.mjs +45 -40
  184. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  185. package/fesm2022/koobiq-components-dropdown.mjs +33 -13
  186. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  187. package/fesm2022/koobiq-components-dynamic-translation.mjs +204 -0
  188. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -0
  189. package/fesm2022/koobiq-components-file-upload.mjs +44 -27
  190. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  191. package/fesm2022/koobiq-components-filter-bar.mjs +100 -71
  192. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  193. package/fesm2022/koobiq-components-form-field.mjs +100 -49
  194. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  195. package/fesm2022/koobiq-components-icon.mjs +2 -2
  196. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  197. package/fesm2022/koobiq-components-input.mjs +14 -9
  198. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  199. package/fesm2022/koobiq-components-markdown.mjs +2 -2
  200. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  201. package/fesm2022/koobiq-components-modal.mjs +19 -17
  202. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  203. package/fesm2022/koobiq-components-navbar-ic.mjs +800 -0
  204. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -0
  205. package/fesm2022/koobiq-components-navbar.mjs +2 -2
  206. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  207. package/fesm2022/koobiq-components-popover.mjs +11 -6
  208. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  209. package/fesm2022/koobiq-components-scrollbar.mjs +4 -4
  210. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  211. package/fesm2022/koobiq-components-select.mjs +23 -10
  212. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  213. package/fesm2022/koobiq-components-sidebar.mjs +45 -26
  214. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  215. package/fesm2022/koobiq-components-sidepanel.mjs +24 -12
  216. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  217. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  218. package/fesm2022/koobiq-components-tabs.mjs +31 -31
  219. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  220. package/fesm2022/koobiq-components-tags.mjs +284 -47
  221. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  222. package/fesm2022/koobiq-components-textarea.mjs +5 -3
  223. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  224. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  225. package/fesm2022/koobiq-components-timezone.mjs +2 -2
  226. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  227. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  228. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  229. package/fesm2022/koobiq-components-tree-select.mjs +10 -8
  230. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  231. package/fesm2022/koobiq-components-tree.mjs +3 -3
  232. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  233. package/fesm2022/koobiq-components-username.mjs +308 -0
  234. package/fesm2022/koobiq-components-username.mjs.map +1 -0
  235. package/file-upload/_file-upload-theme.scss +1 -1
  236. package/file-upload/file-drop.d.ts +1 -1
  237. package/file-upload/file-upload.d.ts +5 -2
  238. package/file-upload/multiple-file-upload.component.d.ts +4 -2
  239. package/file-upload/single-file-upload.component.d.ts +5 -3
  240. package/filter-bar/_filter-bar-theme.scss +2 -2
  241. package/filter-bar/filters.d.ts +1 -0
  242. package/filter-bar/pipes/pipe-date.d.ts +3 -1
  243. package/filter-bar/pipes/pipe-datetime.d.ts +3 -1
  244. package/filter-bar/pipes/pipe-multi-select.d.ts +0 -1
  245. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +3 -2
  246. package/filter-bar/pipes/pipe-select.d.ts +0 -1
  247. package/filter-bar/pipes/pipe-tree-select.d.ts +3 -2
  248. package/form-field/_form-field-theme.scss +27 -18
  249. package/form-field/cleaner.d.ts +4 -2
  250. package/form-field/cleaner.scss +6 -2
  251. package/form-field/form-field.scss +12 -2
  252. package/form-field/password-hint.d.ts +7 -0
  253. package/form-field/password-toggle.d.ts +23 -3
  254. package/form-field/password-toggle.scss +4 -8
  255. package/form-field/reactive-password-hint.d.ts +1 -0
  256. package/icon/_icon-button-theme.scss +8 -2
  257. package/modal/modal.component.d.ts +6 -6
  258. package/navbar-ic/_navbar-ic-theme.scss +81 -0
  259. package/navbar-ic/index.d.ts +1 -0
  260. package/navbar-ic/navbar-ic-divider.scss +7 -0
  261. package/navbar-ic/navbar-ic-header.d.ts +18 -0
  262. package/navbar-ic/navbar-ic-header.scss +53 -0
  263. package/navbar-ic/navbar-ic-item.d.ts +125 -0
  264. package/navbar-ic/navbar-ic-item.scss +96 -0
  265. package/navbar-ic/navbar-ic-tokens.scss +22 -0
  266. package/navbar-ic/navbar-ic.animation.d.ts +2 -0
  267. package/navbar-ic/navbar-ic.d.ts +103 -0
  268. package/navbar-ic/navbar-ic.module.d.ts +14 -0
  269. package/navbar-ic/navbar-ic.scss +32 -0
  270. package/navbar-ic/public-api.d.ts +4 -0
  271. package/package.json +34 -4
  272. package/popover/_popover-theme.scss +6 -2
  273. package/popover/popover-confirm.component.d.ts +1 -1
  274. package/popover/popover-tokens.scss +2 -0
  275. package/popover/popover.component.d.ts +6 -3
  276. package/prebuilt-themes/dark-theme.css +1 -1
  277. package/prebuilt-themes/light-theme.css +1 -1
  278. package/prebuilt-themes/theme.css +1 -1
  279. package/schematics/ng-add/index.js +4 -4
  280. package/scrollbar/scrollbar.component.d.ts +4 -4
  281. package/select/select.component.d.ts +14 -2
  282. package/sidebar/sidebar.component.d.ts +31 -5
  283. package/sidepanel/sidepanel-container.component.d.ts +9 -0
  284. package/sidepanel/sidepanel-ref.d.ts +3 -3
  285. package/splitter/splitter.component.d.ts +2 -2
  286. package/tabs/tab-group.component.d.ts +1 -1
  287. package/tabs/tab.component.d.ts +1 -1
  288. package/tags/_tag-theme.scss +10 -1
  289. package/tags/tag-input.d.ts +1 -1
  290. package/tags/tag-list.component.d.ts +11 -3
  291. package/tags/tag-list.scss +5 -0
  292. package/tags/tag.component.d.ts +78 -8
  293. package/tags/tag.module.d.ts +1 -1
  294. package/tags/tag.scss +18 -0
  295. package/textarea/textarea-tokens.scss +1 -1
  296. package/timepicker/timepicker.directive.d.ts +1 -1
  297. package/tooltip/_tooltip-theme.scss +9 -2
  298. package/tooltip/tooltip-tokens.scss +2 -0
  299. package/tooltip/tooltip.component.d.ts +2 -2
  300. package/tree/tree-selection.component.d.ts +1 -1
  301. package/tree-select/tree-select.component.d.ts +1 -1
  302. package/username/constants.d.ts +15 -0
  303. package/username/index.d.ts +5 -0
  304. package/username/module.d.ts +8 -0
  305. package/username/types.d.ts +62 -0
  306. package/username/username-tokens.scss +6 -0
  307. package/username/username.d.ts +68 -0
  308. package/username/username.pipe.d.ts +23 -0
  309. package/username/username.scss +107 -0
@@ -84,6 +84,16 @@ export const zhCNLocaleData = {
84
84
  customPeriodErrorHint: '时段开始时间不能晚于结束时间',
85
85
  backToPeriodSelection: '返回以选择一个时段'
86
86
  }
87
+ },
88
+ clampedText: {
89
+ openText: '展开',
90
+ closeText: '收起'
91
+ },
92
+ navbarIc: {
93
+ toggle: {
94
+ pinButton: '保持展开',
95
+ collapseButton: '折叠'
96
+ }
87
97
  }
88
98
  };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemgtQ04uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbG9jYWxlcy96aC1DTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFO0lBQ2hELFVBQVUsRUFBRTtRQUNSLFdBQVcsRUFBRSxPQUFPO0tBQ3ZCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFO1lBQ1QsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsS0FBSztTQUNmO0tBQ0o7SUFDRCxVQUFVLEVBQUU7UUFDUixNQUFNLEVBQUU7WUFDSixXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJO1NBQ25CO1FBQ0QsUUFBUSxFQUFFO1lBQ04sV0FBVyxFQUFFLHVCQUF1QjtZQUNwQyx1QkFBdUIsRUFBRSx5QkFBeUI7WUFDbEQseUJBQXlCLEVBQUUsdUJBQXVCO1lBQ2xELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsV0FBVyxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJO2FBQ2I7U0FDSjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsaUJBQWlCLEVBQUUsUUFBUTtRQUMzQixrQkFBa0IsRUFBRSxRQUFRO1FBQzVCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGFBQWEsRUFBRSxNQUFNO1FBQ3JCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLFlBQVksRUFBRSxNQUFNO1FBQ3BCLHlCQUF5QixFQUFFLFVBQVU7S0FDRTtJQUMzQyxRQUFRLEVBQUU7UUFDTixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsWUFBWSxFQUFFLE1BQU07S0FDc0I7SUFDOUMsU0FBUyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7U0FDbkI7UUFDRCxNQUFNLEVBQUU7WUFDSixPQUFPLEVBQUUsSUFBSTtZQUNiLFdBQVcsRUFBRSxJQUFJO1NBQ3BCO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsV0FBVyxFQUFFLEtBQUs7WUFDbEIsb0JBQW9CLEVBQUUsUUFBUTtZQUM5QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsV0FBVyxFQUFFLE1BQU07WUFDbkIsU0FBUyxFQUFFLE9BQU87WUFDbEIsTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsSUFBSTtZQUNsQixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLGNBQWM7WUFDckIsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNyQjtRQUNELEdBQUcsRUFBRTtZQUNELE9BQU8sRUFBRSxPQUFPO1NBQ25CO1FBQ0QsSUFBSSxFQUFFO1lBQ0Ysa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsU0FBUyxFQUFFLE1BQU07U0FDcEI7UUFDRCxRQUFRLEVBQUU7WUFDTixZQUFZLEVBQUUsT0FBTztZQUNyQixnQkFBZ0IsRUFBRSxHQUFHO1lBQ3JCLGNBQWMsRUFBRSxHQUFHO1lBQ25CLHFCQUFxQixFQUFFLGdCQUFnQjtZQUN2QyxxQkFBcUIsRUFBRSxXQUFXO1NBQ3JDO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2JxQWN0aW9uc1BhbmVsTG9jYWxlQ29uZmlndXJhdGlvbiwgS2JxQ29kZUJsb2NrTG9jYWxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgemhDTkxvY2FsZURhdGEgPSB7XG4gICAgc2VsZWN0OiB7IGhpZGRlbkl0ZW1zVGV4dDogJ+WPpuWkliB7eyBudW1iZXIgfX0g5LiqJyB9LFxuICAgIGRhdGVwaWNrZXI6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6ICflubQv5pyIL+aXpSdcbiAgICB9LFxuICAgIHRpbWVwaWNrZXI6IHtcbiAgICAgICAgcGxhY2Vob2xkZXI6IHtcbiAgICAgICAgICAgIGZ1bGw6ICfml7Y65YiGOuenkicsXG4gICAgICAgICAgICBzaG9ydDogJ+aXtjrliIYnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVVcGxvYWQ6IHtcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgICBjYXB0aW9uVGV4dDogJ+WwhuaWh+S7tuaLluWIsOatpOWkhOaIlnt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgYnJvd3NlTGluazogJ+mAieaLqSdcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlwbGU6IHtcbiAgICAgICAgICAgIGNhcHRpb25UZXh0OiAn5ouW5Yiw5q2k5aSE5oiWe3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBjYXB0aW9uVGV4dFdoZW5TZWxlY3RlZDogJ+aLluWKqOabtOWkmuaWh+S7tuaIlnt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgY2FwdGlvblRleHRGb3JDb21wYWN0U2l6ZTogJ+aLluWKqOaWh+S7tuaIlnt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgYnJvd3NlTGluazogJ+mAieaLqScsXG4gICAgICAgICAgICB0aXRsZTogJ+S4iuS8oOaWh+S7ticsXG4gICAgICAgICAgICBncmlkSGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGZpbGU6ICfmlofku7YnLFxuICAgICAgICAgICAgICAgIHNpemU6ICflpKflsI8nXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvZGVCbG9jazoge1xuICAgICAgICBzb2Z0V3JhcE9uVG9vbHRpcDogJ+WQr+eUqOaWh+acrOaNouihjCcsXG4gICAgICAgIHNvZnRXcmFwT2ZmVG9vbHRpcDogJ+emgeeUqOaWh+acrOaNouihjCcsXG4gICAgICAgIGRvd25sb2FkVG9vbHRpcDogJ+S4i+i9vScsXG4gICAgICAgIGNvcGllZFRvb2x0aXA6ICfinJPlt7LlpI3liLYnLFxuICAgICAgICBjb3B5VG9vbHRpcDogJ+WkjeWIticsXG4gICAgICAgIHZpZXdBbGxUZXh0OiAn5pi+56S65YWo6YOoJyxcbiAgICAgICAgdmlld0xlc3NUZXh0OiAn5pi+56S66YOo5YiGJyxcbiAgICAgICAgb3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcDogJ+WcqOWklumDqOezu+e7n+S4reaJk+W8gCdcbiAgICB9IHNhdGlzZmllcyBLYnFDb2RlQmxvY2tMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIHRpbWV6b25lOiB7XG4gICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAn5Z+O5biC5oiW5pe25Yy6J1xuICAgIH0sXG4gICAgYWN0aW9uc1BhbmVsOiB7XG4gICAgICAgIGNsb3NlVG9vbHRpcDogJ+WPlua2iOmAieaLqSdcbiAgICB9IHNhdGlzZmllcyBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIGZpbHRlckJhcjoge1xuICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgYnV0dG9uTmFtZTogJ+mHjee9ridcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgICB0b29sdGlwOiAn5pCc57SiJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAn5pCc57SiJ1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBkZWZhdWx0TmFtZTogJ+etm+mAieWZqCcsXG4gICAgICAgICAgICBzYXZlTmV3RmlsdGVyVG9vbHRpcDogJ+S/neWtmOaWsOetm+mAieWZqCcsXG4gICAgICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ+aQnOe0oicsXG4gICAgICAgICAgICBzZWFyY2hFbXB0eVJlc3VsdDogJ+acquaJvuWIsOS7u+S9leWGheWuuScsXG4gICAgICAgICAgICBzYXZlQXNOZXdGaWx0ZXI6ICflj6blrZjkuLrmlrDnrZvpgInlmagnLFxuICAgICAgICAgICAgc2F2ZUNoYW5nZXM6ICfkv53lrZjmm7TmlLknLFxuICAgICAgICAgICAgc2F2ZUFzTmV3OiAn5Y+m5a2Y5Li65paw55qEJyxcbiAgICAgICAgICAgIGNoYW5nZTogJ+e8lui+kScsXG4gICAgICAgICAgICByZXNldENoYW5nZXM6ICfph43nva4nLFxuICAgICAgICAgICAgcmVtb3ZlOiAn5Yig6ZmkJyxcbiAgICAgICAgICAgIG5hbWU6ICflkI3np7AnLFxuICAgICAgICAgICAgZXJyb3I6ICflt7Lnu4/kvb/nlKjmraTlkI3np7Dov5vooYzov4fmkJzntKInLFxuICAgICAgICAgICAgZXJyb3JIaW50OiAn5peg5rOV5L+d5a2Y562b6YCJ5Zmo44CC6K+36YeN6K+V5oiW6IGU57O7566h55CG5ZGY44CCJyxcbiAgICAgICAgICAgIHNhdmVCdXR0b246ICfkv53lrZgnLFxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiAn5Y+W5raIJ1xuICAgICAgICB9LFxuICAgICAgICBhZGQ6IHtcbiAgICAgICAgICAgIHRvb2x0aXA6ICfmt7vliqDnrZvpgInlmagnXG4gICAgICAgIH0sXG4gICAgICAgIHBpcGU6IHtcbiAgICAgICAgICAgIGNsZWFyQnV0dG9uVG9vbHRpcDogJ+a4hemZpCcsXG4gICAgICAgICAgICByZW1vdmVCdXR0b25Ub29sdGlwOiAn5Yig6ZmkJyxcbiAgICAgICAgICAgIGFwcGx5QnV0dG9uOiAn5bqU55SoJyxcbiAgICAgICAgICAgIGVtcHR5U2VhcmNoUmVzdWx0OiAn5pyq5om+5Yiw5Lu75L2V5YaF5a65JyxcbiAgICAgICAgICAgIHNlbGVjdEFsbDogJ+mAieaLqeWFqOmDqCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZVBpcGU6IHtcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZDogJ+iHquWumuS5ieaXtuautScsXG4gICAgICAgICAgICBjdXN0b21QZXJpb2RGcm9tOiAn5LuOJyxcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZFRvOiAn5YiwJyxcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZEVycm9ySGludDogJ+aXtuauteW8gOWni+aXtumXtOS4jeiDveaZmuS6jue7k+adn+aXtumXtCcsXG4gICAgICAgICAgICBiYWNrVG9QZXJpb2RTZWxlY3Rpb246ICfov5Tlm57ku6XpgInmi6nkuIDkuKrml7bmrrUnXG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemgtQ04uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbG9jYWxlcy96aC1DTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFO0lBQ2hELFVBQVUsRUFBRTtRQUNSLFdBQVcsRUFBRSxPQUFPO0tBQ3ZCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFO1lBQ1QsSUFBSSxFQUFFLE9BQU87WUFDYixLQUFLLEVBQUUsS0FBSztTQUNmO0tBQ0o7SUFDRCxVQUFVLEVBQUU7UUFDUixNQUFNLEVBQUU7WUFDSixXQUFXLEVBQUUsMEJBQTBCO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJO1NBQ25CO1FBQ0QsUUFBUSxFQUFFO1lBQ04sV0FBVyxFQUFFLHVCQUF1QjtZQUNwQyx1QkFBdUIsRUFBRSx5QkFBeUI7WUFDbEQseUJBQXlCLEVBQUUsdUJBQXVCO1lBQ2xELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1lBQ2IsV0FBVyxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSxJQUFJO2FBQ2I7U0FDSjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsaUJBQWlCLEVBQUUsUUFBUTtRQUMzQixrQkFBa0IsRUFBRSxRQUFRO1FBQzVCLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGFBQWEsRUFBRSxNQUFNO1FBQ3JCLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLFlBQVksRUFBRSxNQUFNO1FBQ3BCLHlCQUF5QixFQUFFLFVBQVU7S0FDRTtJQUMzQyxRQUFRLEVBQUU7UUFDTixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsWUFBWSxFQUFFLE1BQU07S0FDc0I7SUFDOUMsU0FBUyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLElBQUk7U0FDbkI7UUFDRCxNQUFNLEVBQUU7WUFDSixPQUFPLEVBQUUsSUFBSTtZQUNiLFdBQVcsRUFBRSxJQUFJO1NBQ3BCO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsV0FBVyxFQUFFLEtBQUs7WUFDbEIsb0JBQW9CLEVBQUUsUUFBUTtZQUM5QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsZUFBZSxFQUFFLFNBQVM7WUFDMUIsV0FBVyxFQUFFLE1BQU07WUFDbkIsU0FBUyxFQUFFLE9BQU87WUFDbEIsTUFBTSxFQUFFLElBQUk7WUFDWixZQUFZLEVBQUUsSUFBSTtZQUNsQixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLGNBQWM7WUFDckIsU0FBUyxFQUFFLG9CQUFvQjtZQUMvQixVQUFVLEVBQUUsSUFBSTtZQUNoQixZQUFZLEVBQUUsSUFBSTtTQUNyQjtRQUNELEdBQUcsRUFBRTtZQUNELE9BQU8sRUFBRSxPQUFPO1NBQ25CO1FBQ0QsSUFBSSxFQUFFO1lBQ0Ysa0JBQWtCLEVBQUUsSUFBSTtZQUN4QixtQkFBbUIsRUFBRSxJQUFJO1lBQ3pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsU0FBUyxFQUFFLE1BQU07U0FDcEI7UUFDRCxRQUFRLEVBQUU7WUFDTixZQUFZLEVBQUUsT0FBTztZQUNyQixnQkFBZ0IsRUFBRSxHQUFHO1lBQ3JCLGNBQWMsRUFBRSxHQUFHO1lBQ25CLHFCQUFxQixFQUFFLGdCQUFnQjtZQUN2QyxxQkFBcUIsRUFBRSxXQUFXO1NBQ3JDO0tBQ0o7SUFDRCxXQUFXLEVBQUU7UUFDVCxRQUFRLEVBQUUsSUFBSTtRQUNkLFNBQVMsRUFBRSxJQUFJO0tBQ21CO0lBQ3RDLFFBQVEsRUFBRTtRQUNOLE1BQU0sRUFBRTtZQUNKLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1NBQ3ZCO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIEticUNsYW1wZWRUZXh0TG9jYWxlQ29uZmlnLFxuICAgIEticUNvZGVCbG9ja0xvY2FsZUNvbmZpZ3VyYXRpb25cbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCB6aENOTG9jYWxlRGF0YSA9IHtcbiAgICBzZWxlY3Q6IHsgaGlkZGVuSXRlbXNUZXh0OiAn5Y+m5aSWIHt7IG51bWJlciB9fSDkuKonIH0sXG4gICAgZGF0ZXBpY2tlcjoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJ+W5tC/mnIgv5pelJ1xuICAgIH0sXG4gICAgdGltZXBpY2tlcjoge1xuICAgICAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgICAgICAgZnVsbDogJ+aXtjrliIY656eSJyxcbiAgICAgICAgICAgIHNob3J0OiAn5pe2OuWIhidcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZmlsZVVwbG9hZDoge1xuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICAgIGNhcHRpb25UZXh0OiAn5bCG5paH5Lu25ouW5Yiw5q2k5aSE5oiWe3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBicm93c2VMaW5rOiAn6YCJ5oupJ1xuICAgICAgICB9LFxuICAgICAgICBtdWx0aXBsZToge1xuICAgICAgICAgICAgY2FwdGlvblRleHQ6ICfmi5bliLDmraTlpITmiJZ7eyBicm93c2VMaW5rIH19JyxcbiAgICAgICAgICAgIGNhcHRpb25UZXh0V2hlblNlbGVjdGVkOiAn5ouW5Yqo5pu05aSa5paH5Lu25oiWe3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBjYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiAn5ouW5Yqo5paH5Lu25oiWe3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBicm93c2VMaW5rOiAn6YCJ5oupJyxcbiAgICAgICAgICAgIHRpdGxlOiAn5LiK5Lyg5paH5Lu2JyxcbiAgICAgICAgICAgIGdyaWRIZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgZmlsZTogJ+aWh+S7ticsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ+Wkp+WwjydcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29kZUJsb2NrOiB7XG4gICAgICAgIHNvZnRXcmFwT25Ub29sdGlwOiAn5ZCv55So5paH5pys5o2i6KGMJyxcbiAgICAgICAgc29mdFdyYXBPZmZUb29sdGlwOiAn56aB55So5paH5pys5o2i6KGMJyxcbiAgICAgICAgZG93bmxvYWRUb29sdGlwOiAn5LiL6L29JyxcbiAgICAgICAgY29waWVkVG9vbHRpcDogJ+Kck+W3suWkjeWIticsXG4gICAgICAgIGNvcHlUb29sdGlwOiAn5aSN5Yi2JyxcbiAgICAgICAgdmlld0FsbFRleHQ6ICfmmL7npLrlhajpg6gnLFxuICAgICAgICB2aWV3TGVzc1RleHQ6ICfmmL7npLrpg6jliIYnLFxuICAgICAgICBvcGVuRXh0ZXJuYWxTeXN0ZW1Ub29sdGlwOiAn5Zyo5aSW6YOo57O757uf5Lit5omT5byAJ1xuICAgIH0gc2F0aXNmaWVzIEticUNvZGVCbG9ja0xvY2FsZUNvbmZpZ3VyYXRpb24sXG4gICAgdGltZXpvbmU6IHtcbiAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICfln47luILmiJbml7bljLonXG4gICAgfSxcbiAgICBhY3Rpb25zUGFuZWw6IHtcbiAgICAgICAgY2xvc2VUb29sdGlwOiAn5Y+W5raI6YCJ5oupJ1xuICAgIH0gc2F0aXNmaWVzIEticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb24sXG4gICAgZmlsdGVyQmFyOiB7XG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBidXR0b25OYW1lOiAn6YeN572uJ1xuICAgICAgICB9LFxuICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICAgIHRvb2x0aXA6ICfmkJzntKInLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICfmkJzntKInXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIGRlZmF1bHROYW1lOiAn562b6YCJ5ZmoJyxcbiAgICAgICAgICAgIHNhdmVOZXdGaWx0ZXJUb29sdGlwOiAn5L+d5a2Y5paw562b6YCJ5ZmoJyxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAn5pCc57SiJyxcbiAgICAgICAgICAgIHNlYXJjaEVtcHR5UmVzdWx0OiAn5pyq5om+5Yiw5Lu75L2V5YaF5a65JyxcbiAgICAgICAgICAgIHNhdmVBc05ld0ZpbHRlcjogJ+WPpuWtmOS4uuaWsOetm+mAieWZqCcsXG4gICAgICAgICAgICBzYXZlQ2hhbmdlczogJ+S/neWtmOabtOaUuScsXG4gICAgICAgICAgICBzYXZlQXNOZXc6ICflj6blrZjkuLrmlrDnmoQnLFxuICAgICAgICAgICAgY2hhbmdlOiAn57yW6L6RJyxcbiAgICAgICAgICAgIHJlc2V0Q2hhbmdlczogJ+mHjee9ricsXG4gICAgICAgICAgICByZW1vdmU6ICfliKDpmaQnLFxuICAgICAgICAgICAgbmFtZTogJ+WQjeensCcsXG4gICAgICAgICAgICBlcnJvcjogJ+W3sue7j+S9v+eUqOatpOWQjeensOi/m+ihjOi/h+aQnOe0oicsXG4gICAgICAgICAgICBlcnJvckhpbnQ6ICfml6Dms5Xkv53lrZjnrZvpgInlmajjgILor7fph43or5XmiJbogZTns7vnrqHnkIblkZjjgIInLFxuICAgICAgICAgICAgc2F2ZUJ1dHRvbjogJ+S/neWtmCcsXG4gICAgICAgICAgICBjYW5jZWxCdXR0b246ICflj5bmtognXG4gICAgICAgIH0sXG4gICAgICAgIGFkZDoge1xuICAgICAgICAgICAgdG9vbHRpcDogJ+a3u+WKoOetm+mAieWZqCdcbiAgICAgICAgfSxcbiAgICAgICAgcGlwZToge1xuICAgICAgICAgICAgY2xlYXJCdXR0b25Ub29sdGlwOiAn5riF6ZmkJyxcbiAgICAgICAgICAgIHJlbW92ZUJ1dHRvblRvb2x0aXA6ICfliKDpmaQnLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246ICflupTnlKgnLFxuICAgICAgICAgICAgZW1wdHlTZWFyY2hSZXN1bHQ6ICfmnKrmib7liLDku7vkvZXlhoXlrrknLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiAn6YCJ5oup5YWo6YOoJ1xuICAgICAgICB9LFxuICAgICAgICBkYXRlUGlwZToge1xuICAgICAgICAgICAgY3VzdG9tUGVyaW9kOiAn6Ieq5a6a5LmJ5pe25q61JyxcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZEZyb206ICfku44nLFxuICAgICAgICAgICAgY3VzdG9tUGVyaW9kVG86ICfliLAnLFxuICAgICAgICAgICAgY3VzdG9tUGVyaW9kRXJyb3JIaW50OiAn5pe25q615byA5aeL5pe26Ze05LiN6IO95pma5LqO57uT5p2f5pe26Ze0JyxcbiAgICAgICAgICAgIGJhY2tUb1BlcmlvZFNlbGVjdGlvbjogJ+i/lOWbnuS7pemAieaLqeS4gOS4quaXtuautSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2xhbXBlZFRleHQ6IHtcbiAgICAgICAgb3BlblRleHQ6ICflsZXlvIAnLFxuICAgICAgICBjbG9zZVRleHQ6ICfmlLbotbcnXG4gICAgfSBzYXRpc2ZpZXMgS2JxQ2xhbXBlZFRleHRMb2NhbGVDb25maWcsXG4gICAgbmF2YmFySWM6IHtcbiAgICAgICAgdG9nZ2xlOiB7XG4gICAgICAgICAgICBwaW5CdXR0b246ICfkv53mjIHlsZXlvIAnLFxuICAgICAgICAgICAgY29sbGFwc2VCdXR0b246ICfmipjlj6AnXG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './rectangle-item';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbmF2YmFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JlY3RhbmdsZS1pdGVtJztcbiJdfQ==
@@ -0,0 +1,39 @@
1
+ import { Platform } from '@angular/cdk/platform';
2
+ import { Directive, ElementRef, inject } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import { KBQ_WINDOW } from '../tokens';
5
+ import * as i0 from "@angular/core";
6
+ export class KbqRectangleItem {
7
+ constructor() {
8
+ this.isBrowser = inject(Platform).isBrowser;
9
+ this.nativeElement = inject(ElementRef).nativeElement;
10
+ this.window = inject(KBQ_WINDOW);
11
+ this.state = new Subject();
12
+ }
13
+ get collapsed() {
14
+ return this._collapsed;
15
+ }
16
+ set collapsed(value) {
17
+ this._collapsed = value;
18
+ this.state.next();
19
+ }
20
+ getOuterElementWidth() {
21
+ if (!this.isBrowser)
22
+ return 0;
23
+ const { width, marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);
24
+ return [width, marginLeft, marginRight].reduce((acc, item) => acc + parseInt(item), 0);
25
+ }
26
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRectangleItem, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqRectangleItem, isStandalone: true, host: { properties: { "class.kbq-expanded": "!collapsed", "class.kbq-collapsed": "collapsed" } }, ngImport: i0 }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRectangleItem, decorators: [{
30
+ type: Directive,
31
+ args: [{
32
+ standalone: true,
33
+ host: {
34
+ '[class.kbq-expanded]': '!collapsed',
35
+ '[class.kbq-collapsed]': 'collapsed'
36
+ }
37
+ }]
38
+ }] });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdGFuZ2xlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbmF2YmFyL3JlY3RhbmdsZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVN2QyxNQUFNLE9BQU8sZ0JBQWdCO0lBUDdCO1FBUXVCLGNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNuRCxXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBDLFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBcUJ4QztJQW5CRyxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBSUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztrSUF6QlEsZ0JBQWdCO3NIQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBUDVCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixzQkFBc0IsRUFBRSxZQUFZO3dCQUNwQyx1QkFBdUIsRUFBRSxXQUFXO3FCQUN2QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLQlFfV0lORE9XIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3Mua2JxLWV4cGFuZGVkXSc6ICchY29sbGFwc2VkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29sbGFwc2VkXSc6ICdjb2xsYXBzZWQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFSZWN0YW5nbGVJdGVtIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNCcm93c2VyID0gaW5qZWN0KFBsYXRmb3JtKS5pc0Jyb3dzZXI7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdyA9IGluamVjdChLQlFfV0lORE9XKTtcblxuICAgIHJlYWRvbmx5IHN0YXRlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBjb2xsYXBzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgc2V0IGNvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jb2xsYXBzZWQgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLnN0YXRlLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb2xsYXBzZWQ6IGJvb2xlYW47XG5cbiAgICBnZXRPdXRlckVsZW1lbnRXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm4gMDtcblxuICAgICAgICBjb25zdCB7IHdpZHRoLCBtYXJnaW5MZWZ0LCBtYXJnaW5SaWdodCB9ID0gdGhpcy53aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBbd2lkdGgsIG1hcmdpbkxlZnQsIG1hcmdpblJpZ2h0XS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgcGFyc2VJbnQoaXRlbSksIDApO1xuICAgIH1cbn1cbiJdfQ==
@@ -77,8 +77,10 @@ export class KbqOption extends KbqOptionBase {
77
77
  * select's trigger.
78
78
  */
79
79
  get viewValue() {
80
- // TODO: Add input property alternative for node envs.
81
- return (this.getHostElement().textContent || '').trim();
80
+ return this._viewValue || (this.getHostElement().textContent || '').trim();
81
+ }
82
+ set viewValue(value) {
83
+ this._viewValue = value;
82
84
  }
83
85
  /** Whether the wrapping component is in multiple selection mode. */
84
86
  get multiple() {
@@ -222,7 +224,7 @@ export class KbqOption extends KbqOptionBase {
222
224
  return this.element.nativeElement;
223
225
  }
224
226
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: KBQ_OPTION_PARENT_COMPONENT, optional: true }, { token: i1.KbqOptgroup, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
225
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqOption, selector: "kbq-option", inputs: { value: "value", selectable: ["selectable", "selectable", booleanAttribute], userSelect: ["userSelect", "userSelect", booleanAttribute], showCheckbox: "showCheckbox", disabled: "disabled" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "attr.tabindex": "getTabIndex()", "class.kbq-selected": "selected", "class.kbq-option-multiple": "multiple", "class.kbq-active": "active", "class.kbq-disabled": "disabled", "id": "id" }, classAttribute: "kbq-option" }, providers: [
227
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: KbqOption, selector: "kbq-option", inputs: { value: "value", selectable: ["selectable", "selectable", booleanAttribute], userSelect: ["userSelect", "userSelect", booleanAttribute], showCheckbox: "showCheckbox", viewValue: "viewValue", disabled: "disabled" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "attr.tabindex": "getTabIndex()", "class.kbq-selected": "selected", "class.kbq-option-multiple": "multiple", "class.kbq-active": "active", "class.kbq-disabled": "disabled", "id": "id" }, classAttribute: "kbq-option" }, providers: [
226
228
  {
227
229
  provide: KBQ_TITLE_TEXT_REF,
228
230
  useExisting: KbqOption
@@ -269,6 +271,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
269
271
  type: Input
270
272
  }], onSelectionChange: [{
271
273
  type: Output
274
+ }], viewValue: [{
275
+ type: Input
272
276
  }], disabled: [{
273
277
  type: Input
274
278
  }] } });
@@ -311,4 +315,4 @@ export function getOptionScrollPosition(optionIndex, optionHeight, currentScroll
311
315
  }
312
316
  return currentScrollPosition;
313
317
  }
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL29wdGlvbi9vcHRpb24udHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvb3B0aW9uL29wdGlvbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUV6Qzs7O0dBR0c7QUFDSCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFeEIscUVBQXFFO0FBQ3JFLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFDVyxNQUFTLEVBQ1QsY0FBYyxLQUFLO1FBRG5CLFdBQU0sR0FBTixNQUFNLENBQUc7UUFDVCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUMzQixDQUFDO0NBQ1A7QUFvQkQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsNkJBQTZCLENBQUMsQ0FBQztBQUV2SCxNQUFNLE9BQWdCLGFBQWE7SUFZL0Isd0NBQXdDO0lBQzlCLHdC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fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTlRFUiwgU1BBQ0UgfSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLQlFfVElUTEVfVEVYVF9SRUYsIEticVRpdGxlVGV4dFJlZiB9IGZyb20gJy4uL3RpdGxlJztcbmltcG9ydCB7IEticU9wdGdyb3VwIH0gZnJvbSAnLi9vcHRncm91cCc7XG5cbi8qKlxuICogT3B0aW9uIElEcyBuZWVkIHRvIGJlIHVuaXF1ZSBhY3Jvc3MgY29tcG9uZW50cywgc28gdGhpcyBjb3VudGVyIGV4aXN0cyBvdXRzaWRlIG9mXG4gKiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uXG4gKi9cbmxldCB1bmlxdWVJZENvdW50ZXIgPSAwO1xuXG4vKiogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxT3B0aW9uIHdoZW4gc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbmV4cG9ydCBjbGFzcyBLYnFPcHRpb25TZWxlY3Rpb25DaGFuZ2U8VCA9IEticU9wdGlvbj4ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc291cmNlOiBULFxuICAgICAgICBwdWJsaWMgaXNVc2VySW5wdXQgPSBmYWxzZVxuICAgICkge31cbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBwYXJlbnQgY29tcG9uZW50IHRoYXQgbWFuYWdlcyBhIGxpc3Qgb2Ygb3B0aW9ucy5cbiAqIENvbnRhaW5zIHByb3BlcnRpZXMgdGhhdCB0aGUgb3B0aW9ucyBjYW4gaW5oZXJpdC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFPcHRpb25QYXJlbnRDb21wb25lbnQge1xuICAgIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgICBtdWx0aVNlbGVjdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogSGFuZGxlciB0aGF0IHdpbGwgdXBkYXRlIHNjcm9sbCBwb3NpdGlvbiBvZiBlbGVtZW50cyBpbnNpZGUgb3ZlcmxheVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleWJvYXJkTmF2aWdhdGlvbkhhbmRsZXIge1xuICAgIC8qKiBTY3JvbGxzIHRoZSBhY3RpdmUgb3B0aW9uIGludG8gdmlldy4gKi9cbiAgICBzY3JvbGxBY3RpdmVPcHRpb25JbnRvVmlldygpOiB2b2lkO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB1c2VkIHRvIHByb3ZpZGUgdGhlIHBhcmVudCBjb21wb25lbnQgdG8gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEtCUV9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxLYnFPcHRpb25QYXJlbnRDb21wb25lbnQ+KCdLQlFfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQnKTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEticU9wdGlvbkJhc2Uge1xuICAgIHZhbHVlOiBhbnk7XG4gICAgYWJzdHJhY3QgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG4gICAgYWJzdHJhY3Qgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpO1xuXG4gICAgYWJzdHJhY3QgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFPcHRpb25TZWxlY3Rpb25DaGFuZ2U8YW55Pj47XG5cbiAgICBhYnN0cmFjdCBzZWxlY3QoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGRlc2VsZWN0KCk6IHZvaWQ7XG5cbiAgICAvKiogRW1pdHMgdGhlIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnQuICovXG4gICAgcHJvdGVjdGVkIGVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudChpc1VzZXJJbnB1dCA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChuZXcgS2JxT3B0aW9uU2VsZWN0aW9uQ2hhbmdlKHRoaXMsIGlzVXNlcklucHV0KSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2JxVmlydHVhbE9wdGlvbiBleHRlbmRzIEticU9wdGlvbkJhc2Uge1xuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIGdldCB2aWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEticU9wdGlvblNlbGVjdGlvbkNoYW5nZTxLYnFWaXJ0dWFsT3B0aW9uPj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgdmFsdWU6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBTaW5nbGUgb3B0aW9uIGluc2lkZSBvZiBhIGA8a2JxLXNlbGVjdD5gIGVsZW1lbnQuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2JxLW9wdGlvbicsXG4gICAgZXhwb3J0QXM6ICdrYnFPcHRpb24nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICdnZXRUYWJJbmRleCgpJyxcbiAgICAgICAgY2xhc3M6ICdrYnEtb3B0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtc2VsZWN0ZWRdJzogJ3NlbGVjdGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtb3B0aW9uLW11bHRpcGxlXSc6ICdtdWx0aXBsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGl2ZV0nOiAnYWN0aXZlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuXG4gICAgICAgICcoY2xpY2spJzogJ3NlbGVjdFZpYUludGVyYWN0aW9uKCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KSdcbiAgICB9LFxuICAgIC8qIENvbXBvbmVudCBpbmhlcml0cyBzdHlsZXMgZnJvbSBgbGlzdGAsIHNvIGBsaXN0YCB2YXJpYWJsZXMgYXJlIGltcG9ydGVkIGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLiAqL1xuICAgIHN0eWxlVXJsczogWydvcHRpb24uc2NzcycsICdvcHRpb24tdG9rZW5zLnNjc3MnXSxcbiAgICB0ZW1wbGF0ZVVybDogJ29wdGlvbi5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBLQlFfVElUTEVfVEVYVF9SRUYsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogS2JxT3B0aW9uXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEticU9wdGlvbiBleHRlbmRzIEticU9wdGlvbkJhc2UgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3ksIEticVRpdGxlVGV4dFJlZiB7XG4gICAgQFZpZXdDaGlsZCgna2JxVGl0bGVUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFRoZSBmb3JtIHZhbHVlIG9mIHRoZSBvcHRpb24uICovXG4gICAgQElucHV0KCkgdmFsdWU6IGFueTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8vIHRvZG8gdGhpcyBmbGFnIHdpbGwgbmVlZCB0byBiZSByZXRob3VnaHQgaW4gdGhlIGZ1dHVyZSAoYWRkZWQgZm9yIGZpbHRlciBwYW5lbClcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdXNlclNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd0NoZWNrYm94KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NoZWNrYm94ID09PSB1bmRlZmluZWQgPyB0aGlzLm11bHRpcGxlIDogdGhpcy5fc2hvd0NoZWNrYm94O1xuICAgIH1cblxuICAgIHNldCBzaG93Q2hlY2tib3godmFsdWUpIHtcbiAgICAgICAgdGhpcy5fc2hvd0NoZWNrYm94ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zaG93Q2hlY2tib3g6IGJvb2xlYW47XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEticU9wdGlvblNlbGVjdGlvbkNoYW5nZT4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGNoYW5nZXMgYW5kIGFueSBwYXJlbnRzIGhhdmUgdG8gYmUgbm90aWZpZWQuICovXG4gICAgcmVhZG9ubHkgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkaXNwbGF5ZWQgdmFsdWUgb2YgdGhlIG9wdGlvbi4gSXQgaXMgbmVjZXNzYXJ5IHRvIHNob3cgdGhlIHNlbGVjdGVkIG9wdGlvbiBpbiB0aGVcbiAgICAgKiBzZWxlY3QncyB0cmlnZ2VyLlxuICAgICAqL1xuICAgIGdldCB2aWV3VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgLy8gVE9ETzogQWRkIGlucHV0IHByb3BlcnR5IGFsdGVybmF0aXZlIGZvciBub2RlIGVudnMuXG4gICAgICAgIHJldHVybiAodGhpcy5nZXRIb3N0RWxlbWVudCgpLnRleHRDb250ZW50IHx8ICcnKS50cmltKCk7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHdyYXBwaW5nIGNvbXBvbmVudCBpcyBpbiBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZS4gKi9cbiAgICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucGFyZW50Py5tdWx0aVNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2lkID0gYGticS1vcHRpb24tJHt1bmlxdWVJZENvdW50ZXIrK31gO1xuXG4gICAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAgJiYgdGhpcy5ncm91cC5kaXNhYmxlZCkgfHwgdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgb3B0aW9uIGlzIGN1cnJlbnRseSBhY3RpdmUgYW5kIHJlYWR5IHRvIGJlIHNlbGVjdGVkLlxuICAgICAqIEFuIGFjdGl2ZSBvcHRpb24gZGlzcGxheXMgc3R5bGVzIGFzIGlmIGl0IGlzIGZvY3VzZWQsIGJ1dCB0aGVcbiAgICAgKiBmb2N1cyBpcyBhY3R1YWxseSByZXRhaW5lZCBzb21ld2hlcmUgZWxzZS4gVGhpcyBjb21lcyBpbiBoYW5keVxuICAgICAqIGZvciBjb21wb25lbnRzIGxpa2UgYXV0b2NvbXBsZXRlIHdoZXJlIGZvY3VzIG11c3QgcmVtYWluIG9uIHRoZSBpbnB1dC5cbiAgICAgKi9cbiAgICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBtb3N0UmVjZW50Vmlld1ZhbHVlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQpIHByaXZhdGUgcmVhZG9ubHkgcGFyZW50OiBLYnFPcHRpb25QYXJlbnRDb21wb25lbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHJlYWRvbmx5IGdyb3VwOiBLYnFPcHRncm91cFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgLy8gU2luY2UgcGFyZW50IGNvbXBvbmVudHMgY291bGQgYmUgdXNpbmcgdGhlIG9wdGlvbidzIGxhYmVsIHRvIGRpc3BsYXkgdGhlIHNlbGVjdGVkIHZhbHVlc1xuICAgICAgICAvLyAoZS5nLiBga2JxLXNlbGVjdGApIGFuZCB0aGV5IGRvbid0IGhhdmUgYSB3YXkgb2Yga25vd2luZyBpZiB0aGUgb3B0aW9uJ3MgbGFiZWwgaGFzIGNoYW5nZWRcbiAgICAgICAgLy8gd2UgaGF2ZSB0byBjaGVjayBmb3IgY2hhbmdlcyBpbiB0aGUgRE9NIG91cnNlbHZlcyBhbmQgZGlzcGF0Y2ggYW4gZXZlbnQuIFRoZXNlIGNoZWNrcyBhcmVcbiAgICAgICAgLy8gcmVsYXRpdmVseSBjaGVhcCwgaG93ZXZlciB3ZSBzdGlsbCBsaW1pdCB0aGVtIG9ubHkgdG8gc2VsZWN0ZWQgb3B0aW9ucyBpbiBvcmRlciB0byBhdm9pZFxuICAgICAgICAvLyBoaXR0aW5nIHRoZSBET00gdG9vIG9mdGVuLlxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudmlld1ZhbHVlO1xuXG4gICAgICAgICAgICBpZiAodmlld1ZhbHVlICE9PSB0aGlzLm1vc3RSZWNlbnRWaWV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vc3RSZWNlbnRWaWV3VmFsdWUgPSB2aWV3VmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IERPTVJlY3Q6IERPTVJlY3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRDbGllbnRSZWN0cygpWzBdO1xuXG4gICAgICAgIHJldHVybiBET01SZWN0ID8gRE9NUmVjdC5oZWlnaHQgOiAwO1xuICAgIH1cblxuICAgIHNlbGVjdChlbWl0RXZlbnQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIGlmIChlbWl0RXZlbnQpIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXNlbGVjdChlbWl0RXZlbnQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIGlmIChlbWl0RXZlbnQpIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGVsZW1lbnQuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHNldHMgZGlzcGxheSBzdHlsZXMgb24gdGhlIG9wdGlvbiB0byBtYWtlIGl0IGFwcGVhclxuICAgICAqIGFjdGl2ZS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciBzbyBrZXlcbiAgICAgKiBldmVudHMgd2lsbCBkaXNwbGF5IHRoZSBwcm9wZXIgb3B0aW9ucyBhcyBhY3RpdmUgb24gYXJyb3cga2V5IGV2ZW50cy5cbiAgICAgKi9cbiAgICBzZXRBY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJlbW92ZXMgZGlzcGxheSBzdHlsZXMgb24gdGhlIG9wdGlvbiB0aGF0IG1hZGUgaXQgYXBwZWFyXG4gICAgICogYWN0aXZlLiBUaGlzIGlzIHVzZWQgYnkgdGhlIEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyIHNvIGtleVxuICAgICAqIGV2ZW50cyB3aWxsIGRpc3BsYXkgdGhlIHByb3BlciBvcHRpb25zIGFzIGFjdGl2ZSBvbiBhcnJvdyBrZXkgZXZlbnRzLlxuICAgICAqL1xuICAgIHNldEluYWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogR2V0cyB0aGUgbGFiZWwgdG8gYmUgdXNlZCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIG9wdGlvbiBzaG91bGQgYmUgZm9jdXNlZC4gKi9cbiAgICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEVuc3VyZXMgdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCB3aGVuIGFjdGl2YXRlZCBmcm9tIHRoZSBrZXlib2FyZC4gKi9cbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBFTlRFUiB8fCBldmVudC5rZXlDb2RlID09PSBTUEFDRSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RWaWFJbnRlcmFjdGlvbigpO1xuXG4gICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBwYWdlIGZyb20gc2Nyb2xsaW5nIGRvd24gYW5kIGZvcm0gc3VibWl0cy5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGBTZWxlY3RzIHRoZSBvcHRpb24gd2hpbGUgaW5kaWNhdGluZyB0aGUgc2VsZWN0aW9uIGNhbWUgZnJvbSB0aGUgdXNlci4gVXNlZCB0b1xuICAgICAqIGRldGVybWluZSBpZiB0aGUgc2VsZWN0J3MgdmlldyAtPiBtb2RlbCBjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZC5gXG4gICAgICovXG4gICAgc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnVzZXJTZWxlY3QpIHJldHVybjtcblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRoaXMubXVsdGlwbGUgPyAhdGhpcy5fc2VsZWN0ZWQgOiB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUYWJJbmRleCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICctMScgOiAnMCc7XG4gICAgfVxuXG4gICAgZ2V0SG9zdEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIENvdW50cyB0aGUgYW1vdW50IG9mIG9wdGlvbiBncm91cCBsYWJlbHMgdGhhdCBwcmVjZWRlIHRoZSBzcGVjaWZpZWQgb3B0aW9uLlxuICogQHBhcmFtIG9wdGlvbkluZGV4IEluZGV4IG9mIHRoZSBvcHRpb24gYXQgd2hpY2ggdG8gc3RhcnQgY291bnRpbmcuXG4gKiBAcGFyYW0gb3B0aW9ucyBGbGF0IGxpc3Qgb2YgYWxsIG9mIHRoZSBvcHRpb25zLlxuICogQHBhcmFtIG9wdGlvbkdyb3VwcyBGbGF0IGxpc3Qgb2YgYWxsIG9mIHRoZSBvcHRpb24gZ3JvdXBzLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY291bnRHcm91cExhYmVsc0JlZm9yZU9wdGlvbihcbiAgICBvcHRpb25JbmRleDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IFF1ZXJ5TGlzdDxLYnFPcHRpb24+LFxuICAgIG9wdGlvbkdyb3VwczogUXVlcnlMaXN0PEticU9wdGdyb3VwPlxuKTogbnVtYmVyIHtcbiAgICBpZiAob3B0aW9uR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBvcHRpb25zQXJyYXkgPSBvcHRpb25zLnRvQXJyYXkoKTtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gb3B0aW9uR3JvdXBzLnRvQXJyYXkoKTtcblxuICAgICAgICBsZXQgZ3JvdXBDb3VudGVyID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbkluZGV4ICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9uc0FycmF5W2ldLmdyb3VwICYmIG9wdGlvbnNBcnJheVtpXS5ncm91cCA9PT0gZ3JvdXBzW2dyb3VwQ291bnRlcl0pIHtcbiAgICAgICAgICAgICAgICBncm91cENvdW50ZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBncm91cENvdW50ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgcG9zaXRpb24gdG8gd2hpY2ggdG8gc2Nyb2xsIGEgcGFuZWwgaW4gb3JkZXIgZm9yIGFuIG9wdGlvbiB0byBiZSBpbnRvIHZpZXcuXG4gKiBAcGFyYW0gb3B0aW9uSW5kZXggSW5kZXggb2YgdGhlIG9wdGlvbiB0byBiZSBzY3JvbGxlZCBpbnRvIHRoZSB2aWV3LlxuICogQHBhcmFtIG9wdGlvbkhlaWdodCBIZWlnaHQgb2YgdGhlIG9wdGlvbnMuXG4gKiBAcGFyYW0gY3VycmVudFNjcm9sbFBvc2l0aW9uIEN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBwYW5lbC5cbiAqIEBwYXJhbSBwYW5lbEhlaWdodCBIZWlnaHQgb2YgdGhlIHBhbmVsLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uU2Nyb2xsUG9zaXRpb24oXG4gICAgb3B0aW9uSW5kZXg6IG51bWJlcixcbiAgICBvcHRpb25IZWlnaHQ6IG51bWJlcixcbiAgICBjdXJyZW50U2Nyb2xsUG9zaXRpb246IG51bWJlcixcbiAgICBwYW5lbEhlaWdodDogbnVtYmVyXG4pOiBudW1iZXIge1xuICAgIGNvbnN0IG9wdGlvbk9mZnNldCA9IG9wdGlvbkluZGV4ICogb3B0aW9uSGVpZ2h0O1xuXG4gICAgaWYgKG9wdGlvbk9mZnNldCA8IGN1cnJlbnRTY3JvbGxQb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gb3B0aW9uT2Zmc2V0O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25PZmZzZXQgKyBvcHRpb25IZWlnaHQgPiBjdXJyZW50U2Nyb2xsUG9zaXRpb24gKyBwYW5lbEhlaWdodCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgb3B0aW9uT2Zmc2V0IC0gcGFuZWxIZWlnaHQgKyBvcHRpb25IZWlnaHQpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50U2Nyb2xsUG9zaXRpb247XG59XG4iLCJAaWYgKHNob3dDaGVja2JveCkge1xuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImticS1wc2V1ZG8tY2hlY2tib3hcIj5cbiAgICAgICAgPGticS1wc2V1ZG8tY2hlY2tib3ggW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3N0YXRlXT1cInNlbGVjdGVkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCdcIiAvPlxuICAgIDwvbmctY29udGVudD5cbn1cblxuPHNwYW4gI2ticVRpdGxlVGV4dCBjbGFzcz1cImticS1vcHRpb24tdGV4dFwiPlxuICAgIDxuZy1jb250ZW50IC8+XG48L3NwYW4+XG4iXX0=
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL29wdGlvbi9vcHRpb24udHMiLCIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvb3B0aW9uL29wdGlvbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBbUIsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQzs7OztBQUV6Qzs7O0dBR0c7QUFDSCxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7QUFFeEIscUVBQXFFO0FBQ3JFLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFDVyxNQUFTLEVBQ1QsY0FBYyxLQUFLO1FBRG5CLFdBQU0sR0FBTixNQUFNLENBQUc7UUFDVCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUMzQixDQUFDO0NBQ1A7QUFvQkQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLGNBQWMsQ0FBMkIsNkJBQTZCLENBQUMsQ0FBQztBQUV2SCxNQUFNLE9BQWdCLGFBQWE7SUFZL0Isd0NBQXdDO0lBQzlCLHdC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LENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8scUJBQXFCLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVOVEVSLCBTUEFDRSB9IGZyb20gJ0Brb29iaXEvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtCUV9USVRMRV9URVhUX1JFRiwgS2JxVGl0bGVUZXh0UmVmIH0gZnJvbSAnLi4vdGl0bGUnO1xuaW1wb3J0IHsgS2JxT3B0Z3JvdXAgfSBmcm9tICcuL29wdGdyb3VwJztcblxuLyoqXG4gKiBPcHRpb24gSURzIG5lZWQgdG8gYmUgdW5pcXVlIGFjcm9zcyBjb21wb25lbnRzLCBzbyB0aGlzIGNvdW50ZXIgZXhpc3RzIG91dHNpZGUgb2ZcbiAqIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi5cbiAqL1xubGV0IHVuaXF1ZUlkQ291bnRlciA9IDA7XG5cbi8qKiBFdmVudCBvYmplY3QgZW1pdHRlZCBieSBLYnFPcHRpb24gd2hlbiBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLiAqL1xuZXhwb3J0IGNsYXNzIEticU9wdGlvblNlbGVjdGlvbkNoYW5nZTxUID0gS2JxT3B0aW9uPiB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFQsXG4gICAgICAgIHB1YmxpYyBpc1VzZXJJbnB1dCA9IGZhbHNlXG4gICAgKSB7fVxufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHBhcmVudCBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIGEgbGlzdCBvZiBvcHRpb25zLlxuICogQ29udGFpbnMgcHJvcGVydGllcyB0aGF0IHRoZSBvcHRpb25zIGNhbiBpbmhlcml0LlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEticU9wdGlvblBhcmVudENvbXBvbmVudCB7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xuICAgIG11bHRpU2VsZWN0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBIYW5kbGVyIHRoYXQgd2lsbCB1cGRhdGUgc2Nyb2xsIHBvc2l0aW9uIG9mIGVsZW1lbnRzIGluc2lkZSBvdmVybGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Ym9hcmROYXZpZ2F0aW9uSGFuZGxlciB7XG4gICAgLyoqIFNjcm9sbHMgdGhlIGFjdGl2ZSBvcHRpb24gaW50byB2aWV3LiAqL1xuICAgIHNjcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KCk6IHZvaWQ7XG59XG5cbi8qKlxuICogSW5qZWN0aW9uIHRva2VuIHVzZWQgdG8gcHJvdmlkZSB0aGUgcGFyZW50IGNvbXBvbmVudCB0byBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgS0JRX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UID0gbmV3IEluamVjdGlvblRva2VuPEticU9wdGlvblBhcmVudENvbXBvbmVudD4oJ0tCUV9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCcpO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2JxT3B0aW9uQmFzZSB7XG4gICAgdmFsdWU6IGFueTtcbiAgICBhYnN0cmFjdCBnZXQgdmlld1ZhbHVlKCk6IHN0cmluZztcbiAgICBhYnN0cmFjdCBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSk7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBvblNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEticU9wdGlvblNlbGVjdGlvbkNoYW5nZTxhbnk+PjtcblxuICAgIGFic3RyYWN0IHNlbGVjdCgpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgZGVzZWxlY3QoKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyB0aGUgc2VsZWN0aW9uIGNoYW5nZSBldmVudC4gKi9cbiAgICBwcm90ZWN0ZWQgZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KGlzVXNlcklucHV0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyBLYnFPcHRpb25TZWxlY3Rpb25DaGFuZ2UodGhpcywgaXNVc2VySW5wdXQpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLYnFWaXJ0dWFsT3B0aW9uIGV4dGVuZHMgS2JxT3B0aW9uQmFzZSB7XG4gICAgZ2V0IGRpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICByZWFkb25seSBvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxT3B0aW9uU2VsZWN0aW9uQ2hhbmdlPEticVZpcnR1YWxPcHRpb24+PigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyB2YWx1ZTogYW55LFxuICAgICAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgc2VsZWN0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFNpbmdsZSBvcHRpb24gaW5zaWRlIG9mIGEgYDxrYnEtc2VsZWN0PmAgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtb3B0aW9uJyxcbiAgICBleHBvcnRBczogJ2ticU9wdGlvbicsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJ2dldFRhYkluZGV4KCknLFxuICAgICAgICBjbGFzczogJ2ticS1vcHRpb24nLFxuICAgICAgICAnW2NsYXNzLmticS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1vcHRpb24tbXVsdGlwbGVdJzogJ211bHRpcGxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICAgICAnW2NsYXNzLmticS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2lkXSc6ICdpZCcsXG5cbiAgICAgICAgJyhjbGljayknOiAnc2VsZWN0VmlhSW50ZXJhY3Rpb24oKScsXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJ1xuICAgIH0sXG4gICAgLyogQ29tcG9uZW50IGluaGVyaXRzIHN0eWxlcyBmcm9tIGBsaXN0YCwgc28gYGxpc3RgIHZhcmlhYmxlcyBhcmUgaW1wb3J0ZWQgYXMgdGhlIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGguICovXG4gICAgc3R5bGVVcmxzOiBbJ29wdGlvbi5zY3NzJywgJ29wdGlvbi10b2tlbnMuc2NzcyddLFxuICAgIHRlbXBsYXRlVXJsOiAnb3B0aW9uLmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEtCUV9USVRMRV9URVhUX1JFRixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBLYnFPcHRpb25cbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxT3B0aW9uIGV4dGVuZHMgS2JxT3B0aW9uQmFzZSBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSwgS2JxVGl0bGVUZXh0UmVmIHtcbiAgICBAVmlld0NoaWxkKCdrYnFUaXRsZVRleHQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGV4dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogVGhlIGZvcm0gdmFsdWUgb2YgdGhlIG9wdGlvbi4gKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gdG9kbyB0aGlzIGZsYWcgd2lsbCBuZWVkIHRvIGJlIHJldGhvdWdodCBpbiB0aGUgZnV0dXJlIChhZGRlZCBmb3IgZmlsdGVyIHBhbmVsKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSB1c2VyU2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBzaG93Q2hlY2tib3goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q2hlY2tib3ggPT09IHVuZGVmaW5lZCA/IHRoaXMubXVsdGlwbGUgOiB0aGlzLl9zaG93Q2hlY2tib3g7XG4gICAgfVxuXG4gICAgc2V0IHNob3dDaGVja2JveCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9zaG93Q2hlY2tib3ggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3Nob3dDaGVja2JveDogYm9vbGVhbjtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG9wdGlvbiBpcyBzZWxlY3RlZCBvciBkZXNlbGVjdGVkLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxT3B0aW9uU2VsZWN0aW9uQ2hhbmdlPigpO1xuXG4gICAgLyoqIEVtaXRzIHdoZW4gdGhlIHN0YXRlIG9mIHRoZSBvcHRpb24gY2hhbmdlcyBhbmQgYW55IHBhcmVudHMgaGF2ZSB0byBiZSBub3RpZmllZC4gKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRpc3BsYXllZCB2YWx1ZSBvZiB0aGUgb3B0aW9uLiBJdCBpcyBuZWNlc3NhcnkgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgb3B0aW9uIGluIHRoZVxuICAgICAqIHNlbGVjdCdzIHRyaWdnZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBnZXQgdmlld1ZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aWV3VmFsdWUgfHwgKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHNldCB2aWV3VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl92aWV3VmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92aWV3VmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB3cmFwcGluZyBjb21wb25lbnQgaXMgaW4gbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGUuICovXG4gICAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnBhcmVudD8ubXVsdGlTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9pZCA9IGBrYnEtb3B0aW9uLSR7dW5pcXVlSWRDb3VudGVyKyt9YDtcblxuICAgIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdyb3VwICYmIHRoaXMuZ3JvdXAuZGlzYWJsZWQpIHx8IHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIG9wdGlvbiBpcyBjdXJyZW50bHkgYWN0aXZlIGFuZCByZWFkeSB0byBiZSBzZWxlY3RlZC5cbiAgICAgKiBBbiBhY3RpdmUgb3B0aW9uIGRpc3BsYXlzIHN0eWxlcyBhcyBpZiBpdCBpcyBmb2N1c2VkLCBidXQgdGhlXG4gICAgICogZm9jdXMgaXMgYWN0dWFsbHkgcmV0YWluZWQgc29tZXdoZXJlIGVsc2UuIFRoaXMgY29tZXMgaW4gaGFuZHlcbiAgICAgKiBmb3IgY29tcG9uZW50cyBsaWtlIGF1dG9jb21wbGV0ZSB3aGVyZSBmb2N1cyBtdXN0IHJlbWFpbiBvbiB0aGUgaW5wdXQuXG4gICAgICovXG4gICAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgbW9zdFJlY2VudFZpZXdWYWx1ZSA9ICcnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UKSBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogS2JxT3B0aW9uUGFyZW50Q29tcG9uZW50LFxuICAgICAgICBAT3B0aW9uYWwoKSByZWFkb25seSBncm91cDogS2JxT3B0Z3JvdXBcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIC8vIFNpbmNlIHBhcmVudCBjb21wb25lbnRzIGNvdWxkIGJlIHVzaW5nIHRoZSBvcHRpb24ncyBsYWJlbCB0byBkaXNwbGF5IHRoZSBzZWxlY3RlZCB2YWx1ZXNcbiAgICAgICAgLy8gKGUuZy4gYGticS1zZWxlY3RgKSBhbmQgdGhleSBkb24ndCBoYXZlIGEgd2F5IG9mIGtub3dpbmcgaWYgdGhlIG9wdGlvbidzIGxhYmVsIGhhcyBjaGFuZ2VkXG4gICAgICAgIC8vIHdlIGhhdmUgdG8gY2hlY2sgZm9yIGNoYW5nZXMgaW4gdGhlIERPTSBvdXJzZWx2ZXMgYW5kIGRpc3BhdGNoIGFuIGV2ZW50LiBUaGVzZSBjaGVja3MgYXJlXG4gICAgICAgIC8vIHJlbGF0aXZlbHkgY2hlYXAsIGhvd2V2ZXIgd2Ugc3RpbGwgbGltaXQgdGhlbSBvbmx5IHRvIHNlbGVjdGVkIG9wdGlvbnMgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAgICAgLy8gaGl0dGluZyB0aGUgRE9NIHRvbyBvZnRlbi5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3VmFsdWUgPSB0aGlzLnZpZXdWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKHZpZXdWYWx1ZSAhPT0gdGhpcy5tb3N0UmVjZW50Vmlld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3N0UmVjZW50Vmlld1ZhbHVlID0gdmlld1ZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIGdldEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBET01SZWN0OiBET01SZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKVswXTtcblxuICAgICAgICByZXR1cm4gRE9NUmVjdCA/IERPTVJlY3QuaGVpZ2h0IDogMDtcbiAgICB9XG5cbiAgICBzZWxlY3QoZW1pdEV2ZW50OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICBpZiAoZW1pdEV2ZW50KSB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzZWxlY3QoZW1pdEV2ZW50OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICBpZiAoZW1pdEV2ZW50KSB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmdldEhvc3RFbGVtZW50KCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LmZvY3VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBzZXRzIGRpc3BsYXkgc3R5bGVzIG9uIHRoZSBvcHRpb24gdG8gbWFrZSBpdCBhcHBlYXJcbiAgICAgKiBhY3RpdmUuIFRoaXMgaXMgdXNlZCBieSB0aGUgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIgc28ga2V5XG4gICAgICogZXZlbnRzIHdpbGwgZGlzcGxheSB0aGUgcHJvcGVyIG9wdGlvbnMgYXMgYWN0aXZlIG9uIGFycm93IGtleSBldmVudHMuXG4gICAgICovXG4gICAgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZW1vdmVzIGRpc3BsYXkgc3R5bGVzIG9uIHRoZSBvcHRpb24gdGhhdCBtYWRlIGl0IGFwcGVhclxuICAgICAqIGFjdGl2ZS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciBzbyBrZXlcbiAgICAgKiBldmVudHMgd2lsbCBkaXNwbGF5IHRoZSBwcm9wZXIgb3B0aW9ucyBhcyBhY3RpdmUgb24gYXJyb3cga2V5IGV2ZW50cy5cbiAgICAgKi9cbiAgICBzZXRJbmFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEdldHMgdGhlIGxhYmVsIHRvIGJlIHVzZWQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBvcHRpb24gc2hvdWxkIGJlIGZvY3VzZWQuICovXG4gICAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld1ZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBFbnN1cmVzIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgd2hlbiBhY3RpdmF0ZWQgZnJvbSB0aGUga2V5Ym9hcmQuICovXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gRU5URVIgfHwgZXZlbnQua2V5Q29kZSA9PT0gU1BBQ0UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTtcblxuICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcGFnZSBmcm9tIHNjcm9sbGluZyBkb3duIGFuZCBmb3JtIHN1Ym1pdHMuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBgU2VsZWN0cyB0aGUgb3B0aW9uIHdoaWxlIGluZGljYXRpbmcgdGhlIHNlbGVjdGlvbiBjYW1lIGZyb20gdGhlIHVzZXIuIFVzZWQgdG9cbiAgICAgKiBkZXRlcm1pbmUgaWYgdGhlIHNlbGVjdCdzIHZpZXcgLT4gbW9kZWwgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQuYFxuICAgICAqL1xuICAgIHNlbGVjdFZpYUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy51c2VyU2VsZWN0KSByZXR1cm47XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0aGlzLm11bHRpcGxlID8gIXRoaXMuX3NlbGVjdGVkIDogdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VGFiSW5kZXgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAnLTEnIDogJzAnO1xuICAgIH1cblxuICAgIGdldEhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBDb3VudHMgdGhlIGFtb3VudCBvZiBvcHRpb24gZ3JvdXAgbGFiZWxzIHRoYXQgcHJlY2VkZSB0aGUgc3BlY2lmaWVkIG9wdGlvbi5cbiAqIEBwYXJhbSBvcHRpb25JbmRleCBJbmRleCBvZiB0aGUgb3B0aW9uIGF0IHdoaWNoIHRvIHN0YXJ0IGNvdW50aW5nLlxuICogQHBhcmFtIG9wdGlvbnMgRmxhdCBsaXN0IG9mIGFsbCBvZiB0aGUgb3B0aW9ucy5cbiAqIEBwYXJhbSBvcHRpb25Hcm91cHMgRmxhdCBsaXN0IG9mIGFsbCBvZiB0aGUgb3B0aW9uIGdyb3Vwcy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvdW50R3JvdXBMYWJlbHNCZWZvcmVPcHRpb24oXG4gICAgb3B0aW9uSW5kZXg6IG51bWJlcixcbiAgICBvcHRpb25zOiBRdWVyeUxpc3Q8S2JxT3B0aW9uPixcbiAgICBvcHRpb25Hcm91cHM6IFF1ZXJ5TGlzdDxLYnFPcHRncm91cD5cbik6IG51bWJlciB7XG4gICAgaWYgKG9wdGlvbkdyb3Vwcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc0FycmF5ID0gb3B0aW9ucy50b0FycmF5KCk7XG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IG9wdGlvbkdyb3Vwcy50b0FycmF5KCk7XG5cbiAgICAgICAgbGV0IGdyb3VwQ291bnRlciA9IDA7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25JbmRleCArIDE7IGkrKykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnNBcnJheVtpXS5ncm91cCAmJiBvcHRpb25zQXJyYXlbaV0uZ3JvdXAgPT09IGdyb3Vwc1tncm91cENvdW50ZXJdKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBDb3VudGVyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ3JvdXBDb3VudGVyO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHBvc2l0aW9uIHRvIHdoaWNoIHRvIHNjcm9sbCBhIHBhbmVsIGluIG9yZGVyIGZvciBhbiBvcHRpb24gdG8gYmUgaW50byB2aWV3LlxuICogQHBhcmFtIG9wdGlvbkluZGV4IEluZGV4IG9mIHRoZSBvcHRpb24gdG8gYmUgc2Nyb2xsZWQgaW50byB0aGUgdmlldy5cbiAqIEBwYXJhbSBvcHRpb25IZWlnaHQgSGVpZ2h0IG9mIHRoZSBvcHRpb25zLlxuICogQHBhcmFtIGN1cnJlbnRTY3JvbGxQb3NpdGlvbiBDdXJyZW50IHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgcGFuZWwuXG4gKiBAcGFyYW0gcGFuZWxIZWlnaHQgSGVpZ2h0IG9mIHRoZSBwYW5lbC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wdGlvblNjcm9sbFBvc2l0aW9uKFxuICAgIG9wdGlvbkluZGV4OiBudW1iZXIsXG4gICAgb3B0aW9uSGVpZ2h0OiBudW1iZXIsXG4gICAgY3VycmVudFNjcm9sbFBvc2l0aW9uOiBudW1iZXIsXG4gICAgcGFuZWxIZWlnaHQ6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgICBjb25zdCBvcHRpb25PZmZzZXQgPSBvcHRpb25JbmRleCAqIG9wdGlvbkhlaWdodDtcblxuICAgIGlmIChvcHRpb25PZmZzZXQgPCBjdXJyZW50U2Nyb2xsUG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbk9mZnNldDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uT2Zmc2V0ICsgb3B0aW9uSGVpZ2h0ID4gY3VycmVudFNjcm9sbFBvc2l0aW9uICsgcGFuZWxIZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIG9wdGlvbk9mZnNldCAtIHBhbmVsSGVpZ2h0ICsgb3B0aW9uSGVpZ2h0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudFNjcm9sbFBvc2l0aW9uO1xufVxuIiwiQGlmIChzaG93Q2hlY2tib3gpIHtcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJrYnEtcHNldWRvLWNoZWNrYm94XCI+XG4gICAgICAgIDxrYnEtcHNldWRvLWNoZWNrYm94IFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtzdGF0ZV09XCJzZWxlY3RlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnXCIgLz5cbiAgICA8L25nLWNvbnRlbnQ+XG59XG5cbjxzcGFuICNrYnFUaXRsZVRleHQgY2xhc3M9XCJrYnEtb3B0aW9uLXRleHRcIj5cbiAgICA8bmctY29udGVudCAvPlxuPC9zcGFuPlxuIl19
@@ -64,7 +64,11 @@ export class KbqPopUpTrigger {
64
64
  this.availablePositions = POSITION_MAP;
65
65
  /** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger */
66
66
  this.hideWithTimeout = false;
67
+ /** prevents closure by any event */
68
+ this.preventClose = false;
67
69
  this.hide = (delay = this.leaveDelay) => {
70
+ if (this.preventClose)
71
+ return;
68
72
  if ((this.instance && this.triggerName !== 'mouseleave') ||
69
73
  (this.triggerName === 'mouseleave' && !this.instance?.hovered.getValue())) {
70
74
  this.ngZone.run(() => this.instance?.hide(delay));
@@ -335,4 +339,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
335
339
  }
336
340
  }]
337
341
  }] });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvcG9wLXVwL3BvcC11cC10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUliLE9BQU8sRUFHUCxnQkFBZ0IsRUFFbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixNQUFNLEVBS04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNILDBCQUEwQixFQUMxQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLG1CQUFtQixFQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtsRyxNQUFNLFNBQVMsR0FBRyxDQUNkLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUEwQixFQUNoRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVcsRUFDTCxFQUFFO0lBQ3ZCLE1BQU0sTUFBTSxHQUEwQixFQUFFLENBQUM7SUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVyQywyREFBMkQ7SUFDM0QsSUFBSSxtQ0FBbUMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLG1DQUFtQyxHQUFHLGdCQUFnQixDQUFDO1FBRXZFLElBQUksT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZCLElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzlCLENBQUM7WUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDN0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsMkRBQTJEO0lBQzNELElBQUksbUNBQW1DLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxtQ0FBbUMsR0FBRyxpQkFBaUIsQ0FBQztRQUV4RSxJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUM5QixDQUFDO1lBRUQsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQVFGLE1BQU0sT0FBZ0IsZUFBZTtJQU5yQztRQU9JLDBEQUEwRDtRQUNqRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFcEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUM7UUFFcEUsWUFBTyxHQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLFdBQU0sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMscUJBQWdCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlELGFBQVEsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFJMUUsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUV4QixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFnQmIsY0FBUyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7UUFDaEMsc0JBQWlCLEdBQTZCLElBQUksQ0FBQztRQUVuRCxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBVWhCLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUdwQyx1QkFBa0IsR0FBOEMsWUFBWSxDQUFDO1FBS2hHLHNGQUFzRjtRQUM1RSxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQW9IM0MsU0FBSSxHQUFHLENBQUMsUUFBZ0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3ZDLElBQ0ksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO2dCQUNwRCxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDM0UsQ0FBQztnQkFDQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixXQUFNLEdBQUcsR0FBUyxFQUFFO1lBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDLENBQUM7UUFzQ0YscUJBQWdCLEdBQUcsQ0FBQyxNQUFzQyxFQUFRLEVBQUU7WUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakIsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBRWxDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzlDLElBQ0ksT0FBTyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPO29CQUNoRCxPQUFPLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU87b0JBQ2hELFFBQVEsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUTtvQkFDbEQsUUFBUSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQ3BELENBQUM7b0JBQ0MsWUFBWSxHQUFHLEdBQXNCLENBQUM7b0JBRXRDLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQWtJTSxxQkFBZ0IsR0FBRyxDQUFDLFFBQXVCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztRQUVNLHdCQUFtQixHQUFHLENBQUMsUUFBdUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDO0tBZ0JMO0lBcFZHLFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRWpELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFzQjtRQUNsQyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFFdkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBRXJDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEtBQUssaUNBQWlDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQUs7UUFDekIsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxhQUFzQjtRQUNoQyxNQUFNLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVuRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFFckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBb0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLElBQUksQ0FBQyxVQUFVO1FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakMsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXRHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQW9CLENBQUM7UUFFekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRTdCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWE7YUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2pFLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtnQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztxQkFDcEMsSUFBSSxDQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDeEQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQzVFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQ2hEO3FCQUNBLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQW1CRCxzREFBc0Q7SUFDdEQsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUMzQixDQUFDO1FBRUQsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU87YUFDdkIsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNwQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2FBQzFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQzthQUM3QixhQUFhLENBQUMsQ0FBQyxHQUFHLDBCQUEwQixDQUFDLENBQUM7YUFDOUMsa0JBQWtCLEVBQUU7YUFDcEIsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRWxHLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFekcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxHQUFHLElBQUksQ0FBQyxhQUFhO1lBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDdEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDL0IsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7U0FDeEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQWlDRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsU0FBUztpQkFDVCxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3BELEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsU0FBUztpQkFDVCxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQy9DLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssWUFBWSxhQUFhLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUMzRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQscUJBQXFCO1FBQ2pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxjQUFjLENBQUMsa0JBQTJCLEtBQUs7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFFakMsTUFBTSxRQUFRLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBc0Q7YUFDL0YsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQixJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDTyxvQkFBb0I7UUFDMUIsTUFBTSxHQUFHLEdBQTZCLEVBQUUsQ0FBQztRQUV6QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLENBQUM7WUFDL0MsTUFBTSxNQUFNLEdBQTBCLElBQUksQ0FBQyxLQUFLO2dCQUM1QyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUN2RSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRVQsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDTCxHQUFHLEdBQUc7Z0JBQ04sR0FBRyxNQUFNO2FBQ1osQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVTLDRCQUE0QixDQUFDLEtBQXdCO1FBQzNELE1BQU0sTUFBTSxHQUE2QixFQUFFLENBQUM7UUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRS9ELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFnQixFQUFFLEVBQUU7Z0JBQy9CLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyx1QkFBdUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsT0FBTywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVTLGNBQWM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVksRUFBRSxRQUFvQjtRQUNyRCxPQUFPO1lBQ0gsSUFBSTtZQUNKLENBQUMsS0FBYyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBbUIsQ0FBQyxDQUFDO2dCQUV6QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztTQUVKLENBQUM7SUFDTixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWlCO1FBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQVVPLHlCQUF5QjtRQUM3QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFFL0MsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDbEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3pELE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztrSUF2WmlCLGVBQWU7c0hBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFOcEMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsY0FBYyxFQUFFLG9CQUFvQjt3QkFDcEMsY0FBYyxFQUFFLHFCQUFxQjtxQkFDeEM7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlLFxuICAgIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheUNvbmZpZyxcbiAgICBPdmVybGF5UmVmLFxuICAgIFNjcm9sbERpc3BhdGNoZXIsXG4gICAgU2Nyb2xsU3RyYXRlZ3lcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBFTlRFUiwgRVNDQVBFLCBTUEFDRSB9IGZyb20gJ0Brb29iaXEvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgaW50ZXJ2YWwsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXN5bmNTY2hlZHVsZXIgfSBmcm9tICdyeGpzL2ludGVybmFsL3NjaGVkdWxlci9Bc3luY1NjaGVkdWxlcic7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBkZWxheSBhcyByeERlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBFWFRFTkRFRF9PVkVSTEFZX1BPU0lUSU9OUyxcbiAgICBQT1NJVElPTl9NQVAsXG4gICAgUE9TSVRJT05fUFJJT1JJVFlfU1RSQVRFR1ksXG4gICAgUE9TSVRJT05fVE9fQ1NTX01BUFxufSBmcm9tICcuLi9vdmVybGF5L292ZXJsYXktcG9zaXRpb24tbWFwJztcbmltcG9ydCB7IEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hULCBQb3BVcFBsYWNlbWVudHMsIFBvcFVwVHJpZ2dlcnMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBLYnFQb3BVcCB9IGZyb20gJy4vcG9wLXVwJztcblxudHlwZSBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPSBQaWNrPENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsICdvZmZzZXRYJyB8ICdvZmZzZXRZJz47XG5cbmNvbnN0IGdldE9mZnNldCA9IChcbiAgICB7IG9yaWdpblgsIG92ZXJsYXlYLCBvcmlnaW5ZLCBvdmVybGF5WSB9OiBDb25uZWN0aW9uUG9zaXRpb25QYWlyLFxuICAgIHsgd2lkdGgsIGhlaWdodCB9OiBET01SZWN0XG4pOiBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPT4ge1xuICAgIGNvbnN0IG9mZnNldDogS2JxUG9wdXBUcmlnZ2VyT2Zmc2V0ID0ge307XG4gICAgY29uc3QgZWxlbWVudFdpZHRoSGFsZiA9IHdpZHRoIC8gMjtcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0SGFsZiA9IGhlaWdodCAvIDI7XG5cbiAgICAvLyBhbGlnbm1lbnQgc2hvdWxkIGJlIGFwcGxpZWQgb25seSBpZiB0aGUgZWxlbWVudCBpcyBzbWFsbFxuICAgIGlmIChBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCA+IGVsZW1lbnRXaWR0aEhhbGYpIHtcbiAgICAgICAgY29uc3QgUEFERElORyA9IEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hUIC0gZWxlbWVudFdpZHRoSGFsZjtcblxuICAgICAgICBpZiAob3JpZ2luWCA9PT0gb3ZlcmxheVgpIHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5YID09PSAnc3RhcnQnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFggPSAtUEFERElORztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yaWdpblggPT09ICdlbmQnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFggPSBQQURESU5HO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWxpZ25tZW50IHNob3VsZCBiZSBhcHBsaWVkIG9ubHkgaWYgdGhlIGVsZW1lbnQgaXMgc21hbGxcbiAgICBpZiAoQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgPiBlbGVtZW50SGVpZ2h0SGFsZikge1xuICAgICAgICBjb25zdCBQQURESU5HID0gQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgLSBlbGVtZW50SGVpZ2h0SGFsZjtcblxuICAgICAgICBpZiAob3JpZ2luWSA9PT0gb3ZlcmxheVkpIHtcbiAgICAgICAgICAgIGlmIChvcmlnaW5ZID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIG9mZnNldC5vZmZzZXRZID0gLVBBRERJTkc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcmlnaW5ZID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgICAgIG9mZnNldC5vZmZzZXRZID0gUEFERElORztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgICcobW91c2VlbnRlciknOiAnaG92ZXJlZC5uZXh0KHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdob3ZlcmVkLm5leHQoZmFsc2UpJ1xuICAgIH1cbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2JxUG9wVXBUcmlnZ2VyPFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIHRoZSBwb3B1cFRyaWdnZXIgaXMgaG92ZXJlZC4gKi9cbiAgICByZWFkb25seSBob3ZlcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2NoZWR1bGVyID0gaW5qZWN0KEFzeW5jU2NoZWR1bGVyLCB7IG9wdGlvbmFsOiB0cnVlIH0pIHx8IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBvdmVybGF5OiBPdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyID0gaW5qZWN0KFNjcm9sbERpc3BhdGNoZXIpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBob3N0VmlldzogVmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aW9uID0gaW5qZWN0KERpcmVjdGlvbmFsaXR5LCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxhYmxlID0gaW5qZWN0KENka1Njcm9sbGFibGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuXG4gICAgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBlbnRlckRlbGF5OiBudW1iZXIgPSAwO1xuICAgIGxlYXZlRGVsYXk6IG51bWJlciA9IDA7XG5cbiAgICB0cmlnZ2VyTmFtZTogc3RyaW5nO1xuXG4gICAgYWJzdHJhY3QgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgYXJyb3c6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgdHJpZ2dlcjogc3RyaW5nO1xuICAgIGFic3RyYWN0IGN1c3RvbUNsYXNzOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIGFic3RyYWN0IHBsYWNlbWVudENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XG4gICAgYWJzdHJhY3QgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG9yaWdpblNlbGVjdG9yOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWc7XG5cbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50ID0gUG9wVXBQbGFjZW1lbnRzLlRvcDtcbiAgICBwcm90ZWN0ZWQgcGxhY2VtZW50UHJpb3JpdHk6IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgdmlzaWJsZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIF9jb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHByb3RlY3RlZCBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9jdXN0b21DbGFzczogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsO1xuICAgIHByb3RlY3RlZCBwb3J0YWw6IENvbXBvbmVudFBvcnRhbDxUPjtcbiAgICBwcm90ZWN0ZWQgaW5zdGFuY2U6IGFueSB8IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgbGlzdGVuZXJzID0gbmV3IE1hcDxzdHJpbmcsIEV2ZW50TGlzdGVuZXI+KCk7XG4gICAgcHJvdGVjdGVkIGNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXZhaWxhYmxlUG9zaXRpb25zOiB7IFtrZXk6IHN0cmluZ106IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIgfSA9IFBPU0lUSU9OX01BUDtcblxuICAgIHByb3RlY3RlZCBtb3VzZUV2ZW50PzogTW91c2VFdmVudDtcbiAgICBwcm90ZWN0ZWQgc3RyYXRlZ3k6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcblxuICAgIC8qKiBIaWRlIHBvcC11cCB3aXRoIHRpbWVvdXQuIE5lZWQgaWYgeW91IHdhbnQgdG8gc2hvdyBwb3AtdXAgYWZ0ZXIgbGVhdmluZyB0cmlnZ2VyICovXG4gICAgcHJvdGVjdGVkIGhpZGVXaXRoVGltZW91dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYWJzdHJhY3QgdXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50Pzogc3RyaW5nKTogdm9pZDtcblxuICAgIGFic3RyYWN0IHVwZGF0ZURhdGEoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGNsb3NpbmdBY3Rpb25zKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAgIGFic3RyYWN0IGdldE92ZXJsYXlIYW5kbGVDb21wb25lbnRUeXBlKCk6IFR5cGU8VD47XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBsYWNlbWVudCh2YWx1ZTogUG9wVXBQbGFjZW1lbnRzKSB7XG4gICAgICAgIGlmIChQT1NJVElPTl9UT19DU1NfTUFQW3ZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSB2YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDbGFzc01hcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSBQb3BVcFBsYWNlbWVudHMuVG9wO1xuXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gcG9zaXRpb246ICR7dmFsdWV9LiBXaWxsIHVzZWQgZGVmYXVsdCBwb3NpdGlvbjogJHt0aGlzLnBsYWNlbWVudH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVBsYWNlbWVudFByaW9yaXR5KHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudFByaW9yaXR5ID0gdmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudFByaW9yaXR5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVZpc2libGUoZXh0ZXJuYWxWYWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShleHRlcm5hbFZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy52aXNpYmxlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuICYmIGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVUb3VjaGVuZCgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuXG4gICAgc2hvdyhkZWxheTogbnVtYmVyID0gdGhpcy5lbnRlckRlbGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcbiAgICAgICAgdGhpcy5kZXRhY2goKTtcblxuICAgICAgICB0aGlzLnBvcnRhbCA9IHRoaXMucG9ydGFsIHx8IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5nZXRPdmVybGF5SGFuZGxlQ29tcG9uZW50VHlwZSgpLCB0aGlzLmhvc3RWaWV3KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnBvcnRhbCkuaW5zdGFuY2UgYXMgS2JxUG9wVXA7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS50cmlnZ2VyID0gdGhpcztcblxuICAgICAgICB0aGlzLmluc3RhbmNlLmFmdGVySGlkZGVuKCkucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuZGV0YWNoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzTWFwKCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS52aXNpYmxlQ2hhbmdlXG4gICAgICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zaG93KGRlbGF5KTtcblxuICAgICAgICBpZiAodGhpcy5oaWRlV2l0aFRpbWVvdXQgJiYgdGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuSG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWwodGhpcy5sZWF2ZURlbGF5LCB0aGlzLnNjaGVkdWxlcilcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuSG92ZXIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5ob3ZlcmVkLmdldFZhbHVlKCkgJiYgIXRoaXMuaW5zdGFuY2U/LmhvdmVyZWQuZ2V0VmFsdWUoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5pbnN0YW5jZT8uZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMuaGlkZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGUgPSAoZGVsYXk6IG51bWJlciA9IHRoaXMubGVhdmVEZWxheSkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLnRyaWdnZXJOYW1lICE9PSAnbW91c2VsZWF2ZScpIHx8XG4gICAgICAgICAgICAodGhpcy50cmlnZ2VyTmFtZSA9PT0gJ21vdXNlbGVhdmUnICYmICF0aGlzLmluc3RhbmNlPy5ob3ZlcmVkLmdldFZhbHVlKCkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuaW5zdGFuY2U/LmhpZGUoZGVsYXkpKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZXRhY2ggPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBudWxsO1xuICAgIH07XG5cbiAgICAvKiogQ3JlYXRlIHRoZSBvdmVybGF5IGNvbmZpZyBhbmQgcG9zaXRpb24gc3RyYXRlZ3kgKi9cbiAgICBjcmVhdGVPdmVybGF5KCk6IE92ZXJsYXlSZWYge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5UmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGNvbm5lY3RlZCBwb3NpdGlvbiBzdHJhdGVneSB0aGF0IGxpc3RlbnMgZm9yIHNjcm9sbCBldmVudHMgdG8gcmVwb3NpdGlvbi5cbiAgICAgICAgdGhpcy5zdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoVHJhbnNmb3JtT3JpZ2luT24odGhpcy5vcmlnaW5TZWxlY3RvcilcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoWy4uLkVYVEVOREVEX09WRVJMQVlfUE9TSVRJT05TXSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxuICAgICAgICAgICAgLndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0aGlzLnNjcm9sbERpc3BhdGNoZXIuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHRoaXMuZWxlbWVudFJlZikpO1xuXG4gICAgICAgIHRoaXMuc3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh0aGlzLm9uUG9zaXRpb25DaGFuZ2UpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5vdmVybGF5Q29uZmlnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbiB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLnN0cmF0ZWd5LFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3koKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcblxuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy5kZXRhY2gpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gICAgfVxuXG4gICAgcmVzZXRPcmlnaW4oKSB7XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgb25Qb3NpdGlvbkNoYW5nZSA9ICgkZXZlbnQ6IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdQbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudDtcblxuICAgICAgICBjb25zdCB7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSB9ID0gJGV2ZW50LmNvbm5lY3Rpb25QYWlyO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKS5zb21lKChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvcmlnaW5YID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblggJiZcbiAgICAgICAgICAgICAgICBvcmlnaW5ZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm9yaWdpblkgJiZcbiAgICAgICAgICAgICAgICBvdmVybGF5WCA9PT0gdGhpcy5hdmFpbGFibGVQb3NpdGlvbnNba2V5XS5vdmVybGF5WCAmJlxuICAgICAgICAgICAgICAgIG92ZXJsYXlZID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm92ZXJsYXlZXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBuZXdQbGFjZW1lbnQgPSBrZXkgYXMgUG9wVXBQbGFjZW1lbnRzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5wbGFjZW1lbnRDaGFuZ2UuZW1pdChuZXdQbGFjZW1lbnQpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAobmV3UGxhY2VtZW50KTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuXG4gICAgaW5pdExpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5jbGVhckxpc3RlbmVycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5DbGljaykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdjbGljaycsIHRoaXMuc2hvdykpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkhvdmVyKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNcbiAgICAgICAgICAgICAgICAuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLnNob3cpKVxuICAgICAgICAgICAgICAgIC5zZXQoLi4udGhpcy5jcmVhdGVMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuZ2V0TW91c2VMZWF2ZUxpc3RlbmVyKCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Gb2N1cykpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdmb2N1cycsIHRoaXMuc2hvdykpXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdibHVyJywgdGhpcy5oaWRlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuS2V5ZG93bikpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCgna2V5ZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgW0VOVEVSLCBTUEFDRV0uaW5jbHVkZXMoZXZlbnQua2V5Q29kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNob3coKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5mb3JFYWNoKHRoaXMuYWRkRXZlbnRMaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgZ2V0TW91c2VMZWF2ZUxpc3RlbmVyKCkge1xuICAgICAgICBpZiAodGhpcy5oaWRlV2l0aFRpbWVvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiBzZXRUaW1lb3V0KHRoaXMuaGlkZSwgdGhpcy5sZWF2ZURlbGF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmhpZGU7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHBvcG92ZXIuICovXG4gICAgdXBkYXRlUG9zaXRpb24ocmVhcHBseVBvc2l0aW9uOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG5cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVPbkNsb3NpbmdBY3Rpb25zKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSAodGhpcy5vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3kgYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRBZGp1c3RlZFBvc2l0aW9ucygpKVxuICAgICAgICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgICAgIGlmIChyZWFwcGx5UG9zaXRpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcG9zaXRpb24ucmVhcHBseUxhc3RQb3NpdGlvbigpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIHBvc2l0aW9ucyB0aGF0IGFyZSBhbGlnbmVkIHdpdGggdGhlIGVsZW1lbnQncyBkaW1lbnNpb25zIGFuZCBvZmZzZXRzLlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0QWRqdXN0ZWRQb3NpdGlvbnMoKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICAgICAgY29uc3QgcmVzOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IHBvcyBvZiB0aGlzLmdldFByaW9yaXRpemVkUG9zaXRpb25zKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldDogS2JxUG9wdXBUcmlnZ2VyT2Zmc2V0ID0gdGhpcy5hcnJvd1xuICAgICAgICAgICAgICAgID8gZ2V0T2Zmc2V0KHBvcywgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpXG4gICAgICAgICAgICAgICAgOiB7fTtcblxuICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLnBvcyxcbiAgICAgICAgICAgICAgICAuLi5vZmZzZXRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdHlQbGFjZW1lbnRTdHJhdGVneSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuICAgICAgICBjb25zdCBwb3NzaWJsZVBvc2l0aW9ucyA9IE9iamVjdC5rZXlzKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKHBvc2l0aW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXMocG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW3Bvc2l0aW9uXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zc2libGVQb3NpdGlvbnMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1t2YWx1ZV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0UHJpb3JpdGl6ZWRQb3NpdGlvbnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudFByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcmlvcml0eVBsYWNlbWVudFN0cmF0ZWd5KHRoaXMucGxhY2VtZW50UHJpb3JpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBPU0lUSU9OX1BSSU9SSVRZX1NUUkFURUdZW3RoaXMucGxhY2VtZW50XTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXJMaXN0ZW5lcnMoKSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKTtcblxuICAgICAgICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGlzdGVuZXIobmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IFtzdHJpbmcsIChldmVudDogdW5rbm93bikgPT4gdm9pZF0ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIChldmVudDogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlck5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZU1vdXNlRXZlbnQoZXZlbnQgYXMgTW91c2VFdmVudCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXIuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2F2ZU1vdXNlRXZlbnQoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlck5hbWUgPT09ICdtb3VzZWVudGVyJykge1xuICAgICAgICAgICAgdGhpcy5tb3VzZUV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAobGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIGV2ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgbGlzdGVuZXIpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuY2xvc2luZ0FjdGlvbnMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAucGlwZShyeERlbGF5KDApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdjbGljaycgJiYgZXZlbnQua2JxUG9wb3ZlclByZXZlbnRIaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wLXVwLXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvcG9wLXVwL3BvcC11cC10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsYUFBYSxFQUliLE9BQU8sRUFHUCxnQkFBZ0IsRUFFbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixNQUFNLEVBS04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUNILDBCQUEwQixFQUMxQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLG1CQUFtQixFQUN0QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUtsRyxNQUFNLFNBQVMsR0FBRyxDQUNkLEVB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QUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDakIsSUFBSSxLQUFLLEVBQUUsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDekQsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO2tJQTVaaUIsZUFBZTtzSEFBZixlQUFlOzs0RkFBZixlQUFlO2tCQU5wQyxTQUFTO21CQUFDO29CQUNQLElBQUksRUFBRTt3QkFDRixjQUFjLEVBQUUsb0JBQW9CO3dCQUNwQyxjQUFjLEVBQUUscUJBQXFCO3FCQUN4QztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheSxcbiAgICBPdmVybGF5Q29uZmlnLFxuICAgIE92ZXJsYXlSZWYsXG4gICAgU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICBTY3JvbGxTdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFR5cGUsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEVOVEVSLCBFU0NBUEUsIFNQQUNFIH0gZnJvbSAnQGtvb2JpcS9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpbnRlcnZhbCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1NjaGVkdWxlciB9IGZyb20gJ3J4anMvaW50ZXJuYWwvc2NoZWR1bGVyL0FzeW5jU2NoZWR1bGVyJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGRlbGF5IGFzIHJ4RGVsYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIEVYVEVOREVEX09WRVJMQVlfUE9TSVRJT05TLFxuICAgIFBPU0lUSU9OX01BUCxcbiAgICBQT1NJVElPTl9QUklPUklUWV9TVFJBVEVHWSxcbiAgICBQT1NJVElPTl9UT19DU1NfTUFQXG59IGZyb20gJy4uL292ZXJsYXkvb3ZlcmxheS1wb3NpdGlvbi1tYXAnO1xuaW1wb3J0IHsgQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQsIFBvcFVwUGxhY2VtZW50cywgUG9wVXBUcmlnZ2VycyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEticVBvcFVwIH0gZnJvbSAnLi9wb3AtdXAnO1xuXG50eXBlIEticVBvcHVwVHJpZ2dlck9mZnNldCA9IFBpY2s8Q29ubmVjdGlvblBvc2l0aW9uUGFpciwgJ29mZnNldFgnIHwgJ29mZnNldFknPjtcblxuY29uc3QgZ2V0T2Zmc2V0ID0gKFxuICAgIHsgb3JpZ2luWCwgb3ZlcmxheVgsIG9yaWdpblksIG92ZXJsYXlZIH06IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gICAgeyB3aWR0aCwgaGVpZ2h0IH06IERPTVJlY3Rcbik6IEticVBvcHVwVHJpZ2dlck9mZnNldCA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0OiBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPSB7fTtcbiAgICBjb25zdCBlbGVtZW50V2lkdGhIYWxmID0gd2lkdGggLyAyO1xuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHRIYWxmID0gaGVpZ2h0IC8gMjtcblxuICAgIC8vIGFsaWdubWVudCBzaG91bGQgYmUgYXBwbGllZCBvbmx5IGlmIHRoZSBlbGVtZW50IGlzIHNtYWxsXG4gICAgaWYgKEFSUk9XX0JPVFRPTV9NQVJHSU5fQU5EX0hBTEZfSEVJR0hUID4gZWxlbWVudFdpZHRoSGFsZikge1xuICAgICAgICBjb25zdCBQQURESU5HID0gQVJST1dfQk9UVE9NX01BUkdJTl9BTkRfSEFMRl9IRUlHSFQgLSBlbGVtZW50V2lkdGhIYWxmO1xuXG4gICAgICAgIGlmIChvcmlnaW5YID09PSBvdmVybGF5WCkge1xuICAgICAgICAgICAgaWYgKG9yaWdpblggPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQub2Zmc2V0WCA9IC1QQURESU5HO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAob3JpZ2luWCA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICAgICAgICBvZmZzZXQub2Zmc2V0WCA9IFBBRERJTkc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhbGlnbm1lbnQgc2hvdWxkIGJlIGFwcGxpZWQgb25seSBpZiB0aGUgZWxlbWVudCBpcyBzbWFsbFxuICAgIGlmIChBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCA+IGVsZW1lbnRIZWlnaHRIYWxmKSB7XG4gICAgICAgIGNvbnN0IFBBRERJTkcgPSBBUlJPV19CT1RUT01fTUFSR0lOX0FORF9IQUxGX0hFSUdIVCAtIGVsZW1lbnRIZWlnaHRIYWxmO1xuXG4gICAgICAgIGlmIChvcmlnaW5ZID09PSBvdmVybGF5WSkge1xuICAgICAgICAgICAgaWYgKG9yaWdpblkgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFkgPSAtUEFERElORztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yaWdpblkgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0Lm9mZnNldFkgPSBQQURESU5HO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbn07XG5cbkBEaXJlY3RpdmUoe1xuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhtb3VzZWVudGVyKSc6ICdob3ZlcmVkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hvdmVyZWQubmV4dChmYWxzZSknXG4gICAgfVxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBLYnFQb3BVcFRyaWdnZXI8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gdGhlIHBvcHVwVHJpZ2dlciBpcyBob3ZlcmVkLiAqL1xuICAgIHJlYWRvbmx5IGhvdmVyZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzY2hlZHVsZXIgPSBpbmplY3QoQXN5bmNTY2hlZHVsZXIsIHsgb3B0aW9uYWw6IHRydWUgfSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG92ZXJsYXk6IE92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5nWm9uZTogTmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIgPSBpbmplY3QoU2Nyb2xsRGlzcGF0Y2hlcik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhvc3RWaWV3OiBWaWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXJlY3Rpb24gPSBpbmplY3QoRGlyZWN0aW9uYWxpdHksIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjcm9sbGFibGUgPSBpbmplY3QoQ2RrU2Nyb2xsYWJsZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBzY3JvbGxTdHJhdGVneTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgICBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGVudGVyRGVsYXk6IG51bWJlciA9IDA7XG4gICAgbGVhdmVEZWxheTogbnVtYmVyID0gMDtcblxuICAgIHRyaWdnZXJOYW1lOiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBhcnJvdzogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCB0cmlnZ2VyOiBzdHJpbmc7XG4gICAgYWJzdHJhY3QgY3VzdG9tQ2xhc3M6IHN0cmluZztcbiAgICBhYnN0cmFjdCBjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgYWJzdHJhY3QgcGxhY2VtZW50Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcbiAgICBhYnN0cmFjdCB2aXNpYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3JpZ2luU2VsZWN0b3I6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgb3ZlcmxheUNvbmZpZzogT3ZlcmxheUNvbmZpZztcblxuICAgIHByb3RlY3RlZCBwbGFjZW1lbnQgPSBQb3BVcFBsYWNlbWVudHMuVG9wO1xuICAgIHByb3RlY3RlZCBwbGFjZW1lbnRQcmlvcml0eTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCB2aXNpYmxlID0gZmFsc2U7XG5cbiAgICBwcm90ZWN0ZWQgX2NvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHJvdGVjdGVkIF9kaXNhYmxlZDogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX2N1c3RvbUNsYXNzOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGw7XG4gICAgcHJvdGVjdGVkIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPFQ+O1xuICAgIHByb3RlY3RlZCBpbnN0YW5jZTogYW55IHwgbnVsbDtcblxuICAgIHByb3RlY3RlZCBsaXN0ZW5lcnMgPSBuZXcgTWFwPHN0cmluZywgRXZlbnRMaXN0ZW5lcj4oKTtcbiAgICBwcm90ZWN0ZWQgY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBhdmFpbGFibGVQb3NpdGlvbnM6IHsgW2tleTogc3RyaW5nXTogQ29ubmVjdGlvblBvc2l0aW9uUGFpciB9ID0gUE9TSVRJT05fTUFQO1xuXG4gICAgcHJvdGVjdGVkIG1vdXNlRXZlbnQ/OiBNb3VzZUV2ZW50O1xuICAgIHByb3RlY3RlZCBzdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuXG4gICAgLyoqIEhpZGUgcG9wLXVwIHdpdGggdGltZW91dC4gTmVlZCBpZiB5b3Ugd2FudCB0byBzaG93IHBvcC11cCBhZnRlciBsZWF2aW5nIHRyaWdnZXIgKi9cbiAgICBwcm90ZWN0ZWQgaGlkZVdpdGhUaW1lb3V0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogcHJldmVudHMgY2xvc3VyZSBieSBhbnkgZXZlbnQgKi9cbiAgICBwcm90ZWN0ZWQgcHJldmVudENsb3NlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhYnN0cmFjdCB1cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQ/OiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgdXBkYXRlRGF0YSgpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgY2xvc2luZ0FjdGlvbnMoKTogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgYWJzdHJhY3QgZ2V0T3ZlcmxheUhhbmRsZUNvbXBvbmVudFR5cGUoKTogVHlwZTxUPjtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG5cbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGxhY2VtZW50KHZhbHVlOiBQb3BVcFBsYWNlbWVudHMpIHtcbiAgICAgICAgaWYgKFBPU0lUSU9OX1RPX0NTU19NQVBbdmFsdWVdKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudCA9IHZhbHVlO1xuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzTWFwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlbWVudCA9IFBvcFVwUGxhY2VtZW50cy5Ub3A7XG5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBwb3NpdGlvbjogJHt2YWx1ZX0uIFdpbGwgdXNlZCBkZWZhdWx0IHBvc2l0aW9uOiAke3RoaXMucGxhY2VtZW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUGxhY2VtZW50UHJpb3JpdHkodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVmlzaWJsZShleHRlcm5hbFZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGV4dGVybmFsVmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gJiYgZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoZW5kKCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBzaG93KGRlbGF5OiBudW1iZXIgPSB0aGlzLmVudGVyRGVsYXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5jcmVhdGVPdmVybGF5KCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25DbG9zaW5nQWN0aW9ucygpO1xuICAgICAgICB0aGlzLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMucG9ydGFsID0gdGhpcy5wb3J0YWwgfHwgbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmdldE92ZXJsYXlIYW5kbGVDb21wb25lbnRUeXBlKCksIHRoaXMuaG9zdFZpZXcpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRoaXMucG9ydGFsKS5pbnN0YW5jZSBhcyBLYnFQb3BVcDtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnRyaWdnZXIgPSB0aGlzO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuYWZ0ZXJIaWRkZW4oKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy5kZXRhY2gpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NNYXAoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnZpc2libGVDaGFuZ2VcbiAgICAgICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlLnNob3coZGVsYXkpO1xuXG4gICAgICAgIGlmICh0aGlzLmhpZGVXaXRoVGltZW91dCAmJiB0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Ib3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpbnRlcnZhbCh0aGlzLmxlYXZlRGVsYXksIHRoaXMuc2NoZWR1bGVyKVxuICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5Ib3ZlcikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmhvdmVyZWQuZ2V0VmFsdWUoKSAmJiAhdGhpcy5pbnN0YW5jZT8uaG92ZXJlZC5nZXRWYWx1ZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmluc3RhbmNlPy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZSA9IChkZWxheTogbnVtYmVyID0gdGhpcy5sZWF2ZURlbGF5KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnByZXZlbnRDbG9zZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh0aGlzLmluc3RhbmNlICYmIHRoaXMudHJpZ2dlck5hbWUgIT09ICdtb3VzZWxlYXZlJykgfHxcbiAgICAgICAgICAgICh0aGlzLnRyaWdnZXJOYW1lID09PSAnbW91c2VsZWF2ZScgJiYgIXRoaXMuaW5zdGFuY2U/LmhvdmVyZWQuZ2V0VmFsdWUoKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5pbnN0YW5jZT8uaGlkZShkZWxheSkpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGRldGFjaCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IG51bGw7XG4gICAgfTtcblxuICAgIC8qKiBDcmVhdGUgdGhlIG92ZXJsYXkgY29uZmlnIGFuZCBwb3NpdGlvbiBzdHJhdGVneSAqL1xuICAgIGNyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgY29ubmVjdGVkIHBvc2l0aW9uIHN0cmF0ZWd5IHRoYXQgbGlzdGVucyBmb3Igc2Nyb2xsIGV2ZW50cyB0byByZXBvc2l0aW9uLlxuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhUcmFuc2Zvcm1PcmlnaW5Pbih0aGlzLm9yaWdpblNlbGVjdG9yKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbLi4uRVhURU5ERURfT1ZFUkxBWV9QT1NJVElPTlNdKVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbigpXG4gICAgICAgICAgICAud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModGhpcy5lbGVtZW50UmVmKSk7XG5cbiAgICAgICAgdGhpcy5zdHJhdGVneS5wb3NpdGlvbkNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMub25Qb3NpdGlvbkNoYW5nZSk7XG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLm92ZXJsYXlDb25maWcsXG4gICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMuZGlyZWN0aW9uIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuc3RyYXRlZ3ksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5zY3JvbGxTdHJhdGVneSgpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlT25DbG9zaW5nQWN0aW9ucygpO1xuXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh0aGlzLmRldGFjaCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVJlZjtcbiAgICB9XG5cbiAgICByZXNldE9yaWdpbigpIHtcbiAgICAgICAgdGhpcy5zdHJhdGVneS5zZXRPcmlnaW4odGhpcy5lbGVtZW50UmVmKTtcbiAgICB9XG5cbiAgICBvblBvc2l0aW9uQ2hhbmdlID0gKCRldmVudDogQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld1BsYWNlbWVudCA9IHRoaXMucGxhY2VtZW50O1xuXG4gICAgICAgIGNvbnN0IHsgb3JpZ2luWCwgb3JpZ2luWSwgb3ZlcmxheVgsIG92ZXJsYXlZIH0gPSAkZXZlbnQuY29ubmVjdGlvblBhaXI7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5hdmFpbGFibGVQb3NpdGlvbnMpLnNvbWUoKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG9yaWdpblggPT09IHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW2tleV0ub3JpZ2luWCAmJlxuICAgICAgICAgICAgICAgIG9yaWdpblkgPT09IHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW2tleV0ub3JpZ2luWSAmJlxuICAgICAgICAgICAgICAgIG92ZXJsYXlYID09PSB0aGlzLmF2YWlsYWJsZVBvc2l0aW9uc1trZXldLm92ZXJsYXlYICYmXG4gICAgICAgICAgICAgICAgb3ZlcmxheVkgPT09IHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW2tleV0ub3ZlcmxheVlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG5ld1BsYWNlbWVudCA9IGtleSBhcyBQb3BVcFBsYWNlbWVudHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBsYWNlbWVudENoYW5nZS5lbWl0KG5ld1BsYWNlbWVudCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH07XG5cbiAgICBpbml0TGlzdGVuZXJzKCkge1xuICAgICAgICB0aGlzLmNsZWFyTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkNsaWNrKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5zaG93KSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyLmluY2x1ZGVzKFBvcFVwVHJpZ2dlcnMuSG92ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmVyc1xuICAgICAgICAgICAgICAgIC5zZXQoLi4udGhpcy5jcmVhdGVMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuc2hvdykpXG4gICAgICAgICAgICAgICAgLnNldCguLi50aGlzLmNyZWF0ZUxpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5nZXRNb3VzZUxlYXZlTGlzdGVuZXIoKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkZvY3VzKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNcbiAgICAgICAgICAgICAgICAuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5zaG93KSlcbiAgICAgICAgICAgICAgICAuc2V0KC4uLnRoaXMuY3JlYXRlTGlzdGVuZXIoJ2JsdXInLCB0aGlzLmhpZGUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRyaWdnZXIuaW5jbHVkZXMoUG9wVXBUcmlnZ2Vycy5LZXlkb3duKSkge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnMuc2V0KCdrZXlkb3duJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCAmJiBbRU5URVIsIFNQQUNFXS5pbmNsdWRlcyhldmVudC5rZXlDb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2hvdygpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmZvckVhY2godGhpcy5hZGRFdmVudExpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBnZXRNb3VzZUxlYXZlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmhpZGVXaXRoVGltZW91dCkge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHNldFRpbWVvdXQodGhpcy5oaWRlLCB0aGlzLmxlYXZlRGVsYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGlkZTtcbiAgICB9XG5cbiAgICAvKiogVXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnQgcG9wb3Zlci4gKi9cbiAgICB1cGRhdGVQb3NpdGlvbihyZWFwcGx5UG9zaXRpb246IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoKTtcblxuICAgICAgICB0aGlzLnN1YnNjcmliZU9uQ2xvc2luZ0FjdGlvbnMoKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9ICh0aGlzLm92ZXJsYXlSZWYuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldEFkanVzdGVkUG9zaXRpb25zKCkpXG4gICAgICAgICAgICAud2l0aFB1c2godHJ1ZSk7XG5cbiAgICAgICAgaWYgKHJlYXBwbHlQb3NpdGlvbikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBwb3NpdGlvbi5yZWFwcGx5TGFzdFBvc2l0aW9uKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGxpc3Qgb2YgcG9zaXRpb25zIHRoYXQgYXJlIGFsaWduZWQgd2l0aCB0aGUgZWxlbWVudCdzIGRpbWVuc2lvbnMgYW5kIG9mZnNldHMuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBZGp1c3RlZFBvc2l0aW9ucygpOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgICAgICBjb25zdCByZXM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgcG9zIG9mIHRoaXMuZ2V0UHJpb3JpdGl6ZWRQb3NpdGlvbnMoKSkge1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0OiBLYnFQb3B1cFRyaWdnZXJPZmZzZXQgPSB0aGlzLmFycm93XG4gICAgICAgICAgICAgICAgPyBnZXRPZmZzZXQocG9zLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSlcbiAgICAgICAgICAgICAgICA6IHt9O1xuXG4gICAgICAgICAgICByZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgLi4ucG9zLFxuICAgICAgICAgICAgICAgIC4uLm9mZnNldFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRQcmlvcml0eVBsYWNlbWVudFN0cmF0ZWd5KHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdID0gW107XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlUG9zaXRpb25zID0gT2JqZWN0LmtleXModGhpcy5hdmFpbGFibGVQb3NpdGlvbnMpO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgocG9zaXRpb246IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwb3NzaWJsZVBvc2l0aW9ucy5pbmNsdWRlcyhwb3NpdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5hdmFpbGFibGVQb3NpdGlvbnNbcG9zaXRpb25dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmIChwb3NzaWJsZVBvc2l0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuYXZhaWxhYmxlUG9zaXRpb25zW3ZhbHVlXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRQcmlvcml0aXplZFBvc2l0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMucGxhY2VtZW50UHJpb3JpdHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFByaW9yaXR5UGxhY2VtZW50U3RyYXRlZ3kodGhpcy5wbGFjZW1lbnRQcmlvcml0eSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUE9TSVRJT05fUFJJT1JJVFlfU1RSQVRFR1lbdGhpcy5wbGFjZW1lbnRdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbGVhckxpc3RlbmVycygpIHtcbiAgICAgICAgdGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIpO1xuXG4gICAgICAgIHRoaXMubGlzdGVuZXJzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMaXN0ZW5lcihuYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogW3N0cmluZywgKGV2ZW50OiB1bmtub3duKSA9PiB2b2lkXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgKGV2ZW50OiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyTmFtZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlTW91c2VFdmVudChldmVudCBhcyBNb3VzZUV2ZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lci5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlTW91c2VFdmVudChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAodGhpcy50cmlnZ2VyTmFtZSA9PT0gJ21vdXNlZW50ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lciA9IChsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lciwgZXZlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IChsaXN0ZW5lcjogRXZlbnRMaXN0ZW5lciwgZXZlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBsaXN0ZW5lcik7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc3Vic2NyaWJlT25DbG9zaW5nQWN0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLmNsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uID0gdGhpcy5jbG9zaW5nQWN0aW9ucygpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5waXBlKHJ4RGVsYXkoMCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudD8udHlwZSA9PT0gJ2NsaWNrJyAmJiBldmVudC5rYnFQb3BvdmVyUHJldmVudEhpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -8,6 +8,7 @@ export * from './forms/index';
8
8
  export * from './highlight/index';
9
9
  export * from './line/line';
10
10
  export * from './locales/index';
11
+ export * from './navbar/index';
11
12
  export * from './option/index';
12
13
  export * from './overlay/overlay-position-map';
13
14
  export * from './pop-up/index';
@@ -20,4 +21,4 @@ export * from './tokens/index';
20
21
  export * from './utils/index';
21
22
  export * from './validation/index';
22
23
  export * from './version';
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uLWJlaGF2aW9ycy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGV0aW1lL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvZXJyb3Itc3RhdGUtbWF0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tZmllbGQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9oaWdobGlnaHQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lL2xpbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGVzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxheS9vdmVybGF5LXBvc2l0aW9uLW1hcCc7XG5leHBvcnQgKiBmcm9tICcuL3BvcC11cC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL21lYXN1cmUtc2Nyb2xsYmFyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGl0bGUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi90b2tlbnMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uJztcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tb24tYmVoYXZpb3JzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXRpbWUvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci1zdGF0ZS1tYXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdHRlcnMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3Jtcy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2hpZ2hsaWdodC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUvbGluZSc7XG5leHBvcnQgKiBmcm9tICcuL2xvY2FsZXMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9uYXZiYXIvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9vcHRpb24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVybGF5L292ZXJsYXktcG9zaXRpb24tbWFwJztcbmV4cG9ydCAqIGZyb20gJy4vcG9wLXVwL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0L2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvbWVhc3VyZS1zY3JvbGxiYXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90aXRsZS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucy9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGlvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL3ZlcnNpb24nO1xuIl19
@@ -0,0 +1,14 @@
1
+ import { ElementRef, inject } from '@angular/core';
2
+ /**
3
+ * Injects the ElementRef for the current component.
4
+ */
5
+ export const kbqInjectElementRef = () => {
6
+ return inject((ElementRef));
7
+ };
8
+ /**
9
+ * Injects the native element for the current component.
10
+ */
11
+ export const kbqInjectNativeElement = () => {
12
+ return kbqInjectElementRef().nativeElement;
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQW1DLEVBQUU7SUFDcEUsT0FBTyxNQUFNLENBQWdCLENBQUEsVUFBYSxDQUFBLENBQUMsQ0FBQztBQUNoRCxDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQXVCLEVBQUU7SUFDM0QsT0FBTyxtQkFBbUIsRUFBSyxDQUFDLGFBQWEsQ0FBQztBQUNsRCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBJbmplY3RzIHRoZSBFbGVtZW50UmVmIGZvciB0aGUgY3VycmVudCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBrYnFJbmplY3RFbGVtZW50UmVmID0gPFQgPSBIVE1MRWxlbWVudD4oKTogRWxlbWVudFJlZjxUPiA9PiB7XG4gICAgcmV0dXJuIGluamVjdDxFbGVtZW50UmVmPFQ+PihFbGVtZW50UmVmPFQ+KTtcbn07XG5cbi8qKlxuICogSW5qZWN0cyB0aGUgbmF0aXZlIGVsZW1lbnQgZm9yIHRoZSBjdXJyZW50IGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IGticUluamVjdE5hdGl2ZUVsZW1lbnQgPSA8VCA9IEhUTUxFbGVtZW50PigpOiBUID0+IHtcbiAgICByZXR1cm4ga2JxSW5qZWN0RWxlbWVudFJlZjxUPigpLm5hdGl2ZUVsZW1lbnQ7XG59O1xuIl19
@@ -1,2 +1,3 @@
1
+ export * from './dom';
1
2
  export * from './public-api';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RvbSc7XG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,6 +1,14 @@
1
1
  export function isBoolean(value) {
2
2
  return typeof value === 'boolean';
3
3
  }
4
+ /** Whether the value is undefined. */
5
+ export const isUndefined = (value) => {
6
+ return value === undefined;
7
+ };
8
+ /** Whether the value is null. */
9
+ export const isNull = (value) => {
10
+ return value === null;
11
+ };
4
12
  /**
5
13
  * Will be removed in the next major release
6
14
  *
@@ -20,4 +28,4 @@ export function isMac() {
20
28
  // eslint-disable-next-line no-restricted-globals
21
29
  return /^mac/i.test(navigator?.platform);
22
30
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3BDLE9BQU8sT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3BDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFlLEVBQVUsRUFBRTtJQUMvRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7QUFFbkQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxLQUFLO0lBQ2pCLGlEQUFpRDtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG4vKipcbiAqIFdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBib29sZWFuQXR0cmlidXRlYCBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBgJHt2YWx1ZX1gICE9PSAnZmFsc2UnO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZXNXaXRob3V0Q29tbWVudHMgPSAobm9kZXM6IE5vZGVMaXN0KTogTm9kZVtdID0+IHtcbiAgICBjb25zdCBDT01NRU5UX05PREUgPSA4O1xuXG4gICAgcmV0dXJuIEFycmF5LmZyb20obm9kZXMpLmZpbHRlcigobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSAhPT0gQ09NTUVOVF9OT0RFKTtcbn07XG5cbmV4cG9ydCBjb25zdCBsZWZ0SWNvbkNsYXNzTmFtZSA9ICdrYnEtaWNvbl9sZWZ0JztcbmV4cG9ydCBjb25zdCByaWdodEljb25DbGFzc05hbWUgPSAna2JxLWljb25fcmlnaHQnO1xuXG4vKiogV2hldGhlciB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBhIE1hYy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hYygpOiBib29sZWFuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzXG4gICAgcmV0dXJuIC9ebWFjL2kudGVzdChuYXZpZ2F0b3I/LnBsYXRmb3JtKTtcbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3BDLE9BQU8sT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFzQixFQUFFO0lBQzlELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixpQ0FBaUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBYyxFQUFpQixFQUFFO0lBQ3BELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFjO0lBQ3BDLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztBQUNuRCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFlLEVBQVUsRUFBRTtJQUMvRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFdkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUM7QUFFbkQsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxLQUFLO0lBQ2pCLGlEQUFpRDtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG4vKiogV2hldGhlciB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLiAqL1xuZXhwb3J0IGNvbnN0IGlzVW5kZWZpbmVkID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkID0+IHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn07XG5cbi8qKiBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBudWxsLiAqL1xuZXhwb3J0IGNvbnN0IGlzTnVsbCA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bGwgPT4ge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbDtcbn07XG5cbi8qKlxuICogV2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2VcbiAqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGJvb2xlYW5BdHRyaWJ1dGVgIGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGAke3ZhbHVlfWAgIT09ICdmYWxzZSc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXROb2Rlc1dpdGhvdXRDb21tZW50cyA9IChub2RlczogTm9kZUxpc3QpOiBOb2RlW10gPT4ge1xuICAgIGNvbnN0IENPTU1FTlRfTk9ERSA9IDg7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShub2RlcykuZmlsdGVyKChub2RlKSA9PiBub2RlLm5vZGVUeXBlICE9PSBDT01NRU5UX05PREUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxlZnRJY29uQ2xhc3NOYW1lID0gJ2ticS1pY29uX2xlZnQnO1xuZXhwb3J0IGNvbnN0IHJpZ2h0SWNvbkNsYXNzTmFtZSA9ICdrYnEtaWNvbl9yaWdodCc7XG5cbi8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGEgTWFjLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTWFjKCk6IGJvb2xlYW4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICByZXR1cm4gL15tYWMvaS50ZXN0KG5hdmlnYXRvcj8ucGxhdGZvcm0pO1xufVxuIl19
@@ -1,3 +1,3 @@
1
1
  import { Version } from '@angular/core';
2
- export const VERSION = new Version('18.33.0+sha-1304359');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZXJzaW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzE4LjMzLjArc2hhLTEzMDQzNTknKTtcbiJdfQ==
2
+ export const VERSION = new Version('18.35.0+sha-52fe775');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZXJzaW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzE4LjM1LjArc2hhLTUyZmU3NzUnKTtcbiJdfQ==