@taiga-ui/kit 3.18.0 → 3.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/bundles/taiga-ui-kit-components-accordion.umd.js +20 -29
  2. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-action.umd.js +11 -20
  4. package/bundles/taiga-ui-kit-components-action.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-arrow.umd.js +7 -7
  6. package/bundles/taiga-ui-kit-components-avatar.umd.js +11 -20
  7. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  8. package/bundles/taiga-ui-kit-components-badge.umd.js +11 -20
  9. package/bundles/taiga-ui-kit-components-badge.umd.js.map +1 -1
  10. package/bundles/taiga-ui-kit-components-badged-content.umd.js +11 -20
  11. package/bundles/taiga-ui-kit-components-badged-content.umd.js.map +1 -1
  12. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js +11 -20
  13. package/bundles/taiga-ui-kit-components-breadcrumbs.umd.js.map +1 -1
  14. package/bundles/taiga-ui-kit-components-calendar-month.umd.js +11 -20
  15. package/bundles/taiga-ui-kit-components-calendar-month.umd.js.map +1 -1
  16. package/bundles/taiga-ui-kit-components-calendar-range.umd.js +11 -20
  17. package/bundles/taiga-ui-kit-components-calendar-range.umd.js.map +1 -1
  18. package/bundles/taiga-ui-kit-components-carousel.umd.js +23 -32
  19. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  20. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js +11 -20
  21. package/bundles/taiga-ui-kit-components-checkbox-block.umd.js.map +1 -1
  22. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js +11 -20
  23. package/bundles/taiga-ui-kit-components-checkbox-labeled.umd.js.map +1 -1
  24. package/bundles/taiga-ui-kit-components-checkbox.umd.js +12 -21
  25. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  26. package/bundles/taiga-ui-kit-components-combo-box.umd.js +17 -26
  27. package/bundles/taiga-ui-kit-components-combo-box.umd.js.map +1 -1
  28. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js +17 -26
  29. package/bundles/taiga-ui-kit-components-data-list-wrapper.umd.js.map +1 -1
  30. package/bundles/taiga-ui-kit-components-elastic-container.umd.js +10 -10
  31. package/bundles/taiga-ui-kit-components-files.umd.js +14 -23
  32. package/bundles/taiga-ui-kit-components-files.umd.js.map +1 -1
  33. package/bundles/taiga-ui-kit-components-filter.umd.js +11 -20
  34. package/bundles/taiga-ui-kit-components-filter.umd.js.map +1 -1
  35. package/bundles/taiga-ui-kit-components-input-copy.umd.js +14 -23
  36. package/bundles/taiga-ui-kit-components-input-copy.umd.js.map +1 -1
  37. package/bundles/taiga-ui-kit-components-input-count.umd.js +22 -33
  38. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  39. package/bundles/taiga-ui-kit-components-input-date-range.umd.js +14 -23
  40. package/bundles/taiga-ui-kit-components-input-date-range.umd.js.map +1 -1
  41. package/bundles/taiga-ui-kit-components-input-date-time.umd.js +14 -23
  42. package/bundles/taiga-ui-kit-components-input-date-time.umd.js.map +1 -1
  43. package/bundles/taiga-ui-kit-components-input-date.umd.js +14 -23
  44. package/bundles/taiga-ui-kit-components-input-date.umd.js.map +1 -1
  45. package/bundles/taiga-ui-kit-components-input-files.umd.js +17 -26
  46. package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
  47. package/bundles/taiga-ui-kit-components-input-inline.umd.js +11 -20
  48. package/bundles/taiga-ui-kit-components-input-inline.umd.js.map +1 -1
  49. package/bundles/taiga-ui-kit-components-input-month-range.umd.js +14 -23
  50. package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
  51. package/bundles/taiga-ui-kit-components-input-month.umd.js +14 -23
  52. package/bundles/taiga-ui-kit-components-input-month.umd.js.map +1 -1
  53. package/bundles/taiga-ui-kit-components-input-number.umd.js +14 -23
  54. package/bundles/taiga-ui-kit-components-input-number.umd.js.map +1 -1
  55. package/bundles/taiga-ui-kit-components-input-password.umd.js +14 -23
  56. package/bundles/taiga-ui-kit-components-input-password.umd.js.map +1 -1
  57. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +37 -46
  58. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  59. package/bundles/taiga-ui-kit-components-input-phone.umd.js +14 -23
  60. package/bundles/taiga-ui-kit-components-input-phone.umd.js.map +1 -1
  61. package/bundles/taiga-ui-kit-components-input-range.umd.js +25 -61
  62. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  63. package/bundles/taiga-ui-kit-components-input-slider.umd.js +11 -20
  64. package/bundles/taiga-ui-kit-components-input-slider.umd.js.map +1 -1
  65. package/bundles/taiga-ui-kit-components-input-tag.umd.js +19 -25
  66. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  67. package/bundles/taiga-ui-kit-components-input-time.umd.js +11 -20
  68. package/bundles/taiga-ui-kit-components-input-time.umd.js.map +1 -1
  69. package/bundles/taiga-ui-kit-components-input-year.umd.js +14 -23
  70. package/bundles/taiga-ui-kit-components-input-year.umd.js.map +1 -1
  71. package/bundles/taiga-ui-kit-components-input.umd.js +14 -23
  72. package/bundles/taiga-ui-kit-components-input.umd.js.map +1 -1
  73. package/bundles/taiga-ui-kit-components-island.umd.js +11 -20
  74. package/bundles/taiga-ui-kit-components-island.umd.js.map +1 -1
  75. package/bundles/taiga-ui-kit-components-items-with-more.umd.js +20 -29
  76. package/bundles/taiga-ui-kit-components-items-with-more.umd.js.map +1 -1
  77. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +17 -26
  78. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  79. package/bundles/taiga-ui-kit-components-marker-icon.umd.js +11 -20
  80. package/bundles/taiga-ui-kit-components-marker-icon.umd.js.map +1 -1
  81. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js +11 -20
  82. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js.map +1 -1
  83. package/bundles/taiga-ui-kit-components-multi-select.umd.js +20 -29
  84. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  85. package/bundles/taiga-ui-kit-components-pagination.umd.js +11 -20
  86. package/bundles/taiga-ui-kit-components-pagination.umd.js.map +1 -1
  87. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js +17 -26
  88. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js.map +1 -1
  89. package/bundles/taiga-ui-kit-components-progress.umd.js +23 -32
  90. package/bundles/taiga-ui-kit-components-progress.umd.js.map +1 -1
  91. package/bundles/taiga-ui-kit-components-prompt.umd.js +7 -7
  92. package/bundles/taiga-ui-kit-components-push.umd.js +23 -32
  93. package/bundles/taiga-ui-kit-components-push.umd.js.map +1 -1
  94. package/bundles/taiga-ui-kit-components-radio-block.umd.js +11 -20
  95. package/bundles/taiga-ui-kit-components-radio-block.umd.js.map +1 -1
  96. package/bundles/taiga-ui-kit-components-radio-group.umd.js +11 -20
  97. package/bundles/taiga-ui-kit-components-radio-group.umd.js.map +1 -1
  98. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js +11 -20
  99. package/bundles/taiga-ui-kit-components-radio-labeled.umd.js.map +1 -1
  100. package/bundles/taiga-ui-kit-components-radio-list.umd.js +11 -20
  101. package/bundles/taiga-ui-kit-components-radio-list.umd.js.map +1 -1
  102. package/bundles/taiga-ui-kit-components-radio.umd.js +11 -20
  103. package/bundles/taiga-ui-kit-components-radio.umd.js.map +1 -1
  104. package/bundles/taiga-ui-kit-components-range.umd.js +14 -23
  105. package/bundles/taiga-ui-kit-components-range.umd.js.map +1 -1
  106. package/bundles/taiga-ui-kit-components-rating.umd.js +11 -20
  107. package/bundles/taiga-ui-kit-components-rating.umd.js.map +1 -1
  108. package/bundles/taiga-ui-kit-components-routable-dialog.umd.js +452 -0
  109. package/bundles/taiga-ui-kit-components-routable-dialog.umd.js.map +1 -0
  110. package/bundles/taiga-ui-kit-components-select-option.umd.js +7 -7
  111. package/bundles/taiga-ui-kit-components-select.umd.js +23 -32
  112. package/bundles/taiga-ui-kit-components-select.umd.js.map +1 -1
  113. package/bundles/taiga-ui-kit-components-slider.umd.js +20 -29
  114. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  115. package/bundles/taiga-ui-kit-components-stepper.umd.js +14 -23
  116. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  117. package/bundles/taiga-ui-kit-components-tabs.umd.js +27 -36
  118. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  119. package/bundles/taiga-ui-kit-components-tag.umd.js +11 -20
  120. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  121. package/bundles/taiga-ui-kit-components-text-area.umd.js +22 -28
  122. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  123. package/bundles/taiga-ui-kit-components-tiles.umd.js +17 -26
  124. package/bundles/taiga-ui-kit-components-tiles.umd.js.map +1 -1
  125. package/bundles/taiga-ui-kit-components-toggle.umd.js +11 -20
  126. package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
  127. package/bundles/taiga-ui-kit-components-tree.umd.js +40 -43
  128. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  129. package/bundles/taiga-ui-kit-components.umd.js +10 -4
  130. package/bundles/taiga-ui-kit-components.umd.js.map +1 -1
  131. package/bundles/taiga-ui-kit-constants.umd.js +4 -13
  132. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  133. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js +11 -20
  134. package/bundles/taiga-ui-kit-directives-data-list-dropdown-manager.umd.js.map +1 -1
  135. package/bundles/taiga-ui-kit-directives-highlight.umd.js +11 -20
  136. package/bundles/taiga-ui-kit-directives-highlight.umd.js.map +1 -1
  137. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js +14 -23
  138. package/bundles/taiga-ui-kit-directives-lazy-loading.umd.js.map +1 -1
  139. package/bundles/taiga-ui-kit-directives-mask.umd.js +7 -7
  140. package/bundles/taiga-ui-kit-directives-present.umd.js +7 -7
  141. package/bundles/taiga-ui-kit-directives-project-class.umd.js +11 -20
  142. package/bundles/taiga-ui-kit-directives-project-class.umd.js.map +1 -1
  143. package/bundles/taiga-ui-kit-directives-unfinished-validator.umd.js +7 -7
  144. package/bundles/taiga-ui-kit-directives-value-accessor.umd.js +7 -7
  145. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js +11 -20
  146. package/bundles/taiga-ui-kit-internal-primitive-calendar-range.umd.js.map +1 -1
  147. package/bundles/taiga-ui-kit-pipes-field-error.umd.js +14 -23
  148. package/bundles/taiga-ui-kit-pipes-field-error.umd.js.map +1 -1
  149. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js +14 -23
  150. package/bundles/taiga-ui-kit-pipes-filter-by-input.umd.js.map +1 -1
  151. package/bundles/taiga-ui-kit-pipes-sort-countries.umd.js +11 -20
  152. package/bundles/taiga-ui-kit-pipes-sort-countries.umd.js.map +1 -1
  153. package/bundles/taiga-ui-kit-pipes-stringify-content.umd.js +7 -7
  154. package/bundles/taiga-ui-kit-pipes-stringify.umd.js +7 -7
  155. package/bundles/taiga-ui-kit-pipes-to-year.umd.js +7 -7
  156. package/bundles/taiga-ui-kit-utils-mask.umd.js +4 -13
  157. package/bundles/taiga-ui-kit-utils-mask.umd.js.map +1 -1
  158. package/bundles/taiga-ui-kit-utils-math.umd.js +4 -13
  159. package/bundles/taiga-ui-kit-utils-math.umd.js.map +1 -1
  160. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js +4 -13
  161. package/bundles/taiga-ui-kit-utils-miscellaneous.umd.js.map +1 -1
  162. package/components/index.d.ts +1 -0
  163. package/components/input-count/input-count.component.d.ts +4 -5
  164. package/components/input-phone-international/input-phone-international.component.d.ts +11 -3
  165. package/components/input-phone-international/input-phone-international.module.d.ts +1 -1
  166. package/components/input-range/input-range.component.d.ts +3 -7
  167. package/components/input-range/input-range.module.d.ts +1 -1
  168. package/components/input-tag/input-tag.component.d.ts +3 -3
  169. package/components/routable-dialog/generate-dialogable-route.d.ts +6 -0
  170. package/components/routable-dialog/index.d.ts +3 -0
  171. package/components/routable-dialog/package.json +10 -0
  172. package/components/routable-dialog/routable-dialog.component.d.ts +14 -0
  173. package/components/routable-dialog/routable-dialog.module.d.ts +7 -0
  174. package/components/routable-dialog/taiga-ui-kit-components-routable-dialog.d.ts +5 -0
  175. package/components/text-area/text-area.component.d.ts +3 -3
  176. package/components/tree/components/tree/tree.component.d.ts +1 -0
  177. package/components/tree/components/tree-item/tree-item.component.d.ts +1 -0
  178. package/esm2015/components/accordion/accordion-item/accordion-item-content.directive.js +3 -3
  179. package/esm2015/components/accordion/accordion-item/accordion-item-eager-content.directive.js +3 -3
  180. package/esm2015/components/accordion/accordion-item/accordion-item.component.js +3 -3
  181. package/esm2015/components/accordion/accordion.component.js +3 -3
  182. package/esm2015/components/accordion/accordion.module.js +4 -4
  183. package/esm2015/components/action/action.component.js +3 -3
  184. package/esm2015/components/action/action.module.js +4 -4
  185. package/esm2015/components/arrow/arrow.component.js +3 -3
  186. package/esm2015/components/arrow/arrow.module.js +4 -4
  187. package/esm2015/components/avatar/avatar.component.js +3 -3
  188. package/esm2015/components/avatar/avatar.module.js +4 -4
  189. package/esm2015/components/badge/badge.component.js +3 -3
  190. package/esm2015/components/badge/badge.module.js +4 -4
  191. package/esm2015/components/badged-content/badged-content.component.js +3 -3
  192. package/esm2015/components/badged-content/badged-content.module.js +4 -4
  193. package/esm2015/components/breadcrumbs/breadcrumbs.component.js +3 -3
  194. package/esm2015/components/breadcrumbs/breadcrumbs.module.js +4 -4
  195. package/esm2015/components/calendar-month/calendar-month.component.js +3 -3
  196. package/esm2015/components/calendar-month/calendar-month.module.js +4 -4
  197. package/esm2015/components/calendar-range/calendar-range.component.js +3 -3
  198. package/esm2015/components/calendar-range/calendar-range.module.js +4 -4
  199. package/esm2015/components/carousel/carousel-autoscroll.directive.js +3 -3
  200. package/esm2015/components/carousel/carousel-buttons.directive.js +3 -3
  201. package/esm2015/components/carousel/carousel-scroll.directive.js +3 -3
  202. package/esm2015/components/carousel/carousel.component.js +3 -3
  203. package/esm2015/components/carousel/carousel.directive.js +3 -3
  204. package/esm2015/components/carousel/carousel.module.js +4 -4
  205. package/esm2015/components/checkbox/checkbox.component.js +4 -4
  206. package/esm2015/components/checkbox/checkbox.module.js +4 -4
  207. package/esm2015/components/checkbox-block/checkbox-block.component.js +3 -3
  208. package/esm2015/components/checkbox-block/checkbox-block.module.js +4 -4
  209. package/esm2015/components/checkbox-labeled/checkbox-labeled.component.js +3 -3
  210. package/esm2015/components/checkbox-labeled/checkbox-labeled.module.js +4 -4
  211. package/esm2015/components/combo-box/combo-box-strict.directive.js +3 -3
  212. package/esm2015/components/combo-box/combo-box.component.js +3 -3
  213. package/esm2015/components/combo-box/combo-box.directive.js +3 -3
  214. package/esm2015/components/combo-box/combo-box.module.js +4 -4
  215. package/esm2015/components/data-list-wrapper/data-list-group-wrapper.component.js +3 -3
  216. package/esm2015/components/data-list-wrapper/data-list-wrapper.component.js +3 -3
  217. package/esm2015/components/data-list-wrapper/data-list-wrapper.js +3 -3
  218. package/esm2015/components/data-list-wrapper/data-list-wrapper.module.js +4 -4
  219. package/esm2015/components/elastic-container/elastic-container.component.js +3 -3
  220. package/esm2015/components/elastic-container/elastic-container.directive.js +3 -3
  221. package/esm2015/components/elastic-container/elastic-container.module.js +4 -4
  222. package/esm2015/components/files/file/file.component.js +3 -3
  223. package/esm2015/components/files/files.component.js +3 -3
  224. package/esm2015/components/files/files.module.js +4 -4
  225. package/esm2015/components/filter/filter.component.js +3 -3
  226. package/esm2015/components/filter/filter.module.js +4 -4
  227. package/esm2015/components/index.js +2 -1
  228. package/esm2015/components/input/input.component.js +3 -3
  229. package/esm2015/components/input/input.directive.js +3 -3
  230. package/esm2015/components/input/input.module.js +4 -4
  231. package/esm2015/components/input-copy/input-copy.component.js +3 -3
  232. package/esm2015/components/input-copy/input-copy.directive.js +3 -3
  233. package/esm2015/components/input-copy/input-copy.module.js +4 -4
  234. package/esm2015/components/input-count/input-count.component.js +13 -15
  235. package/esm2015/components/input-count/input-count.directive.js +3 -3
  236. package/esm2015/components/input-count/input-count.module.js +4 -4
  237. package/esm2015/components/input-date/input-date.component.js +3 -3
  238. package/esm2015/components/input-date/input-date.directive.js +3 -3
  239. package/esm2015/components/input-date/input-date.module.js +4 -4
  240. package/esm2015/components/input-date-range/input-date-range.component.js +3 -3
  241. package/esm2015/components/input-date-range/input-date-range.directive.js +3 -3
  242. package/esm2015/components/input-date-range/input-date-range.module.js +4 -4
  243. package/esm2015/components/input-date-time/input-date-time.component.js +3 -3
  244. package/esm2015/components/input-date-time/input-date-time.directive.js +3 -3
  245. package/esm2015/components/input-date-time/input-date-time.module.js +4 -4
  246. package/esm2015/components/input-files/input-files.component.js +3 -3
  247. package/esm2015/components/input-files/input-files.directive.js +3 -3
  248. package/esm2015/components/input-files/input-files.module.js +4 -4
  249. package/esm2015/components/input-files/max-size-rejection-error.pipe.js +3 -3
  250. package/esm2015/components/input-inline/input-inline.component.js +3 -3
  251. package/esm2015/components/input-inline/input-inline.module.js +4 -4
  252. package/esm2015/components/input-month/input-month.component.js +3 -3
  253. package/esm2015/components/input-month/input-month.directive.js +3 -3
  254. package/esm2015/components/input-month/input-month.module.js +4 -4
  255. package/esm2015/components/input-month-range/input-month-range.component.js +3 -3
  256. package/esm2015/components/input-month-range/input-month-range.directive.js +3 -3
  257. package/esm2015/components/input-month-range/input-month-range.module.js +4 -4
  258. package/esm2015/components/input-number/input-number.component.js +3 -3
  259. package/esm2015/components/input-number/input-number.directive.js +3 -3
  260. package/esm2015/components/input-number/input-number.module.js +4 -4
  261. package/esm2015/components/input-password/input-password.component.js +3 -3
  262. package/esm2015/components/input-password/input-password.directive.js +3 -3
  263. package/esm2015/components/input-password/input-password.module.js +4 -4
  264. package/esm2015/components/input-phone/input-phone.component.js +3 -3
  265. package/esm2015/components/input-phone/input-phone.directive.js +3 -3
  266. package/esm2015/components/input-phone/input-phone.module.js +4 -4
  267. package/esm2015/components/input-phone-international/input-phone-international.component.js +27 -29
  268. package/esm2015/components/input-phone-international/input-phone-international.module.js +10 -7
  269. package/esm2015/components/input-range/input-range.component.js +11 -35
  270. package/esm2015/components/input-range/input-range.module.js +12 -9
  271. package/esm2015/components/input-slider/input-slider.component.js +3 -3
  272. package/esm2015/components/input-slider/input-slider.module.js +4 -4
  273. package/esm2015/components/input-tag/input-tag.component.js +9 -10
  274. package/esm2015/components/input-tag/input-tag.module.js +4 -4
  275. package/esm2015/components/input-time/input-time.component.js +3 -3
  276. package/esm2015/components/input-time/input-time.module.js +4 -4
  277. package/esm2015/components/input-year/input-year.component.js +3 -3
  278. package/esm2015/components/input-year/input-year.directive.js +3 -3
  279. package/esm2015/components/input-year/input-year.module.js +4 -4
  280. package/esm2015/components/island/island.component.js +3 -3
  281. package/esm2015/components/island/island.module.js +4 -4
  282. package/esm2015/components/items-with-more/items-with-more.component.js +3 -3
  283. package/esm2015/components/items-with-more/items-with-more.directive.js +3 -3
  284. package/esm2015/components/items-with-more/items-with-more.module.js +4 -4
  285. package/esm2015/components/items-with-more/items-with-more.service.js +3 -3
  286. package/esm2015/components/items-with-more/more.directive.js +3 -3
  287. package/esm2015/components/line-clamp/line-clamp-box.component.js +3 -3
  288. package/esm2015/components/line-clamp/line-clamp-position.directive.js +3 -3
  289. package/esm2015/components/line-clamp/line-clamp.component.js +3 -3
  290. package/esm2015/components/line-clamp/line-clamp.module.js +4 -4
  291. package/esm2015/components/marker-icon/marker-icon.component.js +3 -3
  292. package/esm2015/components/marker-icon/marker-icon.module.js +4 -4
  293. package/esm2015/components/multi-select/hide-selected.pipe.js +3 -3
  294. package/esm2015/components/multi-select/multi-select-group/multi-select-group.component.js +3 -3
  295. package/esm2015/components/multi-select/multi-select-group/multi-select-group.directive.js +3 -3
  296. package/esm2015/components/multi-select/multi-select.component.js +3 -3
  297. package/esm2015/components/multi-select/multi-select.module.js +4 -4
  298. package/esm2015/components/multi-select-option/multi-select-option.component.js +3 -3
  299. package/esm2015/components/multi-select-option/multi-select-option.module.js +4 -4
  300. package/esm2015/components/pagination/pagination.component.js +3 -3
  301. package/esm2015/components/pagination/pagination.module.js +4 -4
  302. package/esm2015/components/pdf-viewer/pdf-viewer.component.js +3 -3
  303. package/esm2015/components/pdf-viewer/pdf-viewer.directive.js +3 -3
  304. package/esm2015/components/pdf-viewer/pdf-viewer.module.js +4 -4
  305. package/esm2015/components/pdf-viewer/pdf-viewer.service.js +3 -3
  306. package/esm2015/components/progress/progress-bar/progress-bar.component.js +3 -3
  307. package/esm2015/components/progress/progress-bar/progress-color-segments.directive.js +3 -3
  308. package/esm2015/components/progress/progress-circle/progress-circle.component.js +3 -3
  309. package/esm2015/components/progress/progress-label/progress-label.component.js +3 -3
  310. package/esm2015/components/progress/progress-segmented/progress-segmented.component.js +3 -3
  311. package/esm2015/components/progress/progress.module.js +4 -4
  312. package/esm2015/components/prompt/prompt.component.js +3 -3
  313. package/esm2015/components/prompt/prompt.module.js +4 -4
  314. package/esm2015/components/push/push-alert.component.js +3 -3
  315. package/esm2015/components/push/push-alert.directive.js +3 -3
  316. package/esm2015/components/push/push.component.js +3 -3
  317. package/esm2015/components/push/push.directive.js +3 -3
  318. package/esm2015/components/push/push.module.js +4 -4
  319. package/esm2015/components/push/push.service.js +3 -3
  320. package/esm2015/components/radio/radio.component.js +3 -3
  321. package/esm2015/components/radio/radio.module.js +4 -4
  322. package/esm2015/components/radio-block/radio-block.component.js +3 -3
  323. package/esm2015/components/radio-block/radio-block.module.js +4 -4
  324. package/esm2015/components/radio-group/radio-group.component.js +3 -3
  325. package/esm2015/components/radio-group/radio-group.module.js +4 -4
  326. package/esm2015/components/radio-labeled/radio-labeled.component.js +3 -3
  327. package/esm2015/components/radio-labeled/radio-labeled.module.js +4 -4
  328. package/esm2015/components/radio-list/radio-list.component.js +3 -3
  329. package/esm2015/components/radio-list/radio-list.module.js +4 -4
  330. package/esm2015/components/range/range-change.directive.js +3 -3
  331. package/esm2015/components/range/range.component.js +3 -3
  332. package/esm2015/components/range/range.module.js +4 -4
  333. package/esm2015/components/rating/rating.component.js +3 -3
  334. package/esm2015/components/rating/rating.module.js +4 -4
  335. package/esm2015/components/routable-dialog/generate-dialogable-route.js +19 -0
  336. package/esm2015/components/routable-dialog/index.js +4 -0
  337. package/esm2015/components/routable-dialog/routable-dialog.component.js +65 -0
  338. package/esm2015/components/routable-dialog/routable-dialog.module.js +16 -0
  339. package/esm2015/components/routable-dialog/taiga-ui-kit-components-routable-dialog.js +5 -0
  340. package/esm2015/components/select/native-select/native-select-group.component.js +3 -3
  341. package/esm2015/components/select/native-select/native-select.component.js +3 -3
  342. package/esm2015/components/select/native-select/native-select.js +3 -3
  343. package/esm2015/components/select/select.component.js +3 -3
  344. package/esm2015/components/select/select.directive.js +3 -3
  345. package/esm2015/components/select/select.module.js +4 -4
  346. package/esm2015/components/select-option/select-option.component.js +3 -3
  347. package/esm2015/components/select-option/select-option.module.js +4 -4
  348. package/esm2015/components/slider/helpers/slider-key-steps.directive.js +3 -3
  349. package/esm2015/components/slider/helpers/slider-readonly.directive.js +3 -3
  350. package/esm2015/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.js +3 -3
  351. package/esm2015/components/slider/slider.component.js +3 -3
  352. package/esm2015/components/slider/slider.module.js +4 -4
  353. package/esm2015/components/stepper/step/step.component.js +3 -3
  354. package/esm2015/components/stepper/stepper.component.js +3 -3
  355. package/esm2015/components/stepper/stepper.module.js +4 -4
  356. package/esm2015/components/tabs/tab/tab.component.js +3 -3
  357. package/esm2015/components/tabs/tabs/tabs.component.js +3 -3
  358. package/esm2015/components/tabs/tabs-vertical/tabs-vertical.component.js +3 -3
  359. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +5 -5
  360. package/esm2015/components/tabs/tabs.directive.js +3 -3
  361. package/esm2015/components/tabs/tabs.module.js +4 -4
  362. package/esm2015/components/tabs/underline/underline.component.js +3 -3
  363. package/esm2015/components/tag/tag.component.js +3 -3
  364. package/esm2015/components/tag/tag.module.js +4 -4
  365. package/esm2015/components/text-area/text-area.component.js +9 -10
  366. package/esm2015/components/text-area/text-area.directive.js +3 -3
  367. package/esm2015/components/text-area/text-area.module.js +4 -4
  368. package/esm2015/components/tiles/tile-handle.directive.js +3 -3
  369. package/esm2015/components/tiles/tile.component.js +3 -3
  370. package/esm2015/components/tiles/tiles.component.js +3 -3
  371. package/esm2015/components/tiles/tiles.module.js +4 -4
  372. package/esm2015/components/toggle/toggle.component.js +3 -3
  373. package/esm2015/components/toggle/toggle.module.js +4 -4
  374. package/esm2015/components/tree/components/tree/tree.component.js +9 -6
  375. package/esm2015/components/tree/components/tree-item/tree-item.component.js +7 -4
  376. package/esm2015/components/tree/components/tree-item-content/tree-item-content.component.js +3 -3
  377. package/esm2015/components/tree/directives/tree-children.directive.js +3 -3
  378. package/esm2015/components/tree/directives/tree-controller.directive.js +3 -3
  379. package/esm2015/components/tree/directives/tree-item-controller.directive.js +3 -3
  380. package/esm2015/components/tree/directives/tree-node.directive.js +3 -3
  381. package/esm2015/components/tree/misc/tree.service.js +3 -3
  382. package/esm2015/components/tree/tree.module.js +4 -4
  383. package/esm2015/directives/data-list-dropdown-manager/data-list-dropdown-manager.directive.js +3 -3
  384. package/esm2015/directives/data-list-dropdown-manager/data-list-dropdown-manager.module.js +4 -4
  385. package/esm2015/directives/highlight/highlight.directive.js +3 -3
  386. package/esm2015/directives/highlight/highlight.module.js +4 -4
  387. package/esm2015/directives/lazy-loading/lazy-loading.directive.js +3 -3
  388. package/esm2015/directives/lazy-loading/lazy-loading.module.js +4 -4
  389. package/esm2015/directives/lazy-loading/lazy-loading.service.js +3 -3
  390. package/esm2015/directives/mask/legacy-mask.js +7 -7
  391. package/esm2015/directives/present/present.directive.js +3 -3
  392. package/esm2015/directives/present/present.module.js +4 -4
  393. package/esm2015/directives/project-class/project-class.directive.js +3 -3
  394. package/esm2015/directives/project-class/project-class.module.js +4 -4
  395. package/esm2015/directives/unfinished-validator/unfinished-validator.directive.js +3 -3
  396. package/esm2015/directives/unfinished-validator/unfinished-validator.module.js +4 -4
  397. package/esm2015/directives/value-accessor/value-accessor.directive.js +3 -3
  398. package/esm2015/directives/value-accessor/value-accessor.module.js +4 -4
  399. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.component.js +3 -3
  400. package/esm2015/internal/primitive-calendar-range/primitive-calendar-range.module.js +4 -4
  401. package/esm2015/pipes/field-error/field-error-content-pipe.js +3 -3
  402. package/esm2015/pipes/field-error/field-error-pipe.js +3 -3
  403. package/esm2015/pipes/field-error/field-error.module.js +4 -4
  404. package/esm2015/pipes/filter-by-input/filter-by-input-with.pipe.js +3 -3
  405. package/esm2015/pipes/filter-by-input/filter-by-input.module.js +4 -4
  406. package/esm2015/pipes/filter-by-input/filter-by-input.pipe.js +3 -3
  407. package/esm2015/pipes/sort-countries/sort-countries.module.js +4 -4
  408. package/esm2015/pipes/sort-countries/sort-countries.pipe.js +3 -3
  409. package/esm2015/pipes/stringify/stringify.module.js +4 -4
  410. package/esm2015/pipes/stringify/stringify.pipe.js +3 -3
  411. package/esm2015/pipes/stringify-content/stringify-content.module.js +4 -4
  412. package/esm2015/pipes/stringify-content/stringify-content.pipe.js +3 -3
  413. package/esm2015/pipes/to-year/to-year.module.js +4 -4
  414. package/esm2015/pipes/to-year/to-year.pipe.js +3 -3
  415. package/fesm2015/taiga-ui-kit-components-accordion.js +16 -16
  416. package/fesm2015/taiga-ui-kit-components-action.js +7 -7
  417. package/fesm2015/taiga-ui-kit-components-arrow.js +7 -7
  418. package/fesm2015/taiga-ui-kit-components-avatar.js +7 -7
  419. package/fesm2015/taiga-ui-kit-components-badge.js +7 -7
  420. package/fesm2015/taiga-ui-kit-components-badged-content.js +7 -7
  421. package/fesm2015/taiga-ui-kit-components-breadcrumbs.js +7 -7
  422. package/fesm2015/taiga-ui-kit-components-calendar-month.js +7 -7
  423. package/fesm2015/taiga-ui-kit-components-calendar-range.js +7 -7
  424. package/fesm2015/taiga-ui-kit-components-carousel.js +19 -19
  425. package/fesm2015/taiga-ui-kit-components-checkbox-block.js +7 -7
  426. package/fesm2015/taiga-ui-kit-components-checkbox-labeled.js +7 -7
  427. package/fesm2015/taiga-ui-kit-components-checkbox.js +8 -8
  428. package/fesm2015/taiga-ui-kit-components-checkbox.js.map +1 -1
  429. package/fesm2015/taiga-ui-kit-components-combo-box.js +13 -13
  430. package/fesm2015/taiga-ui-kit-components-data-list-wrapper.js +13 -13
  431. package/fesm2015/taiga-ui-kit-components-elastic-container.js +10 -10
  432. package/fesm2015/taiga-ui-kit-components-files.js +10 -10
  433. package/fesm2015/taiga-ui-kit-components-filter.js +7 -7
  434. package/fesm2015/taiga-ui-kit-components-input-copy.js +10 -10
  435. package/fesm2015/taiga-ui-kit-components-input-count.js +19 -21
  436. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  437. package/fesm2015/taiga-ui-kit-components-input-date-range.js +10 -10
  438. package/fesm2015/taiga-ui-kit-components-input-date-time.js +10 -10
  439. package/fesm2015/taiga-ui-kit-components-input-date.js +10 -10
  440. package/fesm2015/taiga-ui-kit-components-input-files.js +13 -13
  441. package/fesm2015/taiga-ui-kit-components-input-inline.js +7 -7
  442. package/fesm2015/taiga-ui-kit-components-input-month-range.js +10 -10
  443. package/fesm2015/taiga-ui-kit-components-input-month.js +10 -10
  444. package/fesm2015/taiga-ui-kit-components-input-number.js +10 -10
  445. package/fesm2015/taiga-ui-kit-components-input-password.js +10 -10
  446. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +34 -33
  447. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  448. package/fesm2015/taiga-ui-kit-components-input-phone.js +10 -10
  449. package/fesm2015/taiga-ui-kit-components-input-range.js +20 -41
  450. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  451. package/fesm2015/taiga-ui-kit-components-input-slider.js +7 -7
  452. package/fesm2015/taiga-ui-kit-components-input-tag.js +12 -13
  453. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  454. package/fesm2015/taiga-ui-kit-components-input-time.js +7 -7
  455. package/fesm2015/taiga-ui-kit-components-input-year.js +10 -10
  456. package/fesm2015/taiga-ui-kit-components-input.js +10 -10
  457. package/fesm2015/taiga-ui-kit-components-island.js +7 -7
  458. package/fesm2015/taiga-ui-kit-components-items-with-more.js +16 -16
  459. package/fesm2015/taiga-ui-kit-components-line-clamp.js +13 -13
  460. package/fesm2015/taiga-ui-kit-components-marker-icon.js +7 -7
  461. package/fesm2015/taiga-ui-kit-components-multi-select-option.js +7 -7
  462. package/fesm2015/taiga-ui-kit-components-multi-select.js +16 -16
  463. package/fesm2015/taiga-ui-kit-components-pagination.js +7 -7
  464. package/fesm2015/taiga-ui-kit-components-pdf-viewer.js +13 -13
  465. package/fesm2015/taiga-ui-kit-components-progress.js +19 -19
  466. package/fesm2015/taiga-ui-kit-components-prompt.js +7 -7
  467. package/fesm2015/taiga-ui-kit-components-push.js +19 -19
  468. package/fesm2015/taiga-ui-kit-components-radio-block.js +7 -7
  469. package/fesm2015/taiga-ui-kit-components-radio-group.js +7 -7
  470. package/fesm2015/taiga-ui-kit-components-radio-labeled.js +7 -7
  471. package/fesm2015/taiga-ui-kit-components-radio-list.js +7 -7
  472. package/fesm2015/taiga-ui-kit-components-radio.js +7 -7
  473. package/fesm2015/taiga-ui-kit-components-range.js +10 -10
  474. package/fesm2015/taiga-ui-kit-components-rating.js +7 -7
  475. package/fesm2015/taiga-ui-kit-components-routable-dialog.js +103 -0
  476. package/fesm2015/taiga-ui-kit-components-routable-dialog.js.map +1 -0
  477. package/fesm2015/taiga-ui-kit-components-select-option.js +7 -7
  478. package/fesm2015/taiga-ui-kit-components-select.js +19 -19
  479. package/fesm2015/taiga-ui-kit-components-slider.js +16 -16
  480. package/fesm2015/taiga-ui-kit-components-stepper.js +10 -10
  481. package/fesm2015/taiga-ui-kit-components-tabs.js +23 -23
  482. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  483. package/fesm2015/taiga-ui-kit-components-tag.js +7 -7
  484. package/fesm2015/taiga-ui-kit-components-text-area.js +15 -16
  485. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  486. package/fesm2015/taiga-ui-kit-components-tiles.js +13 -13
  487. package/fesm2015/taiga-ui-kit-components-toggle.js +7 -7
  488. package/fesm2015/taiga-ui-kit-components-tree.js +36 -30
  489. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  490. package/fesm2015/taiga-ui-kit-components.js +1 -0
  491. package/fesm2015/taiga-ui-kit-components.js.map +1 -1
  492. package/fesm2015/taiga-ui-kit-directives-data-list-dropdown-manager.js +7 -7
  493. package/fesm2015/taiga-ui-kit-directives-highlight.js +7 -7
  494. package/fesm2015/taiga-ui-kit-directives-lazy-loading.js +10 -10
  495. package/fesm2015/taiga-ui-kit-directives-mask.js +7 -7
  496. package/fesm2015/taiga-ui-kit-directives-present.js +7 -7
  497. package/fesm2015/taiga-ui-kit-directives-project-class.js +7 -7
  498. package/fesm2015/taiga-ui-kit-directives-unfinished-validator.js +7 -7
  499. package/fesm2015/taiga-ui-kit-directives-value-accessor.js +7 -7
  500. package/fesm2015/taiga-ui-kit-internal-primitive-calendar-range.js +7 -7
  501. package/fesm2015/taiga-ui-kit-pipes-field-error.js +10 -10
  502. package/fesm2015/taiga-ui-kit-pipes-filter-by-input.js +10 -10
  503. package/fesm2015/taiga-ui-kit-pipes-sort-countries.js +7 -7
  504. package/fesm2015/taiga-ui-kit-pipes-stringify-content.js +7 -7
  505. package/fesm2015/taiga-ui-kit-pipes-stringify.js +7 -7
  506. package/fesm2015/taiga-ui-kit-pipes-to-year.js +7 -7
  507. package/package.json +6 -6
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, Inject, Input, Optional, Output, Self, ViewChild, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { AbstractTuiControl, CHAR_PLUS, tuiAsControl, tuiAsFocusableItemAccessor, tuiDefaultProp, tuiPure, } from '@taiga-ui/cdk';
5
- import { TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TUI_SVG_OPTIONS, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
5
+ import { TUI_MASK_SYMBOLS_REGEXP, TUI_NON_DIGITS_REGEXP, TuiFlagPipe, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
6
6
  import { TuiCountryIsoCode } from '@taiga-ui/i18n';
7
7
  import { TUI_ARROW } from '@taiga-ui/kit/components/arrow';
8
8
  import { TuiInputPhoneComponent } from '@taiga-ui/kit/components/input-phone';
@@ -21,22 +21,24 @@ import * as i5 from "@angular/forms";
21
21
  import * as i6 from "@tinkoff/ng-polymorpheus";
22
22
  import * as i7 from "rxjs";
23
23
  export class TuiInputPhoneInternationalComponent extends AbstractTuiControl {
24
- constructor(control, changeDetectorRef, { path }, countriesNames$, countriesMasks, options) {
24
+ constructor(control, changeDetectorRef, countriesNames$, countriesMasks, options, flagPipe) {
25
25
  super(control, changeDetectorRef);
26
26
  this.countriesNames$ = countriesNames$;
27
27
  this.countriesMasks = countriesMasks;
28
28
  this.options = options;
29
- this.staticPath = null;
29
+ this.flagPipe = flagPipe;
30
30
  this.countries = this.options.countries;
31
31
  this.countryIsoCodeChange = new EventEmitter();
32
32
  this.countryIsoCode = this.options.countryIsoCode;
33
33
  this.open = false;
34
34
  this.arrow = TUI_ARROW;
35
35
  this.isoToCountryCodeMapper = item => this.isoToCountryCode(item);
36
- this.staticPath = path('tuiIcon').replace('tuiIcon.svg#tuiIcon', '');
37
36
  }
38
37
  set isoCode(code) {
39
38
  var _a;
39
+ if (this.countryIsoCode === code) {
40
+ return;
41
+ }
40
42
  (_a = this.inputPhoneComponent) === null || _a === void 0 ? void 0 : _a.writeValue(this.value);
41
43
  this.countryIsoCode = code;
42
44
  }
@@ -56,6 +58,10 @@ export class TuiInputPhoneInternationalComponent extends AbstractTuiControl {
56
58
  const countryCode = this.isoToCountryCode(this.countryIsoCode);
57
59
  return this.calculateMaskAfterCountryCode(this.countriesMasks[this.countryIsoCode], countryCode);
58
60
  }
61
+ /**
62
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
63
+ * TODO drop in v4.0
64
+ */
59
65
  get countryFlagPath() {
60
66
  return this.getFlagPath(this.countryIsoCode);
61
67
  }
@@ -74,24 +80,12 @@ export class TuiInputPhoneInternationalComponent extends AbstractTuiControl {
74
80
  this.updateCountryIsoCode(countryIsoCode);
75
81
  this.updateValue(`${CHAR_PLUS}${value}`);
76
82
  }
83
+ /**
84
+ * @deprecated use `<img [src]="countryIsoCode | tuiFlagPipe" />`
85
+ * TODO drop in v4.0
86
+ */
77
87
  getFlagPath(code) {
78
- switch (code) {
79
- case TuiCountryIsoCode.BL:
80
- case TuiCountryIsoCode.BQ:
81
- case TuiCountryIsoCode.CW:
82
- case TuiCountryIsoCode.GF:
83
- case TuiCountryIsoCode.GP:
84
- case TuiCountryIsoCode.MF:
85
- case TuiCountryIsoCode.MQ:
86
- case TuiCountryIsoCode.NC:
87
- case TuiCountryIsoCode.RE:
88
- case TuiCountryIsoCode.YT:
89
- return `${this.staticPath}${TuiCountryIsoCode.FR}.png`;
90
- case TuiCountryIsoCode.SX:
91
- return `${this.staticPath}${TuiCountryIsoCode.NL}.png`;
92
- default:
93
- return `${this.staticPath}${code}.png`;
94
- }
88
+ return this.flagPipe.transform(code);
95
89
  }
96
90
  onItemClick(isoCode) {
97
91
  this.open = false;
@@ -147,18 +141,20 @@ export class TuiInputPhoneInternationalComponent extends AbstractTuiControl {
147
141
  });
148
142
  }
149
143
  }
150
- TuiInputPhoneInternationalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_SVG_OPTIONS }, { token: TUI_COUNTRIES }, { token: TUI_COUNTRIES_MASKS }, { token: TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
151
- TuiInputPhoneInternationalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiInputPhoneInternationalComponent, selector: "tui-input-phone-international", inputs: { isoCode: ["countryIsoCode", "isoCode"], countries: "countries" }, outputs: { countryIsoCodeChange: "countryIsoCodeChange" }, host: { listeners: { "paste.capture.prevent.stop": "onPaste($event)", "drop.capture.prevent.stop": "onPaste($event)" } }, providers: [
144
+ TuiInputPhoneInternationalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_COUNTRIES }, { token: TUI_COUNTRIES_MASKS }, { token: TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS }, { token: TuiFlagPipe }], target: i0.ɵɵFactoryTarget.Component });
145
+ TuiInputPhoneInternationalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputPhoneInternationalComponent, selector: "tui-input-phone-international", inputs: { isoCode: ["countryIsoCode", "isoCode"], countries: "countries" }, outputs: { countryIsoCodeChange: "countryIsoCodeChange" }, host: { listeners: { "paste.capture.prevent.stop": "onPaste($event)", "drop.capture.prevent.stop": "onPaste($event)" } }, providers: [
152
146
  tuiAsFocusableItemAccessor(TuiInputPhoneInternationalComponent),
153
147
  tuiAsControl(TuiInputPhoneInternationalComponent),
154
- ], viewQueries: [{ propertyName: "inputPhoneComponent", first: true, predicate: TuiInputPhoneComponent, descendants: true }, { propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHintContent=\"\"\n tuiTextfieldPrefix=\"\"\n tuiTextfieldPostfix=\"\"\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldIcon]=\"icon\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [pseudoFocus]=\"open || null\"\n [readOnly]=\"readOnly\"\n ></tui-primitive-textfield>\n <tui-input-phone\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n <input\n tuiTextfield\n autocomplete=\"new-password\"\n />\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"getFlagPath(item)\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper : isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <!-- eslint-disable @html-eslint/require-img-alt -->\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryFlagPath\"\n />\n </ng-template>\n\n <ng-template #icon>\n <div\n tuiWrapper\n appearance=\"icon\"\n >\n <ng-container *polymorpheusOutlet=\"arrow\"></ng-container>\n </div>\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-country-select[data-size=m]{width:5.5rem}.t-country-select[data-size=s]{width:2rem}.t-country-select[data-size=s] .t-flag{margin-left:-1rem}.t-arrow-icon{position:relative;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer}:host._readonly .t-arrow-icon,:host._disabled .t-arrow-icon{pointer-events:none}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i2.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { type: i1.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { type: i1.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { type: i1.TuiTextfieldPrefixDirective, selector: "[tuiTextfieldPrefix]", inputs: ["tuiTextfieldPrefix"] }, { type: i1.TuiTextfieldPostfixDirective, selector: "[tuiTextfieldPostfix]", inputs: ["tuiTextfieldPostfix"] }, { type: i1.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { type: i1.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i2.TuiInputPhoneDirective, selector: "tui-input-phone" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i6.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i3.AsyncPipe, "tuiMapper": i4.TuiMapperPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
148
+ // TODO: for backward compatibility only. Drop in v4.0
149
+ TuiFlagPipe,
150
+ ], viewQueries: [{ propertyName: "inputPhoneComponent", first: true, predicate: TuiInputPhoneComponent, descendants: true }, { propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-hosted-dropdown\n *ngIf=\"countriesNames$ | async as countriesNames\"\n class=\"t-hosted-dropdown\"\n [content]=\"dropdown\"\n [canOpen]=\"!readOnly\"\n [(open)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <div tuiGroup>\n <tui-primitive-textfield\n tuiHintContent=\"\"\n tuiTextfieldPrefix=\"\"\n tuiTextfieldPostfix=\"\"\n class=\"t-country-select tui-group__auto-width-item\"\n [tuiTextfieldCustomContent]=\"countryValueContent\"\n [tuiTextfieldLabelOutside]=\"true\"\n [tuiTextfieldIcon]=\"icon\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [editable]=\"false\"\n [pseudoFocus]=\"open || null\"\n [readOnly]=\"readOnly\"\n ></tui-primitive-textfield>\n <tui-input-phone\n class=\"t-input-phone tui-group__auto-width-item\"\n [ngModel]=\"value\"\n [disabled]=\"disabled\"\n [focusable]=\"focusable\"\n [countryCode]=\"inputPhoneCountryCode\"\n [phoneMaskAfterCountryCode]=\"phoneMaskAfterCountryCode\"\n [readOnly]=\"readOnly\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n (ngModelChange)=\"onModelChange($event)\"\n >\n <ng-content></ng-content>\n <input\n tuiTextfield\n autocomplete=\"new-password\"\n />\n </tui-input-phone>\n </div>\n\n <ng-template #dropdown>\n <tui-data-list>\n <button\n *ngFor=\"let item of countries\"\n tuiOption\n (click)=\"onItemClick(item)\"\n >\n <img\n alt=\"\"\n class=\"t-country-item-flag\"\n [src]=\"item | tuiFlag\"\n />\n <span class=\"t-country-item-name\">\n {{ countriesNames[item] }}\n </span>\n <span class=\"t-country-item-code\">\n {{ item | tuiMapper : isoToCountryCodeMapper }}\n </span>\n </button>\n </tui-data-list>\n </ng-template>\n\n <ng-template #countryValueContent>\n <!-- eslint-disable @html-eslint/require-img-alt -->\n <img\n class=\"t-flag\"\n [alt]=\"countriesNames[countryIsoCode]\"\n [src]=\"countryIsoCode | tuiFlag\"\n />\n </ng-template>\n\n <ng-template #icon>\n <div\n tuiWrapper\n appearance=\"icon\"\n >\n <ng-container *polymorpheusOutlet=\"arrow\"></ng-container>\n </div>\n </ng-template>\n</tui-hosted-dropdown>\n", styles: [":host{display:block}:host._disabled{pointer-events:none}.t-hosted-dropdown{display:block}.t-country-select{width:5.625rem}.t-country-select:not(._readonly) ::ng-deep input:not(:disabled){cursor:pointer}.t-country-select._readonly ::ng-deep input{cursor:default}.t-country-select[data-size=m]{width:5.5rem}.t-country-select[data-size=s]{width:2rem}.t-country-select[data-size=s] .t-flag{margin-left:-1rem}.t-arrow-icon{position:relative;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer}:host._readonly .t-arrow-icon,:host._disabled .t-arrow-icon{pointer-events:none}.t-arrow-icon_open{transform:rotate(180deg)}.t-input-phone{flex:1}.t-flag{width:1.75rem;height:1.25rem;margin-left:-.5rem}.t-country-item-flag{width:1.75rem;height:1.25rem}.t-country-item-name{margin-left:.75rem;margin-right:auto}.t-country-item-code{color:var(--tui-text-02);margin-right:.25rem}\n"], components: [{ type: i1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "sided", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i2.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { type: i1.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { type: i1.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiGroupDirective, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "adaptive", "collapsed", "rounded", "size"] }, { type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i1.TuiHintOptionsDirective, selector: "[tuiHintContent]", inputs: ["tuiHintContent", "tuiHintDirection", "tuiHintAppearance", "tuiHintShowDelay", "tuiHintHideDelay"] }, { type: i1.TuiTextfieldPrefixDirective, selector: "[tuiTextfieldPrefix]", inputs: ["tuiTextfieldPrefix"] }, { type: i1.TuiTextfieldPostfixDirective, selector: "[tuiTextfieldPostfix]", inputs: ["tuiTextfieldPostfix"] }, { type: i1.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { type: i1.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { type: i1.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { type: i2.TuiInputPhoneDirective, selector: "tui-input-phone" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i6.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i3.AsyncPipe, "tuiFlag": i1.TuiFlagPipe, "tuiMapper": i4.TuiMapperPipe }, viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush });
155
151
  __decorate([
156
152
  tuiDefaultProp()
157
153
  ], TuiInputPhoneInternationalComponent.prototype, "isoCode", null);
158
154
  __decorate([
159
155
  tuiPure
160
156
  ], TuiInputPhoneInternationalComponent.prototype, "calculateMaskAfterCountryCode", null);
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalComponent, decorators: [{
162
158
  type: Component,
163
159
  args: [{
164
160
  selector: 'tui-input-phone-international',
@@ -168,6 +164,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
168
164
  providers: [
169
165
  tuiAsFocusableItemAccessor(TuiInputPhoneInternationalComponent),
170
166
  tuiAsControl(TuiInputPhoneInternationalComponent),
167
+ // TODO: for backward compatibility only. Drop in v4.0
168
+ TuiFlagPipe,
171
169
  ],
172
170
  viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER],
173
171
  }]
@@ -181,9 +179,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
181
179
  }] }, { type: i0.ChangeDetectorRef, decorators: [{
182
180
  type: Inject,
183
181
  args: [ChangeDetectorRef]
184
- }] }, { type: undefined, decorators: [{
185
- type: Inject,
186
- args: [TUI_SVG_OPTIONS]
187
182
  }] }, { type: i7.Observable, decorators: [{
188
183
  type: Inject,
189
184
  args: [TUI_COUNTRIES]
@@ -193,6 +188,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
193
188
  }] }, { type: undefined, decorators: [{
194
189
  type: Inject,
195
190
  args: [TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS]
191
+ }] }, { type: i1.TuiFlagPipe, decorators: [{
192
+ type: Inject,
193
+ args: [TuiFlagPipe]
196
194
  }] }]; }, propDecorators: { inputPhoneComponent: [{
197
195
  type: ViewChild,
198
196
  args: [TuiInputPhoneComponent]
@@ -213,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
213
211
  type: HostListener,
214
212
  args: ['drop.capture.prevent.stop', ['$event']]
215
213
  }], calculateMaskAfterCountryCode: [] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLGNBQWMsRUFHZCxPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsZUFBZSxFQUNmLDhCQUE4QixHQUtqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1B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OzRDQXZDaEMsbUJBQW1CO3NCQURuQyxTQUFTO3VCQUFDLHNCQUFzQjtnQkFJaEIsa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLDhCQUE4QjtnQkFPckMsT0FBTztzQkFGVixLQUFLO3VCQUFDLGdCQUFnQjtnQkFRdkIsU0FBUztzQkFEUixLQUFLO2dCQUlHLG9CQUFvQjtzQkFENUIsTUFBTTtnQkE4RFAsT0FBTztzQkFGTixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckQsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFxRjdDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgQ0hBUl9QTFVTLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlNYXBwZXIsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbiAgICBUVUlfU1ZHX09QVElPTlMsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50LFxuICAgIFR1aVNpemVMLFxuICAgIFR1aVNpemVNLFxuICAgIFR1aVNpemVTLFxuICAgIFR1aVN2Z09wdGlvbnMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQ291bnRyeUlzb0NvZGV9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7VFVJX0FSUk9XfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUFTS19BRlRFUl9DT0RFX1JFR0VYUH0gZnJvbSAnLi9jb25zdC9tYXNrLWFmdGVyLWNvZGUtcmVnZXhwJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7dHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXBob25lLWludGVybmF0aW9uYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgXSxcbiAgICB2aWV3UHJvdmlkZXJzOiBbRklYRURfRFJPUERPV05fQ09OVFJPTExFUl9QUk9WSURFUl0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8c3RyaW5nPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlJbnB1dFBob25lQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRQaG9uZUNvbXBvbmVudD86IFR1aUlucHV0UGhvbmVDb21wb25lbnQ7XG5cbiAgICBAVmlld0NoaWxkKFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1pdGl2ZVRleHRmaWVsZD86IFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhdGljUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoJ2NvdW50cnlJc29Db2RlJylcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHNldCBpc29Db2RlKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgIHRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudD8ud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBjb3VudHJpZXMgPSB0aGlzLm9wdGlvbnMuY291bnRyaWVzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY291bnRyeUlzb0NvZGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aUNvdW50cnlJc29Db2RlPigpO1xuXG4gICAgY291bnRyeUlzb0NvZGUgPSB0aGlzLm9wdGlvbnMuY291bnRyeUlzb0NvZGU7XG5cbiAgICBvcGVuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBhcnJvdzogUG9seW1vcnBoZXVzQ29udGVudDxcbiAgICAgICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdDxUdWlTaXplTCB8IFR1aVNpemVNIHwgVHVpU2l6ZVM+XG4gICAgPiA9IFRVSV9BUlJPVztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX1NWR19PUFRJT05TKSB7cGF0aH06IFR1aVN2Z09wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTmFtZXMkOiBPYnNlcnZhYmxlPFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPj4sXG4gICAgICAgIEBJbmplY3QoVFVJX0NPVU5UUklFU19NQVNLUylcbiAgICAgICAgcmVhZG9ubHkgY291bnRyaWVzTWFza3M6IFJlY29yZDxUdWlDb3VudHJ5SXNvQ29kZSwgc3RyaW5nPixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfUEhPTkVfSU5URVJOQVRJT05BTF9PUFRJT05TKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsT3B0aW9ucyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIHRoaXMuc3RhdGljUGF0aCA9IHBhdGgoJ3R1aUljb24nKS5yZXBsYWNlKCd0dWlJY29uLnN2ZyN0dWlJY29uJywgJycpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQubmF0aXZlRm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCEhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgJiYgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQuZm9jdXNlZCkgfHxcbiAgICAgICAgICAgICghIXRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQuZm9jdXNlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQaG9uZUNvdW50cnlDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG4gICAgfVxuXG4gICAgZ2V0IHBob25lTWFza0FmdGVyQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFza0FmdGVyQ291bnRyeUNvZGUoXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc01hc2tzW3RoaXMuY291bnRyeUlzb0NvZGVdLFxuICAgICAgICAgICAgY291bnRyeUNvZGUsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGNvdW50cnlGbGFnUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGbGFnUGF0aCh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwYXN0ZS5jYXB0dXJlLnByZXZlbnQuc3RvcCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcC5jYXB0dXJlLnByZXZlbnQuc3RvcCcsIFsnJGV2ZW50J10pXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQgfCBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50KGV2ZW50KS5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgJycpO1xuICAgICAgICBjb25zdCBjb3VudHJ5SXNvQ29kZSA9IHRoaXMuZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlfSR7dmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCwgJycpXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgodGhpcy5jb3VudHJ5SXNvQ29kZSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eOC8sICc3Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShgJHtDSEFSX1BMVVN9JHt2YWx1ZX1gKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBpc29Ub0NvdW50cnlDb2RlTWFwcGVyOiBUdWlNYXBwZXI8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4gPSBpdGVtID0+XG4gICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShpdGVtKTtcblxuICAgIGdldEZsYWdQYXRoKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFR1aUNvdW50cnlJc29Db2RlLkJMOlxuICAgICAgICAgICAgY2FzZSBUdWlDb3VudHJ5SXNvQ29kZS5CUTpcbiAgICAgICAgICAgIGNhc2UgVHVpQ291bnRyeUlzb0NvZGUuQ1c6XG4gICAgICAgICAgICBjYXNlIFR1aUNvdW50cnlJc29Db2RlLkdGOlxuICAgICAgICAgICAgY2FzZSBUdWlDb3VudHJ5SXNvQ29kZS5HUDpcbiAgICAgICAgICAgIGNhc2UgVHVpQ291bnRyeUlzb0NvZGUuTUY6XG4gICAgICAgICAgICBjYXNlIFR1aUNvdW50cnlJc29Db2RlLk1ROlxuICAgICAgICAgICAgY2FzZSBUdWlDb3VudHJ5SXNvQ29kZS5OQzpcbiAgICAgICAgICAgIGNhc2UgVHVpQ291bnRyeUlzb0NvZGUuUkU6XG4gICAgICAgICAgICBjYXNlIFR1aUNvdW50cnlJc29Db2RlLllUOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnN0YXRpY1BhdGh9JHtUdWlDb3VudHJ5SXNvQ29kZS5GUn0ucG5nYDtcbiAgICAgICAgICAgIGNhc2UgVHVpQ291bnRyeUlzb0NvZGUuU1g6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuc3RhdGljUGF0aH0ke1R1aUNvdW50cnlJc29Db2RlLk5MfS5wbmdgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5zdGF0aWNQYXRofSR7Y29kZX0ucG5nYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGlzb0NvZGUpO1xuICAgICAgICAvLyByZWNhbGN1bGF0ZXMgbWFzayBpbnNpZGUgaW5wdXRQaG9uZSB0byBwcmV2ZW50IGlzb0NvZGUgY29uZmxpY3RcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKGlzb0NvZGUpO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLnNsaWNlKDAsIG1heExlbmd0aCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpc29Ub0NvdW50cnlDb2RlKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZShNQVNLX0FGVEVSX0NPREVfUkVHRVhQLCAnJyk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShtYXNrOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbWFzay5yZXBsYWNlKGNvdW50cnlDb2RlLCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4QWxsb3dlZExlbmd0aChpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllc01hc2tzW2lzb0NvZGVdLnJlcGxhY2UoL1soKVxcLSBdL2csICcnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb3VudHJ5SXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlOiBzdHJpbmcpOiBUdWlDb3VudHJ5SXNvQ29kZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJc29Db2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1Q29kZVRlc3QgPVxuICAgICAgICAgICAgICAgIGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSAmJlxuICAgICAgICAgICAgICAgIC9eWzcgfCA4XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAvXig/ITg4MFsxLTkgXSkvLnRlc3QodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKFR1aUNvdW50cnlJc29Db2RlLlJVKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBydUNvZGVUZXN0IHx8XG4gICAgICAgICAgICAgICAgKHZhbHVlLnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShjb3VudHJ5SXNvQ29kZSkucmVwbGFjZShDSEFSX1BMVVMsICcnKSxcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCArIDEgPT09IHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aChjb3VudHJ5SXNvQ29kZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgICpuZ0lmPVwiY291bnRyaWVzTmFtZXMkIHwgYXN5bmMgYXMgY291bnRyaWVzTmFtZXNcIlxuICAgIGNsYXNzPVwidC1ob3N0ZWQtZHJvcGRvd25cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbY2FuT3Blbl09XCIhcmVhZE9ubHlcIlxuICAgIFsob3BlbildPVwib3BlblwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDxkaXYgdHVpR3JvdXA+XG4gICAgICAgIDx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICAgICAgICAgdHVpSGludENvbnRlbnQ9XCJcIlxuICAgICAgICAgICAgdHVpVGV4dGZpZWxkUHJlZml4PVwiXCJcbiAgICAgICAgICAgIHR1aVRleHRmaWVsZFBvc3RmaXg9XCJcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktc2VsZWN0IHR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRDdXN0b21Db250ZW50XT1cImNvdW50cnlWYWx1ZUNvbnRlbnRcIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZExhYmVsT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRJY29uXT1cImljb25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcHNldWRvRm9jdXNdPVwib3BlbiB8fCBudWxsXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgID48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWlucHV0LXBob25lXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQtcGhvbmUgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtjb3VudHJ5Q29kZV09XCJpbnB1dFBob25lQ291bnRyeUNvZGVcIlxuICAgICAgICAgICAgW3Bob25lTWFza0FmdGVyQ291bnRyeUNvZGVdPVwicGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRGbGFnUGF0aChpdGVtKVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY291bnRyeS1pdGVtLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRyaWVzTmFtZXNbaXRlbV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfCB0dWlNYXBwZXIgOiBpc29Ub0NvdW50cnlDb2RlTWFwcGVyIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjb3VudHJ5VmFsdWVDb250ZW50PlxuICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlIEBodG1sLWVzbGludC9yZXF1aXJlLWltZy1hbHQgLS0+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgIFthbHRdPVwiY291bnRyaWVzTmFtZXNbY291bnRyeUlzb0NvZGVdXCJcbiAgICAgICAgICAgIFtzcmNdPVwiY291bnRyeUZsYWdQYXRoXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImFycm93XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxZQUFZLEVBQ1osMEJBQTBCLEVBRTFCLGNBQWMsRUFHZCxPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLDhCQUE4QixHQUlqQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1B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QkFBQztvQkFDUCxRQUFRLEVBQUUsK0JBQStCO29CQUN6QyxXQUFXLEVBQUUsMkNBQTJDO29CQUN4RCxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDckQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUCwwQkFBMEIscUNBQXFDO3dCQUMvRCxZQUFZLHFDQUFxQzt3QkFDakQsc0RBQXNEO3dCQUN0RCxXQUFXO3FCQUNkO29CQUNELGFBQWEsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2lCQUN0RDs7MEJBcUNRLFFBQVE7OzBCQUNSLElBQUk7OzBCQUNKLE1BQU07MkJBQUMsU0FBUzs7MEJBRWhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFDeEIsTUFBTTsyQkFBQyxhQUFhOzswQkFFcEIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUUxQixNQUFNOzJCQUFDLHFDQUFxQzs7MEJBRTVDLE1BQU07MkJBQUMsV0FBVzs0Q0ExQ04sbUJBQW1CO3NCQURuQyxTQUFTO3VCQUFDLHNCQUFzQjtnQkFJaEIsa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLDhCQUE4QjtnQkFLckMsT0FBTztzQkFGVixLQUFLO3VCQUFDLGdCQUFnQjtnQkFZdkIsU0FBUztzQkFEUixLQUFLO2dCQUlHLG9CQUFvQjtzQkFENUIsTUFBTTtnQkFpRVAsT0FBTztzQkFGTixZQUFZO3VCQUFDLDRCQUE0QixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDckQsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF5RTdDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTZWxmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgQ0hBUl9QTFVTLFxuICAgIHR1aUFzQ29udHJvbCxcbiAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcixcbiAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICBUdWlNYXBwZXIsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRVSV9NQVNLX1NZTUJPTFNfUkVHRVhQLFxuICAgIFRVSV9OT05fRElHSVRTX1JFR0VYUCxcbiAgICBUdWlGbGFnUGlwZSxcbiAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQsXG4gICAgVHVpU2l6ZUwsXG4gICAgVHVpU2l6ZU0sXG4gICAgVHVpU2l6ZVMsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQ291bnRyeUlzb0NvZGV9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7VFVJX0FSUk9XfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Byb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9DT1VOVFJJRVN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TUFTS19BRlRFUl9DT0RFX1JFR0VYUH0gZnJvbSAnLi9jb25zdC9tYXNrLWFmdGVyLWNvZGUtcmVnZXhwJztcbmltcG9ydCB7XG4gICAgVFVJX0lOUFVUX1BIT05FX0lOVEVSTkFUSU9OQUxfT1BUSU9OUyxcbiAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE9wdGlvbnMsXG59IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5vcHRpb25zJztcbmltcG9ydCB7VFVJX0NPVU5UUklFU19NQVNLU30gZnJvbSAnLi90b2tlbnMvY291bnRyaWVzLW1hc2tzJztcbmltcG9ydCB7dHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50fSBmcm9tICcuL3V0aWxzL2V4dHJhY3QtdmFsdWUtZnJvbS1ldmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHVpLWlucHV0LXBob25lLWludGVybmF0aW9uYWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXBob25lLWludGVybmF0aW9uYWwuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudCksXG4gICAgICAgIC8vIFRPRE86IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkuIERyb3AgaW4gdjQuMFxuICAgICAgICBUdWlGbGFnUGlwZSxcbiAgICBdLFxuICAgIHZpZXdQcm92aWRlcnM6IFtGSVhFRF9EUk9QRE9XTl9DT05UUk9MTEVSX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpQ29udHJvbDxzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkKFR1aUlucHV0UGhvbmVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFBob25lQ29tcG9uZW50PzogVHVpSW5wdXRQaG9uZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KCdjb3VudHJ5SXNvQ29kZScpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBzZXQgaXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSkge1xuICAgICAgICBpZiAodGhpcy5jb3VudHJ5SXNvQ29kZSA9PT0gY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dFBob25lQ29tcG9uZW50Py53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIGNvdW50cmllcyA9IHRoaXMub3B0aW9ucy5jb3VudHJpZXM7XG5cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBjb3VudHJ5SXNvQ29kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpQ291bnRyeUlzb0NvZGU+KCk7XG5cbiAgICBjb3VudHJ5SXNvQ29kZSA9IHRoaXMub3B0aW9ucy5jb3VudHJ5SXNvQ29kZTtcblxuICAgIG9wZW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IGFycm93OiBQb2x5bW9ycGhldXNDb250ZW50PFxuICAgICAgICBUdWlDb250ZXh0V2l0aEltcGxpY2l0PFR1aVNpemVMIHwgVHVpU2l6ZU0gfCBUdWlTaXplUz5cbiAgICA+ID0gVFVJX0FSUk9XO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfQ09VTlRSSUVTKVxuICAgICAgICByZWFkb25seSBjb3VudHJpZXNOYW1lcyQ6IE9ic2VydmFibGU8UmVjb3JkPFR1aUNvdW50cnlJc29Db2RlLCBzdHJpbmc+PixcbiAgICAgICAgQEluamVjdChUVUlfQ09VTlRSSUVTX01BU0tTKVxuICAgICAgICByZWFkb25seSBjb3VudHJpZXNNYXNrczogUmVjb3JkPFR1aUNvdW50cnlJc29Db2RlLCBzdHJpbmc+LFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9QSE9ORV9JTlRFUk5BVElPTkFMX09QVElPTlMpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxPcHRpb25zLFxuICAgICAgICBASW5qZWN0KFR1aUZsYWdQaXBlKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZsYWdQaXBlOiBUdWlGbGFnUGlwZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQgJiYgIXRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQubmF0aXZlRm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKCEhdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQgJiYgdGhpcy5wcmltaXRpdmVUZXh0ZmllbGQuZm9jdXNlZCkgfHxcbiAgICAgICAgICAgICghIXRoaXMuaW5wdXRQaG9uZUNvbXBvbmVudCAmJiB0aGlzLmlucHV0UGhvbmVDb21wb25lbnQuZm9jdXNlZClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5wdXRQaG9uZUNvdW50cnlDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG4gICAgfVxuXG4gICAgZ2V0IHBob25lTWFza0FmdGVyQ291bnRyeUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY291bnRyeUNvZGUgPSB0aGlzLmlzb1RvQ291bnRyeUNvZGUodGhpcy5jb3VudHJ5SXNvQ29kZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlTWFza0FmdGVyQ291bnRyeUNvZGUoXG4gICAgICAgICAgICB0aGlzLmNvdW50cmllc01hc2tzW3RoaXMuY291bnRyeUlzb0NvZGVdLFxuICAgICAgICAgICAgY291bnRyeUNvZGUsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGA8aW1nIFtzcmNdPVwiY291bnRyeUlzb0NvZGUgfCB0dWlGbGFnUGlwZVwiIC8+YFxuICAgICAqIFRPRE8gZHJvcCBpbiB2NC4wXG4gICAgICovXG4gICAgZ2V0IGNvdW50cnlGbGFnUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRGbGFnUGF0aCh0aGlzLmNvdW50cnlJc29Db2RlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdwYXN0ZS5jYXB0dXJlLnByZXZlbnQuc3RvcCcsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcC5jYXB0dXJlLnByZXZlbnQuc3RvcCcsIFsnJGV2ZW50J10pXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQgfCBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdHVpRXh0cmFjdFZhbHVlRnJvbUV2ZW50KGV2ZW50KS5yZXBsYWNlKFRVSV9OT05fRElHSVRTX1JFR0VYUCwgJycpO1xuICAgICAgICBjb25zdCBjb3VudHJ5SXNvQ29kZSA9IHRoaXMuZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlKTtcblxuICAgICAgICBpZiAoIWNvdW50cnlJc29Db2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5wdXRQaG9uZUNvdW50cnlDb2RlfSR7dmFsdWV9YFxuICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShUVUlfTUFTS19TWU1CT0xTX1JFR0VYUCwgJycpXG4gICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCB0aGlzLmdldE1heEFsbG93ZWRMZW5ndGgodGhpcy5jb3VudHJ5SXNvQ29kZSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9eOC8sICc3Jyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGNvdW50cnlJc29Db2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShgJHtDSEFSX1BMVVN9JHt2YWx1ZX1gKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBpc29Ub0NvdW50cnlDb2RlTWFwcGVyOiBUdWlNYXBwZXI8VHVpQ291bnRyeUlzb0NvZGUsIHN0cmluZz4gPSBpdGVtID0+XG4gICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShpdGVtKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBgPGltZyBbc3JjXT1cImNvdW50cnlJc29Db2RlIHwgdHVpRmxhZ1BpcGVcIiAvPmBcbiAgICAgKiBUT0RPIGRyb3AgaW4gdjQuMFxuICAgICAqL1xuICAgIGdldEZsYWdQYXRoKGNvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxhZ1BpcGUudHJhbnNmb3JtKGNvZGUpO1xuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvdW50cnlJc29Db2RlKGlzb0NvZGUpO1xuICAgICAgICAvLyByZWNhbGN1bGF0ZXMgbWFzayBpbnNpZGUgaW5wdXRQaG9uZSB0byBwcmV2ZW50IGlzb0NvZGUgY29uZmxpY3RcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4TGVuZ3RoID0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKGlzb0NvZGUpO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLnNsaWNlKDAsIG1heExlbmd0aCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvdmVycmlkZSBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5zZXREaXNhYmxlZFN0YXRlKCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBpc29Ub0NvdW50cnlDb2RlKGlzb0NvZGU6IFR1aUNvdW50cnlJc29Db2RlKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRyaWVzTWFza3NbaXNvQ29kZV0ucmVwbGFjZShNQVNLX0FGVEVSX0NPREVfUkVHRVhQLCAnJyk7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlWm9uZShhY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVGb2N1c2VkKGFjdGl2ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEZhbGxiYWNrVmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVNYXNrQWZ0ZXJDb3VudHJ5Q29kZShtYXNrOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbWFzay5yZXBsYWNlKGNvdW50cnlDb2RlLCAnJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWF4QWxsb3dlZExlbmd0aChpc29Db2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllc01hc2tzW2lzb0NvZGVdLnJlcGxhY2UoL1soKVxcLSBdL2csICcnKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDb3VudHJ5SXNvQ29kZShjb2RlOiBUdWlDb3VudHJ5SXNvQ29kZSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvdW50cnlJc29Db2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5jb3VudHJ5SXNvQ29kZUNoYW5nZS5lbWl0KGNvZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdENvdW50cnlDb2RlKHZhbHVlOiBzdHJpbmcpOiBUdWlDb3VudHJ5SXNvQ29kZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50cmllcy5maW5kKGNvdW50cnlJc29Db2RlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1Q29kZVRlc3QgPVxuICAgICAgICAgICAgICAgIGNvdW50cnlJc29Db2RlID09PSBUdWlDb3VudHJ5SXNvQ29kZS5SVSAmJlxuICAgICAgICAgICAgICAgIC9eWzcgfCA4XS8udGVzdCh2YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAvXig/ITg4MFsxLTkgXSkvLnRlc3QodmFsdWUpICYmXG4gICAgICAgICAgICAgICAgdmFsdWUubGVuZ3RoICsgMSA9PT0gdGhpcy5nZXRNYXhBbGxvd2VkTGVuZ3RoKFR1aUNvdW50cnlJc29Db2RlLlJVKTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICBydUNvZGVUZXN0IHx8XG4gICAgICAgICAgICAgICAgKHZhbHVlLnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNvVG9Db3VudHJ5Q29kZShjb3VudHJ5SXNvQ29kZSkucmVwbGFjZShDSEFSX1BMVVMsICcnKSxcbiAgICAgICAgICAgICAgICApICYmXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmxlbmd0aCArIDEgPT09IHRoaXMuZ2V0TWF4QWxsb3dlZExlbmd0aChjb3VudHJ5SXNvQ29kZSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8dHVpLWhvc3RlZC1kcm9wZG93blxuICAgICpuZ0lmPVwiY291bnRyaWVzTmFtZXMkIHwgYXN5bmMgYXMgY291bnRyaWVzTmFtZXNcIlxuICAgIGNsYXNzPVwidC1ob3N0ZWQtZHJvcGRvd25cIlxuICAgIFtjb250ZW50XT1cImRyb3Bkb3duXCJcbiAgICBbY2FuT3Blbl09XCIhcmVhZE9ubHlcIlxuICAgIFsob3BlbildPVwib3BlblwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDxkaXYgdHVpR3JvdXA+XG4gICAgICAgIDx0dWktcHJpbWl0aXZlLXRleHRmaWVsZFxuICAgICAgICAgICAgdHVpSGludENvbnRlbnQ9XCJcIlxuICAgICAgICAgICAgdHVpVGV4dGZpZWxkUHJlZml4PVwiXCJcbiAgICAgICAgICAgIHR1aVRleHRmaWVsZFBvc3RmaXg9XCJcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktc2VsZWN0IHR1aS1ncm91cF9fYXV0by13aWR0aC1pdGVtXCJcbiAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRDdXN0b21Db250ZW50XT1cImNvdW50cnlWYWx1ZUNvbnRlbnRcIlxuICAgICAgICAgICAgW3R1aVRleHRmaWVsZExhYmVsT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFt0dWlUZXh0ZmllbGRJY29uXT1cImljb25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtlZGl0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICBbcHNldWRvRm9jdXNdPVwib3BlbiB8fCBudWxsXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgID48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuICAgICAgICA8dHVpLWlucHV0LXBob25lXG4gICAgICAgICAgICBjbGFzcz1cInQtaW5wdXQtcGhvbmUgdHVpLWdyb3VwX19hdXRvLXdpZHRoLWl0ZW1cIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtjb3VudHJ5Q29kZV09XCJpbnB1dFBob25lQ291bnRyeUNvZGVcIlxuICAgICAgICAgICAgW3Bob25lTWFza0FmdGVyQ291bnRyeUNvZGVdPVwicGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZVwiXG4gICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiY29tcHV0ZWRJbnZhbGlkXCJcbiAgICAgICAgICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgICAgICAgICBbcHNldWRvSG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0LXBob25lPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgICAgICAgPHR1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY291bnRyaWVzXCJcbiAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJpdGVtIHwgdHVpRmxhZ1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInQtY291bnRyeS1pdGVtLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY291bnRyaWVzTmFtZXNbaXRlbV0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0LWNvdW50cnktaXRlbS1jb2RlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfCB0dWlNYXBwZXIgOiBpc29Ub0NvdW50cnlDb2RlTWFwcGVyIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNjb3VudHJ5VmFsdWVDb250ZW50PlxuICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlIEBodG1sLWVzbGludC9yZXF1aXJlLWltZy1hbHQgLS0+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgIFthbHRdPVwiY291bnRyaWVzTmFtZXNbY291bnRyeUlzb0NvZGVdXCJcbiAgICAgICAgICAgIFtzcmNdPVwiY291bnRyeUlzb0NvZGUgfCB0dWlGbGFnXCJcbiAgICAgICAgLz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNpY29uPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICB0dWlXcmFwcGVyXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwiaWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImFycm93XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3R1aS1ob3N0ZWQtZHJvcGRvd24+XG4iXX0=
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { TuiActiveZoneModule, TuiLetModule, TuiMapperPipeModule } from '@taiga-ui/cdk';
5
- import { TuiDataListModule, TuiGroupModule, TuiHintModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldControllerModule, TuiWrapperModule, } from '@taiga-ui/core';
5
+ import { TuiDataListModule, TuiFlagPipeModule, TuiGroupModule, TuiHintModule, TuiHostedDropdownModule, TuiPrimitiveTextfieldModule, TuiSvgModule, TuiTextfieldControllerModule, TuiWrapperModule, } from '@taiga-ui/core';
6
6
  import { TuiArrowModule } from '@taiga-ui/kit/components/arrow';
7
7
  import { TuiInputPhoneModule } from '@taiga-ui/kit/components/input-phone';
8
8
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
@@ -10,8 +10,8 @@ import { TuiInputPhoneInternationalComponent } from './input-phone-international
10
10
  import * as i0 from "@angular/core";
11
11
  export class TuiInputPhoneInternationalModule {
12
12
  }
13
- TuiInputPhoneInternationalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- TuiInputPhoneInternationalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalModule, declarations: [TuiInputPhoneInternationalComponent], imports: [CommonModule,
13
+ TuiInputPhoneInternationalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ TuiInputPhoneInternationalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalModule, declarations: [TuiInputPhoneInternationalComponent], imports: [CommonModule,
15
15
  FormsModule,
16
16
  PolymorpheusModule,
17
17
  TuiSvgModule,
@@ -26,8 +26,9 @@ TuiInputPhoneInternationalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion:
26
26
  TuiWrapperModule,
27
27
  TuiLetModule,
28
28
  TuiMapperPipeModule,
29
- TuiActiveZoneModule], exports: [TuiInputPhoneInternationalComponent] });
30
- TuiInputPhoneInternationalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalModule, imports: [[
29
+ TuiActiveZoneModule,
30
+ TuiFlagPipeModule], exports: [TuiInputPhoneInternationalComponent] });
31
+ TuiInputPhoneInternationalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalModule, imports: [[
31
32
  CommonModule,
32
33
  FormsModule,
33
34
  PolymorpheusModule,
@@ -44,8 +45,9 @@ TuiInputPhoneInternationalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion:
44
45
  TuiLetModule,
45
46
  TuiMapperPipeModule,
46
47
  TuiActiveZoneModule,
48
+ TuiFlagPipeModule,
47
49
  ]] });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputPhoneInternationalModule, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputPhoneInternationalModule, decorators: [{
49
51
  type: NgModule,
50
52
  args: [{
51
53
  imports: [
@@ -65,9 +67,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
65
67
  TuiLetModule,
66
68
  TuiMapperPipeModule,
67
69
  TuiActiveZoneModule,
70
+ TuiFlagPipeModule,
68
71
  ],
69
72
  declarations: [TuiInputPhoneInternationalComponent],
70
73
  exports: [TuiInputPhoneInternationalComponent],
71
74
  }]
72
75
  }] });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLFlBQVksRUFDWiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEdBQ25CLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDOztBQXdCMUYsTUFBTSxPQUFPLGdDQUFnQzs7OEhBQWhDLGdDQUFnQzsrSEFBaEMsZ0NBQWdDLGlCQUgxQixtQ0FBbUMsYUFqQjlDLFlBQVk7UUFDWixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsY0FBYztRQUNkLDJCQUEyQjtRQUMzQiw0QkFBNEI7UUFDNUIsYUFBYTtRQUNiLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFDakIsY0FBYztRQUNkLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLG1CQUFtQixhQUdiLG1DQUFtQzsrSEFFcEMsZ0NBQWdDLFlBckJoQztZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLDJCQUEyQjtZQUMzQiw0QkFBNEI7WUFDNUIsYUFBYTtZQUNiLHVCQUF1QjtZQUN2QixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLG1CQUFtQjtTQUN0Qjs0RkFJUSxnQ0FBZ0M7a0JBdEI1QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDRCQUE0Qjt3QkFDNUIsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixtQkFBbUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRSxDQUFDLG1DQUFtQyxDQUFDO29CQUNuRCxPQUFPLEVBQUUsQ0FBQyxtQ0FBbUMsQ0FBQztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUdWlBY3RpdmVab25lTW9kdWxlLCBUdWlMZXRNb2R1bGUsIFR1aU1hcHBlclBpcGVNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUdWlEYXRhTGlzdE1vZHVsZSxcbiAgICBUdWlHcm91cE1vZHVsZSxcbiAgICBUdWlIaW50TW9kdWxlLFxuICAgIFR1aUhvc3RlZERyb3Bkb3duTW9kdWxlLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGUsXG4gICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICBUdWlXcmFwcGVyTW9kdWxlLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUFycm93TW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYXJyb3cnO1xuaW1wb3J0IHtUdWlJbnB1dFBob25lTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtcGhvbmUnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNNb2R1bGV9IGZyb20gJ0B0aW5rb2ZmL25nLXBvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnR9IGZyb20gJy4vaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUG9seW1vcnBoZXVzTW9kdWxlLFxuICAgICAgICBUdWlTdmdNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFR1aUdyb3VwTW9kdWxlLFxuICAgICAgICBUdWlQcmltaXRpdmVUZXh0ZmllbGRNb2R1bGUsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIFR1aUhpbnRNb2R1bGUsXG4gICAgICAgIFR1aUhvc3RlZERyb3Bkb3duTW9kdWxlLFxuICAgICAgICBUdWlEYXRhTGlzdE1vZHVsZSxcbiAgICAgICAgVHVpQXJyb3dNb2R1bGUsXG4gICAgICAgIFR1aVdyYXBwZXJNb2R1bGUsXG4gICAgICAgIFR1aUxldE1vZHVsZSxcbiAgICAgICAgVHVpTWFwcGVyUGlwZU1vZHVsZSxcbiAgICAgICAgVHVpQWN0aXZlWm9uZU1vZHVsZSxcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1R1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE1vZHVsZSB7fVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUtaW50ZXJuYXRpb25hbC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsL2lucHV0LXBob25lLWludGVybmF0aW9uYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osNEJBQTRCLEVBQzVCLGdCQUFnQixHQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7QUF5QjFGLE1BQU0sT0FBTyxnQ0FBZ0M7OzhIQUFoQyxnQ0FBZ0M7K0hBQWhDLGdDQUFnQyxpQkFIMUIsbUNBQW1DLGFBbEI5QyxZQUFZO1FBQ1osV0FBVztRQUNYLGtCQUFrQjtRQUNsQixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCwyQkFBMkI7UUFDM0IsNEJBQTRCO1FBQzVCLGFBQWE7UUFDYix1QkFBdUI7UUFDdkIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsaUJBQWlCLGFBR1gsbUNBQW1DOytIQUVwQyxnQ0FBZ0MsWUF0QmhDO1lBQ0wsWUFBWTtZQUNaLFdBQVc7WUFDWCxrQkFBa0I7WUFDbEIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsMkJBQTJCO1lBQzNCLDRCQUE0QjtZQUM1QixhQUFhO1lBQ2IsdUJBQXVCO1lBQ3ZCLGlCQUFpQjtZQUNqQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLGlCQUFpQjtTQUNwQjs0RkFJUSxnQ0FBZ0M7a0JBdkI1QyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCwyQkFBMkI7d0JBQzNCLDRCQUE0Qjt3QkFDNUIsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGlCQUFpQjtxQkFDcEI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsbUNBQW1DLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2lCQUNqRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmVNb2R1bGUsIFR1aUxldE1vZHVsZSwgVHVpTWFwcGVyUGlwZU1vZHVsZX0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFR1aURhdGFMaXN0TW9kdWxlLFxuICAgIFR1aUZsYWdQaXBlTW9kdWxlLFxuICAgIFR1aUdyb3VwTW9kdWxlLFxuICAgIFR1aUhpbnRNb2R1bGUsXG4gICAgVHVpSG9zdGVkRHJvcGRvd25Nb2R1bGUsXG4gICAgVHVpUHJpbWl0aXZlVGV4dGZpZWxkTW9kdWxlLFxuICAgIFR1aVN2Z01vZHVsZSxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLFxuICAgIFR1aVdyYXBwZXJNb2R1bGUsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VHVpQXJyb3dNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9hcnJvdyc7XG5pbXBvcnQge1R1aUlucHV0UGhvbmVNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9pbnB1dC1waG9uZSc7XG5pbXBvcnQge1BvbHltb3JwaGV1c01vZHVsZX0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbENvbXBvbmVudH0gZnJvbSAnLi9pbnB1dC1waG9uZS1pbnRlcm5hdGlvbmFsLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQb2x5bW9ycGhldXNNb2R1bGUsXG4gICAgICAgIFR1aVN2Z01vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRQaG9uZU1vZHVsZSxcbiAgICAgICAgVHVpR3JvdXBNb2R1bGUsXG4gICAgICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZE1vZHVsZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICAgICAgVHVpSGludE1vZHVsZSxcbiAgICAgICAgVHVpSG9zdGVkRHJvcGRvd25Nb2R1bGUsXG4gICAgICAgIFR1aURhdGFMaXN0TW9kdWxlLFxuICAgICAgICBUdWlBcnJvd01vZHVsZSxcbiAgICAgICAgVHVpV3JhcHBlck1vZHVsZSxcbiAgICAgICAgVHVpTGV0TW9kdWxlLFxuICAgICAgICBUdWlNYXBwZXJQaXBlTW9kdWxlLFxuICAgICAgICBUdWlBY3RpdmVab25lTW9kdWxlLFxuICAgICAgICBUdWlGbGFnUGlwZU1vZHVsZSxcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1R1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsQ29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWxDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbE1vZHVsZSB7fVxuIl19
@@ -1,8 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, Optional, Self, ViewChild, ViewChildren, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, Optional, Self, ViewChild, ViewChildren, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { AbstractTuiControl, EMPTY_QUERY, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiDefaultProp, tuiIsNativeFocused, tuiIsNativeFocusedIn, tuiPure, tuiRound, } from '@taiga-ui/cdk';
5
- import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiGetFractionPartPadded, } from '@taiga-ui/core';
5
+ import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiGetFractionPartPadded, } from '@taiga-ui/core';
6
6
  import { TuiInputNumberComponent } from '@taiga-ui/kit/components/input-number';
7
7
  import { TuiRangeComponent } from '@taiga-ui/kit/components/range';
8
8
  import { TUI_FLOATING_PRECISION } from '@taiga-ui/kit/constants';
@@ -15,10 +15,9 @@ import * as i5 from "@angular/forms";
15
15
  import * as i6 from "@angular/common";
16
16
  import * as i7 from "@tinkoff/ng-polymorpheus";
17
17
  export class TuiInputRangeComponent extends AbstractTuiControl {
18
- constructor(control, changeDetectorRef, isMobile, appearance, elementRef, controller) {
18
+ constructor(control, changeDetectorRef, isMobile, elementRef, controller) {
19
19
  super(control, changeDetectorRef);
20
20
  this.isMobile = isMobile;
21
- this.appearance = appearance;
22
21
  this.elementRef = elementRef;
23
22
  this.controller = controller;
24
23
  this.inputNumberRefs = EMPTY_QUERY;
@@ -50,6 +49,9 @@ export class TuiInputRangeComponent extends AbstractTuiControl {
50
49
  get focused() {
51
50
  return tuiIsNativeFocusedIn(this.elementRef.nativeElement);
52
51
  }
52
+ get appearance() {
53
+ return this.controller.appearance;
54
+ }
53
55
  get showLeftValueContent() {
54
56
  var _a;
55
57
  return Boolean(this.leftValueContent &&
@@ -158,12 +160,12 @@ export class TuiInputRangeComponent extends AbstractTuiControl {
158
160
  }
159
161
  }
160
162
  }
161
- TuiInputRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputRangeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_IS_MOBILE }, { token: TUI_TEXTFIELD_APPEARANCE }, { token: ElementRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }], target: i0.ɵɵFactoryTarget.Component });
162
- TuiInputRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiInputRangeComponent, selector: "tui-input-range", inputs: { min: "min", max: "max", quantum: "quantum", steps: "steps", segments: "segments", keySteps: "keySteps", leftValueContent: "leftValueContent", rightValueContent: "rightValueContent", pluralize: "pluralize" }, host: { properties: { "attr.data-size": "controller.size", "class._label-outside": "controller.labelOutside" } }, providers: [
163
+ TuiInputRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_IS_MOBILE }, { token: ElementRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }], target: i0.ɵɵFactoryTarget.Component });
164
+ TuiInputRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputRangeComponent, selector: "tui-input-range", inputs: { min: "min", max: "max", quantum: "quantum", steps: "steps", segments: "segments", keySteps: "keySteps", leftValueContent: "leftValueContent", rightValueContent: "rightValueContent", pluralize: "pluralize" }, host: { properties: { "attr.data-size": "controller.size", "class._label-outside": "controller.labelOutside" } }, providers: [
163
165
  tuiAsFocusableItemAccessor(TuiInputRangeComponent),
164
166
  tuiAsControl(TuiInputRangeComponent),
165
167
  TEXTFIELD_CONTROLLER_PROVIDER,
166
- ], viewQueries: [{ propertyName: "rangeRef", first: true, predicate: TuiRangeComponent, descendants: true }, { propertyName: "inputNumberRefs", predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiWrapper\n class=\"t-wrapper\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__left-input\"\n class=\"t-left t-text-input\"\n [min]=\"min\"\n [max]=\"value[1]\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [postfix]=\"pluralize && !showLeftValueContent ? (value[0] | i18nPlural : pluralize) : ''\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[0]\"\n (ngModelChange)=\"onInputLeft($event)\"\n (focusedChange)=\"onTextInputFocused($event, false)\"\n (keydown.arrowUp)=\"changeByStep($event, [1, 0])\"\n (keydown.arrowDown)=\"changeByStep($event, [-1, 0])\"\n >\n <ng-content></ng-content>\n <div\n *ngIf=\"showLeftValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"leftValueContent as text; context: {$implicit: value[0]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <div class=\"t-right\">\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__right-input\"\n class=\"t-text-input\"\n [min]=\"value[0]\"\n [max]=\"max\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[1]\"\n (ngModelChange)=\"onInputRight($event)\"\n (focusedChange)=\"onTextInputFocused($event, true)\"\n (keydown.arrowUp)=\"changeByStep($event, [0, 1])\"\n (keydown.arrowDown)=\"changeByStep($event, [0, -1])\"\n >\n <div\n *ngIf=\"showRightValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"rightValueContent as text; context: {$implicit: value[1]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <!-- TODO replace by postfix of the right InputNumber (after fix https://github.com/Tinkoff/taiga-ui/issues/1193) -->\n <span\n *ngIf=\"!showRightValueContent && pluralize\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"t-pluralize-right\"\n >\n &nbsp;{{ value[1] | i18nPlural : pluralize }}\n </span>\n </div>\n\n <tui-range\n class=\"t-range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [segments]=\"segments\"\n [keySteps]=\"computeKeySteps(keySteps, min, max)\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (tuiPressedChange)=\"focusToTextInput()\"\n (activeThumbChange)=\"onActiveThumbChange($event)\"\n ></tui-range>\n</div>\n", styles: [".t-wrapper{position:relative}.t-left{width:100%}.t-right{position:absolute;right:0;top:0;display:flex;width:50%;height:100%;text-align:right}.t-right .t-text-input{flex:1}.t-text-input{text-align:inherit}.t-pluralize-right{display:flex;align-items:center;padding:1.125rem var(--tui-padding-m) 0 0;margin-left:-.75rem;font:var(--tui-font-text-s)}:host[data-size=l] .t-pluralize-right{font:var(--tui-font-text-m);padding-top:1.25rem;margin-left:-1rem;padding-right:var(--tui-padding-l)}:host._label-outside .t-pluralize-right{padding-top:0}:host._disabled .t-pluralize-right{color:var(--tui-text-03)}:host{display:block;border-radius:var(--tui-radius-m)}.t-range{position:absolute;top:100%;left:0;right:0;z-index:1;margin:-.125rem 0 0;background:transparent}\n"], components: [{ type: i0.forwardRef(function () { return i1.TuiInputNumberComponent; }), selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "prefix", "postfix"] }, { type: i0.forwardRef(function () { return i2.TuiRangeComponent; }), selector: "tui-range", inputs: ["min", "max", "step", "size", "segments", "keySteps"] }], directives: [{ type: i0.forwardRef(function () { return i3.TuiWrapperDirective; }), selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i0.forwardRef(function () { return i4.TuiActiveZoneDirective; }), selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i0.forwardRef(function () { return i1.TuiInputNumberDirective; }), selector: "tui-input-number" }, { type: i0.forwardRef(function () { return TuiTextfieldAppearanceDirective; }), selector: "[tuiTextfieldAppearance]" }, { type: i0.forwardRef(function () { return i5.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i5.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i0.forwardRef(function () { return i6.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i7.PolymorpheusOutletDirective; }), selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i0.forwardRef(function () { return i2.TuiRangeChangeDirective; }), selector: "tui-range", outputs: ["activeThumbChange"] }, { type: i0.forwardRef(function () { return i4.TuiPressedDirective; }), selector: "[tuiPressedChange]", outputs: ["tuiPressedChange"] }], pipes: { "i18nPlural": i0.forwardRef(function () { return i6.I18nPluralPipe; }) }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
+ ], viewQueries: [{ propertyName: "rangeRef", first: true, predicate: TuiRangeComponent, descendants: true }, { propertyName: "inputNumberRefs", predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiWrapper\n class=\"t-wrapper\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__left-input\"\n class=\"t-left t-text-input\"\n [min]=\"min\"\n [max]=\"value[1]\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [postfix]=\"pluralize && !showLeftValueContent ? (value[0] | i18nPlural : pluralize) : ''\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[0]\"\n (ngModelChange)=\"onInputLeft($event)\"\n (focusedChange)=\"onTextInputFocused($event, false)\"\n (keydown.arrowUp)=\"changeByStep($event, [1, 0])\"\n (keydown.arrowDown)=\"changeByStep($event, [-1, 0])\"\n >\n <ng-content></ng-content>\n <div\n *ngIf=\"showLeftValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"leftValueContent as text; context: {$implicit: value[0]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <div class=\"t-right\">\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__right-input\"\n class=\"t-text-input\"\n [min]=\"value[0]\"\n [max]=\"max\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[1]\"\n (ngModelChange)=\"onInputRight($event)\"\n (focusedChange)=\"onTextInputFocused($event, true)\"\n (keydown.arrowUp)=\"changeByStep($event, [0, 1])\"\n (keydown.arrowDown)=\"changeByStep($event, [0, -1])\"\n >\n <div\n *ngIf=\"showRightValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"rightValueContent as text; context: {$implicit: value[1]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <!-- TODO replace by postfix of the right InputNumber (after fix https://github.com/Tinkoff/taiga-ui/issues/1193) -->\n <span\n *ngIf=\"!showRightValueContent && pluralize\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"t-pluralize-right\"\n >\n &nbsp;{{ value[1] | i18nPlural : pluralize }}\n </span>\n </div>\n\n <tui-range\n class=\"t-range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [segments]=\"segments\"\n [keySteps]=\"computeKeySteps(keySteps, min, max)\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (tuiPressedChange)=\"focusToTextInput()\"\n (activeThumbChange)=\"onActiveThumbChange($event)\"\n ></tui-range>\n</div>\n", styles: [".t-wrapper{position:relative}.t-left{width:100%}.t-right{position:absolute;right:0;top:0;display:flex;width:50%;height:100%;text-align:right}.t-right .t-text-input{flex:1}.t-text-input{text-align:inherit}.t-pluralize-right{display:flex;align-items:center;padding:1.125rem var(--tui-padding-m) 0 0;margin-left:-.75rem;font:var(--tui-font-text-s)}:host[data-size=l] .t-pluralize-right{font:var(--tui-font-text-m);padding-top:1.25rem;margin-left:-1rem;padding-right:var(--tui-padding-l)}:host._label-outside .t-pluralize-right{padding-top:0}:host._disabled .t-pluralize-right{color:var(--tui-text-03)}:host{display:block;border-radius:var(--tui-radius-m)}.t-range{position:absolute;top:100%;left:0;right:0;z-index:1;margin:-.125rem 0 0;background:transparent}\n"], components: [{ type: i1.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "prefix", "postfix"] }, { type: i2.TuiRangeComponent, selector: "tui-range", inputs: ["min", "max", "step", "size", "segments", "keySteps"] }], directives: [{ type: i3.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiInputNumberDirective, selector: "tui-input-number" }, { type: i3.TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", inputs: ["tuiTextfieldAppearance"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i2.TuiRangeChangeDirective, selector: "tui-range", outputs: ["activeThumbChange"] }, { type: i4.TuiPressedDirective, selector: "[tuiPressedChange]", outputs: ["tuiPressedChange"] }], pipes: { "i18nPlural": i6.I18nPluralPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
169
  __decorate([
168
170
  tuiDefaultProp()
169
171
  ], TuiInputRangeComponent.prototype, "min", void 0);
@@ -194,7 +196,7 @@ __decorate([
194
196
  __decorate([
195
197
  tuiPure
196
198
  ], TuiInputRangeComponent.prototype, "computeKeySteps", null);
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiInputRangeComponent, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeComponent, decorators: [{
198
200
  type: Component,
199
201
  args: [{
200
202
  selector: 'tui-input-range',
@@ -224,9 +226,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
224
226
  }] }, { type: undefined, decorators: [{
225
227
  type: Inject,
226
228
  args: [TUI_IS_MOBILE]
227
- }] }, { type: undefined, decorators: [{
228
- type: Inject,
229
- args: [TUI_TEXTFIELD_APPEARANCE]
230
229
  }] }, { type: i0.ElementRef, decorators: [{
231
230
  type: Inject,
232
231
  args: [ElementRef]
@@ -258,27 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
258
257
  }], pluralize: [{
259
258
  type: Input
260
259
  }], computeKeySteps: [] } });
261
- export class TuiTextfieldAppearanceDirective {
262
- }
263
- TuiTextfieldAppearanceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTextfieldAppearanceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
264
- TuiTextfieldAppearanceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", providers: [
265
- {
266
- provide: TUI_TEXTFIELD_APPEARANCE,
267
- deps: [ElementRef],
268
- useFactory: ({ nativeElement }) => nativeElement.getAttribute('tuiTextfieldAppearance'),
269
- },
270
- ], ngImport: i0 });
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTextfieldAppearanceDirective, decorators: [{
272
- type: Directive,
273
- args: [{
274
- selector: '[tuiTextfieldAppearance]',
275
- providers: [
276
- {
277
- provide: TUI_TEXTFIELD_APPEARANCE,
278
- deps: [ElementRef],
279
- useFactory: ({ nativeElement }) => nativeElement.getAttribute('tuiTextfieldAppearance'),
280
- },
281
- ],
282
- }]
283
- }] });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsSUFBSSxFQUNKLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsRUFFUixjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsUUFBUSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUVoQyx3QkFBd0IsR0FHM0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBbUIvRCxNQUFNLE9BQU8sc0JBQ1QsU0FBUSxrQkFBb0M7SUFxRDVDLFlBSUksT0FBeUIsRUFDRSxpQkFBb0MsRUFFOUMsUUFBaUIsRUFFekIsVUFBa0IsRUFDVSxVQUFzQixFQUVsRCxVQUFrQztRQUUzQyxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFQakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUV6QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ1UsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUVsRCxlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQTdEOUIsb0JBQWUsR0FBdUMsV0FBVyxDQUFDO1FBR2xFLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1FBSTNELFFBQUcsR0FBRyxDQUFDLENBQUM7UUFJUixRQUFHLEdBQUcsR0FBRyxDQUFDO1FBSVYsWUFBTyxHQUFHLENBQUMsQ0FBQztRQU9aLFVBQUssR0FBRyxDQUFDLENBQUM7UUFPVixhQUFRLEdBQUcsQ0FBQyxDQUFDO1FBSWIsYUFBUSxHQUF1QixJQUFJLENBQUM7UUFJcEMscUJBQWdCLEdBQXdELEVBQUUsQ0FBQztRQUkzRSxzQkFBaUIsR0FBd0QsRUFBRSxDQUFDO1FBSTVFLGNBQVMsR0FBa0MsSUFBSSxDQUFDO1FBRWhELG1CQUFjLEdBQXFCLE1BQU0sQ0FBQztJQWlCMUMsQ0FBQztJQUVELElBQUksb0JBQW9COztRQUNwQixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssMENBQUUsc0JBQXNCLEtBQUksSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLHFCQUFxQjs7UUFDckIsT0FBTyxDQUFBLE1BQUEsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLDBDQUFFLHNCQUFzQixLQUFJLElBQUksQ0FBQztJQUNyRSxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUTtZQUNoQixDQUFDLENBQUMsSUFBSTtZQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksb0JBQW9COztRQUNwQixPQUFPLE9BQU8sQ0FDVixJQUFJLENBQUMsZ0JBQWdCO1lBQ2pCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxLQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssTUFBTSxDQUFDLENBQ2xFLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7O1FBQ3JCLE9BQU8sT0FBTyxDQUNWLElBQUksQ0FBQyxpQkFBaUI7WUFDbEIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEtBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxPQUFPLENBQUMsQ0FDbkUsQ0FBQztJQUNOLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDVCxPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ3RELENBQUM7SUFHRCxlQUFlLENBQUMsUUFBNEIsRUFBRSxHQUFXLEVBQUUsR0FBVztRQUNsRSxPQUFPLENBQ0gsUUFBUSxJQUFJO1lBQ1IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO1lBQ1IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ2IsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsS0FBYztRQUMvQyxJQUFJLE9BQU8sRUFBRTtZQUNULE9BQU87U0FDVjtRQUVELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDbkUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFDOUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN2RTtJQUNMLENBQUM7SUFFRCxZQUFZLENBQ1IsS0FBNEIsRUFDNUIsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQW1CO1FBRXJELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUk7U0FDL0MsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhELElBQUksZ0JBQWdCLElBQUksaUJBQWlCLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxvQkFBb0IsQ0FDckIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuQyxpQkFBaUIsQ0FDcEIsQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFvQjtRQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFvQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QjtRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxLQUFLLE9BQU8sQ0FBQztRQUUxRCxJQUFJLENBQUMsb0JBQW9CLENBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3JDLGlCQUFpQixDQUNwQixDQUFDO0lBQ04sQ0FBQztJQUVELGdCQUFnQjtRQUNaLE1BQU0sT0FBTyxHQUNULElBQUksQ0FBQyxjQUFjLEtBQUssTUFBTTtZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBRXJDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRTtZQUMzQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkI7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsV0FBNkI7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDdEMsQ0FBQztJQUVTLGdCQUFnQjtRQUN0QixPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUF1QjtRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sVUFBVSxDQUFDLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBbUI7UUFDeEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4RCxPQUFPO1lBQ0gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRCxDQUFDO0lBQ04sQ0FBQztJQUVPLFNBQVMsQ0FBQyxLQUFhO1FBQzNCLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQy9DLHNCQUFzQixDQUN6QixDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsS0FBYztRQUN0RCxNQUFNLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDM0QsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUUxRCxJQUFJLFlBQVksRUFBRTtZQUNkLFlBQVksQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BFO0lBQ0wsQ0FBQzs7b0hBblBRLHNCQUFzQixrQkF5RG5CLFNBQVMseUNBRVQsaUJBQWlCLGFBQ2pCLGFBQWEsYUFFYix3QkFBd0IsYUFFeEIsVUFBVSxhQUNWLGdDQUFnQzt3R0FqRW5DLHNCQUFzQixzWEFOcEI7UUFDUCwwQkFBMEIsQ0FBQyxzQkFBc0IsQ0FBQztRQUNsRCxZQUFZLENBQUMsc0JBQXNCLENBQUM7UUFDcEMsNkJBQTZCO0tBQ2hDLG9FQVNVLGlCQUFpQixxRUFIZCx1QkFBdUIsdUVDakV6Qywrd0dBMkZBLDR1RERtT2EsK0JBQStCO0FBclB4QztJQURDLGNBQWMsRUFBRTttREFDVDtBQUlSO0lBREMsY0FBYyxFQUFFO21EQUNQO0FBSVY7SUFEQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLDRCQUE0QixDQUFDO3VEQUM3QztBQU9aO0lBSkMsY0FBYyxDQUNYLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNsQyxzQ0FBc0MsQ0FDekM7cURBQ1M7QUFPVjtJQUpDLGNBQWMsQ0FDWCxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDakMscUNBQXFDLENBQ3hDO3dEQUNZO0FBSWI7SUFEQyxjQUFjLEVBQUU7d0RBQ21CO0FBSXBDO0lBREMsY0FBYyxFQUFFO2dFQUMwRDtBQUkzRTtJQURDLGNBQWMsRUFBRTtpRUFDMkQ7QUFJNUU7SUFEQyxjQUFjLEVBQUU7eURBQytCO0FBd0VoRDtJQURDLE9BQU87NkRBUVA7NEZBaklRLHNCQUFzQjtrQkFmbEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsNkJBQTZCO29CQUMxQyxTQUFTLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDdkMsSUFBSSxFQUFFO3dCQUNGLGtCQUFrQixFQUFFLGlCQUFpQjt3QkFDckMsd0JBQXdCLEVBQUUseUJBQXlCO3FCQUN0RDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQix3QkFBd0I7d0JBQ2xELFlBQVksd0JBQXdCO3dCQUNwQyw2QkFBNkI7cUJBQ2hDO2lCQUNKOzswQkF3RFEsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGFBQWE7OzBCQUVwQixNQUFNOzJCQUFDLHdCQUF3Qjs7MEJBRS9CLE1BQU07MkJBQUMsVUFBVTs7MEJBQ2pCLE1BQU07MkJBQUMsZ0NBQWdDOzRDQTVEM0IsZUFBZTtzQkFEL0IsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSXBCLFFBQVE7c0JBRHhCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUs1QixHQUFHO3NCQUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLE9BQU87c0JBRk4sS0FBSztnQkFTTixLQUFLO3NCQUxKLEtBQUs7Z0JBWU4sUUFBUTtzQkFMUCxLQUFLO2dCQVNOLFFBQVE7c0JBRlAsS0FBSztnQkFNTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFNTixpQkFBaUI7c0JBRmhCLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQTBFTixlQUFlO0FBdUluQixNQUFNLE9BQU8sK0JBQStCOzs2SEFBL0IsK0JBQStCO2lIQUEvQiwrQkFBK0IsbURBVDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFDLGFBQWEsRUFBYSxFQUFFLEVBQUUsQ0FDeEMsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztTQUMzRDtLQUNKOzRGQUVRLCtCQUErQjtrQkFYM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHdCQUF3Qjs0QkFDakMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDOzRCQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFDLGFBQWEsRUFBYSxFQUFFLEVBQUUsQ0FDeEMsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQzt5QkFDM0Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgRU1QVFlfUVVFUlksXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG4gICAgdHVpUHVyZSxcbiAgICB0dWlSb3VuZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9URVhURklFTERfQVBQRUFSQU5DRSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICBUdWlEZWNpbWFsLFxuICAgIHR1aUdldEZyYWN0aW9uUGFydFBhZGRlZCxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlJbnB1dE51bWJlckNvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlcic7XG5pbXBvcnQge1R1aVJhbmdlQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvcmFuZ2UnO1xuaW1wb3J0IHtUVUlfRkxPQVRJTkdfUFJFQ0lTSU9OfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUtleVN0ZXBzfSBmcm9tICdAdGFpZ2EtdWkva2l0L3R5cGVzJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdjb250cm9sbGVyLnNpemUnLFxuICAgICAgICAnW2NsYXNzLl9sYWJlbC1vdXRzaWRlXSc6ICdjb250cm9sbGVyLmxhYmVsT3V0c2lkZScsXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPFtudW1iZXIsIG51bWJlcl0+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZHJlbihUdWlJbnB1dE51bWJlckNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0TnVtYmVyUmVmczogUXVlcnlMaXN0PFR1aUlucHV0TnVtYmVyQ29tcG9uZW50PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQFZpZXdDaGlsZChUdWlSYW5nZUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmdlUmVmOiBUdWlSYW5nZUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AocSA9PiBxID4gMCwgJ1txdWFudHVtXSBtdXN0IGJlIHBvc2l0aXZlJylcbiAgICBxdWFudHVtID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKFxuICAgICAgICBzID0+IHMgPj0gMCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHMpLFxuICAgICAgICAnW3N0ZXBzXSBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyJyxcbiAgICApXG4gICAgc3RlcHMgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHMgPT4gcyA+IDAgJiYgTnVtYmVyLmlzSW50ZWdlcihzKSxcbiAgICAgICAgJ1tzZWdtZW50c10gbXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgICApXG4gICAgc2VnbWVudHMgPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGtleVN0ZXBzOiBUdWlLZXlTdGVwcyB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGxlZnRWYWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxudW1iZXI+PiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHJpZ2h0VmFsdWVDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8bnVtYmVyPj4gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwbHVyYWxpemU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gbnVsbDtcblxuICAgIGxhc3RBY3RpdmVTaWRlOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgY29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBsZWZ0Rm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TnVtYmVyUmVmcy5maXJzdD8ubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCByaWdodEZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE51bWJlclJlZnMubGFzdD8ubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmxlZnRGb2N1c2FibGVFbGVtZW50IHx8IHRoaXMucmlnaHRGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkSW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBzaG93TGVmdFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLmxlZnRWYWx1ZUNvbnRlbnQgJiZcbiAgICAgICAgICAgICAgICAhdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgISh0aGlzLnJhbmdlUmVmPy5mb2N1c2VkICYmIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dSaWdodFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLnJpZ2h0VmFsdWVDb250ZW50ICYmXG4gICAgICAgICAgICAgICAgIXR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLnJpZ2h0Rm9jdXNhYmxlRWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAhKHRoaXMucmFuZ2VSZWY/LmZvY3VzZWQgJiYgdGhpcy5sYXN0QWN0aXZlU2lkZSA9PT0gJ3JpZ2h0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkKHRoaXMucXVhbnR1bSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBkZWNpbWFsKCk6IFR1aURlY2ltYWwge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVjaXNpb24gPyAnbm90LXplcm8nIDogJ25ldmVyJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRTdGVwcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcyB8fCAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnF1YW50dW07XG4gICAgfVxuXG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuY29tcHV0ZWRTdGVwcztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwczogVHVpS2V5U3RlcHMgfCBudWxsLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBUdWlLZXlTdGVwcyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlTdGVwcyB8fCBbXG4gICAgICAgICAgICAgICAgWzAsIG1pbl0sXG4gICAgICAgICAgICAgICAgWzEwMCwgbWF4XSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuICAgIH1cblxuICAgIG9uVGV4dElucHV0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuLCByaWdodDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xlZnRUZXh0SW5wdXRSZWYsIHJpZ2h0VGV4dElucHV0UmVmXSA9IHRoaXMuaW5wdXROdW1iZXJSZWZzO1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHJpZ2h0ID8gcmlnaHRUZXh0SW5wdXRSZWYgOiBsZWZ0VGV4dElucHV0UmVmO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID0gcmlnaHQgPyAxIDogMDtcblxuICAgICAgICBpZiAoIWlucHV0UmVmLm5hdGl2ZVZhbHVlIHx8IGlucHV0UmVmLnZhbHVlICE9PSB0aGlzLnZhbHVlW3ZhbHVlSW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHRJbnB1dFZhbHVlKHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVt2YWx1ZUluZGV4XSwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQnlTdGVwKFxuICAgICAgICBldmVudDogRXZlbnQgfCBLZXlib2FyZEV2ZW50LFxuICAgICAgICBbbGVmdENvZWZmaWNpZW50LCByaWdodENvZWZmaWNpZW50XTogW251bWJlciwgbnVtYmVyXSxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnZhbHVlR3VhcmQoW1xuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSArIGxlZnRDb2VmZmljaWVudCAqIHRoaXMuc3RlcCxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMV0gKyByaWdodENvZWZmaWNpZW50ICogdGhpcy5zdGVwLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgbGVmdFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdO1xuXG4gICAgICAgIGlmIChsZWZ0VmFsdWVDaGFuZ2VkIHx8IHJpZ2h0VmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dElucHV0VmFsdWUoXG4gICAgICAgICAgICAgICAgbmV3VmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICAgICAgcmlnaHRWYWx1ZUNoYW5nZWQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYWZlbHlVcGRhdGVWYWx1ZShbdmFsdWUgPz8gdGhpcy5zYWZlQ3VycmVudFZhbHVlWzBdLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgfVxuXG4gICAgb25JbnB1dFJpZ2h0KHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2FmZWx5VXBkYXRlVmFsdWUoW3RoaXMudmFsdWVbMF0sIHZhbHVlID8/IHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uUmFuZ2VWYWx1ZSh2YWx1ZTogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdyaWdodCc7XG5cbiAgICAgICAgdGhpcy51cGRhdGVUZXh0SW5wdXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMudmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICByaWdodFZhbHVlQ2hhbmdlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0J1xuICAgICAgICAgICAgICAgID8gdGhpcy5sZWZ0Rm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWN0aXZlVGh1bWJDaGFuZ2UoYWN0aXZlVGh1bWI6ICdsZWZ0JyB8ICdyaWdodCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlU2lkZSA9IGFjdGl2ZVRodW1iO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZWx5VXBkYXRlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlR3VhcmQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHVlR3VhcmQoW2xlZnRWYWx1ZSwgcmlnaHRWYWx1ZV06IFtudW1iZXIsIG51bWJlcl0pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgY29uc3QgbGVmdENhbGlicmF0ZWRWYWx1ZSA9IHRoaXMuY2FsaWJyYXRlKGxlZnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2FsaWJyYXRlZFZhbHVlID0gdGhpcy5jYWxpYnJhdGUocmlnaHRWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE1hdGgubWluKGxlZnRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMV0pLFxuICAgICAgICAgICAgTWF0aC5tYXgocmlnaHRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMF0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsaWJyYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCByb3VuZGVkVmFsdWUgPSB0dWlSb3VuZChcbiAgICAgICAgICAgIE1hdGgucm91bmQodmFsdWUgLyB0aGlzLnF1YW50dW0pICogdGhpcy5xdWFudHVtLFxuICAgICAgICAgICAgVFVJX0ZMT0FUSU5HX1BSRUNJU0lPTixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHVpQ2xhbXAocm91bmRlZFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGV4dElucHV0VmFsdWUodmFsdWU6IG51bWJlciwgcmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgW2xlZnRJbnB1dFJlZiwgcmlnaHRJbnB1dFJlZl0gPSB0aGlzLmlucHV0TnVtYmVyUmVmcztcbiAgICAgICAgY29uc3QgdGV4dElucHV0UmVmID0gcmlnaHQgPyByaWdodElucHV0UmVmIDogbGVmdElucHV0UmVmO1xuXG4gICAgICAgIGlmICh0ZXh0SW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRleHRJbnB1dFJlZi5uYXRpdmVWYWx1ZSA9IHRleHRJbnB1dFJlZi5nZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R1aVRleHRmaWVsZEFwcGVhcmFuY2VdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgICAgICAgICAgZGVwczogW0VsZW1lbnRSZWZdLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKHtuYXRpdmVFbGVtZW50fTogRWxlbWVudFJlZikgPT5cbiAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgndHVpVGV4dGZpZWxkQXBwZWFyYW5jZScpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRleHRmaWVsZEFwcGVhcmFuY2VEaXJlY3RpdmUge31cbiIsIjxkaXZcbiAgICB0dWlXcmFwcGVyXG4gICAgY2xhc3M9XCJ0LXdyYXBwZXJcIlxuICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDx0dWktaW5wdXQtbnVtYmVyXG4gICAgICAgIHR1aVRleHRmaWVsZEFwcGVhcmFuY2U9XCJub25lXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1yYW5nZV9fbGVmdC1pbnB1dFwiXG4gICAgICAgIGNsYXNzPVwidC1sZWZ0IHQtdGV4dC1pbnB1dFwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJ2YWx1ZVsxXVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwicHJlY2lzaW9uXCJcbiAgICAgICAgW2RlY2ltYWxdPVwiZGVjaW1hbFwiXG4gICAgICAgIFtwb3N0Zml4XT1cInBsdXJhbGl6ZSAmJiAhc2hvd0xlZnRWYWx1ZUNvbnRlbnQgPyAodmFsdWVbMF0gfCBpMThuUGx1cmFsIDogcGx1cmFsaXplKSA6ICcnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVswXVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRMZWZ0KCRldmVudClcIlxuICAgICAgICAoZm9jdXNlZENoYW5nZSk9XCJvblRleHRJbnB1dEZvY3VzZWQoJGV2ZW50LCBmYWxzZSlcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFsxLCAwXSlcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWy0xLCAwXSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dMZWZ0VmFsdWVDb250ZW50XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImxlZnRWYWx1ZUNvbnRlbnQgYXMgdGV4dDsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWVbMF19XCI+XG4gICAgICAgICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdHVpLWlucHV0LW51bWJlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0LXJpZ2h0XCI+XG4gICAgICAgIDx0dWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICB0dWlUZXh0ZmllbGRBcHBlYXJhbmNlPVwibm9uZVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXJhbmdlX19yaWdodC1pbnB1dFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtdGV4dC1pbnB1dFwiXG4gICAgICAgICAgICBbbWluXT1cInZhbHVlWzBdXCJcbiAgICAgICAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgICAgICAgIFtwcmVjaXNpb25dPVwicHJlY2lzaW9uXCJcbiAgICAgICAgICAgIFtkZWNpbWFsXT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlWzFdXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRSaWdodCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uVGV4dElucHV0Rm9jdXNlZCgkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmFycm93VXApPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWzAsIDFdKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWzAsIC0xXSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UmlnaHRWYWx1ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwicmlnaHRWYWx1ZUNvbnRlbnQgYXMgdGV4dDsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWVbMV19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3R1aS1pbnB1dC1udW1iZXI+XG5cbiAgICAgICAgPCEtLSBUT0RPIHJlcGxhY2UgYnkgcG9zdGZpeCBvZiB0aGUgcmlnaHQgSW5wdXROdW1iZXIgKGFmdGVyIGZpeCBodHRwczovL2dpdGh1Yi5jb20vVGlua29mZi90YWlnYS11aS9pc3N1ZXMvMTE5MykgLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93UmlnaHRWYWx1ZUNvbnRlbnQgJiYgcGx1cmFsaXplXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtcmFuZ2VfX3BsdXJhbGl6ZS1yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtcGx1cmFsaXplLXJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgJm5ic3A7e3sgdmFsdWVbMV0gfCBpMThuUGx1cmFsIDogcGx1cmFsaXplIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDx0dWktcmFuZ2VcbiAgICAgICAgY2xhc3M9XCJ0LXJhbmdlXCJcbiAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgIFtzdGVwXT1cInN0ZXBcIlxuICAgICAgICBbc2VnbWVudHNdPVwic2VnbWVudHNcIlxuICAgICAgICBba2V5U3RlcHNdPVwiY29tcHV0ZUtleVN0ZXBzKGtleVN0ZXBzLCBtaW4sIG1heClcIlxuICAgICAgICBbZm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICh0dWlQcmVzc2VkQ2hhbmdlKT1cImZvY3VzVG9UZXh0SW5wdXQoKVwiXG4gICAgICAgIChhY3RpdmVUaHVtYkNoYW5nZSk9XCJvbkFjdGl2ZVRodW1iQ2hhbmdlKCRldmVudClcIlxuICAgID48L3R1aS1yYW5nZT5cbjwvZGl2PlxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixJQUFJLEVBQ0osU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWiwwQkFBMEIsRUFDMUIsUUFBUSxFQUVSLGNBQWMsRUFFZCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBRXBCLE9BQU8sRUFDUCxRQUFRLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDZCQUE2QixFQUM3QixnQ0FBZ0MsRUFFaEMsd0JBQXdCLEdBRzNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQW1CL0QsTUFBTSxPQUFPLHNCQUNULFNBQVEsa0JBQW9DO0lBcUQ1QyxZQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFFBQWlCLEVBQ0csVUFBc0IsRUFFbEQsVUFB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QUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLE9BQU87c0JBRk4sS0FBSztnQkFTTixLQUFLO3NCQUxKLEtBQUs7Z0JBWU4sUUFBUTtzQkFMUCxLQUFLO2dCQVNOLFFBQVE7c0JBRlAsS0FBSztnQkFNTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFNTixpQkFBaUI7c0JBRmhCLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQTRFTixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgRU1QVFlfUVVFUlksXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG4gICAgdHVpUHVyZSxcbiAgICB0dWlSb3VuZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSLFxuICAgIFR1aURlY2ltYWwsXG4gICAgdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkLFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUlucHV0TnVtYmVyQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7VHVpUmFuZ2VDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9yYW5nZSc7XG5pbXBvcnQge1RVSV9GTE9BVElOR19QUkVDSVNJT059IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpS2V5U3RlcHN9IGZyb20gJ0B0YWlnYS11aS9raXQvdHlwZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ2NvbnRyb2xsZXIuc2l6ZScsXG4gICAgICAgICdbY2xhc3MuX2xhYmVsLW91dHNpZGVdJzogJ2NvbnRyb2xsZXIubGFiZWxPdXRzaWRlJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0UmFuZ2VDb21wb25lbnQpLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFJhbmdlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8W251bWJlciwgbnVtYmVyXT5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxudW1iZXI+LCBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkcmVuKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXROdW1iZXJSZWZzOiBRdWVyeUxpc3Q8VHVpSW5wdXROdW1iZXJDb21wb25lbnQ+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAVmlld0NoaWxkKFR1aVJhbmdlQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFuZ2VSZWY6IFR1aVJhbmdlQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWluID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXggPSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcChxID0+IHEgPiAwLCAnW3F1YW50dW1dIG11c3QgYmUgcG9zaXRpdmUnKVxuICAgIHF1YW50dW0gPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHMgPT4gcyA+PSAwICYmIE51bWJlci5pc0ludGVnZXIocyksXG4gICAgICAgICdbc3RlcHNdIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXInLFxuICAgIClcbiAgICBzdGVwcyA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcChcbiAgICAgICAgcyA9PiBzID4gMCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHMpLFxuICAgICAgICAnW3NlZ21lbnRzXSBtdXN0IGJlIHBvc2l0aXZlIGludGVnZXInLFxuICAgIClcbiAgICBzZWdtZW50cyA9IDE7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAga2V5U3RlcHM6IFR1aUtleVN0ZXBzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbGVmdFZhbHVlQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PG51bWJlcj4+ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcmlnaHRWYWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxudW1iZXI+PiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHBsdXJhbGl6ZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gICAgbGFzdEFjdGl2ZVNpZGU6ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSKVxuICAgICAgICByZWFkb25seSBjb250cm9sbGVyOiBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IGxlZnRGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXROdW1iZXJSZWZzLmZpcnN0Py5uYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHJpZ2h0Rm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TnVtYmVyUmVmcy5sYXN0Py5uYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIGdldCBzaG93TGVmdFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLmxlZnRWYWx1ZUNvbnRlbnQgJiZcbiAgICAgICAgICAgICAgICAhdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgISh0aGlzLnJhbmdlUmVmPy5mb2N1c2VkICYmIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dSaWdodFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLnJpZ2h0VmFsdWVDb250ZW50ICYmXG4gICAgICAgICAgICAgICAgIXR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLnJpZ2h0Rm9jdXNhYmxlRWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAhKHRoaXMucmFuZ2VSZWY/LmZvY3VzZWQgJiYgdGhpcy5sYXN0QWN0aXZlU2lkZSA9PT0gJ3JpZ2h0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkKHRoaXMucXVhbnR1bSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBkZWNpbWFsKCk6IFR1aURlY2ltYWwge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVjaXNpb24gPyAnbm90LXplcm8nIDogJ25ldmVyJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRTdGVwcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcyB8fCAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnF1YW50dW07XG4gICAgfVxuXG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuY29tcHV0ZWRTdGVwcztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwczogVHVpS2V5U3RlcHMgfCBudWxsLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBUdWlLZXlTdGVwcyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlTdGVwcyB8fCBbXG4gICAgICAgICAgICAgICAgWzAsIG1pbl0sXG4gICAgICAgICAgICAgICAgWzEwMCwgbWF4XSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuICAgIH1cblxuICAgIG9uVGV4dElucHV0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuLCByaWdodDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xlZnRUZXh0SW5wdXRSZWYsIHJpZ2h0VGV4dElucHV0UmVmXSA9IHRoaXMuaW5wdXROdW1iZXJSZWZzO1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHJpZ2h0ID8gcmlnaHRUZXh0SW5wdXRSZWYgOiBsZWZ0VGV4dElucHV0UmVmO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID0gcmlnaHQgPyAxIDogMDtcblxuICAgICAgICBpZiAoIWlucHV0UmVmLm5hdGl2ZVZhbHVlIHx8IGlucHV0UmVmLnZhbHVlICE9PSB0aGlzLnZhbHVlW3ZhbHVlSW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHRJbnB1dFZhbHVlKHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVt2YWx1ZUluZGV4XSwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQnlTdGVwKFxuICAgICAgICBldmVudDogRXZlbnQgfCBLZXlib2FyZEV2ZW50LFxuICAgICAgICBbbGVmdENvZWZmaWNpZW50LCByaWdodENvZWZmaWNpZW50XTogW251bWJlciwgbnVtYmVyXSxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnZhbHVlR3VhcmQoW1xuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSArIGxlZnRDb2VmZmljaWVudCAqIHRoaXMuc3RlcCxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMV0gKyByaWdodENvZWZmaWNpZW50ICogdGhpcy5zdGVwLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgbGVmdFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdO1xuXG4gICAgICAgIGlmIChsZWZ0VmFsdWVDaGFuZ2VkIHx8IHJpZ2h0VmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dElucHV0VmFsdWUoXG4gICAgICAgICAgICAgICAgbmV3VmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICAgICAgcmlnaHRWYWx1ZUNoYW5nZWQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYWZlbHlVcGRhdGVWYWx1ZShbdmFsdWUgPz8gdGhpcy5zYWZlQ3VycmVudFZhbHVlWzBdLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgfVxuXG4gICAgb25JbnB1dFJpZ2h0KHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2FmZWx5VXBkYXRlVmFsdWUoW3RoaXMudmFsdWVbMF0sIHZhbHVlID8/IHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uUmFuZ2VWYWx1ZSh2YWx1ZTogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdyaWdodCc7XG5cbiAgICAgICAgdGhpcy51cGRhdGVUZXh0SW5wdXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMudmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICByaWdodFZhbHVlQ2hhbmdlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0J1xuICAgICAgICAgICAgICAgID8gdGhpcy5sZWZ0Rm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWN0aXZlVGh1bWJDaGFuZ2UoYWN0aXZlVGh1bWI6ICdsZWZ0JyB8ICdyaWdodCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlU2lkZSA9IGFjdGl2ZVRodW1iO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZWx5VXBkYXRlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlR3VhcmQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHVlR3VhcmQoW2xlZnRWYWx1ZSwgcmlnaHRWYWx1ZV06IFtudW1iZXIsIG51bWJlcl0pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgY29uc3QgbGVmdENhbGlicmF0ZWRWYWx1ZSA9IHRoaXMuY2FsaWJyYXRlKGxlZnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2FsaWJyYXRlZFZhbHVlID0gdGhpcy5jYWxpYnJhdGUocmlnaHRWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE1hdGgubWluKGxlZnRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMV0pLFxuICAgICAgICAgICAgTWF0aC5tYXgocmlnaHRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMF0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsaWJyYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCByb3VuZGVkVmFsdWUgPSB0dWlSb3VuZChcbiAgICAgICAgICAgIE1hdGgucm91bmQodmFsdWUgLyB0aGlzLnF1YW50dW0pICogdGhpcy5xdWFudHVtLFxuICAgICAgICAgICAgVFVJX0ZMT0FUSU5HX1BSRUNJU0lPTixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHVpQ2xhbXAocm91bmRlZFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGV4dElucHV0VmFsdWUodmFsdWU6IG51bWJlciwgcmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgW2xlZnRJbnB1dFJlZiwgcmlnaHRJbnB1dFJlZl0gPSB0aGlzLmlucHV0TnVtYmVyUmVmcztcbiAgICAgICAgY29uc3QgdGV4dElucHV0UmVmID0gcmlnaHQgPyByaWdodElucHV0UmVmIDogbGVmdElucHV0UmVmO1xuXG4gICAgICAgIGlmICh0ZXh0SW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRleHRJbnB1dFJlZi5uYXRpdmVWYWx1ZSA9IHRleHRJbnB1dFJlZi5nZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgdHVpV3JhcHBlclxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgW2hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLWlucHV0LW51bWJlclxuICAgICAgICB0dWlUZXh0ZmllbGRBcHBlYXJhbmNlPVwibm9uZVwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtcmFuZ2VfX2xlZnQtaW5wdXRcIlxuICAgICAgICBjbGFzcz1cInQtbGVmdCB0LXRleHQtaW5wdXRcIlxuICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgIFttYXhdPVwidmFsdWVbMV1cIlxuICAgICAgICBbcHJlY2lzaW9uXT1cInByZWNpc2lvblwiXG4gICAgICAgIFtkZWNpbWFsXT1cImRlY2ltYWxcIlxuICAgICAgICBbcG9zdGZpeF09XCJwbHVyYWxpemUgJiYgIXNob3dMZWZ0VmFsdWVDb250ZW50ID8gKHZhbHVlWzBdIHwgaTE4blBsdXJhbCA6IHBsdXJhbGl6ZSkgOiAnJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVbMF1cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0TGVmdCgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzZWRDaGFuZ2UpPVwib25UZXh0SW5wdXRGb2N1c2VkKCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJjaGFuZ2VCeVN0ZXAoJGV2ZW50LCBbMSwgMF0pXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFstMSwgMF0pXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93TGVmdFZhbHVlQ29udGVudFwiXG4gICAgICAgICAgICBuZ1Byb2plY3RBcz1cInR1aUNvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJsZWZ0VmFsdWVDb250ZW50IGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlWzBdfVwiPlxuICAgICAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3R1aS1pbnB1dC1udW1iZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidC1yaWdodFwiPlxuICAgICAgICA8dHVpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgdHVpVGV4dGZpZWxkQXBwZWFyYW5jZT1cIm5vbmVcIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1yYW5nZV9fcmlnaHQtaW5wdXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXRleHQtaW5wdXRcIlxuICAgICAgICAgICAgW21pbl09XCJ2YWx1ZVswXVwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cInByZWNpc2lvblwiXG4gICAgICAgICAgICBbZGVjaW1hbF09XCJkZWNpbWFsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVsxXVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0UmlnaHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXNlZENoYW5nZSk9XCJvblRleHRJbnB1dEZvY3VzZWQoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFswLCAxXSlcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFswLCAtMV0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1JpZ2h0VmFsdWVDb250ZW50XCJcbiAgICAgICAgICAgICAgICBuZ1Byb2plY3RBcz1cInR1aUNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cInJpZ2h0VmFsdWVDb250ZW50IGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlWzFdfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90dWktaW5wdXQtbnVtYmVyPlxuXG4gICAgICAgIDwhLS0gVE9ETyByZXBsYWNlIGJ5IHBvc3RmaXggb2YgdGhlIHJpZ2h0IElucHV0TnVtYmVyIChhZnRlciBmaXggaHR0cHM6Ly9naXRodWIuY29tL1RpbmtvZmYvdGFpZ2EtdWkvaXNzdWVzLzExOTMpIC0tPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1JpZ2h0VmFsdWVDb250ZW50ICYmIHBsdXJhbGl6ZVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXJhbmdlX19wbHVyYWxpemUtcmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXBsdXJhbGl6ZS1yaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICAgICZuYnNwO3t7IHZhbHVlWzFdIHwgaTE4blBsdXJhbCA6IHBsdXJhbGl6ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8dHVpLXJhbmdlXG4gICAgICAgIGNsYXNzPVwidC1yYW5nZVwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICBbc3RlcF09XCJzdGVwXCJcbiAgICAgICAgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCJcbiAgICAgICAgW2tleVN0ZXBzXT1cImNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwcywgbWluLCBtYXgpXCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZWFkT25seSB8fCBkaXNhYmxlZFwiXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25SYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAodHVpUHJlc3NlZENoYW5nZSk9XCJmb2N1c1RvVGV4dElucHV0KClcIlxuICAgICAgICAoYWN0aXZlVGh1bWJDaGFuZ2UpPVwib25BY3RpdmVUaHVtYkNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC90dWktcmFuZ2U+XG48L2Rpdj5cbiJdfQ==