@seniorsistemas/angular-components 19.0.5 → 19.0.7

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 (439) hide show
  1. package/accordion/lib/accordion/accordion.component.d.ts +25 -0
  2. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
  3. package/alert/lib/alert/alert.component.d.ts +40 -0
  4. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
  5. package/badge/lib/badge/badge.component.d.ts +20 -0
  6. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
  7. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
  8. package/button/lib/button/button.component.d.ts +101 -0
  9. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
  10. package/card/lib/card/card.component.d.ts +18 -0
  11. package/chat/lib/chat/chat.component.d.ts +20 -2
  12. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
  13. package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
  14. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
  15. package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
  16. package/chips/lib/chips/chips/chips.component.d.ts +41 -0
  17. package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
  18. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
  19. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
  20. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
  21. package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
  22. package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
  23. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
  24. package/currency/lib/currency.service.d.ts +15 -2
  25. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
  26. package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
  27. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
  28. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
  29. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
  30. package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
  31. package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
  32. package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
  33. package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
  34. package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
  35. package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
  36. package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
  37. package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
  38. package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
  39. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
  40. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
  41. package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
  42. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
  43. package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
  44. package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
  45. package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
  46. package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
  47. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
  50. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
  53. package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
  54. package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
  55. package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
  56. package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
  57. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
  58. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
  59. package/dynamic-form/public-api.d.ts +1 -0
  60. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
  61. package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
  62. package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
  63. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
  64. package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
  65. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
  66. package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
  67. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
  68. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
  69. package/esm2022/button/lib/button/button.component.mjs +102 -1
  70. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
  71. package/esm2022/card/lib/card/card.component.mjs +21 -6
  72. package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
  73. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
  74. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
  75. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
  76. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
  77. package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
  78. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
  79. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
  80. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
  81. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
  82. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
  83. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
  84. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
  85. package/esm2022/currency/lib/currency.service.mjs +21 -8
  86. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
  87. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
  88. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
  89. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
  90. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
  91. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
  92. package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
  93. package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
  94. package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
  95. package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
  96. package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
  97. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
  98. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
  99. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
  100. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
  101. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
  102. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
  103. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  104. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
  105. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
  106. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
  107. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
  108. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  109. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
  110. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  111. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  112. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
  113. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
  114. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
  115. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
  116. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
  117. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
  118. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
  119. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
  120. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
  121. package/esm2022/dynamic-form/public-api.mjs +2 -2
  122. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
  123. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
  124. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
  125. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
  126. package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
  127. package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
  128. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
  129. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
  130. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
  131. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
  132. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
  133. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
  134. package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
  135. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
  136. package/esm2022/kanban/lib/kanban/kanban.component.mjs +35 -17
  137. package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
  138. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
  139. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
  140. package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
  141. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
  142. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
  143. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
  144. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
  145. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
  146. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
  147. package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
  148. package/esm2022/numeric/lib/numeric.service.mjs +21 -1
  149. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
  150. package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
  151. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  152. package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
  153. package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
  154. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
  155. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
  156. package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
  157. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
  158. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
  159. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
  160. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
  161. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
  162. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
  163. package/esm2022/select/lib/select/select.component.mjs +35 -1
  164. package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
  165. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
  166. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
  167. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
  168. package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
  169. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
  170. package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
  171. package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
  172. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
  173. package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
  174. package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
  175. package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
  176. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
  177. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
  178. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
  179. package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
  180. package/esm2022/template/lib/template/template.directive.mjs +14 -2
  181. package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
  182. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
  183. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
  184. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
  185. package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
  186. package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
  187. package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
  188. package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
  189. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
  190. package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
  191. package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
  192. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
  193. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
  194. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
  196. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
  198. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
  200. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  201. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
  202. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  203. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
  204. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  205. package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
  206. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  207. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
  208. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  209. package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
  210. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  211. package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
  212. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  213. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
  214. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  215. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
  216. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  217. package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
  218. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  219. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
  220. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  221. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
  222. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  223. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
  224. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  225. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
  226. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  227. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
  228. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  229. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
  230. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  231. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
  232. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  233. package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
  234. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  235. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
  236. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  237. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
  238. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  239. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
  240. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  241. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
  242. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  243. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
  244. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  245. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
  246. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  247. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
  248. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  249. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
  250. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  251. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
  252. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  253. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
  254. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  255. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
  256. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  257. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
  258. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  259. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
  260. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  261. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
  262. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  263. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
  264. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  265. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
  266. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  267. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
  268. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  269. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +29 -11
  270. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  271. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
  272. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  273. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
  274. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  275. package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
  276. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  277. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
  278. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  279. package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
  280. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  281. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
  282. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  283. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
  284. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  285. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
  286. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  287. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
  288. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  289. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
  290. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  291. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
  292. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  293. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
  295. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
  297. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
  299. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
  301. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
  303. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
  305. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
  307. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
  309. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
  311. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
  313. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
  315. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
  317. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
  319. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
  321. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
  323. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
  325. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
  327. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
  329. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
  331. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
  333. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
  335. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
  337. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
  339. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
  341. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
  343. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
  345. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
  347. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
  349. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
  351. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
  353. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
  355. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
  357. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
  359. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
  361. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
  363. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
  365. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
  367. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
  369. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  370. package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
  371. package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
  372. package/gantt/lib/gantt/gantt.component.d.ts +31 -0
  373. package/global-search/lib/global-search/global-search.component.d.ts +29 -0
  374. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
  375. package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
  376. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
  377. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
  378. package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
  379. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
  380. package/insights/lib/insights/insights.component.d.ts +22 -0
  381. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
  382. package/kanban/lib/kanban/kanban.component.d.ts +25 -5
  383. package/label-value/lib/label-value/label-value.component.d.ts +13 -0
  384. package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
  385. package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
  386. package/locale/lib/locale/locale.service.d.ts +7 -0
  387. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
  388. package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
  389. package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
  390. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
  391. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
  392. package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
  393. package/numeric/lib/numeric.pipe.d.ts +15 -0
  394. package/numeric/lib/numeric.service.d.ts +20 -0
  395. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
  396. package/object-card/lib/object-card/object-card.component.d.ts +23 -0
  397. package/optional-fields/editor/editor-field.d.ts +19 -0
  398. package/package.json +18 -18
  399. package/paginator/lib/paginator/paginator.component.d.ts +19 -0
  400. package/panel/lib/panel/panel.component.d.ts +24 -3
  401. package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
  402. package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
  403. package/picklist/lib/picklist/picklist.component.d.ts +29 -0
  404. package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
  405. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
  406. package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
  407. package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
  408. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
  409. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
  410. package/select/lib/select/select.component.d.ts +34 -0
  411. package/select-button/lib/select-button/select-button.component.d.ts +34 -0
  412. package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
  413. package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
  414. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
  415. package/slider/lib/slider/slider.component.d.ts +72 -0
  416. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
  417. package/split-button/lib/split-button/split-button.component.d.ts +22 -0
  418. package/star-rating/star-rating/star-rating.component.d.ts +16 -0
  419. package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
  420. package/stepper/lib/stepper/stepper.component.d.ts +19 -0
  421. package/structure/lib/structure/footer.component.d.ts +10 -0
  422. package/switch/lib/switch/switch.component.d.ts +20 -0
  423. package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
  424. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
  425. package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
  426. package/tabs/lib/tabs/tabs.component.d.ts +28 -0
  427. package/template/lib/template/template.directive.d.ts +12 -0
  428. package/text-area/lib/text-area/text-area.component.d.ts +27 -0
  429. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
  430. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
  431. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
  432. package/tile/lib/tile/tile.component.d.ts +25 -0
  433. package/timeline/lib/timeline/timeline.component.d.ts +24 -0
  434. package/toast/lib/toast/toast.component.d.ts +22 -2
  435. package/token-list/lib/token-list/token-list.component.d.ts +21 -0
  436. package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
  437. package/topbar/lib/topbar/topbar.component.d.ts +17 -0
  438. package/tree/lib/tree/tree.component.d.ts +27 -0
  439. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
@@ -4,11 +4,11 @@ import { LocaleService } from '@seniorsistemas/angular-components/locale';
4
4
  import BigNumber from 'bignumber.js';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
- * Numeric mask directive with internationalization support.
7
+ * @description Diretiva de máscara numérica com suporte a internacionalização.
8
8
  *
9
- * Formats numeric values according to the specified locale, applying
10
- * appropriate thousand and decimal separators, with support for negative values,
11
- * min/max decimal places control, and scientific notation.
9
+ * Formata valores numéricos de acordo com o locale especificado, aplicando
10
+ * separadores de milhar e decimal adequados, com suporte a valores negativos,
11
+ * controle de casas decimais mín/máx e notação científica.
12
12
  *
13
13
  * @example
14
14
  * ```html
@@ -22,6 +22,7 @@ import * as i0 from "@angular/core";
22
22
  * [(ngModel)]="value"
23
23
  * />
24
24
  * ```
25
+ * @category Numeric
25
26
  */
26
27
  export class NumericMaskDirective {
27
28
  /**
@@ -355,7 +356,9 @@ export class NumericMaskDirective {
355
356
  const parts = formattedValue.split(this.decimalSeparator);
356
357
  const integerPart = parts[0];
357
358
  let decimalPart = parts[1] || '';
358
- const formattedInteger = new Intl.NumberFormat(this.currentLocale).format(parseInt(integerPart, 10) || 0).split(this.decimalSeparator)[0];
359
+ const formattedInteger = new Intl.NumberFormat(this.currentLocale)
360
+ .format(parseInt(integerPart, 10) || 0)
361
+ .split(this.decimalSeparator)[0];
359
362
  const effectiveDecimalPlaces = decimalPart.replace(/0+$/, '').length;
360
363
  const decimalPlacesToShow = Math.max(this.minDecimalPlaces(), Math.min(effectiveDecimalPlaces, this.maxDecimalPlaces()));
361
364
  decimalPart = decimalPart.substring(0, decimalPlacesToShow).padEnd(decimalPlacesToShow, '0');
@@ -535,4 +538,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
535
538
  ],
536
539
  }]
537
540
  }], ctorParameters: () => [] });
538
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1tYXNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9udW1lcmljLW1hc2svc3JjL2xpYi9udW1lcmljLW1hc2svbnVtZXJpYy1tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFHSCxhQUFhLEVBQ2IsaUJBQWlCLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQzs7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUEwQkgsTUFBTSxPQUFPLG9CQUFvQjtJQUM3Qjs7O09BR0c7SUFDSSxNQUFNLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVyRDs7O09BR0c7SUFDSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkM7OztPQUdHO0lBQ0ksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXBDOzs7T0FHRztJQUNJLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksdUJBQXVCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTdDOztPQUVHO0lBQ0ksR0FBRyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFbEQ7O09BRUc7SUFDSSxHQUFHLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUVqQyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUEsVUFB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T0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0o7OzRGQUVRLG9CQUFvQjtrQkF6QmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDRixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixTQUFTLEVBQUUsV0FBVzt3QkFDdEIsUUFBUSxFQUFFLFVBQVU7d0JBQ3BCLFNBQVMsRUFBRSxpQkFBaUI7d0JBQzVCLFdBQVcsRUFBRSxtQkFBbUI7d0JBQ2hDLFlBQVksRUFBRSxvQkFBb0I7d0JBQ2xDLG9CQUFvQixFQUFFLFNBQVM7cUJBQ2xDO29CQUNELFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIGlucHV0LCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2wsXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBWYWxpZGF0aW9uRXJyb3JzLFxuICAgIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG4vKipcbiAqIE51bWVyaWMgbWFzayBkaXJlY3RpdmUgd2l0aCBpbnRlcm5hdGlvbmFsaXphdGlvbiBzdXBwb3J0LlxuICpcbiAqIEZvcm1hdHMgbnVtZXJpYyB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgbG9jYWxlLCBhcHBseWluZ1xuICogYXBwcm9wcmlhdGUgdGhvdXNhbmQgYW5kIGRlY2ltYWwgc2VwYXJhdG9ycywgd2l0aCBzdXBwb3J0IGZvciBuZWdhdGl2ZSB2YWx1ZXMsXG4gKiBtaW4vbWF4IGRlY2ltYWwgcGxhY2VzIGNvbnRyb2wsIGFuZCBzY2llbnRpZmljIG5vdGF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aW5wdXRcbiAqICAgdHlwZT1cInRleHRcIlxuICogICBzTnVtZXJpY01hc2tcbiAqICAgW2xvY2FsZV09XCIncHQtQlInXCJcbiAqICAgW21pbkRlY2ltYWxQbGFjZXNdPVwiMlwiXG4gKiAgIFttYXhEZWNpbWFsUGxhY2VzXT1cIjJcIlxuICogICBbYWxsb3dOZWdhdGl2ZV09XCJ0cnVlXCJcbiAqICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3NOdW1lcmljTWFza10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGlucHV0KSc6ICdvbklucHV0KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdvbkZvY3VzKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJyxcbiAgICAgICAgJyhwYXN0ZSknOiAnb25QYXN0ZSgkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdvbktleURvd24oJGV2ZW50KScsXG4gICAgICAgICcoa2V5cHJlc3MpJzogJ29uS2V5UHJlc3MoJGV2ZW50KScsXG4gICAgICAgICdbc3R5bGUudGV4dC1hbGlnbl0nOiAnXCJyaWdodFwiJyxcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE51bWVyaWNNYXNrRGlyZWN0aXZlKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtZXJpY01hc2tEaXJlY3RpdmUpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtZXJpY01hc2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAgIC8qKlxuICAgICAqIExvY2FsZSBmb3IgZm9ybWF0dGluZyAoZS5nLiAncHQtQlInLCAnZW4tVVMnLCAnZGUtREUnKVxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgdXNlcyB0aGUgbG9jYWxlIGZyb20gTG9jYWxlU2VydmljZVxuICAgICAqL1xuICAgIHB1YmxpYyBsb2NhbGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBkaXNwbGF5XG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5EZWNpbWFsUGxhY2VzID0gaW5wdXQoMCk7XG5cbiAgICAvKipcbiAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBhbGxvd2VkXG4gICAgICogQGRlZmF1bHQgMTBcbiAgICAgKi9cbiAgICBwdWJsaWMgbWF4RGVjaW1hbFBsYWNlcyA9IGlucHV0KDEwKTtcblxuICAgIC8qKlxuICAgICAqIEFsbG93cyBuZWdhdGl2ZSB2YWx1ZXNcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd05lZ2F0aXZlID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBzY2llbnRpZmljIG5vdGF0aW9uIHN1cHBvcnRcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGFsbG93U2NpZW50aWZpY05vdGF0aW9uID0gaW5wdXQodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIHZhbHVlIGFsbG93ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSB2YWx1ZSBhbGxvd2VkXG4gICAgICovXG4gICAgcHVibGljIG1heCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTZXJ2aWNlID0gaW5qZWN0KExvY2FsZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgZGVjaW1hbFNlcGFyYXRvciA9ICcsJztcbiAgICBwcml2YXRlIHRob3VzYW5kU2VwYXJhdG9yID0gJy4nO1xuICAgIHByaXZhdGUgY3VycmVudExvY2FsZSA9ICdwdC1CUic7XG4gICAgcHJpdmF0ZSBsYXN0TW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0TG9jYWxlID0gdGhpcy5sb2NhbGUoKTtcblxuICAgICAgICAgICAgaWYgKGlucHV0TG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYWxlID0gaW5wdXRMb2NhbGU7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubWluRGVjaW1hbFBsYWNlcygpID4gdGhpcy5tYXhEZWNpbWFsUGxhY2VzKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTnVtZXJpY01hc2tEaXJlY3RpdmU6IG1pbkRlY2ltYWxQbGFjZXMgKCR7dGhpcy5taW5EZWNpbWFsUGxhY2VzKCl9KSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIG1heERlY2ltYWxQbGFjZXMgKCR7dGhpcy5tYXhEZWNpbWFsUGxhY2VzKCl9KWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NhbGUoKSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYWxlID0gdGhpcy5sb2NhbGUoKSE7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcGFyYXRvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRNb2RlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhbGUgPSB0aGlzLmxvY2FsZVNlcnZpY2UhLmdldExvY2FsZU9wdGlvbnMoKT8ubG9jYWxlIHx8ICdwdC1CUic7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbnB1dE1vZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgICAgICB0aGlzLnNldElucHV0TW9kZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZm9yIGlucHV0IGV2ZW50cyAodHlwaW5nKVxuICAgICAqL1xuICAgIHB1YmxpYyBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBsZXQgdmFsdWUgPSBpbnB1dC52YWx1ZTtcbiAgICAgICAgdmFsdWUgPSB0aGlzLm5vcm1hbGl6ZVNlcGFyYXRvcnModmFsdWUpO1xuICAgICAgICB0aGlzLnByb2Nlc3NJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmb3IgZm9jdXMgZXZlbnRzIChnYWluaW5nIGZvY3VzKVxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBpbnB1dC52YWx1ZTtcblxuICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZSB8fCBjdXJyZW50VmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFzdE1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHRoaXMubGFzdE1vZGVsVmFsdWUucmVwbGFjZSgnLicsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KGlucHV0LCAndmFsdWUnLCBkaXNwbGF5VmFsdWUpO1xuICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy50b01vZGVsVmFsdWUoY3VycmVudFZhbHVlKTtcblxuICAgICAgICBpZiAoIW1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IG1vZGVsVmFsdWUucmVwbGFjZSgnLicsIHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoaW5wdXQsICd2YWx1ZScsIGRpc3BsYXlWYWx1ZSk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGZvciBibHVyIGV2ZW50cyAoZm9jdXMgbG9zcylcbiAgICAgKi9cbiAgICBwdWJsaWMgb25CbHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlO1xuXG4gICAgICAgIGlmICghY3VycmVudFZhbHVlIHx8IGN1cnJlbnRWYWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5sYXN0TW9kZWxWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy50b01vZGVsVmFsdWUoY3VycmVudFZhbHVlKTtcblxuICAgICAgICBpZiAoIW1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmxhc3RNb2RlbFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGFzdE1vZGVsVmFsdWUgPSBtb2RlbFZhbHVlO1xuICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWUgPSB0aGlzLmZyb21Nb2RlbFZhbHVlKG1vZGVsVmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBkaXNwbGF5VmFsdWUpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG1vZGVsVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGZvciBwYXN0ZSBldmVudHMgKGNsaXBib2FyZClcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpIHx8ICcnO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnBhcnNlQ2xpcGJvYXJkVmFsdWUocGFzdGVkVGV4dCk7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzSW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZm9yIHNwZWNpYWwga2V5cyAoKyBhbmQgLSlcbiAgICAgKi9cbiAgICBwdWJsaWMgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnLScgfHwga2V5ID09PSAnKycpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBpbnB1dC5zZWxlY3Rpb25TdGFydCB8fCAwO1xuXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnLScgJiYgdGhpcy5hbGxvd1NjaWVudGlmaWNOb3RhdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hhckJlZm9yZUN1cnNvciA9IHZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKGNoYXJCZWZvcmVDdXJzb3IgPT09ICdlJyB8fCBjaGFyQmVmb3JlQ3Vyc29yID09PSAnRScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5hbGxvd05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2lnbih2YWx1ZSwga2V5ID09PSAnLScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZm9yIGtleXByZXNzIHRvIGJsb2NrIGludmFsaWQgY2hhcmFjdGVyc1xuICAgICAqL1xuICAgIHB1YmxpYyBvbktleVByZXNzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBpbnB1dC5zZWxlY3Rpb25TdGFydCB8fCAwO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuXG4gICAgICAgIGlmICgoa2V5ID09PSAnLScgfHwga2V5ID09PSAnKycpICYmIHRoaXMuYWxsb3dTY2llbnRpZmljTm90YXRpb24oKSkge1xuICAgICAgICAgICAgY29uc3QgY2hhckJlZm9yZUN1cnNvciA9IHZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV07XG4gICAgICAgICAgICBpZiAoY2hhckJlZm9yZUN1cnNvciA9PT0gJ2UnIHx8IGNoYXJCZWZvcmVDdXJzb3IgPT09ICdFJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXkgPT09ICcrJyB8fCBrZXkgPT09ICctJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRGlnaXQgPSAvXlswLTldJC8udGVzdChrZXkpO1xuICAgICAgICBjb25zdCBpc0RlY2ltYWxTZXBhcmF0b3IgPSBrZXkgPT09ICcsJyB8fCBrZXkgPT09ICcuJztcbiAgICAgICAgY29uc3QgaXNTY2llbnRpZmljTm90YXRpb24gPSAoa2V5ID09PSAnZScgfHwga2V5ID09PSAnRScpICYmIHRoaXMuYWxsb3dTY2llbnRpZmljTm90YXRpb24oKTtcbiAgICAgICAgY29uc3QgaXNDb250cm9sS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmFsdEtleTtcbiAgICAgICAgY29uc3QgaXNTcGVjaWFsS2V5ID0gW1xuICAgICAgICAgICAgJ0JhY2tzcGFjZScsXG4gICAgICAgICAgICAnVGFiJyxcbiAgICAgICAgICAgICdFbnRlcicsXG4gICAgICAgICAgICAnRXNjYXBlJyxcbiAgICAgICAgICAgICdBcnJvd0xlZnQnLFxuICAgICAgICAgICAgJ0Fycm93UmlnaHQnLFxuICAgICAgICAgICAgJ0RlbGV0ZScsXG4gICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAnRW5kJyxcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpO1xuXG4gICAgICAgIGlmIChpc1NjaWVudGlmaWNOb3RhdGlvbikge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCdlJykgfHwgdmFsdWUuaW5jbHVkZXMoJ0UnKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjaGFyQmVmb3JlQ3Vyc29yID0gdmFsdWVbY3Vyc29yUG9zaXRpb24gLSAxXTtcbiAgICAgICAgICAgIGlmICghY2hhckJlZm9yZUN1cnNvciB8fCAhL15bMC05XSQvLnRlc3QoY2hhckJlZm9yZUN1cnNvcikpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNEaWdpdCAmJiAhaXNEZWNpbWFsU2VwYXJhdG9yICYmICFpc1NjaWVudGlmaWNOb3RhdGlvbiAmJiAhaXNDb250cm9sS2V5ICYmICFpc1NwZWNpYWxLZXkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHNlcGFyYXRvcnMgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlU2VwYXJhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMuY3VycmVudExvY2FsZSkuZm9ybWF0KDEyMzQuNSk7XG5cbiAgICAgICAgdGhpcy50aG91c2FuZFNlcGFyYXRvciA9IGZvcm1hdHRlZFsxXTtcbiAgICAgICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gZm9ybWF0dGVkWzVdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCB2YWx1ZSBhbmQgdXBkYXRlcyB0aGUgaW5wdXQgYW5kIG1vZGVsXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRlY2ltYWxTZXBhcmF0b3IgfHwgIXRoaXMudGhvdXNhbmRTZXBhcmF0b3IpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VwYXJhdG9ycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLnRvTW9kZWxWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgLy8gRHVyaW5nIHR5cGluZywgY2xlYXIgdGhlIHN0b3JlZCBtb2RlbCB2YWx1ZSBzbyBvbkZvY3VzIHdpbGwgcmVjYWxjdWxhdGVcbiAgICAgICAgdGhpcy5sYXN0TW9kZWxWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZShtb2RlbFZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGlucHV0bW9kZSBmb3IgbnVtZXJpYyBrZXlib2FyZCBvbiBtb2JpbGUgZGV2aWNlc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJbnB1dE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaW5wdXRtb2RlJywgJ2RlY2ltYWwnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhdXRvY29tcGxldGUnLCAnb2ZmJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBzZXBhcmF0b3JzIGZyb20gYSBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVtb3ZlU2VwYXJhdG9ycyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdGhvdXNhbmRSZWdleCA9IG5ldyBSZWdFeHAoYFxcXFwke3RoaXMuZXNjYXBlUmVnZXgodGhpcy50aG91c2FuZFNlcGFyYXRvcil9YCwgJ2cnKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UodGhvdXNhbmRSZWdleCwgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmlwcyB1bm5lY2Vzc2FyeSB0cmFpbGluZyB6ZXJvcyBmcm9tIGRlY2ltYWwgcGFydFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdHJpcFRyYWlsaW5nWmVyb3ModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbFBhcnQgPSBwYXJ0c1sxXS5yZXBsYWNlKC8wKyQvLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4gZGVjaW1hbFBhcnQubGVuZ3RoID4gMCA/IHBhcnRzWzBdICsgdGhpcy5kZWNpbWFsU2VwYXJhdG9yICsgZGVjaW1hbFBhcnQgOiBwYXJ0c1swXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplcyBzZXBhcmF0b3JzIGR1cmluZyB0eXBpbmdcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplU2VwYXJhdG9ycyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnJlbW92ZVNlcGFyYXRvcnModmFsdWUpO1xuXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcsJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cXC4vZywgJywnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPT09ICcuJykge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8sL2csICcuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KHRoaXMuZGVjaW1hbFNlcGFyYXRvcik7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHBhcnRzWzBdICsgdGhpcy5kZWNpbWFsU2VwYXJhdG9yICsgcGFydHMuc2xpY2UoMSkuam9pbignJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlcyBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIHVzZSBpbiByZWdleFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBlc2NhcGVSZWdleChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcnVuY2F0ZXMgYSBudW1iZXIgdG8gdGhlIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlcyAobmV2ZXIgcm91bmRzKVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0cnVuY2F0ZVRvRGVjaW1hbFBsYWNlcyhiaWdOdW1iZXI6IEJpZ051bWJlciwgZGVjaW1hbFBsYWNlczogbnVtYmVyKTogQmlnTnVtYmVyIHtcbiAgICAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYmlnTnVtYmVyO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBuZXcgQmlnTnVtYmVyKDEwKS5wb3coZGVjaW1hbFBsYWNlcyk7XG4gICAgICAgIHJldHVybiBiaWdOdW1iZXIubXVsdGlwbGllZEJ5KG11bHRpcGxpZXIpLmludGVnZXJWYWx1ZShCaWdOdW1iZXIuUk9VTkRfRE9XTikuZGl2aWRlZEJ5KG11bHRpcGxpZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcnNlcyBhIHN0cmluZyB2YWx1ZSB0byBpdHMgbnVtZXJpYyByZXByZXNlbnRhdGlvbiwgaGFuZGxpbmcgc2VwYXJhdG9ycyBhbmQgc2lnblxuICAgICAqIFJldHVybnMgQmlnTnVtYmVyIHRvIHByZXNlcnZlIGZ1bGwgcHJlY2lzaW9uIGFuZCBvcHRpb25hbCBudW1iZXIgY29udmVyc2lvblxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZVN0cmluZ1RvVmFsdWUodmFsdWU6IHN0cmluZyk6IHsgYmlnTnVtYmVyOiBCaWdOdW1iZXI7IG51bWVyaWM6IG51bWJlcjsgaXNOZWdhdGl2ZTogYm9vbGVhbiB9IHtcbiAgICAgICAgY29uc3QgaXNOZWdhdGl2ZSA9IHZhbHVlLnN0YXJ0c1dpdGgoJy0nKTtcbiAgICAgICAgbGV0IG51bWVyaWNTdHIgPSB2YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoL14tLywgJycpXG4gICAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcJHt0aGlzLnRob3VzYW5kU2VwYXJhdG9yfWAsICdnJyksICcnKVxuICAgICAgICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChgXFxcXCR7dGhpcy5kZWNpbWFsU2VwYXJhdG9yfWAsICdnJyksICcuJyk7XG5cbiAgICAgICAgaWYgKG51bWVyaWNTdHIgPT09ICcuJyB8fCBudW1lcmljU3RyID09PSAnJykge1xuICAgICAgICAgICAgbnVtZXJpY1N0ciA9ICcwJztcbiAgICAgICAgfSBlbHNlIGlmIChudW1lcmljU3RyLnN0YXJ0c1dpdGgoJy4nKSkge1xuICAgICAgICAgICAgbnVtZXJpY1N0ciA9ICcwJyArIG51bWVyaWNTdHI7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYmlnTnVtYmVyID0gbmV3IEJpZ051bWJlcihudW1lcmljU3RyKTtcbiAgICAgICAgaWYgKGJpZ051bWJlci5pc05hTigpKSB7XG4gICAgICAgICAgICBiaWdOdW1iZXIgPSBuZXcgQmlnTnVtYmVyKDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmVnYXRpdmUgJiYgdGhpcy5hbGxvd05lZ2F0aXZlKCkpIHtcbiAgICAgICAgICAgIGJpZ051bWJlciA9IGJpZ051bWJlci5uZWdhdGVkKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyBiaWdOdW1iZXIsIG51bWVyaWM6IGJpZ051bWJlci50b051bWJlcigpLCBpc05lZ2F0aXZlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9ybWF0cyBhIG51bWVyaWMgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGVcbiAgICAgKiBUcnVuY2F0ZXMgKG5ldmVyIHJvdW5kcykgdG8gbWF4RGVjaW1hbFBsYWNlcyBhbmQgcGFkcyB3aXRoIHplcm9zIHRvIG1pbkRlY2ltYWxQbGFjZXNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZm9ybWF0TnVtZXJpYyhudW1lcmljOiBudW1iZXIgfCBCaWdOdW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYmlnTnVtZXJpYyA9IG51bWVyaWMgaW5zdGFuY2VvZiBCaWdOdW1iZXIgPyBudW1lcmljIDogbmV3IEJpZ051bWJlcihudW1lcmljKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHRydW5jYXRlZFZhbHVlID0gdGhpcy50cnVuY2F0ZVRvRGVjaW1hbFBsYWNlcyhiaWdOdW1lcmljLCB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCB2YWx1ZVN0ciA9IHRydW5jYXRlZFZhbHVlLnRvRml4ZWQoTWF0aC5tYXgodGhpcy5taW5EZWNpbWFsUGxhY2VzKCksIHRoaXMubWF4RGVjaW1hbFBsYWNlcygpKSk7XG4gICAgICAgIFxuICAgICAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB2YWx1ZVN0ci5yZXBsYWNlKCcuJywgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgaW50ZWdlclBhcnQgPSBwYXJ0c1swXTtcbiAgICAgICAgbGV0IGRlY2ltYWxQYXJ0ID0gcGFydHNbMV0gfHwgJyc7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBmb3JtYXR0ZWRJbnRlZ2VyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRoaXMuY3VycmVudExvY2FsZSkuZm9ybWF0KFxuICAgICAgICAgICAgcGFyc2VJbnQoaW50ZWdlclBhcnQsIDEwKSB8fCAwXG4gICAgICAgICkuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKVswXTtcbiAgICAgICAgXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZURlY2ltYWxQbGFjZXMgPSBkZWNpbWFsUGFydC5yZXBsYWNlKC8wKyQvLCAnJykubGVuZ3RoO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgZGVjaW1hbFBsYWNlc1RvU2hvdyA9IE1hdGgubWF4KFxuICAgICAgICAgICAgdGhpcy5taW5EZWNpbWFsUGxhY2VzKCksXG4gICAgICAgICAgICBNYXRoLm1pbihlZmZlY3RpdmVEZWNpbWFsUGxhY2VzLCB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSlcbiAgICAgICAgKTtcbiAgICAgICAgXG4gICAgICAgIGRlY2ltYWxQYXJ0ID0gZGVjaW1hbFBhcnQuc3Vic3RyaW5nKDAsIGRlY2ltYWxQbGFjZXNUb1Nob3cpLnBhZEVuZChkZWNpbWFsUGxhY2VzVG9TaG93LCAnMCcpO1xuXG4gICAgICAgIHJldHVybiBkZWNpbWFsUGFydCA/IGZvcm1hdHRlZEludGVnZXIgKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgKyBkZWNpbWFsUGFydCA6IGZvcm1hdHRlZEludGVnZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZvcm1hdHRlZCB2YWx1ZSB0byB0aGUgbW9kZWwgZm9ybWF0IChpbnRlcm5hdGlvbmFsIHN0YW5kYXJkIHN0cmluZylcbiAgICAgKiBBbHdheXMgcmV0dXJucyBkZWNpbWFsIG5vdGF0aW9uLCBuZXZlciBzY2llbnRpZmljIG5vdGF0aW9uXG4gICAgICogU3RvcmVzIHRoZSBmdWxsIHByZWNpc2lvbiB2YWx1ZSB3aXRob3V0IHRydW5jYXRpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdG9Nb2RlbFZhbHVlKGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFmb3JtYXR0ZWRWYWx1ZSB8fCBmb3JtYXR0ZWRWYWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGJpZ051bWJlciB9ID0gdGhpcy5wYXJzZVN0cmluZ1RvVmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICByZXR1cm4gYmlnTnVtYmVyLnRvRml4ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgbW9kZWwgdmFsdWUgdG8gZGlzcGxheSBmb3JtYXRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZnJvbU1vZGVsVmFsdWUobW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChtb2RlbFZhbHVlID09PSBudWxsIHx8IG1vZGVsVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBtb2RlbFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJpZ051bWJlciA9IG5ldyBCaWdOdW1iZXIobW9kZWxWYWx1ZSk7XG4gICAgICAgIGlmIChiaWdOdW1iZXIuaXNOYU4oKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWVyaWMoYmlnTnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgcGFzdGVkIHZhbHVlIGZyb20gY2xpcGJvYXJkXG4gICAgICogQ29udmVydHMgc2NpZW50aWZpYyBub3RhdGlvbiB0byBkZWNpbWFsIHVzaW5nIEJpZ051bWJlclxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNsaXBib2FyZFZhbHVlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93U2NpZW50aWZpY05vdGF0aW9uKCkgJiYgL1tlRV0vLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmlnTnVtZXJpYyA9IG5ldyBCaWdOdW1iZXIodGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKCFiaWdOdW1lcmljLmlzTmFOKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGJpZ051bWVyaWMudG9GaXhlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTZXBhcmF0b3JzKHRleHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHNpZ24gKC0gb3IgKykgb2YgYSB2YWx1ZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b2dnbGVTaWduKHZhbHVlOiBzdHJpbmcsIG1ha2VOZWdhdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAobWFrZU5lZ2F0aXZlICYmICFuZXdWYWx1ZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gJy0nICsgbmV3VmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIW1ha2VOZWdhdGl2ZSAmJiBuZXdWYWx1ZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuc3Vic3RyaW5nKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShpbnB1dCwgJ3ZhbHVlJywgbmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy50b01vZGVsVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RNb2RlbFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShtb2RlbFZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCAhdGhpcy50aG91c2FuZFNlcGFyYXRvcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGhhc0ZvY3VzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZnJvbU1vZGVsVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLnN0cmlwVHJhaWxpbmdaZXJvcyh0aGlzLnJlbW92ZVNlcGFyYXRvcnMoZm9ybWF0dGVkVmFsdWUpKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHJhd1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mcm9tTW9kZWxWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuXG4gICAgICAgIGlmIChpc05hTihudW1lcmljVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd05lZ2F0aXZlKCkgJiYgbnVtZXJpY1ZhbHVlIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbmVnYXRpdmVOb3RBbGxvd2VkOiB0cnVlIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IHRoaXMubWluKCk7XG4gICAgICAgIGlmIChtaW5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA8IG1pblZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbjoge1xuICAgICAgICAgICAgICAgICAgICBtaW46IG1pblZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IG51bWVyaWNWYWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heFZhbHVlID0gdGhpcy5tYXgoKTtcbiAgICAgICAgaWYgKG1heFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbnVtZXJpY1ZhbHVlID4gbWF4VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICAgICAgICAgIG1heDogbWF4VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogbnVtZXJpY1ZhbHVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjaW1hbFBhcnQgPSB2YWx1ZS5zcGxpdCgnLicpWzFdO1xuXG4gICAgICAgIGlmIChkZWNpbWFsUGFydCAmJiBkZWNpbWFsUGFydC5sZW5ndGggPiB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBleGNlc3NpdmVEZWNpbWFsUGxhY2VzOiB7XG4gICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy5tYXhEZWNpbWFsUGxhY2VzKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogZGVjaW1hbFBhcnQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4iXX0=
541
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy1tYXNrLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9udW1lcmljLW1hc2svc3JjL2xpYi9udW1lcmljLW1hc2svbnVtZXJpYy1tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFHSCxhQUFhLEVBQ2IsaUJBQWlCLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQzs7QUFFckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBMEJILE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7OztPQUdHO0lBQ0ksTUFBTSxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFckQ7OztPQUdHO0lBQ0ksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5DOzs7T0FHRztJQUNJLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVwQzs7O09BR0c7SUFDSSxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBDOzs7T0FHRztJQUNJLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3Qzs7T0FFRztJQUNJLEdBQUcsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBRWxEOztPQUVHO0lBQ0ksR0FBRyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFakMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVB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LE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7Z0JBQ25ELEtBQUssRUFBRSxJQUFJO2FBQ2Q7WUFDRDtnQkFDSSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKOzs0RkFFUSxvQkFBb0I7a0JBekJoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUU7d0JBQ0YsU0FBUyxFQUFFLGlCQUFpQjt3QkFDNUIsU0FBUyxFQUFFLFdBQVc7d0JBQ3RCLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixTQUFTLEVBQUUsaUJBQWlCO3dCQUM1QixXQUFXLEVBQUUsbUJBQW1CO3dCQUNoQyxZQUFZLEVBQUUsb0JBQW9CO3dCQUNsQyxvQkFBb0IsRUFBRSxTQUFTO3FCQUNsQztvQkFDRCxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGVmZmVjdCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE5HX1ZBTElEQVRPUlMsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbG9jYWxlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlyZXRpdmEgZGUgbcOhc2NhcmEgbnVtw6lyaWNhIGNvbSBzdXBvcnRlIGEgaW50ZXJuYWNpb25hbGl6YcOnw6NvLlxuICpcbiAqIEZvcm1hdGEgdmFsb3JlcyBudW3DqXJpY29zIGRlIGFjb3JkbyBjb20gbyBsb2NhbGUgZXNwZWNpZmljYWRvLCBhcGxpY2FuZG9cbiAqIHNlcGFyYWRvcmVzIGRlIG1pbGhhciBlIGRlY2ltYWwgYWRlcXVhZG9zLCBjb20gc3Vwb3J0ZSBhIHZhbG9yZXMgbmVnYXRpdm9zLFxuICogY29udHJvbGUgZGUgY2FzYXMgZGVjaW1haXMgbcOtbi9tw6F4IGUgbm90YcOnw6NvIGNpZW50w61maWNhLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aW5wdXRcbiAqICAgdHlwZT1cInRleHRcIlxuICogICBzTnVtZXJpY01hc2tcbiAqICAgW2xvY2FsZV09XCIncHQtQlInXCJcbiAqICAgW21pbkRlY2ltYWxQbGFjZXNdPVwiMlwiXG4gKiAgIFttYXhEZWNpbWFsUGxhY2VzXT1cIjJcIlxuICogICBbYWxsb3dOZWdhdGl2ZV09XCJ0cnVlXCJcbiAqICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gKiAvPlxuICogYGBgXG4gKiBAY2F0ZWdvcnkgTnVtZXJpY1xuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzTnVtZXJpY01hc2tdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhpbnB1dCknOiAnb25JbnB1dCgkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnb25Gb2N1cygpJyxcbiAgICAgICAgJyhibHVyKSc6ICdvbkJsdXIoKScsXG4gICAgICAgICcocGFzdGUpJzogJ29uUGFzdGUoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnb25LZXlEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleXByZXNzKSc6ICdvbktleVByZXNzKCRldmVudCknLFxuICAgICAgICAnW3N0eWxlLnRleHQtYWxpZ25dJzogJ1wicmlnaHRcIicsXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1lcmljTWFza0RpcmVjdGl2ZSksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE51bWVyaWNNYXNrRGlyZWN0aXZlKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE51bWVyaWNNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICAvKipcbiAgICAgKiBMb2NhbGUgZm9yIGZvcm1hdHRpbmcgKGUuZy4gJ3B0LUJSJywgJ2VuLVVTJywgJ2RlLURFJylcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGxvY2FsZSBmcm9tIExvY2FsZVNlcnZpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jYWxlID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gICAgLyoqXG4gICAgICogTWluaW11bSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8gZGlzcGxheVxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluRGVjaW1hbFBsYWNlcyA9IGlucHV0KDApO1xuXG4gICAgLyoqXG4gICAgICogTWF4aW11bSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgYWxsb3dlZFxuICAgICAqIEBkZWZhdWx0IDEwXG4gICAgICovXG4gICAgcHVibGljIG1heERlY2ltYWxQbGFjZXMgPSBpbnB1dCgxMCk7XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgbmVnYXRpdmUgdmFsdWVzXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgYWxsb3dOZWdhdGl2ZSA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgc2NpZW50aWZpYyBub3RhdGlvbiBzdXBwb3J0XG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBhbGxvd1NjaWVudGlmaWNOb3RhdGlvbiA9IGlucHV0KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogTWluaW11bSB2YWx1ZSBhbGxvd2VkXG4gICAgICovXG4gICAgcHVibGljIG1pbiA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKlxuICAgICAqIE1heGltdW0gdmFsdWUgYWxsb3dlZFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXggPSBpbnB1dDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pik7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlciA9IGluamVjdChSZW5kZXJlcjIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChMb2NhbGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIGRlY2ltYWxTZXBhcmF0b3IgPSAnLCc7XG4gICAgcHJpdmF0ZSB0aG91c2FuZFNlcGFyYXRvciA9ICcuJztcbiAgICBwcml2YXRlIGN1cnJlbnRMb2NhbGUgPSAncHQtQlInO1xuICAgIHByaXZhdGUgbGFzdE1vZGVsVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dExvY2FsZSA9IHRoaXMubG9jYWxlKCk7XG5cbiAgICAgICAgICAgIGlmIChpbnB1dExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IGlucHV0TG9jYWxlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VwYXJhdG9ycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1pbkRlY2ltYWxQbGFjZXMoKSA+IHRoaXMubWF4RGVjaW1hbFBsYWNlcygpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE51bWVyaWNNYXNrRGlyZWN0aXZlOiBtaW5EZWNpbWFsUGxhY2VzICgke3RoaXMubWluRGVjaW1hbFBsYWNlcygpfSkgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhEZWNpbWFsUGxhY2VzICgke3RoaXMubWF4RGVjaW1hbFBsYWNlcygpfSlgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvY2FsZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhbGUgPSB0aGlzLmxvY2FsZSgpITtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VwYXJhdG9ycygpO1xuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dE1vZGUoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2FsZVNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9jYWxlU2VydmljZS5nZXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2FsZSA9IHRoaXMubG9jYWxlU2VydmljZSEuZ2V0TG9jYWxlT3B0aW9ucygpPy5sb2NhbGUgfHwgJ3B0LUJSJztcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcGFyYXRvcnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldElucHV0TW9kZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcGFyYXRvcnMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRNb2RlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmb3IgaW5wdXQgZXZlbnRzICh0eXBpbmcpXG4gICAgICovXG4gICAgcHVibGljIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xuICAgICAgICB2YWx1ZSA9IHRoaXMubm9ybWFsaXplU2VwYXJhdG9ycyh2YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0lucHV0VmFsdWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExpc3RlbmVyIGZvciBmb2N1cyBldmVudHMgKGdhaW5pbmcgZm9jdXMpXG4gICAgICovXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGlucHV0LnZhbHVlO1xuXG4gICAgICAgIGlmICghY3VycmVudFZhbHVlIHx8IGN1cnJlbnRWYWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYXN0TW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gdGhpcy5sYXN0TW9kZWxWYWx1ZS5yZXBsYWNlKCcuJywgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkoaW5wdXQsICd2YWx1ZScsIGRpc3BsYXlWYWx1ZSk7XG4gICAgICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLnRvTW9kZWxWYWx1ZShjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgIGlmICghbW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gbW9kZWxWYWx1ZS5yZXBsYWNlKCcuJywgdGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShpbnB1dCwgJ3ZhbHVlJywgZGlzcGxheVZhbHVlKTtcbiAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZm9yIGJsdXIgZXZlbnRzIChmb2N1cyBsb3NzKVxuICAgICAqL1xuICAgIHB1YmxpYyBvbkJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWU7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUgfHwgY3VycmVudFZhbHVlLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmxhc3RNb2RlbFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSB0aGlzLnRvTW9kZWxWYWx1ZShjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgIGlmICghbW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgICAgIHRoaXMubGFzdE1vZGVsVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXN0TW9kZWxWYWx1ZSA9IG1vZGVsVmFsdWU7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IHRoaXMuZnJvbU1vZGVsVmFsdWUobW9kZWxWYWx1ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIGRpc3BsYXlWYWx1ZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobW9kZWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGlzdGVuZXIgZm9yIHBhc3RlIGV2ZW50cyAoY2xpcGJvYXJkKVxuICAgICAqL1xuICAgIHB1YmxpYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IHBhc3RlZFRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0JykgfHwgJyc7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMucGFyc2VDbGlwYm9hcmRWYWx1ZShwYXN0ZWRUZXh0KTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NJbnB1dFZhbHVlKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmb3Igc3BlY2lhbCBrZXlzICgrIGFuZCAtKVxuICAgICAqL1xuICAgIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuXG4gICAgICAgIGlmIChrZXkgPT09ICctJyB8fCBrZXkgPT09ICcrJykge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGlucHV0LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICctJyAmJiB0aGlzLmFsbG93U2NpZW50aWZpY05vdGF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGFyQmVmb3JlQ3Vyc29yID0gdmFsdWVbY3Vyc29yUG9zaXRpb24gLSAxXTtcbiAgICAgICAgICAgICAgICBpZiAoY2hhckJlZm9yZUN1cnNvciA9PT0gJ2UnIHx8IGNoYXJCZWZvcmVDdXJzb3IgPT09ICdFJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbG93TmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGVTaWduKHZhbHVlLCBrZXkgPT09ICctJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0ZW5lciBmb3Iga2V5cHJlc3MgdG8gYmxvY2sgaW52YWxpZCBjaGFyYWN0ZXJzXG4gICAgICovXG4gICAgcHVibGljIG9uS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjdXJzb3JQb3NpdGlvbiA9IGlucHV0LnNlbGVjdGlvblN0YXJ0IHx8IDA7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWU7XG5cbiAgICAgICAgaWYgKChrZXkgPT09ICctJyB8fCBrZXkgPT09ICcrJykgJiYgdGhpcy5hbGxvd1NjaWVudGlmaWNOb3RhdGlvbigpKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyQmVmb3JlQ3Vyc29yID0gdmFsdWVbY3Vyc29yUG9zaXRpb24gLSAxXTtcbiAgICAgICAgICAgIGlmIChjaGFyQmVmb3JlQ3Vyc29yID09PSAnZScgfHwgY2hhckJlZm9yZUN1cnNvciA9PT0gJ0UnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJysnIHx8IGtleSA9PT0gJy0nKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNEaWdpdCA9IC9eWzAtOV0kLy50ZXN0KGtleSk7XG4gICAgICAgIGNvbnN0IGlzRGVjaW1hbFNlcGFyYXRvciA9IGtleSA9PT0gJywnIHx8IGtleSA9PT0gJy4nO1xuICAgICAgICBjb25zdCBpc1NjaWVudGlmaWNOb3RhdGlvbiA9IChrZXkgPT09ICdlJyB8fCBrZXkgPT09ICdFJykgJiYgdGhpcy5hbGxvd1NjaWVudGlmaWNOb3RhdGlvbigpO1xuICAgICAgICBjb25zdCBpc0NvbnRyb2xLZXkgPSBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5O1xuICAgICAgICBjb25zdCBpc1NwZWNpYWxLZXkgPSBbXG4gICAgICAgICAgICAnQmFja3NwYWNlJyxcbiAgICAgICAgICAgICdUYWInLFxuICAgICAgICAgICAgJ0VudGVyJyxcbiAgICAgICAgICAgICdFc2NhcGUnLFxuICAgICAgICAgICAgJ0Fycm93TGVmdCcsXG4gICAgICAgICAgICAnQXJyb3dSaWdodCcsXG4gICAgICAgICAgICAnRGVsZXRlJyxcbiAgICAgICAgICAgICdIb21lJyxcbiAgICAgICAgICAgICdFbmQnLFxuICAgICAgICBdLmluY2x1ZGVzKGtleSk7XG5cbiAgICAgICAgaWYgKGlzU2NpZW50aWZpY05vdGF0aW9uKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJ2UnKSB8fCB2YWx1ZS5pbmNsdWRlcygnRScpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNoYXJCZWZvcmVDdXJzb3IgPSB2YWx1ZVtjdXJzb3JQb3NpdGlvbiAtIDFdO1xuICAgICAgICAgICAgaWYgKCFjaGFyQmVmb3JlQ3Vyc29yIHx8ICEvXlswLTldJC8udGVzdChjaGFyQmVmb3JlQ3Vyc29yKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc0RpZ2l0ICYmICFpc0RlY2ltYWxTZXBhcmF0b3IgJiYgIWlzU2NpZW50aWZpY05vdGF0aW9uICYmICFpc0NvbnRyb2xLZXkgJiYgIWlzU3BlY2lhbEtleSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgc2VwYXJhdG9ycyBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVTZXBhcmF0b3JzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWQgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5jdXJyZW50TG9jYWxlKS5mb3JtYXQoMTIzNC41KTtcblxuICAgICAgICB0aGlzLnRob3VzYW5kU2VwYXJhdG9yID0gZm9ybWF0dGVkWzFdO1xuICAgICAgICB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgPSBmb3JtYXR0ZWRbNV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IHZhbHVlIGFuZCB1cGRhdGVzIHRoZSBpbnB1dCBhbmQgbW9kZWxcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0lucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCAhdGhpcy50aG91c2FuZFNlcGFyYXRvcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG5cbiAgICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMudG9Nb2RlbFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAvLyBEdXJpbmcgdHlwaW5nLCBjbGVhciB0aGUgc3RvcmVkIG1vZGVsIHZhbHVlIHNvIG9uRm9jdXMgd2lsbCByZWNhbGN1bGF0ZVxuICAgICAgICB0aGlzLmxhc3RNb2RlbFZhbHVlID0gbnVsbDtcblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKG1vZGVsVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgaW5wdXRtb2RlIGZvciBudW1lcmljIGtleWJvYXJkIG9uIG1vYmlsZSBkZXZpY2VzXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldElucHV0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdpbnB1dG1vZGUnLCAnZGVjaW1hbCcpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2F1dG9jb21wbGV0ZScsICdvZmYnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHNlcGFyYXRvcnMgZnJvbSBhIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW1vdmVTZXBhcmF0b3JzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0aG91c2FuZFJlZ2V4ID0gbmV3IFJlZ0V4cChgXFxcXCR7dGhpcy5lc2NhcGVSZWdleCh0aGlzLnRob3VzYW5kU2VwYXJhdG9yKX1gLCAnZycpO1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSh0aG91c2FuZFJlZ2V4LCAnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyaXBzIHVubmVjZXNzYXJ5IHRyYWlsaW5nIHplcm9zIGZyb20gZGVjaW1hbCBwYXJ0XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHN0cmlwVHJhaWxpbmdaZXJvcyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFsUGFydCA9IHBhcnRzWzFdLnJlcGxhY2UoLzArJC8sICcnKTtcbiAgICAgICAgICAgIHJldHVybiBkZWNpbWFsUGFydC5sZW5ndGggPiAwID8gcGFydHNbMF0gKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgKyBkZWNpbWFsUGFydCA6IHBhcnRzWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOb3JtYWxpemVzIHNlcGFyYXRvcnMgZHVyaW5nIHR5cGluZ1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTZXBhcmF0b3JzKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICB2YWx1ZSA9IHRoaXMucmVtb3ZlU2VwYXJhdG9ycyh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9PT0gJywnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcLi9nLCAnLCcpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGVjaW1hbFNlcGFyYXRvciA9PT0gJy4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcGFydHNbMF0gKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgKyBwYXJ0cy5zbGljZSgxKS5qb2luKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBmb3IgdXNlIGluIHJlZ2V4XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGVzY2FwZVJlZ2V4KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBhIG51bWJlciB0byB0aGUgc3BlY2lmaWVkIGRlY2ltYWwgcGxhY2VzIChuZXZlciByb3VuZHMpXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHRydW5jYXRlVG9EZWNpbWFsUGxhY2VzKGJpZ051bWJlcjogQmlnTnVtYmVyLCBkZWNpbWFsUGxhY2VzOiBudW1iZXIpOiBCaWdOdW1iZXIge1xuICAgICAgICBpZiAoZGVjaW1hbFBsYWNlcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiBiaWdOdW1iZXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbXVsdGlwbGllciA9IG5ldyBCaWdOdW1iZXIoMTApLnBvdyhkZWNpbWFsUGxhY2VzKTtcbiAgICAgICAgcmV0dXJuIGJpZ051bWJlci5tdWx0aXBsaWVkQnkobXVsdGlwbGllcikuaW50ZWdlclZhbHVlKEJpZ051bWJlci5ST1VORF9ET1dOKS5kaXZpZGVkQnkobXVsdGlwbGllcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgc3RyaW5nIHZhbHVlIHRvIGl0cyBudW1lcmljIHJlcHJlc2VudGF0aW9uLCBoYW5kbGluZyBzZXBhcmF0b3JzIGFuZCBzaWduXG4gICAgICogUmV0dXJucyBCaWdOdW1iZXIgdG8gcHJlc2VydmUgZnVsbCBwcmVjaXNpb24gYW5kIG9wdGlvbmFsIG51bWJlciBjb252ZXJzaW9uXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcnNlU3RyaW5nVG9WYWx1ZSh2YWx1ZTogc3RyaW5nKTogeyBiaWdOdW1iZXI6IEJpZ051bWJlcjsgbnVtZXJpYzogbnVtYmVyOyBpc05lZ2F0aXZlOiBib29sZWFuIH0ge1xuICAgICAgICBjb25zdCBpc05lZ2F0aXZlID0gdmFsdWUuc3RhcnRzV2l0aCgnLScpO1xuICAgICAgICBsZXQgbnVtZXJpY1N0ciA9IHZhbHVlXG4gICAgICAgICAgICAucmVwbGFjZSgvXi0vLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFwke3RoaXMudGhvdXNhbmRTZXBhcmF0b3J9YCwgJ2cnKSwgJycpXG4gICAgICAgICAgICAucmVwbGFjZShuZXcgUmVnRXhwKGBcXFxcJHt0aGlzLmRlY2ltYWxTZXBhcmF0b3J9YCwgJ2cnKSwgJy4nKTtcblxuICAgICAgICBpZiAobnVtZXJpY1N0ciA9PT0gJy4nIHx8IG51bWVyaWNTdHIgPT09ICcnKSB7XG4gICAgICAgICAgICBudW1lcmljU3RyID0gJzAnO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWVyaWNTdHIuc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgICAgICBudW1lcmljU3RyID0gJzAnICsgbnVtZXJpY1N0cjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBiaWdOdW1iZXIgPSBuZXcgQmlnTnVtYmVyKG51bWVyaWNTdHIpO1xuICAgICAgICBpZiAoYmlnTnVtYmVyLmlzTmFOKCkpIHtcbiAgICAgICAgICAgIGJpZ051bWJlciA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOZWdhdGl2ZSAmJiB0aGlzLmFsbG93TmVnYXRpdmUoKSkge1xuICAgICAgICAgICAgYmlnTnVtYmVyID0gYmlnTnVtYmVyLm5lZ2F0ZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGJpZ051bWJlciwgbnVtZXJpYzogYmlnTnVtYmVyLnRvTnVtYmVyKCksIGlzTmVnYXRpdmUgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGEgbnVtZXJpYyB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZVxuICAgICAqIFRydW5jYXRlcyAobmV2ZXIgcm91bmRzKSB0byBtYXhEZWNpbWFsUGxhY2VzIGFuZCBwYWRzIHdpdGggemVyb3MgdG8gbWluRGVjaW1hbFBsYWNlc1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1lcmljKG51bWVyaWM6IG51bWJlciB8IEJpZ051bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGxldCBiaWdOdW1lcmljID0gbnVtZXJpYyBpbnN0YW5jZW9mIEJpZ051bWJlciA/IG51bWVyaWMgOiBuZXcgQmlnTnVtYmVyKG51bWVyaWMpO1xuXG4gICAgICAgIGNvbnN0IHRydW5jYXRlZFZhbHVlID0gdGhpcy50cnVuY2F0ZVRvRGVjaW1hbFBsYWNlcyhiaWdOdW1lcmljLCB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVTdHIgPSB0cnVuY2F0ZWRWYWx1ZS50b0ZpeGVkKE1hdGgubWF4KHRoaXMubWluRGVjaW1hbFBsYWNlcygpLCB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSkpO1xuXG4gICAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbHVlU3RyLnJlcGxhY2UoJy4nLCB0aGlzLmRlY2ltYWxTZXBhcmF0b3IpO1xuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQodGhpcy5kZWNpbWFsU2VwYXJhdG9yKTtcbiAgICAgICAgY29uc3QgaW50ZWdlclBhcnQgPSBwYXJ0c1swXTtcbiAgICAgICAgbGV0IGRlY2ltYWxQYXJ0ID0gcGFydHNbMV0gfHwgJyc7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkSW50ZWdlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0aGlzLmN1cnJlbnRMb2NhbGUpXG4gICAgICAgICAgICAuZm9ybWF0KHBhcnNlSW50KGludGVnZXJQYXJ0LCAxMCkgfHwgMClcbiAgICAgICAgICAgIC5zcGxpdCh0aGlzLmRlY2ltYWxTZXBhcmF0b3IpWzBdO1xuXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZURlY2ltYWxQbGFjZXMgPSBkZWNpbWFsUGFydC5yZXBsYWNlKC8wKyQvLCAnJykubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IGRlY2ltYWxQbGFjZXNUb1Nob3cgPSBNYXRoLm1heChcbiAgICAgICAgICAgIHRoaXMubWluRGVjaW1hbFBsYWNlcygpLFxuICAgICAgICAgICAgTWF0aC5taW4oZWZmZWN0aXZlRGVjaW1hbFBsYWNlcywgdGhpcy5tYXhEZWNpbWFsUGxhY2VzKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGRlY2ltYWxQYXJ0ID0gZGVjaW1hbFBhcnQuc3Vic3RyaW5nKDAsIGRlY2ltYWxQbGFjZXNUb1Nob3cpLnBhZEVuZChkZWNpbWFsUGxhY2VzVG9TaG93LCAnMCcpO1xuXG4gICAgICAgIHJldHVybiBkZWNpbWFsUGFydCA/IGZvcm1hdHRlZEludGVnZXIgKyB0aGlzLmRlY2ltYWxTZXBhcmF0b3IgKyBkZWNpbWFsUGFydCA6IGZvcm1hdHRlZEludGVnZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZvcm1hdHRlZCB2YWx1ZSB0byB0aGUgbW9kZWwgZm9ybWF0IChpbnRlcm5hdGlvbmFsIHN0YW5kYXJkIHN0cmluZylcbiAgICAgKiBBbHdheXMgcmV0dXJucyBkZWNpbWFsIG5vdGF0aW9uLCBuZXZlciBzY2llbnRpZmljIG5vdGF0aW9uXG4gICAgICogU3RvcmVzIHRoZSBmdWxsIHByZWNpc2lvbiB2YWx1ZSB3aXRob3V0IHRydW5jYXRpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdG9Nb2RlbFZhbHVlKGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCFmb3JtYXR0ZWRWYWx1ZSB8fCBmb3JtYXR0ZWRWYWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGJpZ051bWJlciB9ID0gdGhpcy5wYXJzZVN0cmluZ1RvVmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICAgICAgICByZXR1cm4gYmlnTnVtYmVyLnRvRml4ZWQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgbW9kZWwgdmFsdWUgdG8gZGlzcGxheSBmb3JtYXRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgZnJvbU1vZGVsVmFsdWUobW9kZWxWYWx1ZTogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChtb2RlbFZhbHVlID09PSBudWxsIHx8IG1vZGVsVmFsdWUgPT09IHVuZGVmaW5lZCB8fCBtb2RlbFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJpZ051bWJlciA9IG5ldyBCaWdOdW1iZXIobW9kZWxWYWx1ZSk7XG4gICAgICAgIGlmIChiaWdOdW1iZXIuaXNOYU4oKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWVyaWMoYmlnTnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgcGFzdGVkIHZhbHVlIGZyb20gY2xpcGJvYXJkXG4gICAgICogQ29udmVydHMgc2NpZW50aWZpYyBub3RhdGlvbiB0byBkZWNpbWFsIHVzaW5nIEJpZ051bWJlclxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNsaXBib2FyZFZhbHVlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmFsbG93U2NpZW50aWZpY05vdGF0aW9uKCkgJiYgL1tlRV0vLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmlnTnVtZXJpYyA9IG5ldyBCaWdOdW1iZXIodGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKCFiaWdOdW1lcmljLmlzTmFOKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGJpZ051bWVyaWMudG9GaXhlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHZvaWQgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVTZXBhcmF0b3JzKHRleHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIHNpZ24gKC0gb3IgKykgb2YgYSB2YWx1ZVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b2dnbGVTaWduKHZhbHVlOiBzdHJpbmcsIG1ha2VOZWdhdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAobWFrZU5lZ2F0aXZlICYmICFuZXdWYWx1ZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gJy0nICsgbmV3VmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAoIW1ha2VOZWdhdGl2ZSAmJiBuZXdWYWx1ZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUuc3Vic3RyaW5nKDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShpbnB1dCwgJ3ZhbHVlJywgbmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBtb2RlbFZhbHVlID0gdGhpcy50b01vZGVsVmFsdWUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RNb2RlbFZhbHVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShtb2RlbFZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGVjaW1hbFNlcGFyYXRvciB8fCAhdGhpcy50aG91c2FuZFNlcGFyYXRvcikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZXBhcmF0b3JzKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGFzRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGhhc0ZvY3VzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuZnJvbU1vZGVsVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLnN0cmlwVHJhaWxpbmdaZXJvcyh0aGlzLnJlbW92ZVNlcGFyYXRvcnMoZm9ybWF0dGVkVmFsdWUpKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHJhd1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mcm9tTW9kZWxWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBmb3JtYXR0ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuXG4gICAgICAgIGlmIChpc05hTihudW1lcmljVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd05lZ2F0aXZlKCkgJiYgbnVtZXJpY1ZhbHVlIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgbmVnYXRpdmVOb3RBbGxvd2VkOiB0cnVlIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW5WYWx1ZSA9IHRoaXMubWluKCk7XG4gICAgICAgIGlmIChtaW5WYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG51bWVyaWNWYWx1ZSA8IG1pblZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG1pbjoge1xuICAgICAgICAgICAgICAgICAgICBtaW46IG1pblZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IG51bWVyaWNWYWx1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1heFZhbHVlID0gdGhpcy5tYXgoKTtcbiAgICAgICAgaWYgKG1heFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbnVtZXJpY1ZhbHVlID4gbWF4VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbWF4OiB7XG4gICAgICAgICAgICAgICAgICAgIG1heDogbWF4VmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogbnVtZXJpY1ZhbHVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjaW1hbFBhcnQgPSB2YWx1ZS5zcGxpdCgnLicpWzFdO1xuXG4gICAgICAgIGlmIChkZWNpbWFsUGFydCAmJiBkZWNpbWFsUGFydC5sZW5ndGggPiB0aGlzLm1heERlY2ltYWxQbGFjZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBleGNlc3NpdmVEZWNpbWFsUGxhY2VzOiB7XG4gICAgICAgICAgICAgICAgICAgIG1heDogdGhpcy5tYXhEZWNpbWFsUGxhY2VzKCksXG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbDogZGVjaW1hbFBhcnQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuXG4iXX0=
@@ -7,19 +7,42 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common";
8
8
  import * as i2 from "@seniorsistemas/angular-components/tooltip";
9
9
  import * as i3 from "@seniorsistemas/angular-components/shared";
10
+ /**
11
+ * @description Card de exibição de objeto com setor principal, campos extras e
12
+ * painel expansível. Calcula automaticamente quantos campos cábem visíveis
13
+ * conforme a largura do container e suporta nível de severidade.
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <s-object-card [severity]="'info'" [expanded]="false">
18
+ * <s-object-card-main label="Nome" value="João" />
19
+ * <s-object-card-field label="CPF" value="000.000.000-00" />
20
+ * </s-object-card>
21
+ * ```
22
+ *
23
+ * @category Structure
24
+ */
10
25
  export class ObjectCardComponent {
11
26
  static nextIdSeed = 0;
12
27
  static _nextId = ObjectCardComponent.nextIdSeed;
13
28
  static getNextId() {
14
29
  return this._nextId++;
15
30
  }
31
+ /** @description Identificador do componente no DOM. Gerado automaticamente se não informado. */
16
32
  id = `s-object-card-${ObjectCardComponent.getNextId()}`;
33
+ /** @description Define se o painel expansível está aberto. @default false */
17
34
  expanded = false;
35
+ /** @description Tooltip do botão de expandir. @default 'Abrir painel' */
18
36
  expandTooltip = 'Abrir painel';
37
+ /** @description Tooltip do botão de colapsar. @default 'Fechar painel' */
19
38
  collapseTooltip = 'Fechar painel';
39
+ /** @description Largura mínima em pixels de cada campo visível. @default 200 */
20
40
  fieldsMinWidth = 200;
41
+ /** @description Nível de severidade que altera o estilo visual. @default 'default' */
21
42
  severity = 'default';
43
+ /** @description Opções de configuração do botão de borda lateral. */
22
44
  borderButtonOptions;
45
+ /** @description Emitido quando o estado de expansão muda, com o novo valor booleano. */
23
46
  expandedChange = new EventEmitter();
24
47
  main = null;
25
48
  fields = contentChildren(ObjectCardFieldComponent, { descendants: true });
@@ -143,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
143
166
  type: ContentChild,
144
167
  args: [ObjectCardMainComponent, { static: true }]
145
168
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvb2JqZWN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvb2JqZWN0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBR2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUEwQ3ZFLE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsTUFBTSxDQUFVLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7SUFFakQsTUFBTSxDQUFDLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUdNLEVBQUUsR0FBRyxpQkFBaUIsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUd4RCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLGFBQWEsR0FBRyxjQUFj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RSxXQUFXLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ3ZFLENBQUM7eUJBQ0wsQ0FBQztxQkFDTDs4QkFXTSxFQUFFO3NCQURSLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsTUFBTTtnQkFJQSxJQUFJO3NCQURWLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudENoZWNrZWQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBjb250ZW50Q2hpbGRyZW4sXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgdmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYmplY3RDYXJkRmllbGRDb21wb25lbnQgfSBmcm9tICcuL2VsZW1lbnRzL2ZpZWxkL29iamVjdC1jYXJkLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYmplY3RDYXJkTWFpbkNvbXBvbmVudCB9IGZyb20gJy4vZWxlbWVudHMvbWFpbi9vYmplY3QtY2FyZC1tYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmVha3BvaW50cyB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdXRpbHMnO1xuaW1wb3J0IHsgQm9yZGVyQnV0dG9uT3B0aW9ucywgU2V2ZXJpdGllcyB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2hhcmVkJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLW9iamVjdC1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL29iamVjdC1jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdleHBhbmRhYmxlQ29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICcqJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdmYWxzZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndHJ1ZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCcqID0+IHRydWUnLCBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcpKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2ZhbHNlIDw9PiB0cnVlJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdCb3JkZXJCdXR0b25BbmltYXRpb24nLCBbXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMCknLCBvcGFjaXR5OiAwIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlWSgxKScsIG9wYWNpdHk6IDEgfSkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMSknLCBvcGFjaXR5OiAxIH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlWSgwKScsIG9wYWNpdHk6IDAgfSkpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdENhcmRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IG5leHRJZFNlZWQgPSAwO1xuICAgIHByaXZhdGUgc3RhdGljIF9uZXh0SWQgPSBPYmplY3RDYXJkQ29tcG9uZW50Lm5leHRJZFNlZWQ7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE5leHRJZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmV4dElkKys7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgcy1vYmplY3QtY2FyZC0ke09iamVjdENhcmRDb21wb25lbnQuZ2V0TmV4dElkKCl9YDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBleHBhbmRUb29sdGlwID0gJ0FicmlyIHBhaW5lbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xsYXBzZVRvb2x0aXAgPSAnRmVjaGFyIHBhaW5lbCc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZHNNaW5XaWR0aCA9IDIwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldmVyaXR5OiBTZXZlcml0aWVzID0gJ2RlZmF1bHQnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYm9yZGVyQnV0dG9uT3B0aW9ucz86IEJvcmRlckJ1dHRvbk9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKE9iamVjdENhcmRNYWluQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBtYWluOiBPYmplY3RDYXJkTWFpbkNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgZmllbGRzID0gY29udGVudENoaWxkcmVuKE9iamVjdENhcmRGaWVsZENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignY29udGVudENvbnRhaW5lcicpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJkTWFpbkNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2NhcmRNYWluQ29udGFpbmVyJyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25Db250YWluZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdpY29uQ29udGFpbmVyJyk7XG5cbiAgICBwdWJsaWMgbWF4VmlzaWJsZUZpZWxkcyA9IDA7XG5cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlKCkge1xuICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgY29uc3QgbWFpbkZpZWxkV2lkdGggPSB0aGlzLmNhcmRNYWluQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgbGV0IHJlbWFpbmluZ1NwYWNlID0gY29udGFpbmVyV2lkdGggLSBtYWluRmllbGRXaWR0aDtcbiAgICAgICAgY29uc3QgZmllbGRzTWluV2lkdGggPSB0aGlzLmZpZWxkc01pbldpZHRoO1xuICAgICAgICBjb25zdCBleHBhbmRJY29uV2lkdGggPSB0aGlzLmljb25Db250YWluZXIoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGxldCBtYXhGaWVsZFF0ZDogbnVtYmVyO1xuXG4gICAgICAgIGlmICh3aW5kb3dXaWR0aCA8PSBCcmVha3BvaW50cy5TTV9NQVgpIHtcbiAgICAgICAgICAgIG1heEZpZWxkUXRkID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1heEZpZWxkUXRkID0gTWF0aC5mbG9vcihyZW1haW5pbmdTcGFjZSAvIGZpZWxkc01pbldpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0V4cGFuZEljb24gPSBtYXhGaWVsZFF0ZCA8IHRoaXMuZmllbGRzKCkubGVuZ3RoO1xuICAgICAgICBpZiAoaGFzRXhwYW5kSWNvbikge1xuICAgICAgICAgICAgdGhpcy5pY29uQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICAgICAgcmVtYWluaW5nU3BhY2UgPSByZW1haW5pbmdTcGFjZSAtIGV4cGFuZEljb25XaWR0aDtcbiAgICAgICAgICAgIG1heEZpZWxkUXRkID0gTWF0aC5mbG9vcihyZW1haW5pbmdTcGFjZSAvIGZpZWxkc01pbldpZHRoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbkNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubWF4VmlzaWJsZUZpZWxkcyA9IG1heEZpZWxkUXRkO1xuXG4gICAgICAgIGlmIChtYXhGaWVsZFF0ZCA+PSB0aGlzLmZpZWxkcygpLmxlbmd0aCAmJiB0aGlzLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlKCkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID8gdGhpcy5jb2xsYXBzZSgpIDogdGhpcy5leHBhbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwYW5kKCkge1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb2xsYXBzZSgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5leHBhbmRlZCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJvYmplY3QtY2FyZC1jb250YWluZXJcIlxuPlxuICAgIEBpZiAoYm9yZGVyQnV0dG9uT3B0aW9ucz8udmlzaWJsZSA/IGJvcmRlckJ1dHRvbk9wdGlvbnM/LnZpc2libGUoc2V2ZXJpdHkpIDogZmFsc2UpIHtcbiAgICAgICAgPHMtYm9yZGVyLWJ1dHRvblxuICAgICAgICAgICAgW3NldmVyaXR5XT1cInNldmVyaXR5XCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImJvcmRlckJ1dHRvbk9wdGlvbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJvYmplY3QtY2FyZF9fYm9yZGVyLWJ1dHRvblwiXG4gICAgICAgICAgICBbQEJvcmRlckJ1dHRvbkFuaW1hdGlvbl1cbiAgICAgICAgPjwvcy1ib3JkZXItYnV0dG9uPlxuICAgIH1cblxuICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1tYWluLWNvbnRhaW5lcidcIlxuICAgICAgICBjbGFzcz1cIm1haW4tY29udGFpbmVyXCJcbiAgICAgICAgI2NvbnRlbnRDb250YWluZXJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3dpdGgtaGlkZGVuLWZpZWxkcyc6IGZpZWxkcygpLmxlbmd0aCA+IG1heFZpc2libGVGaWVsZHMsXG4gICAgICAgICAgICAnd2l0aC12aXNpYmxlLWZpZWxkcyc6IGZpZWxkcygpLmxlbmd0aCAmJiBtYXhWaXNpYmxlRmllbGRzLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1kZWZhdWx0Jzogc2V2ZXJpdHkgPT09ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICdtYWluLWNvbnRhaW5lci0tc2V2ZXJpdHktaW5mbyc6IHNldmVyaXR5ID09PSAnaW5mbycsXG4gICAgICAgICAgICAnbWFpbi1jb250YWluZXItLXNldmVyaXR5LXdhcm4nOiBzZXZlcml0eSA9PT0gJ3dhcm4nLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1lcnJvcic6IHNldmVyaXR5ID09PSAnZXJyb3InLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1zdWNjZXNzJzogc2V2ZXJpdHkgPT09ICdzdWNjZXNzJyxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInMtb2JqZWN0LWNhcmQtbWFpblwiXG4gICAgICAgICAgICAgICAgI2NhcmRNYWluQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJmaWVsZHNNaW5XaWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicy1vYmplY3QtY2FyZC1tYWluXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAobWF4VmlzaWJsZUZpZWxkcyAmJiBmaWVsZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBmaWVsZHMoKSB8IHNsaWNlOiAwIDogbWF4VmlzaWJsZUZpZWxkczsgdHJhY2sgZmllbGQuaWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicy1vYmplY3QtY2FyZC1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiZmllbGRzTWluV2lkdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2lkXT1cImlkICsgJy1leHBhbmQtaWNvbi1jb250YWluZXInXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgICNpY29uQ29udGFpbmVyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAgICAgW3NUb29sdGlwXT1cImV4cGFuZGVkID8gY29sbGFwc2VUb29sdGlwIDogZXhwYW5kVG9vbHRpcFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1leHBhbmQtaWNvbidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWljb24gZmFcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZhLW1pbnVzJzogZXhwYW5kZWQsICdmYS1wbHVzJzogIWV4cGFuZGVkIH1cIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIFtpZF09XCJpZCArICctZXhwYW5kYWJsZS1jb250YWluZXInXCJcbiAgICAgICAgW0BleHBhbmRhYmxlQ29udGVudF09XCJleHBhbmRlZFwiXG4gICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LWRlZmF1bHQnOiBzZXZlcml0eSA9PT0gJ2RlZmF1bHQnLFxuICAgICAgICAgICAgJ2V4cGFuZGFibGUtY29udGFpbmVyLS1zZXZlcml0eS1pbmZvJzogc2V2ZXJpdHkgPT09ICdpbmZvJyxcbiAgICAgICAgICAgICdleHBhbmRhYmxlLWNvbnRhaW5lci0tc2V2ZXJpdHktd2Fybic6IHNldmVyaXR5ID09PSAnd2FybicsXG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LWVycm9yJzogc2V2ZXJpdHkgPT09ICdlcnJvcicsXG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LXN1Y2Nlc3MnOiBzZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnLFxuICAgICAgICB9XCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZGxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGZpZWxkcygpIHwgc2xpY2U6IG1heFZpc2libGVGaWVsZHMgOiBmaWVsZHMoKS5sZW5ndGg7IHRyYWNrIGZpZWxkLmlkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInMtb2JqZWN0LWNhcmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvb2JqZWN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29iamVjdC1jYXJkL3NyYy9saWIvb2JqZWN0LWNhcmQvb2JqZWN0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBR2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7QUFHdkU7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUF3Q0gsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixNQUFNLENBQVUsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUM5QixNQUFNLENBQUMsT0FBTyxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztJQUVqRCxNQUFNLENBQUMsU0FBUztRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsZ0dBQWdHO0lBRXpGLEVBQUUsR0FBRyxpQkFBaUIsbUJBQW1CLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUUvRCw2RUFB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UUFBUSxFQUFFO2dDQUNqQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQ0FDN0MsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUN2RSxDQUFDO3lCQUNMLENBQUM7cUJBQ0w7OEJBWU0sRUFBRTtzQkFEUixLQUFLO2dCQUtDLFFBQVE7c0JBRGQsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQUtDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBS0MsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxRQUFRO3NCQURkLEtBQUs7Z0JBS0MsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUtDLGNBQWM7c0JBRHBCLE1BQU07Z0JBSUEsSUFBSTtzQkFEVixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgY29udGVudENoaWxkcmVuLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JqZWN0Q2FyZEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lbGVtZW50cy9maWVsZC9vYmplY3QtY2FyZC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JqZWN0Q2FyZE1haW5Db21wb25lbnQgfSBmcm9tICcuL2VsZW1lbnRzL21haW4vb2JqZWN0LWNhcmQtbWFpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcbmltcG9ydCB7IEJvcmRlckJ1dHRvbk9wdGlvbnMsIFNldmVyaXRpZXMgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3NoYXJlZCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENhcmQgZGUgZXhpYmnDp8OjbyBkZSBvYmpldG8gY29tIHNldG9yIHByaW5jaXBhbCwgY2FtcG9zIGV4dHJhcyBlXG4gKiBwYWluZWwgZXhwYW5zw612ZWwuIENhbGN1bGEgYXV0b21hdGljYW1lbnRlIHF1YW50b3MgY2FtcG9zIGPDoWJlbSB2aXPDrXZlaXNcbiAqIGNvbmZvcm1lIGEgbGFyZ3VyYSBkbyBjb250YWluZXIgZSBzdXBvcnRhIG7DrXZlbCBkZSBzZXZlcmlkYWRlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8cy1vYmplY3QtY2FyZCBbc2V2ZXJpdHldPVwiJ2luZm8nXCIgW2V4cGFuZGVkXT1cImZhbHNlXCI+XG4gKiAgIDxzLW9iamVjdC1jYXJkLW1haW4gbGFiZWw9XCJOb21lXCIgdmFsdWU9XCJKb8Ojb1wiIC8+XG4gKiAgIDxzLW9iamVjdC1jYXJkLWZpZWxkIGxhYmVsPVwiQ1BGXCIgdmFsdWU9XCIwMDAuMDAwLjAwMC0wMFwiIC8+XG4gKiA8L3Mtb2JqZWN0LWNhcmQ+XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgU3RydWN0dXJlXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncy1vYmplY3QtY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9vYmplY3QtY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgdHJpZ2dlcignZXhwYW5kYWJsZUNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnKicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnZmFsc2UnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3RydWUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnKicsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB0cnVlJywgYW5pbWF0ZSgnMjAwbXMgZWFzZS1vdXQnKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdmYWxzZSA8PT4gdHJ1ZScsIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JykpLFxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignQm9yZGVyQnV0dG9uQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGVZKDApJywgb3BhY2l0eTogMCB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMSknLCBvcGFjaXR5OiAxIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGVZKDEpJywgb3BhY2l0eTogMSB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdzY2FsZVkoMCknLCBvcGFjaXR5OiAwIH0pKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBuZXh0SWRTZWVkID0gMDtcbiAgICBwcml2YXRlIHN0YXRpYyBfbmV4dElkID0gT2JqZWN0Q2FyZENvbXBvbmVudC5uZXh0SWRTZWVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXROZXh0SWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25leHRJZCsrO1xuICAgIH1cblxuICAgIC8qKiBAZGVzY3JpcHRpb24gSWRlbnRpZmljYWRvciBkbyBjb21wb25lbnRlIG5vIERPTS4gR2VyYWRvIGF1dG9tYXRpY2FtZW50ZSBzZSBuw6NvIGluZm9ybWFkby4gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLW9iamVjdC1jYXJkLSR7T2JqZWN0Q2FyZENvbXBvbmVudC5nZXROZXh0SWQoKX1gO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBEZWZpbmUgc2UgbyBwYWluZWwgZXhwYW5zw612ZWwgZXN0w6EgYWJlcnRvLiBAZGVmYXVsdCBmYWxzZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGRlc2NyaXB0aW9uIFRvb2x0aXAgZG8gYm90w6NvIGRlIGV4cGFuZGlyLiBAZGVmYXVsdCAnQWJyaXIgcGFpbmVsJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4cGFuZFRvb2x0aXAgPSAnQWJyaXIgcGFpbmVsJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gVG9vbHRpcCBkbyBib3TDo28gZGUgY29sYXBzYXIuIEBkZWZhdWx0ICdGZWNoYXIgcGFpbmVsJyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbGxhcHNlVG9vbHRpcCA9ICdGZWNoYXIgcGFpbmVsJztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gTGFyZ3VyYSBtw61uaW1hIGVtIHBpeGVscyBkZSBjYWRhIGNhbXBvIHZpc8OtdmVsLiBAZGVmYXVsdCAyMDAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWVsZHNNaW5XaWR0aCA9IDIwMDtcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gTsOtdmVsIGRlIHNldmVyaWRhZGUgcXVlIGFsdGVyYSBvIGVzdGlsbyB2aXN1YWwuIEBkZWZhdWx0ICdkZWZhdWx0JyAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldmVyaXR5OiBTZXZlcml0aWVzID0gJ2RlZmF1bHQnO1xuXG4gICAgLyoqIEBkZXNjcmlwdGlvbiBPcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBkbyBib3TDo28gZGUgYm9yZGEgbGF0ZXJhbC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBib3JkZXJCdXR0b25PcHRpb25zPzogQm9yZGVyQnV0dG9uT3B0aW9ucztcblxuICAgIC8qKiBAZGVzY3JpcHRpb24gRW1pdGlkbyBxdWFuZG8gbyBlc3RhZG8gZGUgZXhwYW5zw6NvIG11ZGEsIGNvbSBvIG5vdm8gdmFsb3IgYm9vbGVhbm8uICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChPYmplY3RDYXJkTWFpbkNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgbWFpbjogT2JqZWN0Q2FyZE1haW5Db21wb25lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGZpZWxkcyA9IGNvbnRlbnRDaGlsZHJlbihPYmplY3RDYXJkRmllbGRDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRhaW5lciA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2NvbnRlbnRDb250YWluZXInKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FyZE1haW5Db250YWluZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdjYXJkTWFpbkNvbnRhaW5lcicpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uQ29udGFpbmVyID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignaWNvbkNvbnRhaW5lcicpO1xuXG4gICAgcHVibGljIG1heFZpc2libGVGaWVsZHMgPSAwO1xuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGNvbnN0IG1haW5GaWVsZFdpZHRoID0gdGhpcy5jYXJkTWFpbkNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGxldCByZW1haW5pbmdTcGFjZSA9IGNvbnRhaW5lcldpZHRoIC0gbWFpbkZpZWxkV2lkdGg7XG4gICAgICAgIGNvbnN0IGZpZWxkc01pbldpZHRoID0gdGhpcy5maWVsZHNNaW5XaWR0aDtcbiAgICAgICAgY29uc3QgZXhwYW5kSWNvbldpZHRoID0gdGhpcy5pY29uQ29udGFpbmVyKCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICBsZXQgbWF4RmllbGRRdGQ6IG51bWJlcjtcblxuICAgICAgICBpZiAod2luZG93V2lkdGggPD0gQnJlYWtwb2ludHMuU01fTUFYKSB7XG4gICAgICAgICAgICBtYXhGaWVsZFF0ZCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXhGaWVsZFF0ZCA9IE1hdGguZmxvb3IocmVtYWluaW5nU3BhY2UgLyBmaWVsZHNNaW5XaWR0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYXNFeHBhbmRJY29uID0gbWF4RmllbGRRdGQgPCB0aGlzLmZpZWxkcygpLmxlbmd0aDtcbiAgICAgICAgaWYgKGhhc0V4cGFuZEljb24pIHtcbiAgICAgICAgICAgIHRoaXMuaWNvbkNvbnRhaW5lcigpLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgICAgIHJlbWFpbmluZ1NwYWNlID0gcmVtYWluaW5nU3BhY2UgLSBleHBhbmRJY29uV2lkdGg7XG4gICAgICAgICAgICBtYXhGaWVsZFF0ZCA9IE1hdGguZmxvb3IocmVtYWluaW5nU3BhY2UgLyBmaWVsZHNNaW5XaWR0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmljb25Db250YWluZXIoKS5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1heFZpc2libGVGaWVsZHMgPSBtYXhGaWVsZFF0ZDtcblxuICAgICAgICBpZiAobWF4RmllbGRRdGQgPj0gdGhpcy5maWVsZHMoKS5sZW5ndGggJiYgdGhpcy5leHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA/IHRoaXMuY29sbGFwc2UoKSA6IHRoaXMuZXhwYW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4cGFuZCgpIHtcbiAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLmV4cGFuZGVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29sbGFwc2UoKSB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5leHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZXhwYW5kZWQpO1xuICAgIH1cbn1cblxuIiwiPGRpdlxuICAgIFtpZF09XCJpZFwiXG4gICAgY2xhc3M9XCJvYmplY3QtY2FyZC1jb250YWluZXJcIlxuPlxuICAgIEBpZiAoYm9yZGVyQnV0dG9uT3B0aW9ucz8udmlzaWJsZSA/IGJvcmRlckJ1dHRvbk9wdGlvbnM/LnZpc2libGUoc2V2ZXJpdHkpIDogZmFsc2UpIHtcbiAgICAgICAgPHMtYm9yZGVyLWJ1dHRvblxuICAgICAgICAgICAgW3NldmVyaXR5XT1cInNldmVyaXR5XCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImJvcmRlckJ1dHRvbk9wdGlvbnNcIlxuICAgICAgICAgICAgY2xhc3M9XCJvYmplY3QtY2FyZF9fYm9yZGVyLWJ1dHRvblwiXG4gICAgICAgICAgICBbQEJvcmRlckJ1dHRvbkFuaW1hdGlvbl1cbiAgICAgICAgPjwvcy1ib3JkZXItYnV0dG9uPlxuICAgIH1cblxuICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1tYWluLWNvbnRhaW5lcidcIlxuICAgICAgICBjbGFzcz1cIm1haW4tY29udGFpbmVyXCJcbiAgICAgICAgI2NvbnRlbnRDb250YWluZXJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3dpdGgtaGlkZGVuLWZpZWxkcyc6IGZpZWxkcygpLmxlbmd0aCA+IG1heFZpc2libGVGaWVsZHMsXG4gICAgICAgICAgICAnd2l0aC12aXNpYmxlLWZpZWxkcyc6IGZpZWxkcygpLmxlbmd0aCAmJiBtYXhWaXNpYmxlRmllbGRzLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1kZWZhdWx0Jzogc2V2ZXJpdHkgPT09ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICdtYWluLWNvbnRhaW5lci0tc2V2ZXJpdHktaW5mbyc6IHNldmVyaXR5ID09PSAnaW5mbycsXG4gICAgICAgICAgICAnbWFpbi1jb250YWluZXItLXNldmVyaXR5LXdhcm4nOiBzZXZlcml0eSA9PT0gJ3dhcm4nLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1lcnJvcic6IHNldmVyaXR5ID09PSAnZXJyb3InLFxuICAgICAgICAgICAgJ21haW4tY29udGFpbmVyLS1zZXZlcml0eS1zdWNjZXNzJzogc2V2ZXJpdHkgPT09ICdzdWNjZXNzJyxcbiAgICAgICAgfVwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib2JqZWN0LWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInMtb2JqZWN0LWNhcmQtbWFpblwiXG4gICAgICAgICAgICAgICAgI2NhcmRNYWluQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJmaWVsZHNNaW5XaWR0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicy1vYmplY3QtY2FyZC1tYWluXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAobWF4VmlzaWJsZUZpZWxkcyAmJiBmaWVsZHMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAZm9yIChmaWVsZCBvZiBmaWVsZHMoKSB8IHNsaWNlOiAwIDogbWF4VmlzaWJsZUZpZWxkczsgdHJhY2sgZmllbGQuaWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicy1vYmplY3QtY2FyZC1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiZmllbGRzTWluV2lkdGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgW2lkXT1cImlkICsgJy1leHBhbmQtaWNvbi1jb250YWluZXInXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgICNpY29uQ29udGFpbmVyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAgICAgW3NUb29sdGlwXT1cImV4cGFuZGVkID8gY29sbGFwc2VUb29sdGlwIDogZXhwYW5kVG9vbHRpcFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1leHBhbmQtaWNvbidcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWljb24gZmFcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZhLW1pbnVzJzogZXhwYW5kZWQsICdmYS1wbHVzJzogIWV4cGFuZGVkIH1cIlxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIFtpZF09XCJpZCArICctZXhwYW5kYWJsZS1jb250YWluZXInXCJcbiAgICAgICAgW0BleHBhbmRhYmxlQ29udGVudF09XCJleHBhbmRlZFwiXG4gICAgICAgIGNsYXNzPVwiZXhwYW5kYWJsZS1jb250YWluZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LWRlZmF1bHQnOiBzZXZlcml0eSA9PT0gJ2RlZmF1bHQnLFxuICAgICAgICAgICAgJ2V4cGFuZGFibGUtY29udGFpbmVyLS1zZXZlcml0eS1pbmZvJzogc2V2ZXJpdHkgPT09ICdpbmZvJyxcbiAgICAgICAgICAgICdleHBhbmRhYmxlLWNvbnRhaW5lci0tc2V2ZXJpdHktd2Fybic6IHNldmVyaXR5ID09PSAnd2FybicsXG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LWVycm9yJzogc2V2ZXJpdHkgPT09ICdlcnJvcicsXG4gICAgICAgICAgICAnZXhwYW5kYWJsZS1jb250YWluZXItLXNldmVyaXR5LXN1Y2Nlc3MnOiBzZXZlcml0eSA9PT0gJ3N1Y2Nlc3MnLFxuICAgICAgICB9XCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZGxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGZpZWxkIG9mIGZpZWxkcygpIHwgc2xpY2U6IG1heFZpc2libGVGaWVsZHMgOiBmaWVsZHMoKS5sZW5ndGg7IHRyYWNrIGZpZWxkLmlkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInMtb2JqZWN0LWNhcmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkLmNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -14,4 +14,4 @@ export function provideEditorField() {
14
14
  },
15
15
  ]);
16
16
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29wdGlvbmFsLWZpZWxkcy9lZGl0b3IvZWRpdG9yLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBZ0I3RSxNQUFNLFVBQVUsa0JBQWtCO0lBQzlCLE9BQU8sd0JBQXdCLENBQUM7UUFDNUI7WUFDSSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE9BQU8sR0FBRyxFQUFFO29CQUNSLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUNELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZENvbmZpZywgRHluYW1pY0Zvcm1SZWdpc3RyeSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtJztcbmltcG9ydCB7IEVkaXRvckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0b3ItZmllbGQvZWRpdG9yLWZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yRmllbGRDb25maWcgZXh0ZW5kcyBGaWVsZENvbmZpZyB7XG4gICAgdHlwZTogJ2VkaXRvcic7XG4gICAgZm9ybWF0cz86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICBtb2R1bGVzPzogYW55O1xuICAgIHN0eWxlPzogeyBba2xhc3M6IHN0cmluZ106IHVua25vd24gfTtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtJyB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBGaWVsZFR5cGVNYXAge1xuICAgICAgICBlZGl0b3I6IEVkaXRvckZpZWxkQ29uZmlnO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVFZGl0b3JGaWVsZCgpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVJlZ2lzdHJ5LnJlZ2lzdGVyRmllbGQoRWRpdG9yRmllbGRDb21wb25lbnQsICdlZGl0b3InKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0pO1xufVxuXG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL29wdGlvbmFsLWZpZWxkcy9lZGl0b3IvZWRpdG9yLWZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXdCLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBdUM3RSxNQUFNLFVBQVUsa0JBQWtCO0lBQzlCLE9BQU8sd0JBQXdCLENBQUM7UUFDNUI7WUFDSSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE9BQU8sR0FBRyxFQUFFO29CQUNSLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDdEUsQ0FBQyxDQUFDO1lBQ04sQ0FBQztZQUNELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZENvbmZpZywgRHluYW1pY0Zvcm1SZWdpc3RyeSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtJztcbmltcG9ydCB7IEVkaXRvckZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi9lZGl0b3ItZmllbGQvZWRpdG9yLWZpZWxkLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQ29uZmlndXJhw6fDo28gZm9ybmVjaWRhIGFvIGluc3RhbmNpYXIgdW0gY2FtcG8gZG8gdGlwbyAnZWRpdG9yJy5cbiAqIFV0aWxpemFkbyBwYXJhIHJlbmRlcml6YXIgdW0gZWRpdG9yIGRlIHJpY2ggdGV4dCAod3lzaXd5ZykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yRmllbGRDb25maWcgZXh0ZW5kcyBGaWVsZENvbmZpZyB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lIG8gdGlwbyDDum5pY28gZGVzdGUgY2FtcG8gb3BjaW9uYWwuXG4gICAgICovXG4gICAgdHlwZTogJ2VkaXRvcic7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRvcyBzdXBvcnRhZG9zIHBlbG8gZWRpdG9yIChleDogJ2JvbGQnLCAnaXRhbGljJykuXG4gICAgICovXG4gICAgZm9ybWF0cz86IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIHNlIG8gZWRpdG9yIGVzdGFyw6EgYXBlbmFzIGVtIG1vZG8gbGVpdHVyYS5cbiAgICAgKi9cbiAgICByZWFkb25seT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNw7NkdWxvcyBhZGljaW9uYWlzIGRvIFF1aWxsSlMgYSBzZXJlbSBhdGl2YWRvcyBubyBlZGl0b3IuXG4gICAgICovXG4gICAgbW9kdWxlcz86IGFueTtcblxuICAgIC8qKlxuICAgICAqIEVzdGlsb3MgY3VzdG9taXphZG9zIGFwbGljYWRvcyBkaXJldGFtZW50ZSBubyBjb250YWluZXIgZG8gZWRpdG9yLlxuICAgICAqL1xuICAgIHN0eWxlPzogeyBba2xhc3M6IHN0cmluZ106IHVua25vd24gfTtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtJyB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBGaWVsZFR5cGVNYXAge1xuICAgICAgICBlZGl0b3I6IEVkaXRvckZpZWxkQ29uZmlnO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVFZGl0b3JGaWVsZCgpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEeW5hbWljRm9ybVJlZ2lzdHJ5LnJlZ2lzdGVyRmllbGQoRWRpdG9yRmllbGRDb21wb25lbnQsICdlZGl0b3InKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0pO1xufVxuXG4iXX0=
@@ -6,10 +6,29 @@ import { TranslateModule } from '@ngx-translate/core';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/forms";
8
8
  import * as i2 from "@ngx-translate/core";
9
+ /**
10
+ * @description Componente de paginação standalone que exibe botões de páginas,
11
+ * seletor de itens por página e navegação para primeira/última página.
12
+ * Emite `pageChange` a cada mudança de página ou tamanho de página.
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <s-paginator
17
+ * [totalRecords]="total"
18
+ * [(rows)]="tamanhoPagina"
19
+ * (pageChange)="onPaginaMudou($event)" />
20
+ * ```
21
+ *
22
+ * @category Structure
23
+ */
9
24
  export class PaginatorComponent {
25
+ /** @description Número total de registros. Campo obrigatório. */
10
26
  totalRecords = input.required();
27
+ /** @description Número de itens por página. Suporta two-way binding. @default 10 */
11
28
  rows = model(10);
29
+ /** @description Opções do seletor de itens por página. @default [10, 20, 50, 100, 200] */
12
30
  rowsPerPageOptions = input([10, 20, 50, 100, 200]);
31
+ /** @description Emitido sempre que a página ou o número de itens por página muda. */
13
32
  pageChange = output();
14
33
  currentPageEffect = effect(() => {
15
34
  const page = this.currentPage() - 1;
@@ -135,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
135
154
  type: Component,
136
155
  args: [{ selector: 's-paginator', standalone: true, imports: [InteractiveContentDirective, SelectComponent, FormsModule, TranslateModule], template: "<div class=\"flex justify-between\">\n <section class=\"flex items-center gap-2\">\n <div\n class=\"inline-block h-8 divide-x divide-grayscale-30 overflow-hidden rounded-md border border-grayscale-30\"\n >\n @for (btn of buttons(); track $index) {\n @let active = btn.pageIndex === currentPage();\n <button\n [class.bg-criticality-blue]=\"active\"\n [class.text-grayscale-0]=\"active\"\n [class.text-criticality-blue]=\"!active\"\n (sInteractiveContent)=\"activatedButton(btn)\"\n [disabled]=\"btn.disabled || (btn.validate && btn.validate()) || false\"\n class=\"group h-8 w-8 hover:bg-grayscale-20 hover:text-grayscale-100 disabled:hover:bg-[transparent] disabled:hover:text-criticality-blue\"\n >\n <div class=\"group-disabled:opacity-50\">\n @let page = btn.pageIndex;\n @let icon = btn.icon;\n @if (page !== undefined) {\n {{ page }}\n }\n @if (icon) {\n <i [class]=\"icon\"></i>\n }\n </div>\n </button>\n }\n </div>\n <s-select\n [options]=\"rowsPerPageOptions()\"\n [(ngModel)]=\"rows\"\n (ngModelChange)=\"rowsPerPageChange()\"\n ></s-select>\n </section>\n <section class=\"flex items-center gap-2\">\n @let text =\n totalRecords() === 0\n ? 'platform.angular_components.total_record'\n : 'platform.angular_components.total_records';\n <p class=\"text-[14px] text-[#212533]\">\n {{ text | translate: { count: totalRecords() } }}\n </p>\n <ng-content></ng-content>\n </section>\n</div>\n" }]
137
156
  }] });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFTdEQsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsa0JBQWtCLEdBQUcsS0FBSyxDQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0QsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJ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UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0E3SVEsa0JBQWtCOzRGQUFsQixrQkFBa0IsOGlCQ2QvQiwyOERBNkNBLDRDRGxDYywyQkFBMkIsMEpBQUUsZUFBZSxrVUFBRSxXQUFXLDhWQUFFLGVBQWU7OzRGQUczRSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0ksYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLDJCQUEyQixFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCwgbW9kZWwsIE9uRGVzdHJveSwgb3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2ludGVyYWN0aXZlLWNvbnRlbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zZWxlY3QnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbmltcG9ydCB7IFBhZ2VDaGFuZ2UsIFBhZ2luYXRvckludGVybmFsQnV0dG9uIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2luYXRvci5tb2RlbHMnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXBhZ2luYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHRvdGFsUmVjb3JkcyA9IGlucHV0LnJlcXVpcmVkPG51bWJlcj4oKTtcbiAgICByb3dzID0gbW9kZWwoMTApO1xuICAgIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPihbMTAsIDIwLCA1MCwgMTAwLCAyMDBdKTtcbiAgICBwYWdlQ2hhbmdlID0gb3V0cHV0PFBhZ2VDaGFuZ2U+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRQYWdlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSAtIDE7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICBwYWdlQ291bnQ6IHRoaXMudG90YWxQYWdlcygpLFxuICAgICAgICAgICAgcm93czogdGhpcy5yb3dzKCksXG4gICAgICAgICAgICBmaXJzdDogdGhpcy5yb3dzKCkgKiBwYWdlLFxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IE1BWF9QQUdFX0JVVFRPTlMgPSA1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGFzUHJldmlvdXNQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBwcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICByZXR1cm4gcHJldmlvdXNQYWdlID49IDE7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc05leHRQYWdlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKSArIDE7XG4gICAgICAgIHJldHVybiBuZXh0UGFnZSA8PSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjdXJyZW50UGFnZSA9IHNpZ25hbCgxKTtcblxuICAgIHByb3RlY3RlZCBidXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uUGFnZUJ1dHRvbnM6IFBhZ2luYXRvckludGVybmFsQnV0dG9uW10gPSBbXTtcbiAgICAgICAgY29uc3QgbWF4UGFnZUJ1dHRvbnMgPSB0aGlzLk1BWF9QQUdFX0JVVFRPTlM7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpO1xuICAgICAgICBjb25zdCBtaWRkbGUgPSBNYXRoLmZsb29yKG1heFBhZ2VCdXR0b25zIC8gMik7XG4gICAgICAgIGNvbnN0IF9zdGFydFBhZ2UgPSBjdXJyZW50UGFnZSAtIG1pZGRsZTtcbiAgICAgICAgbGV0IHN0YXJ0UGFnZSA9IF9zdGFydFBhZ2UgPCAxID8gMSA6IF9zdGFydFBhZ2U7XG4gICAgICAgIGNvbnN0IF9lbmRQYWdlID0gc3RhcnRQYWdlICsgbWF4UGFnZUJ1dHRvbnMgLSAxO1xuICAgICAgICBjb25zdCBlbmRQYWdlSXNNb3JlVGhhblRvdGFsUGFnZXMgPSBfZW5kUGFnZSA+IHRoaXMudG90YWxQYWdlcygpO1xuXG4gICAgICAgIGlmIChlbmRQYWdlSXNNb3JlVGhhblRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBfZW5kUGFnZSAtIHRoaXMudG90YWxQYWdlcygpO1xuICAgICAgICAgICAgY29uc3QgY2FuTW9kaWZ5U3RhcnRQYWdlID0gc3RhcnRQYWdlIC0gZGlmZiA+PSAxO1xuICAgICAgICAgICAgaWYgKGNhbk1vZGlmeVN0YXJ0UGFnZSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0UGFnZSA9IHN0YXJ0UGFnZSAtIGRpZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kUGFnZSA9IGVuZFBhZ2VJc01vcmVUaGFuVG90YWxQYWdlcyA/IHRoaXMudG90YWxQYWdlcygpIDogX2VuZFBhZ2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcbiAgICAgICAgICAgIG5hdmlnYXRpb25QYWdlQnV0dG9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjbGlja2VkOiAocGFnZSkgPT4gdGhpcy5nb1RvUGFnZShwYWdlLnBhZ2VJbmRleCBhcyBudW1iZXIpLFxuICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogaSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRklSU1RfUEFHRV9CVVRUT04sXG4gICAgICAgICAgICB0aGlzLlBSRVZJT1VTX1BBR0VfQlVUVE9OLFxuICAgICAgICAgICAgLi4ubmF2aWdhdGlvblBhZ2VCdXR0b25zLFxuICAgICAgICAgICAgdGhpcy5ORVhUX1BBR0VfQlVUVE9OLFxuICAgICAgICAgICAgdGhpcy5MQVNUX1BBR0VfQlVUVE9OLFxuICAgICAgICBdO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBGSVJTVF9QQUdFX0JVVFRPTjogUGFnaW5hdG9ySW50ZXJuYWxCdXR0b24gPSB7XG4gICAgICAgIGNsaWNrZWQ6IHRoaXMuZ29GaXJzdFBhZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgaWNvbjogJ2ZhcyBmYS1zdGVwLWJhY2t3YXJkJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKTtcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgUFJFVklPVVNfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvUHJldmlvdXNQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtbGVmdCcsXG4gICAgICAgIHZhbGlkYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaGFzUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IExBU1RfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvTGFzdFBhZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgaWNvbjogJ2ZhcyBmYS1zdGVwLWZvcndhcmQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IE5FWFRfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvTmV4dFBhZ2UuYmluZCh0aGlzKSxcbiAgICAgICAgaWNvbjogJ2ZhcyBmYS1jYXJldC1yaWdodCcsXG4gICAgICAgIHZhbGlkYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaGFzTmV4dFBhZ2UoKTtcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIHByaXZhdGUgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxSZWNvcmRzID0gdGhpcy50b3RhbFJlY29yZHMoKTtcbiAgICAgICAgY29uc3QgX3BhZ2VzID0gdG90YWxSZWNvcmRzIC8gdGhpcy5yb3dzKCk7XG4gICAgICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5jZWlsKF9wYWdlcyk7XG4gICAgICAgIGNvbnN0IGlzRXhhY3RQYWdlcyA9IF9wYWdlcyA9PT0gcGFnZXM7XG4gICAgICAgIHJldHVybiBpc0V4YWN0UGFnZXMgPyBwYWdlcyA6IHBhZ2VzICsgMTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZUVmZmVjdC5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJvd3NQZXJQYWdlQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSgpICE9PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFjdGl2YXRlZEJ1dHRvbihidXR0b246IFBhZ2luYXRvckludGVybmFsQnV0dG9uKTogdm9pZCB7XG4gICAgICAgIGJ1dHRvbi5jbGlja2VkKGJ1dHRvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNOZXh0UGFnZSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS51cGRhdGUoKHZhbHVlKSA9PiB2YWx1ZSArIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29QcmV2aW91c1BhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5oYXNQcmV2aW91c1BhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgLSAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvTGFzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy50b3RhbFBhZ2VzKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29Ub1BhZ2UocGFnZUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZS5zZXQocGFnZUluZGV4KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTMwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoYnRuIG9mIGJ1dHRvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGxldCBhY3RpdmUgPSBidG4ucGFnZUluZGV4ID09PSBjdXJyZW50UGFnZSgpO1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJnLWNyaXRpY2FsaXR5LWJsdWVdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtZ3JheXNjYWxlLTBdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtY3JpdGljYWxpdHktYmx1ZV09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmRpc2FibGVkIHx8IChidG4udmFsaWRhdGUgJiYgYnRuLnZhbGlkYXRlKCkpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBoLTggdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRpc2FibGVkOm9wYWNpdHktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcGFnZSA9IGJ0bi5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb24gPSBidG4uaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHMtc2VsZWN0XG4gICAgICAgICAgICBbb3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9wYWdpbmF0b3Ivc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFHdEQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLGlFQUFpRTtJQUNqRSxZQUFZLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3hDLG9GQUFvRjtJQUNwRixJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLDBGQUEwRjtJQUMxRixrQkFBa0IsR0FBRyxLQUFLLENBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxxRkFBcUY7SUFDckYsVUFBVSxHQUFHLE1BQU0sRUFBYyxDQUFDO0lBRWpCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxH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QUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxRQUFRLENBQUMsU0FBaUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0FqSlEsa0JBQWtCOzRGQUFsQixrQkFBa0IsOGlCQzdCL0IsMjhEQTZDQSw0Q0RuQmMsMkJBQTJCLDBKQUFFLGVBQWUsa1VBQUUsV0FBVyw4VkFBRSxlQUFlOzs0RkFHM0Usa0JBQWtCO2tCQU45QixTQUFTOytCQUNJLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQywyQkFBMkIsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG1vZGVsLCBPbkRlc3Ryb3ksIG91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9pbnRlcmFjdGl2ZS1jb250ZW50JztcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2VsZWN0JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBQYWdlQ2hhbmdlLCBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiB9IGZyb20gJy4uL21vZGVscy9wYWdpbmF0b3IubW9kZWxzJztcbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbXBvbmVudGUgZGUgcGFnaW5hw6fDo28gc3RhbmRhbG9uZSBxdWUgZXhpYmUgYm90w7VlcyBkZSBww6FnaW5hcyxcbiAqIHNlbGV0b3IgZGUgaXRlbnMgcG9yIHDDoWdpbmEgZSBuYXZlZ2HDp8OjbyBwYXJhIHByaW1laXJhL8O6bHRpbWEgcMOhZ2luYS5cbiAqIEVtaXRlIGBwYWdlQ2hhbmdlYCBhIGNhZGEgbXVkYW7Dp2EgZGUgcMOhZ2luYSBvdSB0YW1hbmhvIGRlIHDDoWdpbmEuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxzLXBhZ2luYXRvclxuICogICBbdG90YWxSZWNvcmRzXT1cInRvdGFsXCJcbiAqICAgWyhyb3dzKV09XCJ0YW1hbmhvUGFnaW5hXCJcbiAqICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdpbmFNdWRvdSgkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBTdHJ1Y3R1cmVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzLXBhZ2luYXRvcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSW50ZXJhY3RpdmVDb250ZW50RGlyZWN0aXZlLCBTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAZGVzY3JpcHRpb24gTsO6bWVybyB0b3RhbCBkZSByZWdpc3Ryb3MuIENhbXBvIG9icmlnYXTDs3Jpby4gKi9cbiAgICB0b3RhbFJlY29yZHMgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG4gICAgLyoqIEBkZXNjcmlwdGlvbiBOw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hLiBTdXBvcnRhIHR3by13YXkgYmluZGluZy4gQGRlZmF1bHQgMTAgKi9cbiAgICByb3dzID0gbW9kZWwoMTApO1xuICAgIC8qKiBAZGVzY3JpcHRpb24gT3DDp8O1ZXMgZG8gc2VsZXRvciBkZSBpdGVucyBwb3IgcMOhZ2luYS4gQGRlZmF1bHQgWzEwLCAyMCwgNTAsIDEwMCwgMjAwXSAqL1xuICAgIHJvd3NQZXJQYWdlT3B0aW9ucyA9IGlucHV0PG51bWJlcltdPihbMTAsIDIwLCA1MCwgMTAwLCAyMDBdKTtcbiAgICAvKiogQGRlc2NyaXB0aW9uIEVtaXRpZG8gc2VtcHJlIHF1ZSBhIHDDoWdpbmEgb3UgbyBuw7ptZXJvIGRlIGl0ZW5zIHBvciBww6FnaW5hIG11ZGEuICovXG4gICAgcGFnZUNoYW5nZSA9IG91dHB1dDxQYWdlQ2hhbmdlPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50UGFnZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgLSAxO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZUNvdW50OiB0aGlzLnRvdGFsUGFnZXMoKSxcbiAgICAgICAgICAgIHJvd3M6IHRoaXMucm93cygpLFxuICAgICAgICAgICAgZmlyc3Q6IHRoaXMucm93cygpICogcGFnZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVhfUEFHRV9CVVRUT05TID0gNTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhhc1ByZXZpb3VzUGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZSgpIC0gMTtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzUGFnZSA+PSAxO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBoYXNOZXh0UGFnZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlKCkgKyAxO1xuICAgICAgICByZXR1cm4gbmV4dFBhZ2UgPD0gdGhpcy50b3RhbFBhZ2VzKCk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwoMSk7XG5cbiAgICBwcm90ZWN0ZWQgYnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgbmF2aWdhdGlvblBhZ2VCdXR0b25zOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbltdID0gW107XG4gICAgICAgIGNvbnN0IG1heFBhZ2VCdXR0b25zID0gdGhpcy5NQVhfUEFHRV9CVVRUT05TO1xuICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuY3VycmVudFBhZ2UoKTtcbiAgICAgICAgY29uc3QgbWlkZGxlID0gTWF0aC5mbG9vcihtYXhQYWdlQnV0dG9ucyAvIDIpO1xuICAgICAgICBjb25zdCBfc3RhcnRQYWdlID0gY3VycmVudFBhZ2UgLSBtaWRkbGU7XG4gICAgICAgIGxldCBzdGFydFBhZ2UgPSBfc3RhcnRQYWdlIDwgMSA/IDEgOiBfc3RhcnRQYWdlO1xuICAgICAgICBjb25zdCBfZW5kUGFnZSA9IHN0YXJ0UGFnZSArIG1heFBhZ2VCdXR0b25zIC0gMTtcbiAgICAgICAgY29uc3QgZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzID0gX2VuZFBhZ2UgPiB0aGlzLnRvdGFsUGFnZXMoKTtcblxuICAgICAgICBpZiAoZW5kUGFnZUlzTW9yZVRoYW5Ub3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCBkaWZmID0gX2VuZFBhZ2UgLSB0aGlzLnRvdGFsUGFnZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhbk1vZGlmeVN0YXJ0UGFnZSA9IHN0YXJ0UGFnZSAtIGRpZmYgPj0gMTtcbiAgICAgICAgICAgIGlmIChjYW5Nb2RpZnlTdGFydFBhZ2UpIHtcbiAgICAgICAgICAgICAgICBzdGFydFBhZ2UgPSBzdGFydFBhZ2UgLSBkaWZmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZFBhZ2UgPSBlbmRQYWdlSXNNb3JlVGhhblRvdGFsUGFnZXMgPyB0aGlzLnRvdGFsUGFnZXMoKSA6IF9lbmRQYWdlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydFBhZ2U7IGkgPD0gZW5kUGFnZTsgaSsrKSB7XG4gICAgICAgICAgICBuYXZpZ2F0aW9uUGFnZUJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgY2xpY2tlZDogKHBhZ2UpID0+IHRoaXMuZ29Ub1BhZ2UocGFnZS5wYWdlSW5kZXggYXMgbnVtYmVyKSxcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IGksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkZJUlNUX1BBR0VfQlVUVE9OLFxuICAgICAgICAgICAgdGhpcy5QUkVWSU9VU19QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIC4uLm5hdmlnYXRpb25QYWdlQnV0dG9ucyxcbiAgICAgICAgICAgIHRoaXMuTkVYVF9QQUdFX0JVVFRPTixcbiAgICAgICAgICAgIHRoaXMuTEFTVF9QQUdFX0JVVFRPTixcbiAgICAgICAgXTtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgRklSU1RfUEFHRV9CVVRUT046IFBhZ2luYXRvckludGVybmFsQnV0dG9uID0ge1xuICAgICAgICBjbGlja2VkOiB0aGlzLmdvRmlyc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1iYWNrd2FyZCcsXG4gICAgICAgIHZhbGlkYXRlOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuaGFzUHJldmlvdXNQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBSRVZJT1VTX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb1ByZXZpb3VzUGFnZS5iaW5kKHRoaXMpLFxuICAgICAgICBpY29uOiAnZmFzIGZhLWNhcmV0LWxlZnQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBMQVNUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb0xhc3RQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtc3RlcC1mb3J3YXJkJyxcbiAgICAgICAgdmFsaWRhdGU6IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0UGFnZSgpO1xuICAgICAgICB9KSxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBORVhUX1BBR0VfQlVUVE9OOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbiA9IHtcbiAgICAgICAgY2xpY2tlZDogdGhpcy5nb05leHRQYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGljb246ICdmYXMgZmEtY2FyZXQtcmlnaHQnLFxuICAgICAgICB2YWxpZGF0ZTogY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmhhc05leHRQYWdlKCk7XG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvdGFsUGFnZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUmVjb3JkcyA9IHRoaXMudG90YWxSZWNvcmRzKCk7XG4gICAgICAgIGNvbnN0IF9wYWdlcyA9IHRvdGFsUmVjb3JkcyAvIHRoaXMucm93cygpO1xuICAgICAgICBjb25zdCBwYWdlcyA9IE1hdGguY2VpbChfcGFnZXMpO1xuICAgICAgICBjb25zdCBpc0V4YWN0UGFnZXMgPSBfcGFnZXMgPT09IHBhZ2VzO1xuICAgICAgICByZXR1cm4gaXNFeGFjdFBhZ2VzID8gcGFnZXMgOiBwYWdlcyArIDE7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VFZmZlY3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByb3dzUGVyUGFnZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2UoKSAhPT0gMSkge1xuICAgICAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRCdXR0b24oYnV0dG9uOiBQYWdpbmF0b3JJbnRlcm5hbEJ1dHRvbik6IHZvaWQge1xuICAgICAgICBidXR0b24uY2xpY2tlZChidXR0b24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ29GaXJzdFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UoMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb05leHRQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTmV4dFBhZ2UoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UudXBkYXRlKCh2YWx1ZSkgPT4gdmFsdWUgKyAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvUHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnVwZGF0ZSgodmFsdWUpID0+IHZhbHVlIC0gMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnb0xhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMudG90YWxQYWdlcygpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdvVG9QYWdlKHBhZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHBhZ2VJbmRleCk7XG4gICAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGgtOCBkaXZpZGUteCBkaXZpZGUtZ3JheXNjYWxlLTMwIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItZ3JheXNjYWxlLTMwXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGZvciAoYnRuIG9mIGJ1dHRvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQGxldCBhY3RpdmUgPSBidG4ucGFnZUluZGV4ID09PSBjdXJyZW50UGFnZSgpO1xuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmJnLWNyaXRpY2FsaXR5LWJsdWVdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtZ3JheXNjYWxlLTBdPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnRleHQtY3JpdGljYWxpdHktYmx1ZV09XCIhYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKHNJbnRlcmFjdGl2ZUNvbnRlbnQpPVwiYWN0aXZhdGVkQnV0dG9uKGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLmRpc2FibGVkIHx8IChidG4udmFsaWRhdGUgJiYgYnRuLnZhbGlkYXRlKCkpIHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cCBoLTggdy04IGhvdmVyOmJnLWdyYXlzY2FsZS0yMCBob3Zlcjp0ZXh0LWdyYXlzY2FsZS0xMDAgZGlzYWJsZWQ6aG92ZXI6YmctW3RyYW5zcGFyZW50XSBkaXNhYmxlZDpob3Zlcjp0ZXh0LWNyaXRpY2FsaXR5LWJsdWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWRpc2FibGVkOm9wYWNpdHktNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBsZXQgcGFnZSA9IGJ0bi5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGV0IGljb24gPSBidG4uaWNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHMtc2VsZWN0XG4gICAgICAgICAgICBbb3B0aW9uc109XCJyb3dzUGVyUGFnZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd3NcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwicm93c1BlclBhZ2VDaGFuZ2UoKVwiXG4gICAgICAgID48L3Mtc2VsZWN0PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIEBsZXQgdGV4dCA9XG4gICAgICAgICAgICB0b3RhbFJlY29yZHMoKSA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy50b3RhbF9yZWNvcmQnXG4gICAgICAgICAgICAgICAgOiAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnO1xuICAgICAgICA8cCBjbGFzcz1cInRleHQtWzE0cHhdIHRleHQtWyMyMTI1MzNdXCI+XG4gICAgICAgICAgICB7eyB0ZXh0IHwgdHJhbnNsYXRlOiB7IGNvdW50OiB0b3RhbFJlY29yZHMoKSB9IH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc2VjdGlvbj5cbjwvZGl2PlxuIl19