@seniorsistemas/angular-components 19.9.14 → 19.9.15-develop-11ab86f5

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 (513) hide show
  1. package/README.md +84 -2
  2. package/accordion/README.md +5 -4
  3. package/accordion/lib/accordion/accordion.module.d.ts +7 -0
  4. package/alert/lib/alert/alert.module.d.ts +7 -0
  5. package/badge/README.md +5 -4
  6. package/badge/lib/badge/badge.module.d.ts +10 -0
  7. package/bignumber-input/README.md +5 -4
  8. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +16 -39
  9. package/bignumber-input/lib/bignumber-input/bignumber-input.module.d.ts +7 -0
  10. package/breadcrumb/README.md +5 -4
  11. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +5 -1
  12. package/button/lib/button/button.module.d.ts +7 -0
  13. package/calendar-mask/README.md +5 -4
  14. package/calendar-mask/lib/calendar-mask/calendar-mask.module.d.ts +7 -0
  15. package/card/README.md +6 -5
  16. package/card/lib/card/card.component.d.ts +2 -0
  17. package/card/lib/card/card.module.d.ts +7 -0
  18. package/chat/README.md +11 -8
  19. package/chat/lib/chat/chat.module.d.ts +7 -0
  20. package/checkbox-list/README.md +5 -4
  21. package/checkbox-list/lib/checkbox-list/checkbox-list.module.d.ts +7 -0
  22. package/chips/README.md +5 -4
  23. package/chips/lib/chips/chips.module.d.ts +7 -0
  24. package/code-editor/README.md +5 -4
  25. package/code-editor/lib/code-editor/code-editor.module.d.ts +7 -0
  26. package/collapse-link/README.md +5 -4
  27. package/collapse-link/lib/collapse-link/collapse-link.module.d.ts +7 -0
  28. package/common/lib/angular-components.module.d.ts +9 -0
  29. package/common/lib/provide-angular-components.d.ts +19 -0
  30. package/common/lib/svg-factory/svg-factory.module.d.ts +7 -0
  31. package/common/public-api.d.ts +1 -0
  32. package/content-generator/README.md +2 -2
  33. package/content-generator/lib/content-generator/content-generator.module.d.ts +7 -0
  34. package/control-errors/README.md +2 -2
  35. package/control-errors/lib/control-errors/control-errors.module.d.ts +7 -0
  36. package/country-phone-picker/README.md +2 -2
  37. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +1 -0
  38. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.d.ts +7 -0
  39. package/currency/README.md +1 -1
  40. package/custom-fields/README.md +14 -3
  41. package/custom-fields/lib/custom-fields/custom-fields.module.d.ts +7 -0
  42. package/custom-fields/lib/custom-fields/models/custom-field-value-parser.d.ts +21 -0
  43. package/custom-fields/lib/custom-fields/models/index.d.ts +1 -0
  44. package/dialog/README.md +1 -1
  45. package/drawer/README.md +8 -4
  46. package/drawer/lib/drawer/drawer.module.d.ts +10 -0
  47. package/dynamic-form/README.md +18 -2
  48. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -1
  49. package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +7 -0
  50. package/dynamic-form/dynamic-form/form-field/addon-config.d.ts +10 -1
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +15 -15
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +8 -6
  53. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +5 -2
  54. package/dynamic-form/public-api.d.ts +0 -1
  55. package/editable-overlay/README.md +2 -2
  56. package/editable-overlay/lib/editable-overlay/editable-overlay.module.d.ts +7 -0
  57. package/empty-state/README.md +5 -2
  58. package/empty-state/lib/empty-state/empty-state.module.d.ts +7 -0
  59. package/esm2022/accordion/lib/accordion/accordion.module.mjs +8 -1
  60. package/esm2022/alert/lib/alert/alert.module.mjs +8 -1
  61. package/esm2022/badge/lib/badge/badge.module.mjs +11 -1
  62. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +19 -127
  63. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +8 -1
  64. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +6 -2
  65. package/esm2022/button/lib/button/button.module.mjs +8 -1
  66. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +8 -1
  67. package/esm2022/card/lib/card/card.component.mjs +17 -3
  68. package/esm2022/card/lib/card/card.module.mjs +8 -1
  69. package/esm2022/chat/lib/chat/chat.module.mjs +8 -1
  70. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +8 -1
  71. package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
  72. package/esm2022/chips/lib/chips/chips.module.mjs +8 -1
  73. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +10 -1
  74. package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +9 -15
  75. package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +8 -1
  76. package/esm2022/common/lib/angular-components.module.mjs +10 -1
  77. package/esm2022/common/lib/provide-angular-components.mjs +22 -0
  78. package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +8 -1
  79. package/esm2022/common/public-api.mjs +2 -1
  80. package/esm2022/content-generator/lib/content-generator/content-generator.module.mjs +8 -1
  81. package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +8 -1
  82. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +12 -7
  83. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +8 -1
  84. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +4 -3
  85. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -13
  86. package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +8 -1
  87. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +4 -3
  88. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +4 -2
  89. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-value-parser.mjs +46 -0
  90. package/esm2022/custom-fields/lib/custom-fields/models/index.mjs +2 -1
  91. package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +3 -3
  92. package/esm2022/drawer/lib/drawer/drawer.module.mjs +11 -1
  93. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -5
  94. package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +8 -1
  95. package/esm2022/dynamic-form/dynamic-form/form-field/addon-config.mjs +6 -2
  96. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  97. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  98. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +33 -10
  99. package/esm2022/dynamic-form/public-api.mjs +2 -7
  100. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +8 -1
  101. package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +8 -1
  102. package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +8 -1
  103. package/esm2022/file-picker/lib/file-picker/file-picker.module.mjs +8 -1
  104. package/esm2022/file-picker/lib/file-picker/file-picker.service.mjs +4 -3
  105. package/esm2022/gantt/lib/gantt/gantt.module.mjs +8 -1
  106. package/esm2022/global-search/lib/global-search/global-search.module.mjs +19 -1
  107. package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +8 -1
  108. package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +8 -1
  109. package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +12 -1
  110. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +4 -3
  111. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +8 -1
  112. package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +8 -1
  113. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +5 -5
  114. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +8 -1
  115. package/esm2022/input-group/lib/input-group/input-group.module.mjs +8 -1
  116. package/esm2022/input-mask/lib/input-mask/input-mask.module.mjs +8 -1
  117. package/esm2022/input-text/lib/input-text/input-text.module.mjs +8 -1
  118. package/esm2022/insights/lib/insights/insights.module.mjs +11 -1
  119. package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +4 -3
  120. package/esm2022/kanban/lib/kanban/kanban.module.mjs +11 -1
  121. package/esm2022/label-value/lib/label-value/label-value.module.mjs +8 -1
  122. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +8 -1
  123. package/esm2022/locale/lib/locale/locale.module.mjs +14 -1
  124. package/esm2022/locale/lib/locale/locale.service.mjs +4 -3
  125. package/esm2022/locale/lib/locale/options/index.mjs +1 -13
  126. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +1 -1
  127. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +10 -2
  128. package/esm2022/locale/lib/locale/provide-locale.mjs +42 -0
  129. package/esm2022/locale/public-api.mjs +2 -1
  130. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +5 -1
  131. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +8 -1
  132. package/esm2022/mask/lib/mask/mask-formatter.module.mjs +8 -1
  133. package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +8 -1
  134. package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +8 -1
  135. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +2 -2
  136. package/esm2022/number-input/lib/number-input/number-input.module.mjs +9 -2
  137. package/esm2022/numeric/lib/numeric.module.mjs +8 -1
  138. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +178 -15
  139. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.module.mjs +8 -1
  140. package/esm2022/object-card/lib/object-card/object-card.module.mjs +12 -1
  141. package/esm2022/panel/lib/panel/panel.module.mjs +11 -1
  142. package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +8 -1
  143. package/esm2022/picklist/lib/picklist/picklist.module.mjs +8 -1
  144. package/esm2022/pin-code-field/lib/pin-code-field.module.mjs +8 -1
  145. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +8 -1
  146. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +8 -1
  147. package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +8 -1
  148. package/esm2022/select/lib/select/select.component.mjs +16 -3
  149. package/esm2022/select-button/lib/select-button/select-button.module.mjs +8 -1
  150. package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +8 -1
  151. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.mjs +8 -1
  152. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.service.mjs +4 -3
  153. package/esm2022/slider/lib/slider/slider.module.mjs +8 -1
  154. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +8 -1
  155. package/esm2022/split-button/lib/split-button/split-button.module.mjs +8 -1
  156. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +8 -1
  157. package/esm2022/stepper/lib/stepper/stepper.module.mjs +8 -1
  158. package/esm2022/structure/lib/structure/structure.module.mjs +8 -1
  159. package/esm2022/switch/lib/switch/switch.module.mjs +8 -1
  160. package/esm2022/table/lib/table/table.module.mjs +9 -1
  161. package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +8 -1
  162. package/esm2022/template/lib/template/template.module.mjs +8 -1
  163. package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
  164. package/esm2022/text-area/lib/text-area.module.mjs +8 -1
  165. package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +8 -1
  166. package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +8 -1
  167. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +8 -1
  168. package/esm2022/tile/lib/tile/tile.module.mjs +11 -1
  169. package/esm2022/timeline/lib/timeline/timeline.module.mjs +8 -1
  170. package/esm2022/toast/lib/toast/toast.module.mjs +8 -1
  171. package/esm2022/token-list/lib/token-list/token-list.module.mjs +8 -1
  172. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +8 -1
  173. package/esm2022/topbar/lib/topbar/topbar.module.mjs +11 -1
  174. package/esm2022/tree/lib/tree/tree.module.mjs +8 -1
  175. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +8 -1
  176. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +7 -0
  177. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  178. package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -0
  179. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  180. package/fesm2022/seniorsistemas-angular-components-badge.mjs +10 -0
  181. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  182. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +25 -126
  183. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  184. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -1
  185. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  186. package/fesm2022/seniorsistemas-angular-components-button.mjs +7 -0
  187. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  188. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -0
  189. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  190. package/fesm2022/seniorsistemas-angular-components-card.mjs +23 -2
  191. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  192. package/fesm2022/seniorsistemas-angular-components-chat.mjs +7 -0
  193. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  194. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -0
  195. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  196. package/fesm2022/seniorsistemas-angular-components-chips.mjs +9 -2
  197. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  198. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +164 -160
  199. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  200. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -0
  201. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  202. package/fesm2022/seniorsistemas-angular-components-common.mjs +38 -2
  203. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  204. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +7 -0
  205. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  206. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -0
  207. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  208. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +21 -8
  209. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  210. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +75 -15
  211. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  212. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +2 -2
  213. package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
  214. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +10 -0
  215. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  216. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +54 -212
  217. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  218. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -0
  219. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  220. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +7 -0
  221. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  222. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +7 -0
  223. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  224. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +10 -2
  225. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  226. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +7 -0
  227. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  228. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +18 -0
  229. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  230. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +7 -0
  231. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  232. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +7 -0
  233. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  234. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +14 -2
  235. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  236. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -0
  237. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  238. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +7 -0
  239. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  240. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +11 -4
  241. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  242. package/fesm2022/seniorsistemas-angular-components-input-group.mjs +7 -0
  243. package/fesm2022/seniorsistemas-angular-components-input-group.mjs.map +1 -1
  244. package/fesm2022/seniorsistemas-angular-components-input-mask.mjs +7 -0
  245. package/fesm2022/seniorsistemas-angular-components-input-mask.mjs.map +1 -1
  246. package/fesm2022/seniorsistemas-angular-components-input-text.mjs +7 -0
  247. package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
  248. package/fesm2022/seniorsistemas-angular-components-insights.mjs +10 -0
  249. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  250. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +13 -2
  251. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  252. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -0
  253. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  254. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -0
  255. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  256. package/fesm2022/seniorsistemas-angular-components-locale.mjs +58 -5
  257. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  258. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +11 -0
  259. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  260. package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -0
  261. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  262. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +7 -0
  263. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  264. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +7 -0
  265. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  266. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +9 -2
  267. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  268. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +184 -14
  269. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  270. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +7 -0
  271. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  272. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +11 -0
  273. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  274. package/fesm2022/seniorsistemas-angular-components-panel.mjs +10 -0
  275. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  276. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +7 -0
  277. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  278. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -0
  279. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  280. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +7 -0
  281. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  282. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -0
  283. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  284. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +7 -0
  285. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  286. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -0
  287. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  288. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +7 -0
  289. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  290. package/fesm2022/seniorsistemas-angular-components-select.mjs +15 -2
  291. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  292. package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -0
  293. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +10 -2
  295. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-slider.mjs +7 -0
  297. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +7 -0
  299. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -0
  301. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -0
  303. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +7 -0
  305. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-structure.mjs +7 -0
  307. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -0
  309. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -0
  311. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-table.mjs +8 -0
  313. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-template.mjs +7 -0
  315. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +9 -2
  317. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +7 -0
  319. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +7 -0
  321. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +7 -0
  323. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-tile.mjs +10 -0
  325. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +7 -0
  327. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-toast.mjs +7 -0
  329. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -0
  331. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +7 -0
  333. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +10 -0
  335. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-tree.mjs +7 -0
  337. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -0
  339. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  340. package/fieldset/README.md +2 -2
  341. package/fieldset/lib/fieldset/fieldset.module.d.ts +7 -0
  342. package/file-picker/README.md +2 -2
  343. package/file-picker/lib/file-picker/file-picker.module.d.ts +7 -0
  344. package/file-upload/README.md +1 -1
  345. package/gantt/README.md +2 -2
  346. package/gantt/lib/gantt/gantt.module.d.ts +7 -0
  347. package/global-search/README.md +5 -2
  348. package/global-search/lib/global-search/global-search.module.d.ts +18 -0
  349. package/grid-menu/README.md +5 -4
  350. package/grid-menu/lib/grid-menu/grid-menu.module.d.ts +7 -0
  351. package/help-popover/README.md +5 -4
  352. package/help-popover/lib/help-popover/help-popover.module.d.ts +7 -0
  353. package/ia-insight/README.md +1 -1
  354. package/image-cropper/README.md +6 -5
  355. package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +11 -0
  356. package/infinite-scroll/README.md +5 -4
  357. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.d.ts +7 -0
  358. package/info-sign/README.md +5 -4
  359. package/info-sign/lib/info-sign/info-sign.module.d.ts +7 -0
  360. package/inline-edit/README.md +5 -4
  361. package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +7 -0
  362. package/input-group/lib/input-group/input-group.module.d.ts +7 -0
  363. package/input-mask/lib/input-mask/input-mask.module.d.ts +7 -0
  364. package/input-text/lib/input-text/input-text.module.d.ts +7 -0
  365. package/insights/README.md +6 -4
  366. package/insights/lib/insights/insights.module.d.ts +10 -0
  367. package/kanban/README.md +6 -4
  368. package/kanban/lib/kanban/kanban.module.d.ts +10 -0
  369. package/label-value/README.md +5 -4
  370. package/label-value/lib/label-value/label-value.module.d.ts +7 -0
  371. package/loading-state/README.md +9 -5
  372. package/loading-state/lib/loading-state/loading-state.module.d.ts +7 -0
  373. package/locale/lib/locale/locale.module.d.ts +13 -0
  374. package/locale/lib/locale/pipes/localized-bignumber-impure.pipe.d.ts +2 -2
  375. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +20 -1
  376. package/locale/lib/locale/provide-locale.d.ts +18 -0
  377. package/locale/public-api.d.ts +1 -0
  378. package/localized-number-input/README.md +32 -8
  379. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +4 -0
  380. package/localized-number-input/lib/localized-number-input/localized-number-input.module.d.ts +7 -0
  381. package/mask/lib/mask/mask-formatter.module.d.ts +7 -0
  382. package/mouse-events/README.md +5 -4
  383. package/mouse-events/lib/mouse-events/mouse-events.module.d.ts +7 -0
  384. package/navigation-button/README.md +5 -4
  385. package/navigation-button/lib/navigation-button/navigation-button.module.d.ts +7 -0
  386. package/number-input/lib/number-input/number-input.directive.d.ts +1 -1
  387. package/number-input/lib/number-input/number-input.module.d.ts +8 -1
  388. package/numeric/README.md +6 -5
  389. package/numeric/lib/numeric.module.d.ts +7 -0
  390. package/numeric-mask/README.md +44 -1
  391. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +65 -4
  392. package/numeric-mask/lib/numeric-mask/numeric-mask.module.d.ts +7 -0
  393. package/object-card/README.md +11 -4
  394. package/object-card/lib/object-card/object-card.module.d.ts +11 -0
  395. package/package.json +1 -1
  396. package/panel/README.md +8 -4
  397. package/panel/lib/panel/panel.module.d.ts +10 -0
  398. package/password-strength/README.md +6 -3
  399. package/password-strength/lib/password-strength/password-strength.module.d.ts +7 -0
  400. package/picklist/README.md +8 -5
  401. package/picklist/lib/picklist/picklist.module.d.ts +7 -0
  402. package/pin-code-field/lib/pin-code-field.module.d.ts +7 -0
  403. package/product-header/README.md +2 -2
  404. package/profile-picture-picker/README.md +6 -3
  405. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.d.ts +7 -0
  406. package/progressbar/README.md +6 -3
  407. package/progressbar/lib/progressbar/progressbar.module.d.ts +7 -0
  408. package/rating-scale/README.md +6 -3
  409. package/rating-scale/lib/rating-scale/rating-scale.module.d.ts +7 -0
  410. package/schematics/collection.json +40 -0
  411. package/schematics/migrations/migrate-app-to-standalone/index.d.ts +32 -0
  412. package/schematics/migrations/migrate-app-to-standalone/index.js +98 -0
  413. package/schematics/migrations/migrate-app-to-standalone/index.js.map +1 -0
  414. package/schematics/migrations/migrate-deprecated-apis/index.d.ts +49 -0
  415. package/schematics/migrations/migrate-deprecated-apis/index.js +660 -0
  416. package/schematics/migrations/migrate-deprecated-apis/index.js.map +1 -0
  417. package/schematics/migrations/migrate-deprecated-datepicker/index.d.ts +31 -0
  418. package/schematics/migrations/migrate-deprecated-datepicker/index.js +115 -0
  419. package/schematics/migrations/migrate-deprecated-datepicker/index.js.map +1 -0
  420. package/schematics/migrations/migrate-deprecated-dynamic-form/index.d.ts +52 -0
  421. package/schematics/migrations/migrate-deprecated-dynamic-form/index.js +661 -0
  422. package/schematics/migrations/migrate-deprecated-dynamic-form/index.js.map +1 -0
  423. package/schematics/migrations/migrate-deprecated-imports/index.d.ts +23 -0
  424. package/schematics/migrations/migrate-deprecated-imports/index.js +335 -0
  425. package/schematics/migrations/migrate-deprecated-imports/index.js.map +1 -0
  426. package/schematics/migrations/migrate-deprecated-selectors/index.d.ts +15 -0
  427. package/schematics/migrations/migrate-deprecated-selectors/index.js +76 -0
  428. package/schematics/migrations/migrate-deprecated-selectors/index.js.map +1 -0
  429. package/schematics/migrations/migrate-modules-to-standalone/index.d.ts +51 -0
  430. package/schematics/migrations/migrate-modules-to-standalone/index.js +632 -0
  431. package/schematics/migrations/migrate-modules-to-standalone/index.js.map +1 -0
  432. package/schematics/migrations/migrate-modules-to-standalone/modules-map.json +1656 -0
  433. package/schematics/migrations/migrate-v20/index.d.ts +9 -0
  434. package/schematics/migrations/migrate-v20/index.js +90 -0
  435. package/schematics/migrations/migrate-v20/index.js.map +1 -0
  436. package/schematics/migrations/migrate-v20/items.d.ts +7 -0
  437. package/schematics/migrations/migrate-v20/items.js +54 -0
  438. package/schematics/migrations/migrate-v20/items.js.map +1 -0
  439. package/schematics/migrations/migrate-v20/plan.d.ts +32 -0
  440. package/schematics/migrations/migrate-v20/plan.js +29 -0
  441. package/schematics/migrations/migrate-v20/plan.js.map +1 -0
  442. package/schematics/migrations.json +5 -1
  443. package/schematics/schema/app-standalone.schema.json +21 -0
  444. package/schematics/schema/migrate-v20.schema.json +33 -0
  445. package/schematics/schema/scope.schema.json +17 -0
  446. package/schematics/utils/ast-utils.js +16 -0
  447. package/schematics/utils/ast-utils.js.map +1 -1
  448. package/schematics/utils/eol.d.ts +5 -0
  449. package/schematics/utils/eol.js +17 -0
  450. package/schematics/utils/eol.js.map +1 -0
  451. package/schematics/utils/prompt-utils.d.ts +62 -0
  452. package/schematics/utils/prompt-utils.js +166 -0
  453. package/schematics/utils/prompt-utils.js.map +1 -0
  454. package/schematics/utils/report.d.ts +27 -0
  455. package/schematics/utils/report.js +70 -0
  456. package/schematics/utils/report.js.map +1 -0
  457. package/schematics/utils/scope.d.ts +17 -0
  458. package/schematics/utils/scope.js +55 -0
  459. package/schematics/utils/scope.js.map +1 -0
  460. package/schematics/utils/selection.d.ts +21 -0
  461. package/schematics/utils/selection.js +60 -0
  462. package/schematics/utils/selection.js.map +1 -0
  463. package/schematics/utils/symbol-utils.d.ts +31 -0
  464. package/schematics/utils/symbol-utils.js +202 -0
  465. package/schematics/utils/symbol-utils.js.map +1 -0
  466. package/schematics/utils/template-utils.d.ts +62 -0
  467. package/schematics/utils/template-utils.js +165 -0
  468. package/schematics/utils/template-utils.js.map +1 -0
  469. package/schematics/utils/tsconfig-paths.d.ts +5 -0
  470. package/schematics/utils/tsconfig-paths.js +73 -0
  471. package/schematics/utils/tsconfig-paths.js.map +1 -0
  472. package/select/lib/select/select.component.d.ts +8 -0
  473. package/select-button/README.md +6 -3
  474. package/select-button/lib/select-button/select-button.module.d.ts +7 -0
  475. package/shared/lib/shared/border-button/border-button.module.d.ts +7 -0
  476. package/sidebar/README.md +2 -2
  477. package/slide-in-bar/README.md +5 -5
  478. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.d.ts +7 -0
  479. package/slider/README.md +6 -3
  480. package/slider/lib/slider/slider.module.d.ts +7 -0
  481. package/speech-recognition/README.md +6 -3
  482. package/speech-recognition/lib/speech-recognition/speech-recognition.module.d.ts +7 -0
  483. package/split-button/README.md +6 -3
  484. package/split-button/lib/split-button/split-button.module.d.ts +7 -0
  485. package/stats-card/README.md +6 -3
  486. package/stats-card/lib/stats-card/stats-card.module.d.ts +7 -0
  487. package/stepper/README.md +6 -3
  488. package/stepper/lib/stepper/stepper.module.d.ts +7 -0
  489. package/structure/lib/structure/structure.module.d.ts +7 -0
  490. package/switch/README.md +6 -3
  491. package/switch/lib/switch/switch.module.d.ts +7 -0
  492. package/table/README.md +12 -4
  493. package/table/lib/table/table.module.d.ts +8 -0
  494. package/table-header/lib/table-header/table-header-checkox.module.d.ts +7 -0
  495. package/template/README.md +0 -11
  496. package/template/lib/template/template.module.d.ts +7 -0
  497. package/text-area/lib/text-area.module.d.ts +7 -0
  498. package/text-area-ia/README.md +1 -1
  499. package/thumbnail/lib/thumbnail/thumbnail.module.d.ts +7 -0
  500. package/thumbnails/lib/thumbnails/thumbnails.module.d.ts +7 -0
  501. package/tiered-menu/lib/tiered-menu/tiered-menu.module.d.ts +7 -0
  502. package/tile/lib/tile/tile.module.d.ts +10 -0
  503. package/timeline/lib/timeline/timeline.module.d.ts +7 -0
  504. package/toast/lib/toast/toast.module.d.ts +7 -0
  505. package/token-list/lib/token-list/token-list.module.d.ts +7 -0
  506. package/tooltip/lib/tooltip/tooltip.module.d.ts +7 -0
  507. package/topbar/lib/topbar/topbar.module.d.ts +10 -0
  508. package/tree/lib/tree/tree.module.d.ts +7 -0
  509. package/workspace-switch/lib/workspace-switch/workspace-switch.module.d.ts +7 -0
  510. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +0 -664
  511. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +0 -29
  512. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +0 -96
  513. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +0 -124
@@ -94,12 +94,15 @@ export class CountryPhonePickerComponent {
94
94
  this._createDropdownPortal();
95
95
  }
96
96
  else {
97
- if (this._portalHost?.hasAttached()) {
98
- this._portalHost.detach();
99
- }
97
+ this._detachDropdownPortal();
100
98
  this.phoneInput?.nativeElement?.focus();
101
99
  }
102
100
  }
101
+ _detachDropdownPortal() {
102
+ if (this._portalHost?.hasAttached()) {
103
+ this._portalHost.detach();
104
+ }
105
+ }
103
106
  onClickout(event) {
104
107
  if (!this._eRef.nativeElement.contains(event.target)) {
105
108
  const clickedOnFilterInput = this.filterInput?.nativeElement === event.target;
@@ -151,7 +154,9 @@ export class CountryPhonePickerComponent {
151
154
  if (isDisabled) {
152
155
  this.phone.disable({ emitEvent: false });
153
156
  this.filter.disable({ emitEvent: false });
154
- this.open = false;
157
+ // Fecha sem devolver o foco ao input, senão a página rola até o campo ao desabilitar o form
158
+ this._open = false;
159
+ this._detachDropdownPortal();
155
160
  }
156
161
  else {
157
162
  this.phone.enable({ emitEvent: false });
@@ -318,7 +323,7 @@ export class CountryPhonePickerComponent {
318
323
  },
319
324
  CountryPhonePickerService,
320
325
  provideNgxMask(),
321
- ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{opacity:.5;pointer-events:none}.country-phone-picker--disabled .drop{cursor:not-allowed}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
326
+ ], viewQueries: [{ propertyName: "phoneInput", first: true, predicate: ["phoneInput"], descendants: true, static: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true }, { propertyName: "viewContainerRef", first: true, predicate: ["dropElement"], descendants: true, read: ViewContainerRef }, { propertyName: "dropElement", first: true, predicate: ["dropElement"], descendants: true, read: ElementRef }, { propertyName: "dropdownContainer", first: true, predicate: ["#dropdownContainer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{pointer-events:none}.country-phone-picker--disabled .drop{cursor:default}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}.country-phone-picker.country-phone-picker--disabled .phone-input{background-color:#fbfafc;border-color:#dedce5;color:#c1c1cc}.country-phone-picker.country-phone-picker--disabled .phone-input input{background-color:transparent;color:#c1c1cc}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgxMaskDirective, selector: "input[mask], textarea[mask]", inputs: ["mask", "specialCharacters", "patterns", "prefix", "suffix", "thousandSeparator", "decimalMarker", "dropSpecialCharacters", "hiddenInput", "showMaskTyped", "placeHolderCharacter", "shownMaskExpression", "clearIfNotMatch", "validation", "separatorLimit", "allowNegativeNumbers", "leadZeroDateTime", "leadZero", "triggerOnMaskChange", "apm", "inputTransformFn", "outputTransformFn", "keepCharacterPositions", "instantPrefix"], outputs: ["maskFilled"], exportAs: ["mask", "ngxMask"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
322
327
  }
323
328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerComponent, decorators: [{
324
329
  type: Component,
@@ -330,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
330
335
  },
331
336
  CountryPhonePickerService,
332
337
  provideNgxMask(),
333
- ], standalone: true, imports: [NgClass, NgxMaskDirective, FormsModule, ReactiveFormsModule, NgStyle, TranslatePipe], template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{opacity:.5;pointer-events:none}.country-phone-picker--disabled .drop{cursor:not-allowed}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}\n"] }]
338
+ ], standalone: true, imports: [NgClass, NgxMaskDirective, FormsModule, ReactiveFormsModule, NgStyle, TranslatePipe], template: "<div\n class=\"country-phone-picker\"\n [class.country-phone-picker--disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n>\n <div\n #dropElement\n class=\"phone-input\"\n >\n <div\n class=\"drop\"\n (click)=\"!disabled && (open = !open)\"\n >\n <span\n class=\"drop-flag\"\n [ngClass]=\"'fi fi-' + selectedItem?.id\"\n >\n </span>\n <span class=\"drop-icon fas fa-caret-down\"></span>\n </div>\n <p class=\"phone-ddi\">{{ selectedItem?.ddi }}</p>\n <input\n #phoneInput\n type=\"tel\"\n [mask]=\"mask\"\n [placeholder]=\"getPlaceholder()\"\n [formControl]=\"phone\"\n (focus)=\"onPhoneInputFocus()\"\n (blur)=\"onBlur(value)\"\n />\n </div>\n <ng-template #dropdownTemplate>\n @if (open) {\n <div\n #dropdownContainer\n class=\"dropdown\"\n [ngStyle]=\"{\n position: 'absolute',\n top: dropTop + 'px',\n left: dropLeft + 'px',\n }\"\n >\n <div class=\"search\">\n <input\n class=\"search-field\"\n type=\"text\"\n [formControl]=\"filter\"\n #filterInput\n />\n <span class=\"search-icon fas fa-search\"></span>\n <span\n class=\"search-clear fa fa-times\"\n (click)=\"onCleanFilter()\"\n ></span>\n </div>\n <ul class=\"select-list\">\n @for (country of filteredCountriesList; track $index) {\n <li\n class=\"select-option\"\n [ngClass]=\"{ 'select-option--focused': $index === currentItemIndex }\"\n (click)=\"onSelectItem(country)\"\n >\n <span\n class=\"select-option__flag\"\n [ngClass]=\"'fi fi-' + country.id\"\n >\n </span>\n <span class=\"select-option__name\">\n {{ 'platform.angular_components.country_name_' + country.id | translate }}\n </span>\n <span class=\"select-option__ddi\">\n {{ country.ddi }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n </ng-template>\n</div>\n", styles: [":host.ng-invalid.ng-dirty .phone-input{border-color:#c13018}.country-phone-picker--disabled{pointer-events:none}.country-phone-picker--disabled .drop{cursor:default}.country-phone-picker:has(input:focus-visible){border-radius:4px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}.country-phone-picker .phone-input{background-color:#fff;border:1px solid #d8d8d8;border-radius:4px;display:flex;line-height:normal;overflow:hidden}.country-phone-picker .phone-input .drop{align-items:center;cursor:pointer;display:flex}.country-phone-picker .phone-input .drop .drop-flag{margin-left:12px}.country-phone-picker .phone-input .drop .drop-icon{font-size:12px;margin:0 8px}.country-phone-picker .phone-input .phone-ddi{margin:8px 0}.country-phone-picker .phone-input input{border:none;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;line-height:150%;margin-left:8px}.country-phone-picker .phone-input input:focus-visible{color:#697882;outline:0}.dropdown{background-color:#fff;border-radius:4px;box-shadow:0 4px 5px #0003;padding:4px 0;position:absolute;margin:2px 0;z-index:999999}.dropdown .search{align-items:center;display:flex;padding:8px 12px}.dropdown .search .search-field{border:1px solid #d8d8d8;border-radius:4px;flex-grow:1;font-family:Open Sans,sans-serif;font-size:14px;font-weight:400;height:36px;line-height:150%;padding:0 32px 0 8px}.dropdown .search .search-icon{color:#333;font-size:12px;position:relative;right:24px}.dropdown .search .search-clear{color:#333;cursor:pointer;font-size:1rem}.dropdown .select-list{list-style:none;max-height:234px;min-width:360px;max-width:100vw;overflow:scroll;padding:0}.dropdown .select-list .select-option{cursor:pointer;display:flex;padding:12px;-webkit-user-select:none;user-select:none}.dropdown .select-list .select-option .select-option__flag{margin-right:12px}.dropdown .select-list .select-option .select-option__name{margin-right:.5rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dropdown .select-list .select-option .select-option__ddi{color:#697882;font-size:14px;font-family:Open Sans,sans-serif;font-weight:400;line-height:150%}.dropdown .select-list .select-option:hover,.dropdown .select-list .select-option--focused{background-color:#e5eaea}.country-phone-picker.country-phone-picker--disabled .phone-input{background-color:#fbfafc;border-color:#dedce5;color:#c1c1cc}.country-phone-picker.country-phone-picker--disabled .phone-input input{background-color:transparent;color:#c1c1cc}\n"] }]
334
339
  }], propDecorators: { countries: [{
335
340
  type: Input
336
341
  }], ordination: [{
@@ -364,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
364
369
  type: HostListener,
365
370
  args: ['keydown', ['$event']]
366
371
  }] } });
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUVILGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdD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QkFoQnZDLFNBQVM7K0JBQ0ksd0JBQXdCLGFBR3ZCO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDRCQUE0QixDQUFDOzRCQUMxRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRCx5QkFBeUI7d0JBQ3pCLGNBQWMsRUFBRTtxQkFDbkIsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUM7OEJBZ0J2RixTQUFTO3NCQURmLEtBQUs7Z0JBVUMsVUFBVTtzQkFEaEIsS0FBSztnQkFRQyxRQUFRO3NCQURkLE1BQU07Z0JBUUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEIsV0FBVztzQkFEM0IsU0FBUzt1QkFBQyxhQUFhO2dCQXNCakIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGtCQUFrQjtnQkFJdEIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFJN0MsV0FBVztzQkFEakIsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUl2QyxpQkFBaUI7c0JBRHZCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQThCOUMsVUFBVTtzQkFEaEIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXbkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVBvcnRhbE91dGxldCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIERlc3Ryb3lSZWYsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUExBVEZPUk1fSUQsXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBpbmplY3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHtcclxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIsIE5nQ2xhc3MsIE5nU3R5bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEgfSBmcm9tICcuL21vZGVscy9jb3VudHJ5LXBob25lLWRhdGEnO1xyXG5pbXBvcnQgeyBPcmRpbmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvb3JkaW5hdGlvbic7XHJcblxyXG5pbXBvcnQgeyBQaG9uZVNlbGVjdGlvbkRhdGEgfSBmcm9tICcuL21vZGVscy9waG9uZS1zZWxlY3Rpb24tZGF0YSc7XHJcbmltcG9ydCB7IE5neE1hc2tEaXJlY3RpdmUsIHByb3ZpZGVOZ3hNYXNrIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnRlIHNlbGV0b3IgZGUgcGHDrXMgZSBuw7ptZXJvIGRlIHRlbGVmb25lIGNvbSBtw6FzY2FyYSBkaW7Dom1pY2EuXHJcbiAqIEV4aWJlIHVtYSBsaXN0YSBkZSBwYcOtc2VzIGNvbSBzZXVzIGPDs2RpZ29zIERESSBlIGFwbGljYSBhdXRvbWF0aWNhbWVudGUgYSBtw6FzY2FyYVxyXG4gKiBkZSBmb3JtYXRhw6fDo28gZG8gbsO6bWVybyBjb25mb3JtZSBvIHBhw61zIHNlbGVjaW9uYWRvLiBJbXBsZW1lbnRhIHtAbGluayBDb250cm9sVmFsdWVBY2Nlc3Nvcn1cclxuICogcGFyYSBpbnRlZ3Jhw6fDo28gY29tIGZvcm11bMOhcmlvcyBBbmd1bGFyLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDxzLWNvdW50cnktcGhvbmUtcGlja2VyXHJcbiAqICAgZm9ybUNvbnRyb2xOYW1lPVwidGVsZWZvbmVcIlxyXG4gKiAgIFtjb3VudHJpZXNdPVwiWydCUicsICdVUycsICdBUiddXCJcclxuICogICAoc2VsZWN0ZWQpPVwib25QYWlzU2VsZWNpb25hZG8oJGV2ZW50KVwiIC8+XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBAY2F0ZWdvcnkgSW5wdXRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncy1jb3VudHJ5LXBob25lLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCksXHJcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ291bnRyeVBob25lUGlja2VyU2VydmljZSxcclxuICAgICAgICBwcm92aWRlTmd4TWFzaygpLFxyXG4gICAgXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgTmd4TWFza0RpcmVjdGl2ZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nU3R5bGUsIFRyYW5zbGF0ZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlID0gaW5qZWN0KENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZVJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3Q8T2JqZWN0PihQTEFURk9STV9JRCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTGlzdGEgZGUgY8OzZGlnb3MgZGUgcGHDrXMgKElTTyAzMTY2LTEgYWxwaGEtMikgZXhpYmlkb3Mgbm8gc2VsZXRvci5cclxuICAgICAqIFF1YW5kbyB2YXppYSwgdG9kb3Mgb3MgcGHDrXNlcyBkaXNwb27DrXZlaXMgc8OjbyBsaXN0YWRvcy5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCBbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGNvdW50cmllczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBDcml0w6lyaW8gZGUgb3JkZW5hw6fDo28gZG9zIHBhw61zZXMgbmEgbGlzdGEuXHJcbiAgICAgKiBBY2VpdGEgb3MgdmFsb3JlcyBkbyBlbnVtIGBPcmRpbmF0aW9uYCAoZXguOiBwb3Igbm9tZSwgcG9yIERESSwgc2VtIG9yZGVuYcOnw6NvKS5cclxuICAgICAqXHJcbiAgICAgKiBAZGVmYXVsdCBPcmRpbmF0aW9uLk5PXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgb3JkaW5hdGlvbjogT3JkaW5hdGlvbiA9IE9yZGluYXRpb24uTk87XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyB1c3XDoXJpbyBzZWxlY2lvbmEgdW0gcGHDrXMgbm8gZHJvcGRvd24uXHJcbiAgICAgKiBFbWl0ZSB1bSBvYmpldG8ge0BsaW5rIENvdW50cnlQaG9uZURhdGF9IGNvbSBkYWRvcyBkbyBwYcOtcyBlc2NvbGhpZG8uXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8Q291bnRyeVBob25lRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBjYW1wbyBkZSBuw7ptZXJvIGRlIHRlbGVmb25lIHBlcmRlIG8gZm9jby5cclxuICAgICAqIEVtaXRlIG8gb2JqZXRvIHtAbGluayBQaG9uZVNlbGVjdGlvbkRhdGF9IGNvbSBwYcOtcyBlIG7Dum1lcm8gYXR1YWlzLCBvdSBgbnVsbGAuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZvY3VzTG9zdDogRXZlbnRFbWl0dGVyPFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3Bob25lSW5wdXQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHBob25lSW5wdXQ6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdmaWx0ZXJJbnB1dCcpXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlcklucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgbWFzazogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtOiBDb3VudHJ5UGhvbmVEYXRhIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwdWJsaWMgY3VycmVudEl0ZW1JbmRleCA9IDA7XHJcbiAgICBwdWJsaWMgZmlsdGVyZWRDb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW10gPSBbXTtcclxuICAgIHB1YmxpYyBwaG9uZSA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xyXG4gICAgcHVibGljIGZpbHRlciA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpO1xyXG5cclxuICAgIHB1YmxpYyBkcm9wVG9wID0gMDtcclxuICAgIHB1YmxpYyBkcm9wTGVmdCA9IDA7XHJcbiAgICBwcml2YXRlIF92YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIF9vbkNoYW5nZT86ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkO1xyXG4gICAgcHJpdmF0ZSBfb25Ub3VjaGVkPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9jb3VudHJpZXNMaXN0OiBDb3VudHJ5UGhvbmVEYXRhW10gPSBbXTtcclxuICAgIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX29mZnNldFRvcCA9IDA7XHJcbiAgICBwcml2YXRlIF9wb3J0YWxIb3N0OiBEb21Qb3J0YWxPdXRsZXQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJylcclxuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcclxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnZHJvcEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcclxuICAgIHB1YmxpYyBkcm9wRWxlbWVudDogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJyNkcm9wZG93bkNvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gICAgcHVibGljIGRyb3Bkb3duQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb3BlbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fb3BlbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IG9wZW4ob3BlbjogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX29wZW4gPSBvcGVuO1xyXG5cclxuICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEcm9wZG93blBvcnRhbCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wb3J0YWxIb3N0Py5oYXNBdHRhY2hlZCgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmRldGFjaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmVJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uQ2xpY2tvdXQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2VSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsaWNrZWRPbkZpbHRlcklucHV0ID0gdGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuICYmICFjbGlja2VkT25GaWx0ZXJJbnB1dCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICcgJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IHRoaXMuX2NvdW50cmllc0xpc3RbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nICYmIHRoaXMub3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9Eb3duKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyAmJiB0aGlzLm9wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5fbW92ZVRvVXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlPy5pZCkge1xyXG4gICAgICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKHsgaWQgfSkgPT4gaWQgPT09IHZhbHVlLmlkKTtcclxuICAgICAgICAgICAgaWYgKGNvdW50cnkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0SXRlbShjb3VudHJ5WzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlPy5yYXdWYWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLnNldFZhbHVlKHZhbHVlLnJhd1ZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBvbkNoYW5nZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX29uVG91Y2hlZCA9IG9uVG91Y2hlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcblxyXG4gICAgICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmUuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLl9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLmdldENvdW50cmllcyh0aGlzLm9yZGluYXRpb24pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiB0aGlzLmNvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmlkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG5cclxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcclxuICAgICAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyAnJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xyXG4gICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzTG9zdC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TWFzaygpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlPy5yYXdWYWx1ZSB8fCB0aGlzLnZhbHVlLnJhd1ZhbHVlLmxlbmd0aCA8PSBtYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cclxuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzaz8ucmVwbGFjZSgvOS9nLCAnJykgPz8gJy0gTk8gTUFTSyAtJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCk6IENvdW50cnlQaG9uZURhdGEge1xyXG4gICAgICAgIGlmICghdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gLFxyXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0LWxpc3QnKTtcclxuICAgICAgICBpZiAoIXNlbGVjdExpc3QpIHJldHVybjtcclxuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLl9vZmZzZXRUb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wIC09IDQ1O1xyXG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNDUk9MTF9PRkZTRVRfVEhSRVNIT0xEID0gMTgwO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX0FNT1VOVF9QRVJfSVRFTSA9IDQ1O1xyXG5cclxuICAgIHByaXZhdGUgX21vdmVUb0Rvd24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xyXG4gICAgICAgIGlmICghc2VsZWN0TGlzdCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XHJcbiAgICAgICAgICAgIHRoaXMuX29mZnNldFRvcCArIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudC5TQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XHJcbiAgICAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5fb2Zmc2V0VG9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBtYXNrO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbT8ubWFzaykpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XHJcbiAgICAgICAgICAgIG1hc2sgPSB2YWx1ZS5sZW5ndGggPD0gcmF3TWFzay5sZW5ndGggPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdICsgJ1xcMCcgOiB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzFdICsgJ1xcMCc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XHJcbiAgICAgICAgbGV0IHJlcGxhY2UgPSAnJztcclxuICAgICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBtYXNrKSB7XHJcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdW11bGFkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb250YWRvcisrO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQke2NvbnRhZG9yfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gJ1xcMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlICs9IHRva2VuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBob25lLnZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCh0b2tlbnMpLCByZXBsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kcm9wRWxlbWVudCkpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50UmVjdCA9IHRoaXMuZHJvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kcm9wVG9wID0gZHJvcEVsZW1lbnRSZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgICAgIHRoaXMuZHJvcExlZnQgPSBkcm9wRWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChib2R5RWxlbWVudCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcbiAgICBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCJcbiAgICBbY2xhc3MuY291bnRyeS1waG9uZS1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkcm9wRWxlbWVudFxuICAgICAgICBjbGFzcz1cInBob25lLWlucHV0XCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkICYmIChvcGVuID0gIW9wZW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBRVgsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUVILGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdD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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG9tUG9ydGFsT3V0bGV0LCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRGVzdHJveVJlZixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBQTEFURk9STV9JRCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZixcclxuICAgIGluamVjdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQge1xyXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XHJcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ291bnRyeVBob25lRGF0YSB9IGZyb20gJy4vbW9kZWxzL2NvdW50cnktcGhvbmUtZGF0YSc7XHJcbmltcG9ydCB7IE9yZGluYXRpb24gfSBmcm9tICcuL21vZGVscy9vcmRpbmF0aW9uJztcclxuXHJcbmltcG9ydCB7IFBob25lU2VsZWN0aW9uRGF0YSB9IGZyb20gJy4vbW9kZWxzL3Bob25lLXNlbGVjdGlvbi1kYXRhJztcclxuaW1wb3J0IHsgTmd4TWFza0RpcmVjdGl2ZSwgcHJvdmlkZU5neE1hc2sgfSBmcm9tICduZ3gtbWFzayc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgc2VsZXRvciBkZSBwYcOtcyBlIG7Dum1lcm8gZGUgdGVsZWZvbmUgY29tIG3DoXNjYXJhIGRpbsOibWljYS5cclxuICogRXhpYmUgdW1hIGxpc3RhIGRlIHBhw61zZXMgY29tIHNldXMgY8OzZGlnb3MgRERJIGUgYXBsaWNhIGF1dG9tYXRpY2FtZW50ZSBhIG3DoXNjYXJhXHJcbiAqIGRlIGZvcm1hdGHDp8OjbyBkbyBuw7ptZXJvIGNvbmZvcm1lIG8gcGHDrXMgc2VsZWNpb25hZG8uIEltcGxlbWVudGEge0BsaW5rIENvbnRyb2xWYWx1ZUFjY2Vzc29yfVxyXG4gKiBwYXJhIGludGVncmHDp8OjbyBjb20gZm9ybXVsw6FyaW9zIEFuZ3VsYXIuXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHMtY291bnRyeS1waG9uZS1waWNrZXJcclxuICogICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlZm9uZVwiXHJcbiAqICAgW2NvdW50cmllc109XCJbJ0JSJywgJ1VTJywgJ0FSJ11cIlxyXG4gKiAgIChzZWxlY3RlZCk9XCJvblBhaXNTZWxlY2lvbmFkbygkZXZlbnQpXCIgLz5cclxuICogYGBgXHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBJbnB1dHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzLWNvdW50cnktcGhvbmUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LXBob25lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByb3ZpZGVOZ3hNYXNrKCksXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0NsYXNzLCBOZ3hNYXNrRGlyZWN0aXZlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmdTdHlsZSwgVHJhbnNsYXRlUGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UgPSBpbmplY3QoQ291bnRyeVBob25lUGlja2VyU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdDxPYmplY3Q+KFBMQVRGT1JNX0lEKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBMaXN0YSBkZSBjw7NkaWdvcyBkZSBwYcOtcyAoSVNPIDMxNjYtMSBhbHBoYS0yKSBleGliaWRvcyBubyBzZWxldG9yLlxyXG4gICAgICogUXVhbmRvIHZhemlhLCB0b2RvcyBvcyBwYcOtc2VzIGRpc3BvbsOtdmVpcyBzw6NvIGxpc3RhZG9zLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IFtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIENyaXTDqXJpbyBkZSBvcmRlbmHDp8OjbyBkb3MgcGHDrXNlcyBuYSBsaXN0YS5cclxuICAgICAqIEFjZWl0YSBvcyB2YWxvcmVzIGRvIGVudW0gYE9yZGluYXRpb25gIChleC46IHBvciBub21lLCBwb3IgRERJLCBzZW0gb3JkZW5hw6fDo28pLlxyXG4gICAgICpcclxuICAgICAqIEBkZWZhdWx0IE9yZGluYXRpb24uTk9cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBvcmRpbmF0aW9uOiBPcmRpbmF0aW9uID0gT3JkaW5hdGlvbi5OTztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIHVzdcOhcmlvIHNlbGVjaW9uYSB1bSBwYcOtcyBubyBkcm9wZG93bi5cclxuICAgICAqIEVtaXRlIHVtIG9iamV0byB7QGxpbmsgQ291bnRyeVBob25lRGF0YX0gY29tIGRhZG9zIGRvIHBhw61zIGVzY29saGlkby5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxDb3VudHJ5UGhvbmVEYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0aWRvIHF1YW5kbyBvIGNhbXBvIGRlIG7Dum1lcm8gZGUgdGVsZWZvbmUgcGVyZGUgbyBmb2NvLlxyXG4gICAgICogRW1pdGUgbyBvYmpldG8ge0BsaW5rIFBob25lU2VsZWN0aW9uRGF0YX0gY29tIHBhw61zIGUgbsO6bWVybyBhdHVhaXMsIG91IGBudWxsYC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZm9jdXNMb3N0OiBFdmVudEVtaXR0ZXI8UGhvbmVTZWxlY3Rpb25EYXRhIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgncGhvbmVJbnB1dCcsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgcGhvbmVJbnB1dDogRWxlbWVudFJlZiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JylcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVySW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBtYXNrOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvdW50cnlQaG9uZURhdGEgfCBudWxsID0gbnVsbDtcclxuICAgIHB1YmxpYyBjdXJyZW50SXRlbUluZGV4ID0gMDtcclxuICAgIHB1YmxpYyBmaWx0ZXJlZENvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xyXG4gICAgcHVibGljIHBob25lID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XHJcbiAgICBwdWJsaWMgZmlsdGVyID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XHJcblxyXG4gICAgcHVibGljIGRyb3BUb3AgPSAwO1xyXG4gICAgcHVibGljIGRyb3BMZWZ0ID0gMDtcclxuICAgIHByaXZhdGUgX3ZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgX29uQ2hhbmdlPzogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQ7XHJcbiAgICBwcml2YXRlIF9vblRvdWNoZWQ/OiAodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkgPT4gdm9pZDtcclxuICAgIHByaXZhdGUgX2NvdW50cmllc0xpc3Q6IENvdW50cnlQaG9uZURhdGFbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBfb3BlbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfb2Zmc2V0VG9wID0gMDtcclxuICAgIHByaXZhdGUgX3BvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVGVtcGxhdGUnKVxyXG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wRWxlbWVudCcsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkcm9wRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxyXG4gICAgcHVibGljIGRyb3BFbGVtZW50OiBFbGVtZW50UmVmIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnI2Ryb3Bkb3duQ29udGFpbmVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgICBwdWJsaWMgZHJvcGRvd25Db250YWluZXI6IEVsZW1lbnRSZWYgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSkge1xyXG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5tYXNrID0gdGhpcy5nZXRNYXNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBvcGVuKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgb3BlbihvcGVuOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fb3BlbiA9IG9wZW47XHJcblxyXG4gICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURyb3Bkb3duUG9ydGFsKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNoRHJvcGRvd25Qb3J0YWwoKTtcclxuICAgICAgICAgICAgdGhpcy5waG9uZUlucHV0Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9kZXRhY2hEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fcG9ydGFsSG9zdD8uaGFzQXR0YWNoZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmRldGFjaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25DbGlja291dChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY2xpY2tlZE9uRmlsdGVySW5wdXQgPSB0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQ7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4gJiYgIWNsaWNrZWRPbkZpbHRlcklucHV0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIHB1YmxpYyBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJyAnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fY291bnRyaWVzTGlzdFt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgJiYgdGhpcy5vcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vdmVUb0Rvd24oKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnICYmIHRoaXMub3Blbikge1xyXG4gICAgICAgICAgICB0aGlzLl9tb3ZlVG9VcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodmFsdWU/LmlkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cnkgPSB0aGlzLl9jb3VudHJpZXNMaXN0LmZpbHRlcigoeyBpZCB9KSA9PiBpZCA9PT0gdmFsdWUuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY291bnRyeS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TZWxlY3RJdGVtKGNvdW50cnlbMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWU/LnJhd1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUodmFsdWUucmF3VmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiBQaG9uZVNlbGVjdGlvbkRhdGEpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9vbkNoYW5nZSA9IG9uQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICh2YWx1ZTogUGhvbmVTZWxlY3Rpb25EYXRhKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkID0gb25Ub3VjaGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuXHJcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5waG9uZS5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXIuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIC8vIEZlY2hhIHNlbSBkZXZvbHZlciBvIGZvY28gYW8gaW5wdXQsIHNlbsOjbyBhIHDDoWdpbmEgcm9sYSBhdMOpIG8gY2FtcG8gYW8gZGVzYWJpbGl0YXIgbyBmb3JtXHJcbiAgICAgICAgICAgIHRoaXMuX29wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5fZGV0YWNoRHJvcGRvd25Qb3J0YWwoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBob25lLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLl9jb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlLmdldENvdW50cmllcyh0aGlzLm9yZGluYXRpb24pO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuX2ZpbHRlckNvdW50cmllcyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvdW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvdW50cmllc0xpc3QgPSBjb3VudHJpZXMuZmlsdGVyKChjb3VudHJ5KSA9PiB0aGlzLmNvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5LmlkKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY291bnRyaWVzTGlzdCA9IGNvdW50cmllcztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZENvdW50cmllc0xpc3QgPSB0aGlzLl9jb3VudHJpZXNMaXN0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gdGhpcy5fZ2V0U2VsZWN0ZWRDb3VudHJ5RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMubWFzayA9IHRoaXMuZ2V0TWFzaygpO1xyXG5cclxuICAgICAgICB0aGlzLnBob25lLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zZWxlY3RlZEl0ZW0uaWQsXHJcbiAgICAgICAgICAgICAgICBkZGk6IHRoaXMuc2VsZWN0ZWRJdGVtLmRkaSxcclxuICAgICAgICAgICAgICAgIHJhd1ZhbHVlOiB2YWx1ZSA/PyAnJyxcclxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IGAke3RoaXMuX2FwcGx5TWFzayh2YWx1ZSl9YCA6ICcnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fb25DaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2VsZWN0SXRlbShjb3VudHJ5OiBDb3VudHJ5UGhvbmVEYXRhKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBjb3VudHJ5O1xyXG4gICAgICAgIHRoaXMucGhvbmUuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleCA9IHRoaXMuX2NvdW50cmllc0xpc3QuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbGVhbkZpbHRlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZpbHRlci5zZXRWYWx1ZSgnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uUGhvbmVJbnB1dEZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IFBob25lU2VsZWN0aW9uRGF0YSB8IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvY3VzTG9zdC5lbWl0KHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0TWFzaygpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRJdGVtKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBtYXNrID0gdGhpcy5zZWxlY3RlZEl0ZW0ubWFzaztcclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobWFzaykpIHtcclxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLnZhbHVlPy5yYXdWYWx1ZSB8fCB0aGlzLnZhbHVlLnJhd1ZhbHVlLmxlbmd0aCA8PSBtYXNrWzBdLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgPyBtYXNrWzBdIC8vIGZpeG9cclxuICAgICAgICAgICAgICAgIDogbWFza1sxXTsgLy8gY2VsdWxhclxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzaz8ucmVwbGFjZSgvOS9nLCAnJykgPz8gJy0gTk8gTUFTSyAtJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9nZXRTZWxlY3RlZENvdW50cnlEZWZhdWx0KCk6IENvdW50cnlQaG9uZURhdGEge1xyXG4gICAgICAgIGlmICghdGhpcy5fY291bnRyaWVzTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBjb3VudHJ5IGxvYWRlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZmlsdGVyZWRCeUJyID0gdGhpcy5fY291bnRyaWVzTGlzdC5maWx0ZXIoKGNvdW50cnk6IENvdW50cnlQaG9uZURhdGEpID0+IGNvdW50cnkuaWQgPT09ICdicicpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmlsdGVyZWRCeUJyLmxlbmd0aCA/IGZpbHRlcmVkQnlCclswXSA6IHRoaXMuX2NvdW50cmllc0xpc3RbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyQ291bnRyaWVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRDb3VudHJpZXNMaXN0ID0gdGhpcy5fY291bnRyaWVzTGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkQ291bnRyaWVzTGlzdCA9IHRoaXMuX2NvdW50cmllc0xpc3QuZmlsdGVyKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudHJ5TmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuY291bnRyeV9uYW1lXyR7Y291bnRyeS5pZH1gLFxyXG4gICAgICAgICAgICAgICAgKSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyeU5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIF9tb3ZlVG9VcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50SXRlbUluZGV4ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY3VycmVudEl0ZW1JbmRleC0tO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RMaXN0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VsZWN0LWxpc3QnKTtcclxuICAgICAgICBpZiAoIXNlbGVjdExpc3QpIHJldHVybjtcclxuICAgICAgICBjb25zdCBpdGVtID0gc2VsZWN0TGlzdC5jaGlsZHJlblt0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG5cclxuICAgICAgICBpZiAoaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA8PSB0aGlzLl9vZmZzZXRUb3ApIHtcclxuICAgICAgICAgICAgdGhpcy5fb2Zmc2V0VG9wIC09IDQ1O1xyXG4gICAgICAgICAgICBzZWxlY3RMaXN0LnNjcm9sbFRvKDAsIHRoaXMuX29mZnNldFRvcCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IFNDUk9MTF9PRkZTRVRfVEhSRVNIT0xEID0gMTgwO1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU0NST0xMX0FNT1VOVF9QRVJfSVRFTSA9IDQ1O1xyXG5cclxuICAgIHByaXZhdGUgX21vdmVUb0Rvd24oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEl0ZW1JbmRleCA+PSB0aGlzLl9jb3VudHJpZXNMaXN0Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4Kys7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdExpc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3QtbGlzdCcpO1xyXG4gICAgICAgIGlmICghc2VsZWN0TGlzdCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZWxlY3RMaXN0LmNoaWxkcmVuW3RoaXMuY3VycmVudEl0ZW1JbmRleF07XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbS5vZmZzZXRUb3AgLSBzZWxlY3RMaXN0Lm9mZnNldFRvcCA+XHJcbiAgICAgICAgICAgIHRoaXMuX29mZnNldFRvcCArIENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudC5TQ1JPTExfT0ZGU0VUX1RIUkVTSE9MRFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9vZmZzZXRUb3AgKz0gQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50LlNDUk9MTF9BTU9VTlRfUEVSX0lURU07XHJcbiAgICAgICAgICAgIHNlbGVjdExpc3Quc2Nyb2xsVG8oMCwgdGhpcy5fb2Zmc2V0VG9wKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfYXBwbHlNYXNrKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBtYXNrO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkSXRlbT8ubWFzaykpIHtcclxuICAgICAgICAgICAgY29uc3QgcmF3TWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtLm1hc2tbMF0ucmVwbGFjZSgvW14wXS9nLCAnJyk7XHJcbiAgICAgICAgICAgIG1hc2sgPSB2YWx1ZS5sZW5ndGggPD0gcmF3TWFzay5sZW5ndGggPyB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzBdICsgJ1xcMCcgOiB0aGlzLnNlbGVjdGVkSXRlbS5tYXNrWzFdICsgJ1xcMCc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWFzayA9IHRoaXMuc2VsZWN0ZWRJdGVtPy5tYXNrICsgJ1xcMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdG9rZW5zID0gJyc7XHJcbiAgICAgICAgbGV0IHJlcGxhY2UgPSAnJztcclxuICAgICAgICBsZXQgYWN1bXVsYWRvciA9IDA7XHJcbiAgICAgICAgbGV0IGNvbnRhZG9yID0gMDtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCB0b2tlbiBvZiBtYXNrKSB7XHJcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZUludCh0b2tlbiwgMTApKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFjdW11bGFkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgKz0gYChcXFxcZHske2FjdW11bGFkb3J9fSlgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjb250YWRvcisrO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcGxhY2UgKz0gYCQke2NvbnRhZG9yfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGFjdW11bGFkb3IgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gJ1xcMCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXBsYWNlICs9IHRva2VuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYWN1bXVsYWRvcisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0b2tlbnMgPSBgXiR7dG9rZW5zfSpgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBob25lLnZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCh0b2tlbnMpLCByZXBsYWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVEcm9wZG93blBvcnRhbCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5kcm9wRWxlbWVudCkpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xyXG4gICAgICAgIGNvbnN0IGRyb3BFbGVtZW50UmVjdCA9IHRoaXMuZHJvcEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kcm9wVG9wID0gZHJvcEVsZW1lbnRSZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZO1xyXG4gICAgICAgIHRoaXMuZHJvcExlZnQgPSBkcm9wRWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChib2R5RWxlbWVudCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKFxyXG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duVGVtcGxhdGUgYXMgVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLl9wb3J0YWxIb3N0LmF0dGFjaChwb3J0YWwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXZcbiAgICBjbGFzcz1cImNvdW50cnktcGhvbmUtcGlja2VyXCJcbiAgICBbY2xhc3MuY291bnRyeS1waG9uZS1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICNkcm9wRWxlbWVudFxuICAgICAgICBjbGFzcz1cInBob25lLWlucHV0XCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiIWRpc2FibGVkICYmIChvcGVuID0gIW9wZW4pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtZmxhZ1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2ZpIGZpLScgKyBzZWxlY3RlZEl0ZW0/LmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1pY29uIGZhcyBmYS1jYXJldC1kb3duXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaG9uZS1kZGlcIj57eyBzZWxlY3RlZEl0ZW0/LmRkaSB9fTwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGhvbmVJbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRlbFwiXG4gICAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwaG9uZVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25QaG9uZUlucHV0Rm9jdXMoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIodmFsdWUpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgICAgIEBpZiAob3Blbikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogZHJvcFRvcCArICdweCcsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAjZmlsdGVySW5wdXRcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmYXMgZmEtc2VhcmNoXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtY2xlYXIgZmEgZmEtdGltZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xlYW5GaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2VsZWN0LWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoY291bnRyeSBvZiBmaWx0ZXJlZENvdW50cmllc0xpc3Q7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdzZWxlY3Qtb3B0aW9uLS1mb2N1c2VkJzogJGluZGV4ID09PSBjdXJyZW50SXRlbUluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEl0ZW0oY291bnRyeSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LW9wdGlvbl9fZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIidmaSBmaS0nICsgY291bnRyeS5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1vcHRpb25fX25hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jb3VudHJ5X25hbWVfJyArIGNvdW50cnkuaWQgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uX19kZGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY291bnRyeS5kZGkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -3,6 +3,13 @@ import { provideNgxMask } from 'ngx-mask';
3
3
  import { CountryPhonePickerService } from './country-phone-picker.service';
4
4
  import { CountryPhonePickerComponent } from './country-phone-picker.component';
5
5
  import * as i0 from "@angular/core";
6
+ /**
7
+ * @deprecated Será removido na v20. Importe diretamente o standalone `CountryPhonePickerComponent` (de
8
+ * `@seniorsistemas/angular-components/country-phone-picker`) no lugar deste módulo.
9
+ *
10
+ * Migração automática (também executada pelo `ng update` na v20):
11
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
12
+ */
6
13
  export class CountryPhonePickerModule {
7
14
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
15
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerModule, imports: [CountryPhonePickerComponent], exports: [CountryPhonePickerComponent] });
@@ -16,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
16
23
  providers: [CountryPhonePickerService, provideNgxMask()],
17
24
  }]
18
25
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFPL0UsTUFBTSxPQUFPLHdCQUF3Qjt3R0FBeEIsd0JBQXdCO3lHQUF4Qix3QkFBd0IsWUFKdkIsMkJBQTJCLGFBQzNCLDJCQUEyQjt5R0FHNUIsd0JBQXdCLGFBRnRCLENBQUMseUJBQXlCLEVBQUUsY0FBYyxFQUFFLENBQUMsWUFGOUMsMkJBQTJCOzs0RkFJNUIsd0JBQXdCO2tCQUxwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLEVBQUUsY0FBYyxFQUFFLENBQUM7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IHByb3ZpZGVOZ3hNYXNrIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuaW1wb3J0IHsgQ291bnRyeVBob25lUGlja2VyU2VydmljZSB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50XSxcclxuICAgIGV4cG9ydHM6IFtDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnRdLFxyXG4gICAgcHJvdmlkZXJzOiBbQ291bnRyeVBob25lUGlja2VyU2VydmljZSwgcHJvdmlkZU5neE1hc2soKV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJNb2R1bGUge31cclxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2NvdW50cnktcGhvbmUtcGlja2VyL3NyYy9saWIvY291bnRyeS1waG9uZS1waWNrZXIvY291bnRyeS1waG9uZS1waWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUxQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFFL0U7Ozs7OztHQU1HO0FBTUgsTUFBTSxPQUFPLHdCQUF3Qjt3R0FBeEIsd0JBQXdCO3lHQUF4Qix3QkFBd0IsWUFKdkIsMkJBQTJCLGFBQzNCLDJCQUEyQjt5R0FHNUIsd0JBQXdCLGFBRnRCLENBQUMseUJBQXlCLEVBQUUsY0FBYyxFQUFFLENBQUMsWUFGOUMsMkJBQTJCOzs0RkFJNUIsd0JBQXdCO2tCQUxwQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLDJCQUEyQixDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztvQkFDdEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLEVBQUUsY0FBYyxFQUFFLENBQUM7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IHByb3ZpZGVOZ3hNYXNrIH0gZnJvbSAnbmd4LW1hc2snO1xyXG5cclxuaW1wb3J0IHsgQ291bnRyeVBob25lUGlja2VyU2VydmljZSB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY291bnRyeS1waG9uZS1waWNrZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCBTZXLDoSByZW1vdmlkbyBuYSB2MjAuIEltcG9ydGUgZGlyZXRhbWVudGUgbyBzdGFuZGFsb25lIGBDb3VudHJ5UGhvbmVQaWNrZXJDb21wb25lbnRgIChkZVxyXG4gKiBgQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9jb3VudHJ5LXBob25lLXBpY2tlcmApIG5vIGx1Z2FyIGRlc3RlIG3Ds2R1bG8uXHJcbiAqXHJcbiAqIE1pZ3Jhw6fDo28gYXV0b23DoXRpY2EgKHRhbWLDqW0gZXhlY3V0YWRhIHBlbG8gYG5nIHVwZGF0ZWAgbmEgdjIwKTpcclxuICogYG5nIGdlbmVyYXRlIEBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHM6bWlncmF0ZS1tb2R1bGVzLXRvLXN0YW5kYWxvbmVgXHJcbiAqL1xyXG5ATmdNb2R1bGUoe1xyXG4gICAgaW1wb3J0czogW0NvdW50cnlQaG9uZVBpY2tlckNvbXBvbmVudF0sXHJcbiAgICBleHBvcnRzOiBbQ291bnRyeVBob25lUGlja2VyQ29tcG9uZW50XSxcclxuICAgIHByb3ZpZGVyczogW0NvdW50cnlQaG9uZVBpY2tlclNlcnZpY2UsIHByb3ZpZGVOZ3hNYXNrKCldLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ291bnRyeVBob25lUGlja2VyTW9kdWxlIHt9XHJcbiJdfQ==
@@ -31,9 +31,10 @@ export class CountryPhonePickerService {
31
31
  });
32
32
  }
33
33
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
34
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService });
34
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, providedIn: 'root' });
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CountryPhonePickerService, decorators: [{
37
- type: Injectable
37
+ type: Injectable,
38
+ args: [{ providedIn: 'root' }]
38
39
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb3VudHJ5LXBob25lLXBpY2tlci9zcmMvbGliL2NvdW50cnktcGhvbmUtcGlja2VyL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNqQixVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFHaEQsWUFBWSxDQUFDLFVBQXNCO1FBQ3RDLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxVQUFVLENBQUMsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RDLEtBQUssVUFBVSxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNoRCxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBbUIsRUFBRSxDQUFtQixFQUFFLEVBQUU7WUFDL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3RSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFN0UsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FoQ1EseUJBQXlCOzRHQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBDb3VudHJ5UGhvbmVEYXRhIH0gZnJvbSAnLi9tb2RlbHMvY291bnRyeS1waG9uZS1kYXRhJztcbmltcG9ydCB7IGNvdW50cmllcyB9IGZyb20gJy4vcmVzb3VyY2VzL2NvdW50cmllcyc7XG5pbXBvcnQgeyBPcmRpbmF0aW9uIH0gZnJvbSAnLi9tb2RlbHMvb3JkaW5hdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cblxuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMob3JkaW5hdGlvbjogT3JkaW5hdGlvbikge1xuICAgICAgICBzd2l0Y2ggKG9yZGluYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5BWjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc29ydEFscGhhYmV0aWNhbGx5KCk7XG4gICAgICAgICAgICBjYXNlIE9yZGluYXRpb24uWkE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5OTzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cmllcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseSgpOiBDb3VudHJ5UGhvbmVEYXRhW10ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLnNvcnQoKGE6IENvdW50cnlQaG9uZURhdGEsIGI6IENvdW50cnlQaG9uZURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50c18ke2EuaWR9YCk7XG4gICAgICAgICAgICBjb25zdCBiTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHtiLmlkfWApO1xuXG4gICAgICAgICAgICByZXR1cm4gYU5hbWUubG9jYWxlQ29tcGFyZShiTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTogQ291bnRyeVBob25lRGF0YVtdIHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5zb3J0KChhOiBDb3VudHJ5UGhvbmVEYXRhLCBiOiBDb3VudHJ5UGhvbmVEYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHthLmlkfWApO1xuICAgICAgICAgICAgY29uc3QgYk5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzXyR7Yi5pZH1gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJOYW1lLmxvY2FsZUNvbXBhcmUoYU5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1waG9uZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9jb3VudHJ5LXBob25lLXBpY2tlci9zcmMvbGliL2NvdW50cnktcGhvbmUtcGlja2VyL2NvdW50cnktcGhvbmUtcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHakQsTUFBTSxPQUFPLHlCQUF5QjtJQUNqQixVQUFVLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFHaEQsWUFBWSxDQUFDLFVBQXNCO1FBQ3RDLFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxVQUFVLENBQUMsRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RDLEtBQUssVUFBVSxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNoRCxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBbUIsRUFBRSxDQUFtQixFQUFFLEVBQUU7WUFDL0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUU3RSxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sNkJBQTZCO1FBQ2pDLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQW1CLEVBQUUsQ0FBbUIsRUFBRSxFQUFFO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFN0UsT0FBTyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0FoQ1EseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IENvdW50cnlQaG9uZURhdGEgfSBmcm9tICcuL21vZGVscy9jb3VudHJ5LXBob25lLWRhdGEnO1xuaW1wb3J0IHsgY291bnRyaWVzIH0gZnJvbSAnLi9yZXNvdXJjZXMvY291bnRyaWVzJztcbmltcG9ydCB7IE9yZGluYXRpb24gfSBmcm9tICcuL21vZGVscy9vcmRpbmF0aW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDb3VudHJ5UGhvbmVQaWNrZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cblxuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMob3JkaW5hdGlvbjogT3JkaW5hdGlvbikge1xuICAgICAgICBzd2l0Y2ggKG9yZGluYXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5BWjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc29ydEFscGhhYmV0aWNhbGx5KCk7XG4gICAgICAgICAgICBjYXNlIE9yZGluYXRpb24uWkE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTtcbiAgICAgICAgICAgIGNhc2UgT3JkaW5hdGlvbi5OTzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50cmllcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseSgpOiBDb3VudHJ5UGhvbmVEYXRhW10ge1xuICAgICAgICByZXR1cm4gY291bnRyaWVzLnNvcnQoKGE6IENvdW50cnlQaG9uZURhdGEsIGI6IENvdW50cnlQaG9uZURhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFOYW1lID0gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoYHBsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50c18ke2EuaWR9YCk7XG4gICAgICAgICAgICBjb25zdCBiTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHtiLmlkfWApO1xuXG4gICAgICAgICAgICByZXR1cm4gYU5hbWUubG9jYWxlQ29tcGFyZShiTmFtZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NvcnRBbHBoYWJldGljYWxseURlc2NlbmRpbmcoKTogQ291bnRyeVBob25lRGF0YVtdIHtcbiAgICAgICAgcmV0dXJuIGNvdW50cmllcy5zb3J0KChhOiBDb3VudHJ5UGhvbmVEYXRhLCBiOiBDb3VudHJ5UGhvbmVEYXRhKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhTmFtZSA9IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGBwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHNfJHthLmlkfWApO1xuICAgICAgICAgICAgY29uc3QgYk5hbWUgPSB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChgcGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzXyR7Yi5pZH1gKTtcblxuICAgICAgICAgICAgcmV0dXJuIGJOYW1lLmxvY2FsZUNvbXBhcmUoYU5hbWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=