@seniorsistemas/data-seniorx-core 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/core/constants/autocomplete.const.d.ts +4 -0
  2. package/core/constants/context-selector.const.d.ts +1 -0
  3. package/core/constants/gantt.const.d.ts +7 -0
  4. package/core/constants/hyperlink.const.d.ts +1 -0
  5. package/core/constants/inline-edit.const.d.ts +4 -0
  6. package/core/constants/kanban.const.d.ts +2 -0
  7. package/core/constants/pin-code-field.const.d.ts +5 -0
  8. package/core/constants/rating-scale.const.d.ts +1 -0
  9. package/core/constants/spotlight.const.d.ts +8 -0
  10. package/core/constants/star-rating.const.d.ts +4 -0
  11. package/core/constants/stepper.const.d.ts +1 -0
  12. package/core/constants/tiered-menu.const.d.ts +3 -0
  13. package/core/types/autocomplete.type.d.ts +9 -0
  14. package/core/types/chat.type.d.ts +12 -0
  15. package/core/types/checkbox-list.type.d.ts +12 -0
  16. package/core/types/gantt.type.d.ts +22 -0
  17. package/core/types/grid-menu.type.d.ts +13 -0
  18. package/core/types/hyperlink.type.d.ts +1 -0
  19. package/core/types/image-cropper.type.d.ts +20 -0
  20. package/core/types/inline-edit.type.d.ts +26 -0
  21. package/core/types/kanban.type.d.ts +36 -0
  22. package/core/types/panel.type.d.ts +16 -0
  23. package/core/types/profile-picture-picker.type.d.ts +9 -0
  24. package/core/types/rating-scale.type.d.ts +5 -0
  25. package/core/types/select-button.type.d.ts +1 -0
  26. package/core/types/spotlight.type.d.ts +34 -0
  27. package/core/types/star-rating.type.d.ts +1 -0
  28. package/core/types/stepper.type.d.ts +20 -0
  29. package/core/types/table-column.type.d.ts +3 -1
  30. package/core/types/table-options.type.d.ts +8 -2
  31. package/core/types/table.type.d.ts +1 -1
  32. package/core/types/tiered-menu.type.d.ts +16 -0
  33. package/core/types/tree.type.d.ts +25 -0
  34. package/core/types/workspace-switch.type.d.ts +6 -0
  35. package/core/utils/body-scroll.util.d.ts +2 -0
  36. package/core/utils/roving-focus.util.d.ts +2 -0
  37. package/core/utils/selection.util.d.ts +3 -0
  38. package/core/utils/tree.util.d.ts +4 -0
  39. package/esm2022/core/constants/autocomplete.const.mjs +5 -0
  40. package/esm2022/core/constants/context-selector.const.mjs +2 -0
  41. package/esm2022/core/constants/gantt.const.mjs +7 -0
  42. package/esm2022/core/constants/hyperlink.const.mjs +2 -1
  43. package/esm2022/core/constants/inline-edit.const.mjs +5 -0
  44. package/esm2022/core/constants/kanban.const.mjs +3 -0
  45. package/esm2022/core/constants/pin-code-field.const.mjs +6 -0
  46. package/esm2022/core/constants/rating-scale.const.mjs +2 -0
  47. package/esm2022/core/constants/spotlight.const.mjs +9 -0
  48. package/esm2022/core/constants/star-rating.const.mjs +5 -0
  49. package/esm2022/core/constants/stepper.const.mjs +2 -0
  50. package/esm2022/core/constants/table.const.mjs +2 -2
  51. package/esm2022/core/constants/tiered-menu.const.mjs +4 -0
  52. package/esm2022/core/types/autocomplete.type.mjs +2 -0
  53. package/esm2022/core/types/chat.type.mjs +2 -0
  54. package/esm2022/core/types/checkbox-list.type.mjs +2 -0
  55. package/esm2022/core/types/gantt.type.mjs +2 -0
  56. package/esm2022/core/types/grid-menu.type.mjs +2 -0
  57. package/esm2022/core/types/hyperlink.type.mjs +1 -1
  58. package/esm2022/core/types/image-cropper.type.mjs +2 -0
  59. package/esm2022/core/types/inline-edit.type.mjs +2 -0
  60. package/esm2022/core/types/kanban.type.mjs +2 -0
  61. package/esm2022/core/types/panel.type.mjs +9 -0
  62. package/esm2022/core/types/profile-picture-picker.type.mjs +2 -0
  63. package/esm2022/core/types/rating-scale.type.mjs +2 -0
  64. package/esm2022/core/types/select-button.type.mjs +1 -1
  65. package/esm2022/core/types/spotlight.type.mjs +2 -0
  66. package/esm2022/core/types/star-rating.type.mjs +2 -0
  67. package/esm2022/core/types/stepper.type.mjs +7 -0
  68. package/esm2022/core/types/table-column.type.mjs +1 -1
  69. package/esm2022/core/types/table-options.type.mjs +1 -1
  70. package/esm2022/core/types/table.type.mjs +1 -1
  71. package/esm2022/core/types/tiered-menu.type.mjs +2 -0
  72. package/esm2022/core/types/tree.type.mjs +2 -0
  73. package/esm2022/core/types/workspace-switch.type.mjs +2 -0
  74. package/esm2022/core/utils/body-scroll.util.mjs +19 -0
  75. package/esm2022/core/utils/combobox.util.mjs +3 -2
  76. package/esm2022/core/utils/roving-focus.util.mjs +20 -0
  77. package/esm2022/core/utils/selection.util.mjs +13 -0
  78. package/esm2022/core/utils/string.util.mjs +8 -3
  79. package/esm2022/core/utils/tree.util.mjs +23 -0
  80. package/esm2022/features/accordion/accordion.component.mjs +2 -2
  81. package/esm2022/features/accordion/{accordion-item.component.mjs → components/accordion-item/accordion-item.component.mjs} +7 -7
  82. package/esm2022/features/autocomplete/autocomplete.component.mjs +501 -0
  83. package/esm2022/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +30 -0
  84. package/esm2022/features/breadcrumb/breadcrumb.component.mjs +2 -2
  85. package/esm2022/features/card-list/card/card.component.mjs +63 -99
  86. package/esm2022/features/chat/chat.component.mjs +126 -0
  87. package/esm2022/features/checkbox-list/checkbox-list.component.mjs +125 -0
  88. package/esm2022/features/combobox/combobox.component.mjs +20 -8
  89. package/esm2022/features/context-selector/context-selector.component.mjs +198 -0
  90. package/esm2022/features/filters/filters.component.mjs +1 -1
  91. package/esm2022/features/gantt/components/gantt-side-table/gantt-side-table.component.mjs +17 -0
  92. package/esm2022/features/gantt/gantt-date.utils.mjs +97 -0
  93. package/esm2022/features/gantt/gantt.component.mjs +89 -0
  94. package/esm2022/features/gantt/gantt.engine.mjs +662 -0
  95. package/esm2022/features/grid-menu/grid-menu.component.mjs +104 -0
  96. package/esm2022/features/hyperlink/hyperlink.component.mjs +7 -4
  97. package/esm2022/features/icon-picker/icon-picker.component.mjs +3 -3
  98. package/esm2022/features/image-cropper/image-cropper.component.mjs +218 -0
  99. package/esm2022/features/image-cropper/services/image-cropper.service.mjs +50 -0
  100. package/esm2022/features/infinite-scroll/infinite-scroll.directive.mjs +89 -0
  101. package/esm2022/features/info-sign/info-sign.component.mjs +3 -3
  102. package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +38 -0
  103. package/esm2022/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.mjs +29 -0
  104. package/esm2022/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.mjs +29 -0
  105. package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +131 -0
  106. package/esm2022/features/inline-edit/fields/inline-edit-field.mjs +17 -0
  107. package/esm2022/features/inline-edit/fields/inline-edit-number-field.mjs +15 -0
  108. package/esm2022/features/inline-edit/fields/inline-edit-text-field.mjs +11 -0
  109. package/esm2022/features/inline-edit/fields/inline-edit-textarea-field.mjs +15 -0
  110. package/esm2022/features/inline-edit/inline-edit.component.mjs +27 -0
  111. package/esm2022/features/interactive-content/interactive-content.directive.mjs +140 -0
  112. package/esm2022/features/kanban/components/kanban-column/kanban-column.component.mjs +88 -0
  113. package/esm2022/features/kanban/components/kanban-item/kanban-item.component.mjs +72 -0
  114. package/esm2022/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.mjs +19 -0
  115. package/esm2022/features/kanban/directives/kanban-template.directive.mjs +22 -0
  116. package/esm2022/features/kanban/kanban.component.mjs +198 -0
  117. package/esm2022/features/kanban/services/kanban-event.service.mjs +27 -0
  118. package/esm2022/features/loading-state/loading-state.component.mjs +3 -62
  119. package/esm2022/features/mouse-events/directives/double-click.directive.mjs +34 -0
  120. package/esm2022/features/mouse-events/directives/long-press.directive.mjs +61 -0
  121. package/esm2022/features/paginator/paginator.component.mjs +8 -3
  122. package/esm2022/features/panel/panel.component.mjs +43 -11
  123. package/esm2022/features/pin-code-field/pin-code-field.component.mjs +234 -0
  124. package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +330 -0
  125. package/esm2022/features/rating-scale/rating-scale.component.mjs +86 -0
  126. package/esm2022/features/row-card-list/row-card/row-card.component.mjs +3 -3
  127. package/esm2022/features/scaffold/scaffold.component.mjs +4 -6
  128. package/esm2022/features/select-button/select-button.component.mjs +7 -4
  129. package/esm2022/features/speech-recognition/services/speech-recognition.service.mjs +148 -0
  130. package/esm2022/features/speech-recognition/services/text-to-speech.service.mjs +88 -0
  131. package/esm2022/features/speech-recognition/speech-recognition.component.mjs +243 -0
  132. package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +521 -0
  133. package/esm2022/features/spotlight/directives/spotlight-step.directive.mjs +38 -0
  134. package/esm2022/features/spotlight/services/spotlight-tour.service.mjs +179 -0
  135. package/esm2022/features/spotlight/spotlight.component.mjs +160 -0
  136. package/esm2022/features/star-rating/star-rating.component.mjs +95 -0
  137. package/esm2022/features/stepper/stepper.component.mjs +86 -0
  138. package/esm2022/features/switch/switch.component.mjs +12 -8
  139. package/esm2022/features/tab/{tab-item.component.mjs → components/tab-item/tab-item.component.mjs} +1 -1
  140. package/esm2022/features/tab/tab.component.mjs +4 -4
  141. package/esm2022/features/table/components/table-cell-content.component.mjs +14 -5
  142. package/esm2022/features/table/table.component.mjs +220 -29
  143. package/esm2022/features/table/utils/table-data.util.mjs +71 -8
  144. package/esm2022/features/table/utils/table-layout.util.mjs +21 -1
  145. package/esm2022/features/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +367 -0
  146. package/esm2022/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.mjs +11 -0
  147. package/esm2022/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +97 -0
  148. package/esm2022/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +181 -0
  149. package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +246 -0
  150. package/esm2022/features/tiered-menu/services/tiered-menu.event.service.mjs +16 -0
  151. package/esm2022/features/tiered-menu/services/tiered-menu.global.service.mjs +12 -0
  152. package/esm2022/features/tiered-menu/services/tiered-menu.service.mjs +49 -0
  153. package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +169 -0
  154. package/esm2022/features/tree/tree.component.mjs +211 -0
  155. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.mjs +41 -0
  156. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.mjs +38 -0
  157. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.mjs +29 -0
  158. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.mjs +29 -0
  159. package/esm2022/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.mjs +35 -0
  160. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-flow.service.mjs +106 -0
  161. package/esm2022/features/visual-sql-editor/services/visual-sql-editor-state.service.mjs +230 -0
  162. package/esm2022/features/visual-sql-editor/types/visual-sql-editor.types.mjs +2 -0
  163. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.mjs +72 -0
  164. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-sql.util.mjs +281 -0
  165. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor-text.util.mjs +37 -0
  166. package/esm2022/features/visual-sql-editor/utils/visual-sql-editor.constants.mjs +89 -0
  167. package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +172 -630
  168. package/esm2022/locales/en.json +351 -3
  169. package/esm2022/locales/es-CO.json +351 -3
  170. package/esm2022/locales/pt.json +351 -3
  171. package/esm2022/providers/features.provider.mjs +40 -4
  172. package/esm2022/public-api.mjs +56 -3
  173. package/features/accordion/accordion.component.d.ts +1 -1
  174. package/features/accordion/{accordion-item.component.d.ts → components/accordion-item/accordion-item.component.d.ts} +1 -1
  175. package/features/autocomplete/autocomplete.component.d.ts +102 -0
  176. package/features/autocomplete/components/autocomplete-chip/autocomplete-chip.component.d.ts +11 -0
  177. package/features/card-list/card/card.component.d.ts +14 -34
  178. package/features/chat/chat.component.d.ts +31 -0
  179. package/features/checkbox-list/checkbox-list.component.d.ts +26 -0
  180. package/features/combobox/combobox.component.d.ts +2 -1
  181. package/features/context-selector/context-selector.component.d.ts +37 -0
  182. package/features/gantt/components/gantt-side-table/gantt-side-table.component.d.ts +8 -0
  183. package/features/gantt/gantt-date.utils.d.ts +36 -0
  184. package/features/gantt/gantt.component.d.ts +24 -0
  185. package/features/gantt/gantt.engine.d.ts +52 -0
  186. package/features/grid-menu/grid-menu.component.d.ts +29 -0
  187. package/features/hyperlink/hyperlink.component.d.ts +2 -1
  188. package/features/image-cropper/image-cropper.component.d.ts +43 -0
  189. package/features/image-cropper/services/image-cropper.service.d.ts +13 -0
  190. package/features/infinite-scroll/infinite-scroll.directive.d.ts +25 -0
  191. package/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +13 -0
  192. package/features/inline-edit/components/fields/inline-edit-text/inline-edit-text.component.d.ts +13 -0
  193. package/features/inline-edit/components/fields/inline-edit-textarea/inline-edit-textarea.component.d.ts +13 -0
  194. package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +37 -0
  195. package/features/inline-edit/fields/inline-edit-field.d.ts +12 -0
  196. package/features/inline-edit/fields/inline-edit-number-field.d.ts +9 -0
  197. package/features/inline-edit/fields/inline-edit-text-field.d.ts +7 -0
  198. package/features/inline-edit/fields/inline-edit-textarea-field.d.ts +9 -0
  199. package/features/inline-edit/inline-edit.component.d.ts +13 -0
  200. package/features/interactive-content/interactive-content.directive.d.ts +31 -0
  201. package/features/kanban/components/kanban-column/kanban-column.component.d.ts +22 -0
  202. package/features/kanban/components/kanban-item/kanban-item.component.d.ts +23 -0
  203. package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +8 -0
  204. package/features/kanban/directives/kanban-template.directive.d.ts +10 -0
  205. package/features/kanban/kanban.component.d.ts +32 -0
  206. package/features/kanban/services/kanban-event.service.d.ts +15 -0
  207. package/features/loading-state/loading-state.component.d.ts +0 -2
  208. package/features/mouse-events/directives/double-click.directive.d.ts +11 -0
  209. package/features/mouse-events/directives/long-press.directive.d.ts +14 -0
  210. package/features/panel/panel.component.d.ts +12 -3
  211. package/features/pin-code-field/pin-code-field.component.d.ts +44 -0
  212. package/features/profile-picture-picker/profile-picture-picker.component.d.ts +77 -0
  213. package/features/rating-scale/rating-scale.component.d.ts +24 -0
  214. package/features/select-button/select-button.component.d.ts +2 -1
  215. package/features/speech-recognition/services/speech-recognition.service.d.ts +29 -0
  216. package/features/speech-recognition/services/text-to-speech.service.d.ts +24 -0
  217. package/features/speech-recognition/speech-recognition.component.d.ts +50 -0
  218. package/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.d.ts +59 -0
  219. package/features/spotlight/directives/spotlight-step.directive.d.ts +13 -0
  220. package/features/spotlight/services/spotlight-tour.service.d.ts +46 -0
  221. package/features/spotlight/spotlight.component.d.ts +59 -0
  222. package/features/star-rating/star-rating.component.d.ts +26 -0
  223. package/features/stepper/stepper.component.d.ts +23 -0
  224. package/features/switch/switch.component.d.ts +2 -1
  225. package/features/tab/tab.component.d.ts +1 -1
  226. package/features/table/components/table-cell-content.component.d.ts +4 -3
  227. package/features/table/table.component.d.ts +40 -5
  228. package/features/table/utils/table-data.util.d.ts +1 -0
  229. package/features/table/utils/table-layout.util.d.ts +1 -0
  230. package/features/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +49 -0
  231. package/features/tiered-menu/components/tiered-menu-divider/tiered-menu-divider.component.d.ts +5 -0
  232. package/features/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +19 -0
  233. package/features/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +26 -0
  234. package/features/tiered-menu/directives/tiered-menu.directive.d.ts +44 -0
  235. package/features/tiered-menu/services/tiered-menu.event.service.d.ts +13 -0
  236. package/features/tiered-menu/services/tiered-menu.global.service.d.ts +7 -0
  237. package/features/tiered-menu/services/tiered-menu.service.d.ts +14 -0
  238. package/features/tree/components/tree-node-item/tree-node-item.component.d.ts +37 -0
  239. package/features/tree/tree.component.d.ts +37 -0
  240. package/features/visual-sql-editor/components/visual-sql-editor-field-modal/visual-sql-editor-field-modal.component.d.ts +18 -0
  241. package/features/visual-sql-editor/components/visual-sql-editor-filter-modal/visual-sql-editor-filter-modal.component.d.ts +17 -0
  242. package/features/visual-sql-editor/components/visual-sql-editor-join-modal/visual-sql-editor-join-modal.component.d.ts +13 -0
  243. package/features/visual-sql-editor/components/visual-sql-editor-sort-modal/visual-sql-editor-sort-modal.component.d.ts +13 -0
  244. package/features/visual-sql-editor/components/visual-sql-editor-source-modal/visual-sql-editor-source-modal.component.d.ts +15 -0
  245. package/features/visual-sql-editor/services/visual-sql-editor-flow.service.d.ts +26 -0
  246. package/features/visual-sql-editor/services/visual-sql-editor-state.service.d.ts +72 -0
  247. package/features/visual-sql-editor/types/visual-sql-editor.types.d.ts +182 -0
  248. package/features/visual-sql-editor/utils/visual-sql-editor-sanitize.util.d.ts +14 -0
  249. package/features/visual-sql-editor/utils/visual-sql-editor-sql.util.d.ts +81 -0
  250. package/features/visual-sql-editor/utils/visual-sql-editor-text.util.d.ts +15 -0
  251. package/features/visual-sql-editor/utils/visual-sql-editor.constants.d.ts +36 -0
  252. package/features/visual-sql-editor/visual-sql-editor.component.d.ts +37 -199
  253. package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14883 -6353
  254. package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
  255. package/package.json +8 -8
  256. package/public-api.d.ts +72 -2
  257. package/src/locales/en.json +353 -15
  258. package/src/locales/es-CO.json +352 -14
  259. package/src/locales/pt.json +352 -14
  260. package/styles/sdc-global-variables.scss +1 -1
  261. package/styles.css +1 -1
  262. /package/features/tab/{tab-item.component.d.ts → components/tab-item/tab-item.component.d.ts} +0 -0
@@ -360,7 +360,7 @@ export class IconPickerComponent {
360
360
  useExisting: forwardRef(() => IconPickerComponent),
361
361
  multi: true
362
362
  }
363
- ], viewQueries: [{ propertyName: "searchboxEl", first: true, predicate: ["searchboxEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled", "allowHtml"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
363
+ ], viewQueries: [{ propertyName: "searchboxEl", first: true, predicate: ["searchboxEl"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button\n type=\"button\"\n class=\"sdc-icon-picker__info-icon\"\n [attr.aria-label]=\"resolvedTooltip\"\n >\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i\n [class]=\"'fas ' + pendingValue\"\n class=\"sdc-icon-picker__preview-icon\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"icon.label + ' - ' + icon.name\"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: TooltipComponent, selector: "sdc-tooltip", inputs: ["pTooltip", "tooltipPosition", "tooltipEvent", "fitContent", "tooltipDisabled", "allowHtml"] }, { kind: "component", type: ButtonComponent, selector: "sdc-button", inputs: ["id", "label", "ariaLabel", "disabled", "width", "priority", "size", "type", "icon", "rightIcon", "auxiliary", "caret", "tooltip", "animation", "slide", "styleClass", "badge", "menuOptions", "menuContext", "model"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
364
364
  }
365
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IconPickerComponent, decorators: [{
366
366
  type: Component,
@@ -378,7 +378,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
378
378
  useExisting: forwardRef(() => IconPickerComponent),
379
379
  multi: true
380
380
  }
381
- ], template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button type=\"button\" class=\"sdc-icon-picker__info-icon\" [attr.aria-label]=\"resolvedTooltip\">\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i [class]=\"'fas ' + pendingValue\" class=\"sdc-icon-picker__preview-icon\" aria-hidden=\"true\"></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"\n icon.label + ' - ' + icon.name\n \"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"] }]
381
+ ], template: "<div\n class=\"sdc-icon-picker\"\n [class.sdc-icon-picker--disabled]=\"disabled\"\n [class.sdc-icon-picker--invalid]=\"invalid\"\n>\n @if (resolvedLabel) {\n <div class=\"sdc-icon-picker__label-row\">\n <label class=\"sdc-icon-picker__label\" [for]=\"triggerId\" [attr.aria-required]=\"required || null\">\n {{ resolvedLabel }}\n @if (required) {\n <span class=\"sdc-icon-picker__required\" aria-hidden=\"true\">*</span>\n }\n </label>\n\n @if (resolvedTooltip) {\n <sdc-tooltip [pTooltip]=\"resolvedTooltip\" [tooltipEvent]=\"'both'\">\n <button\n type=\"button\"\n class=\"sdc-icon-picker__info-icon\"\n [attr.aria-label]=\"resolvedTooltip\"\n >\n <i class=\"fas fa-info-circle\" aria-hidden=\"true\"></i>\n </button>\n </sdc-tooltip>\n }\n </div>\n }\n\n <button\n [id]=\"triggerId\"\n type=\"button\"\n class=\"sdc-icon-picker__trigger\"\n [attr.disabled]=\"disabled ? true : null\"\n [attr.aria-required]=\"required || null\"\n [attr.aria-invalid]=\"invalid || null\"\n (click)=\"openModal()\"\n >\n <span class=\"sdc-icon-picker__trigger-swatch\">\n @if (value) {\n <i [class]=\"'fas ' + value\" aria-hidden=\"true\"></i>\n } @else {\n <i class=\"fas fa-chevron-down sdc-icon-picker__trigger-swatch-placeholder\" aria-hidden=\"true\"></i>\n }\n </span>\n\n <span class=\"sdc-icon-picker__trigger-sep\" aria-hidden=\"true\"></span>\n\n <span class=\"sdc-icon-picker__trigger-text\">\n @if (value && selectedIconLabel) {\n {{ selectedIconLabel }}\n } @else {\n <span class=\"sdc-icon-picker__placeholder\">{{ resolvedPlaceholder }}</span>\n }\n </span>\n </button>\n\n @if (invalid && resolvedErrorMessage) {\n <small class=\"sdc-icon-picker__error\">{{ resolvedErrorMessage }}</small>\n }\n</div>\n\n<sdc-modal\n [header]=\"resolvedModalTitle\"\n [visible]=\"modalOpen\"\n [width]=\"660\"\n [closable]=\"true\"\n styleClass=\"sdc-modal--icon-picker\"\n [appendToBody]=\"true\"\n (visibleChange)=\"onModalVisibleChange($event)\"\n>\n <div class=\"sdc-icon-picker__modal-body\">\n <div class=\"sdc-icon-picker__search-row\">\n <sdc-searchbox\n #searchboxEl\n [value]=\"searchTerm\"\n [placeholder]=\"resolvedSearchPlaceholder\"\n [debounceTimeMs]=\"250\"\n (debouncedValueChange)=\"onSearch($event)\"\n (onClear)=\"onSearch('')\"\n ></sdc-searchbox>\n </div>\n\n @if (pendingValue) {\n <div class=\"sdc-icon-picker__preview-bar\">\n <i\n [class]=\"'fas ' + pendingValue\"\n class=\"sdc-icon-picker__preview-icon\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"sdc-icon-picker__preview-info\">\n <span class=\"sdc-icon-picker__preview-label\">{{ pendingIconLabel }}</span>\n <span class=\"sdc-icon-picker__preview-class\">{{ pendingValue }}</span>\n </div>\n </div>\n }\n\n <div class=\"sdc-icon-picker__counter\">\n @if (filteredIcons.length > 0) {\n <span>{{ iconsFoundCount }} {{ iconsFoundText }}</span>\n } @else if (!isLoading) {\n <span>{{ noIconsFoundText }}</span>\n }\n </div>\n\n @if (isLoading) {\n <div class=\"sdc-icon-picker__loading\">\n <i class=\"fas fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n </div>\n } @else {\n <!-- NOSONAR: this picker needs a custom ARIA listbox/grid experience that a native select cannot provide -->\n <div\n #iconGrid\n class=\"sdc-icon-picker__grid\"\n [attr.role]=\"'listbox'\"\n [attr.aria-label]=\"resolvedModalTitle\"\n (scroll)=\"onGridScroll($event)\"\n >\n @for (icon of visibleIcons; track icon.name) {\n <!-- NOSONAR -->\n <!-- the custom icon grid keeps option semantics on the focusable card for keyboard and SR support -->\n <button\n type=\"button\"\n class=\"sdc-icon-picker__card\"\n [class.sdc-icon-picker__card--selected]=\"isIconSelected(icon)\"\n [attr.role]=\"'option'\"\n [attr.aria-selected]=\"isIconSelected(icon) ? 'true' : 'false'\"\n [attr.aria-label]=\"icon.label + ' - ' + icon.name\"\n (click)=\"selectIcon(icon)\"\n >\n <i [class]=\"'fas ' + icon.name\" class=\"sdc-icon-picker__card-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-icon-picker__card-name\">{{ icon.label }}</span>\n </button>\n }\n </div>\n }\n </div>\n\n <div footer class=\"sdc-icon-picker__footer\">\n <sdc-button\n [label]=\"cancelText\"\n priority=\"secondary\"\n (clicked)=\"cancelSelection()\"\n ></sdc-button>\n <sdc-button\n [label]=\"confirmText\"\n priority=\"primary\"\n [disabled]=\"pendingValue === null && value === null\"\n (clicked)=\"confirmSelection()\"\n ></sdc-button>\n </div>\n</sdc-modal>\n", styles: ["::ng-deep .sdc-modal--icon-picker .sdc-modal__content{overflow:hidden;display:flex;flex-direction:column;min-height:0}.sdc-icon-picker{display:flex;flex-direction:column}.sdc-icon-picker__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap, .35rem);margin-bottom:var(--sdc-form-label-row-mb, .15rem)}.sdc-icon-picker__label{display:inline-flex;align-items:center;margin-bottom:0;line-height:var(--sdc-form-label-lh, 1);padding-top:var(--sdc-form-label-py, 7px);padding-bottom:var(--sdc-form-label-py, 7px);min-width:0}.sdc-icon-picker__required{margin-left:var(--sdc-form-required-ml, .25rem);color:var(--sdc-form-required-color, var(--sdc-error-color, #d98888));font-weight:var(--sdc-form-required-weight, 400)}.sdc-icon-picker__info-icon{background:none;border:none;padding:0;cursor:pointer;color:var(--sdc-form-tooltip-color, #6c757d);display:flex;align-items:center;font-size:.9rem}.sdc-icon-picker__trigger{display:flex;align-items:stretch;height:var(--sdc-formfield-default-height, 34px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);cursor:pointer;width:100%;text-align:left;transition:border-color .15s ease,box-shadow .15s ease;padding:0;overflow:hidden}.sdc-icon-picker__trigger:focus-visible{outline:none;border-color:var(--sdc-formfield-focus-color, #428bca);box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-icon-picker__trigger:disabled{cursor:not-allowed;opacity:.6;background:var(--sdc-formfield-disabled-bg, transparent)}.sdc-icon-picker__trigger:hover:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--invalid .sdc-icon-picker__trigger:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-icon-picker__trigger-swatch{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:2.7rem;background:var(--sdc-color-picker-trigger-bg, #f8fafc);color:var(--sdc-color-picker-trigger-color, var(--sdc-text-default, #111827));font-size:var(--sdc-icon-picker-icon-size, 1.1rem);transition:background .15s ease}.sdc-icon-picker__trigger:hover:not(:disabled) .sdc-icon-picker__trigger-swatch{background:var(--sdc-color-picker-trigger-hover-bg, #eef2f7)}.sdc-icon-picker__trigger-swatch-placeholder{font-size:.75rem;opacity:.45}.sdc-icon-picker__trigger-sep{width:1px;background:var(--sdc-formfield-default-border, #cccccc);flex-shrink:0;align-self:stretch}.sdc-icon-picker__trigger-text{display:flex;align-items:center;flex:1;min-width:0;padding:0 var(--sdc-form-input-padding-x, .75rem);font:inherit;color:var(--p-text-color, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__placeholder{color:var(--sdc-formfield-placeholder-color, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__error{font-size:.78rem;color:var(--sdc-formfield-invalid-border, #d98888);margin-top:2px}.sdc-icon-picker--invalid .sdc-icon-picker__trigger-sep{background:var(--sdc-formfield-invalid-border, #d98888)}.sdc-icon-picker--disabled .sdc-icon-picker__label{opacity:.6}.sdc-icon-picker__modal-body{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;height:var(--sdc-icon-picker-modal-body-height, 520px);max-height:calc(100vh - 190px);min-height:0;overflow:hidden}.sdc-icon-picker__search-row{flex-shrink:0}.sdc-icon-picker__search-row sdc-searchbox{display:block;width:100%}.sdc-icon-picker__preview-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--sdc-picklist-selected-bg, #eeebf2);border:1px solid var(--sdc-picklist-selected-border, #dedce5);border-radius:var(--sdc-icon-picker-card-radius, 6px);flex-shrink:0}.sdc-icon-picker__preview-icon{font-size:1.75rem;color:var(--sdc-tab-primary, #428bca);flex-shrink:0;width:2rem;text-align:center}.sdc-icon-picker__preview-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sdc-icon-picker__preview-label{font-size:.875rem;font-weight:600;color:var(--sdc-text-default, #111827);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__preview-class{font-size:.75rem;color:var(--sdc-text-muted, #6b7280);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-icon-picker__counter{font-size:.8rem;color:var(--sdc-text-muted, #6b7280);min-height:1.2em;flex-shrink:0;padding-bottom:4px}.sdc-icon-picker__loading{display:flex;justify-content:center;align-items:center;padding:32px;color:var(--sdc-tab-primary, #428bca);font-size:1.5rem}.sdc-icon-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sdc-icon-picker-card-size, 90px),1fr));gap:var(--sdc-icon-picker-card-gap, 8px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px;align-content:start}.sdc-icon-picker__card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:8px 6px;height:var(--sdc-icon-picker-card-height, 80px);background:var(--sdc-formfield-default-bg, #ffffff);border:1px solid var(--sdc-border-strong, #e2e8f0);border-radius:var(--sdc-icon-picker-card-radius, 6px);cursor:pointer;overflow:hidden;transition:background .12s ease,border-color .12s ease;width:100%}.sdc-icon-picker__card:focus-visible{outline:var(--sdc-focus-outline, 2px solid #428bca);outline-offset:1px}.sdc-icon-picker__card--selected{background:var(--sdc-tab-primary, #428bca);border-color:var(--sdc-tab-primary, #428bca);color:#fff}.sdc-icon-picker__card:hover:not(.sdc-icon-picker__card--selected){background:var(--sdc-picklist-hover-bg, #f7f7f7);border-color:var(--sdc-tab-primary, #428bca)}.sdc-icon-picker__card-icon{font-size:var(--sdc-icon-picker-icon-size, 1.25rem);flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem}.sdc-icon-picker__card-name{font-size:.65rem;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;max-width:100%}.sdc-icon-picker__footer{display:flex;justify-content:flex-end;gap:8px}\n"] }]
382
382
  }], ctorParameters: () => [], propDecorators: { searchboxEl: [{
383
383
  type: ViewChild,
384
384
  args: ['searchboxEl', { read: ElementRef }]
@@ -401,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
401
401
  }], valueChange: [{
402
402
  type: Output
403
403
  }] } });
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9pY29uLXBpY2tlci9pY29uLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ljb24tcGlja2VyL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUMvQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxP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QVJuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpSEFVaUMsVUFBVSw2QkNoSTlDLDA2SkFpSkEscXJNRDdDSSxZQUFZLDhCQUNaLFdBQVcsOEJBQ1gsZUFBZSwrQkFDZixjQUFjLHlRQUNkLGtCQUFrQixvV0FDbEIsZ0JBQWdCLCtKQUNoQixlQUFlOzs0RkFjTixtQkFBbUI7a0JBeEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBVWdFLFdBQVc7c0JBQTNFLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFckMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU0RDX0lDT05fUElDS0VSX0JMT0NLRURfTkFNRVMsXG4gIFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX1RFUk1TLFxuICBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFLFxuICBTRENfSUNPTl9QSUNLRVJfUFJJT1JJVFlfTkFNRVNcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvaWNvbi1waWNrZXIuY29uc3QnO1xuaW1wb3J0IHsgSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2ljb24tc2VsZWN0b3ItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgSWNvblNlbGVjdG9ySXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvaWNvbi1zZWxlY3Rvci50eXBlJztcbmltcG9ydCB0eXBlIHsgSWNvblBpY2tlckl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ljb24tcGlja2VyLnR5cGUnO1xuaW1wb3J0IHsgcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCwgcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2kxOG4udXRpbCc7XG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IGh1bWFuaXplVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IGVuVHJhbnNsYXRpb25zIGZyb20gJy4uLy4uL2xvY2FsZXMvZW4uanNvbic7XG5pbXBvcnQgZXNUcmFuc2xhdGlvbnMgZnJvbSAnLi4vLi4vbG9jYWxlcy9lcy1DTy5qc29uJztcbmltcG9ydCBwdFRyYW5zbGF0aW9ucyBmcm9tICcuLi8uLi9sb2NhbGVzL3B0Lmpzb24nO1xuXG5jb25zdCBTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCA9IC9bXFx1MDMwMC1cXHUwMzZmXS9nO1xuY29uc3QgU0VBUkNIX0RFQk9VTkNFX01TID0gMjUwO1xuY29uc3QgU0NST0xMX1RIUkVTSE9MRF9QWCA9IDEyMDtcbmNvbnN0IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFID0gJyc7XG5jb25zdCBJQ09OX1BJQ0tFUl9LRVlfUFJFRklYID0gJ3BsYXRmb3JtLmRhdGFjb3JlLmljb25QaWNrZXIuJztcbmNvbnN0IElDT05fVFJBTlNMQVRJT05fS0VZX1BSRUZJWCA9ICdwbGF0Zm9ybS5kYXRhY29yZS5pY29ucy4nO1xuY29uc3QgRk9OVF9BV0VTT01FX0NMQVNTX1JFR0VYID0gL1xcYmZhW3NyYmxkXT9cXGJ8XFxiZmFcXGIvZztcbmNvbnN0IEZPTlRfQVdFU09NRV9QUkVGSVhfUkVHRVggPSAvXFxiZmEtL2c7XG5jb25zdCBJQ09OX1BJQ0tFUl9UUkFOU0xBVElPTlMgPSB7XG4gIGVuOiBlblRyYW5zbGF0aW9ucyxcbiAgZXM6IGVzVHJhbnNsYXRpb25zLFxuICBwdDogcHRUcmFuc2xhdGlvbnNcbn0gYXMgUmVjb3JkPFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5jb25zdCBJQ09OX1BJQ0tFUl9ERUZBVUxUX1RFWFRTID0ge1xuICBjYW5jZWw6IHtcbiAgICBlbjogJ0NhbmNlbCcsXG4gICAgZXM6ICdDYW5jZWxhcicsXG4gICAgcHQ6ICdDYW5jZWxhcidcbiAgfSxcbiAgY29uZmlybToge1xuICAgIGVuOiAnQ29uZmlybScsXG4gICAgZXM6ICdDb25maXJtYXInLFxuICAgIHB0OiAnQ29uZmlybWFyJ1xuICB9LFxuICBpY29uc0ZvdW5kOiB7XG4gICAgZW46ICdpY29ucyBmb3VuZCcsXG4gICAgZXM6ICdcXHUwMGVkY29ub3MgZW5jb250cmFkb3MnLFxuICAgIHB0OiAnXFx1MDBlZGNvbmVzIGVuY29udHJhZG9zJ1xuICB9LFxuICBtb2RhbFRpdGxlOiB7XG4gICAgZW46ICdTZWxlY3QgaWNvbicsXG4gICAgZXM6ICdTZWxlY2Npb25hciBcXHUwMGVkY29ubycsXG4gICAgcHQ6ICdTZWxlY2lvbmFyIFxcdTAwZWRjb25lJ1xuICB9LFxuICBub0ljb25zRm91bmQ6IHtcbiAgICBlbjogJ05vIGljb25zIGZvdW5kJyxcbiAgICBlczogJ05pbmdcXHUwMGZhbiBcXHUwMGVkY29ubyBlbmNvbnRyYWRvJyxcbiAgICBwdDogJ05lbmh1bSBcXHUwMGVkY29uZSBlbmNvbnRyYWRvJ1xuICB9LFxuICBzZWFyY2hQbGFjZWhvbGRlcjoge1xuICAgIGVuOiAnVHlwZSB0aGUgaWNvbiBuYW1lLi4uJyxcbiAgICBlczogJ0VzY3JpYmEgZWwgbm9tYnJlIGRlbCBcXHUwMGVkY29uby4uLicsXG4gICAgcHQ6ICdEaWdpdGUgbyBub21lIGRvIFxcdTAwZWRjb25lLi4uJ1xuICB9XG59IGFzIGNvbnN0O1xuXG50eXBlIEljb25QaWNrZXJUZXh0S2V5ID0ga2V5b2YgdHlwZW9mIElDT05fUElDS0VSX0RFRkFVTFRfVEVYVFM7XG50eXBlIFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSA9ICdlbicgfCAnZXMnIHwgJ3B0JztcblxuZnVuY3Rpb24gbm9ybWFsaXplVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAucmVwbGFjZShTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCwgJycpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAudHJpbSgpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtaWNvbi1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNb2RhbENvbXBvbmVudCxcbiAgICBTZWFyY2hib3hDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEljb25QaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWNvblBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGljb25TZWxlY3RvckRhdGEgPSBpbmplY3QoSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoSW5wdXQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZElkID0gbmV4dFNlcXVlbnRpYWxJZCgnc2RjLWljb24tcGlja2VyJyk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoYm94RWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hib3hFbD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBtb2RhbFRpdGxlID0gJyc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcGVuZGluZ1ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbW9kYWxPcGVuID0gZmFsc2U7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBhbGxJY29uczogSWNvblBpY2tlckl0ZW1bXSA9IFtdO1xuICBmaWx0ZXJlZEljb25zOiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQkXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZShTRUFSQ0hfREVCT1VOQ0VfTVMpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0ZXJtKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5sYWJlbCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyXG4gICAgICA/IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLnBsYWNlaG9sZGVyKVxuICAgICAgOiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnc2VhcmNoUGxhY2Vob2xkZXInKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFNlYXJjaFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdzZWFyY2hQbGFjZWhvbGRlcicpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVG9vbHRpcCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy50b29sdGlwKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5lcnJvck1lc3NhZ2UpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkTW9kYWxUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGFsVGl0bGVcbiAgICAgID8gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMubW9kYWxUaXRsZSlcbiAgICAgIDogdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ21vZGFsVGl0bGUnKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZWRJZDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlSWNvbnMoKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJY29ucy5zbGljZSgwLCB0aGlzLmRpc3BsYXllZENvdW50KTtcbiAgfVxuXG4gIGdldCBpY29uc0ZvdW5kQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEljb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEljb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMudmFsdWUpO1xuICAgIHJldHVybiBmb3VuZD8ubGFiZWwgPz8gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGdldCBwZW5kaW5nSWNvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdWYWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMucGVuZGluZ1ZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQ/LmxhYmVsID8/IHRoaXMucGVuZGluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbmZpcm1UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdjb25maXJtJyk7XG4gIH1cblxuICBnZXQgY2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnY2FuY2VsJyk7XG4gIH1cblxuICBnZXQgaWNvbnNGb3VuZFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ2ljb25zRm91bmQnKTtcbiAgfVxuXG4gIGdldCBub0ljb25zRm91bmRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdub0ljb25zRm91bmQnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPz8gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3Blbk1vZGFsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICAgIHRoaXMubW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMubG9hZEljb25zSWZOZWVkZWQoKTtcbiAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNTZWFyY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5zZWFyY2hib3hFbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignaW5wdXQnKTtcbiAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgb25Nb2RhbFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IHRlcm07XG4gICAgdGhpcy5kaXNwbGF5ZWRDb3VudCA9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCQubmV4dCh0ZXJtKTtcbiAgfVxuXG4gIG9uR3JpZFNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBuZWFyQm90dG9tID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0IDwgU0NST0xMX1RIUkVTSE9MRF9QWDtcblxuICAgIGlmIChuZWFyQm90dG9tICYmIHRoaXMuZGlzcGxheWVkQ291bnQgPCB0aGlzLmZpbHRlcmVkSWNvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvdW50ICs9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJY29uKGljb246IEljb25QaWNrZXJJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lID8gbnVsbCA6IGljb24ubmFtZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNvbmZpcm1TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMucGVuZGluZ1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjYW5jZWxTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc0ljb25TZWxlY3RlZChpY29uOiBJY29uUGlja2VySXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSWNvbnNJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxJY29ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5pY29uU2VsZWN0b3JEYXRhXG4gICAgICAubG9hZEZvbnRBd2Vzb21lVjVTb2xpZEljb25zKClcbiAgICAgIC50aGVuKChpY29ucykgPT4ge1xuICAgICAgICB0aGlzLmFsbEljb25zID0gdGhpcy5idWlsZEljb25MaXN0KGljb25zKTtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEljb25MaXN0KGljb25zOiBSZWFkb25seUFycmF5PEljb25TZWxlY3Rvckl0ZW0+KTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgYWxsID0gaWNvbnMucmVkdWNlPEljb25QaWNrZXJJdGVtW10+KChyZXN1bHQsIGljb24pID0+IHtcbiAgICAgIGlmICghdGhpcy5zaG91bGRJbmNsdWRlSWNvbihpY29uKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgbmFtZTogaWNvbi5jbGFzc05hbWUsXG4gICAgICAgIG5vcm1hbGl6ZWRMYWJlbDogbm9ybWFsaXplVGV4dChsYWJlbClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiB0aGlzLnNvcnRCeVByaW9yaXR5KGFsbCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRCeVByaW9yaXR5KGljb25zOiBJY29uUGlja2VySXRlbVtdKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgcHJpb3JpdHlJbmRleCA9IG5ldyBNYXAoU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLm1hcCgobmFtZSwgaSkgPT4gW25hbWUsIGldKSk7XG4gICAgY29uc3QgcHJpb3JpdGl6ZWQgPSBBcnJheS5mcm9tPEljb25QaWNrZXJJdGVtIHwgdW5kZWZpbmVkPih7IGxlbmd0aDogU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLmxlbmd0aCB9KTtcbiAgICBjb25zdCByZXN0OiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGljb24gb2YgaWNvbnMpIHtcbiAgICAgIGNvbnN0IGlkeCA9IHByaW9yaXR5SW5kZXguZ2V0KGljb24ubmFtZSk7XG4gICAgICBpZiAoaWR4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJpb3JpdGl6ZWRbaWR4XSA9IGljb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN0LnB1c2goaWNvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wcmlvcml0aXplZC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEljb25QaWNrZXJJdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCksIC4uLnJlc3RdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcih0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplVGV4dCh0ZXJtKTtcblxuICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmFsbEljb25zLmZpbHRlcihcbiAgICAgICAgKGljb24pID0+XG4gICAgICAgICAgaWNvbi5ub3JtYWxpemVkTGFiZWwuaW5jbHVkZXMobm9ybWFsaXplZCkgfHxcbiAgICAgICAgICBub3JtYWxpemVUZXh0KGljb24ubmFtZSkuaW5jbHVkZXMobm9ybWFsaXplZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRJbmNsdWRlSWNvbihpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX05BTUVTLmhhcyhpY29uLmNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVUZXh0KGxhYmVsKTtcbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVRleHQoaWNvbi5jbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuICFTRENfSUNPTl9QSUNLRVJfQkxPQ0tFRF9URVJNUy5zb21lKFxuICAgICAgKHRlcm0pID0+IG5vcm1hbGl6ZWRMYWJlbC5pbmNsdWRlcyh0ZXJtKSB8fCBub3JtYWxpemVkTmFtZS5pbmNsdWRlcyh0ZXJtKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJY29uUGlja2VyVGV4dChrZXk6IEljb25QaWNrZXJUZXh0S2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGAke0lDT05fUElDS0VSX0tFWV9QUkVGSVh9JHtrZXl9YDtcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfREVGQVVMVF9URVhUU1trZXldW3RoaXMuY3VycmVudExhbmd1YWdlXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUljb25MYWJlbChpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGljb24udHJhbnNsYXRpb25LZXk/LnRyaW0oKSA/PyAnJztcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNsYXRpb25LZXkgJiYgIXRyYW5zbGF0aW9uS2V5LnN0YXJ0c1dpdGgoSUNPTl9UUkFOU0xBVElPTl9LRVlfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh1bWFuaXplSWNvbkNsYXNzKGljb24uY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRyYW5zbGF0ZWRWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVkID0gU3RyaW5nKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KSA/PyAnJykudHJpbSgpO1xuXG4gICAgaWYgKHRyYW5zbGF0ZWQgJiYgdHJhbnNsYXRlZCAhPT0ga2V5KSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfVFJBTlNMQVRJT05TW3RoaXMuY3VycmVudExhbmd1YWdlXVtrZXldID8/IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICB9XG5cbiAgcHJpdmF0ZSBodW1hbml6ZUljb25DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGh1bWFuaXplVGV4dChcbiAgICAgIGNsYXNzTmFtZVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfQ0xBU1NfUkVHRVgsICcnKVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfUFJFRklYX1JFR0VYLCAnICcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBTdXBwb3J0ZWRJY29uUGlja2VyTGFuZ3VhZ2Uge1xuICAgIGNvbnN0IGxhbmcgPSAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlbicpKSB7XG4gICAgICByZXR1cm4gJ2VuJztcbiAgICB9XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlcycpKSB7XG4gICAgICByZXR1cm4gJ2VzJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3B0JztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNkYy1pY29uLXBpY2tlclwiXG4gIFtjbGFzcy5zZGMtaWNvbi1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnNkYy1pY29uLXBpY2tlci0taW52YWxpZF09XCJpbnZhbGlkXCJcbj5cbiAgQGlmIChyZXNvbHZlZExhYmVsKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xhYmVsXCIgW2Zvcl09XCJ0cmlnZ2VySWRcIiBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIj5cbiAgICAgICAge3sgcmVzb2x2ZWRMYWJlbCB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3JlcXVpcmVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgQGlmIChyZXNvbHZlZFRvb2x0aXApIHtcbiAgICAgICAgPHNkYy10b29sdGlwIFtwVG9vbHRpcF09XCJyZXNvbHZlZFRvb2x0aXBcIiBbdG9vbHRpcEV2ZW50XT1cIidib3RoJ1wiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19pbmZvLWljb25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc29sdmVkVG9vbHRpcFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc2RjLXRvb2x0aXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8YnV0dG9uXG4gICAgW2lkXT1cInRyaWdnZXJJZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXJcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWQgfHwgbnVsbFwiXG4gICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyLXN3YXRjaFwiPlxuICAgICAgQGlmICh2YWx1ZSkge1xuICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZhcyAnICsgdmFsdWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHNkYy1pY29uLXBpY2tlcl9fdHJpZ2dlci1zd2F0Y2gtcGxhY2Vob2xkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItc2VwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItdGV4dFwiPlxuICAgICAgQGlmICh2YWx1ZSAmJiBzZWxlY3RlZEljb25MYWJlbCkge1xuICAgICAgICB7eyBzZWxlY3RlZEljb25MYWJlbCB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wbGFjZWhvbGRlclwiPnt7IHJlc29sdmVkUGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICBAaWYgKGludmFsaWQgJiYgcmVzb2x2ZWRFcnJvck1lc3NhZ2UpIHtcbiAgICA8c21hbGwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Vycm9yXCI+e3sgcmVzb2x2ZWRFcnJvck1lc3NhZ2UgfX08L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPHNkYy1tb2RhbFxuICBbaGVhZGVyXT1cInJlc29sdmVkTW9kYWxUaXRsZVwiXG4gIFt2aXNpYmxlXT1cIm1vZGFsT3BlblwiXG4gIFt3aWR0aF09XCI2NjBcIlxuICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gIHN0eWxlQ2xhc3M9XCJzZGMtbW9kYWwtLWljb24tcGlja2VyXCJcbiAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgKHZpc2libGVDaGFuZ2UpPVwib25Nb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX21vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19zZWFyY2gtcm93XCI+XG4gICAgICA8c2RjLXNlYXJjaGJveFxuICAgICAgICAjc2VhcmNoYm94RWxcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRTZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgIFtkZWJvdW5jZVRpbWVNc109XCIyNTBcIlxuICAgICAgICAoZGVib3VuY2VkVmFsdWVDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uU2VhcmNoKCcnKVwiXG4gICAgICA+PC9zZGMtc2VhcmNoYm94PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChwZW5kaW5nVmFsdWUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctYmFyXCI+XG4gICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBwZW5kaW5nVmFsdWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wcmV2aWV3LWluZm9cIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fcHJldmlldy1sYWJlbFwiPnt7IHBlbmRpbmdJY29uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctY2xhc3NcIj57eyBwZW5kaW5nVmFsdWUgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY291bnRlclwiPlxuICAgICAgQGlmIChmaWx0ZXJlZEljb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4+e3sgaWNvbnNGb3VuZENvdW50IH19IHt7IGljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSBpZiAoIWlzTG9hZGluZykge1xuICAgICAgICA8c3Bhbj57eyBub0ljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xvYWRpbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIE5PU09OQVI6IHRoaXMgcGlja2VyIG5lZWRzIGEgY3VzdG9tIEFSSUEgbGlzdGJveC9ncmlkIGV4cGVyaWVuY2UgdGhhdCBhIG5hdGl2ZSBzZWxlY3QgY2Fubm90IHByb3ZpZGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICNpY29uR3JpZFxuICAgICAgICBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fZ3JpZFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3Rib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZE1vZGFsVGl0bGVcIlxuICAgICAgICAoc2Nyb2xsKT1cIm9uR3JpZFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoaWNvbiBvZiB2aXNpYmxlSWNvbnM7IHRyYWNrIGljb24ubmFtZSkge1xuICAgICAgICAgIDwhLS0gTk9TT05BUiAtLT5cbiAgICAgICAgICA8IS0tIHRoZSBjdXN0b20gaWNvbiBncmlkIGtlZXBzIG9wdGlvbiBzZW1hbnRpY3Mgb24gdGhlIGZvY3VzYWJsZSBjYXJkIGZvciBrZXlib2FyZCBhbmQgU1Igc3VwcG9ydCAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtaWNvbi1waWNrZXJfX2NhcmQtLXNlbGVjdGVkXT1cImlzSWNvblNlbGVjdGVkKGljb24pXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0ljb25TZWxlY3RlZChpY29uKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgaWNvbi5sYWJlbCArICcgLSAnICsgaWNvbi5uYW1lXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEljb24oaWNvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBpY29uLm5hbWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY2FyZC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2NhcmQtbmFtZVwiPnt7IGljb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBmb290ZXIgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzZGMtYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiY2FuY2VsVGV4dFwiXG4gICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAoY2xpY2tlZCk9XCJjYW5jZWxTZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgICA8c2RjLWJ1dHRvblxuICAgICAgW2xhYmVsXT1cImNvbmZpcm1UZXh0XCJcbiAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGVuZGluZ1ZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSBudWxsXCJcbiAgICAgIChjbGlja2VkKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgPC9kaXY+XG48L3NkYy1tb2RhbD5cbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3NyYy9mZWF0dXJlcy9pY29uLXBpY2tlci9pY29uLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ljb24tcGlja2VyL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakYsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUMvQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR3pGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxP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QVJuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixpSEFVaUMsVUFBVSw2QkNoSTlDLG9nS0F1SkEscXJNRG5ESSxZQUFZLDhCQUNaLFdBQVcsOEJBQ1gsZUFBZSwrQkFDZixjQUFjLHlRQUNkLGtCQUFrQixvV0FDbEIsZ0JBQWdCLCtKQUNoQixlQUFlOzs0RkFjTixtQkFBbUI7a0JBeEIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUSxhQUM5Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBVWdFLFdBQVc7c0JBQTNFLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFckMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU0RDX0lDT05fUElDS0VSX0JMT0NLRURfTkFNRVMsXG4gIFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX1RFUk1TLFxuICBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFLFxuICBTRENfSUNPTl9QSUNLRVJfUFJJT1JJVFlfTkFNRVNcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvaWNvbi1waWNrZXIuY29uc3QnO1xuaW1wb3J0IHsgSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2ljb24tc2VsZWN0b3ItZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgSWNvblNlbGVjdG9ySXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvaWNvbi1zZWxlY3Rvci50eXBlJztcbmltcG9ydCB0eXBlIHsgSWNvblBpY2tlckl0ZW0gfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ljb24tcGlja2VyLnR5cGUnO1xuaW1wb3J0IHsgcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCwgcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL2kxOG4udXRpbCc7XG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IGh1bWFuaXplVGV4dCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvc3RyaW5nLnV0aWwnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoYm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IGVuVHJhbnNsYXRpb25zIGZyb20gJy4uLy4uL2xvY2FsZXMvZW4uanNvbic7XG5pbXBvcnQgZXNUcmFuc2xhdGlvbnMgZnJvbSAnLi4vLi4vbG9jYWxlcy9lcy1DTy5qc29uJztcbmltcG9ydCBwdFRyYW5zbGF0aW9ucyBmcm9tICcuLi8uLi9sb2NhbGVzL3B0Lmpzb24nO1xuXG5jb25zdCBTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCA9IC9bXFx1MDMwMC1cXHUwMzZmXS9nO1xuY29uc3QgU0VBUkNIX0RFQk9VTkNFX01TID0gMjUwO1xuY29uc3QgU0NST0xMX1RIUkVTSE9MRF9QWCA9IDEyMDtcbmNvbnN0IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFID0gJyc7XG5jb25zdCBJQ09OX1BJQ0tFUl9LRVlfUFJFRklYID0gJ3BsYXRmb3JtLmRhdGFjb3JlLmljb25QaWNrZXIuJztcbmNvbnN0IElDT05fVFJBTlNMQVRJT05fS0VZX1BSRUZJWCA9ICdwbGF0Zm9ybS5kYXRhY29yZS5pY29ucy4nO1xuY29uc3QgRk9OVF9BV0VTT01FX0NMQVNTX1JFR0VYID0gL1xcYmZhW3NyYmxkXT9cXGJ8XFxiZmFcXGIvZztcbmNvbnN0IEZPTlRfQVdFU09NRV9QUkVGSVhfUkVHRVggPSAvXFxiZmEtL2c7XG5jb25zdCBJQ09OX1BJQ0tFUl9UUkFOU0xBVElPTlMgPSB7XG4gIGVuOiBlblRyYW5zbGF0aW9ucyxcbiAgZXM6IGVzVHJhbnNsYXRpb25zLFxuICBwdDogcHRUcmFuc2xhdGlvbnNcbn0gYXMgUmVjb3JkPFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSwgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5jb25zdCBJQ09OX1BJQ0tFUl9ERUZBVUxUX1RFWFRTID0ge1xuICBjYW5jZWw6IHtcbiAgICBlbjogJ0NhbmNlbCcsXG4gICAgZXM6ICdDYW5jZWxhcicsXG4gICAgcHQ6ICdDYW5jZWxhcidcbiAgfSxcbiAgY29uZmlybToge1xuICAgIGVuOiAnQ29uZmlybScsXG4gICAgZXM6ICdDb25maXJtYXInLFxuICAgIHB0OiAnQ29uZmlybWFyJ1xuICB9LFxuICBpY29uc0ZvdW5kOiB7XG4gICAgZW46ICdpY29ucyBmb3VuZCcsXG4gICAgZXM6ICdcXHUwMGVkY29ub3MgZW5jb250cmFkb3MnLFxuICAgIHB0OiAnXFx1MDBlZGNvbmVzIGVuY29udHJhZG9zJ1xuICB9LFxuICBtb2RhbFRpdGxlOiB7XG4gICAgZW46ICdTZWxlY3QgaWNvbicsXG4gICAgZXM6ICdTZWxlY2Npb25hciBcXHUwMGVkY29ubycsXG4gICAgcHQ6ICdTZWxlY2lvbmFyIFxcdTAwZWRjb25lJ1xuICB9LFxuICBub0ljb25zRm91bmQ6IHtcbiAgICBlbjogJ05vIGljb25zIGZvdW5kJyxcbiAgICBlczogJ05pbmdcXHUwMGZhbiBcXHUwMGVkY29ubyBlbmNvbnRyYWRvJyxcbiAgICBwdDogJ05lbmh1bSBcXHUwMGVkY29uZSBlbmNvbnRyYWRvJ1xuICB9LFxuICBzZWFyY2hQbGFjZWhvbGRlcjoge1xuICAgIGVuOiAnVHlwZSB0aGUgaWNvbiBuYW1lLi4uJyxcbiAgICBlczogJ0VzY3JpYmEgZWwgbm9tYnJlIGRlbCBcXHUwMGVkY29uby4uLicsXG4gICAgcHQ6ICdEaWdpdGUgbyBub21lIGRvIFxcdTAwZWRjb25lLi4uJ1xuICB9XG59IGFzIGNvbnN0O1xuXG50eXBlIEljb25QaWNrZXJUZXh0S2V5ID0ga2V5b2YgdHlwZW9mIElDT05fUElDS0VSX0RFRkFVTFRfVEVYVFM7XG50eXBlIFN1cHBvcnRlZEljb25QaWNrZXJMYW5ndWFnZSA9ICdlbicgfCAnZXMnIHwgJ3B0JztcblxuZnVuY3Rpb24gbm9ybWFsaXplVGV4dCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAucmVwbGFjZShTRUFSQ0hfTk9STUFMSVpBVElPTl9SRUdFWCwgJycpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAudHJpbSgpO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtaWNvbi1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNb2RhbENvbXBvbmVudCxcbiAgICBTZWFyY2hib3hDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2ljb24tcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEljb25QaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWNvblBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZSA9IGluamVjdChUcmFuc2xhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGljb25TZWxlY3RvckRhdGEgPSBpbmplY3QoSWNvblNlbGVjdG9yRGF0YVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoSW5wdXQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZElkID0gbmV4dFNlcXVlbnRpYWxJZCgnc2RjLWljb24tcGlja2VyJyk7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoYm94RWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHJpdmF0ZSByZWFkb25seSBzZWFyY2hib3hFbD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICcnO1xuICBASW5wdXQoKSBtb2RhbFRpdGxlID0gJyc7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcGVuZGluZ1ZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgbW9kYWxPcGVuID0gZmFsc2U7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBhbGxJY29uczogSWNvblBpY2tlckl0ZW1bXSA9IFtdO1xuICBmaWx0ZXJlZEljb25zOiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQkXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZShTRUFSQ0hfREVCT1VOQ0VfTVMpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh0ZXJtKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0ZXJtKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoSW5wdXQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRMYWJlbCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5sYWJlbCk7XG4gIH1cblxuICBnZXQgcmVzb2x2ZWRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyXG4gICAgICA/IHJlc29sdmVUcmFuc2xhdGFibGVUZXh0KHRoaXMudHJhbnNsYXRlLCB0aGlzLnBsYWNlaG9sZGVyKVxuICAgICAgOiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnc2VhcmNoUGxhY2Vob2xkZXInKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZFNlYXJjaFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdzZWFyY2hQbGFjZWhvbGRlcicpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkVG9vbHRpcCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy50b29sdGlwKTtcbiAgfVxuXG4gIGdldCByZXNvbHZlZEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gcmVzb2x2ZU51bGxhYmxlVHJhbnNsYXRhYmxlVGV4dCh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5lcnJvck1lc3NhZ2UpO1xuICB9XG5cbiAgZ2V0IHJlc29sdmVkTW9kYWxUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1vZGFsVGl0bGVcbiAgICAgID8gcmVzb2x2ZVRyYW5zbGF0YWJsZVRleHQodGhpcy50cmFuc2xhdGUsIHRoaXMubW9kYWxUaXRsZSlcbiAgICAgIDogdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ21vZGFsVGl0bGUnKTtcbiAgfVxuXG4gIGdldCB0cmlnZ2VySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZWRJZDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlSWNvbnMoKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRJY29ucy5zbGljZSgwLCB0aGlzLmRpc3BsYXllZENvdW50KTtcbiAgfVxuXG4gIGdldCBpY29uc0ZvdW5kQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZEljb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZEljb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMudmFsdWUpO1xuICAgIHJldHVybiBmb3VuZD8ubGFiZWwgPz8gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGdldCBwZW5kaW5nSWNvbkxhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnBlbmRpbmdWYWx1ZSkge1xuICAgICAgcmV0dXJuIEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICAgIH1cblxuICAgIGNvbnN0IGZvdW5kID0gdGhpcy5hbGxJY29ucy5maW5kKChpY29uKSA9PiBpY29uLm5hbWUgPT09IHRoaXMucGVuZGluZ1ZhbHVlKTtcbiAgICByZXR1cm4gZm91bmQ/LmxhYmVsID8/IHRoaXMucGVuZGluZ1ZhbHVlO1xuICB9XG5cbiAgZ2V0IGNvbmZpcm1UZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdjb25maXJtJyk7XG4gIH1cblxuICBnZXQgY2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVJY29uUGlja2VyVGV4dCgnY2FuY2VsJyk7XG4gIH1cblxuICBnZXQgaWNvbnNGb3VuZFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlSWNvblBpY2tlclRleHQoJ2ljb25zRm91bmQnKTtcbiAgfVxuXG4gIGdldCBub0ljb25zRm91bmRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZUljb25QaWNrZXJUZXh0KCdub0ljb25zRm91bmQnKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPz8gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb3Blbk1vZGFsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xuICAgIHRoaXMuZGlzcGxheWVkQ291bnQgPSBTRENfSUNPTl9QSUNLRVJfUEFHRV9TSVpFO1xuICAgIHRoaXMubW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMubG9hZEljb25zSWZOZWVkZWQoKTtcbiAgICB0aGlzLmZvY3VzU2VhcmNoSW5wdXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNTZWFyY2hJbnB1dCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5zZWFyY2hib3hFbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcjxIVE1MSW5wdXRFbGVtZW50PignaW5wdXQnKTtcbiAgICAgIGlucHV0Py5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgb25Nb2RhbFZpc2libGVDaGFuZ2UodmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdmlzaWJsZSkge1xuICAgICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMucGVuZGluZ1ZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VhcmNoKHRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybSA9IHRlcm07XG4gICAgdGhpcy5kaXNwbGF5ZWRDb3VudCA9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgdGhpcy5zZWFyY2hJbnB1dCQubmV4dCh0ZXJtKTtcbiAgfVxuXG4gIG9uR3JpZFNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBuZWFyQm90dG9tID0gZWwuc2Nyb2xsSGVpZ2h0IC0gZWwuc2Nyb2xsVG9wIC0gZWwuY2xpZW50SGVpZ2h0IDwgU0NST0xMX1RIUkVTSE9MRF9QWDtcblxuICAgIGlmIChuZWFyQm90dG9tICYmIHRoaXMuZGlzcGxheWVkQ291bnQgPCB0aGlzLmZpbHRlcmVkSWNvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvdW50ICs9IFNEQ19JQ09OX1BJQ0tFUl9QQUdFX1NJWkU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RJY29uKGljb246IEljb25QaWNrZXJJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nVmFsdWUgPSB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lID8gbnVsbCA6IGljb24ubmFtZTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNvbmZpcm1TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMucGVuZGluZ1ZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjYW5jZWxTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbE9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLnBlbmRpbmdWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc0ljb25TZWxlY3RlZChpY29uOiBJY29uUGlja2VySXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnBlbmRpbmdWYWx1ZSA9PT0gaWNvbi5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkSWNvbnNJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGxJY29ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFwcGx5RmlsdGVyKHRoaXMuc2VhcmNoVGVybSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgdGhpcy5pY29uU2VsZWN0b3JEYXRhXG4gICAgICAubG9hZEZvbnRBd2Vzb21lVjVTb2xpZEljb25zKClcbiAgICAgIC50aGVuKChpY29ucykgPT4ge1xuICAgICAgICB0aGlzLmFsbEljb25zID0gdGhpcy5idWlsZEljb25MaXN0KGljb25zKTtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcih0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEljb25MaXN0KGljb25zOiBSZWFkb25seUFycmF5PEljb25TZWxlY3Rvckl0ZW0+KTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgYWxsID0gaWNvbnMucmVkdWNlPEljb25QaWNrZXJJdGVtW10+KChyZXN1bHQsIGljb24pID0+IHtcbiAgICAgIGlmICghdGhpcy5zaG91bGRJbmNsdWRlSWNvbihpY29uKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBsYWJlbCxcbiAgICAgICAgbmFtZTogaWNvbi5jbGFzc05hbWUsXG4gICAgICAgIG5vcm1hbGl6ZWRMYWJlbDogbm9ybWFsaXplVGV4dChsYWJlbClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiB0aGlzLnNvcnRCeVByaW9yaXR5KGFsbCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRCeVByaW9yaXR5KGljb25zOiBJY29uUGlja2VySXRlbVtdKTogSWNvblBpY2tlckl0ZW1bXSB7XG4gICAgY29uc3QgcHJpb3JpdHlJbmRleCA9IG5ldyBNYXAoU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLm1hcCgobmFtZSwgaSkgPT4gW25hbWUsIGldKSk7XG4gICAgY29uc3QgcHJpb3JpdGl6ZWQgPSBBcnJheS5mcm9tPEljb25QaWNrZXJJdGVtIHwgdW5kZWZpbmVkPih7IGxlbmd0aDogU0RDX0lDT05fUElDS0VSX1BSSU9SSVRZX05BTUVTLmxlbmd0aCB9KTtcbiAgICBjb25zdCByZXN0OiBJY29uUGlja2VySXRlbVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGljb24gb2YgaWNvbnMpIHtcbiAgICAgIGNvbnN0IGlkeCA9IHByaW9yaXR5SW5kZXguZ2V0KGljb24ubmFtZSk7XG4gICAgICBpZiAoaWR4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcHJpb3JpdGl6ZWRbaWR4XSA9IGljb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN0LnB1c2goaWNvbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5wcmlvcml0aXplZC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEljb25QaWNrZXJJdGVtID0+IGl0ZW0gIT09IHVuZGVmaW5lZCksIC4uLnJlc3RdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcih0ZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplVGV4dCh0ZXJtKTtcblxuICAgIGlmICghbm9ybWFsaXplZCkge1xuICAgICAgdGhpcy5maWx0ZXJlZEljb25zID0gdGhpcy5hbGxJY29ucy5zbGljZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlcmVkSWNvbnMgPSB0aGlzLmFsbEljb25zLmZpbHRlcihcbiAgICAgICAgKGljb24pID0+XG4gICAgICAgICAgaWNvbi5ub3JtYWxpemVkTGFiZWwuaW5jbHVkZXMobm9ybWFsaXplZCkgfHxcbiAgICAgICAgICBub3JtYWxpemVUZXh0KGljb24ubmFtZSkuaW5jbHVkZXMobm9ybWFsaXplZClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGRJbmNsdWRlSWNvbihpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogYm9vbGVhbiB7XG4gICAgaWYgKFNEQ19JQ09OX1BJQ0tFUl9CTE9DS0VEX05BTUVTLmhhcyhpY29uLmNsYXNzTmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzb2x2ZUljb25MYWJlbChpY29uKTtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVUZXh0KGxhYmVsKTtcbiAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZVRleHQoaWNvbi5jbGFzc05hbWUpO1xuXG4gICAgcmV0dXJuICFTRENfSUNPTl9QSUNLRVJfQkxPQ0tFRF9URVJNUy5zb21lKFxuICAgICAgKHRlcm0pID0+IG5vcm1hbGl6ZWRMYWJlbC5pbmNsdWRlcyh0ZXJtKSB8fCBub3JtYWxpemVkTmFtZS5pbmNsdWRlcyh0ZXJtKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVJY29uUGlja2VyVGV4dChrZXk6IEljb25QaWNrZXJUZXh0S2V5KTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGAke0lDT05fUElDS0VSX0tFWV9QUkVGSVh9JHtrZXl9YDtcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfREVGQVVMVF9URVhUU1trZXldW3RoaXMuY3VycmVudExhbmd1YWdlXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZUljb25MYWJlbChpY29uOiBJY29uU2VsZWN0b3JJdGVtKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IGljb24udHJhbnNsYXRpb25LZXk/LnRyaW0oKSA/PyAnJztcbiAgICBjb25zdCB0cmFuc2xhdGVkID0gdGhpcy5yZXNvbHZlVHJhbnNsYXRlZFZhbHVlKHRyYW5zbGF0aW9uS2V5KTtcblxuICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICBpZiAodHJhbnNsYXRpb25LZXkgJiYgIXRyYW5zbGF0aW9uS2V5LnN0YXJ0c1dpdGgoSUNPTl9UUkFOU0xBVElPTl9LRVlfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh1bWFuaXplSWNvbkNsYXNzKGljb24uY2xhc3NOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVRyYW5zbGF0ZWRWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFrZXkpIHtcbiAgICAgIHJldHVybiBFTVBUWV9JQ09OX1BJQ0tFUl9WQUxVRTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGVkID0gU3RyaW5nKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KSA/PyAnJykudHJpbSgpO1xuXG4gICAgaWYgKHRyYW5zbGF0ZWQgJiYgdHJhbnNsYXRlZCAhPT0ga2V5KSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gSUNPTl9QSUNLRVJfVFJBTlNMQVRJT05TW3RoaXMuY3VycmVudExhbmd1YWdlXVtrZXldID8/IEVNUFRZX0lDT05fUElDS0VSX1ZBTFVFO1xuICB9XG5cbiAgcHJpdmF0ZSBodW1hbml6ZUljb25DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGh1bWFuaXplVGV4dChcbiAgICAgIGNsYXNzTmFtZVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfQ0xBU1NfUkVHRVgsICcnKVxuICAgICAgICAucmVwbGFjZShGT05UX0FXRVNPTUVfUFJFRklYX1JFR0VYLCAnICcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRMYW5ndWFnZSgpOiBTdXBwb3J0ZWRJY29uUGlja2VyTGFuZ3VhZ2Uge1xuICAgIGNvbnN0IGxhbmcgPSAodGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgPz8gJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlbicpKSB7XG4gICAgICByZXR1cm4gJ2VuJztcbiAgICB9XG5cbiAgICBpZiAobGFuZy5zdGFydHNXaXRoKCdlcycpKSB7XG4gICAgICByZXR1cm4gJ2VzJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3B0JztcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNkYy1pY29uLXBpY2tlclwiXG4gIFtjbGFzcy5zZGMtaWNvbi1waWNrZXItLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnNkYy1pY29uLXBpY2tlci0taW52YWxpZF09XCJpbnZhbGlkXCJcbj5cbiAgQGlmIChyZXNvbHZlZExhYmVsKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xhYmVsXCIgW2Zvcl09XCJ0cmlnZ2VySWRcIiBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInJlcXVpcmVkIHx8IG51bGxcIj5cbiAgICAgICAge3sgcmVzb2x2ZWRMYWJlbCB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3JlcXVpcmVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+Kjwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9sYWJlbD5cblxuICAgICAgQGlmIChyZXNvbHZlZFRvb2x0aXApIHtcbiAgICAgICAgPHNkYy10b29sdGlwIFtwVG9vbHRpcF09XCJyZXNvbHZlZFRvb2x0aXBcIiBbdG9vbHRpcEV2ZW50XT1cIidib3RoJ1wiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2luZm8taWNvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc29sdmVkVG9vbHRpcFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaW5mby1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvc2RjLXRvb2x0aXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8YnV0dG9uXG4gICAgW2lkXT1cInRyaWdnZXJJZFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXJcIlxuICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWQgfHwgbnVsbFwiXG4gICAgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX190cmlnZ2VyLXN3YXRjaFwiPlxuICAgICAgQGlmICh2YWx1ZSkge1xuICAgICAgICA8aSBbY2xhc3NdPVwiJ2ZhcyAnICsgdmFsdWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hldnJvbi1kb3duIHNkYy1pY29uLXBpY2tlcl9fdHJpZ2dlci1zd2F0Y2gtcGxhY2Vob2xkZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItc2VwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3RyaWdnZXItdGV4dFwiPlxuICAgICAgQGlmICh2YWx1ZSAmJiBzZWxlY3RlZEljb25MYWJlbCkge1xuICAgICAgICB7eyBzZWxlY3RlZEljb25MYWJlbCB9fVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wbGFjZWhvbGRlclwiPnt7IHJlc29sdmVkUGxhY2Vob2xkZXIgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICBAaWYgKGludmFsaWQgJiYgcmVzb2x2ZWRFcnJvck1lc3NhZ2UpIHtcbiAgICA8c21hbGwgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Vycm9yXCI+e3sgcmVzb2x2ZWRFcnJvck1lc3NhZ2UgfX08L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPHNkYy1tb2RhbFxuICBbaGVhZGVyXT1cInJlc29sdmVkTW9kYWxUaXRsZVwiXG4gIFt2aXNpYmxlXT1cIm1vZGFsT3BlblwiXG4gIFt3aWR0aF09XCI2NjBcIlxuICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gIHN0eWxlQ2xhc3M9XCJzZGMtbW9kYWwtLWljb24tcGlja2VyXCJcbiAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgKHZpc2libGVDaGFuZ2UpPVwib25Nb2RhbFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX21vZGFsLWJvZHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19zZWFyY2gtcm93XCI+XG4gICAgICA8c2RjLXNlYXJjaGJveFxuICAgICAgICAjc2VhcmNoYm94RWxcbiAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRTZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgIFtkZWJvdW5jZVRpbWVNc109XCIyNTBcIlxuICAgICAgICAoZGVib3VuY2VkVmFsdWVDaGFuZ2UpPVwib25TZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uU2VhcmNoKCcnKVwiXG4gICAgICA+PC9zZGMtc2VhcmNoYm94PlxuICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHBlbmRpbmdWYWx1ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wcmV2aWV3LWJhclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBbY2xhc3NdPVwiJ2ZhcyAnICsgcGVuZGluZ1ZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19wcmV2aWV3LWljb25cIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctaW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctbGFiZWxcIj57eyBwZW5kaW5nSWNvbkxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX3ByZXZpZXctY2xhc3NcIj57eyBwZW5kaW5nVmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY291bnRlclwiPlxuICAgICAgQGlmIChmaWx0ZXJlZEljb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4+e3sgaWNvbnNGb3VuZENvdW50IH19IHt7IGljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfSBAZWxzZSBpZiAoIWlzTG9hZGluZykge1xuICAgICAgICA8c3Bhbj57eyBub0ljb25zRm91bmRUZXh0IH19PC9zcGFuPlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2xvYWRpbmdcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1zcGluXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8IS0tIE5PU09OQVI6IHRoaXMgcGlja2VyIG5lZWRzIGEgY3VzdG9tIEFSSUEgbGlzdGJveC9ncmlkIGV4cGVyaWVuY2UgdGhhdCBhIG5hdGl2ZSBzZWxlY3QgY2Fubm90IHByb3ZpZGUgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICNpY29uR3JpZFxuICAgICAgICBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fZ3JpZFwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwiJ2xpc3Rib3gnXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZE1vZGFsVGl0bGVcIlxuICAgICAgICAoc2Nyb2xsKT1cIm9uR3JpZFNjcm9sbCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAoaWNvbiBvZiB2aXNpYmxlSWNvbnM7IHRyYWNrIGljb24ubmFtZSkge1xuICAgICAgICAgIDwhLS0gTk9TT05BUiAtLT5cbiAgICAgICAgICA8IS0tIHRoZSBjdXN0b20gaWNvbiBncmlkIGtlZXBzIG9wdGlvbiBzZW1hbnRpY3Mgb24gdGhlIGZvY3VzYWJsZSBjYXJkIGZvciBrZXlib2FyZCBhbmQgU1Igc3VwcG9ydCAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2RjLWljb24tcGlja2VyX19jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZGMtaWNvbi1waWNrZXJfX2NhcmQtLXNlbGVjdGVkXT1cImlzSWNvblNlbGVjdGVkKGljb24pXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ29wdGlvbidcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc0ljb25TZWxlY3RlZChpY29uKSA/ICd0cnVlJyA6ICdmYWxzZSdcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJpY29uLmxhYmVsICsgJyAtICcgKyBpY29uLm5hbWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdEljb24oaWNvbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIFtjbGFzc109XCInZmFzICcgKyBpY29uLm5hbWVcIiBjbGFzcz1cInNkYy1pY29uLXBpY2tlcl9fY2FyZC1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2NhcmQtbmFtZVwiPnt7IGljb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPGRpdiBmb290ZXIgY2xhc3M9XCJzZGMtaWNvbi1waWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzZGMtYnV0dG9uXG4gICAgICBbbGFiZWxdPVwiY2FuY2VsVGV4dFwiXG4gICAgICBwcmlvcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAoY2xpY2tlZCk9XCJjYW5jZWxTZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgICA8c2RjLWJ1dHRvblxuICAgICAgW2xhYmVsXT1cImNvbmZpcm1UZXh0XCJcbiAgICAgIHByaW9yaXR5PVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwicGVuZGluZ1ZhbHVlID09PSBudWxsICYmIHZhbHVlID09PSBudWxsXCJcbiAgICAgIChjbGlja2VkKT1cImNvbmZpcm1TZWxlY3Rpb24oKVwiXG4gICAgPjwvc2RjLWJ1dHRvbj5cbiAgPC9kaXY+XG48L3NkYy1tb2RhbD5cbiJdfQ==