@taiga-ui/kit 3.51.0 → 3.52.0-canary.104df92

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 (851) hide show
  1. package/abstract/taiga-ui-kit-abstract.d.ts +3 -0
  2. package/bundles/taiga-ui-kit-abstract.umd.js +4 -0
  3. package/bundles/taiga-ui-kit-abstract.umd.js.map +1 -1
  4. package/bundles/taiga-ui-kit-classes.umd.js +7 -0
  5. package/bundles/taiga-ui-kit-classes.umd.js.map +1 -1
  6. package/bundles/taiga-ui-kit-components-accordion.umd.js +4 -0
  7. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  8. package/bundles/taiga-ui-kit-components-action.umd.js +4 -0
  9. package/bundles/taiga-ui-kit-components-action.umd.js.map +1 -1
  10. package/bundles/taiga-ui-kit-components-arrow.umd.js +11 -0
  11. package/bundles/taiga-ui-kit-components-arrow.umd.js.map +1 -1
  12. package/bundles/taiga-ui-kit-components-avatar.umd.js +8 -0
  13. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  14. package/bundles/taiga-ui-kit-components-badge.umd.js +4 -0
  15. package/bundles/taiga-ui-kit-components-badge.umd.js.map +1 -1
  16. package/bundles/taiga-ui-kit-components-badged-content.umd.js +4 -0
  17. package/bundles/taiga-ui-kit-components-badged-content.umd.js.map +1 -1
  18. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js +4 -0
  19. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js.map +1 -1
  20. package/bundles/taiga-ui-kit-components-calendar-month.umd.js +4 -0
  21. package/bundles/taiga-ui-kit-components-calendar-month.umd.js.map +1 -1
  22. package/bundles/taiga-ui-kit-components-calendar-range.umd.js +4 -0
  23. package/bundles/taiga-ui-kit-components-calendar-range.umd.js.map +1 -1
  24. package/bundles/taiga-ui-kit-components-carousel.umd.js +5 -0
  25. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  26. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js +7 -1
  27. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js.map +1 -1
  28. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js +7 -1
  29. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
  30. package/bundles/taiga-ui-kit-components-checkbox.umd.js +5 -0
  31. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  32. package/bundles/taiga-ui-kit-components-combo-box.umd.js +9 -3
  33. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  34. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js +10 -3
  35. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js.map +1 -1
  36. package/bundles/taiga-ui-kit-components-elastic-container.umd.js +4 -0
  37. package/bundles/taiga-ui-kit-components-elastic-container.umd.js.map +1 -1
  38. package/bundles/taiga-ui-kit-components-files.umd.js +8 -0
  39. package/bundles/taiga-ui-kit-components-files.umd.js.map +1 -1
  40. package/bundles/taiga-ui-kit-components-filter.umd.js +5 -0
  41. package/bundles/taiga-ui-kit-components-filter.umd.js.map +1 -1
  42. package/bundles/taiga-ui-kit-components-input-copy.umd.js +4 -0
  43. package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
  44. package/bundles/taiga-ui-kit-components-input-count.umd.js +21 -0
  45. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  46. package/bundles/taiga-ui-kit-components-input-date-multi.umd.js +720 -0
  47. package/bundles/taiga-ui-kit-components-input-date-multi.umd.js.map +1 -0
  48. package/bundles/taiga-ui-kit-components-input-date-range.umd.js +6 -1
  49. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  50. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +15 -10
  51. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  52. package/bundles/taiga-ui-kit-components-input-date.umd.js +12 -2
  53. package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
  54. package/bundles/taiga-ui-kit-components-input-files.umd.js +15 -1
  55. package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
  56. package/bundles/taiga-ui-kit-components-input-inline.umd.js +6 -0
  57. package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
  58. package/bundles/taiga-ui-kit-components-input-month-range.umd.js +6 -1
  59. package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
  60. package/bundles/taiga-ui-kit-components-input-month.umd.js +4 -0
  61. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  62. package/bundles/taiga-ui-kit-components-input-number.umd.js +11 -0
  63. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  64. package/bundles/taiga-ui-kit-components-input-password.umd.js +9 -0
  65. package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
  66. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +23 -0
  67. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  68. package/bundles/taiga-ui-kit-components-input-phone.umd.js +33 -2
  69. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  70. package/bundles/taiga-ui-kit-components-input-range.umd.js +4 -0
  71. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  72. package/bundles/taiga-ui-kit-components-input-slider.umd.js +6 -0
  73. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  74. package/bundles/taiga-ui-kit-components-input-tag.umd.js +17 -6
  75. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  76. package/bundles/taiga-ui-kit-components-input-time.umd.js +12 -2
  77. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  78. package/bundles/taiga-ui-kit-components-input-year.umd.js +4 -0
  79. package/bundles/taiga-ui-kit-components-input-year.umd.js.map +1 -1
  80. package/bundles/taiga-ui-kit-components-input.umd.js +4 -0
  81. package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
  82. package/bundles/taiga-ui-kit-components-island.umd.js +4 -0
  83. package/bundles/taiga-ui-kit-components-island.umd.js.map +1 -1
  84. package/bundles/taiga-ui-kit-components-items-with-more.umd.js +4 -0
  85. package/bundles/taiga-ui-kit-components-items-with-more.umd.js.map +1 -1
  86. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +8 -0
  87. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  88. package/bundles/taiga-ui-kit-components-marker-icon.umd.js +4 -0
  89. package/bundles/taiga-ui-kit-components-marker-icon.umd.js.map +1 -1
  90. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js +4 -0
  91. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js.map +1 -1
  92. package/bundles/taiga-ui-kit-components-multi-select.umd.js +8 -0
  93. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  94. package/bundles/taiga-ui-kit-components-pagination.umd.js +40 -2
  95. package/bundles/taiga-ui-kit-components-pagination.umd.js.map +1 -1
  96. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js +7 -0
  97. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js.map +1 -1
  98. package/bundles/taiga-ui-kit-components-progress.umd.js +6 -0
  99. package/bundles/taiga-ui-kit-components-progress.umd.js.map +1 -1
  100. package/bundles/taiga-ui-kit-components-prompt.umd.js +5 -0
  101. package/bundles/taiga-ui-kit-components-prompt.umd.js.map +1 -1
  102. package/bundles/taiga-ui-kit-components-push.umd.js +7 -0
  103. package/bundles/taiga-ui-kit-components-push.umd.js.map +1 -1
  104. package/bundles/taiga-ui-kit-components-radio-block.umd.js +7 -1
  105. package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
  106. package/bundles/taiga-ui-kit-components-radio-group.umd.js +4 -0
  107. package/bundles/taiga-ui-kit-components-radio-group.umd.js.map +1 -1
  108. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +7 -1
  109. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
  110. package/bundles/taiga-ui-kit-components-radio-list.umd.js +10 -3
  111. package/bundles/taiga-ui-kit-components-radio-list.umd.js.map +1 -1
  112. package/bundles/taiga-ui-kit-components-radio.umd.js +8 -0
  113. package/bundles/taiga-ui-kit-components-radio.umd.js.map +1 -1
  114. package/bundles/taiga-ui-kit-components-range.umd.js +9 -0
  115. package/bundles/taiga-ui-kit-components-range.umd.js.map +1 -1
  116. package/bundles/taiga-ui-kit-components-rating.umd.js +7 -0
  117. package/bundles/taiga-ui-kit-components-rating.umd.js.map +1 -1
  118. package/bundles/taiga-ui-kit-components-routable-dialog.umd.js +4 -0
  119. package/bundles/taiga-ui-kit-components-routable-dialog.umd.js.map +1 -1
  120. package/bundles/taiga-ui-kit-components-select-option.umd.js +11 -0
  121. package/bundles/taiga-ui-kit-components-select-option.umd.js.map +1 -1
  122. package/bundles/taiga-ui-kit-components-select.umd.js +9 -1
  123. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  124. package/bundles/taiga-ui-kit-components-slider.umd.js +39 -0
  125. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  126. package/bundles/taiga-ui-kit-components-stepper.umd.js +6 -0
  127. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  128. package/bundles/taiga-ui-kit-components-tabs.umd.js +25 -1
  129. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  130. package/bundles/taiga-ui-kit-components-tag.umd.js +9 -0
  131. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  132. package/bundles/taiga-ui-kit-components-textarea.umd.js +13 -0
  133. package/bundles/taiga-ui-kit-components-textarea.umd.js.map +1 -1
  134. package/bundles/taiga-ui-kit-components-tiles.umd.js +4 -0
  135. package/bundles/taiga-ui-kit-components-tiles.umd.js.map +1 -1
  136. package/bundles/taiga-ui-kit-components-toggle.umd.js +13 -2
  137. package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
  138. package/bundles/taiga-ui-kit-components-tree.umd.js +28 -0
  139. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  140. package/bundles/taiga-ui-kit-components.umd.js +14 -4
  141. package/bundles/taiga-ui-kit-components.umd.js.map +1 -1
  142. package/bundles/taiga-ui-kit-constants.umd.js +19 -0
  143. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  144. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js +5 -0
  145. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js.map +1 -1
  146. package/bundles/taiga-ui-kit-directives-highlight.umd.js +4 -0
  147. package/bundles/taiga-ui-kit-directives-highlight.umd.js.map +1 -1
  148. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js +4 -0
  149. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js.map +1 -1
  150. package/bundles/taiga-ui-kit-directives-mask.umd.js +26 -0
  151. package/bundles/taiga-ui-kit-directives-mask.umd.js.map +1 -1
  152. package/bundles/taiga-ui-kit-directives-present.umd.js +15 -0
  153. package/bundles/taiga-ui-kit-directives-present.umd.js.map +1 -1
  154. package/bundles/taiga-ui-kit-directives-project-class.umd.js +7 -0
  155. package/bundles/taiga-ui-kit-directives-project-class.umd.js.map +1 -1
  156. package/bundles/taiga-ui-kit-directives-unfinished-validator.umd.js +7 -1
  157. package/bundles/taiga-ui-kit-directives-unfinished-validator.umd.js.map +1 -1
  158. package/bundles/taiga-ui-kit-directives-unmask-handler.umd.js +4 -0
  159. package/bundles/taiga-ui-kit-directives-unmask-handler.umd.js.map +1 -1
  160. package/bundles/taiga-ui-kit-directives-value-accessor.umd.js +4 -0
  161. package/bundles/taiga-ui-kit-directives-value-accessor.umd.js.map +1 -1
  162. package/bundles/taiga-ui-kit-directives.umd.js +4 -0
  163. package/bundles/taiga-ui-kit-directives.umd.js.map +1 -1
  164. package/bundles/taiga-ui-kit-interfaces.umd.js +3 -1
  165. package/bundles/taiga-ui-kit-interfaces.umd.js.map +1 -1
  166. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js +10 -0
  167. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js.map +1 -1
  168. package/bundles/taiga-ui-kit-internal.umd.js +4 -0
  169. package/bundles/taiga-ui-kit-internal.umd.js.map +1 -1
  170. package/bundles/taiga-ui-kit-pipes-field-error.umd.js +4 -0
  171. package/bundles/taiga-ui-kit-pipes-field-error.umd.js.map +1 -1
  172. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js +7 -0
  173. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js.map +1 -1
  174. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.js +4 -0
  175. package/bundles/taiga-ui-kit-pipes-iso-to-country-code.umd.js.map +1 -1
  176. package/bundles/taiga-ui-kit-pipes-sort-countries.umd.js +4 -0
  177. package/bundles/taiga-ui-kit-pipes-sort-countries.umd.js.map +1 -1
  178. package/bundles/taiga-ui-kit-pipes-stringify-content.umd.js +4 -0
  179. package/bundles/taiga-ui-kit-pipes-stringify-content.umd.js.map +1 -1
  180. package/bundles/taiga-ui-kit-pipes-stringify.umd.js +4 -0
  181. package/bundles/taiga-ui-kit-pipes-stringify.umd.js.map +1 -1
  182. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.js +4 -0
  183. package/bundles/taiga-ui-kit-pipes-to-country-code.umd.js.map +1 -1
  184. package/bundles/taiga-ui-kit-pipes-to-year.umd.js +4 -0
  185. package/bundles/taiga-ui-kit-pipes-to-year.umd.js.map +1 -1
  186. package/bundles/taiga-ui-kit-pipes.umd.js +4 -0
  187. package/bundles/taiga-ui-kit-pipes.umd.js.map +1 -1
  188. package/bundles/taiga-ui-kit-providers.umd.js +4 -0
  189. package/bundles/taiga-ui-kit-providers.umd.js.map +1 -1
  190. package/bundles/taiga-ui-kit-services.umd.js +4 -0
  191. package/bundles/taiga-ui-kit-services.umd.js.map +1 -1
  192. package/bundles/taiga-ui-kit-tokens.umd.js +35 -0
  193. package/bundles/taiga-ui-kit-tokens.umd.js.map +1 -1
  194. package/bundles/taiga-ui-kit-types.umd.js +3 -1
  195. package/bundles/taiga-ui-kit-types.umd.js.map +1 -1
  196. package/bundles/taiga-ui-kit-utils-date.umd.js +22 -0
  197. package/bundles/taiga-ui-kit-utils-date.umd.js.map +1 -0
  198. package/bundles/taiga-ui-kit-utils-files.umd.js +4 -0
  199. package/bundles/taiga-ui-kit-utils-files.umd.js.map +1 -1
  200. package/bundles/taiga-ui-kit-utils-format.umd.js +10 -0
  201. package/bundles/taiga-ui-kit-utils-format.umd.js.map +1 -1
  202. package/bundles/taiga-ui-kit-utils-mask.umd.js +50 -0
  203. package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
  204. package/bundles/taiga-ui-kit-utils-math.umd.js +7 -0
  205. package/bundles/taiga-ui-kit-utils-math.umd.js.map +1 -1
  206. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js +10 -0
  207. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js.map +1 -1
  208. package/bundles/taiga-ui-kit-utils-phone.umd.js +4 -0
  209. package/bundles/taiga-ui-kit-utils-phone.umd.js.map +1 -1
  210. package/bundles/taiga-ui-kit-utils.umd.js +14 -4
  211. package/bundles/taiga-ui-kit-utils.umd.js.map +1 -1
  212. package/bundles/taiga-ui-kit-validators.umd.js +4 -0
  213. package/bundles/taiga-ui-kit-validators.umd.js.map +1 -1
  214. package/bundles/taiga-ui-kit.umd.js +4 -0
  215. package/bundles/taiga-ui-kit.umd.js.map +1 -1
  216. package/classes/stringifiable-item.d.ts +3 -0
  217. package/classes/taiga-ui-kit-classes.d.ts +3 -0
  218. package/components/accordion/taiga-ui-kit-components-accordion.d.ts +3 -0
  219. package/components/action/taiga-ui-kit-components-action.d.ts +3 -0
  220. package/components/arrow/arrow.options.d.ts +4 -0
  221. package/components/arrow/arrow.providers.d.ts +3 -0
  222. package/components/arrow/taiga-ui-kit-components-arrow.d.ts +3 -0
  223. package/components/avatar/avatar.options.d.ts +4 -0
  224. package/components/avatar/taiga-ui-kit-components-avatar.d.ts +3 -0
  225. package/components/badge/taiga-ui-kit-components-badge.d.ts +3 -0
  226. package/components/badged-content/taiga-ui-kit-components-badged-content.d.ts +3 -0
  227. package/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.d.ts +3 -0
  228. package/components/calendar-month/taiga-ui-kit-components-calendar-month.d.ts +3 -0
  229. package/components/calendar-range/taiga-ui-kit-components-calendar-range.d.ts +3 -0
  230. package/components/carousel/taiga-ui-kit-components-carousel.d.ts +3 -0
  231. package/components/checkbox/checkbox.component.d.ts +1 -0
  232. package/components/checkbox/taiga-ui-kit-components-checkbox.d.ts +3 -0
  233. package/components/checkbox-block/checkbox-block.component.d.ts +1 -0
  234. package/components/checkbox-block/taiga-ui-kit-components-checkbox-block.d.ts +3 -0
  235. package/components/checkbox-labeled/checkbox-labeled.component.d.ts +1 -0
  236. package/components/checkbox-labeled/taiga-ui-kit-components-checkbox-labeled.d.ts +3 -0
  237. package/components/combo-box/combo-box.component.d.ts +1 -0
  238. package/components/combo-box/taiga-ui-kit-components-combo-box.d.ts +3 -0
  239. package/components/data-list-wrapper/data-list-wrapper.d.ts +3 -2
  240. package/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.d.ts +3 -0
  241. package/components/elastic-container/taiga-ui-kit-components-elastic-container.d.ts +3 -0
  242. package/components/files/file/file-options.d.ts +3 -0
  243. package/components/files/taiga-ui-kit-components-files.d.ts +3 -0
  244. package/components/filter/taiga-ui-kit-components-filter.d.ts +3 -0
  245. package/components/index.d.ts +1 -0
  246. package/components/input/taiga-ui-kit-components-input.d.ts +3 -0
  247. package/components/input-copy/taiga-ui-kit-components-input-copy.d.ts +3 -0
  248. package/components/input-count/input-count.component.d.ts +10 -0
  249. package/components/input-count/input-count.module.d.ts +3 -0
  250. package/components/input-count/input-count.options.d.ts +4 -0
  251. package/components/input-count/taiga-ui-kit-components-input-count.d.ts +3 -0
  252. package/components/input-date/input-date.component.d.ts +4 -0
  253. package/components/input-date/taiga-ui-kit-components-input-date.d.ts +3 -0
  254. package/components/input-date-multi/index.d.ts +2 -0
  255. package/components/input-date-multi/input-date-multi.component.d.ts +64 -0
  256. package/components/input-date-multi/input-date-multi.module.d.ts +14 -0
  257. package/components/input-date-multi/package.json +10 -0
  258. package/components/input-date-multi/taiga-ui-kit-components-input-date-multi.d.ts +5 -0
  259. package/components/input-date-range/taiga-ui-kit-components-input-date-range.d.ts +3 -0
  260. package/components/input-date-time/taiga-ui-kit-components-input-date-time.d.ts +3 -0
  261. package/components/input-files/input-files.component.d.ts +6 -0
  262. package/components/input-files/input-files.options.d.ts +8 -0
  263. package/components/input-files/taiga-ui-kit-components-input-files.d.ts +3 -0
  264. package/components/input-inline/taiga-ui-kit-components-input-inline.d.ts +3 -0
  265. package/components/input-month/taiga-ui-kit-components-input-month.d.ts +3 -0
  266. package/components/input-month-range/taiga-ui-kit-components-input-month-range.d.ts +3 -0
  267. package/components/input-number/input-number.component.d.ts +2 -0
  268. package/components/input-number/input-number.options.d.ts +4 -0
  269. package/components/input-number/taiga-ui-kit-components-input-number.d.ts +3 -0
  270. package/components/input-password/input-password.options.d.ts +4 -0
  271. package/components/input-password/taiga-ui-kit-components-input-password.d.ts +3 -0
  272. package/components/input-phone/input-phone.options.d.ts +3 -0
  273. package/components/input-phone/taiga-ui-kit-components-input-phone.d.ts +3 -0
  274. package/components/input-phone/utils/complete-phone-insertion-preprocessor.d.ts +7 -0
  275. package/components/input-phone/utils/create-phone-mask-expression.d.ts +6 -0
  276. package/components/input-phone-international/input-phone-international.component.d.ts +13 -0
  277. package/components/input-phone-international/input-phone-international.options.d.ts +3 -0
  278. package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.d.ts +3 -0
  279. package/components/input-range/taiga-ui-kit-components-input-range.d.ts +3 -0
  280. package/components/input-slider/input-slider.component.d.ts +2 -0
  281. package/components/input-slider/taiga-ui-kit-components-input-slider.d.ts +3 -0
  282. package/components/input-tag/input-tag.component.d.ts +1 -1
  283. package/components/input-tag/input-tag.options.d.ts +3 -0
  284. package/components/input-tag/taiga-ui-kit-components-input-tag.d.ts +3 -0
  285. package/components/input-time/input-time.component.d.ts +1 -0
  286. package/components/input-time/input-time.options.d.ts +3 -0
  287. package/components/input-time/taiga-ui-kit-components-input-time.d.ts +3 -0
  288. package/components/input-year/taiga-ui-kit-components-input-year.d.ts +3 -0
  289. package/components/island/taiga-ui-kit-components-island.d.ts +3 -0
  290. package/components/items-with-more/taiga-ui-kit-components-items-with-more.d.ts +3 -0
  291. package/components/line-clamp/line-clamp.options.d.ts +3 -0
  292. package/components/line-clamp/taiga-ui-kit-components-line-clamp.d.ts +3 -0
  293. package/components/marker-icon/taiga-ui-kit-components-marker-icon.d.ts +3 -0
  294. package/components/multi-select/multi-select.options.d.ts +3 -0
  295. package/components/multi-select/taiga-ui-kit-components-multi-select.d.ts +3 -0
  296. package/components/multi-select-option/taiga-ui-kit-components-multi-select-option.d.ts +3 -0
  297. package/components/pagination/pagination.component.d.ts +37 -0
  298. package/components/pagination/taiga-ui-kit-components-pagination.d.ts +3 -0
  299. package/components/pdf-viewer/pdf-viewer.options.d.ts +3 -0
  300. package/components/pdf-viewer/taiga-ui-kit-components-pdf-viewer.d.ts +3 -0
  301. package/components/progress/taiga-ui-kit-components-progress.d.ts +3 -0
  302. package/components/prompt/taiga-ui-kit-components-prompt.d.ts +3 -0
  303. package/components/push/push.options.d.ts +3 -0
  304. package/components/push/taiga-ui-kit-components-push.d.ts +3 -0
  305. package/components/radio/radio.options.d.ts +4 -0
  306. package/components/radio/taiga-ui-kit-components-radio.d.ts +3 -0
  307. package/components/radio-block/radio-block.component.d.ts +1 -0
  308. package/components/radio-block/taiga-ui-kit-components-radio-block.d.ts +3 -0
  309. package/components/radio-group/taiga-ui-kit-components-radio-group.d.ts +3 -0
  310. package/components/radio-labeled/radio-labeled.component.d.ts +1 -0
  311. package/components/radio-labeled/taiga-ui-kit-components-radio-labeled.d.ts +3 -0
  312. package/components/radio-list/radio-list.component.d.ts +1 -0
  313. package/components/radio-list/taiga-ui-kit-components-radio-list.d.ts +3 -0
  314. package/components/range/range-change.directive.d.ts +4 -0
  315. package/components/range/taiga-ui-kit-components-range.d.ts +3 -0
  316. package/components/rating/rating.options.d.ts +3 -0
  317. package/components/rating/taiga-ui-kit-components-rating.d.ts +3 -0
  318. package/components/routable-dialog/taiga-ui-kit-components-routable-dialog.d.ts +3 -0
  319. package/components/select/select.options.d.ts +3 -0
  320. package/components/select/taiga-ui-kit-components-select.d.ts +3 -0
  321. package/components/select-option/taiga-ui-kit-components-select-option.d.ts +3 -0
  322. package/components/slider/helpers/slider-readonly.directive.d.ts +4 -0
  323. package/components/slider/slider.options.d.ts +3 -0
  324. package/components/slider/taiga-ui-kit-components-slider.d.ts +3 -0
  325. package/components/stepper/taiga-ui-kit-components-stepper.d.ts +3 -0
  326. package/components/tabs/tab/tab.providers.d.ts +3 -0
  327. package/components/tabs/tabs/tabs.component.d.ts +2 -0
  328. package/components/tabs/tabs.options.d.ts +3 -0
  329. package/components/tabs/taiga-ui-kit-components-tabs.d.ts +3 -0
  330. package/components/tag/tag.options.d.ts +4 -0
  331. package/components/tag/taiga-ui-kit-components-tag.d.ts +3 -0
  332. package/components/taiga-ui-kit-components.d.ts +3 -0
  333. package/components/textarea/deprecated.d.ts +9 -0
  334. package/components/textarea/taiga-ui-kit-components-textarea.d.ts +3 -0
  335. package/components/tiles/taiga-ui-kit-components-tiles.d.ts +3 -0
  336. package/components/toggle/taiga-ui-kit-components-toggle.d.ts +3 -0
  337. package/components/toggle/toggle.component.d.ts +1 -0
  338. package/components/toggle/toggle.options.d.ts +4 -0
  339. package/components/tree/misc/tree.tokens.d.ts +24 -0
  340. package/components/tree/taiga-ui-kit-components-tree.d.ts +3 -0
  341. package/constants/empty-mask.d.ts +4 -0
  342. package/constants/group-class-names.d.ts +4 -0
  343. package/constants/masks.d.ts +4 -0
  344. package/constants/math.d.ts +3 -0
  345. package/constants/taiga-ui-kit-constants.d.ts +3 -0
  346. package/directives/data-list-dropdown-manager/taiga-ui-kit-directives-data-list-dropdown-manager.d.ts +3 -0
  347. package/directives/highlight/taiga-ui-kit-directives-highlight.d.ts +3 -0
  348. package/directives/lazy-loading/taiga-ui-kit-directives-lazy-loading.d.ts +3 -0
  349. package/directives/mask/legacy-mask.d.ts +21 -0
  350. package/directives/mask/taiga-ui-kit-directives-mask.d.ts +3 -0
  351. package/directives/present/present.directive.d.ts +11 -0
  352. package/directives/present/taiga-ui-kit-directives-present.d.ts +3 -0
  353. package/directives/project-class/project-class.directive.d.ts +3 -0
  354. package/directives/project-class/taiga-ui-kit-directives-project-class.d.ts +3 -0
  355. package/directives/taiga-ui-kit-directives.d.ts +3 -0
  356. package/directives/unfinished-validator/taiga-ui-kit-directives-unfinished-validator.d.ts +3 -0
  357. package/directives/unmask-handler/taiga-ui-kit-directives-unmask-handler.d.ts +3 -0
  358. package/directives/value-accessor/taiga-ui-kit-directives-value-accessor.d.ts +3 -0
  359. package/esm2015/abstract/taiga-ui-kit-abstract.js +4 -1
  360. package/esm2015/classes/stringifiable-item.js +4 -1
  361. package/esm2015/classes/taiga-ui-kit-classes.js +4 -1
  362. package/esm2015/components/accordion/taiga-ui-kit-components-accordion.js +4 -1
  363. package/esm2015/components/action/taiga-ui-kit-components-action.js +4 -1
  364. package/esm2015/components/arrow/arrow.options.js +5 -1
  365. package/esm2015/components/arrow/arrow.providers.js +4 -1
  366. package/esm2015/components/arrow/taiga-ui-kit-components-arrow.js +4 -1
  367. package/esm2015/components/avatar/avatar.options.js +5 -1
  368. package/esm2015/components/avatar/taiga-ui-kit-components-avatar.js +4 -1
  369. package/esm2015/components/badge/taiga-ui-kit-components-badge.js +4 -1
  370. package/esm2015/components/badged-content/taiga-ui-kit-components-badged-content.js +4 -1
  371. package/esm2015/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.js +4 -1
  372. package/esm2015/components/calendar-month/taiga-ui-kit-components-calendar-month.js +4 -1
  373. package/esm2015/components/calendar-range/taiga-ui-kit-components-calendar-range.js +4 -1
  374. package/esm2015/components/carousel/carousel-scroll.directive.js +2 -1
  375. package/esm2015/components/carousel/taiga-ui-kit-components-carousel.js +4 -1
  376. package/esm2015/components/checkbox/checkbox.component.js +2 -1
  377. package/esm2015/components/checkbox/taiga-ui-kit-components-checkbox.js +4 -1
  378. package/esm2015/components/checkbox-block/checkbox-block.component.js +4 -2
  379. package/esm2015/components/checkbox-block/taiga-ui-kit-components-checkbox-block.js +4 -1
  380. package/esm2015/components/checkbox-labeled/checkbox-labeled.component.js +4 -2
  381. package/esm2015/components/checkbox-labeled/taiga-ui-kit-components-checkbox-labeled.js +4 -1
  382. package/esm2015/components/combo-box/combo-box.component.js +6 -4
  383. package/esm2015/components/combo-box/taiga-ui-kit-components-combo-box.js +4 -1
  384. package/esm2015/components/data-list-wrapper/data-list-group-wrapper.component.js +2 -2
  385. package/esm2015/components/data-list-wrapper/data-list-wrapper.component.js +2 -2
  386. package/esm2015/components/data-list-wrapper/data-list-wrapper.js +6 -3
  387. package/esm2015/components/data-list-wrapper/taiga-ui-kit-components-data-list-wrapper.js +4 -1
  388. package/esm2015/components/elastic-container/taiga-ui-kit-components-elastic-container.js +4 -1
  389. package/esm2015/components/files/file/file-options.js +4 -1
  390. package/esm2015/components/files/file/file.component.js +2 -1
  391. package/esm2015/components/files/taiga-ui-kit-components-files.js +4 -1
  392. package/esm2015/components/filter/filter.component.js +2 -1
  393. package/esm2015/components/filter/taiga-ui-kit-components-filter.js +4 -1
  394. package/esm2015/components/index.js +2 -1
  395. package/esm2015/components/input/taiga-ui-kit-components-input.js +4 -1
  396. package/esm2015/components/input-copy/taiga-ui-kit-components-input-copy.js +4 -1
  397. package/esm2015/components/input-count/input-count.component.js +11 -1
  398. package/esm2015/components/input-count/input-count.module.js +4 -1
  399. package/esm2015/components/input-count/input-count.options.js +5 -1
  400. package/esm2015/components/input-count/taiga-ui-kit-components-input-count.js +4 -1
  401. package/esm2015/components/input-date/input-date.component.js +8 -2
  402. package/esm2015/components/input-date/taiga-ui-kit-components-input-date.js +4 -1
  403. package/esm2015/components/input-date-multi/index.js +3 -0
  404. package/esm2015/components/input-date-multi/input-date-multi.component.js +272 -0
  405. package/esm2015/components/input-date-multi/input-date-multi.module.js +64 -0
  406. package/esm2015/components/input-date-multi/taiga-ui-kit-components-input-date-multi.js +5 -0
  407. package/esm2015/components/input-date-range/input-date-range.component.js +3 -2
  408. package/esm2015/components/input-date-range/taiga-ui-kit-components-input-date-range.js +4 -1
  409. package/esm2015/components/input-date-time/input-date-time.component.js +4 -3
  410. package/esm2015/components/input-date-time/taiga-ui-kit-components-input-date-time.js +4 -1
  411. package/esm2015/components/input-files/input-files.component.js +9 -1
  412. package/esm2015/components/input-files/input-files.directive.js +2 -1
  413. package/esm2015/components/input-files/input-files.options.js +5 -2
  414. package/esm2015/components/input-files/taiga-ui-kit-components-input-files.js +4 -1
  415. package/esm2015/components/input-inline/input-inline.component.js +3 -1
  416. package/esm2015/components/input-inline/taiga-ui-kit-components-input-inline.js +4 -1
  417. package/esm2015/components/input-month/taiga-ui-kit-components-input-month.js +4 -1
  418. package/esm2015/components/input-month-range/input-month-range.component.js +3 -2
  419. package/esm2015/components/input-month-range/taiga-ui-kit-components-input-month-range.js +4 -1
  420. package/esm2015/components/input-number/input-number.component.js +4 -1
  421. package/esm2015/components/input-number/input-number.options.js +5 -1
  422. package/esm2015/components/input-number/taiga-ui-kit-components-input-number.js +4 -1
  423. package/esm2015/components/input-password/input-password.options.js +6 -1
  424. package/esm2015/components/input-password/taiga-ui-kit-components-input-password.js +4 -1
  425. package/esm2015/components/input-phone/input-phone.options.js +4 -1
  426. package/esm2015/components/input-phone/taiga-ui-kit-components-input-phone.js +4 -1
  427. package/esm2015/components/input-phone/utils/complete-phone-insertion-preprocessor.js +21 -3
  428. package/esm2015/components/input-phone/utils/create-phone-mask-expression.js +7 -1
  429. package/esm2015/components/input-phone-international/input-phone-international.component.js +17 -1
  430. package/esm2015/components/input-phone-international/input-phone-international.options.js +4 -1
  431. package/esm2015/components/input-phone-international/taiga-ui-kit-components-input-phone-international.js +4 -1
  432. package/esm2015/components/input-range/taiga-ui-kit-components-input-range.js +4 -1
  433. package/esm2015/components/input-slider/input-slider.component.js +3 -1
  434. package/esm2015/components/input-slider/taiga-ui-kit-components-input-slider.js +4 -1
  435. package/esm2015/components/input-tag/input-tag.component.js +6 -2
  436. package/esm2015/components/input-tag/input-tag.options.js +4 -1
  437. package/esm2015/components/input-tag/taiga-ui-kit-components-input-tag.js +4 -1
  438. package/esm2015/components/input-time/input-time.component.js +5 -2
  439. package/esm2015/components/input-time/input-time.options.js +4 -1
  440. package/esm2015/components/input-time/taiga-ui-kit-components-input-time.js +4 -1
  441. package/esm2015/components/input-year/taiga-ui-kit-components-input-year.js +4 -1
  442. package/esm2015/components/island/taiga-ui-kit-components-island.js +4 -1
  443. package/esm2015/components/items-with-more/taiga-ui-kit-components-items-with-more.js +4 -1
  444. package/esm2015/components/line-clamp/line-clamp.component.js +2 -1
  445. package/esm2015/components/line-clamp/line-clamp.options.js +4 -1
  446. package/esm2015/components/line-clamp/taiga-ui-kit-components-line-clamp.js +4 -1
  447. package/esm2015/components/marker-icon/taiga-ui-kit-components-marker-icon.js +4 -1
  448. package/esm2015/components/multi-select/multi-select.component.js +2 -1
  449. package/esm2015/components/multi-select/multi-select.options.js +4 -1
  450. package/esm2015/components/multi-select/taiga-ui-kit-components-multi-select.js +4 -1
  451. package/esm2015/components/multi-select-option/taiga-ui-kit-components-multi-select-option.js +4 -1
  452. package/esm2015/components/pagination/pagination.component.js +37 -3
  453. package/esm2015/components/pagination/taiga-ui-kit-components-pagination.js +4 -1
  454. package/esm2015/components/pdf-viewer/pdf-viewer.options.js +4 -1
  455. package/esm2015/components/pdf-viewer/taiga-ui-kit-components-pdf-viewer.js +4 -1
  456. package/esm2015/components/progress/progress-bar/progress-color-segments.directive.js +2 -1
  457. package/esm2015/components/progress/progress-circle/progress-circle.component.js +2 -1
  458. package/esm2015/components/progress/taiga-ui-kit-components-progress.js +4 -1
  459. package/esm2015/components/prompt/prompt.component.js +2 -1
  460. package/esm2015/components/prompt/taiga-ui-kit-components-prompt.js +4 -1
  461. package/esm2015/components/push/push.options.js +4 -1
  462. package/esm2015/components/push/taiga-ui-kit-components-push.js +4 -1
  463. package/esm2015/components/radio/radio.options.js +5 -1
  464. package/esm2015/components/radio/taiga-ui-kit-components-radio.js +4 -1
  465. package/esm2015/components/radio-block/radio-block.component.js +4 -2
  466. package/esm2015/components/radio-block/taiga-ui-kit-components-radio-block.js +4 -1
  467. package/esm2015/components/radio-group/taiga-ui-kit-components-radio-group.js +4 -1
  468. package/esm2015/components/radio-labeled/radio-labeled.component.js +4 -2
  469. package/esm2015/components/radio-labeled/taiga-ui-kit-components-radio-labeled.js +4 -1
  470. package/esm2015/components/radio-list/radio-list.component.js +5 -2
  471. package/esm2015/components/radio-list/taiga-ui-kit-components-radio-list.js +4 -1
  472. package/esm2015/components/range/range-change.directive.js +5 -1
  473. package/esm2015/components/range/range.component.js +2 -1
  474. package/esm2015/components/range/taiga-ui-kit-components-range.js +4 -1
  475. package/esm2015/components/rating/rating.options.js +4 -1
  476. package/esm2015/components/rating/taiga-ui-kit-components-rating.js +4 -1
  477. package/esm2015/components/routable-dialog/taiga-ui-kit-components-routable-dialog.js +4 -1
  478. package/esm2015/components/select/select.component.js +3 -2
  479. package/esm2015/components/select/select.options.js +4 -1
  480. package/esm2015/components/select/taiga-ui-kit-components-select.js +4 -1
  481. package/esm2015/components/select-option/select-option.component.js +8 -1
  482. package/esm2015/components/select-option/taiga-ui-kit-components-select-option.js +4 -1
  483. package/esm2015/components/slider/helpers/slider-readonly.directive.js +9 -1
  484. package/esm2015/components/slider/slider.component.js +25 -1
  485. package/esm2015/components/slider/slider.options.js +4 -1
  486. package/esm2015/components/slider/taiga-ui-kit-components-slider.js +4 -1
  487. package/esm2015/components/stepper/stepper.component.js +3 -1
  488. package/esm2015/components/stepper/taiga-ui-kit-components-stepper.js +4 -1
  489. package/esm2015/components/tabs/tab/tab.component.js +9 -1
  490. package/esm2015/components/tabs/tab/tab.providers.js +4 -1
  491. package/esm2015/components/tabs/tabs/tabs.component.js +3 -1
  492. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +3 -1
  493. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.providers.js +4 -2
  494. package/esm2015/components/tabs/tabs.options.js +4 -1
  495. package/esm2015/components/tabs/taiga-ui-kit-components-tabs.js +4 -1
  496. package/esm2015/components/tag/tag.component.js +2 -1
  497. package/esm2015/components/tag/tag.options.js +5 -1
  498. package/esm2015/components/tag/taiga-ui-kit-components-tag.js +4 -1
  499. package/esm2015/components/taiga-ui-kit-components.js +4 -1
  500. package/esm2015/components/textarea/deprecated.js +10 -1
  501. package/esm2015/components/textarea/taiga-ui-kit-components-textarea.js +4 -1
  502. package/esm2015/components/tiles/taiga-ui-kit-components-tiles.js +4 -1
  503. package/esm2015/components/toggle/taiga-ui-kit-components-toggle.js +4 -1
  504. package/esm2015/components/toggle/toggle.component.js +6 -3
  505. package/esm2015/components/toggle/toggle.options.js +5 -1
  506. package/esm2015/components/tree/components/tree-item/tree-item.component.js +2 -1
  507. package/esm2015/components/tree/components/tree-item/tree-item.providers.js +2 -1
  508. package/esm2015/components/tree/components/tree-item-content/tree-item-content.component.js +2 -1
  509. package/esm2015/components/tree/misc/tree.tokens.js +25 -1
  510. package/esm2015/components/tree/taiga-ui-kit-components-tree.js +4 -1
  511. package/esm2015/constants/empty-mask.js +5 -1
  512. package/esm2015/constants/group-class-names.js +5 -1
  513. package/esm2015/constants/masks.js +5 -1
  514. package/esm2015/constants/math.js +4 -1
  515. package/esm2015/constants/taiga-ui-kit-constants.js +4 -1
  516. package/esm2015/directives/data-list-dropdown-manager/data-list-dropdown-manager.directive.js +2 -1
  517. package/esm2015/directives/data-list-dropdown-manager/taiga-ui-kit-directives-data-list-dropdown-manager.js +4 -1
  518. package/esm2015/directives/highlight/taiga-ui-kit-directives-highlight.js +4 -1
  519. package/esm2015/directives/lazy-loading/taiga-ui-kit-directives-lazy-loading.js +4 -1
  520. package/esm2015/directives/mask/legacy-mask.js +31 -1
  521. package/esm2015/directives/mask/taiga-ui-kit-directives-mask.js +4 -1
  522. package/esm2015/directives/present/present.directive.js +12 -1
  523. package/esm2015/directives/present/taiga-ui-kit-directives-present.js +4 -1
  524. package/esm2015/directives/project-class/project-class.directive.js +4 -1
  525. package/esm2015/directives/project-class/taiga-ui-kit-directives-project-class.js +4 -1
  526. package/esm2015/directives/taiga-ui-kit-directives.js +4 -1
  527. package/esm2015/directives/unfinished-validator/taiga-ui-kit-directives-unfinished-validator.js +4 -1
  528. package/esm2015/directives/unfinished-validator/unfinished-validator.directive.js +4 -2
  529. package/esm2015/directives/unmask-handler/taiga-ui-kit-directives-unmask-handler.js +4 -1
  530. package/esm2015/directives/value-accessor/taiga-ui-kit-directives-value-accessor.js +4 -1
  531. package/esm2015/interfaces/taiga-ui-kit-interfaces.js +4 -1
  532. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.component.js +4 -1
  533. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.module.js +4 -1
  534. package/esm2015/internal/primitive-calendar-range/taiga-ui-kit-internal-primitive-calendar-range.js +4 -1
  535. package/esm2015/internal/taiga-ui-kit-internal.js +4 -1
  536. package/esm2015/pipes/field-error/taiga-ui-kit-pipes-field-error.js +4 -1
  537. package/esm2015/pipes/filter-by-input/filter-by-input-with.pipe.js +4 -1
  538. package/esm2015/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.js +4 -1
  539. package/esm2015/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.js +4 -1
  540. package/esm2015/pipes/sort-countries/taiga-ui-kit-pipes-sort-countries.js +4 -1
  541. package/esm2015/pipes/stringify/taiga-ui-kit-pipes-stringify.js +4 -1
  542. package/esm2015/pipes/stringify-content/taiga-ui-kit-pipes-stringify-content.js +4 -1
  543. package/esm2015/pipes/taiga-ui-kit-pipes.js +4 -1
  544. package/esm2015/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.js +4 -1
  545. package/esm2015/pipes/to-year/taiga-ui-kit-pipes-to-year.js +4 -1
  546. package/esm2015/providers/taiga-ui-kit-providers.js +4 -1
  547. package/esm2015/services/taiga-ui-kit-services.js +4 -1
  548. package/esm2015/taiga-ui-kit.js +4 -1
  549. package/esm2015/tokens/calendar-date-stream.js +4 -1
  550. package/esm2015/tokens/date-inputs-value-transformers.js +11 -1
  551. package/esm2015/tokens/input-date-options.js +4 -1
  552. package/esm2015/tokens/items-handlers.js +4 -1
  553. package/esm2015/tokens/mobile-calendar.js +4 -1
  554. package/esm2015/tokens/month-formatter.js +4 -1
  555. package/esm2015/tokens/tab-margin.js +4 -1
  556. package/esm2015/tokens/taiga-ui-kit-tokens.js +4 -1
  557. package/esm2015/tokens/validation-errors.js +4 -1
  558. package/esm2015/types/taiga-ui-kit-types.js +4 -1
  559. package/esm2015/utils/date/index.js +2 -0
  560. package/esm2015/utils/date/taiga-ui-kit-utils-date.js +5 -0
  561. package/esm2015/utils/date/update.js +6 -0
  562. package/esm2015/utils/files/taiga-ui-kit-utils-files.js +4 -1
  563. package/esm2015/utils/format/string-hash-to-hsl.js +7 -1
  564. package/esm2015/utils/format/taiga-ui-kit-utils-format.js +4 -1
  565. package/esm2015/utils/index.js +2 -1
  566. package/esm2015/utils/mask/create-auto-corrected-date-pipe.js +9 -1
  567. package/esm2015/utils/mask/create-auto-corrected-date-range-pipe.js +17 -1
  568. package/esm2015/utils/mask/create-auto-corrected-date-time-pipe.js +5 -1
  569. package/esm2015/utils/mask/create-auto-corrected-time-pipe.js +7 -1
  570. package/esm2015/utils/mask/create-date-mask.js +5 -1
  571. package/esm2015/utils/mask/create-date-range-mask.js +5 -1
  572. package/esm2015/utils/mask/create-time-mask.js +5 -1
  573. package/esm2015/utils/mask/taiga-ui-kit-utils-mask.js +4 -1
  574. package/esm2015/utils/math/horizontal-direction-to-number.js +4 -1
  575. package/esm2015/utils/math/taiga-ui-kit-utils-math.js +4 -1
  576. package/esm2015/utils/miscellaneous/get-precision.js +4 -1
  577. package/esm2015/utils/miscellaneous/replay-control-value-changes-factory.js +4 -1
  578. package/esm2015/utils/miscellaneous/taiga-ui-kit-utils-miscellaneous.js +4 -1
  579. package/esm2015/utils/phone/taiga-ui-kit-utils-phone.js +4 -1
  580. package/esm2015/utils/taiga-ui-kit-utils.js +4 -1
  581. package/esm2015/validators/taiga-ui-kit-validators.js +4 -1
  582. package/fesm2015/taiga-ui-kit-abstract.js +4 -0
  583. package/fesm2015/taiga-ui-kit-abstract.js.map +1 -1
  584. package/fesm2015/taiga-ui-kit-classes.js +7 -0
  585. package/fesm2015/taiga-ui-kit-classes.js.map +1 -1
  586. package/fesm2015/taiga-ui-kit-components-accordion.js +4 -0
  587. package/fesm2015/taiga-ui-kit-components-accordion.js.map +1 -1
  588. package/fesm2015/taiga-ui-kit-components-action.js +4 -0
  589. package/fesm2015/taiga-ui-kit-components-action.js.map +1 -1
  590. package/fesm2015/taiga-ui-kit-components-arrow.js +11 -0
  591. package/fesm2015/taiga-ui-kit-components-arrow.js.map +1 -1
  592. package/fesm2015/taiga-ui-kit-components-avatar.js +8 -0
  593. package/fesm2015/taiga-ui-kit-components-avatar.js.map +1 -1
  594. package/fesm2015/taiga-ui-kit-components-badge.js +4 -0
  595. package/fesm2015/taiga-ui-kit-components-badge.js.map +1 -1
  596. package/fesm2015/taiga-ui-kit-components-badged-content.js +4 -0
  597. package/fesm2015/taiga-ui-kit-components-badged-content.js.map +1 -1
  598. package/fesm2015/taiga-ui-kit-components-breadcrumbs.js +4 -0
  599. package/fesm2015/taiga-ui-kit-components-breadcrumbs.js.map +1 -1
  600. package/fesm2015/taiga-ui-kit-components-calendar-month.js +4 -0
  601. package/fesm2015/taiga-ui-kit-components-calendar-month.js.map +1 -1
  602. package/fesm2015/taiga-ui-kit-components-calendar-range.js +4 -0
  603. package/fesm2015/taiga-ui-kit-components-calendar-range.js.map +1 -1
  604. package/fesm2015/taiga-ui-kit-components-carousel.js +5 -0
  605. package/fesm2015/taiga-ui-kit-components-carousel.js.map +1 -1
  606. package/fesm2015/taiga-ui-kit-components-checkbox-block.js +7 -1
  607. package/fesm2015/taiga-ui-kit-components-checkbox-block.js.map +1 -1
  608. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js +7 -1
  609. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js.map +1 -1
  610. package/fesm2015/taiga-ui-kit-components-checkbox.js +5 -0
  611. package/fesm2015/taiga-ui-kit-components-checkbox.js.map +1 -1
  612. package/fesm2015/taiga-ui-kit-components-combo-box.js +9 -3
  613. package/fesm2015/taiga-ui-kit-components-combo-box.js.map +1 -1
  614. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js +11 -4
  615. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js.map +1 -1
  616. package/fesm2015/taiga-ui-kit-components-elastic-container.js +4 -0
  617. package/fesm2015/taiga-ui-kit-components-elastic-container.js.map +1 -1
  618. package/fesm2015/taiga-ui-kit-components-files.js +8 -0
  619. package/fesm2015/taiga-ui-kit-components-files.js.map +1 -1
  620. package/fesm2015/taiga-ui-kit-components-filter.js +5 -0
  621. package/fesm2015/taiga-ui-kit-components-filter.js.map +1 -1
  622. package/fesm2015/taiga-ui-kit-components-input-copy.js +4 -0
  623. package/fesm2015/taiga-ui-kit-components-input-copy.js.map +1 -1
  624. package/fesm2015/taiga-ui-kit-components-input-count.js +21 -0
  625. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  626. package/fesm2015/taiga-ui-kit-components-input-date-multi.js +335 -0
  627. package/fesm2015/taiga-ui-kit-components-input-date-multi.js.map +1 -0
  628. package/fesm2015/taiga-ui-kit-components-input-date-range.js +6 -1
  629. package/fesm2015/taiga-ui-kit-components-input-date-range.js.map +1 -1
  630. package/fesm2015/taiga-ui-kit-components-input-date-time.js +7 -2
  631. package/fesm2015/taiga-ui-kit-components-input-date-time.js.map +1 -1
  632. package/fesm2015/taiga-ui-kit-components-input-date.js +11 -1
  633. package/fesm2015/taiga-ui-kit-components-input-date.js.map +1 -1
  634. package/fesm2015/taiga-ui-kit-components-input-files.js +15 -1
  635. package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
  636. package/fesm2015/taiga-ui-kit-components-input-inline.js +6 -0
  637. package/fesm2015/taiga-ui-kit-components-input-inline.js.map +1 -1
  638. package/fesm2015/taiga-ui-kit-components-input-month-range.js +6 -1
  639. package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
  640. package/fesm2015/taiga-ui-kit-components-input-month.js +4 -0
  641. package/fesm2015/taiga-ui-kit-components-input-month.js.map +1 -1
  642. package/fesm2015/taiga-ui-kit-components-input-number.js +11 -0
  643. package/fesm2015/taiga-ui-kit-components-input-number.js.map +1 -1
  644. package/fesm2015/taiga-ui-kit-components-input-password.js +9 -0
  645. package/fesm2015/taiga-ui-kit-components-input-password.js.map +1 -1
  646. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +23 -0
  647. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  648. package/fesm2015/taiga-ui-kit-components-input-phone.js +33 -2
  649. package/fesm2015/taiga-ui-kit-components-input-phone.js.map +1 -1
  650. package/fesm2015/taiga-ui-kit-components-input-range.js +4 -0
  651. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  652. package/fesm2015/taiga-ui-kit-components-input-slider.js +6 -0
  653. package/fesm2015/taiga-ui-kit-components-input-slider.js.map +1 -1
  654. package/fesm2015/taiga-ui-kit-components-input-tag.js +12 -1
  655. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  656. package/fesm2015/taiga-ui-kit-components-input-time.js +11 -1
  657. package/fesm2015/taiga-ui-kit-components-input-time.js.map +1 -1
  658. package/fesm2015/taiga-ui-kit-components-input-year.js +4 -0
  659. package/fesm2015/taiga-ui-kit-components-input-year.js.map +1 -1
  660. package/fesm2015/taiga-ui-kit-components-input.js +4 -0
  661. package/fesm2015/taiga-ui-kit-components-input.js.map +1 -1
  662. package/fesm2015/taiga-ui-kit-components-island.js +4 -0
  663. package/fesm2015/taiga-ui-kit-components-island.js.map +1 -1
  664. package/fesm2015/taiga-ui-kit-components-items-with-more.js +4 -0
  665. package/fesm2015/taiga-ui-kit-components-items-with-more.js.map +1 -1
  666. package/fesm2015/taiga-ui-kit-components-line-clamp.js +8 -0
  667. package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
  668. package/fesm2015/taiga-ui-kit-components-marker-icon.js +4 -0
  669. package/fesm2015/taiga-ui-kit-components-marker-icon.js.map +1 -1
  670. package/fesm2015/taiga-ui-kit-components-multi-select-option.js +4 -0
  671. package/fesm2015/taiga-ui-kit-components-multi-select-option.js.map +1 -1
  672. package/fesm2015/taiga-ui-kit-components-multi-select.js +8 -0
  673. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  674. package/fesm2015/taiga-ui-kit-components-pagination.js +40 -2
  675. package/fesm2015/taiga-ui-kit-components-pagination.js.map +1 -1
  676. package/fesm2015/taiga-ui-kit-components-pdf-viewer.js +7 -0
  677. package/fesm2015/taiga-ui-kit-components-pdf-viewer.js.map +1 -1
  678. package/fesm2015/taiga-ui-kit-components-progress.js +6 -0
  679. package/fesm2015/taiga-ui-kit-components-progress.js.map +1 -1
  680. package/fesm2015/taiga-ui-kit-components-prompt.js +5 -0
  681. package/fesm2015/taiga-ui-kit-components-prompt.js.map +1 -1
  682. package/fesm2015/taiga-ui-kit-components-push.js +7 -0
  683. package/fesm2015/taiga-ui-kit-components-push.js.map +1 -1
  684. package/fesm2015/taiga-ui-kit-components-radio-block.js +7 -1
  685. package/fesm2015/taiga-ui-kit-components-radio-block.js.map +1 -1
  686. package/fesm2015/taiga-ui-kit-components-radio-group.js +4 -0
  687. package/fesm2015/taiga-ui-kit-components-radio-group.js.map +1 -1
  688. package/fesm2015/taiga-ui-kit-components-radio-labeled.js +7 -1
  689. package/fesm2015/taiga-ui-kit-components-radio-labeled.js.map +1 -1
  690. package/fesm2015/taiga-ui-kit-components-radio-list.js +8 -1
  691. package/fesm2015/taiga-ui-kit-components-radio-list.js.map +1 -1
  692. package/fesm2015/taiga-ui-kit-components-radio.js +8 -0
  693. package/fesm2015/taiga-ui-kit-components-radio.js.map +1 -1
  694. package/fesm2015/taiga-ui-kit-components-range.js +9 -0
  695. package/fesm2015/taiga-ui-kit-components-range.js.map +1 -1
  696. package/fesm2015/taiga-ui-kit-components-rating.js +7 -0
  697. package/fesm2015/taiga-ui-kit-components-rating.js.map +1 -1
  698. package/fesm2015/taiga-ui-kit-components-routable-dialog.js +4 -0
  699. package/fesm2015/taiga-ui-kit-components-routable-dialog.js.map +1 -1
  700. package/fesm2015/taiga-ui-kit-components-select-option.js +11 -0
  701. package/fesm2015/taiga-ui-kit-components-select-option.js.map +1 -1
  702. package/fesm2015/taiga-ui-kit-components-select.js +9 -1
  703. package/fesm2015/taiga-ui-kit-components-select.js.map +1 -1
  704. package/fesm2015/taiga-ui-kit-components-slider.js +39 -0
  705. package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
  706. package/fesm2015/taiga-ui-kit-components-stepper.js +6 -0
  707. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  708. package/fesm2015/taiga-ui-kit-components-tabs.js +25 -1
  709. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  710. package/fesm2015/taiga-ui-kit-components-tag.js +9 -0
  711. package/fesm2015/taiga-ui-kit-components-tag.js.map +1 -1
  712. package/fesm2015/taiga-ui-kit-components-textarea.js +13 -0
  713. package/fesm2015/taiga-ui-kit-components-textarea.js.map +1 -1
  714. package/fesm2015/taiga-ui-kit-components-tiles.js +4 -0
  715. package/fesm2015/taiga-ui-kit-components-tiles.js.map +1 -1
  716. package/fesm2015/taiga-ui-kit-components-toggle.js +13 -2
  717. package/fesm2015/taiga-ui-kit-components-toggle.js.map +1 -1
  718. package/fesm2015/taiga-ui-kit-components-tree.js +28 -0
  719. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  720. package/fesm2015/taiga-ui-kit-components.js +5 -0
  721. package/fesm2015/taiga-ui-kit-components.js.map +1 -1
  722. package/fesm2015/taiga-ui-kit-constants.js +19 -0
  723. package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
  724. package/fesm2015/taiga-ui-kit-directives-data-list-dropdown-manager.js +5 -0
  725. package/fesm2015/taiga-ui-kit-directives-data-list-dropdown-manager.js.map +1 -1
  726. package/fesm2015/taiga-ui-kit-directives-highlight.js +4 -0
  727. package/fesm2015/taiga-ui-kit-directives-highlight.js.map +1 -1
  728. package/fesm2015/taiga-ui-kit-directives-lazy-loading.js +4 -0
  729. package/fesm2015/taiga-ui-kit-directives-lazy-loading.js.map +1 -1
  730. package/fesm2015/taiga-ui-kit-directives-mask.js +26 -0
  731. package/fesm2015/taiga-ui-kit-directives-mask.js.map +1 -1
  732. package/fesm2015/taiga-ui-kit-directives-present.js +15 -0
  733. package/fesm2015/taiga-ui-kit-directives-present.js.map +1 -1
  734. package/fesm2015/taiga-ui-kit-directives-project-class.js +7 -0
  735. package/fesm2015/taiga-ui-kit-directives-project-class.js.map +1 -1
  736. package/fesm2015/taiga-ui-kit-directives-unfinished-validator.js +7 -1
  737. package/fesm2015/taiga-ui-kit-directives-unfinished-validator.js.map +1 -1
  738. package/fesm2015/taiga-ui-kit-directives-unmask-handler.js +4 -0
  739. package/fesm2015/taiga-ui-kit-directives-unmask-handler.js.map +1 -1
  740. package/fesm2015/taiga-ui-kit-directives-value-accessor.js +4 -0
  741. package/fesm2015/taiga-ui-kit-directives-value-accessor.js.map +1 -1
  742. package/fesm2015/taiga-ui-kit-directives.js +4 -0
  743. package/fesm2015/taiga-ui-kit-directives.js.map +1 -1
  744. package/fesm2015/taiga-ui-kit-interfaces.js +3 -1
  745. package/fesm2015/taiga-ui-kit-interfaces.js.map +1 -1
  746. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js +10 -0
  747. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js.map +1 -1
  748. package/fesm2015/taiga-ui-kit-internal.js +4 -0
  749. package/fesm2015/taiga-ui-kit-internal.js.map +1 -1
  750. package/fesm2015/taiga-ui-kit-pipes-field-error.js +4 -0
  751. package/fesm2015/taiga-ui-kit-pipes-field-error.js.map +1 -1
  752. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js +7 -0
  753. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js.map +1 -1
  754. package/fesm2015/taiga-ui-kit-pipes-iso-to-country-code.js +4 -0
  755. package/fesm2015/taiga-ui-kit-pipes-iso-to-country-code.js.map +1 -1
  756. package/fesm2015/taiga-ui-kit-pipes-sort-countries.js +4 -0
  757. package/fesm2015/taiga-ui-kit-pipes-sort-countries.js.map +1 -1
  758. package/fesm2015/taiga-ui-kit-pipes-stringify-content.js +4 -0
  759. package/fesm2015/taiga-ui-kit-pipes-stringify-content.js.map +1 -1
  760. package/fesm2015/taiga-ui-kit-pipes-stringify.js +4 -0
  761. package/fesm2015/taiga-ui-kit-pipes-stringify.js.map +1 -1
  762. package/fesm2015/taiga-ui-kit-pipes-to-country-code.js +4 -0
  763. package/fesm2015/taiga-ui-kit-pipes-to-country-code.js.map +1 -1
  764. package/fesm2015/taiga-ui-kit-pipes-to-year.js +4 -0
  765. package/fesm2015/taiga-ui-kit-pipes-to-year.js.map +1 -1
  766. package/fesm2015/taiga-ui-kit-pipes.js +4 -0
  767. package/fesm2015/taiga-ui-kit-pipes.js.map +1 -1
  768. package/fesm2015/taiga-ui-kit-providers.js +4 -0
  769. package/fesm2015/taiga-ui-kit-providers.js.map +1 -1
  770. package/fesm2015/taiga-ui-kit-services.js +4 -0
  771. package/fesm2015/taiga-ui-kit-services.js.map +1 -1
  772. package/fesm2015/taiga-ui-kit-tokens.js +35 -0
  773. package/fesm2015/taiga-ui-kit-tokens.js.map +1 -1
  774. package/fesm2015/taiga-ui-kit-types.js +3 -1
  775. package/fesm2015/taiga-ui-kit-types.js.map +1 -1
  776. package/fesm2015/taiga-ui-kit-utils-date.js +12 -0
  777. package/fesm2015/taiga-ui-kit-utils-date.js.map +1 -0
  778. package/fesm2015/taiga-ui-kit-utils-files.js +4 -0
  779. package/fesm2015/taiga-ui-kit-utils-files.js.map +1 -1
  780. package/fesm2015/taiga-ui-kit-utils-format.js +10 -0
  781. package/fesm2015/taiga-ui-kit-utils-format.js.map +1 -1
  782. package/fesm2015/taiga-ui-kit-utils-mask.js +50 -0
  783. package/fesm2015/taiga-ui-kit-utils-mask.js.map +1 -1
  784. package/fesm2015/taiga-ui-kit-utils-math.js +7 -0
  785. package/fesm2015/taiga-ui-kit-utils-math.js.map +1 -1
  786. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js +10 -0
  787. package/fesm2015/taiga-ui-kit-utils-miscellaneous.js.map +1 -1
  788. package/fesm2015/taiga-ui-kit-utils-phone.js +4 -0
  789. package/fesm2015/taiga-ui-kit-utils-phone.js.map +1 -1
  790. package/fesm2015/taiga-ui-kit-utils.js +5 -0
  791. package/fesm2015/taiga-ui-kit-utils.js.map +1 -1
  792. package/fesm2015/taiga-ui-kit-validators.js +4 -0
  793. package/fesm2015/taiga-ui-kit-validators.js.map +1 -1
  794. package/fesm2015/taiga-ui-kit.js +4 -0
  795. package/fesm2015/taiga-ui-kit.js.map +1 -1
  796. package/interfaces/taiga-ui-kit-interfaces.d.ts +3 -0
  797. package/internal/primitive-calendar-range/primitive-calendar-range.component.d.ts +3 -0
  798. package/internal/primitive-calendar-range/primitive-calendar-range.module.d.ts +3 -0
  799. package/internal/primitive-calendar-range/taiga-ui-kit-internal-primitive-calendar-range.d.ts +3 -0
  800. package/internal/taiga-ui-kit-internal.d.ts +3 -0
  801. package/package.json +5 -5
  802. package/pipes/field-error/taiga-ui-kit-pipes-field-error.d.ts +3 -0
  803. package/pipes/filter-by-input/filter-by-input-with.pipe.d.ts +3 -0
  804. package/pipes/filter-by-input/filter-by-input.base.d.ts +4 -0
  805. package/pipes/filter-by-input/taiga-ui-kit-pipes-filter-by-input.d.ts +3 -0
  806. package/pipes/iso-to-country-code/taiga-ui-kit-pipes-iso-to-country-code.d.ts +3 -0
  807. package/pipes/sort-countries/taiga-ui-kit-pipes-sort-countries.d.ts +3 -0
  808. package/pipes/stringify/taiga-ui-kit-pipes-stringify.d.ts +3 -0
  809. package/pipes/stringify-content/taiga-ui-kit-pipes-stringify-content.d.ts +3 -0
  810. package/pipes/taiga-ui-kit-pipes.d.ts +3 -0
  811. package/pipes/to-country-code/taiga-ui-kit-pipes-to-country-code.d.ts +3 -0
  812. package/pipes/to-year/taiga-ui-kit-pipes-to-year.d.ts +3 -0
  813. package/providers/taiga-ui-kit-providers.d.ts +3 -0
  814. package/services/taiga-ui-kit-services.d.ts +3 -0
  815. package/taiga-ui-kit.d.ts +3 -0
  816. package/tokens/calendar-date-stream.d.ts +3 -0
  817. package/tokens/date-inputs-value-transformers.d.ts +9 -0
  818. package/tokens/input-date-options.d.ts +3 -0
  819. package/tokens/items-handlers.d.ts +3 -0
  820. package/tokens/mobile-calendar.d.ts +3 -0
  821. package/tokens/month-formatter.d.ts +3 -0
  822. package/tokens/tab-margin.d.ts +3 -0
  823. package/tokens/taiga-ui-kit-tokens.d.ts +3 -0
  824. package/tokens/validation-errors.d.ts +3 -0
  825. package/types/file-state.d.ts +3 -0
  826. package/types/key-steps.d.ts +18 -0
  827. package/types/taiga-ui-kit-types.d.ts +3 -0
  828. package/utils/date/index.d.ts +1 -0
  829. package/utils/date/package.json +10 -0
  830. package/utils/date/taiga-ui-kit-utils-date.d.ts +5 -0
  831. package/utils/date/update.d.ts +2 -0
  832. package/utils/files/taiga-ui-kit-utils-files.d.ts +3 -0
  833. package/utils/format/string-hash-to-hsl.d.ts +5 -0
  834. package/utils/format/taiga-ui-kit-utils-format.d.ts +3 -0
  835. package/utils/index.d.ts +1 -0
  836. package/utils/mask/create-auto-corrected-date-pipe.d.ts +12 -0
  837. package/utils/mask/create-auto-corrected-date-range-pipe.d.ts +16 -0
  838. package/utils/mask/create-auto-corrected-date-time-pipe.d.ts +4 -0
  839. package/utils/mask/create-auto-corrected-time-pipe.d.ts +6 -0
  840. package/utils/mask/create-date-mask.d.ts +4 -0
  841. package/utils/mask/create-date-range-mask.d.ts +4 -0
  842. package/utils/mask/create-time-mask.d.ts +4 -0
  843. package/utils/mask/taiga-ui-kit-utils-mask.d.ts +3 -0
  844. package/utils/math/horizontal-direction-to-number.d.ts +3 -0
  845. package/utils/math/taiga-ui-kit-utils-math.d.ts +3 -0
  846. package/utils/miscellaneous/get-precision.d.ts +3 -0
  847. package/utils/miscellaneous/replay-control-value-changes-factory.d.ts +3 -0
  848. package/utils/miscellaneous/taiga-ui-kit-utils-miscellaneous.d.ts +3 -0
  849. package/utils/phone/taiga-ui-kit-utils-phone.d.ts +3 -0
  850. package/utils/taiga-ui-kit-utils.d.ts +3 -0
  851. package/validators/taiga-ui-kit-validators.d.ts +3 -0
@@ -56,7 +56,8 @@ export class TuiInputDateRangeComponent extends AbstractTuiNullableControl {
56
56
  return (_a = this.max) !== null && _a !== void 0 ? _a : TUI_LAST_DAY;
57
57
  }
58
58
  get nativeFocusableElement() {
59
- return this.textfield ? this.textfield.nativeFocusableElement : null;
59
+ var _a, _b;
60
+ return (_b = (_a = this.textfield) === null || _a === void 0 ? void 0 : _a.nativeFocusableElement) !== null && _b !== void 0 ? _b : null;
60
61
  }
61
62
  get focused() {
62
63
  var _a;
@@ -318,4 +319,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
318
319
  type: HostListener,
319
320
  args: ['click']
320
321
  }], calculateMask: [] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBRUosU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsdUJBQXVCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsMEJBQTBCLEVBRTFCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksRUFDWixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFFWCxZQUFZLEVBQ1osUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBRWhCLDhCQUE4QixHQUtqQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCwyQkFBMkIs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LGdCQUFnQjtnQkE2RzdCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQXlIYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BU0tJVE9fREVGQVVMVF9PUFRJT05TLCBNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheUxpa2UsXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICBUdWlNb250aCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlUeXBlZE1hcHBlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9ERUZBVUxUX01BUktFUl9IQU5ETEVSLFxuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgIFR1aU1hcmtlckhhbmRsZXIsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVIsXG4gICAgVFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVIsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0RBVEVfVEVYVFMsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfTU9CSUxFX0NBTEVOREFSLFxuICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIsXG4gICAgVHVpSW5wdXREYXRlT3B0aW9ucyxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnQsIFBvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyKFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRGF5UmFuZ2U+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8VHVpRGF5PiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWFya2VySGFuZGxlcjogVHVpTWFya2VySGFuZGxlciA9IFRVSV9ERUZBVUxUX01BUktFUl9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0Vmlld2VkTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBUdWlEYXkgfCBudWxsID0gdGhpcy5vcHRpb25zLm1pbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBUdWlEYXkgfCBudWxsID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heExlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwgPSBudWxsO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgbWF4TGVuZ3RoTWFwcGVyOiBUdWlUeXBlZE1hcHBlcjxcbiAgICAgICAgW1R1aURheSwgVHVpRGF5UmFuZ2UgfCBudWxsLCBUdWlEYXlMaWtlIHwgbnVsbCwgYm9vbGVhbl0sXG4gICAgICAgIFR1aURheVxuICAgID4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG5cbiAgICByZWFkb25seSBkYXRlRmlsbGVyJCA9IHRoaXMuZGF0ZVRleHRzJC5waXBlKFxuICAgICAgICBtYXAoZGF0ZVRleHRzID0+XG4gICAgICAgICAgICBjaGFuZ2VEYXRlU2VwYXJhdG9yKGRhdGVUZXh0c1t0aGlzLmRhdGVGb3JtYXRdLCB0aGlzLmRhdGVTZXBhcmF0b3IpLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX01PQklMRSkgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUdWlEaWFsb2dTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ3M6IFR1aURpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVFVJX01PQklMRV9DQUxFTkRBUilcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVDYWxlbmRhcjogVHlwZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfRk9STUFUKSByZWFkb25seSBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgQEluamVjdChUVUlfREFURV9TRVBBUkFUT1IpIHJlYWRvbmx5IGRhdGVTZXBhcmF0b3I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdChUVUlfREFURV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgZGF0ZVRleHRzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpRGF0ZU1vZGUsIHN0cmluZz4+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSKVxuICAgICAgICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyOiBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXI8VHVpRGF5UmFuZ2UgfCBudWxsPiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dERhdGVPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIsIHZhbHVlVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkTWluKCk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA/PyBUVUlfRklSU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1heCgpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXggPz8gVFVJX0xBU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkID8gdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkPy5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNYXgsXG4gICAgICAgICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVQZXJpb2QoKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZmluZChpdGVtID0+XG4gICAgICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnJvbS5kYXlTYW1lKGIuZnJvbS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYS50by5kYXlTYW1lKGIudG8uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgfHwgbnVsbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgbmF0aXZlVmFsdWUsIGFjdGl2ZVBlcmlvZH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChhY3RpdmVQZXJpb2QpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoYWN0aXZlUGVyaW9kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgPyB2YWx1ZS5nZXRGb3JtYXR0ZWREYXlSYW5nZSh0aGlzLmRhdGVGb3JtYXQsIHRoaXMuZGF0ZVNlcGFyYXRvcilcbiAgICAgICAgICAgIDogbmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dWYWx1ZVRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmICF0aGlzLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kPy5jb250ZW50IHx8IHRoaXMuY29tcHV0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaW5uZXJQc2V1ZG9Gb2N1c2VkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucHNldWRvRm9jdXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuIHx8IHRoaXMuY29tcHV0ZWRGb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py52YWx1ZSB8fCAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDb21wdXRlZFJhbmdlRmlsbGVyKGRhdGVGaWxsZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVBlcmlvZCA/ICcnIDogdGhpcy5nZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcik7XG4gICAgfVxuXG4gICAgb25JY29uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb21wdXRlZE1vYmlsZSB8fCAhdGhpcy5tb2JpbGVDYWxlbmRhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dzXG4gICAgICAgICAgICAub3BlbjxUdWlEYXlSYW5nZT4oXG4gICAgICAgICAgICAgICAgbmV3IFBvbHltb3JwaGV1c0NvbXBvbmVudCh0aGlzLm1vYmlsZUNhbGVuZGFyLCB0aGlzLmluamVjdG9yKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdmdWxsc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdGhpcy5tYXhMZW5ndGhNYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heExlbmd0aE1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVQZXJpb2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPT09XG4gICAgICAgICAgICAgICAgICAgIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5LFxuICAgICAgICBtYXg6IFR1aURheSxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgICAgICBtb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogbWluLnRvTG9jYWxOYXRpdmVEYXRlKCksXG4gICAgICAgICAgICBtYXg6IG1heC50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWluTGVuZ3RoOiBtaW5MZW5ndGggfHwge30sXG4gICAgICAgICAgICBtYXhMZW5ndGg6IG1heExlbmd0aCB8fCB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGNhbk9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICp0dWlMZXQ9XCJkYXRlRmlsbGVyJCB8IGFzeW5jIGFzIGRhdGVGaWxsZXJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtcmFuZ2VfX3RleHRmaWVsZFwiXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgW21hc2tpdG9dPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICAgICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgICAgICBbcHNldWRvRm9jdXNdPVwiaW5uZXJQc2V1ZG9Gb2N1c2VkXCJcbiAgICAgICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEZpbGxlcl09XCJnZXRDb21wdXRlZFJhbmdlRmlsbGVyKGRhdGVGaWxsZXIgfHwgJycpXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiY2FsZW5kYXJJY29uICYmIGljb25Db250ZW50XCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiY29tcHV0ZWRNYXhcIlxuICAgICAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW21pbl09XCJjb21wdXRlZE1pblwiXG4gICAgICAgICAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3R1aS1jYWxlbmRhci1yYW5nZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1kYXRlLXJhbmdlL2lucHV0LWRhdGUtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS1yYW5nZS9pbnB1dC1kYXRlLXJhbmdlLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBRUosU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUMsdUJBQXVCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsMEJBQTBCLEVBRTFCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsYUFBYSxFQUNiLFlBQVksRUFDWixZQUFZLEVBQ1osMEJBQTBCLEVBSzFCLFdBQVcsRUFFWCxZQUFZLEVBQ1osUUFBUSxFQUNSLGVBQWUsRUFDZixPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDBCQUEwQixFQUMxQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBRWhCLDhCQUE4QixHQUtqQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDSCwyQkFBMkIs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WUFBWTt1QkFBQyxPQUFPO2dCQXlIYixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFR5cGUsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BU0tJVE9fREVGQVVMVF9PUFRJT05TLCBNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlUmFuZ2VPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgREFURV9SQU5HRV9GSUxMRVJfTEVOR1RILFxuICAgIFJBTkdFX1NFUEFSQVRPUl9DSEFSLFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aURheUxpa2UsXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzUHJlc2VudCxcbiAgICBUdWlNb250aCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlUeXBlZE1hcHBlcixcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9ERUZBVUxUX01BUktFUl9IQU5ETEVSLFxuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICBUdWlEaWFsb2dTZXJ2aWNlLFxuICAgIFR1aU1hcmtlckhhbmRsZXIsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVRleHRmaWVsZFNpemVEaXJlY3RpdmUsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVIsXG4gICAgVFVJX0RBVEVfTU9ERV9NQVNLSVRPX0FEQVBURVIsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gICAgVFVJX0RBVEVfUkFOR0VfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0RBVEVfVEVYVFMsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfTU9CSUxFX0NBTEVOREFSLFxuICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIsXG4gICAgVHVpSW5wdXREYXRlT3B0aW9ucyxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb21wb25lbnQsIFBvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1kYXRlLXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXREYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgICAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyKFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRGF5UmFuZ2U+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8VHVpRGF5PiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBBTFdBWVNfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWFya2VySGFuZGxlcjogVHVpTWFya2VySGFuZGxlciA9IFRVSV9ERUZBVUxUX01BUktFUl9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0Vmlld2VkTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXRlbXM6IHJlYWRvbmx5IFR1aURheVJhbmdlUGVyaW9kW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBUdWlEYXkgfCBudWxsID0gdGhpcy5vcHRpb25zLm1pbjtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4OiBUdWlEYXkgfCBudWxsID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIG1heExlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwgPSBudWxsO1xuXG4gICAgb3BlbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgbWF4TGVuZ3RoTWFwcGVyOiBUdWlUeXBlZE1hcHBlcjxcbiAgICAgICAgW1R1aURheSwgVHVpRGF5UmFuZ2UgfCBudWxsLCBUdWlEYXlMaWtlIHwgbnVsbCwgYm9vbGVhbl0sXG4gICAgICAgIFR1aURheVxuICAgID4gPSBNQVhfREFZX1JBTkdFX0xFTkdUSF9NQVBQRVI7XG5cbiAgICByZWFkb25seSBkYXRlRmlsbGVyJCA9IHRoaXMuZGF0ZVRleHRzJC5waXBlKFxuICAgICAgICBtYXAoZGF0ZVRleHRzID0+XG4gICAgICAgICAgICBjaGFuZ2VEYXRlU2VwYXJhdG9yKGRhdGVUZXh0c1t0aGlzLmRhdGVGb3JtYXRdLCB0aGlzLmRhdGVTZXBhcmF0b3IpLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX01PQklMRSkgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUdWlEaWFsb2dTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ3M6IFR1aURpYWxvZ1NlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoVFVJX01PQklMRV9DQUxFTkRBUilcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVDYWxlbmRhcjogVHlwZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfRk9STUFUKSByZWFkb25seSBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgQEluamVjdChUVUlfREFURV9TRVBBUkFUT1IpIHJlYWRvbmx5IGRhdGVTZXBhcmF0b3I6IHN0cmluZyxcbiAgICAgICAgQEluamVjdChUVUlfREFURV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgZGF0ZVRleHRzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpRGF0ZU1vZGUsIHN0cmluZz4+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1JBTkdFX1ZBTFVFX1RSQU5TRk9STUVSKVxuICAgICAgICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyOiBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXI8VHVpRGF5UmFuZ2UgfCBudWxsPiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dERhdGVPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIsIHZhbHVlVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkTWluKCk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA/PyBUVUlfRklSU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1heCgpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXggPz8gVFVJX0xBU1RfREFZO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkPy5uYXRpdmVGb2N1c2FibGVFbGVtZW50ID8/IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkPy5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgJiYgISF0aGlzLm1vYmlsZUNhbGVuZGFyO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIGdldCBjYW5PcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcmFjdGl2ZSAmJiAhdGhpcy5jb21wdXRlZE1vYmlsZTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRFeGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgID8gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ/LnBsYWNlaG9sZGVyIHx8ICcnXG4gICAgICAgICAgICA6ICcnO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1hc2soKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVQZXJpb2RcbiAgICAgICAgICAgID8gTUFTS0lUT19ERUZBVUxUX09QVElPTlNcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNYXgsXG4gICAgICAgICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVQZXJpb2QoKTogVHVpRGF5UmFuZ2VQZXJpb2QgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZmluZChpdGVtID0+XG4gICAgICAgICAgICAgICAgdHVpTnVsbGFibGVTYW1lKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGEuZnJvbS5kYXlTYW1lKGIuZnJvbS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgYS50by5kYXlTYW1lKGIudG8uZGF5TGltaXQodGhpcy5taW4sIHRoaXMubWF4KSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICkgfHwgbnVsbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgbmF0aXZlVmFsdWUsIGFjdGl2ZVBlcmlvZH0gPSB0aGlzO1xuXG4gICAgICAgIGlmIChhY3RpdmVQZXJpb2QpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcoYWN0aXZlUGVyaW9kKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgPyB2YWx1ZS5nZXRGb3JtYXR0ZWREYXlSYW5nZSh0aGlzLmRhdGVGb3JtYXQsIHRoaXMuZGF0ZVNlcGFyYXRvcilcbiAgICAgICAgICAgIDogbmF0aXZlVmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dWYWx1ZVRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNQcmVzZW50KHRoaXMudmFsdWUpICYmICF0aGlzLmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQ29udGVudCgpOiBQb2x5bW9ycGhldXNDb250ZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlUGVyaW9kPy5jb250ZW50IHx8IHRoaXMuY29tcHV0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgaW5uZXJQc2V1ZG9Gb2N1c2VkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMucHNldWRvRm9jdXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcGVuIHx8IHRoaXMuY29tcHV0ZWRGb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py52YWx1ZSB8fCAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDb21wdXRlZFJhbmdlRmlsbGVyKGRhdGVGaWxsZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVBlcmlvZCA/ICcnIDogdGhpcy5nZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcik7XG4gICAgfVxuXG4gICAgb25JY29uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb21wdXRlZE1vYmlsZSB8fCAhdGhpcy5tb2JpbGVDYWxlbmRhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dzXG4gICAgICAgICAgICAub3BlbjxUdWlEYXlSYW5nZT4oXG4gICAgICAgICAgICAgICAgbmV3IFBvbHltb3JwaGV1c0NvbXBvbmVudCh0aGlzLm1vYmlsZUNhbGVuZGFyLCB0aGlzLmluamVjdG9yKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNpemU6ICdmdWxsc2NyZWVuJyxcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbjogdGhpcy5tYXhMZW5ndGhNYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4OiB0aGlzLm1heExlbmd0aE1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWF4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogdGhpcy5kaXNhYmxlZEl0ZW1IYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW4gPSBvcGVuO1xuICAgIH1cblxuICAgIG9uVmFsdWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbHVlID1cbiAgICAgICAgICAgIHZhbHVlLmxlbmd0aCA9PT0gREFURV9SQU5HRV9GSUxMRVJfTEVOR1RIXG4gICAgICAgICAgICAgICAgPyBUdWlEYXlSYW5nZS5ub3JtYWxpemVQYXJzZSh2YWx1ZSwgdGhpcy5kYXRlRm9ybWF0KVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBvblJhbmdlQ2hhbmdlKHJhbmdlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG5cbiAgICAgICAgaWYgKCFyYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHJhbmdlO1xuICAgIH1cblxuICAgIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVQZXJpb2QgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgb25BY3RpdmVab25lKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFmb2N1c2VkICYmXG4gICAgICAgICAgICAhdGhpcy5pdGVtU2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICh0aGlzLm5hdGl2ZVZhbHVlLmxlbmd0aCA9PT0gREFURV9GSUxMRVJfTEVOR1RIIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPT09XG4gICAgICAgICAgICAgICAgICAgIERBVEVfRklMTEVSX0xFTkdUSCArIFJBTkdFX1NFUEFSQVRPUl9DSEFSLmxlbmd0aClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uubm9ybWFsaXplUGFyc2UodGhpcy5uYXRpdmVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHZhbHVlID8gdGhpcy5jb21wdXRlZFZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbHVlSWRlbnRpY2FsQ29tcGFyYXRvcihcbiAgICAgICAgb2xkVmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICAgICAgbmV3VmFsdWU6IFR1aURheVJhbmdlIHwgbnVsbCxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZSwgbmV3VmFsdWUsIChhLCBiKSA9PiBhLmRheVNhbWUoYikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrKFxuICAgICAgICBkYXRlRm9ybWF0OiBUdWlEYXRlTW9kZSxcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIG1pbjogVHVpRGF5LFxuICAgICAgICBtYXg6IFR1aURheSxcbiAgICAgICAgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICAgICAgbWF4TGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVJhbmdlT3B0aW9uc0dlbmVyYXRvcih7XG4gICAgICAgICAgICBzZXBhcmF0b3IsXG4gICAgICAgICAgICBtb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogbWluLnRvTG9jYWxOYXRpdmVEYXRlKCksXG4gICAgICAgICAgICBtYXg6IG1heC50b0xvY2FsTmF0aXZlRGF0ZSgpLFxuICAgICAgICAgICAgbWluTGVuZ3RoOiBtaW5MZW5ndGggfHwge30sXG4gICAgICAgICAgICBtYXhMZW5ndGg6IG1heExlbmd0aCB8fCB7fSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXRlbVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBTdHJpbmcoaXRlbSkgPT09IHRoaXMubmF0aXZlVmFsdWUpICE9PSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzSW5wdXQocHJldmVudFNjcm9sbDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudC5mb2N1cyh7cHJldmVudFNjcm9sbH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGaWxsZXIoZGF0ZUZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke2RhdGVGaWxsZXJ9JHtSQU5HRV9TRVBBUkFUT1JfQ0hBUn0ke2RhdGVGaWxsZXJ9YDtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImNhbk9wZW5cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbb3Blbl09XCJvcGVuICYmIGNhbk9wZW5cIlxuICAgIChvcGVuQ2hhbmdlKT1cIm9uT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodHVpQWN0aXZlWm9uZUNoYW5nZSk9XCJvbkFjdGl2ZVpvbmUoJGV2ZW50KVwiXG4+XG4gICAgPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgICAgICp0dWlMZXQ9XCJkYXRlRmlsbGVyJCB8IGFzeW5jIGFzIGRhdGVGaWxsZXJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtcmFuZ2VfX3RleHRmaWVsZFwiXG4gICAgICAgIHR1aVZhbHVlQWNjZXNzb3JcbiAgICAgICAgY2xhc3M9XCJ0LXRleHRmaWVsZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW2ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgW21hc2tpdG9dPVwiY29tcHV0ZWRNYXNrXCJcbiAgICAgICAgW25hdGl2ZUlkXT1cIm5hdGl2ZUlkXCJcbiAgICAgICAgW3BzZXVkb0FjdGl2ZV09XCJwc2V1ZG9BY3RpdmVcIlxuICAgICAgICBbcHNldWRvRm9jdXNdPVwiaW5uZXJQc2V1ZG9Gb2N1c2VkXCJcbiAgICAgICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEZpbGxlcl09XCJnZXRDb21wdXRlZFJhbmdlRmlsbGVyKGRhdGVGaWxsZXIgfHwgJycpXCJcbiAgICAgICAgW3R1aVRleHRmaWVsZEljb25dPVwiY2FsZW5kYXJJY29uICYmIGljb25Db250ZW50XCJcbiAgICAgICAgW3ZhbHVlXT1cImNvbXB1dGVkVmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgICAgICAgICAgc2VsZWN0PVwiaW5wdXRcIlxuICAgICAgICA+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbHVlVGVtcGxhdGVcIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJ0dWlDb250ZW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC12YWx1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkQ29udGVudCBhcyB0ZXh0OyBjb250ZXh0OiB7JGltcGxpY2l0OiB2YWx1ZX1cIj5cbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC90dWktcHJpbWl0aXZlLXRleHRmaWVsZD5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRlbnQ+XG4gICAgICAgIDx0dWktc3ZnXG4gICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY2FsZW5kYXJJY29uIGFzIHNyYzsgY29udGV4dDogeyRpbXBsaWNpdDogc2l6ZX1cIlxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cImljb25cIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1kYXRlLXJhbmdlX19pY29uXCJcbiAgICAgICAgICAgIHR1aVdyYXBwZXJcbiAgICAgICAgICAgIFtjbGFzcy50LWljb25dPVwiIWNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3NyY109XCJzcmNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKClcIlxuICAgICAgICA+PC90dWktc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICAgICAgICA8dHVpLWNhbGVuZGFyLXJhbmdlXG4gICAgICAgICAgICBbZGVmYXVsdFZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJpdGVtc1wiXG4gICAgICAgICAgICBbbWFya2VySGFuZGxlcl09XCJtYXJrZXJIYW5kbGVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiY29tcHV0ZWRNYXhcIlxuICAgICAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgW21pbl09XCJjb21wdXRlZE1pblwiXG4gICAgICAgICAgICBbbWluTGVuZ3RoXT1cIm1pbkxlbmd0aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUmFuZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3R1aS1jYWxlbmRhci1yYW5nZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC90dWktaG9zdGVkLWRyb3Bkb3duPlxuIl19
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
1
4
  export * from './index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UvdGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS1yYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS1yYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtcmFuZ2UvdGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS1yYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -58,7 +58,8 @@ export class TuiInputDateTimeComponent extends AbstractTuiControl {
58
58
  return this.calculateMask(this.computedMin, this.computedMax, this.timeMode, this.dateFormat, this.dateSeparator);
59
59
  }
60
60
  get nativeFocusableElement() {
61
- return this.textfield ? this.textfield.nativeFocusableElement : null;
61
+ var _a, _b;
62
+ return (_b = (_a = this.textfield) === null || _a === void 0 ? void 0 : _a.nativeFocusableElement) !== null && _b !== void 0 ? _b : null;
62
63
  }
63
64
  get focused() {
64
65
  var _a;
@@ -68,7 +69,7 @@ export class TuiInputDateTimeComponent extends AbstractTuiControl {
68
69
  return this.options.icon;
69
70
  }
70
71
  get nativePicker() {
71
- return !!this.options.nativePicker && this.isMobile;
72
+ return this.options.nativePicker && this.isMobile;
72
73
  }
73
74
  get showNativePicker() {
74
75
  return this.nativePicker && this.timeMode === 'HH:MM';
@@ -324,4 +325,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
324
325
  type: HostListener,
325
326
  args: ['click']
326
327
  }], calculateMask: [], getDateTimeString: [] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtdGltZS9pbnB1dC1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUNILGtCQUFrQixFQUVsQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEVBRWIsWUFBWSxFQUNaLDBCQUEwQixFQUUxQixRQUFRLEVBRVIsWUFBWSxFQUVaLE1BQU0sRUFFTixRQUFRLEVBQ1IsZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtCQUFrQixFQUNsQiw4QkFBOEIsR0FLakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDZCQUE2QixHQUNoQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDSCxjQUFjLEVBQ2QsK0JBQStCLEVBQy9CLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsNEJB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QkFBcUI7b0JBQy9CLFdBQVcsRUFBRSxpQ0FBaUM7b0JBQzlDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO29CQUMzQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQiwyQkFBMkI7d0JBQ3JELFlBQVksMkJBQTJCO3dCQUN2Qyw0QkFBNEIsQ0FBQywrQkFBK0IsQ0FBQztxQkFDaEU7aUJBQ0o7OzBCQXlDUSxRQUFROzswQkFDUixJQUFJOzswQkFDSixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsZUFBZTs7MEJBQ3RCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsTUFBTTsyQkFBQyxjQUFjOzswQkFFckIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQywrQkFBK0I7OzBCQUl0QyxNQUFNOzJCQUFDLHNCQUFzQjs7MEJBQzdCLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsa0JBQWtCOzRDQXBEYixTQUFTO3NCQUR6QixTQUFTO3VCQUFDLDhCQUE4QjtnQkFNekMsR0FBRztzQkFERixLQUFLO2dCQUlOLEdBQUc7c0JBREYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkEyQ0YsSUFBSTtzQkFEUCxXQUFXO3VCQUFDLGdCQUFnQjtnQkFzRzdCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQXVHYixhQUFhLE1BaUJiLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7TWFza2l0b09wdGlvbnN9IGZyb20gJ0BtYXNraXRvL2NvcmUnO1xuaW1wb3J0IHttYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yfSBmcm9tICdAbWFza2l0by9raXQnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgQWJzdHJhY3RUdWlWYWx1ZVRyYW5zZm9ybWVyLFxuICAgIEFMV0FZU19GQUxTRV9IQU5ETEVSLFxuICAgIGNoYW5nZURhdGVTZXBhcmF0b3IsXG4gICAgREFURV9GSUxMRVJfTEVOR1RILFxuICAgIFRVSV9EQVRFX0ZPUk1BVCxcbiAgICBUVUlfREFURV9TRVBBUkFUT1IsXG4gICAgVFVJX0lTX0lPUyxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmUsXG4gICAgdHVpQXNDb250cm9sLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIFR1aUJvb2xlYW5IYW5kbGVyLFxuICAgIHR1aUNsYW1wLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgdHVpRGF0ZUNsYW1wLFxuICAgIFR1aURhdGVNb2RlLFxuICAgIFR1aURheSxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgVHVpTW9udGgsXG4gICAgdHVpTnVsbGFibGVTYW1lLFxuICAgIHR1aVB1cmUsXG4gICAgVHVpVGltZSxcbiAgICBUdWlUaW1lTW9kZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfU0laRSxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZVMsXG4gICAgVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7XG4gICAgREFURV9USU1FX1NFUEFSQVRPUixcbiAgICBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUixcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBUVUlfREFURV9URVhUUyxcbiAgICBUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSLFxuICAgIFRVSV9JTlBVVF9EQVRFX09QVElPTlMsXG4gICAgVFVJX1RJTUVfVEVYVFMsXG4gICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcixcbiAgICBUdWlJbnB1dERhdGVPcHRpb25zLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtZGF0ZS10aW1lJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtZGF0ZS10aW1lLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWRhdGUtdGltZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RGF0ZVRpbWVDb21wb25lbnQpLFxuICAgICAgICB0dWlBc0NvbnRyb2woVHVpSW5wdXREYXRlVGltZUNvbXBvbmVudCksXG4gICAgICAgIHR1aURhdGVTdHJlYW1XaXRoVHJhbnNmb3JtZXIoVFVJX0RBVEVfVElNRV9WQUxVRV9UUkFOU0ZPUk1FUiksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXREYXRlVGltZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0+XG4gICAgaW1wbGVtZW50c1xuICAgICAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8VHVpRGF5IHwgW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSB8IG51bGw+LFxuICAgICAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIHByaXZhdGUgbW9udGg6IFR1aU1vbnRoIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIG1pbjogVHVpRGF5IHwgW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSB8IG51bGwgPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBtYXg6IFR1aURheSB8IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0gfCBudWxsID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IEFMV0FZU19GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBkZWZhdWx0QWN0aXZlWWVhck1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHRpbWVNb2RlOiBUdWlUaW1lTW9kZSA9ICdISDpNTSc7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSB0eXBlITogVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlBY3RpdmVab25lRGlyZWN0aXZlPjtcblxuICAgIHJlYWRvbmx5IGZpbGxlciQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRhdGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgIG1hcChkYXRlVGV4dHMgPT5cbiAgICAgICAgICAgICAgICBjaGFuZ2VEYXRlU2VwYXJhdG9yKGRhdGVUZXh0c1t0aGlzLmRhdGVGb3JtYXRdLCB0aGlzLmRhdGVTZXBhcmF0b3IpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy50aW1lVGV4dHMkLnBpcGUobWFwKHRleHRzID0+IHRleHRzW3RoaXMudGltZU1vZGVdKSksXG4gICAgXSkucGlwZShtYXAoZmlsbGVycyA9PiB0aGlzLmdldERhdGVUaW1lU3RyaW5nKC4uLmZpbGxlcnMpKSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfREFURV9GT1JNQVQpIHJlYWRvbmx5IGRhdGVGb3JtYXQ6IFR1aURhdGVNb2RlLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1NFUEFSQVRPUikgcmVhZG9ubHkgZGF0ZVNlcGFyYXRvcjogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9USU1FX1RFWFRTKVxuICAgICAgICByZWFkb25seSB0aW1lVGV4dHMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlUaW1lTW9kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IGRhdGVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aURhdGVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSKVxuICAgICAgICBvdmVycmlkZSByZWFkb25seSB2YWx1ZVRyYW5zZm9ybWVyOiBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXI8XG4gICAgICAgICAgICBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdXG4gICAgICAgID4gfCBudWxsLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9EQVRFX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXREYXRlT3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfSVNfSU9TKSByZWFkb25seSBpc0lvczogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1NJWkUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkU2l6ZTogVHVpVGV4dGZpZWxkU2l6ZURpcmVjdGl2ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyLCB2YWx1ZVRyYW5zZm9ybWVyKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJylcbiAgICBnZXQgc2l6ZSgpOiBUdWlTaXplTCB8IFR1aVNpemVTIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkU2l6ZS5zaXplO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1pbigpOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvVHVpRGF5KHRoaXMubWluLCB0aGlzLm9wdGlvbnMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRNYXgoKTogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0ge1xuICAgICAgICByZXR1cm4gdGhpcy50b1R1aURheSh0aGlzLm1heCwgdGhpcy5vcHRpb25zLm1heCk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGxlckxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gREFURV9GSUxMRVJfTEVOR1RIICsgREFURV9USU1FX1NFUEFSQVRPUi5sZW5ndGggKyB0aGlzLnRpbWVNb2RlLmxlbmd0aDtcbiAgICB9XG5cbiAgICBnZXQgbWFza09wdGlvbnMoKTogTWFza2l0b09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVNYXNrKFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1pbixcbiAgICAgICAgICAgIHRoaXMuY29tcHV0ZWRNYXgsXG4gICAgICAgICAgICB0aGlzLnRpbWVNb2RlLFxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICAgICAgdGhpcy5kYXRlU2VwYXJhdG9yLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dGZpZWxkID8gdGhpcy50ZXh0ZmllbGQubmF0aXZlRm9jdXNhYmxlRWxlbWVudCA6IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGV4dGZpZWxkPy5mb2N1c2VkO1xuICAgIH1cblxuICAgIGdldCBjYWxlbmRhckljb24oKTogVHVpSW5wdXREYXRlT3B0aW9uc1snaWNvbiddIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29uO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLm5hdGl2ZVBpY2tlciAmJiB0aGlzLmlzTW9iaWxlO1xuICAgIH1cblxuICAgIGdldCBzaG93TmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVQaWNrZXIgJiYgdGhpcy50aW1lTW9kZSA9PT0gJ0hIOk1NJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7dmFsdWUsIG5hdGl2ZVZhbHVlLCB0aW1lTW9kZX0gPSB0aGlzO1xuICAgICAgICBjb25zdCBbZGF0ZSwgdGltZV0gPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgaGFzVGltZUlucHV0Q2hhcnMgPSBuYXRpdmVWYWx1ZS5sZW5ndGggPiBEQVRFX0ZJTExFUl9MRU5HVEg7XG5cbiAgICAgICAgaWYgKCFkYXRlIHx8ICghdGltZSAmJiBoYXNUaW1lSW5wdXRDaGFycykpIHtcbiAgICAgICAgICAgIHJldHVybiBuYXRpdmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGVUaW1lU3RyaW5nKGRhdGUsIHRpbWUsIHRpbWVNb2RlKTtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJWYWx1ZSgpOiBUdWlEYXkgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF07XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFyTWluRGF5KCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuY29tcHV0ZWRNaW47XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWluKSA/IG1pblswXSA6IG1pbjtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJNYXhEYXkoKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5jb21wdXRlZE1heDtcblxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXgpID8gbWF4WzBdIDogbWF4O1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZEFjdGl2ZVllYXJNb250aCgpOiBUdWlNb250aCB7XG4gICAgICAgIGNvbnN0IHtjb21wdXRlZE1pbiwgY29tcHV0ZWRNYXh9ID0gdGhpcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSB8fFxuICAgICAgICAgICAgdHVpRGF0ZUNsYW1wKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGl2ZVllYXJNb250aCxcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGNvbXB1dGVkTWluKSA/IGNvbXB1dGVkTWluWzBdIDogY29tcHV0ZWRNaW4sXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjb21wdXRlZE1heCkgPyBjb21wdXRlZE1heFswXSA6IGNvbXB1dGVkTWF4LFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py52YWx1ZSB8fCAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IERBVEVfRklMTEVSX0xFTkdUSCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtudWxsLCBudWxsXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2RhdGUsIHRpbWVdID0gdmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUik7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBUdWlEYXkubm9ybWFsaXplUGFyc2UoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9XG4gICAgICAgICAgICB0aW1lICYmIHRpbWUubGVuZ3RoID09PSB0aGlzLnRpbWVNb2RlLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gVHVpVGltZS5mcm9tU3RyaW5nKHRpbWUpXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZhbHVlID0gW3BhcnNlZERhdGUsIHBhcnNlZFRpbWVdO1xuICAgIH1cblxuICAgIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRUaW1lID0gdGhpcy52YWx1ZVsxXSAmJiB0aGlzLmNsYW1wVGltZSh0aGlzLnZhbHVlWzFdLCBkYXkpO1xuICAgICAgICBjb25zdCBuZXdDYXJldEluZGV4ID0gREFURV9GSUxMRVJfTEVOR1RIICsgREFURV9USU1FX1NFUEFSQVRPUi5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFtkYXksIG1vZGlmaWVkVGltZV07XG4gICAgICAgIHRoaXMudXBkYXRlTmF0aXZlVmFsdWUoZGF5KTtcbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5zZXRTZWxlY3Rpb25SYW5nZShuZXdDYXJldEluZGV4LCBuZXdDYXJldEluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25Nb250aENoYW5nZShtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aCA9IG1vbnRoO1xuICAgIH1cblxuICAgIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLnRyaW1UcmFpbGluZ1NlcGFyYXRvcih0aGlzLm5hdGl2ZVZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZVsxXSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPD0gdGhpcy5maWxsZXJMZW5ndGggKyBEQVRFX1RJTUVfU0VQQVJBVE9SLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy50aW1lTW9kZSA9PT0gJ0hIOk1NJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFssIHRpbWVdID0gdGhpcy5uYXRpdmVWYWx1ZS5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKTtcblxuICAgICAgICBpZiAoIXRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFRpbWUgPSBUdWlUaW1lLmZyb21TdHJpbmcodGltZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFt0aGlzLnZhbHVlWzBdLCBwYXJzZWRUaW1lXTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPVxuICAgICAgICAgICAgdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZVswXSB8fCB0aGlzLnZhbHVlWzFdKSA/IHRoaXMuY29tcHV0ZWRWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0ge1xuICAgICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWx1ZUlkZW50aWNhbENvbXBhcmF0b3IoXG4gICAgICAgIG9sZFZhbHVlOiBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdLFxuICAgICAgICBuZXdWYWx1ZTogW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZVswXSwgbmV3VmFsdWVbMF0sIChhLCBiKSA9PiBhLmRheVNhbWUoYikpICYmXG4gICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUob2xkVmFsdWVbMV0sIG5ld1ZhbHVlWzFdLCAoYSwgYikgPT4gU3RyaW5nKGEpID09PSBTdHJpbmcoYikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2soXG4gICAgICAgIG1pbjogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0sXG4gICAgICAgIG1heDogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0sXG4gICAgICAgIHRpbWVNb2RlOiBUdWlUaW1lTW9kZSxcbiAgICAgICAgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIGRhdGVTZXBhcmF0b3I6IHN0cmluZyxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIHRpbWVNb2RlLFxuICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgIGRhdGVNb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogdGhpcy50b05hdGl2ZURhdGUobWluKSxcbiAgICAgICAgICAgIG1heDogdGhpcy50b05hdGl2ZURhdGUobWF4KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldERhdGVUaW1lU3RyaW5nKFxuICAgICAgICBkYXRlOiBUdWlEYXkgfCBzdHJpbmcsXG4gICAgICAgIHRpbWU6IFR1aVRpbWUgfCBzdHJpbmcgfCBudWxsLFxuICAgICAgICB0aW1lTW9kZTogVHVpVGltZU1vZGUgPSAnSEg6TU0nLFxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPVxuICAgICAgICAgICAgZGF0ZSBpbnN0YW5jZW9mIFR1aURheVxuICAgICAgICAgICAgICAgID8gZGF0ZS50b1N0cmluZyh0aGlzLmRhdGVGb3JtYXQsIHRoaXMuZGF0ZVNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICA6IGRhdGU7XG4gICAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0aW1lIGluc3RhbmNlb2YgVHVpVGltZSA/IHRpbWUudG9TdHJpbmcodGltZU1vZGUpIDogdGltZSB8fCAnJztcblxuICAgICAgICByZXR1cm4gdGltZVN0cmluZ1xuICAgICAgICAgICAgPyBgJHtkYXRlU3RyaW5nfSR7REFURV9USU1FX1NFUEFSQVRPUn0ke3RpbWVTdHJpbmd9YFxuICAgICAgICAgICAgOiBkYXRlU3RyaW5nO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTmF0aXZlVmFsdWUoZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMubmF0aXZlVmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUilbMV0gfHwgJyc7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZ2V0RGF0ZVRpbWVTdHJpbmcoZGF5LCB0aW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsYW1wVGltZSh0aW1lOiBUdWlUaW1lLCBkYXk6IFR1aURheSk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCB7Y29tcHV0ZWRNaW4sIGNvbXB1dGVkTWF4fSA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgbXMgPSB0aW1lLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY29tcHV0ZWRNaW4pICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNaW5EYXkpXG4gICAgICAgICAgICAgICAgPyBjb21wdXRlZE1pblsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IC1JbmZpbml0eTtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY29tcHV0ZWRNYXgpICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNYXhEYXkpXG4gICAgICAgICAgICAgICAgPyBjb21wdXRlZE1heFsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICAgIHJldHVybiBUdWlUaW1lLmZyb21BYnNvbHV0ZU1pbGxpc2Vjb25kcyh0dWlDbGFtcChtcywgbWluLCBtYXgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1UcmFpbGluZ1NlcGFyYXRvcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgICBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5kYXRlU2VwYXJhdG9yfXwke0RBVEVfVElNRV9TRVBBUkFUT1J9fFxcXFwuKSRgKSxcbiAgICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9OYXRpdmVEYXRlKHZhbHVlOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSk6IERhdGUge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9Mb2NhbE5hdGl2ZURhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFt7eWVhciwgbW9udGgsIGRheX0sIHtob3VycywgbWludXRlcywgc2Vjb25kcywgbXN9XSA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9UdWlEYXkoXG4gICAgICAgIHZhbHVlOiBUdWlEYXkgfCBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHwgbnVsbCxcbiAgICAgICAgZmFsbGJhY2s6IFR1aURheSxcbiAgICApOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFt0dWlEYXksIHR1aVRpbWVdID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKCF0dWlEYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdHVpVGltZSkge1xuICAgICAgICAgICAgcmV0dXJuIHR1aURheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbdHVpRGF5LCB0dWlUaW1lXTtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImludGVyYWN0aXZlICYmICFzaG93TmF0aXZlUGlja2VyXCJcbiAgICBbY29udGVudF09XCJkcm9wZG93blwiXG4gICAgW29wZW5dPVwib3BlbiAmJiBpbnRlcmFjdGl2ZVwiXG4gICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIlxuPlxuICAgIDx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtdGltZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbbWFza2l0b109XCJtYXNrT3B0aW9uc1wiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiKGZpbGxlciQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJjYWxlbmRhckljb24gJiYgaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICBuZ1Byb2plY3RBcz1cImlucHV0XCJcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgPjwvbmctY29udGVudD5cbiAgICA8L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uQ29udGVudD5cbiAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjYWxlbmRhckljb24gYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uXT1cIiFjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dOYXRpdmVQaWNrZXJcIlxuICAgICAgICAgICAgdHVpRGF0ZVRpbWVcbiAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmUtaW5wdXRcIlxuICAgICAgICAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2Ryb3Bkb3duPVwicG9seW1vcnBoZXVzXCJcbiAgICAgICAgW3BvbHltb3JwaGV1c109XCJ0eXBlXCJcbiAgICA+XG4gICAgICAgIDx0dWktY2FsZW5kYXJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS10aW1lX19jYWxlbmRhclwiXG4gICAgICAgICAgICB0dWlQcmV2ZW50RGVmYXVsdD1cIm1vdXNlZG93blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiY2FsZW5kYXJNYXhEYXlcIlxuICAgICAgICAgICAgW21pbl09XCJjYWxlbmRhck1pbkRheVwiXG4gICAgICAgICAgICBbbW9udGhdPVwiY29tcHV0ZWRBY3RpdmVZZWFyTW9udGhcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNhbGVuZGFyVmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAobW9udGhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZGF0ZS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWRhdGUtdGltZS9pbnB1dC1kYXRlLXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL2lucHV0LWRhdGUtdGltZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUNILGtCQUFrQixFQUVsQixvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixhQUFhLEVBRWIsWUFBWSxFQUNaLDBCQUEwQixFQUUxQixRQUFRLEVBRVIsWUFBWSxFQUVaLE1BQU0sRUFFTixRQUFRLEVBQ1IsZUFBZSxFQUNmLE9BQU8sRUFDUCxPQUFPLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGtCQUFrQixFQUNsQiw4QkFBOEIsR0FLakMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLDZCQUE2QixHQUNoQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDSCxjQUFjLEVBQ2QsK0JBQStCLEVBQy9CLHNCQUFzQixFQUN0QixjQUFjLEVBQ2QsNEJBQTRCLEdBRS9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFDLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBYW5DLE1BQU0sT0FBTyx5QkFDVCxTQUFRLGtCQUFtRDtJQXNDM0QsWUFJSSxPQUF5QixFQUNFLEdBQXNCLEVBQ2YsVUFBdUIsRUFDcEIsYUFBcUIsRUFFakQsVUFBbUQsRUFFbkQsVUFBbUQsRUFHMUMsZ0JBRVYsRUFDeUMsT0FBNEIsRUFDN0MsUUFBaUIsRUFDcEIsS0FBYyxFQUUxQixhQUF3QztRQUV6RCxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBakJKLGVBQVUsR0FBVixVQUFVLENBQWE7UUFDcEIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFFakQsZUFBVSxHQUFWLFVBQVUsQ0FBeUM7UUFFbkQsZUFBVSxHQUFWLFVBQVUsQ0FBeUM7UUFHMUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUUxQjtRQUN5QyxZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUM3QyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ3BCLFVBQUssR0FBTCxLQUFLLENBQVM7UUFFMUIsa0JBQWEsR0FBYixhQUFhLENBQTJCO1FBbkRyRCxVQUFLLEdBQW9CLElBQUksQ0FBQztRQUd0QyxRQUFHLEdBQW9ELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBR3hFLFFBQUcsR0FBb0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFHeEUsd0JBQW1CLEdBQThCLG9CQUFvQixDQUFDO1FBR3RFLDJCQUFzQixHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUdqRCxhQUFRLEdBQWdCLE9BQU8sQ0FBQztRQUVoQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBSUosWUFBTyxHQUF1QixhQUFhLENBQUM7WUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUNaLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUN0RSxDQUNKO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBMEI1RCxDQUFDO0lBRUQsSUFDSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ1osT0FBTyxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FDckIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsVUFBVSxFQUNmLElBQUksQ0FBQyxhQUFhLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxzQkFBc0I7O1FBQ3RCLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLHNCQUFzQixtQ0FBSSxJQUFJLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksT0FBTzs7UUFDUCxPQUFPLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsT0FBTyxDQUFBLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdEQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsTUFBTSxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE1BQU0saUJBQWlCLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztRQUVsRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksaUJBQWlCLENBQUMsRUFBRTtZQUN2QyxPQUFPLFdBQVcsQ0FBQztTQUN0QjtRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUU3QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksdUJBQXVCO1FBQ3ZCLE1BQU0sRUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDO1FBRXhDLE9BQU8sQ0FDSCxJQUFJLENBQUMsS0FBSztZQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2IsWUFBWSxDQUNSLElBQUksQ0FBQyxzQkFBc0IsRUFDM0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUM1RCxDQUNKLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxXQUFXOztRQUNYLE9BQU8sQ0FBQSxNQUFBLElBQUksQ0FBQyxzQkFBc0IsMENBQUUsS0FBSyxLQUFJLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzlCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFHRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDUixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLGtCQUFrQixFQUFFO1lBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFMUIsT0FBTztTQUNWO1FBRUQsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUNaLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUN4QyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUVmLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXOztRQUNsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFFdEUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsTUFBQSxJQUFJLENBQUMsc0JBQXNCLDBDQUFFLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWU7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFhO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBZ0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1QixJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU87U0FDVjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUNJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSTtZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxNQUFNO1lBQ3pFLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUMzQjtZQUNFLE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVRLGdCQUFnQjtRQUNyQixLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRVEsVUFBVSxDQUFDLEtBQTZDO1FBQzdELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLFdBQVc7WUFDWixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNqRixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVrQix3QkFBd0IsQ0FDdkMsUUFBeUMsRUFDekMsUUFBeUM7UUFFekMsT0FBTyxDQUNILGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0UsQ0FBQztJQUNOLENBQUM7SUFHTyxhQUFhLENBQ2pCLEdBQStCLEVBQy9CLEdBQStCLEVBQy9CLFFBQXFCLEVBQ3JCLFVBQXVCLEVBQ3ZCLGFBQXFCO1FBRXJCLE9BQU8sK0JBQStCLENBQUM7WUFDbkMsUUFBUTtZQUNSLGFBQWE7WUFDYixRQUFRLEVBQUUsNkJBQTZCLENBQUMsVUFBVSxDQUFDO1lBQ25ELEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7U0FDOUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdPLGlCQUFpQixDQUNyQixJQUFxQixFQUNyQixJQUE2QixFQUM3QixXQUF3QixPQUFPO1FBRS9CLE1BQU0sVUFBVSxHQUNaLElBQUksWUFBWSxNQUFNO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2YsTUFBTSxVQUFVLEdBQUcsSUFBSSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVsRixPQUFPLFVBQVU7WUFDYixDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsbUJBQW1CLEdBQUcsVUFBVSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDckIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVc7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxTQUFTLENBQUMsSUFBYSxFQUFFLEdBQVc7UUFDeEMsTUFBTSxFQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFeEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDMUQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsRUFBRTtZQUN6QyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDMUQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsRUFBRTtZQUN6QyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRW5CLE9BQU8sT0FBTyxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQWE7UUFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUNoQixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLElBQUksbUJBQW1CLFFBQVEsQ0FBQyxFQUNuRSxFQUFFLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBaUM7UUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNwQztRQUVELE1BQU0sQ0FBQyxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUVsRSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyxRQUFRLENBQ1osS0FBc0QsRUFDdEQsUUFBZ0I7UUFFaEIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU8sUUFBUSxDQUFDO1NBQ25CO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFFRCxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3VIQTVXUSx5QkFBeUIsa0JBMEN0QixTQUFTLHlDQUVULGlCQUFpQixhQUNqQixlQUFlLGFBQ2Ysa0JBQWtCLGFBQ2xCLGNBQWMsYUFFZCxjQUFjLGFBR2QsK0JBQStCLDZCQUkvQixzQkFBc0IsYUFDdEIsYUFBYSxhQUNiLFVBQVUsYUFDVixrQkFBa0I7MkdBM0RyQix5QkFBeUIsb1NBTnZCO1FBQ1AsMEJBQTBCLENBQUMseUJBQXlCLENBQUM7UUFDckQsWUFBWSxDQUFDLHlCQUF5QixDQUFDO1FBQ3ZDLDRCQUE0QixDQUFDLCtCQUErQixDQUFDO0tBQ2hFLHFFQVFVLDhCQUE4Qix1RUNqRjdDLDRqRUErREE7QUR5Ukk7SUFEQyxPQUFPOzhEQWVQO0FBR0Q7SUFEQyxPQUFPO2tFQWVQOzRGQTVTUSx5QkFBeUI7a0JBWHJDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7b0JBQzNDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1AsMEJBQTBCLDJCQUEyQjt3QkFDckQsWUFBWSwyQkFBMkI7d0JBQ3ZDLDRCQUE0QixDQUFDLCtCQUErQixDQUFDO3FCQUNoRTtpQkFDSjs7MEJBeUNRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLGNBQWM7OzBCQUVyQixNQUFNOzJCQUFDLGNBQWM7OzBCQUVyQixRQUFROzswQkFDUixNQUFNOzJCQUFDLCtCQUErQjs7MEJBSXRDLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDN0IsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsTUFBTTsyQkFBQyxrQkFBa0I7NENBcERiLFNBQVM7c0JBRHpCLFNBQVM7dUJBQUMsOEJBQThCO2dCQU16QyxHQUFHO3NCQURGLEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQTJDRixJQUFJO3NCQURQLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQXNHN0IsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU87Z0JBdUdiLGFBQWEsTUFpQmIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNYXNraXRvT3B0aW9uc30gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQge21hc2tpdG9EYXRlVGltZU9wdGlvbnNHZW5lcmF0b3J9IGZyb20gJ0BtYXNraXRvL2tpdCc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBBYnN0cmFjdFR1aVZhbHVlVHJhbnNmb3JtZXIsXG4gICAgQUxXQVlTX0ZBTFNFX0hBTkRMRVIsXG4gICAgY2hhbmdlRGF0ZVNlcGFyYXRvcixcbiAgICBEQVRFX0ZJTExFUl9MRU5HVEgsXG4gICAgVFVJX0RBVEVfRk9STUFULFxuICAgIFRVSV9EQVRFX1NFUEFSQVRPUixcbiAgICBUVUlfSVNfSU9TLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgVHVpQWN0aXZlWm9uZURpcmVjdGl2ZSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgVHVpQm9vbGVhbkhhbmRsZXIsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEYXRlQ2xhbXAsXG4gICAgVHVpRGF0ZU1vZGUsXG4gICAgVHVpRGF5LFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlNb250aCxcbiAgICB0dWlOdWxsYWJsZVNhbWUsXG4gICAgdHVpUHVyZSxcbiAgICBUdWlUaW1lLFxuICAgIFR1aVRpbWVNb2RlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7XG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBEQVRFX1RJTUVfU0VQQVJBVE9SLFxuICAgIFRVSV9EQVRFX01PREVfTUFTS0lUT19BREFQVEVSLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIFRVSV9EQVRFX1RFWFRTLFxuICAgIFRVSV9EQVRFX1RJTUVfVkFMVUVfVFJBTlNGT1JNRVIsXG4gICAgVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyxcbiAgICBUVUlfVElNRV9URVhUUyxcbiAgICB0dWlEYXRlU3RyZWFtV2l0aFRyYW5zZm9ybWVyLFxuICAgIFR1aUlucHV0RGF0ZU9wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1kYXRlLXRpbWUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1kYXRlLXRpbWUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZGF0ZS10aW1lLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXREYXRlVGltZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50KSxcbiAgICAgICAgdHVpRGF0ZVN0cmVhbVdpdGhUcmFuc2Zvcm1lcihUVUlfREFURV9USU1FX1ZBTFVFX1RSQU5TRk9STUVSKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dERhdGVUaW1lQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8W1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXT5cbiAgICBpbXBsZW1lbnRzXG4gICAgICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heDxUdWlEYXkgfCBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHwgbnVsbD4sXG4gICAgICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgcHJpdmF0ZSBtb250aDogVHVpTW9udGggfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgbWluOiBUdWlEYXkgfCBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHwgbnVsbCA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIG1heDogVHVpRGF5IHwgW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSB8IG51bGwgPSB0aGlzLm9wdGlvbnMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gQUxXQVlTX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIGRlZmF1bHRBY3RpdmVZZWFyTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgdGltZU1vZGU6IFR1aVRpbWVNb2RlID0gJ0hIOk1NJztcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IHR5cGUhOiBUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aUFjdGl2ZVpvbmVEaXJlY3RpdmU+O1xuXG4gICAgcmVhZG9ubHkgZmlsbGVyJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVRleHRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKGRhdGVUZXh0cyA9PlxuICAgICAgICAgICAgICAgIGNoYW5nZURhdGVTZXBhcmF0b3IoZGF0ZVRleHRzW3RoaXMuZGF0ZUZvcm1hdF0sIHRoaXMuZGF0ZVNlcGFyYXRvciksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB0aGlzLnRpbWVUZXh0cyQucGlwZShtYXAodGV4dHMgPT4gdGV4dHNbdGhpcy50aW1lTW9kZV0pKSxcbiAgICBdKS5waXBlKG1hcChmaWxsZXJzID0+IHRoaXMuZ2V0RGF0ZVRpbWVTdHJpbmcoLi4uZmlsbGVycykpKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX0ZPUk1BVCkgcmVhZG9ubHkgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIEBJbmplY3QoVFVJX0RBVEVfU0VQQVJBVE9SKSByZWFkb25seSBkYXRlU2VwYXJhdG9yOiBzdHJpbmcsXG4gICAgICAgIEBJbmplY3QoVFVJX1RJTUVfVEVYVFMpXG4gICAgICAgIHJlYWRvbmx5IHRpbWVUZXh0cyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aVRpbWVNb2RlLCBzdHJpbmc+PixcbiAgICAgICAgQEluamVjdChUVUlfREFURV9URVhUUylcbiAgICAgICAgcmVhZG9ubHkgZGF0ZVRleHRzJDogT2JzZXJ2YWJsZTxSZWNvcmQ8VHVpRGF0ZU1vZGUsIHN0cmluZz4+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRVSV9EQVRFX1RJTUVfVkFMVUVfVFJBTlNGT1JNRVIpXG4gICAgICAgIG92ZXJyaWRlIHJlYWRvbmx5IHZhbHVlVHJhbnNmb3JtZXI6IEFic3RyYWN0VHVpVmFsdWVUcmFuc2Zvcm1lcjxcbiAgICAgICAgICAgIFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF1cbiAgICAgICAgPiB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dERhdGVPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19JT1MpIHJlYWRvbmx5IGlzSW9zOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjZHIsIHZhbHVlVHJhbnNmb3JtZXIpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNpemUnKVxuICAgIGdldCBzaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGRTaXplLnNpemU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkTWluKCk6IFR1aURheSB8IFtUdWlEYXksIFR1aVRpbWVdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9UdWlEYXkodGhpcy5taW4sIHRoaXMub3B0aW9ucy5taW4pO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZE1heCgpOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvVHVpRGF5KHRoaXMubWF4LCB0aGlzLm9wdGlvbnMubWF4KTtcbiAgICB9XG5cbiAgICBnZXQgZmlsbGVyTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBEQVRFX0ZJTExFUl9MRU5HVEggKyBEQVRFX1RJTUVfU0VQQVJBVE9SLmxlbmd0aCArIHRoaXMudGltZU1vZGUubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBtYXNrT3B0aW9ucygpOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZU1hc2soXG4gICAgICAgICAgICB0aGlzLmNvbXB1dGVkTWluLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE1heCxcbiAgICAgICAgICAgIHRoaXMudGltZU1vZGUsXG4gICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICB0aGlzLmRhdGVTZXBhcmF0b3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0ZmllbGQ/Lm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50ZXh0ZmllbGQ/LmZvY3VzZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFySWNvbigpOiBUdWlJbnB1dERhdGVPcHRpb25zWydpY29uJ10ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgbmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLm5hdGl2ZVBpY2tlciAmJiB0aGlzLmlzTW9iaWxlO1xuICAgIH1cblxuICAgIGdldCBzaG93TmF0aXZlUGlja2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVQaWNrZXIgJiYgdGhpcy50aW1lTW9kZSA9PT0gJ0hIOk1NJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7dmFsdWUsIG5hdGl2ZVZhbHVlLCB0aW1lTW9kZX0gPSB0aGlzO1xuICAgICAgICBjb25zdCBbZGF0ZSwgdGltZV0gPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgaGFzVGltZUlucHV0Q2hhcnMgPSBuYXRpdmVWYWx1ZS5sZW5ndGggPiBEQVRFX0ZJTExFUl9MRU5HVEg7XG5cbiAgICAgICAgaWYgKCFkYXRlIHx8ICghdGltZSAmJiBoYXNUaW1lSW5wdXRDaGFycykpIHtcbiAgICAgICAgICAgIHJldHVybiBuYXRpdmVWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGVUaW1lU3RyaW5nKGRhdGUsIHRpbWUsIHRpbWVNb2RlKTtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJWYWx1ZSgpOiBUdWlEYXkgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbMF07XG4gICAgfVxuXG4gICAgZ2V0IGNhbGVuZGFyTWluRGF5KCk6IFR1aURheSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuY29tcHV0ZWRNaW47XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobWluKSA/IG1pblswXSA6IG1pbjtcbiAgICB9XG5cbiAgICBnZXQgY2FsZW5kYXJNYXhEYXkoKTogVHVpRGF5IHtcbiAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5jb21wdXRlZE1heDtcblxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXgpID8gbWF4WzBdIDogbWF4O1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZEFjdGl2ZVllYXJNb250aCgpOiBUdWlNb250aCB7XG4gICAgICAgIGNvbnN0IHtjb21wdXRlZE1pbiwgY29tcHV0ZWRNYXh9ID0gdGhpcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5tb250aCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSB8fFxuICAgICAgICAgICAgdHVpRGF0ZUNsYW1wKFxuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdEFjdGl2ZVllYXJNb250aCxcbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KGNvbXB1dGVkTWluKSA/IGNvbXB1dGVkTWluWzBdIDogY29tcHV0ZWRNaW4sXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShjb21wdXRlZE1heCkgPyBjb21wdXRlZE1heFswXSA6IGNvbXB1dGVkTWF4LFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py52YWx1ZSB8fCAnJztcbiAgICB9XG5cbiAgICBzZXQgbmF0aXZlVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25PcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8IERBVEVfRklMTEVSX0xFTkdUSCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFtudWxsLCBudWxsXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2RhdGUsIHRpbWVdID0gdmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUik7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBUdWlEYXkubm9ybWFsaXplUGFyc2UoZGF0ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICAgICAgY29uc3QgcGFyc2VkVGltZSA9XG4gICAgICAgICAgICB0aW1lICYmIHRpbWUubGVuZ3RoID09PSB0aGlzLnRpbWVNb2RlLmxlbmd0aFxuICAgICAgICAgICAgICAgID8gVHVpVGltZS5mcm9tU3RyaW5nKHRpbWUpXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZhbHVlID0gW3BhcnNlZERhdGUsIHBhcnNlZFRpbWVdO1xuICAgIH1cblxuICAgIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZWRUaW1lID0gdGhpcy52YWx1ZVsxXSAmJiB0aGlzLmNsYW1wVGltZSh0aGlzLnZhbHVlWzFdLCBkYXkpO1xuICAgICAgICBjb25zdCBuZXdDYXJldEluZGV4ID0gREFURV9GSUxMRVJfTEVOR1RIICsgREFURV9USU1FX1NFUEFSQVRPUi5sZW5ndGg7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFtkYXksIG1vZGlmaWVkVGltZV07XG4gICAgICAgIHRoaXMudXBkYXRlTmF0aXZlVmFsdWUoZGF5KTtcbiAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50Py5zZXRTZWxlY3Rpb25SYW5nZShuZXdDYXJldEluZGV4LCBuZXdDYXJldEluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25Nb250aENoYW5nZShtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb250aCA9IG1vbnRoO1xuICAgIH1cblxuICAgIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IG9wZW47XG4gICAgfVxuXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuXG4gICAgICAgIGlmIChmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLnRyaW1UcmFpbGluZ1NlcGFyYXRvcih0aGlzLm5hdGl2ZVZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZVsxXSAhPT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZS5sZW5ndGggPD0gdGhpcy5maWxsZXJMZW5ndGggKyBEQVRFX1RJTUVfU0VQQVJBVE9SLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy50aW1lTW9kZSA9PT0gJ0hIOk1NJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFssIHRpbWVdID0gdGhpcy5uYXRpdmVWYWx1ZS5zcGxpdChEQVRFX1RJTUVfU0VQQVJBVE9SKTtcblxuICAgICAgICBpZiAoIXRpbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFRpbWUgPSBUdWlUaW1lLmZyb21TdHJpbmcodGltZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IFt0aGlzLnZhbHVlWzBdLCBwYXJzZWRUaW1lXTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0gfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPVxuICAgICAgICAgICAgdGhpcy52YWx1ZSAmJiAodGhpcy52YWx1ZVswXSB8fCB0aGlzLnZhbHVlWzFdKSA/IHRoaXMuY29tcHV0ZWRWYWx1ZSA6ICcnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtUdWlEYXkgfCBudWxsLCBUdWlUaW1lIHwgbnVsbF0ge1xuICAgICAgICByZXR1cm4gW251bGwsIG51bGxdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWx1ZUlkZW50aWNhbENvbXBhcmF0b3IoXG4gICAgICAgIG9sZFZhbHVlOiBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdLFxuICAgICAgICBuZXdWYWx1ZTogW1R1aURheSB8IG51bGwsIFR1aVRpbWUgfCBudWxsXSxcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZShvbGRWYWx1ZVswXSwgbmV3VmFsdWVbMF0sIChhLCBiKSA9PiBhLmRheVNhbWUoYikpICYmXG4gICAgICAgICAgICB0dWlOdWxsYWJsZVNhbWUob2xkVmFsdWVbMV0sIG5ld1ZhbHVlWzFdLCAoYSwgYikgPT4gU3RyaW5nKGEpID09PSBTdHJpbmcoYikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZU1hc2soXG4gICAgICAgIG1pbjogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0sXG4gICAgICAgIG1heDogVHVpRGF5IHwgW1R1aURheSwgVHVpVGltZV0sXG4gICAgICAgIHRpbWVNb2RlOiBUdWlUaW1lTW9kZSxcbiAgICAgICAgZGF0ZUZvcm1hdDogVHVpRGF0ZU1vZGUsXG4gICAgICAgIGRhdGVTZXBhcmF0b3I6IHN0cmluZyxcbiAgICApOiBNYXNraXRvT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiBtYXNraXRvRGF0ZVRpbWVPcHRpb25zR2VuZXJhdG9yKHtcbiAgICAgICAgICAgIHRpbWVNb2RlLFxuICAgICAgICAgICAgZGF0ZVNlcGFyYXRvcixcbiAgICAgICAgICAgIGRhdGVNb2RlOiBUVUlfREFURV9NT0RFX01BU0tJVE9fQURBUFRFUltkYXRlRm9ybWF0XSxcbiAgICAgICAgICAgIG1pbjogdGhpcy50b05hdGl2ZURhdGUobWluKSxcbiAgICAgICAgICAgIG1heDogdGhpcy50b05hdGl2ZURhdGUobWF4KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldERhdGVUaW1lU3RyaW5nKFxuICAgICAgICBkYXRlOiBUdWlEYXkgfCBzdHJpbmcsXG4gICAgICAgIHRpbWU6IFR1aVRpbWUgfCBzdHJpbmcgfCBudWxsLFxuICAgICAgICB0aW1lTW9kZTogVHVpVGltZU1vZGUgPSAnSEg6TU0nLFxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPVxuICAgICAgICAgICAgZGF0ZSBpbnN0YW5jZW9mIFR1aURheVxuICAgICAgICAgICAgICAgID8gZGF0ZS50b1N0cmluZyh0aGlzLmRhdGVGb3JtYXQsIHRoaXMuZGF0ZVNlcGFyYXRvcilcbiAgICAgICAgICAgICAgICA6IGRhdGU7XG4gICAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSB0aW1lIGluc3RhbmNlb2YgVHVpVGltZSA/IHRpbWUudG9TdHJpbmcodGltZU1vZGUpIDogdGltZSB8fCAnJztcblxuICAgICAgICByZXR1cm4gdGltZVN0cmluZ1xuICAgICAgICAgICAgPyBgJHtkYXRlU3RyaW5nfSR7REFURV9USU1FX1NFUEFSQVRPUn0ke3RpbWVTdHJpbmd9YFxuICAgICAgICAgICAgOiBkYXRlU3RyaW5nO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTmF0aXZlVmFsdWUoZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGltZSA9IHRoaXMubmF0aXZlVmFsdWUuc3BsaXQoREFURV9USU1FX1NFUEFSQVRPUilbMV0gfHwgJyc7XG5cbiAgICAgICAgdGhpcy5uYXRpdmVWYWx1ZSA9IHRoaXMuZ2V0RGF0ZVRpbWVTdHJpbmcoZGF5LCB0aW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsYW1wVGltZSh0aW1lOiBUdWlUaW1lLCBkYXk6IFR1aURheSk6IFR1aVRpbWUge1xuICAgICAgICBjb25zdCB7Y29tcHV0ZWRNaW4sIGNvbXB1dGVkTWF4fSA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgbXMgPSB0aW1lLnRvQWJzb2x1dGVNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgY29uc3QgbWluID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY29tcHV0ZWRNaW4pICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNaW5EYXkpXG4gICAgICAgICAgICAgICAgPyBjb21wdXRlZE1pblsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IC1JbmZpbml0eTtcbiAgICAgICAgY29uc3QgbWF4ID1cbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY29tcHV0ZWRNYXgpICYmIGRheS5kYXlTYW1lKHRoaXMuY2FsZW5kYXJNYXhEYXkpXG4gICAgICAgICAgICAgICAgPyBjb21wdXRlZE1heFsxXS50b0Fic29sdXRlTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgICAgICA6IEluZmluaXR5O1xuXG4gICAgICAgIHJldHVybiBUdWlUaW1lLmZyb21BYnNvbHV0ZU1pbGxpc2Vjb25kcyh0dWlDbGFtcChtcywgbWluLCBtYXgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaW1UcmFpbGluZ1NlcGFyYXRvcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoXG4gICAgICAgICAgICBuZXcgUmVnRXhwKGAoXFxcXCR7dGhpcy5kYXRlU2VwYXJhdG9yfXwke0RBVEVfVElNRV9TRVBBUkFUT1J9fFxcXFwuKSRgKSxcbiAgICAgICAgICAgICcnLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9OYXRpdmVEYXRlKHZhbHVlOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSk6IERhdGUge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudG9Mb2NhbE5hdGl2ZURhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFt7eWVhciwgbW9udGgsIGRheX0sIHtob3VycywgbWludXRlcywgc2Vjb25kcywgbXN9XSA9IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5LCBob3VycywgbWludXRlcywgc2Vjb25kcywgbXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9UdWlEYXkoXG4gICAgICAgIHZhbHVlOiBUdWlEYXkgfCBbVHVpRGF5IHwgbnVsbCwgVHVpVGltZSB8IG51bGxdIHwgbnVsbCxcbiAgICAgICAgZmFsbGJhY2s6IFR1aURheSxcbiAgICApOiBUdWlEYXkgfCBbVHVpRGF5LCBUdWlUaW1lXSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFt0dWlEYXksIHR1aVRpbWVdID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKCF0dWlEYXkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdHVpVGltZSkge1xuICAgICAgICAgICAgcmV0dXJuIHR1aURheTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbdHVpRGF5LCB0dWlUaW1lXTtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgIGNsYXNzPVwidC1ob3N0ZWRcIlxuICAgIFtjYW5PcGVuXT1cImludGVyYWN0aXZlICYmICFzaG93TmF0aXZlUGlja2VyXCJcbiAgICBbY29udGVudF09XCJkcm9wZG93blwiXG4gICAgW29wZW5dPVwib3BlbiAmJiBpbnRlcmFjdGl2ZVwiXG4gICAgKG9wZW5DaGFuZ2UpPVwib25PcGVuQ2hhbmdlKCRldmVudClcIlxuPlxuICAgIDx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LWRhdGUtdGltZV9fdGV4dGZpZWxkXCJcbiAgICAgICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgICAgICBjbGFzcz1cInQtdGV4dGZpZWxkXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICAgICBbbWFza2l0b109XCJtYXNrT3B0aW9uc1wiXG4gICAgICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgIFtwc2V1ZG9Ib3Zlcl09XCJwc2V1ZG9Ib3ZlclwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRGaWxsZXJdPVwiKGZpbGxlciQgfCBhc3luYykgfHwgJydcIlxuICAgICAgICBbdHVpVGV4dGZpZWxkSWNvbl09XCJjYWxlbmRhckljb24gJiYgaWNvbkNvbnRlbnRcIlxuICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZWRWYWx1ZVwiXG4gICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uRm9jdXNlZCgkZXZlbnQpXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICBuZ1Byb2plY3RBcz1cImlucHV0XCJcbiAgICAgICAgICAgIHNlbGVjdD1cImlucHV0XCJcbiAgICAgICAgPjwvbmctY29udGVudD5cbiAgICA8L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uQ29udGVudD5cbiAgICAgICAgPHR1aS1zdmdcbiAgICAgICAgICAgICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJjYWxlbmRhckljb24gYXMgc3JjOyBjb250ZXh0OiB7JGltcGxpY2l0OiBzaXplfVwiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICBbY2xhc3MudC1pY29uXT1cIiFjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtzcmNdPVwic3JjXCJcbiAgICAgICAgPjwvdHVpLXN2Zz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dOYXRpdmVQaWNrZXJcIlxuICAgICAgICAgICAgdHVpRGF0ZVRpbWVcbiAgICAgICAgICAgIGNsYXNzPVwidC1uYXRpdmUtaW5wdXRcIlxuICAgICAgICAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2Ryb3Bkb3duPVwicG9seW1vcnBoZXVzXCJcbiAgICAgICAgW3BvbHltb3JwaGV1c109XCJ0eXBlXCJcbiAgICA+XG4gICAgICAgIDx0dWktY2FsZW5kYXJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZGF0ZS10aW1lX19jYWxlbmRhclwiXG4gICAgICAgICAgICB0dWlQcmV2ZW50RGVmYXVsdD1cIm1vdXNlZG93blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiY2FsZW5kYXJNYXhEYXlcIlxuICAgICAgICAgICAgW21pbl09XCJjYWxlbmRhck1pbkRheVwiXG4gICAgICAgICAgICBbbW9udGhdPVwiY29tcHV0ZWRBY3RpdmVZZWFyTW9udGhcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNhbGVuZGFyVmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAobW9udGhDaGFuZ2UpPVwib25Nb250aENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdHVpLWNhbGVuZGFyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
1
4
  export * from './index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS10aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL3RhaWdhLXVpLWtpdC1jb21wb25lbnRzLWlucHV0LWRhdGUtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZGF0ZS10aW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZGF0ZS10aW1lL3RhaWdhLXVpLWtpdC1jb21wb25lbnRzLWlucHV0LWRhdGUtdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -7,6 +7,7 @@ import { TUI_INPUT_FILE_TEXTS } from '@taiga-ui/kit/tokens';
7
7
  import { tuiGetAcceptArray } from '@taiga-ui/kit/utils/files';
8
8
  import { of } from 'rxjs';
9
9
  import { map } from 'rxjs/operators';
10
+ // eslint-disable-next-line import/no-cycle
10
11
  import { TuiInputFilesDirective } from './input-files.directive';
11
12
  import { TUI_INPUT_FILES_OPTIONS } from './input-files.options';
12
13
  import * as i0 from "@angular/core";
@@ -24,7 +25,13 @@ export class TuiInputFilesComponent extends AbstractTuiNullableControl {
24
25
  this.inputFileTexts$ = inputFileTexts$;
25
26
  this.options = options;
26
27
  this.dataTransfer = null;
28
+ /**
29
+ * @deprecated: use `<input tuiInputFiles accept="image/*" />`
30
+ */
27
31
  this.accept = this.options.accepts;
32
+ /**
33
+ * @deprecated: use `<input tuiInputFiles multiple />`
34
+ */
28
35
  this.multiple = this.options.multiple;
29
36
  this.size = this.options.size;
30
37
  this.maxFileSize = this.options.maxFileSize;
@@ -110,6 +117,7 @@ export class TuiInputFilesComponent extends AbstractTuiNullableControl {
110
117
  return Array.isArray(value) ? value : [value];
111
118
  }
112
119
  processSelectedFiles(files) {
120
+ // IE11 after selecting a file through the open dialog generates a second event passing an empty FileList.
113
121
  if (!(files === null || files === void 0 ? void 0 : files.length)) {
114
122
  return;
115
123
  }
@@ -234,4 +242,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
234
242
  type: HostListener,
235
243
  args: ['change']
236
244
  }], computeLink$: [], computeLabel$: [], getValueArray: [] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsMEJBQTBCLEVBRzFCLGtCQUFrQixFQUVsQixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBR25DLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7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WUFBWSxNQWlCWixhQUFhLE1BMEJiLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBFTVBUWV9BUlJBWSxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtNT0RFX1BST1ZJREVSLCBUdWlTaXplTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlGaWxlTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9pbnRlcmZhY2VzJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0QWNjZXB0QXJyYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMvZmlsZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQge1R1aUlucHV0RmlsZXNEaXJlY3RpdmV9IGZyb20gJy4vaW5wdXQtZmlsZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVTX09QVElPTlMsIFR1aUlucHV0RmlsZXNPcHRpb25zfSBmcm9tICcuL2lucHV0LWZpbGVzLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1maWxlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGVzLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGVzLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW01PREVfUFJPVklERVIsIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RmlsZXNDb21wb25lbnQpXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRGaWxlc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGwgPSBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0RmlsZXNEaXJlY3RpdmUpKVxuICAgIHJlYWRvbmx5IG5hdGl2ZUlucHV0PzogVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcmVhZG9ubHkgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PGJvb2xlYW4+PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1hdFJlamVjdGlvbicpXG4gICAgcmVhZG9ubHkgZm9ybWF0UmVqZWN0aW9uITogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ21heFNpemVSZWplY3Rpb24nKVxuICAgIHJlYWRvbmx5IG1heFNpemVSZWplY3Rpb24hOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsaW5rOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgYDxpbnB1dCB0dWlJbnB1dEZpbGVzIGFjY2VwdD1cImltYWdlLypcIiAvPmBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFjY2VwdCA9IHRoaXMub3B0aW9ucy5hY2NlcHRzO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSBgPGlucHV0IHR1aUlucHV0RmlsZXMgbXVsdGlwbGUgLz5gXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2l6ZTogVHVpU2l6ZUwgPSB0aGlzLm9wdGlvbnMuc2l6ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMubWF4RmlsZVNpemU7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSByZWplY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUZpbGVMaWtlIHwgcmVhZG9ubHkgVHVpRmlsZUxpa2VbXT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFX1RFWFRTKVxuICAgICAgICByZWFkb25seSBpbnB1dEZpbGVUZXh0cyQ6IE9ic2VydmFibGU8XG4gICAgICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsU2luZ2xlJ1xuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMaW5rTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExpbmtTaW5nbGUnXG4gICAgICAgICAgICAgICAgfCAnZHJvcCdcbiAgICAgICAgICAgICAgICB8ICdkcm9wTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZm9ybWF0UmVqZWN0aW9uUmVhc29uJ1xuICAgICAgICAgICAgICAgIHwgJ21heFNpemVSZWplY3Rpb25SZWFzb24nLFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICA+LFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFU19PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlSW5wdXQ/Lm11bHRpcGxlID8/IHRoaXMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQWNjZXB0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUlucHV0Py5hY2NlcHQgPz8gdGhpcy5hY2NlcHQ7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkUHNldWRvSG92ZXJlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBzZXVkb0hvdmVyID8/ICh0aGlzLmZpbGVEcmFnZ2VkIHx8IG51bGwpO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExpbmskKCk6IE9ic2VydmFibGU8UG9seW1vcnBoZXVzQ29udGVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlTGluayQodGhpcy5maWxlRHJhZ2dlZCwgdGhpcy5jb21wdXRlZE11bHRpcGxlLCB0aGlzLmxpbmspO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExhYmVsJCgpOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZUxhYmVsJChcbiAgICAgICAgICAgIHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgICB0aGlzLmZpbGVEcmFnZ2VkLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE11bHRpcGxlLFxuICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZURyYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKTtcbiAgICB9XG5cbiAgICBnZXQgYXJyYXlWYWx1ZSgpOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyd0cnVlJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnLCBbJ2ZhbHNlJ10pXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gICAgb25GaWxlc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMubmF0aXZlSW5wdXQ/LmlucHV0ID8/IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzU2VsZWN0ZWRGaWxlcyhpbnB1dC5maWxlcyk7XG5cbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkRyb3BwZWQoZXZlbnQ6IERhdGFUcmFuc2Zlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NTZWxlY3RlZEZpbGVzKGV2ZW50LmZpbGVzKTtcbiAgICB9XG5cbiAgICBvbkRyYWdPdmVyKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFUcmFuc2ZlciA9IGRhdGFUcmFuc2ZlcjtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKHJlbW92ZWRGaWxlOiBUdWlGaWxlTGlrZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb21wdXRlZE11bHRpcGxlXG4gICAgICAgICAgICA/IHRoaXMuYXJyYXlWYWx1ZS5maWx0ZXIoZmlsZSA9PiBmaWxlICE9PSByZW1vdmVkRmlsZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY29tcHV0ZUxpbmskKFxuICAgICAgICBmaWxlRHJhZ2dlZDogYm9vbGVhbixcbiAgICAgICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxpbms6IFBvbHltb3JwaGV1c0NvbnRlbnQsXG4gICAgKTogT2JzZXJ2YWJsZTxQb2x5bW9ycGhldXNDb250ZW50PiB7XG4gICAgICAgIHJldHVybiBmaWxlRHJhZ2dlZFxuICAgICAgICAgICAgPyBvZignJylcbiAgICAgICAgICAgIDogdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCh0ZXh0cyA9PlxuICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlICYmICFsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExpbmtNdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxpbmsgfHwgdGV4dHMuZGVmYXVsdExpbmtTaW5nbGUsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlTGFiZWwkKFxuICAgICAgICBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgZmlsZURyYWdnZWQ6IGJvb2xlYW4sXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudCxcbiAgICApOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVEcmFnZ2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodGV4dHMgPT4gKG11bHRpcGxlID8gdGV4dHMuZHJvcE11bHRpcGxlIDogdGV4dHMuZHJvcCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0RmlsZVRleHRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKHRleHRzID0+XG4gICAgICAgICAgICAgICAgbXVsdGlwbGUgJiYgIWxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExhYmVsTXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCB8fCB0ZXh0cy5kZWZhdWx0TGFiZWxTaW5nbGUsXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUFycmF5KFxuICAgICAgICB2YWx1ZTogVHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdIHwgbnVsbCxcbiAgICApOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX0FSUkFZO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1NlbGVjdGVkRmlsZXMoZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICAvLyBJRTExIGFmdGVyIHNlbGVjdGluZyBhIGZpbGUgdGhyb3VnaCB0aGUgb3BlbiBkaWFsb2cgZ2VuZXJhdGVzIGEgc2Vjb25kIGV2ZW50IHBhc3NpbmcgYW4gZW1wdHkgRmlsZUxpc3QuXG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JzOiBSZWNvcmQ8XG4gICAgICAgICAgICAnZm9ybWF0UmVqZWN0aW9uJyB8ICdtYXhTaXplUmVqZWN0aW9uJyxcbiAgICAgICAgICAgIFBvbHltb3JwaGV1c0NvbnRlbnRcbiAgICAgICAgPiA9IHtcbiAgICAgICAgICAgIGZvcm1hdFJlamVjdGlvbjogdGhpcy5mb3JtYXRSZWplY3Rpb24sXG4gICAgICAgICAgICBtYXhTaXplUmVqZWN0aW9uOiB0aGlzLm1heFNpemVSZWplY3Rpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbmV3RmlsZXMgPSB0aGlzLmNvbXB1dGVkTXVsdGlwbGUgPyBBcnJheS5mcm9tKGZpbGVzKSA6IFtmaWxlc1swXV07XG4gICAgICAgIGNvbnN0IHRvb0JpZ0ZpbGVzID0gbmV3RmlsZXMuZmlsdGVyKGZpbGUgPT4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgICAgIGNvbnN0IHdyb25nRm9ybWF0RmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0aGlzLmlzRm9ybWF0QWNjZXB0YWJsZShmaWxlKSAmJiAhdG9vQmlnRmlsZXMuaW5jbHVkZXMoZmlsZSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0b29CaWdGaWxlcy5pbmNsdWRlcyhmaWxlKSAmJiAhd3JvbmdGb3JtYXRGaWxlcy5pbmNsdWRlcyhmaWxlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodG9vQmlnRmlsZXMubGVuZ3RoIHx8IHdyb25nRm9ybWF0RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdEZpbGVzKFtcbiAgICAgICAgICAgICAgICAuLi50b29CaWdGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMubWF4U2l6ZVJlamVjdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgLi4ud3JvbmdGb3JtYXRGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMuZm9ybWF0UmVqZWN0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcHV0ZWRNdWx0aXBsZVxuICAgICAgICAgICAgPyBbLi4udGhpcy5hcnJheVZhbHVlLCAuLi5hY2NlcHRlZEZpbGVzXVxuICAgICAgICAgICAgOiBhY2NlcHRlZEZpbGVzWzBdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Zvcm1hdEFjY2VwdGFibGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRBY2NlcHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gYC4keyhmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJykudG9Mb3dlckNhc2UoKX1gO1xuXG4gICAgICAgIHJldHVybiB0dWlHZXRBY2NlcHRBcnJheSh0aGlzLmNvbXB1dGVkQWNjZXB0KS5zb21lKFxuICAgICAgICAgICAgZm9ybWF0ID0+XG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSBleHRlbnNpb24gfHxcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09IGZpbGUudHlwZSB8fFxuICAgICAgICAgICAgICAgIChmb3JtYXQuc3BsaXQoJy8nKVsxXSA9PT0gJyonICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZS5zcGxpdCgnLycpWzBdID09PSBmb3JtYXQuc3BsaXQoJy8nKVswXSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWplY3RGaWxlcyhyZWplY3RlZEZpbGVzOiByZWFkb25seSBUdWlGaWxlTGlrZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0LmVtaXQodGhpcy5jb21wdXRlZE11bHRpcGxlID8gcmVqZWN0ZWRGaWxlcyA6IHJlamVjdGVkRmlsZXNbMF0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBhcHBlYXJhbmNlPVwiaW5wdXQtZmlsZVwiXG4gICAgdHVpV3JhcHBlclxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbYWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2NsYXNzLl9tb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXIgfHwgZmlsZURyYWdnZWQgfHwgbnVsbFwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZmlsZV9fbGFiZWxcIlxuICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4gICAgICAgICh0dWlEcm9wcGFibGVEcmFnT3ZlckNoYW5nZSk9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAodHVpRHJvcHBhYmxlRHJvcHBlZCk9XCJvbkRyb3BwZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpbGVEcmFnZ2VkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF0ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIHR1aUxpbms+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkTGluayQgfCBhc3luYyBhcyB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29tcHV0ZWRMYWJlbCQgfCBhc3luYyBhcyB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInRleHRcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWNvbXB1dGVkRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtbmF0aXZlXCJcbiAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNmb3JtYXRSZWplY3Rpb24+XG4gICAge3sgKGlucHV0RmlsZVRleHRzJCB8IGFzeW5jKT8uZm9ybWF0UmVqZWN0aW9uUmVhc29uIHx8ICcnIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21heFNpemVSZWplY3Rpb24+XG4gICAge3sgbWF4RmlsZVNpemUgfCB0dWlNYXhTaXplUmVqZWN0aW9uRXJyb3IgfCBhc3luYyB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sSUFBSSxFQUNKLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxhQUFhLEVBQ2IsMEJBQTBCLEVBRzFCLGtCQUFrQixFQUVsQixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBRXZELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLDJDQUEyQztBQUMzQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsdUJBQXVCLEVBQXVCLE1BQU0sdUJB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TyxDQUFDO2dCQU1uQyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsUUFBUTtnQkE0QmQsWUFBWSxNQWlCWixhQUFhLE1BMEJiLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbCxcbiAgICBFTVBUWV9BUlJBWSxcbiAgICBUVUlfSVNfTU9CSUxFLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIFR1aUNvbnRleHRXaXRoSW1wbGljaXQsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICBUdWlOYXRpdmVGb2N1c2FibGVFbGVtZW50LFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtNT0RFX1BST1ZJREVSLCBUdWlTaXplTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlGaWxlTGlrZX0gZnJvbSAnQHRhaWdhLXVpL2tpdC9pbnRlcmZhY2VzJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0QWNjZXB0QXJyYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMvZmlsZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQge1R1aUlucHV0RmlsZXNEaXJlY3RpdmV9IGZyb20gJy4vaW5wdXQtZmlsZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7VFVJX0lOUFVUX0ZJTEVTX09QVElPTlMsIFR1aUlucHV0RmlsZXNPcHRpb25zfSBmcm9tICcuL2lucHV0LWZpbGVzLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1maWxlcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGVzLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWZpbGVzLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW01PREVfUFJPVklERVIsIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yKFR1aUlucHV0RmlsZXNDb21wb25lbnQpXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRGaWxlc0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8VHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgcHJpdmF0ZSBkYXRhVHJhbnNmZXI6IERhdGFUcmFuc2ZlciB8IG51bGwgPSBudWxsO1xuXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0RmlsZXNEaXJlY3RpdmUpKVxuICAgIHJlYWRvbmx5IG5hdGl2ZUlucHV0PzogVHVpSW5wdXRGaWxlc0RpcmVjdGl2ZTtcblxuICAgIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYpXG4gICAgcmVhZG9ubHkgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxUdWlDb250ZXh0V2l0aEltcGxpY2l0PGJvb2xlYW4+PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Zvcm1hdFJlamVjdGlvbicpXG4gICAgcmVhZG9ubHkgZm9ybWF0UmVqZWN0aW9uITogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ21heFNpemVSZWplY3Rpb24nKVxuICAgIHJlYWRvbmx5IG1heFNpemVSZWplY3Rpb24hOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsaW5rOiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudDtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkOiB1c2UgYDxpbnB1dCB0dWlJbnB1dEZpbGVzIGFjY2VwdD1cImltYWdlLypcIiAvPmBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFjY2VwdCA9IHRoaXMub3B0aW9ucy5hY2NlcHRzO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQ6IHVzZSBgPGlucHV0IHR1aUlucHV0RmlsZXMgbXVsdGlwbGUgLz5gXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtdWx0aXBsZSA9IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc2l6ZTogVHVpU2l6ZUwgPSB0aGlzLm9wdGlvbnMuc2l6ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgbWF4RmlsZVNpemUgPSB0aGlzLm9wdGlvbnMubWF4RmlsZVNpemU7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSByZWplY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUZpbGVMaWtlIHwgcmVhZG9ubHkgVHVpRmlsZUxpa2VbXT4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFX1RFWFRTKVxuICAgICAgICByZWFkb25seSBpbnB1dEZpbGVUZXh0cyQ6IE9ic2VydmFibGU8XG4gICAgICAgICAgICBSZWNvcmQ8XG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExhYmVsU2luZ2xlJ1xuICAgICAgICAgICAgICAgIHwgJ2RlZmF1bHRMaW5rTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZGVmYXVsdExpbmtTaW5nbGUnXG4gICAgICAgICAgICAgICAgfCAnZHJvcCdcbiAgICAgICAgICAgICAgICB8ICdkcm9wTXVsdGlwbGUnXG4gICAgICAgICAgICAgICAgfCAnZm9ybWF0UmVqZWN0aW9uUmVhc29uJ1xuICAgICAgICAgICAgICAgIHwgJ21heFNpemVSZWplY3Rpb25SZWFzb24nLFxuICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgPlxuICAgICAgICA+LFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFU19PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2RyKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlSW5wdXQ/Lm11bHRpcGxlID8/IHRoaXMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkQWNjZXB0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUlucHV0Py5hY2NlcHQgPz8gdGhpcy5hY2NlcHQ7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dD8ubmF0aXZlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbXB1dGVkUHNldWRvSG92ZXJlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLnBzZXVkb0hvdmVyID8/ICh0aGlzLmZpbGVEcmFnZ2VkIHx8IG51bGwpO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExpbmskKCk6IE9ic2VydmFibGU8UG9seW1vcnBoZXVzQ29udGVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlTGluayQodGhpcy5maWxlRHJhZ2dlZCwgdGhpcy5jb21wdXRlZE11bHRpcGxlLCB0aGlzLmxpbmspO1xuICAgIH1cblxuICAgIGdldCBjb21wdXRlZExhYmVsJCgpOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZUxhYmVsJChcbiAgICAgICAgICAgIHRoaXMuaXNNb2JpbGUsXG4gICAgICAgICAgICB0aGlzLmZpbGVEcmFnZ2VkLFxuICAgICAgICAgICAgdGhpcy5jb21wdXRlZE11bHRpcGxlLFxuICAgICAgICAgICAgdGhpcy5sYWJlbCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgZmlsZURyYWdnZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0YVRyYW5zZmVyPy50eXBlcy5pbmNsdWRlcygnRmlsZXMnKTtcbiAgICB9XG5cbiAgICBnZXQgYXJyYXlWYWx1ZSgpOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVBcnJheSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1c2luJywgWyd0cnVlJ10pXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnLCBbJ2ZhbHNlJ10pXG4gICAgb25Gb2N1c2VkKGZvY3VzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGZvY3VzZWQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gICAgb25GaWxlc1NlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMubmF0aXZlSW5wdXQ/LmlucHV0ID8/IHRoaXMuaW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzU2VsZWN0ZWRGaWxlcyhpbnB1dC5maWxlcyk7XG5cbiAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBvbkRyb3BwZWQoZXZlbnQ6IERhdGFUcmFuc2Zlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NTZWxlY3RlZEZpbGVzKGV2ZW50LmZpbGVzKTtcbiAgICB9XG5cbiAgICBvbkRyYWdPdmVyKGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGFUcmFuc2ZlciA9IGRhdGFUcmFuc2ZlcjtcbiAgICB9XG5cbiAgICByZW1vdmVGaWxlKHJlbW92ZWRGaWxlOiBUdWlGaWxlTGlrZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb21wdXRlZE11bHRpcGxlXG4gICAgICAgICAgICA/IHRoaXMuYXJyYXlWYWx1ZS5maWx0ZXIoZmlsZSA9PiBmaWxlICE9PSByZW1vdmVkRmlsZSlcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByaXZhdGUgY29tcHV0ZUxpbmskKFxuICAgICAgICBmaWxlRHJhZ2dlZDogYm9vbGVhbixcbiAgICAgICAgbXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIGxpbms6IFBvbHltb3JwaGV1c0NvbnRlbnQsXG4gICAgKTogT2JzZXJ2YWJsZTxQb2x5bW9ycGhldXNDb250ZW50PiB7XG4gICAgICAgIHJldHVybiBmaWxlRHJhZ2dlZFxuICAgICAgICAgICAgPyBvZignJylcbiAgICAgICAgICAgIDogdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICAgIG1hcCh0ZXh0cyA9PlxuICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlICYmICFsaW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExpbmtNdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxpbmsgfHwgdGV4dHMuZGVmYXVsdExpbmtTaW5nbGUsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjb21wdXRlTGFiZWwkKFxuICAgICAgICBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgZmlsZURyYWdnZWQ6IGJvb2xlYW4sXG4gICAgICAgIG11bHRpcGxlOiBib29sZWFuLFxuICAgICAgICBsYWJlbDogUG9seW1vcnBoZXVzQ29udGVudCxcbiAgICApOiBPYnNlcnZhYmxlPFBvbHltb3JwaGV1c0NvbnRlbnQ+IHtcbiAgICAgICAgaWYgKGlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVEcmFnZ2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZpbGVUZXh0cyQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodGV4dHMgPT4gKG11bHRpcGxlID8gdGV4dHMuZHJvcE11bHRpcGxlIDogdGV4dHMuZHJvcCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0RmlsZVRleHRzJC5waXBlKFxuICAgICAgICAgICAgbWFwKHRleHRzID0+XG4gICAgICAgICAgICAgICAgbXVsdGlwbGUgJiYgIWxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHMuZGVmYXVsdExhYmVsTXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCB8fCB0ZXh0cy5kZWZhdWx0TGFiZWxTaW5nbGUsXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRWYWx1ZUFycmF5KFxuICAgICAgICB2YWx1ZTogVHVpRmlsZUxpa2UgfCByZWFkb25seSBUdWlGaWxlTGlrZVtdIHwgbnVsbCxcbiAgICApOiByZWFkb25seSBUdWlGaWxlTGlrZVtdIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZX0FSUkFZO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1NlbGVjdGVkRmlsZXMoZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICAvLyBJRTExIGFmdGVyIHNlbGVjdGluZyBhIGZpbGUgdGhyb3VnaCB0aGUgb3BlbiBkaWFsb2cgZ2VuZXJhdGVzIGEgc2Vjb25kIGV2ZW50IHBhc3NpbmcgYW4gZW1wdHkgRmlsZUxpc3QuXG4gICAgICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXJyb3JzOiBSZWNvcmQ8XG4gICAgICAgICAgICAnZm9ybWF0UmVqZWN0aW9uJyB8ICdtYXhTaXplUmVqZWN0aW9uJyxcbiAgICAgICAgICAgIFBvbHltb3JwaGV1c0NvbnRlbnRcbiAgICAgICAgPiA9IHtcbiAgICAgICAgICAgIGZvcm1hdFJlamVjdGlvbjogdGhpcy5mb3JtYXRSZWplY3Rpb24sXG4gICAgICAgICAgICBtYXhTaXplUmVqZWN0aW9uOiB0aGlzLm1heFNpemVSZWplY3Rpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbmV3RmlsZXMgPSB0aGlzLmNvbXB1dGVkTXVsdGlwbGUgPyBBcnJheS5mcm9tKGZpbGVzKSA6IFtmaWxlc1swXV07XG4gICAgICAgIGNvbnN0IHRvb0JpZ0ZpbGVzID0gbmV3RmlsZXMuZmlsdGVyKGZpbGUgPT4gZmlsZS5zaXplID4gdGhpcy5tYXhGaWxlU2l6ZSk7XG4gICAgICAgIGNvbnN0IHdyb25nRm9ybWF0RmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0aGlzLmlzRm9ybWF0QWNjZXB0YWJsZShmaWxlKSAmJiAhdG9vQmlnRmlsZXMuaW5jbHVkZXMoZmlsZSksXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBuZXdGaWxlcy5maWx0ZXIoXG4gICAgICAgICAgICBmaWxlID0+ICF0b29CaWdGaWxlcy5pbmNsdWRlcyhmaWxlKSAmJiAhd3JvbmdGb3JtYXRGaWxlcy5pbmNsdWRlcyhmaWxlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodG9vQmlnRmlsZXMubGVuZ3RoIHx8IHdyb25nRm9ybWF0RmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdEZpbGVzKFtcbiAgICAgICAgICAgICAgICAuLi50b29CaWdGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMubWF4U2l6ZVJlamVjdGlvbixcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgLi4ud3JvbmdGb3JtYXRGaWxlcy5tYXAoZmlsZSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvcnMuZm9ybWF0UmVqZWN0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuY29tcHV0ZWRNdWx0aXBsZVxuICAgICAgICAgICAgPyBbLi4udGhpcy5hcnJheVZhbHVlLCAuLi5hY2NlcHRlZEZpbGVzXVxuICAgICAgICAgICAgOiBhY2NlcHRlZEZpbGVzWzBdIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Zvcm1hdEFjY2VwdGFibGUoZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRBY2NlcHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gYC4keyhmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJykudG9Mb3dlckNhc2UoKX1gO1xuXG4gICAgICAgIHJldHVybiB0dWlHZXRBY2NlcHRBcnJheSh0aGlzLmNvbXB1dGVkQWNjZXB0KS5zb21lKFxuICAgICAgICAgICAgZm9ybWF0ID0+XG4gICAgICAgICAgICAgICAgZm9ybWF0ID09PSBleHRlbnNpb24gfHxcbiAgICAgICAgICAgICAgICBmb3JtYXQgPT09IGZpbGUudHlwZSB8fFxuICAgICAgICAgICAgICAgIChmb3JtYXQuc3BsaXQoJy8nKVsxXSA9PT0gJyonICYmXG4gICAgICAgICAgICAgICAgICAgIGZpbGUudHlwZS5zcGxpdCgnLycpWzBdID09PSBmb3JtYXQuc3BsaXQoJy8nKVswXSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWplY3RGaWxlcyhyZWplY3RlZEZpbGVzOiByZWFkb25seSBUdWlGaWxlTGlrZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0LmVtaXQodGhpcy5jb21wdXRlZE11bHRpcGxlID8gcmVqZWN0ZWRGaWxlcyA6IHJlamVjdGVkRmlsZXNbMF0pO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBhcHBlYXJhbmNlPVwiaW5wdXQtZmlsZVwiXG4gICAgdHVpV3JhcHBlclxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbYWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2NsYXNzLl9tb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXIgfHwgZmlsZURyYWdnZWQgfHwgbnVsbFwiXG4+XG4gICAgPGxhYmVsXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtZmlsZV9fbGFiZWxcIlxuICAgICAgICBjbGFzcz1cInQtbGFiZWxcIlxuICAgICAgICAobW91c2Vkb3duLnByZXZlbnQuc2lsZW50KT1cIigwKVwiXG4gICAgICAgICh0dWlEcm9wcGFibGVEcmFnT3ZlckNoYW5nZSk9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAodHVpRHJvcHBhYmxlRHJvcHBlZCk9XCJvbkRyb3BwZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGZpbGVEcmFnZ2VkfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiF0ZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxhIHR1aUxpbms+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImNvbXB1dGVkTGluayQgfCBhc3luYyBhcyB0ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAqcG9seW1vcnBoZXVzT3V0bGV0PVwiY29tcHV0ZWRMYWJlbCQgfCBhc3luYyBhcyB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInRleHRcIlxuICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcmVhZE9ubHkgJiYgIWNvbXB1dGVkRGlzYWJsZWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAgICAgdGl0bGU9XCJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtbmF0aXZlXCJcbiAgICAgICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgIFt0dWlGb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGFiZWw+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNmb3JtYXRSZWplY3Rpb24+XG4gICAge3sgKGlucHV0RmlsZVRleHRzJCB8IGFzeW5jKT8uZm9ybWF0UmVqZWN0aW9uUmVhc29uIHx8ICcnIH19XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21heFNpemVSZWplY3Rpb24+XG4gICAge3sgbWF4RmlsZVNpemUgfCB0dWlNYXhTaXplUmVqZWN0aW9uRXJyb3IgfCBhc3luYyB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import { Directive, ElementRef, forwardRef, HostBinding, Inject } from '@angular/core';
2
2
  import { TuiIdService } from '@taiga-ui/cdk';
3
+ // eslint-disable-next-line import/no-cycle
3
4
  import { TuiInputFilesComponent } from './input-files.component';
4
5
  import { TUI_INPUT_FILES_OPTIONS } from './input-files.options';
5
6
  import * as i0 from "@angular/core";
@@ -73,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
73
74
  type: HostBinding,
74
75
  args: ['attr.capture']
75
76
  }] } });
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUF1QixNQUFNLHVCQUF1QixDQUFDOzs7O0FBU3BGLE1BQU0sT0FBTyxzQkFBc0I7SUFDL0IsWUFFYSxJQUE0QixFQUNBLEVBQWdDLEVBQzlCLFNBQXVCLEVBQ1osT0FBNkI7UUFIdEUsU0FBSSxHQUFKLElBQUksQ0FBd0I7UUFDQSxPQUFFLEdBQUYsRUFBRSxDQUE4QjtRQUM5QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFDaEYsQ0FBQztJQUVKLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQ0ksRUFBRTtRQUNGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELElBQ0ksTUFBTTs7UUFDTixPQUFPLE1BQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFDSSxRQUFROztRQUNSLE9BQU8sTUFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ25FLENBQUM7SUFFRCxJQUNJLE9BQU87O1FBQ1AsT0FBTyxNQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsbUNBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDakYsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDakMsQ0FBQzs7b0hBcENRLHNCQUFzQixrQkFFbkIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGFBRXhDLFVBQVUsYUFDVixZQUFZLGFBQ1osdUJBQXVCO3dHQU4xQixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFQbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxJQUFJLEVBQUU7d0JBQ0YsSUFBSSxFQUFFLE1BQU07d0JBQ1osS0FBSyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNKOzswQkFHUSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQzs7MEJBRS9DLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsdUJBQXVCOzRDQUkvQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsVUFBVTtnQkFNbkIsRUFBRTtzQkFETCxXQUFXO3VCQUFDLElBQUk7Z0JBTWIsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLFFBQVE7Z0JBTWpCLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxVQUFVO2dCQU1uQixPQUFPO3NCQURWLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHVpSWRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHtUdWlJbnB1dEZpbGVzQ29tcG9uZW50fSBmcm9tICcuL2lucHV0LWZpbGVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1RVSV9JTlBVVF9GSUxFU19PUFRJT05TLCBUdWlJbnB1dEZpbGVzT3B0aW9uc30gZnJvbSAnLi9pbnB1dC1maWxlcy5vcHRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlJbnB1dEZpbGVzXScsXG4gICAgaG9zdDoge1xuICAgICAgICB0eXBlOiAnZmlsZScsXG4gICAgICAgIGNsYXNzOiAndC1uYXRpdmUnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0RmlsZXNEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gVHVpSW5wdXRGaWxlc0NvbXBvbmVudCkpXG4gICAgICAgIHJlYWRvbmx5IGhvc3Q6IFR1aUlucHV0RmlsZXNDb21wb25lbnQsXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgQEluamVjdChUdWlJZFNlcnZpY2UpIHByaXZhdGUgcmVhZG9ubHkgaWRTZXJ2aWNlOiBUdWlJZFNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRGaWxlc09wdGlvbnMsXG4gICAgKSB7fVxuXG4gICAgQEhvc3RCaW5kaW5nKCd0YWJJbmRleCcpXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvc3QuZm9jdXNhYmxlID8gMCA6IC0xO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnaWQnKVxuICAgIGdldCBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkIHx8IHRoaXMuaWRTZXJ2aWNlLmdlbmVyYXRlKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhY2NlcHQnKVxuICAgIGdldCBhY2NlcHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hY2NlcHQgPz8gdGhpcy5vcHRpb25zLmFjY2VwdHM7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdtdWx0aXBsZScpXG4gICAgZ2V0IG11bHRpcGxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50Lm11bHRpcGxlID8/IHRoaXMub3B0aW9ucy5tdWx0aXBsZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuY2FwdHVyZScpXG4gICAgZ2V0IGNhcHR1cmUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjYXB0dXJlJykgPz8gdGhpcy5vcHRpb25zLmNhcHR1cmU7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgIH1cbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtZmlsZXMvaW5wdXQtZmlsZXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFM0MsMkNBQTJDO0FBQzNDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBdUIsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQVNwRixNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFlBRWEsSUFBNEIsRUFDQSxFQUFnQyxFQUM5QixTQUF1QixFQUNaLE9BQTZCO1FBSHRFLFNBQUksR0FBSixJQUFJLENBQXdCO1FBQ0EsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQXNCO0lBQ2hGLENBQUM7SUFFSixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUNJLEVBQUU7UUFDRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUNJLE1BQU07O1FBQ04sT0FBTyxNQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sbUNBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQ0ksUUFBUTs7UUFDUixPQUFPLE1BQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxtQ0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFDSSxPQUFPOztRQUNQLE9BQU8sTUFBQSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLG1DQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQ2pDLENBQUM7O29IQXBDUSxzQkFBc0Isa0JBRW5CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxhQUV4QyxVQUFVLGFBQ1YsWUFBWSxhQUNaLHVCQUF1Qjt3R0FOMUIsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBUGxDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsSUFBSSxFQUFFO3dCQUNGLElBQUksRUFBRSxNQUFNO3dCQUNaLEtBQUssRUFBRSxVQUFVO3FCQUNwQjtpQkFDSjs7MEJBR1EsTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7OzBCQUUvQyxNQUFNOzJCQUFDLFVBQVU7OzBCQUNqQixNQUFNOzJCQUFDLFlBQVk7OzBCQUNuQixNQUFNOzJCQUFDLHVCQUF1Qjs0Q0FJL0IsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLFVBQVU7Z0JBTW5CLEVBQUU7c0JBREwsV0FBVzt1QkFBQyxJQUFJO2dCQU1iLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxRQUFRO2dCQU1qQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsVUFBVTtnQkFNbkIsT0FBTztzQkFEVixXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1R1aUlkU2VydmljZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7VHVpSW5wdXRGaWxlc0NvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1maWxlcy5jb21wb25lbnQnO1xuaW1wb3J0IHtUVUlfSU5QVVRfRklMRVNfT1BUSU9OUywgVHVpSW5wdXRGaWxlc09wdGlvbnN9IGZyb20gJy4vaW5wdXQtZmlsZXMub3B0aW9ucyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRGaWxlc10nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgICBjbGFzczogJ3QtbmF0aXZlJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dEZpbGVzRGlyZWN0aXZlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IFR1aUlucHV0RmlsZXNDb21wb25lbnQpKVxuICAgICAgICByZWFkb25seSBob3N0OiBUdWlJbnB1dEZpbGVzQ29tcG9uZW50LFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVHVpSWRTZXJ2aWNlKSBwcml2YXRlIHJlYWRvbmx5IGlkU2VydmljZTogVHVpSWRTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9GSUxFU19PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0RmlsZXNPcHRpb25zLFxuICAgICkge31cblxuICAgIEBIb3N0QmluZGluZygndGFiSW5kZXgnKVxuICAgIGdldCB0YWJJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0LmZvY3VzYWJsZSA/IDAgOiAtMTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2lkJylcbiAgICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5pZCB8fCB0aGlzLmlkU2VydmljZS5nZW5lcmF0ZSgpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYWNjZXB0JylcbiAgICBnZXQgYWNjZXB0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWNjZXB0ID8/IHRoaXMub3B0aW9ucy5hY2NlcHRzO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnbXVsdGlwbGUnKVxuICAgIGdldCBtdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudC5tdWx0aXBsZSA/PyB0aGlzLm9wdGlvbnMubXVsdGlwbGU7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmNhcHR1cmUnKVxuICAgIGdldCBjYXB0dXJlKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnY2FwdHVyZScpID8/IHRoaXMub3B0aW9ucy5jYXB0dXJlO1xuICAgIH1cblxuICAgIGdldCBpbnB1dCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgICB9XG59XG4iXX0=
@@ -4,10 +4,13 @@ export const TUI_INPUT_FILES_DEFAULT_OPTIONS = {
4
4
  accepts: ``,
5
5
  multiple: false,
6
6
  size: `m`,
7
- maxFileSize: 30 * 1024 * 1024,
7
+ maxFileSize: 30 * 1024 * 1024, // 30 MiB
8
8
  };
9
+ /**
10
+ * Default parameters for input files component
11
+ */
9
12
  export const TUI_INPUT_FILES_OPTIONS = tuiCreateToken(TUI_INPUT_FILES_DEFAULT_OPTIONS);
10
13
  export function tuiInputFilesOptionsProvider(options) {
11
14
  return tuiProvideOptions(TUI_INPUT_FILES_OPTIONS, options, TUI_INPUT_FILES_DEFAULT_OPTIONS);
12
15
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWZpbGVzL2lucHV0LWZpbGVzLm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQWdCaEUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXlCO0lBQ2pFLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLEVBQUU7SUFDWCxRQUFRLEVBQUUsS0FBSztJQUNmLElBQUksRUFBRSxHQUFHO0lBQ1QsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSTtDQUNoQyxDQUFDO0FBS0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFdkYsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxPQUFzQztJQUV0QyxPQUFPLGlCQUFpQixDQUNwQix1QkFBdUIsRUFDdkIsT0FBTyxFQUNQLCtCQUErQixDQUNsQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbiwgdHVpUHJvdmlkZU9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlTaXplTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR1aUlucHV0RmlsZXNPcHRpb25zIHtcbiAgICBhY2NlcHRzOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uOlxuICAgICAqIHVzZXIgLSBUaGUgdXNlci1mYWNpbmcgY2FtZXJhIGFuZC9vciBtaWNyb3Bob25lIHNob3VsZCBiZSB1c2VkLlxuICAgICAqIGVudmlyb25tZW50IC0gVGhlIG91dHdhcmQtZmFjaW5nIGNhbWVyYSBhbmQvb3IgbWljcm9waG9uZSBzaG91bGQgYmUgdXNlZFxuICAgICAqL1xuICAgIGNhcHR1cmU6ICdlbnZpcm9ubWVudCcgfCAndXNlcicgfCBudWxsO1xuICAgIG1heEZpbGVTaXplOiBudW1iZXI7XG4gICAgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgc2l6ZTogVHVpU2l6ZUw7XG59XG5cbmV4cG9ydCBjb25zdCBUVUlfSU5QVVRfRklMRVNfREVGQVVMVF9PUFRJT05TOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyA9IHtcbiAgICBjYXB0dXJlOiBudWxsLFxuICAgIGFjY2VwdHM6IGBgLFxuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBzaXplOiBgbWAsXG4gICAgbWF4RmlsZVNpemU6IDMwICogMTAyNCAqIDEwMjQsIC8vIDMwIE1pQlxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGlucHV0IGZpbGVzIGNvbXBvbmVudFxuICovXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMgPSB0dWlDcmVhdGVUb2tlbihUVUlfSU5QVVRfRklMRVNfREVGQVVMVF9PUFRJT05TKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlucHV0RmlsZXNPcHRpb25zUHJvdmlkZXIoXG4gICAgb3B0aW9uczogUGFydGlhbDxUdWlJbnB1dEZpbGVzT3B0aW9ucz4sXG4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGVPcHRpb25zKFxuICAgICAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICApO1xufVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZXMub3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2lucHV0LWZpbGVzL2lucHV0LWZpbGVzLm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQWdCaEUsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXlCO0lBQ2pFLE9BQU8sRUFBRSxJQUFJO0lBQ2IsT0FBTyxFQUFFLEVBQUU7SUFDWCxRQUFRLEVBQUUsS0FBSztJQUNmLElBQUksRUFBRSxHQUFHO0lBQ1QsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxFQUFFLFNBQVM7Q0FDM0MsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLCtCQUErQixDQUFDLENBQUM7QUFFdkYsTUFBTSxVQUFVLDRCQUE0QixDQUN4QyxPQUFzQztJQUV0QyxPQUFPLGlCQUFpQixDQUNwQix1QkFBdUIsRUFDdkIsT0FBTyxFQUNQLCtCQUErQixDQUNsQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0dWlDcmVhdGVUb2tlbiwgdHVpUHJvdmlkZU9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlTaXplTH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR1aUlucHV0RmlsZXNPcHRpb25zIHtcbiAgICBhY2NlcHRzOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uOlxuICAgICAqIHVzZXIgLSBUaGUgdXNlci1mYWNpbmcgY2FtZXJhIGFuZC9vciBtaWNyb3Bob25lIHNob3VsZCBiZSB1c2VkLlxuICAgICAqIGVudmlyb25tZW50IC0gVGhlIG91dHdhcmQtZmFjaW5nIGNhbWVyYSBhbmQvb3IgbWljcm9waG9uZSBzaG91bGQgYmUgdXNlZFxuICAgICAqL1xuICAgIGNhcHR1cmU6ICdlbnZpcm9ubWVudCcgfCAndXNlcicgfCBudWxsO1xuICAgIG1heEZpbGVTaXplOiBudW1iZXI7XG4gICAgbXVsdGlwbGU6IGJvb2xlYW47XG4gICAgc2l6ZTogVHVpU2l6ZUw7XG59XG5cbmV4cG9ydCBjb25zdCBUVUlfSU5QVVRfRklMRVNfREVGQVVMVF9PUFRJT05TOiBUdWlJbnB1dEZpbGVzT3B0aW9ucyA9IHtcbiAgICBjYXB0dXJlOiBudWxsLFxuICAgIGFjY2VwdHM6IGBgLFxuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBzaXplOiBgbWAsXG4gICAgbWF4RmlsZVNpemU6IDMwICogMTAyNCAqIDEwMjQsIC8vIDMwIE1pQlxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHBhcmFtZXRlcnMgZm9yIGlucHV0IGZpbGVzIGNvbXBvbmVudFxuICovXG5leHBvcnQgY29uc3QgVFVJX0lOUFVUX0ZJTEVTX09QVElPTlMgPSB0dWlDcmVhdGVUb2tlbihUVUlfSU5QVVRfRklMRVNfREVGQVVMVF9PUFRJT05TKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUlucHV0RmlsZXNPcHRpb25zUHJvdmlkZXIoXG4gICAgb3B0aW9uczogUGFydGlhbDxUdWlJbnB1dEZpbGVzT3B0aW9ucz4sXG4pOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGVPcHRpb25zKFxuICAgICAgICBUVUlfSU5QVVRfRklMRVNfT1BUSU9OUyxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgVFVJX0lOUFVUX0ZJTEVTX0RFRkFVTFRfT1BUSU9OUyxcbiAgICApO1xufVxuIl19
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
1
4
  export * from './index';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1maWxlcy90YWlnYS11aS1raXQtY29tcG9uZW50cy1pbnB1dC1maWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtaW5wdXQtZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1maWxlcy90YWlnYS11aS1raXQtY29tcG9uZW50cy1pbnB1dC1maWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==