@seniorsistemas/angular-components 19.0.5 → 19.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/accordion/lib/accordion/accordion.component.d.ts +25 -0
  2. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
  3. package/alert/lib/alert/alert.component.d.ts +40 -0
  4. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
  5. package/badge/lib/badge/badge.component.d.ts +20 -0
  6. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
  7. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
  8. package/button/lib/button/button.component.d.ts +101 -0
  9. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
  10. package/card/lib/card/card.component.d.ts +18 -0
  11. package/chat/lib/chat/chat.component.d.ts +20 -2
  12. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
  13. package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
  14. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
  15. package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
  16. package/chips/lib/chips/chips/chips.component.d.ts +41 -0
  17. package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
  18. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
  19. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
  20. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
  21. package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
  22. package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
  23. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
  24. package/currency/lib/currency.service.d.ts +15 -2
  25. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
  26. package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
  27. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
  28. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
  29. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
  30. package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
  31. package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
  32. package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
  33. package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
  34. package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
  35. package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
  36. package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
  37. package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
  38. package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
  39. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
  40. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
  41. package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
  42. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
  43. package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
  44. package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
  45. package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
  46. package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
  47. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
  50. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
  53. package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
  54. package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
  55. package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
  56. package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
  57. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
  58. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
  59. package/dynamic-form/public-api.d.ts +1 -0
  60. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
  61. package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
  62. package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
  63. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
  64. package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
  65. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
  66. package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
  67. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
  68. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
  69. package/esm2022/button/lib/button/button.component.mjs +102 -1
  70. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
  71. package/esm2022/card/lib/card/card.component.mjs +21 -6
  72. package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
  73. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
  74. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
  75. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
  76. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
  77. package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
  78. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
  79. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
  80. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
  81. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
  82. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
  83. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
  84. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
  85. package/esm2022/currency/lib/currency.service.mjs +21 -8
  86. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
  87. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
  88. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
  89. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
  90. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
  91. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
  92. package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
  93. package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
  94. package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
  95. package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
  96. package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
  97. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
  98. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
  99. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
  100. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
  101. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
  102. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
  103. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  104. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
  105. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
  106. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
  107. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
  108. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  109. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
  110. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  111. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  112. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
  113. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
  114. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
  115. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
  116. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
  117. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
  118. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
  119. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
  120. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
  121. package/esm2022/dynamic-form/public-api.mjs +2 -2
  122. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
  123. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
  124. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
  125. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
  126. package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
  127. package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
  128. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
  129. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
  130. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
  131. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
  132. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
  133. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
  134. package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
  135. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
  136. package/esm2022/kanban/lib/kanban/kanban.component.mjs +35 -17
  137. package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
  138. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
  139. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
  140. package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
  141. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
  142. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
  143. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
  144. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
  145. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
  146. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
  147. package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
  148. package/esm2022/numeric/lib/numeric.service.mjs +21 -1
  149. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
  150. package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
  151. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  152. package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
  153. package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
  154. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
  155. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
  156. package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
  157. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
  158. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
  159. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
  160. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
  161. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
  162. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
  163. package/esm2022/select/lib/select/select.component.mjs +35 -1
  164. package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
  165. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
  166. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
  167. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
  168. package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
  169. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
  170. package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
  171. package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
  172. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
  173. package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
  174. package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
  175. package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
  176. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
  177. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
  178. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
  179. package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
  180. package/esm2022/template/lib/template/template.directive.mjs +14 -2
  181. package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
  182. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
  183. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
  184. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
  185. package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
  186. package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
  187. package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
  188. package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
  189. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
  190. package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
  191. package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
  192. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
  193. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
  194. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
  196. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
  198. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
  200. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  201. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
  202. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  203. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
  204. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  205. package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
  206. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  207. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
  208. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  209. package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
  210. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  211. package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
  212. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  213. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
  214. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  215. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
  216. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  217. package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
  218. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  219. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
  220. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  221. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
  222. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  223. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
  224. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  225. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
  226. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  227. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
  228. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  229. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
  230. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  231. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
  232. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  233. package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
  234. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  235. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
  236. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  237. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
  238. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  239. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
  240. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  241. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
  242. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  243. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
  244. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  245. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
  246. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  247. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
  248. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  249. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
  250. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  251. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
  252. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  253. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
  254. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  255. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
  256. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  257. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
  258. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  259. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
  260. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  261. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
  262. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  263. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
  264. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  265. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
  266. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  267. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
  268. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  269. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +29 -11
  270. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  271. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
  272. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  273. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
  274. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  275. package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
  276. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  277. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
  278. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  279. package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
  280. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  281. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
  282. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  283. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
  284. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  285. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
  286. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  287. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
  288. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  289. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
  290. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  291. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
  292. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  293. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
  295. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
  297. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
  299. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
  301. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
  303. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
  305. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
  307. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
  309. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
  311. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
  313. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
  315. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
  317. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
  319. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
  321. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
  323. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
  325. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
  327. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
  329. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
  331. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
  333. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
  335. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
  337. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
  339. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
  341. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
  343. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
  345. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
  347. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
  349. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
  351. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
  353. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
  355. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
  357. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
  359. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
  361. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
  363. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
  365. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
  367. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
  369. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  370. package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
  371. package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
  372. package/gantt/lib/gantt/gantt.component.d.ts +31 -0
  373. package/global-search/lib/global-search/global-search.component.d.ts +29 -0
  374. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
  375. package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
  376. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
  377. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
  378. package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
  379. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
  380. package/insights/lib/insights/insights.component.d.ts +22 -0
  381. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
  382. package/kanban/lib/kanban/kanban.component.d.ts +25 -5
  383. package/label-value/lib/label-value/label-value.component.d.ts +13 -0
  384. package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
  385. package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
  386. package/locale/lib/locale/locale.service.d.ts +7 -0
  387. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
  388. package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
  389. package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
  390. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
  391. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
  392. package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
  393. package/numeric/lib/numeric.pipe.d.ts +15 -0
  394. package/numeric/lib/numeric.service.d.ts +20 -0
  395. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
  396. package/object-card/lib/object-card/object-card.component.d.ts +23 -0
  397. package/optional-fields/editor/editor-field.d.ts +19 -0
  398. package/package.json +18 -18
  399. package/paginator/lib/paginator/paginator.component.d.ts +19 -0
  400. package/panel/lib/panel/panel.component.d.ts +24 -3
  401. package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
  402. package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
  403. package/picklist/lib/picklist/picklist.component.d.ts +29 -0
  404. package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
  405. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
  406. package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
  407. package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
  408. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
  409. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
  410. package/select/lib/select/select.component.d.ts +34 -0
  411. package/select-button/lib/select-button/select-button.component.d.ts +34 -0
  412. package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
  413. package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
  414. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
  415. package/slider/lib/slider/slider.component.d.ts +72 -0
  416. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
  417. package/split-button/lib/split-button/split-button.component.d.ts +22 -0
  418. package/star-rating/star-rating/star-rating.component.d.ts +16 -0
  419. package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
  420. package/stepper/lib/stepper/stepper.component.d.ts +19 -0
  421. package/structure/lib/structure/footer.component.d.ts +10 -0
  422. package/switch/lib/switch/switch.component.d.ts +20 -0
  423. package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
  424. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
  425. package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
  426. package/tabs/lib/tabs/tabs.component.d.ts +28 -0
  427. package/template/lib/template/template.directive.d.ts +12 -0
  428. package/text-area/lib/text-area/text-area.component.d.ts +27 -0
  429. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
  430. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
  431. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
  432. package/tile/lib/tile/tile.component.d.ts +25 -0
  433. package/timeline/lib/timeline/timeline.component.d.ts +24 -0
  434. package/toast/lib/toast/toast.component.d.ts +22 -2
  435. package/token-list/lib/token-list/token-list.component.d.ts +21 -0
  436. package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
  437. package/topbar/lib/topbar/topbar.component.d.ts +17 -0
  438. package/tree/lib/tree/tree.component.d.ts +27 -0
  439. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
@@ -698,4 +698,4 @@ export class BooleanOptionsLabel {
698
698
  this.clear = config.clear;
699
699
  }
700
700
  }
701
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9sb29rdXAvbG9va3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9sb29rdXAvbG9va3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdHLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVB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QUFVO0FBNlMzQixNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLElBQUksQ0FBUztJQUNiLEtBQUssQ0FBUztJQUNkLEtBQUssQ0FBVTtJQUNmLEtBQUssQ0FBVTtJQUV0QixZQUFZLE1BQWlDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBhbmltYXRlQ2hpbGQsIGdyb3VwLCBxdWVyeSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIGlucHV0LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIHZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hc2tDb25maWcgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvbmcyLWN1cnJlbmN5LW1hc2snO1xuaW1wb3J0IHsgSG90a2V5LCBIb3RrZXlzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXIyLWhvdGtleXMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgU29ydE1ldGEgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBBdXRvQ29tcGxldGUsIEF1dG9Db21wbGV0ZUNvbXBsZXRlRXZlbnQsIEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IFRhYmxlLCBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEZWZhdWx0RmlsdGVyIH0gZnJvbSAnLi90eXBlcy9kZWZhdWx0LWZpbHRlcic7XG5pbXBvcnQgeyBMYWJlbE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzL2xhYmVsLW9wdGlvbnMnO1xuXG5pbXBvcnQgeyBMb2FkaW5nU3RhdGVJbmRpY2F0b3JzLCBMb2FkaW5nU3RhdGVNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvYWRpbmctc3RhdGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJMb2NhbGVPcHRpb25zLCBMb2NhbGVNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2xvY2FsZSc7XG5pbXBvcnQgeyBDaGVja0Rpc2FibGVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL3V0aWxzJztcblxuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0lmLCBOZ1N3aXRjaCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9lbXB0eS1zdGF0ZSc7XG5pbXBvcnQgeyBCYWRnZU1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHsgTWFza0Zvcm1hdHRlck1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvbWFzayc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckNoZWNrYm94TW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90YWJsZS1oZWFkZXInO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1Db21wb25lbnQsIGR5bmFtaWNUeXBlVG9EeW5hbWljU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHBhbmRlZER5bmFtaWNUeXBlIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3Jvdyc7XG5pbXBvcnQgeyBTZWxlY3RGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL3NlbGVjdC1maWVsZCc7XG5pbXBvcnQgeyBCaWdudW1iZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2JpZ251bWJlci1maWVsZCc7XG5pbXBvcnQgeyBOdW1iZXJGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL251bWJlci1maWVsZCc7XG5pbXBvcnQgeyBDdXJyZW5jeUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZHMvY3VycmVuY3ktZmllbGQnO1xuaW1wb3J0IHsgVGV4dEZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZHMvdGV4dC1maWVsZCc7XG5pbXBvcnQgeyBEeW5hbWljVHlwZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcbmltcG9ydCB7IER5bmFtaWNTdHJ1Y3R1cmUgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvc3RydWN0dXJlJztcbmltcG9ydCB7IFRlbXBsYXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy90ZW1wbGF0ZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQXV0b0NvbXBsZXRlTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIER5bmFtaWNGb3JtQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIEVtcHR5U3RhdGVNb2R1bGUsXG4gICAgICAgIFRhYmxlTW9kdWxlLFxuICAgICAgICBMb2FkaW5nU3RhdGVNb2R1bGUsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTG9jYWxlTW9kdWxlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBCYWRnZU1vZHVsZSxcbiAgICAgICAgTWFza0Zvcm1hdHRlck1vZHVsZSxcbiAgICAgICAgTmdTd2l0Y2gsXG4gICAgICAgIFRhYmxlSGVhZGVyQ2hlY2tib3hNb2R1bGUsXG4gICAgICAgIFRlbXBsYXRlTW9kdWxlLFxuICAgIF0sXG4gICAgc2VsZWN0b3I6ICdzLWxvb2t1cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xvb2t1cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbG9va3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTG9va3VwQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2NvbGxhcHNlQ29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJyonLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3Zpc2libGUgPD0+IGhpZGRlbicsIFtcbiAgICAgICAgICAgICAgICBncm91cChbcXVlcnkoJ0BjaGlsZENvbGxhcHNlQ29udGVudCcsIGFuaW1hdGVDaGlsZCgpKSwgYW5pbWF0ZSgne3t0cmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgIF0pLFxuICAgICAgICB0cmlnZ2VyKCdjaGlsZENvbGxhcHNlQ29udGVudCcsIFtcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICc6bGVhdmUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnOmVudGVyJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA8PT4gKicsIGFuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JykpLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBMb29rdXBDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBNQVBfRk9STV9ESUFMT0dfQ09OVFJPTFMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9va3VwRGlhbG9nQ29udGFpbmVyID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignZGlhbG9nQ29udGFpbmVyJyk7XG4gICAgcHJvdGVjdGVkIHJvd1R5cGUgPSAnUm93JztcbiAgICBwdWJsaWMgaW5kaWNhdG9yTG9nbyA9IExvYWRpbmdTdGF0ZUluZGljYXRvcnMuTG9nbztcbiAgICBwdWJsaWMgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtQ29udHJvbE5hbWU/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBzLWxvb2t1cC0ke0xvb2t1cENvbXBvbmVudC5uZXh0SWQrK31gO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlRm9yY2VTZWxlY3Rpb24gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4bGVuZ3RoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkYXRhS2V5ITogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dTZWFyY2ggPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwU3VnZ2VzdGlvbnM6IGFueVtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBEaXNwbGF5RmllbGQ/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBEaXNwbGF5RmllbGRUb29sdGlwID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBFbXB0eU1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB2YWx1ZSA/PyAnYm9keScgfSlcbiAgICBwdWJsaWMgbG9va3VwQXBwZW5kVG8/ID0gJ2JvZHknO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoRW1wdHlEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaEdyaWREYXRhOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2VhcmNoVG90YWxSZWNvcmRzID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaEZpZWxkczogKER5bmFtaWNUeXBlICYgeyBjdXN0b21OYW1lPzogc3RyaW5nIH0pW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaEdyaWRGaWVsZHM6IER5bmFtaWNUeXBlW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG11bHRpU29ydE1ldGE6IFNvcnRNZXRhW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc29ydGFibGVDb2x1bW5zRGlzYWJsZWQ6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsb29rdXBSb3dQcm9wczogc3RyaW5nW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRGaWx0ZXI6IERlZmF1bHRGaWx0ZXJbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FkZE9wdGlvbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0VkaXRPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dSZW1vdmVPcHRpb24gPSBmYWxzZTtcblxuICAgIGRpYWxvZ0Z1bGxTY3JlZW4gPSBpbnB1dChmYWxzZSk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBwdWJsaWMgb25Mb29rdXBSZXF1ZXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uU2VhcmNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbktleVVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uVW5zZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBwdWJsaWMgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkFkZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBwdWJsaWMgb25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd25bXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkNsZWFyQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKFRhYmxlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgdGFibGU6IFRhYmxlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAVmlld0NoaWxkKEF1dG9Db21wbGV0ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZTogQXV0b0NvbXBsZXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbE9wdGlvbnM/OiBQYXJ0aWFsPExhYmVsT3B0aW9ucz47XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICAgIHB1YmxpYyBhbmltYXRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cERpYWxvZyE6IEZvcm1Hcm91cDxhbnk+O1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uT3B0aW9ucyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuXG4gICAgcHJvdGVjdGVkIHNlYXJjaEZpZWxkc0R5bmFtaWNTdHJ1Y3R1cmU6IER5bmFtaWNTdHJ1Y3R1cmVbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZT86IEZ1bmN0aW9uO1xuICAgIHByaXZhdGUgb25Ub3VjaGVkPzogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEZvcm1WYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaG90a2V5c1NlcnZpY2U6IEhvdGtleXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hHcmlkRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hHcmlkRmllbGRzID0gdGhpcy5zZWFyY2hGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGaWVsZHMgPSB0aGlzLnNlYXJjaEZpZWxkcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdmFsdWUubmFtZS5yZXBsYWNlQWxsKCcuJywgJ18nKTtcbiAgICAgICAgICAgIHRoaXMuTUFQX0ZPUk1fRElBTE9HX0NPTlRST0xTLnNldCh2YWx1ZS5uYW1lLCBuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3VzdG9tTmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRzRHluYW1pY1N0cnVjdHVyZSA9IGR5bmFtaWNUeXBlVG9EeW5hbWljU3RydWN0dXJlKFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZHMubWFwKChzZWFyY2hGaWVsZDogRXhwYW5kZWREeW5hbWljVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkLnNpemUgPSB7IHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIsIHhsOiAxMiB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnNlYXJjaEZpZWxkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNlYXJjaEdyaWRGaWVsZHMgPSB0aGlzLnNlYXJjaEdyaWRGaWVsZHMubWFwKChncmlkRmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyaWRUeXBlID0gZ3JpZEZpZWxkLnR5cGU7XG4gICAgICAgICAgICBpZiAoZ3JpZEZpZWxkLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgKGdyaWRGaWVsZCBhcyBhbnkpWyd3aWR0aCddID0gdGhpcy5nZXRDb2xXaWR0aChncmlkRmllbGQubGFiZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZ3JpZFR5cGUgPT09ICdkYXRlJyB8fCBncmlkVHlwZSA9PT0gJ3RpbWUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsZW5kYXJPcHRpb25zID0gbmV3IENhbGVuZGFyTG9jYWxlT3B0aW9ucyh7IC4uLmdyaWRGaWVsZC5jYWxlbmRhckxvY2FsZU9wdGlvbnMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FsZW5kYXJPcHRpb25zPy5kYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ3JpZEZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5kYXRlRm9ybWF0ID0gdGhpcy5fY29udmVydFRvTW9tZW50RGF0ZUZvcm1hdChjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5ob3VyRm9ybWF0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJPcHRpb25zLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBncmlkRmllbGQuY2FsZW5kYXJMb2NhbGVPcHRpb25zID0gY2FsZW5kYXJPcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGdyaWRGaWVsZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5zZWFyY2hGaWVsZHMucmVkdWNlKChyZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5jdXN0b21OYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gJ2RlZmF1bHRWYWx1ZScgaW4gZmllbGQgPyBmaWVsZC5kZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICByZXN1bHRbZmllbGQuY3VzdG9tTmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRm9ybVZhbHVlc1tmaWVsZC5jdXN0b21OYW1lXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZyA9IG5ldyBGb3JtR3JvdXAoZm9ybUdyb3VwKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnRSZWNvcmRUb3RhbGl6ZXIoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxPcHRpb25zPy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxPcHRpb25zPy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlY29yZExhYmVsID0gdGhpcy5sYWJlbE9wdGlvbnM/LnJlY29yZExhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMubGFiZWxPcHRpb25zPy5yZWNvcmRMYWJlbH1gXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3JkJywge1xuICAgICAgICAgICAgICAgICAgY291bnQ6IHRoaXMuc2VhcmNoVG90YWxSZWNvcmRzLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWNvcmRzTGFiZWwgPSB0aGlzLmxhYmVsT3B0aW9ucz8ucmVjb3Jkc0xhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMubGFiZWxPcHRpb25zPy5yZWNvcmRzTGFiZWx9YFxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnLCB7XG4gICAgICAgICAgICAgICAgICBjb3VudDogdGhpcy5zZWFyY2hUb3RhbFJlY29yZHMsXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFRvdGFsUmVjb3JkcyA9PT0gMSA/IHJlY29yZExhYmVsIDogcmVjb3Jkc0xhYmVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoaG91ckZvcm1hdDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZykge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGQvbW0veXknKSB7XG4gICAgICAgICAgICAvLyB2YWxvciBwYWRyw6NvIHBhcmEgbyBmb3JtYXQuXG4gICAgICAgICAgICByZXR1cm4gJ0xUUyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG91ckZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJIXFxiLywgJ2gnKSAvLyBob3VyICgxMiBob3VyIHRpbWUpIChubyBsZWFkaW5nIHplcm8pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYkhIXFxiLywgJ2hoJyk7IC8vIGhvdXIgKDEyIGhvdXIgdGltZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3VyRm9ybWF0ID09PSAnMjQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0XG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmhcXGIvLCAnSCcpIC8vIGhvdXIgKDI0IGhvdXIgdGltZSkgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiaGhcXGIvLCAnSEgnKTsgLy8gaG91ciAoMjQgaG91ciB0aW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9Nb21lbnREYXRlRm9ybWF0KGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gQSBvcmRlbSBkb3MgcmVwbGFjZXMgw6kgaW1wb3J0YW50ZS5cbiAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmRcXGIvLCAnRCcpIC8vIGRheSBvZiBtb250aCAobm8gbGVhZGluZyB6ZXJvKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmRkXFxiLywgJ0REJykgLy8gZGF5IG9mIG1vbnRoXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxib1xcYi8sICdEREQnKSAvLyBkYXkgb2YgdGhlIHllYXIgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJvb1xcYi8sICdEREREJykgLy8gZGF5IG9mIHRoZSB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTVxcYi8sICdNTU0nKSAvLyBtb250aCBuYW1lIHNob3J0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTU1cXGIvLCAnTU1NTScpIC8vIG1vbnRoIG5hbWUgbG9uZ1xuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm1cXGIvLCAnTScpIC8vIG1vbnRoIG9mIHllYXIgKG5vIGxlYWRpbmcpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxibW1cXGIvLCAnTU0nKSAvLyBtb250aCBvZiB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieVxcYi8sICdZWScpIC8vIHllYXIgKHR3byBkaWdpdHMpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieXlcXGIvLCAnWVlZWScpOyAvLyB5ZWFyIChmb3VyIGRpZ2l0cylcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dWaXNpYmxlICYmIGNoYW5nZXNbJ3NlYXJjaEdyaWREYXRhJ10pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0Rm9jdXNGaWx0ZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcmlkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoR3JpZERhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExvb2t1cFN1Z2dlc3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBTdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbWFrZVNlYXJjaFJlcXVlc3RQYXJhbXMoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5mb3JtR3JvdXBEaWFsb2c/LmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG1hcHBlZE9iamVjdENoYW5nZXMgPVxuICAgICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLk1BUF9GT1JNX0RJQUxPR19DT05UUk9MUy5lbnRyaWVzKCkpLm1hcCgoW2ZpZWxkLCBjdXN0b21OYW1lXSkgPT4gKHsgZmllbGQsIGN1c3RvbU5hbWUgfSkpID8/XG4gICAgICAgICAgICBbXTtcbiAgICAgICAgbWFwcGVkT2JqZWN0Q2hhbmdlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlcnNbaXRlbS5jdXN0b21OYW1lXTtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJzW2l0ZW0uY3VzdG9tTmFtZV07XG4gICAgICAgICAgICBmaWx0ZXJzW2l0ZW0uZmllbGRdID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLmV2ZW50LCBmaWx0ZXJEYXRhOiBmaWx0ZXJzIH07XG4gICAgICAgIGNvbnN0IHsgbXVsdGlTb3J0TWV0YSB9ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMubXVsdGlTb3J0TWV0YSA9IG11bHRpU29ydE1ldGEgfHwgdGhpcy5tdWx0aVNvcnRNZXRhO1xuXG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGxhenlMb2FkR3JpZChldmVudDogYW55KSB7XG4gICAgICAgIC8vIEFvIGRlZmluaXIgdW1hIG9yZGVuYcOnw6NvIG5hIHRhYmVsYSBkbyBsb29rdXAgZXNzZSBtw6l0b2RvIMOpIGNoYW1hZG8gMiB2ZXplcyBodHRwczovL2dpdGh1Yi5jb20vcHJpbWVmYWNlcy9wcmltZW5nL2lzc3Vlcy81NDgwXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMubWFrZVNlYXJjaFJlcXVlc3RQYXJhbXMoZXZlbnQpO1xuICAgICAgICB0aGlzLm9uU2VhcmNoUmVxdWVzdC5uZXh0KHBhcmFtcyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29tcGxldGVNZXRob2QoZXZlbnQ6IEF1dG9Db21wbGV0ZUNvbXBsZXRlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZUZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odGhpcy52YWx1ZSA9PT0gJycgPyBudWxsIDogdGhpcy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uTG9va3VwUmVxdWVzdC5uZXh0KGV2ZW50LnF1ZXJ5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEZpbHRlcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0RmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJlZFZhbHVlcyA9IHRoaXMuZGVmYXVsdEZpbHRlci5maWx0ZXIoKHsgZmllbGQgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xOYW1lID0gdGhpcy5NQVBfRk9STV9ESUFMT0dfQ09OVFJPTFMuZ2V0KGZpZWxkKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCBoYXNGb3JtQ29udHJvbCA9IHRoaXMuZm9ybUdyb3VwRGlhbG9nLmNvbnRhaW5zKGZvcm1Db250cm9sTmFtZSk7XG4gICAgICAgICAgICBjb25zdCBpc0RpcnR5ID0gdGhpcy5mb3JtR3JvdXBEaWFsb2cuZ2V0KGZvcm1Db250cm9sTmFtZSk/LmRpcnR5O1xuICAgICAgICAgICAgcmV0dXJuIGhhc0Zvcm1Db250cm9sICYmICFpc0RpcnR5O1xuICAgICAgICB9KTtcblxuICAgICAgICBmaWx0ZXJlZFZhbHVlcy5mb3JFYWNoKCh7IHZhbHVlLCBmaWVsZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbE5hbWUgPSB0aGlzLk1BUF9GT1JNX0RJQUxPR19DT05UUk9MUy5nZXQoZmllbGQpIGFzIHN0cmluZztcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwRGlhbG9nLmdldChmb3JtQ29udHJvbE5hbWUpPy5wYXRjaFZhbHVlKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyB2YWx1ZSgpIDogdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAQ2hlY2tEaXNhYmxlZCgpXG4gICAgcHVibGljIGFzeW5jIHNob3dEaWFsb2coKSB7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEZpbHRlcnMoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hHcmlkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZD8uKCk7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UucGF1c2UoWy4uLnRoaXMuaG90a2V5c1NlcnZpY2UuaG90a2V5c10pO1xuICAgICAgICB0aGlzLnNldEhvdGtleXMoKTtcblxuICAgICAgICBsZXQgc2VsZWN0ZWQ6IGFueSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkLmNvbmNhdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZCA9IFt0aGlzLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRJbnB1dHMoY29tcG9uZW50UmVmOiBhbnksIGNvbmZpZ3M6IGFueSwgZm9ybTogYW55KSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWdzID0gY29uZmlncztcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmZvcm0gPSBmb3JtO1xuXG4gICAgICAgIC8vIGNoYW1lIG5nT25DaGFuZ2VzIG1hbnVhbG1lbnRlIHNlIG5lY2Vzc8OhcmlvXG4gICAgICAgIGlmICh0eXBlb2YgY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVmlzaWJsZUNoYW5nZSh2aXNpYmlsaXR5U3RhdGU6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHZpc2liaWxpdHlTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cbiAgICBwdWJsaWMgaGlkZURpYWxvZygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgaW5wdXRFTCwgbXVsdGlJbnB1dEVsIH0gPSB0aGlzLmF1dG9jb21wbGV0ZTtcbiAgICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaG90a2V5c1NlcnZpY2UudW5wYXVzZShbLi4udGhpcy5ob3RrZXlzU2VydmljZS5wYXVzZWRIb3RrZXlzXSk7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBtdWx0aUlucHV0RWw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dEVMPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXBEaWFsb2cucmVzZXQodGhpcy5vcmlnaW5hbEZvcm1WYWx1ZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goKSB7XG4gICAgICAgIHRoaXMucmVzZXRUYWJsZSgpO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGRpYWxvZ0NvbnRhaW5lciA9IHRoaXMubG9va3VwRGlhbG9nQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChkaWFsb2dDb250YWluZXIpIHtcbiAgICAgICAgICAgIGRpYWxvZ0NvbnRhaW5lci5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBEaWFsb2c/LnJlc2V0KHRoaXMub3JpZ2luYWxGb3JtVmFsdWVzKTtcbiAgICAgICAgdGhpcy5yZXNldFRhYmxlKCk7XG4gICAgICAgIHRoaXMub25DbGVhckJ1dHRvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVzZXRUYWJsZSgpIHtcbiAgICAgICAgdGhpcy50YWJsZT8ucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0KCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkICYmICh0aGlzLm11bHRpcGxlID8gdGhpcy5zZWxlY3RlZCA6IHRoaXMuc2VsZWN0ZWRbMF0pO1xuICAgICAgICB0aGlzLnZhbHVlID0gc2VsZWN0ZWQ7XG4gICAgICAgIHRoaXMub25TZWxlY3QubmV4dChzZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaGlkZURpYWxvZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZShzZWxlY3RlZDogYW55KSB7XG4gICAgICAgIGlmICghc2VsZWN0ZWQpIHJldHVybjtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0ZWQpKSB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIGVsc2UgdGhpcy5zZWxlY3RlZCA9IFtzZWxlY3RlZF07XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpZWxkVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgocmVzdWx0LCBwcm9wKSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyAnJyA6IHJlc3VsdFtwcm9wXSksIG9iaik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJhZGdlRnJvbVZhbHVlKHZhbHVlOiB1bmtub3duLCBmaWVsZDogU2VsZWN0RmllbGRDb25maWcpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHR5cGVvZiBmaWVsZC5vcHRpb25zID09PSAnZnVuY3Rpb24nID8gZmllbGQub3B0aW9ucygpIDogZmllbGQub3B0aW9ucztcbiAgICAgICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQoKG9wdCkgPT4gb3B0LnZhbHVlID09PSB2YWx1ZSk/LmJhZGdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMYWJlbEZvclZhbHVlKHZhbHVlOiB1bmtub3duLCBmaWVsZDogU2VsZWN0RmllbGRDb25maWcpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHR5cGVvZiBmaWVsZC5vcHRpb25zID09PSAnZnVuY3Rpb24nID8gZmllbGQub3B0aW9ucygpIDogZmllbGQub3B0aW9ucztcbiAgICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gYCR7dmFsdWV9YDtcblxuICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LnZhbHVlID09PSB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBvcHRpb24gPyBvcHRpb24ubGFiZWwgOiBgJHt2YWx1ZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0Jvb2xlYW5WYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGRXaWR0aChjb2w6IGFueSkge1xuICAgICAgICByZXR1cm4gY29sLndpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCb29sZWFuTGFiZWwob2JqOiBhbnksIHBhdGg6IHN0cmluZywgb3B0aW9uc0xhYmVsOiBCb29sZWFuT3B0aW9uc0xhYmVsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghb3B0aW9uc0xhYmVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZ2V0RmllbGRWYWx1ZShvYmosIHBhdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uc0xhYmVsLnRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9uc0xhYmVsLmZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzTnVtYmVyKG9iajogYW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICFuZXcgQmlnTnVtYmVyKHRoaXMuZ2V0RmllbGRWYWx1ZShvYmosIHBhdGgpKS5pc05hTigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRIb3RrZXlzKCkge1xuICAgICAgICBjb25zdCBjbGVhckhvdGtleSA9IHRoaXMubmV3SG90a2V5KCdhbHQrc2hpZnQrbCcsIHRoaXMuY2xlYXIuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IGZpbmRIb3RrZXkgPSB0aGlzLm5ld0hvdGtleSgnYWx0K3NoaWZ0K2YnLCB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpKTtcbiAgICAgICAgY29uc3QgaGlkZUhvdGtleSA9IHRoaXMubmV3SG90a2V5KCdhbHQrc2hpZnQrYycsIHRoaXMuaGlkZURpYWxvZy5iaW5kKHRoaXMpKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0SG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoJ2FsdCtzaGlmdCtzJywgdGhpcy5zZWxlY3QuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgY29uc3QgYmluZGVkSG90a2V5cyA9IFtjbGVhckhvdGtleSwgZmluZEhvdGtleSwgaGlkZUhvdGtleSwgc2VsZWN0SG90a2V5XTtcbiAgICAgICAgYmluZGVkSG90a2V5cy5mb3JFYWNoKChob3RrZXk6IEhvdGtleSkgPT4gdGhpcy5ob3RrZXlzU2VydmljZS5hZGQoaG90a2V5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBuZXdIb3RrZXkoY29tYm86IHN0cmluZywgZm46IEZ1bmN0aW9uKTogSG90a2V5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBIb3RrZXkoY29tYm8sICgpID0+IHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0sIFsnSU5QVVQnLCAnU0VMRUNUJywgJ1RFWFRBUkVBJ10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJUb2dnbGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmFuaW1hdGluZykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSAhdGhpcy5jb2xsYXBzZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG9nZ2xlRG9uZSgpIHtcbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGUgdGhlIHRhYmxlIGNvbHVtbiBzaXplLiBUaGUgbWluaW11bSB2YWx1ZSBpcyAxNC4yODZlbSwgd2hpY2ggaXMgZXF1YWxzIHRvIDIwMHB4IGR1byB0byB0aGUgY3VycmVudCBmb250IHNpemUuXG4gICAgICogQHBhcmFtIGxhYmVsIENvbHVtbiBuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2xXaWR0aChsYWJlbDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBsYWJlbC5sZW5ndGg7XG4gICAgICAgIGlmIChzaXplIDwgMTQuMjg2KSByZXR1cm4gYDE0LjI4NmVtYDtcbiAgICAgICAgcmV0dXJuIGAke3NpemV9ZW1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY2FsZShzY2FsZTogYW55KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNGdW5jdGlvbihzY2FsZSkgPyBzY2FsZSgpIDogc2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0Z1bmN0aW9uKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldERvdWJsZU1hc2tDb25maWcoY29sOiBOdW1iZXJGaWVsZENvbmZpZyB8IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6ICcnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNb25leU1hc2tDb25maWcoY29sOiBDdXJyZW5jeUZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW50ZWdlck1hc2tDb25maWcoY29sOiBCaWdudW1iZXJGaWVsZENvbmZpZyB8IE51bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogMCxcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE51bWJlck1hc2tDb25maWcoY29sOiBOdW1iZXJGaWVsZENvbmZpZyB8IEJpZ251bWJlckZpZWxkQ29uZmlnKTogTWFza0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY2FsZTogdGhpcy5nZXRTY2FsZShjb2wuc2NhbGUpLFxuICAgICAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgICAgICB0aG91c2FuZHNTZXBhcmF0b3I6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBwcmVmaXg6IGNvbC5udW1iZXJMb2NhbGVPcHRpb25zPy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2VWYWx1ZU1hc2tWYWx1ZShjb2w6IER5bmFtaWNUeXBlLCByb3dEYXRhOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuZmllbGRIYXNNYXNrKGNvbCkpIHtcbiAgICAgICAgICAgIGNvbnN0IF9tYXNrID0gY29sLm1hc2s7XG4gICAgICAgICAgICBjb25zdCBpc0Z1bmN0aW9uID0gdGhpcy5pc0Z1bmN0aW9uKF9tYXNrKTtcbiAgICAgICAgICAgIHJldHVybiBpc0Z1bmN0aW9uID8gKF9tYXNrIGFzIEZ1bmN0aW9uKSh7IHZhbHVlOiByb3dEYXRhIH0pIDogX21hc2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZmllbGRIYXNNYXNrKGZpZWxkOiBEeW5hbWljVHlwZSk6IGZpZWxkIGlzIE51bWJlckZpZWxkQ29uZmlnIHwgQmlnbnVtYmVyRmllbGRDb25maWcgfCBUZXh0RmllbGRDb25maWcge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ2ludGVnZXInIHx8XG4gICAgICAgICAgICBmaWVsZC50eXBlID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ2RvdWJsZScgfHxcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICAgICBmaWVsZC50eXBlID09PSAnYmluYXJ5J1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRhYmxlUm93RG91YmxlQ2xpY2socm93RGF0YTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBbcm93RGF0YV07XG4gICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2V0Rm9jdXNGaWx0ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ1Zpc2libGUgJiYgIXRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMubG9va3VwRGlhbG9nQ29udGFpbmVyKCk/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgIChpbnB1dCBhcyBIVE1MSW5wdXRFbGVtZW50KS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uU2VhcmNoUmVxdWVzdC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKTtcblxuICAgICAgICB0aGlzLm9uU2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlPy4odGhpcy52YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMub25VbnNlbGVjdC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vbkNoYW5nZT8uKHRoaXMudmFsdWUpKTtcblxuICAgICAgICB0aGlzLm9uQ2xlYXIucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZT8uKG51bGwpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uRm9jdXMucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vbkJsdXIucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh0aGlzLmxvb2t1cERpc3BsYXlGaWVsZCkpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWVbdGhpcy5sb29rdXBEaXNwbGF5RmllbGRdO1xuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZSB9ID0gdGFyZ2V0O1xuXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSB8fCAhY3VycmVudFZhbHVlIHx8IGN1cnJlbnRWYWx1ZSA9PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlPy4obmV3VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbk9wdGlvbnNMYWJlbENvbmZpZyB7XG4gICAgdHJ1ZTogc3RyaW5nO1xuICAgIGZhbHNlOiBzdHJpbmc7XG4gICAgZW1wdHk/OiBzdHJpbmc7XG4gICAgY2xlYXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBCb29sZWFuT3B0aW9uc0xhYmVsIHtcbiAgICBwdWJsaWMgdHJ1ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBmYWxzZTogc3RyaW5nO1xuICAgIHB1YmxpYyBlbXB0eT86IHN0cmluZztcbiAgICBwdWJsaWMgY2xlYXI/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IEJvb2xlYW5PcHRpb25zTGFiZWxDb25maWcpIHtcbiAgICAgICAgdGhpcy50cnVlID0gY29uZmlnLnRydWU7XG4gICAgICAgIHRoaXMuZmFsc2UgPSBjb25maWcuZmFsc2U7XG4gICAgICAgIHRoaXMuZW1wdHkgPSBjb25maWcuZW1wdHk7XG4gICAgICAgIHRoaXMuY2xlYXIgPSBjb25maWcuY2xlYXI7XG4gICAgfVxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJ7IGlucHV0Z3JvdXA6IHNob3dTZWFyY2gsICduYXRpdmUtZHJvcGRvd24nOiAhc2hvd1NlYXJjaCB9XCI+XG4gICAgPHAtYXV0b0NvbXBsZXRlXG4gICAgICAgICNhdXRvY29tcGxldGVcbiAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtkYXRhS2V5XT1cImRhdGFLZXlcIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICBbaW5wdXRJZF09XCJpZCArICctYXV0b2NvbXBsZXRlJ1wiXG4gICAgICAgIFtmb3JjZVNlbGVjdGlvbl09XCJhdXRvY29tcGxldGVGb3JjZVNlbGVjdGlvblwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCJcbiAgICAgICAgW3N1Z2dlc3Rpb25zXT1cImdldExvb2t1cFN1Z2dlc3Rpb25zKClcIlxuICAgICAgICAoY29tcGxldGVNZXRob2QpPVwib25Db21wbGV0ZU1ldGhvZCgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgIChvbkJsdXIpPVwib25CbHVyLm5leHQoJGV2ZW50KVwiXG4gICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uVW5zZWxlY3QpPVwib25VbnNlbGVjdC5uZXh0KCRldmVudClcIlxuICAgICAgICAob25DbGVhcik9XCJvbkNsZWFyLm5leHQoJGV2ZW50KVwiXG4gICAgICAgIChvbktleVVwKT1cIm9uS2V5VXAubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgW2ZpZWxkXT1cImxvb2t1cERpc3BsYXlGaWVsZFwiXG4gICAgICAgIFtlbXB0eU1lc3NhZ2VdPVwibG9va3VwRW1wdHlNZXNzYWdlXCJcbiAgICAgICAgW2Ryb3Bkb3duXT1cIiFzaG93U2VhcmNoXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cImxvb2t1cEFwcGVuZFRvXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcgJ1wiXG4gICAgICAgIFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxuICAgICAgICBpbnB1dFN0eWxlQ2xhc3M9XCJtb3VzZXRyYXBcIlxuICAgID5cbiAgICA8L3AtYXV0b0NvbXBsZXRlPlxuICAgIEBpZiAoc2hvd1NlYXJjaCkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1hZGRvblwiXG4gICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWFkZG9uLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEaWFsb2coKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG48L2Rpdj5cblxuPHMtZGlhbG9nXG4gICAgWyh2aXNpYmxlKV09XCJkaWFsb2dWaXNpYmxlXCJcbiAgICAodmlzaWJsZUNoYW5nZSk9XCJvblZpc2libGVDaGFuZ2UoJGV2ZW50ISlcIlxuICAgIFtoZWFkZXJdPVwibGFiZWxPcHRpb25zPy5zZWFyY2hUaXRsZSB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmFkdmFuY2VkX3NlYXJjaCcgfCB0cmFuc2xhdGVcIlxuICAgIGNvbnRlbnRDbGFzc05hbWU9XCJzLWxvb2t1cC1tb2RhbFwiXG4gICAgW3NpemVdPVwiZGlhbG9nRnVsbFNjcmVlbigpID8gJ2Z1bGxzY3JlZW4nIDogJ3hsJ1wiXG4+XG4gICAgQGlmIChkaWFsb2dWaXNpYmxlKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicy1sb29rdXAtbW9kYWwtY29udGFpbmVyXCJcbiAgICAgICAgICAgICNkaWFsb2dDb250YWluZXJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChzZWFyY2hGaWVsZHMgJiYgc2VhcmNoRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICBbQGNvbGxhcHNlQ29udGVudF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyB2YWx1ZTogJ2hpZGRlbicsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucyB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRyYW5zaXRpb25PcHRpb25zIH0gfVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAoQGNvbGxhcHNlQ29udGVudC5kb25lKT1cIm9uVG9nZ2xlRG9uZSgpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cERpYWxvZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBub3ZhbGlkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFjb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BjaGlsZENvbGxhcHNlQ29udGVudF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8geyB2YWx1ZTogJzpsZWF2ZScsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucyB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHsgdmFsdWU6ICc6ZW50ZXInLCBwYXJhbXM6IHsgdHJhbnNpdGlvblBhcmFtczogdHJhbnNpdGlvbk9wdGlvbnMgfSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRpdGxlIHNkcy1zZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbE9wdGlvbnM/LmZpbHRlclRpdGxlIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZmlsdGVycycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtZHluYW1pYy1mb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ3NdPVwic2VhcmNoRmllbGRzRHluYW1pY1N0cnVjdHVyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybUdyb3VwRGlhbG9nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1keW5hbWljLWZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpLWctMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1maWx0ZXItYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9wdGlvbnM/LmZpbHRlckxhYmVsIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuZmlsdGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1Rvb2x0aXA9XCIoQUxUICsgU0hJRlQgKyBGKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctY2xlYXItYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9wdGlvbnM/LmNsZWFyTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jbGVhcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJjbGVhcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1Rvb2x0aXA9XCIoQUxUICsgU0hJRlQgKyBMKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2VhcmNoRmllbGRzICYmIHNlYXJjaEZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRvZ2dsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWZpbHRlci10b2dnbGUtYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJUb2dnbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZmEtY2hldnJvbi1sZWZ0JzogIWNvbGxhcHNlZCwgJ2ZhLWNoZXZyb24tcmlnaHQnOiBjb2xsYXBzZWQgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbGV0IGlzRW1wdHlDb250ZW50ID0gIXNlYXJjaFRvdGFsUmVjb3JkcyAmJiAhbG9hZGluZztcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICNjb250ZW50Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnZW1wdHktY29udGVudCc6IGlzRW1wdHlDb250ZW50IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFbXB0eUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgPHMtZW1wdHktc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctZW1wdHktc3RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbE9wdGlvbnM/LnNlYXJjaEVtcHR5VGl0bGUgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5ub19yZWNvcmRzX2ZvdW5kJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCJzZWFyY2hFbXB0eURlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz1cImZhIGZhLXNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9zLWVtcHR5LXN0YXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jaGlsZFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC10YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFLZXldPVwiZGF0YUtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0R3JpZERhdGEoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJzZWFyY2hHcmlkRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYXp5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydE1vZGU9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG90YWxSZWNvcmRzXT1cInNlYXJjaFRvdGFsUmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0aW9uXT1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkxhenlMb2FkKT1cImxhenlMb2FkR3JpZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aVNvcnRNZXRhXT1cIm11bHRpU29ydE1ldGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1oaWRkZW5dPVwiIXNlYXJjaFRvdGFsUmVjb3JkcyAmJiAhbG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJtdWx0aXBsZSA/ICdtdWx0aXBsZScgOiAnc2luZ2xlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKnNMb2FkaW5nU3RhdGU9XCJ7IGxvYWRpbmc6IGxvYWRpbmcsIGluZGljYXRvcjogaW5kaWNhdG9yTG9nbyB9XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dBZGRPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYWRkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25BZGQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93RWRpdE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5lZGl0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkLmxlbmd0aCAhPT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25FZGl0LmVtaXQodGhpcy5zZWxlY3RlZFswXSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dSZW1vdmVPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMucmVtb3ZlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm9uUmVtb3ZlLmVtaXQodGhpcy5zZWxlY3RlZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImNvbGdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2xncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbCBzdHlsZT1cIndpZHRoOiA1MHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2wgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvbGdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBUZW1wbGF0ZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LWNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiA1MHB4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtdGFibGUtaGVhZGVyLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VBbGxPYmplY3RdPVwibG9va3VwUm93UHJvcHMgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm93UHJvcHNdPVwibG9va3VwUm93UHJvcHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtdGFibGUtaGVhZGVyLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uRGlzYWJsZWRdPVwic29ydGFibGVDb2x1bW5zRGlzYWJsZWQuaW5jbHVkZXMoY29sLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VuaW9yLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbmlvci1oZWFkZXItdGl0bGVcIj57eyBjb2wubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXNvcnRhYmxlQ29sdW1uc0Rpc2FibGVkLmluY2x1ZGVzKGNvbC5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gW2ZpZWxkXT1cImNvbC5uYW1lXCI+IDwvcC1zb3J0SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LXJvd0RhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc05hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93XT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNlbGVjdGFibGVSb3dJbmRleF09XCJyb3dJbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNEb3VibGVDbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Eb3VibGVDbGljayk9XCJvblRhYmxlUm93RG91YmxlQ2xpY2socm93RGF0YSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC10YWJsZUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93XT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGVDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIHNlYXJjaEdyaWRGaWVsZHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImdldEZpZWxkV2lkdGgoY29sKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3dpdGNoXT1cImNvbC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKGNvbC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnYm9vbGVhbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQm9vbGVhblZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCb29sZWFuTGFiZWwocm93RGF0YSwgY29sLm5hbWUsIGNvbC5vcHRpb25zTGFiZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGl6ZWREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wuY2FsZW5kYXJMb2NhbGVPcHRpb25zPy5kYXRlRm9ybWF0IHx8ICdMJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdkYXRlVGltZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpIHwgbG9jYWxpemVkRGF0ZSB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2xvY2FsRGF0ZVRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSB8IGxvY2FsaXplZERhdGUgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0aW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSk7IGVsc2UgZW1wdHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxpemVkVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY29sLmNhbGVuZGFyTG9jYWxlT3B0aW9ucz8uZGF0ZUZvcm1hdCB8fCAnTFRTJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdpbnRlZ2VyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTnVtYmVyKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxpemVkQmlnbnVtYmVyOiBnZXRJbnRlZ2VyTWFza0NvbmZpZyhjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZG91YmxlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTnVtYmVyKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxpemVkQmlnbnVtYmVyOiBnZXREb3VibGVNYXNrQ29uZmlnKGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdtb25leScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc051bWJlcihyb3dEYXRhLCBjb2wubmFtZSk7IGVsc2UgZW1wdHlUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZEJpZ251bWJlcjogZ2V0TW9uZXlNYXNrQ29uZmlnKGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOdW1iZXIocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGl6ZWRCaWdudW1iZXI6IGdldE51bWJlck1hc2tDb25maWcoY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxGb3JWYWx1ZShnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSwgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlbXB0eVRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCYWRnZUZyb21WYWx1ZShnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSwgY29sKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gd2l0aEJhZGdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB3aXRob3V0QmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN3aXRoQmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMYWJlbEZvclZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJhZGdlRnJvbVZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCYWRnZUZyb21WYWx1ZShnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSwgY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkNsYXNzXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJhZGdlRnJvbVZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uaWNvbkNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCYWRnZUZyb21WYWx1ZShnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSwgY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lmljb25Qb3NpdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhvdXRCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExhYmVsRm9yVmFsdWUoZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSksIGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChmaWVsZEhhc01hc2soY29sKSAmJiBwYXJzZVZhbHVlTWFza1ZhbHVlKGNvbCwgcm93RGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bWJlcihyb3dEYXRhLCBjb2wubmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNNYXNrRm9ybWF0dGVyOiBwYXJzZVZhbHVlTWFza1ZhbHVlKGNvbCwgcm93RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc051bWJlcihyb3dEYXRhLCBjb2wubmFtZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgZW1wdHlUZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicGFnaW5hdG9ycmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5kYXRhLWhpZGRlbl09XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByaW50UmVjb3JkVG90YWxpemVyKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHNUZW1wbGF0ZT1cImZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktZW5kXCI+XG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctY2FuY2VsLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJsaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsT3B0aW9ucz8uY2FuY2VsTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5jYW5jZWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwiaGlkZURpYWxvZygpXCJcbiAgICAgICAgICAgICAgICAgICAgc1Rvb2x0aXA9XCIoQUxUICsgU0hJRlQgKyBDKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctc2VsZWN0LWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsT3B0aW9ucz8uc2VsZWN0TGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5zZWxlY3QnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic2VsZWN0KClcIlxuICAgICAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIFMpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzZWxlY3RlZC5sZW5ndGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuPC9zLWRpYWxvZz5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVRlbXBsYXRlPlxuICAgIDxzcGFuIGNsYXNzPVwic2RzLWVtcHR5LXZhbHVlXCI+XG4gICAgICAgIHt7IGxhYmVsT3B0aW9ucz8uZW1wdHlGaWVsZExhYmVsIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMubm90X2luZm9ybWVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbiJdfQ==
701
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9sb29rdXAvbG9va3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9sb29rdXAvbG9va3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdHLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUgsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUN0QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRCxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsS0FBSyxFQUFzQixXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxF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Mk5PLFVBQVU7QUE2UzNCLE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFTO0lBQ2QsS0FBSyxDQUFVO0lBQ2YsS0FBSyxDQUFVO0lBRXRCLFlBQVksTUFBaUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGFuaW1hdGVDaGlsZCwgZ3JvdXAsIHF1ZXJ5LCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5wdXQsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgdmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWFza0NvbmZpZyB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9uZzItY3VycmVuY3ktbWFzayc7XG5pbXBvcnQgeyBIb3RrZXksIEhvdGtleXNTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhcjItaG90a2V5cyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBTb3J0TWV0YSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZSwgQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCwgQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgVGFibGUsIFRhYmxlTGF6eUxvYWRFdmVudCwgVGFibGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciB9IGZyb20gJy4vdHlwZXMvZGVmYXVsdC1maWx0ZXInO1xuaW1wb3J0IHsgTGFiZWxPcHRpb25zIH0gZnJvbSAnLi90eXBlcy9sYWJlbC1vcHRpb25zJztcblxuaW1wb3J0IHsgTG9hZGluZ1N0YXRlSW5kaWNhdG9ycywgTG9hZGluZ1N0YXRlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2FkaW5nLXN0YXRlJztcbmltcG9ydCB7IENhbGVuZGFyTG9jYWxlT3B0aW9ucywgTG9jYWxlTW9kdWxlIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy9sb2NhbGUnO1xuaW1wb3J0IHsgQ2hlY2tEaXNhYmxlZCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvc2hhcmVkJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cy91dGlscyc7XG5cbmltcG9ydCB7IERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiwgTmdTd2l0Y2ggfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZU1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvZW1wdHktc3RhdGUnO1xuaW1wb3J0IHsgQmFkZ2VNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IE1hc2tGb3JtYXR0ZXJNb2R1bGUgfSBmcm9tICdAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzL21hc2snO1xuaW1wb3J0IHsgVGFibGVIZWFkZXJDaGVja2JveE1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGFibGUtaGVhZGVyJztcbmltcG9ydCB7IER5bmFtaWNGb3JtQ29tcG9uZW50LCBkeW5hbWljVHlwZVRvRHluYW1pY1N0cnVjdHVyZSB9IGZyb20gJy4uLy4uL2R5bmFtaWMtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhwYW5kZWREeW5hbWljVHlwZSB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zL3N0cnVjdHVyZS9yb3cnO1xuaW1wb3J0IHsgU2VsZWN0RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9zZWxlY3QtZmllbGQnO1xuaW1wb3J0IHsgQmlnbnVtYmVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9iaWdudW1iZXItZmllbGQnO1xuaW1wb3J0IHsgTnVtYmVyRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9udW1iZXItZmllbGQnO1xuaW1wb3J0IHsgQ3VycmVuY3lGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2N1cnJlbmN5LWZpZWxkJztcbmltcG9ydCB7IFRleHRGaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgRHluYW1pY1R5cGUgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9maWVsZCc7XG5pbXBvcnQgeyBEeW5hbWljU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3N0cnVjdHVyZSc7XG5pbXBvcnQgeyBUZW1wbGF0ZU1vZHVsZSB9IGZyb20gJ0BzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHMvdGVtcGxhdGUnO1xuaW1wb3J0IHsgTG9va3VwU2VhcmNoUmVxdWVzdCB9IGZyb20gJy4vbW9kZWxzL2xvb2t1cC1hcGkubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEF1dG9Db21wbGV0ZU1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgICAgICBEeW5hbWljRm9ybUNvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBFbXB0eVN0YXRlTW9kdWxlLFxuICAgICAgICBUYWJsZU1vZHVsZSxcbiAgICAgICAgTG9hZGluZ1N0YXRlTW9kdWxlLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIExvY2FsZU1vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgQmFkZ2VNb2R1bGUsXG4gICAgICAgIE1hc2tGb3JtYXR0ZXJNb2R1bGUsXG4gICAgICAgIE5nU3dpdGNoLFxuICAgICAgICBUYWJsZUhlYWRlckNoZWNrYm94TW9kdWxlLFxuICAgICAgICBUZW1wbGF0ZU1vZHVsZSxcbiAgICBdLFxuICAgIHNlbGVjdG9yOiAncy1sb29rdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2xvb2t1cC5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IExvb2t1cENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdjb2xsYXBzZUNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcqJyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiBoaWRkZW4nLCBbXG4gICAgICAgICAgICAgICAgZ3JvdXAoW3F1ZXJ5KCdAY2hpbGRDb2xsYXBzZUNvbnRlbnQnLCBhbmltYXRlQ2hpbGQoKSksIGFuaW1hdGUoJ3t7dHJhbnNpdGlvblBhcmFtc319JyldKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignY2hpbGRDb2xsYXBzZUNvbnRlbnQnLCBbXG4gICAgICAgICAgICBzdGF0ZShcbiAgICAgICAgICAgICAgICAnOmxlYXZlJyxcbiAgICAgICAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJzplbnRlcicsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJyogPD0+IConLCBhbmltYXRlKCd7e3RyYW5zaXRpb25QYXJhbXN9fScpKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9va3VwQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgTUFQX0ZPUk1fRElBTE9HX0NPTlRST0xTID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvb2t1cERpYWxvZ0NvbnRhaW5lciA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oJ2RpYWxvZ0NvbnRhaW5lcicpO1xuICAgIHByb3RlY3RlZCByb3dUeXBlID0gJ1Jvdyc7XG4gICAgcHVibGljIGluZGljYXRvckxvZ28gPSBMb2FkaW5nU3RhdGVJbmRpY2F0b3JzLkxvZ287XG4gICAgcHVibGljIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybUNvbnRyb2xOYW1lPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgcy1sb29rdXAtJHtMb29rdXBDb21wb25lbnQubmV4dElkKyt9YDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZUZvcmNlU2VsZWN0aW9uID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heGxlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICBwdWJsaWMgZGF0YUtleSE6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93U2VhcmNoID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxvb2t1cFN1Z2dlc3Rpb25zOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRGlzcGxheUZpZWxkPzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRGlzcGxheUZpZWxkVG9vbHRpcCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwRW1wdHlNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkgPT4gdmFsdWUgPz8gJ2JvZHknIH0pXG4gICAgcHVibGljIGxvb2t1cEFwcGVuZFRvPyA9ICdib2R5JztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaEVtcHR5RGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hHcmlkRGF0YTogYW55W10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaFRvdGFsUmVjb3JkcyA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hGaWVsZHM6IChEeW5hbWljVHlwZSAmIHsgY3VzdG9tTmFtZT86IHN0cmluZyB9KVtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWFyY2hHcmlkRmllbGRzOiBEeW5hbWljVHlwZVtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aVNvcnRNZXRhOiBTb3J0TWV0YVtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNvcnRhYmxlQ29sdW1uc0Rpc2FibGVkOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9va3VwUm93UHJvcHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0RmlsdGVyOiBEZWZhdWx0RmlsdGVyW10gPSBbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBZGRPcHRpb24gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dFZGl0T3B0aW9uID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93UmVtb3ZlT3B0aW9uID0gZmFsc2U7XG5cbiAgICBkaWFsb2dGdWxsU2NyZWVuID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uTG9va3VwUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uU2VhcmNoUmVxdWVzdCA9IG5ldyBFdmVudEVtaXR0ZXI8TG9va3VwU2VhcmNoUmVxdWVzdD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbktleVVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcHVibGljIG9uVW5zZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBwdWJsaWMgb25DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkFkZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd24+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICBwdWJsaWMgb25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd25bXT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHB1YmxpYyBvbkNsZWFyQnV0dG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKFRhYmxlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgdGFibGU6IFRhYmxlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAVmlld0NoaWxkKEF1dG9Db21wbGV0ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZTogQXV0b0NvbXBsZXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbE9wdGlvbnM/OiBQYXJ0aWFsPExhYmVsT3B0aW9ucz47XG5cbiAgICBwdWJsaWMgdmFsdWU6IGFueTtcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICAgIHB1YmxpYyBhbmltYXRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgZGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBjb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWQ6IGFueVtdID0gW107XG4gICAgcHVibGljIGZvcm1Hcm91cERpYWxvZyE6IEZvcm1Hcm91cDxhbnk+O1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uT3B0aW9ucyA9ICc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknO1xuXG4gICAgcHJvdGVjdGVkIHNlYXJjaEZpZWxkc0R5bmFtaWNTdHJ1Y3R1cmU6IER5bmFtaWNTdHJ1Y3R1cmVbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZT86IEZ1bmN0aW9uO1xuICAgIHByaXZhdGUgb25Ub3VjaGVkPzogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBvcmlnaW5hbEZvcm1WYWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaG90a2V5c1NlcnZpY2U6IEhvdGtleXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hHcmlkRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hHcmlkRmllbGRzID0gdGhpcy5zZWFyY2hGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGaWVsZHMgPSB0aGlzLnNlYXJjaEZpZWxkcy5tYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gdmFsdWUubmFtZS5yZXBsYWNlQWxsKCcuJywgJ18nKTtcbiAgICAgICAgICAgIHRoaXMuTUFQX0ZPUk1fRElBTE9HX0NPTlRST0xTLnNldCh2YWx1ZS5uYW1lLCBuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY3VzdG9tTmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoRmllbGRzRHluYW1pY1N0cnVjdHVyZSA9IGR5bmFtaWNUeXBlVG9EeW5hbWljU3RydWN0dXJlKFxuICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZHMubWFwKChzZWFyY2hGaWVsZDogRXhwYW5kZWREeW5hbWljVHlwZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkLnNpemUgPSB7IHNtOiAxMiwgbWQ6IDEyLCBsZzogMTIsIHhsOiAxMiB9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnNlYXJjaEZpZWxkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNlYXJjaEdyaWRGaWVsZHMgPSB0aGlzLnNlYXJjaEdyaWRGaWVsZHMubWFwKChncmlkRmllbGQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdyaWRUeXBlID0gZ3JpZEZpZWxkLnR5cGU7XG4gICAgICAgICAgICBpZiAoZ3JpZEZpZWxkLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgKGdyaWRGaWVsZCBhcyBhbnkpWyd3aWR0aCddID0gdGhpcy5nZXRDb2xXaWR0aChncmlkRmllbGQubGFiZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZ3JpZFR5cGUgPT09ICdkYXRlJyB8fCBncmlkVHlwZSA9PT0gJ3RpbWUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FsZW5kYXJPcHRpb25zID0gbmV3IENhbGVuZGFyTG9jYWxlT3B0aW9ucyh7IC4uLmdyaWRGaWVsZC5jYWxlbmRhckxvY2FsZU9wdGlvbnMgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FsZW5kYXJPcHRpb25zPy5kYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ3JpZEZpZWxkLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5kYXRlRm9ybWF0ID0gdGhpcy5fY29udmVydFRvTW9tZW50RGF0ZUZvcm1hdChjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aW1lJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhck9wdGlvbnMuZGF0ZUZvcm1hdCA9IHRoaXMuX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyT3B0aW9ucy5ob3VyRm9ybWF0ISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJPcHRpb25zLmRhdGVGb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBncmlkRmllbGQuY2FsZW5kYXJMb2NhbGVPcHRpb25zID0gY2FsZW5kYXJPcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGdyaWRGaWVsZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5zZWFyY2hGaWVsZHMucmVkdWNlKChyZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSwgZmllbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5jdXN0b21OYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gJ2RlZmF1bHRWYWx1ZScgaW4gZmllbGQgPyBmaWVsZC5kZWZhdWx0VmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgICByZXN1bHRbZmllbGQuY3VzdG9tTmFtZV0gPSBuZXcgRm9ybUNvbnRyb2woZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRm9ybVZhbHVlc1tmaWVsZC5jdXN0b21OYW1lXSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZyA9IG5ldyBGb3JtR3JvdXAoZm9ybUdyb3VwKTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVFdmVudHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnRSZWNvcmRUb3RhbGl6ZXIoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxPcHRpb25zPy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGFiZWxPcHRpb25zPy5zZWFyY2hUb3RhbFJlY29yZHNMYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlY29yZExhYmVsID0gdGhpcy5sYWJlbE9wdGlvbnM/LnJlY29yZExhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMubGFiZWxPcHRpb25zPy5yZWNvcmRMYWJlbH1gXG4gICAgICAgICAgICA6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMudG90YWxfcmVjb3JkJywge1xuICAgICAgICAgICAgICAgICAgY291bnQ6IHRoaXMuc2VhcmNoVG90YWxSZWNvcmRzLFxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWNvcmRzTGFiZWwgPSB0aGlzLmxhYmVsT3B0aW9ucz8ucmVjb3Jkc0xhYmVsXG4gICAgICAgICAgICA/IGAke3RoaXMuc2VhcmNoVG90YWxSZWNvcmRzfSAke3RoaXMubGFiZWxPcHRpb25zPy5yZWNvcmRzTGFiZWx9YFxuICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnRvdGFsX3JlY29yZHMnLCB7XG4gICAgICAgICAgICAgICAgICBjb3VudDogdGhpcy5zZWFyY2hUb3RhbFJlY29yZHMsXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFRvdGFsUmVjb3JkcyA9PT0gMSA/IHJlY29yZExhYmVsIDogcmVjb3Jkc0xhYmVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbnZlcnRUb01vbWVudEhvdXJGb3JtYXQoaG91ckZvcm1hdDogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZykge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAnZGQvbW0veXknKSB7XG4gICAgICAgICAgICAvLyB2YWxvciBwYWRyw6NvIHBhcmEgbyBmb3JtYXQuXG4gICAgICAgICAgICByZXR1cm4gJ0xUUyc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG91ckZvcm1hdCA9PT0gJzEyJykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJIXFxiLywgJ2gnKSAvLyBob3VyICgxMiBob3VyIHRpbWUpIChubyBsZWFkaW5nIHplcm8pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYkhIXFxiLywgJ2hoJyk7IC8vIGhvdXIgKDEyIGhvdXIgdGltZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChob3VyRm9ybWF0ID09PSAnMjQnKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0XG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmhcXGIvLCAnSCcpIC8vIGhvdXIgKDI0IGhvdXIgdGltZSkgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxiaGhcXGIvLCAnSEgnKTsgLy8gaG91ciAoMjQgaG91ciB0aW1lKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb252ZXJ0VG9Nb21lbnREYXRlRm9ybWF0KGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gQSBvcmRlbSBkb3MgcmVwbGFjZXMgw6kgaW1wb3J0YW50ZS5cbiAgICAgICAgcmV0dXJuIGZvcm1hdFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmRcXGIvLCAnRCcpIC8vIGRheSBvZiBtb250aCAobm8gbGVhZGluZyB6ZXJvKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYmRkXFxiLywgJ0REJykgLy8gZGF5IG9mIG1vbnRoXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxib1xcYi8sICdEREQnKSAvLyBkYXkgb2YgdGhlIHllYXIgKG5vIGxlYWRpbmcgemVybylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXGJvb1xcYi8sICdEREREJykgLy8gZGF5IG9mIHRoZSB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTVxcYi8sICdNTU0nKSAvLyBtb250aCBuYW1lIHNob3J0XG4gICAgICAgICAgICAucmVwbGFjZSgvXFxiTU1cXGIvLCAnTU1NTScpIC8vIG1vbnRoIG5hbWUgbG9uZ1xuICAgICAgICAgICAgLnJlcGxhY2UoL1xcYm1cXGIvLCAnTScpIC8vIG1vbnRoIG9mIHllYXIgKG5vIGxlYWRpbmcpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxibW1cXGIvLCAnTU0nKSAvLyBtb250aCBvZiB5ZWFyXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieVxcYi8sICdZWScpIC8vIHllYXIgKHR3byBkaWdpdHMpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxieXlcXGIvLCAnWVlZWScpOyAvLyB5ZWFyIChmb3VyIGRpZ2l0cylcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dWaXNpYmxlICYmIGNoYW5nZXNbJ3NlYXJjaEdyaWREYXRhJ10pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0Rm9jdXNGaWx0ZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcmlkRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoR3JpZERhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExvb2t1cFN1Z2dlc3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29rdXBTdWdnZXN0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbWFrZVNlYXJjaFJlcXVlc3RQYXJhbXMoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCk6IExvb2t1cFNlYXJjaFJlcXVlc3Qge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5mb3JtR3JvdXBEaWFsb2c/LmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIGNvbnN0IG1hcHBlZE9iamVjdENoYW5nZXMgPVxuICAgICAgICAgICAgQXJyYXkuZnJvbSh0aGlzLk1BUF9GT1JNX0RJQUxPR19DT05UUk9MUy5lbnRyaWVzKCkpLm1hcCgoW2ZpZWxkLCBjdXN0b21OYW1lXSkgPT4gKHsgZmllbGQsIGN1c3RvbU5hbWUgfSkpID8/XG4gICAgICAgICAgICBbXTtcbiAgICAgICAgbWFwcGVkT2JqZWN0Q2hhbmdlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZpbHRlcnNbaXRlbS5jdXN0b21OYW1lXTtcbiAgICAgICAgICAgIGRlbGV0ZSBmaWx0ZXJzW2l0ZW0uY3VzdG9tTmFtZV07XG4gICAgICAgICAgICBmaWx0ZXJzW2l0ZW0uZmllbGRdID0gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLmV2ZW50LCBmaWx0ZXJEYXRhOiBmaWx0ZXJzIH07XG4gICAgICAgIGNvbnN0IHsgbXVsdGlTb3J0TWV0YSB9ID0gZXZlbnQ7XG4gICAgICAgIHRoaXMubXVsdGlTb3J0TWV0YSA9IG11bHRpU29ydE1ldGEgfHwgdGhpcy5tdWx0aVNvcnRNZXRhO1xuXG4gICAgICAgIHJldHVybiBwYXJhbXMgYXMgTG9va3VwU2VhcmNoUmVxdWVzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbGF6eUxvYWRHcmlkKGV2ZW50OiBUYWJsZUxhenlMb2FkRXZlbnQpIHtcbiAgICAgICAgLy8gQW8gZGVmaW5pciB1bWEgb3JkZW5hw6fDo28gbmEgdGFiZWxhIGRvIGxvb2t1cCBlc3NlIG3DqXRvZG8gw6kgY2hhbWFkbyAyIHZlemVzIGh0dHBzOi8vZ2l0aHViLmNvbS9wcmltZWZhY2VzL3ByaW1lbmcvaXNzdWVzLzU0ODBcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5tYWtlU2VhcmNoUmVxdWVzdFBhcmFtcyhldmVudCk7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXF1ZXN0Lm5leHQocGFyYW1zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Db21wbGV0ZU1ldGhvZChldmVudDogQXV0b0NvbXBsZXRlQ29tcGxldGVFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlRm9yY2VTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2U/Lih0aGlzLnZhbHVlID09PSAnJyA/IG51bGwgOiB0aGlzLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Mb29rdXBSZXF1ZXN0Lm5leHQoZXZlbnQucXVlcnkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREZWZhdWx0RmlsdGVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRlZmF1bHRGaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkVmFsdWVzID0gdGhpcy5kZWZhdWx0RmlsdGVyLmZpbHRlcigoeyBmaWVsZCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29udHJvbE5hbWUgPSB0aGlzLk1BUF9GT1JNX0RJQUxPR19DT05UUk9MUy5nZXQoZmllbGQpIGFzIHN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IGhhc0Zvcm1Db250cm9sID0gdGhpcy5mb3JtR3JvdXBEaWFsb2cuY29udGFpbnMoZm9ybUNvbnRyb2xOYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGlzRGlydHkgPSB0aGlzLmZvcm1Hcm91cERpYWxvZy5nZXQoZm9ybUNvbnRyb2xOYW1lKT8uZGlydHk7XG4gICAgICAgICAgICByZXR1cm4gaGFzRm9ybUNvbnRyb2wgJiYgIWlzRGlydHk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZpbHRlcmVkVmFsdWVzLmZvckVhY2goKHsgdmFsdWUsIGZpZWxkIH0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Db250cm9sTmFtZSA9IHRoaXMuTUFQX0ZPUk1fRElBTE9HX0NPTlRST0xTLmdldChmaWVsZCkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXBEaWFsb2cuZ2V0KGZvcm1Db250cm9sTmFtZSk/LnBhdGNoVmFsdWUodmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHZhbHVlKCkgOiB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIEBDaGVja0Rpc2FibGVkKClcbiAgICBwdWJsaWMgYXN5bmMgc2hvd0RpYWxvZygpIHtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0RmlsdGVycygpO1xuICAgICAgICB0aGlzLnNlYXJjaEdyaWREYXRhID0gW107XG4gICAgICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgICAgICAgdGhpcy5ob3RrZXlzU2VydmljZS5wYXVzZShbLi4udGhpcy5ob3RrZXlzU2VydmljZS5ob3RrZXlzXSk7XG4gICAgICAgIHRoaXMuc2V0SG90a2V5cygpO1xuXG4gICAgICAgIGxldCBzZWxlY3RlZDogYW55ID0gW107XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWQuY29uY2F0KHRoaXMudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkID0gW3RoaXMudmFsdWVdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcblxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHNldElucHV0cyhjb21wb25lbnRSZWY6IGFueSwgY29uZmlnczogYW55LCBmb3JtOiBhbnkpIHtcbiAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmNvbmZpZ3MgPSBjb25maWdzO1xuICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZm9ybSA9IGZvcm07XG5cbiAgICAgICAgLy8gY2hhbWUgbmdPbkNoYW5nZXMgbWFudWFsbWVudGUgc2UgbmVjZXNzw6FyaW9cbiAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkNoYW5nZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5uZ09uQ2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25WaXNpYmxlQ2hhbmdlKHZpc2liaWxpdHlTdGF0ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmlzaWJpbGl0eVN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuICAgIHB1YmxpYyBoaWRlRGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBpbnB1dEVMLCBtdWx0aUlucHV0RWwgfSA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuICAgICAgICB0aGlzLmRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ob3RrZXlzU2VydmljZS51bnBhdXNlKFsuLi50aGlzLmhvdGtleXNTZXJ2aWNlLnBhdXNlZEhvdGtleXNdKTtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIG11bHRpSW5wdXRFbD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlucHV0RUw/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZy5yZXNldCh0aGlzLm9yaWdpbmFsRm9ybVZhbHVlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5yZXNldFRhYmxlKCk7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZGlhbG9nQ29udGFpbmVyID0gdGhpcy5sb29rdXBEaWFsb2dDb250YWluZXIoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGRpYWxvZ0NvbnRhaW5lcikge1xuICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cERpYWxvZz8ucmVzZXQodGhpcy5vcmlnaW5hbEZvcm1WYWx1ZXMpO1xuICAgICAgICB0aGlzLnJlc2V0VGFibGUoKTtcbiAgICAgICAgdGhpcy5vbkNsZWFyQnV0dG9uQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZXNldFRhYmxlKCkge1xuICAgICAgICB0aGlzLnRhYmxlPy5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3QoKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZC5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQgJiYgKHRoaXMubXVsdGlwbGUgPyB0aGlzLnNlbGVjdGVkIDogdGhpcy5zZWxlY3RlZFswXSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5vblNlbGVjdC5uZXh0KHNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkOiBhbnkpIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RlZCkpIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgZWxzZSB0aGlzLnNlbGVjdGVkID0gW3NlbGVjdGVkXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UodmFsdWUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IEZ1bmN0aW9uKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmllbGRWYWx1ZShvYmo6IGFueSwgcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChyZXN1bHQsIHByb3ApID0+IChyZXN1bHRbcHJvcF0gPT09IHVuZGVmaW5lZCA/ICcnIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QmFkZ2VGcm9tVmFsdWUodmFsdWU6IHVua25vd24sIGZpZWxkOiBTZWxlY3RGaWVsZENvbmZpZykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdHlwZW9mIGZpZWxkLm9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBmaWVsZC5vcHRpb25zKCkgOiBmaWVsZC5vcHRpb25zO1xuICAgICAgICByZXR1cm4gb3B0aW9ucz8uZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKT8uYmFkZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExhYmVsRm9yVmFsdWUodmFsdWU6IHVua25vd24sIGZpZWxkOiBTZWxlY3RGaWVsZENvbmZpZykge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdHlwZW9mIGZpZWxkLm9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBmaWVsZC5vcHRpb25zKCkgOiBmaWVsZC5vcHRpb25zO1xuICAgICAgICBpZiAoIW9wdGlvbnMpIHJldHVybiBgJHt2YWx1ZX1gO1xuXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IG9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5sYWJlbCA6IGAke3ZhbHVlfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQm9vbGVhblZhbHVlKG9iajogYW55LCBwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEZpZWxkVmFsdWUob2JqLCBwYXRoKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWVsZFdpZHRoKGNvbDogYW55KSB7XG4gICAgICAgIHJldHVybiBjb2wud2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJvb2xlYW5MYWJlbChvYmo6IGFueSwgcGF0aDogc3RyaW5nLCBvcHRpb25zTGFiZWw6IEJvb2xlYW5PcHRpb25zTGFiZWwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFvcHRpb25zTGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zTGFiZWwudHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb25zTGFiZWwuZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNOdW1iZXIob2JqOiBhbnksIHBhdGg6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gIW5ldyBCaWdOdW1iZXIodGhpcy5nZXRGaWVsZFZhbHVlKG9iaiwgcGF0aCkpLmlzTmFOKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEhvdGtleXMoKSB7XG4gICAgICAgIGNvbnN0IGNsZWFySG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoJ2FsdCtzaGlmdCtsJywgdGhpcy5jbGVhci5iaW5kKHRoaXMpKTtcbiAgICAgICAgY29uc3QgZmluZEhvdGtleSA9IHRoaXMubmV3SG90a2V5KCdhbHQrc2hpZnQrZicsIHRoaXMuc2VhcmNoLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBoaWRlSG90a2V5ID0gdGhpcy5uZXdIb3RrZXkoJ2FsdCtzaGlmdCtjJywgdGhpcy5oaWRlRGlhbG9nLmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBzZWxlY3RIb3RrZXkgPSB0aGlzLm5ld0hvdGtleSgnYWx0K3NoaWZ0K3MnLCB0aGlzLnNlbGVjdC5iaW5kKHRoaXMpKTtcblxuICAgICAgICBjb25zdCBiaW5kZWRIb3RrZXlzID0gW2NsZWFySG90a2V5LCBmaW5kSG90a2V5LCBoaWRlSG90a2V5LCBzZWxlY3RIb3RrZXldO1xuICAgICAgICBiaW5kZWRIb3RrZXlzLmZvckVhY2goKGhvdGtleTogSG90a2V5KSA9PiB0aGlzLmhvdGtleXNTZXJ2aWNlLmFkZChob3RrZXkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5ld0hvdGtleShjb21ibzogc3RyaW5nLCBmbjogRnVuY3Rpb24pOiBIb3RrZXkge1xuICAgICAgICByZXR1cm4gbmV3IEhvdGtleShjb21ibywgKCkgPT4ge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSwgWydJTlBVVCcsICdTRUxFQ1QnLCAnVEVYVEFSRUEnXSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlclRvZ2dsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW5nKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub2dnbGVEb25lKCkge1xuICAgICAgICB0aGlzLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZSB0aGUgdGFibGUgY29sdW1uIHNpemUuIFRoZSBtaW5pbXVtIHZhbHVlIGlzIDE0LjI4NmVtLCB3aGljaCBpcyBlcXVhbHMgdG8gMjAwcHggZHVvIHRvIHRoZSBjdXJyZW50IGZvbnQgc2l6ZS5cbiAgICAgKiBAcGFyYW0gbGFiZWwgQ29sdW1uIG5hbWUuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbFdpZHRoKGxhYmVsOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGxhYmVsLmxlbmd0aDtcbiAgICAgICAgaWYgKHNpemUgPCAxNC4yODYpIHJldHVybiBgMTQuMjg2ZW1gO1xuICAgICAgICByZXR1cm4gYCR7c2l6ZX1lbWA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNjYWxlKHNjYWxlOiBhbnkpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0Z1bmN0aW9uKHNjYWxlKSA/IHNjYWxlKCkgOiBzY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RG91YmxlTWFza0NvbmZpZyhjb2w6IE51bWJlckZpZWxkQ29uZmlnIHwgQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogJycsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vbmV5TWFza0NvbmZpZyhjb2w6IEN1cnJlbmN5RmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbnRlZ2VyTWFza0NvbmZpZyhjb2w6IEJpZ251bWJlckZpZWxkQ29uZmlnIHwgTnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiAwLFxuICAgICAgICAgICAgdGhvdXNhbmRzU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8udGhvdXNhbmRzU2VwYXJhdG9yLFxuICAgICAgICAgICAgcHJlZml4OiAnJyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TnVtYmVyTWFza0NvbmZpZyhjb2w6IE51bWJlckZpZWxkQ29uZmlnIHwgQmlnbnVtYmVyRmllbGRDb25maWcpOiBNYXNrQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjYWxlOiB0aGlzLmdldFNjYWxlKGNvbC5zY2FsZSksXG4gICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiBjb2wubnVtYmVyTG9jYWxlT3B0aW9ucz8uZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgIHRob3VzYW5kc1NlcGFyYXRvcjogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIHByZWZpeDogY29sLm51bWJlckxvY2FsZU9wdGlvbnM/LmN1cnJlbmN5U3ltYm9sLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXJzZVZhbHVlTWFza1ZhbHVlKGNvbDogRHluYW1pY1R5cGUsIHJvd0RhdGE6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5maWVsZEhhc01hc2soY29sKSkge1xuICAgICAgICAgICAgY29uc3QgX21hc2sgPSBjb2wubWFzaztcbiAgICAgICAgICAgIGNvbnN0IGlzRnVuY3Rpb24gPSB0aGlzLmlzRnVuY3Rpb24oX21hc2spO1xuICAgICAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24gPyAoX21hc2sgYXMgRnVuY3Rpb24pKHsgdmFsdWU6IHJvd0RhdGEgfSkgOiBfbWFzaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBmaWVsZEhhc01hc2soZmllbGQ6IER5bmFtaWNUeXBlKTogZmllbGQgaXMgTnVtYmVyRmllbGRDb25maWcgfCBCaWdudW1iZXJGaWVsZENvbmZpZyB8IFRleHRGaWVsZENvbmZpZyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBmaWVsZC50eXBlID09PSAnaW50ZWdlcicgfHxcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdudW1iZXInIHx8XG4gICAgICAgICAgICBmaWVsZC50eXBlID09PSAnZG91YmxlJyB8fFxuICAgICAgICAgICAgZmllbGQudHlwZSA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIGZpZWxkLnR5cGUgPT09ICdiaW5hcnknXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVGFibGVSb3dEb3VibGVDbGljayhyb3dEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IFtyb3dEYXRhXTtcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRGb2N1c0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nVmlzaWJsZSAmJiAhdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5sb29rdXBEaWFsb2dDb250YWluZXIoKT8ubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgKGlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdWJzY3JpYmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25TZWFyY2hSZXF1ZXN0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiAodGhpcy5sb2FkaW5nID0gdHJ1ZSkpO1xuXG4gICAgICAgIHRoaXMub25TZWxlY3QucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMub25DaGFuZ2U/Lih0aGlzLnZhbHVlKSk7XG5cbiAgICAgICAgdGhpcy5vblVuc2VsZWN0LnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlPy4odGhpcy52YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMub25DbGVhci5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlPy4obnVsbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub25Gb2N1cy5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9uQmx1ci5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMubG9va3VwRGlzcGxheUZpZWxkKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZVt0aGlzLmxvb2t1cERpc3BsYXlGaWVsZF07XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlIH0gPSB0YXJnZXQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlIHx8ICFjdXJyZW50VmFsdWUgfHwgY3VycmVudFZhbHVlID09IHZhbHVlKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gJyc7XG4gICAgICAgICAgICB0YXJnZXQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2U/LihuZXdWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb29sZWFuT3B0aW9uc0xhYmVsQ29uZmlnIHtcbiAgICB0cnVlOiBzdHJpbmc7XG4gICAgZmFsc2U6IHN0cmluZztcbiAgICBlbXB0eT86IHN0cmluZztcbiAgICBjbGVhcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEJvb2xlYW5PcHRpb25zTGFiZWwge1xuICAgIHB1YmxpYyB0cnVlOiBzdHJpbmc7XG4gICAgcHVibGljIGZhbHNlOiBzdHJpbmc7XG4gICAgcHVibGljIGVtcHR5Pzogc3RyaW5nO1xuICAgIHB1YmxpYyBjbGVhcj86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogQm9vbGVhbk9wdGlvbnNMYWJlbENvbmZpZykge1xuICAgICAgICB0aGlzLnRydWUgPSBjb25maWcudHJ1ZTtcbiAgICAgICAgdGhpcy5mYWxzZSA9IGNvbmZpZy5mYWxzZTtcbiAgICAgICAgdGhpcy5lbXB0eSA9IGNvbmZpZy5lbXB0eTtcbiAgICAgICAgdGhpcy5jbGVhciA9IGNvbmZpZy5jbGVhcjtcbiAgICB9XG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInsgaW5wdXRncm91cDogc2hvd1NlYXJjaCwgJ25hdGl2ZS1kcm9wZG93bic6ICFzaG93U2VhcmNoIH1cIj5cbiAgICA8cC1hdXRvQ29tcGxldGVcbiAgICAgICAgI2F1dG9jb21wbGV0ZVxuICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2RhdGFLZXldPVwiZGF0YUtleVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgIFtpbnB1dElkXT1cImlkICsgJy1hdXRvY29tcGxldGUnXCJcbiAgICAgICAgW2ZvcmNlU2VsZWN0aW9uXT1cImF1dG9jb21wbGV0ZUZvcmNlU2VsZWN0aW9uXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIlxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiZ2V0TG9va3VwU3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJvbkNvbXBsZXRlTWV0aG9kKCRldmVudClcIlxuICAgICAgICAob25TZWxlY3QpPVwib25TZWxlY3QubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uRm9jdXMpPVwib25Gb2N1cy5uZXh0KCRldmVudClcIlxuICAgICAgICAob25VbnNlbGVjdCk9XCJvblVuc2VsZWN0Lm5leHQoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsZWFyKT1cIm9uQ2xlYXIubmV4dCgkZXZlbnQpXCJcbiAgICAgICAgKG9uS2V5VXApPVwib25LZXlVcC5uZXh0KCRldmVudClcIlxuICAgICAgICBbZmllbGRdPVwibG9va3VwRGlzcGxheUZpZWxkXCJcbiAgICAgICAgW2VtcHR5TWVzc2FnZV09XCJsb29rdXBFbXB0eU1lc3NhZ2VcIlxuICAgICAgICBbZHJvcGRvd25dPVwiIXNob3dTZWFyY2hcIlxuICAgICAgICBbYXBwZW5kVG9dPVwibG9va3VwQXBwZW5kVG9cIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJyAnXCJcbiAgICAgICAgW2F1dG9IaWdobGlnaHRdPVwidHJ1ZVwiXG4gICAgICAgIGlucHV0U3R5bGVDbGFzcz1cIm1vdXNldHJhcFwiXG4gICAgPlxuICAgIDwvcC1hdXRvQ29tcGxldGU+XG4gICAgQGlmIChzaG93U2VhcmNoKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLWFkZG9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5idXR0b24tYWRkb24tLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd0RpYWxvZygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvZGl2PlxuXG48cy1kaWFsb2dcbiAgICBbKHZpc2libGUpXT1cImRpYWxvZ1Zpc2libGVcIlxuICAgICh2aXNpYmxlQ2hhbmdlKT1cIm9uVmlzaWJsZUNoYW5nZSgkZXZlbnQhKVwiXG4gICAgW2hlYWRlcl09XCJsYWJlbE9wdGlvbnM/LnNlYXJjaFRpdGxlIHx8ICdwbGF0Zm9ybS5hbmd1bGFyX2NvbXBvbmVudHMuYWR2YW5jZWRfc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgY29udGVudENsYXNzTmFtZT1cInMtbG9va3VwLW1vZGFsXCJcbiAgICBbc2l6ZV09XCJkaWFsb2dGdWxsU2NyZWVuKCkgPyAnZnVsbHNjcmVlbicgOiAneGwnXCJcbj5cbiAgICBAaWYgKGRpYWxvZ1Zpc2libGUpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzLWxvb2t1cC1tb2RhbC1jb250YWluZXJcIlxuICAgICAgICAgICAgI2RpYWxvZ0NvbnRhaW5lclxuICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKHNlYXJjaEZpZWxkcyAmJiBzZWFyY2hGaWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtAY29sbGFwc2VDb250ZW50XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IHZhbHVlOiAnaGlkZGVuJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRyYW5zaXRpb25PcHRpb25zIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB2YWx1ZTogJ3Zpc2libGUnLCBwYXJhbXM6IHsgdHJhbnNpdGlvblBhcmFtczogdHJhbnNpdGlvbk9wdGlvbnMgfSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIChAY29sbGFwc2VDb250ZW50LmRvbmUpPVwib25Ub2dnbGVEb25lKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwRGlhbG9nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdmFsaWRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWNvbGxhcHNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQGNoaWxkQ29sbGFwc2VDb250ZW50XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7IHZhbHVlOiAnOmxlYXZlJywgcGFyYW1zOiB7IHRyYW5zaXRpb25QYXJhbXM6IHRyYW5zaXRpb25PcHRpb25zIH0gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeyB2YWx1ZTogJzplbnRlcicsIHBhcmFtczogeyB0cmFuc2l0aW9uUGFyYW1zOiB0cmFuc2l0aW9uT3B0aW9ucyB9IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdGl0bGUgc2RzLXNlY3Rpb24tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsT3B0aW9ucz8uZmlsdGVyVGl0bGUgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5maWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1keW5hbWljLWZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnc109XCJzZWFyY2hGaWVsZHNEeW5hbWljU3RydWN0dXJlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtR3JvdXBEaWFsb2dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWR5bmFtaWMtZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktZy0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgKyAnLWZpbHRlci1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT3B0aW9ucz8uZmlsdGVyTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5maWx0ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwic2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIEYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jbGVhci1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT3B0aW9ucz8uY2xlYXJMYWJlbCB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNsZWFyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cImNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIEwpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChzZWFyY2hGaWVsZHMgJiYgc2VhcmNoRmllbGRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdG9nZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCArICctZmlsdGVyLXRvZ2dsZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbHRlclRvZ2dsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdmYS1jaGV2cm9uLWxlZnQnOiAhY29sbGFwc2VkLCAnZmEtY2hldnJvbi1yaWdodCc6IGNvbGxhcHNlZCB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBsZXQgaXNFbXB0eUNvbnRlbnQgPSAhc2VhcmNoVG90YWxSZWNvcmRzICYmICFsb2FkaW5nO1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudFwiXG4gICAgICAgICAgICAgICAgI2NvbnRlbnRDb250YWluZXJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdlbXB0eS1jb250ZW50JzogaXNFbXB0eUNvbnRlbnQgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQGlmIChpc0VtcHR5Q29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICA8cy1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1lbXB0eS1zdGF0ZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsT3B0aW9ucz8uc2VhcmNoRW1wdHlUaXRsZSB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLm5vX3JlY29yZHNfZm91bmQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cInNlYXJjaEVtcHR5RGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzPVwiZmEgZmEtc2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L3MtZW1wdHktc3RhdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNoaWxkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGF0YUtleV09XCJkYXRhS2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJnZXRHcmlkRGF0YSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5zXT1cInNlYXJjaEdyaWRGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhenldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0TW9kZT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbFJlY29yZHNdPVwic2VhcmNoVG90YWxSZWNvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dzXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25dPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uTGF6eUxvYWQpPVwibGF6eUxvYWRHcmlkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpU29ydE1ldGFdPVwibXVsdGlTb3J0TWV0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWhpZGRlbl09XCIhc2VhcmNoVG90YWxSZWNvcmRzICYmICFsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cIm11bHRpcGxlID8gJ211bHRpcGxlJyA6ICdzaW5nbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqc0xvYWRpbmdTdGF0ZT1cInsgbG9hZGluZzogbG9hZGluZywgaW5kaWNhdG9yOiBpbmRpY2F0b3JMb2dvIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0FkZE9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5hZGQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkFkZC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dFZGl0T3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmVkaXQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWQubGVuZ3RoICE9PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvbkVkaXQuZW1pdCh0aGlzLnNlbGVjdGVkWzBdKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd1JlbW92ZU9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5yZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25SZW1vdmUuZW1pdCh0aGlzLnNlbGVjdGVkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3MtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiY29sZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbGdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29sIHN0eWxlPVwid2lkdGg6IDUwcHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbCBbc3R5bGUud2lkdGhdPVwiY29sLndpZHRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY29sZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcFRlbXBsYXRlPVwiaGVhZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtY29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDUwcHhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cy10YWJsZS1oZWFkZXItY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZUFsbE9iamVjdF09XCJsb29rdXBSb3dQcm9wcyA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dQcm9wc109XCJsb29rdXBSb3dQcm9wc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy10YWJsZS1oZWFkZXItY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5dPVwiY29sLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJzb3J0YWJsZUNvbHVtbnNEaXNhYmxlZC5pbmNsdWRlcyhjb2wubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZW5pb3ItaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VuaW9yLWhlYWRlci10aXRsZVwiPnt7IGNvbC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghc29ydGFibGVDb2x1bW5zRGlzYWJsZWQuaW5jbHVkZXMoY29sLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBbZmllbGRdPVwiY29sLm5hbWVcIj4gPC9wLXNvcnRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVGVtcGxhdGU9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQtcm93RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldC1jb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0clxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzTmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNlbGVjdGFibGVSb3ddPVwicm93RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwU2VsZWN0YWJsZVJvd0luZGV4XT1cInJvd0luZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc0RvdWJsZUNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkRvdWJsZUNsaWNrKT1cIm9uVGFibGVSb3dEb3VibGVDbGljayhyb3dEYXRhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcFNlbGVjdGFibGVSb3ddPVwicm93RGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZUNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChjb2wgb2Ygc2VhcmNoR3JpZEZpZWxkczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGhdPVwiZ2V0RmllbGRXaWR0aChjb2wpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTd2l0Y2hdPVwiY29sLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNCb29sZWFuVmFsdWUocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJvb2xlYW5MYWJlbChyb3dEYXRhLCBjb2wubmFtZSwgY29sLm9wdGlvbnNMYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbC5jYWxlbmRhckxvY2FsZU9wdGlvbnM/LmRhdGVGb3JtYXQgfHwgJ0wnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2RhdGVUaW1lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSk7IGVsc2UgZW1wdHlUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSkgfCBsb2NhbGl6ZWREYXRlIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnbG9jYWxEYXRlVGltZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpIHwgbG9jYWxpemVkRGF0ZSB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ3RpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGl6ZWRUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjb2wuY2FsZW5kYXJMb2NhbGVPcHRpb25zPy5kYXRlRm9ybWF0IHx8ICdMVFMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ2ludGVnZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOdW1iZXIocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGl6ZWRCaWdudW1iZXI6IGdldEludGVnZXJNYXNrQ29uZmlnKGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKCdkb3VibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOdW1iZXIocm93RGF0YSwgY29sLm5hbWUpOyBlbHNlIGVtcHR5VGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsb2NhbGl6ZWRCaWdudW1iZXI6IGdldERvdWJsZU1hc2tDb25maWcoY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ21vbmV5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTnVtYmVyKHJvd0RhdGEsIGNvbC5uYW1lKTsgZWxzZSBlbXB0eVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbG9jYWxpemVkQmlnbnVtYmVyOiBnZXRNb25leU1hc2tDb25maWcoY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc051bWJlcihyb3dEYXRhLCBjb2wubmFtZSk7IGVsc2UgZW1wdHlUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxvY2FsaXplZEJpZ251bWJlcjogZ2V0TnVtYmVyTWFza0NvbmZpZyhjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXNlICgnZW51bScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMYWJlbEZvclZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGVtcHR5VGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJhZGdlRnJvbVZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiB3aXRoQmFkZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHdpdGhvdXRCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3dpdGhCYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHMtYmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExhYmVsRm9yVmFsdWUoZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSksIGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFkZ2VGcm9tVmFsdWUoZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSksIGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5jb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJhZGdlRnJvbVZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQ2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFkZ2VGcm9tVmFsdWUoZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSksIGNvbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5pY29uQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJhZGdlRnJvbVZhbHVlKGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpLCBjb2wpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uaWNvblBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcy1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjd2l0aG91dEJhZGdlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGFiZWxGb3JWYWx1ZShnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSwgY29sKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGZpZWxkSGFzTWFzayhjb2wpICYmIHBhcnNlVmFsdWVNYXNrVmFsdWUoY29sLCByb3dEYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHJvd0RhdGEsIGNvbC5uYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmllbGRWYWx1ZShyb3dEYXRhLCBjb2wubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc01hc2tGb3JtYXR0ZXI6IHBhcnNlVmFsdWVNYXNrVmFsdWUoY29sLCByb3dEYXRhKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHJvd0RhdGEsIGNvbC5uYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEZpZWxkVmFsdWUocm93RGF0YSwgY29sLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlbXB0eVRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRGaWVsZFZhbHVlKHJvd0RhdGEsIGNvbC5uYW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJwYWdpbmF0b3JyaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmRhdGEtaGlkZGVuXT1cImxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcHJpbnRSZWNvcmRUb3RhbGl6ZXIoKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgc1RlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1jYW5jZWwtYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT1cImxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxPcHRpb25zPy5jYW5jZWxMYWJlbCB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLmNhbmNlbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJoaWRlRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICBzVG9vbHRpcD1cIihBTFQgKyBTSElGVCArIEMpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9zLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8cy1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkICsgJy1zZWxlY3QtYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxPcHRpb25zPy5zZWxlY3RMYWJlbCB8fCAncGxhdGZvcm0uYW5ndWxhcl9jb21wb25lbnRzLnNlbGVjdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJzZWxlY3QoKVwiXG4gICAgICAgICAgICAgICAgICAgIHNUb29sdGlwPVwiKEFMVCArIFNISUZUICsgUylcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvcy1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG48L3MtZGlhbG9nPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5VGVtcGxhdGU+XG4gICAgPHNwYW4gY2xhc3M9XCJzZHMtZW1wdHktdmFsdWVcIj5cbiAgICAgICAge3sgbGFiZWxPcHRpb25zPy5lbXB0eUZpZWxkTGFiZWwgfHwgJ3BsYXRmb3JtLmFuZ3VsYXJfY29tcG9uZW50cy5ub3RfaW5mb3JtZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWFwaS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29tcG9uZW50cy9sb29rdXAvbW9kZWxzL2xvb2t1cC1hcGkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIExvb2t1cFNlYXJjaFJlcXVlc3QgPSB7XG4gICAgZmlsdGVyRGF0YTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBmaXJzdDogbnVtYmVyO1xuICAgIHJvd3M6IG51bWJlcjtcbn07XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2NvbmZpZ3VyYXRpb25zL3N0cnVjdHVyZS9maWVsZHNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RydWN0dXJlQ29uZmlnIH0gZnJvbSAnLi9zdHJ1Y3R1cmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkc2V0Q29uZmlnIGV4dGVuZHMgU3RydWN0dXJlQ29uZmlnIHtcbiAgICB0eXBlOiAnZmllbGRzZXQnO1xuICAgIGJlZm9yZVRvZ2dsZT86IChldmVudDogYW55KSA9PiB2b2lkO1xuICAgIGFmdGVyVG9nZ2xlPzogKGV2ZW50OiBhbnkpID0+IHZvaWQ7XG59XG5kZWNsYXJlIG1vZHVsZSAnLi4vc3RydWN0dXJlL3N0cnVjdHVyZScge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlVHlwZU1hcCB7XG4gICAgICAgIGZpZWxkc2V0OiBGaWVsZHNldENvbmZpZztcbiAgICB9XG59XG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL3NyYy9saWIvZHluYW1pYy1mb3JtL2NvbmZpZ3VyYXRpb25zL3N0cnVjdHVyZS9maWVsZHNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RydWN0dXJlQ29uZmlnIH0gZnJvbSAnLi9zdHJ1Y3R1cmUnO1xuXG4vKipcbiAqIENvbmZpZ3VyYcOnw6NvIHBhcmEgZXN0cnV0dXJhIGRvIHRpcG8gZmllbGRzZXQgKGdydXBvIHJlY29saMOtdmVsKS5cbiAqXG4gKiBBZ3J1cGEgY2FtcG9zIGRlbnRybyBkZSB1bSBwYWluZWwgcXVlIHBvZGUgc2VyIGV4cGFuZGlkbyBvdSByZWNvbGhpZG8gcGVsbyB1c3XDoXJpby5cbiAqIMOadGlsIHBhcmEgc2VwYXJhciBsb2dpY2FtZW50ZSBzZcOnw7VlcyBvcGNpb25haXMgb3UgZGV0YWxoZXMgYXZhbsOnYWRvcyBkbyBmb3JtdWzDoXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZHNldENvbmZpZyBleHRlbmRzIFN0cnVjdHVyZUNvbmZpZyB7XG4gICAgLyoqIFRpcG8gZGEgZXN0cnV0dXJhOiBzZW1wcmUgYCdmaWVsZHNldCdgLiAqL1xuICAgIHR5cGU6ICdmaWVsZHNldCc7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgY2hhbWFkbyBhbnRlcyBkZSBvIHBhaW5lbCBzZXIgZXhwYW5kaWRvIG91IHJlY29saGlkby5cbiAgICAgKiBQb2RlIHNlciB1c2FkbyBwYXJhIGNhbmNlbGFyIGEgYcOnw6NvIG91IHJlYWxpemFyIG9wZXJhw6fDtWVzIHByw6l2aWFzLlxuICAgICAqL1xuICAgIGJlZm9yZVRvZ2dsZT86IChldmVudDogYW55KSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIGNoYW1hZG8gYXDDs3MgbyBwYWluZWwgc2VyIGV4cGFuZGlkbyBvdSByZWNvbGhpZG8uXG4gICAgICovXG4gICAgYWZ0ZXJUb2dnbGU/OiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbn1cbmRlY2xhcmUgbW9kdWxlICcuLi9zdHJ1Y3R1cmUvc3RydWN0dXJlJyB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVUeXBlTWFwIHtcbiAgICAgICAgZmllbGRzZXQ6IEZpZWxkc2V0Q29uZmlnO1xuICAgIH1cbn1cblxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvcm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIGJvb2xlYW5GbiA9ICgpID0+IGJvb2xlYW47XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRTaXplQ29uZmlnIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZC1zaXplJztcbmltcG9ydCB7IER5bmFtaWNUeXBlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZHMvZmllbGQnO1xuaW1wb3J0IHsgRHluYW1pY1N0cnVjdHVyZSB9IGZyb20gJy4uL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnO1xuXG5pbnRlcmZhY2UgUm93QWRkaXRpb25hbEZpZWxkcyB7XG4gICAgc2l6ZT86IEZpZWxkU2l6ZUNvbmZpZztcbiAgICB2aXNpYmxlPzogKCkgPT4gYm9vbGVhbjtcbiAgICBlcnJvck1lc3NhZ2VzPzogKCkgPT4ge30gfCB7fTtcbiAgICBib3R0b21UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICAgIGZvb3Rlcj86IHtcbiAgICAgICAgaGVscD86IHtcbiAgICAgICAgICAgIHRleHQ6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgZm9ybUZpZWxkOiBEeW5hbWljVHlwZSB9KSA9PiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgICBsaW5rPzoge1xuICAgICAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgICAgIG9uQ2xpY2s/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgZm9ybUZpZWxkOiBEeW5hbWljVHlwZSB9KSA9PiB2b2lkO1xuICAgICAgICAgICAgdmlzaWJsZT86IChvcHRpb25zOiB7IGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sOyBmb3JtRmllbGQ6IER5bmFtaWNUeXBlIH0pID0+IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRXhwYW5kZWREeW5hbWljVHlwZSA9IER5bmFtaWNUeXBlICYgUm93QWRkaXRpb25hbEZpZWxkcztcbmV4cG9ydCB0eXBlIEV4cGFuZGVkRHluYW1pY1N0cnVjdHVyZSA9IER5bmFtaWNTdHJ1Y3R1cmUgJiBSb3dBZGRpdGlvbmFsRmllbGRzO1xuZXhwb3J0IHR5cGUgUm93VHlwZSA9IEV4cGFuZGVkRHluYW1pY1R5cGUgfCBFeHBhbmRlZER5bmFtaWNTdHJ1Y3R1cmU7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm93Q29uZmlnIHtcbiAgICB0eXBlOiAncm93JztcbiAgICBmaWVsZHM6IFJvd1R5cGVbXTtcbiAgICB2aXNpYmxlPzogYm9vbGVhbkZuIHwgYm9vbGVhbjtcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVR5cGVNYXAge1xuICAgICAgICByb3c6IFJvd0NvbmZpZztcbiAgICB9XG59XG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvcm93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIGJvb2xlYW5GbiA9ICgpID0+IGJvb2xlYW47XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRTaXplQ29uZmlnIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZC1zaXplJztcbmltcG9ydCB7IER5bmFtaWNUeXBlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9jb25maWd1cmF0aW9ucy9maWVsZHMvZmllbGQnO1xuaW1wb3J0IHsgRHluYW1pY1N0cnVjdHVyZSB9IGZyb20gJy4uL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnO1xuXG4vKipcbiAqIFByb3ByaWVkYWRlcyBhZGljaW9uYWlzIGRpc3BvbsOtdmVpcyBlbSAqKnRvZG8gY2FtcG8gb3UgZXN0cnV0dXJhIGNvbG9jYWRvIGRlbnRybyBkZSB1bSBgcm93YCoqLlxuICpcbiAqIEFvIGluc2VyaXIgdW0gY2FtcG8gZW0gYFJvd0NvbmZpZy5maWVsZHNgLCBlbGUgw6kgZXhwYW5kaWRvIGNvbSBlc3RhcyBwcm9wcmllZGFkZXMgdmlhXG4gKiBgRXhwYW5kZWREeW5hbWljVHlwZWAgLyBgRXhwYW5kZWREeW5hbWljU3RydWN0dXJlYC4gUGVybWl0ZW0gY29udHJvbGFyIGxheW91dCwgdmlzaWJpbGlkYWRlLFxuICogbWVuc2FnZW5zIGRlIGVycm8gZSByb2RhcMOpcyBkZSBmb3JtYSBncmFudWxhciBwb3IgY2FtcG8gZGVudHJvIGRhIGxpbmhhLlxuICovXG5pbnRlcmZhY2UgUm93QWRkaXRpb25hbEZpZWxkcyB7XG4gICAgLyoqXG4gICAgICogVGFtYW5obyAobGFyZ3VyYSkgZGVzdGUgY2FtcG8gZGVudHJvIGRhIGxpbmhhLlxuICAgICAqIFBlcm1pdGUgZGVmaW5pciBjb2x1bmFzIHJlc3BvbnNpdmFzIChleDogbWV0YWRlIGRhIGxpbmhhLCB0ZXLDp28sIGV0Yy4pXG4gICAgICogdXNhbmRvIGBGaWVsZFNpemVDb25maWdgIGNvbSBicmVha3BvaW50cy5cbiAgICAgKi9cbiAgICBzaXplPzogRmllbGRTaXplQ29uZmlnO1xuICAgIC8qKlxuICAgICAqIEZ1bsOnw6NvIHF1ZSByZXRvcm5hIGB0cnVlYCBxdWFuZG8gbyBjYW1wbyBkZXZlIHNlciBleGliaWRvLlxuICAgICAqIFBlcm1pdGUgb2N1bHRhci9leGliaXIgbyBjYW1wbyBkaW5hbWljYW1lbnRlIHNlbSByZW1vdsOqLWxvIGRhIGNvbmZpZ3VyYcOnw6NvLlxuICAgICAqIEBleGFtcGxlICgpID0+IHRoaXMubW9kZWwubW9zdHJhckNhbXBvXG4gICAgICovXG4gICAgdmlzaWJsZT86ICgpID0+IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogRnVuw6fDo28gcXVlIHJldG9ybmEgdW0gbWFwYSBkZSBtZW5zYWdlbnMgZGUgZXJybyBjdXN0b21pemFkYXMgcGFyYSBvIGNhbXBvLlxuICAgICAqIEEgY2hhdmUgw6kgbyBub21lIGRvIHZhbGlkYWRvciAoZXg6IGAncmVxdWlyZWQnYCwgYCdtaW5sZW5ndGgnYCkgZSBvIHZhbG9yIMOpIGEgbWVuc2FnZW0uXG4gICAgICogQGV4YW1wbGUgKCkgPT4gKHsgcmVxdWlyZWQ6ICdDYW1wbyBvYnJpZ2F0w7NyaW8nLCBtaW5sZW5ndGg6ICdNw61uaW1vIDMgY2FyYWN0ZXJlcycgfSlcbiAgICAgKi9cbiAgICBlcnJvck1lc3NhZ2VzPzogKCkgPT4ge30gfCB7fTtcbiAgICAvKipcbiAgICAgKiBUZW1wbGF0ZSBBbmd1bGFyIChgbmctdGVtcGxhdGVgKSByZW5kZXJpemFkbyBhYmFpeG8gZG8gY2FtcG8uXG4gICAgICogVXNlIHBhcmEgYWRpY2lvbmFyIGNvbnRlw7pkbyBjdXN0b21pemFkbyBhYmFpeG8gZG8gaW5wdXQsIGNvbW8gZGljYXMgb3UgaW5mb3JtYcOnw7VlcyBleHRyYXMuXG4gICAgICovXG4gICAgYm90dG9tVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgICAvKipcbiAgICAgKiBSb2RhcMOpIGV4aWJpZG8gYWJhaXhvIGRvIGNhbXBvIGNvbSB0ZXh0byBkZSBhanVkYSBlL291IGxpbmsgZGUgYcOnw6NvLlxuICAgICAqIFBlcm1pdGUgYWRpY2lvbmFyIG9yaWVudGHDp8O1ZXMgY29udGV4dHVhaXMgb3UgYXRhbGhvcyBkaXJldGFtZW50ZSBhc3NvY2lhZG9zIGFvIGNhbXBvLlxuICAgICAqL1xuICAgIGZvb3Rlcj86IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRleHRvIGRlIGFqdWRhIGV4aWJpZG8gbm8gcm9kYXDDqSBkbyBjYW1wby5cbiAgICAgICAgICovXG4gICAgICAgIGhlbHA/OiB7XG4gICAgICAgICAgICAvKiogVGV4dG8gZGUgYWp1ZGEgZXhpYmlkbyBubyByb2RhcMOpLiAqL1xuICAgICAgICAgICAgdGV4dDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGdW7Dp8OjbyBxdWUgY29udHJvbGEgYSB2aXNpYmlsaWRhZGUgZG8gdGV4dG8gZGUgYWp1ZGEuXG4gICAgICAgICAgICAgKiBSZWNlYmUgbyBgQWJzdHJhY3RDb250cm9sYCBlIGEgY29uZmlndXJhw6fDo28gZG8gY2FtcG8uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZpc2libGU/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgZm9ybUZpZWxkOiBEeW5hbWljVHlwZSB9KSA9PiBib29sZWFuO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogTGluayBjbGljw6F2ZWwgZXhpYmlkbyBubyByb2RhcMOpIGRvIGNhbXBvLlxuICAgICAgICAgKi9cbiAgICAgICAgbGluaz86IHtcbiAgICAgICAgICAgIC8qKiBUZXh0byBleGliaWRvIG5vIGxpbmsuICovXG4gICAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDYWxsYmFjayBjaGFtYWRvIGFvIGNsaWNhciBubyBsaW5rIGRvIHJvZGFww6kuXG4gICAgICAgICAgICAgKiBSZWNlYmUgbyBgQWJzdHJhY3RDb250cm9sYCBlIGEgY29uZmlndXJhw6fDo28gZG8gY2FtcG8uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG9uQ2xpY2s/OiAob3B0aW9uczogeyBhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDsgZm9ybUZpZWxkOiBEeW5hbWljVHlwZSB9KSA9PiB2b2lkO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBGdW7Dp8OjbyBxdWUgY29udHJvbGEgYSB2aXNpYmlsaWRhZGUgZG8gbGluay5cbiAgICAgICAgICAgICAqIFJlY2ViZSBvIGBBYnN0cmFjdENvbnRyb2xgIGUgYSBjb25maWd1cmHDp8OjbyBkbyBjYW1wby5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmlzaWJsZT86IChvcHRpb25zOiB7IGFic3RyYWN0Q29udHJvbDogQWJzdHJhY3RDb250cm9sOyBmb3JtRmllbGQ6IER5bmFtaWNUeXBlIH0pID0+IGJvb2xlYW47XG4gICAgICAgIH07XG4gICAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRXhwYW5kZWREeW5hbWljVHlwZSA9IER5bmFtaWNUeXBlICYgUm93QWRkaXRpb25hbEZpZWxkcztcbmV4cG9ydCB0eXBlIEV4cGFuZGVkRHluYW1pY1N0cnVjdHVyZSA9IER5bmFtaWNTdHJ1Y3R1cmUgJiBSb3dBZGRpdGlvbmFsRmllbGRzO1xuZXhwb3J0IHR5cGUgUm93VHlwZSA9IEV4cGFuZGVkRHluYW1pY1R5cGUgfCBFeHBhbmRlZER5bmFtaWNTdHJ1Y3R1cmU7XG5cbi8qKlxuICogQ29uZmlndXJhw6fDo28gcGFyYSBlc3RydXR1cmEgZG8gdGlwbyBsaW5oYSAocm93KS5cbiAqXG4gKiBPcmdhbml6YSBjYW1wb3MgbGFkbyBhIGxhZG8gZW0gdW1hIGxpbmhhIGhvcml6b250YWwgdXNhbmRvIGdyaWQgbGF5b3V0LlxuICogQ2FkYSBjYW1wbyBkZW50cm8gZGUgdW0gYHJvd2AgcG9kZSByZWNlYmVyIHByb3ByaWVkYWRlcyBhZGljaW9uYWlzIGRlIGBSb3dBZGRpdGlvbmFsRmllbGRzYCxcbiAqIGNvbW8gYHNpemVgLCBgdmlzaWJsZWAsIGBlcnJvck1lc3NhZ2VzYCwgYGZvb3RlcmAgZSBgYm90dG9tVGVtcGxhdGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvd0NvbmZpZyB7XG4gICAgLyoqIFRpcG8gZGEgZXN0cnV0dXJhOiBzZW1wcmUgYCdyb3cnYC4gKi9cbiAgICB0eXBlOiAncm93JztcbiAgICAvKipcbiAgICAgKiBMaXN0YSBkZSBjYW1wb3MgZSBzdWItZXN0cnV0dXJhcyBkaXNwb3N0b3MgZW0gbGluaGEuXG4gICAgICogQ2FkYSBpdGVtIHBvZGUgdGVyIHByb3ByaWVkYWRlcyBhZGljaW9uYWlzIGRlIGBSb3dBZGRpdGlvbmFsRmllbGRzYCAoc2l6ZSwgdmlzaWJsZSwgZm9vdGVyLCBldGMuKS5cbiAgICAgKi9cbiAgICBmaWVsZHM6IFJvd1R5cGVbXTtcbiAgICAvKipcbiAgICAgKiBDb250cm9sYSBhIHZpc2liaWxpZGFkZSBkYSBsaW5oYSBpbnRlaXJhLlxuICAgICAqIFBvZGUgc2VyIHVtIGJvb2xlYW5vIGVzdMOhdGljbyBvdSBmdW7Dp8OjbyByZWF0aXZhLlxuICAgICAqIEBleGFtcGxlICgpID0+IHRoaXMubW9kZWwubW9zdHJhclNlY2FvXG4gICAgICovXG4gICAgdmlzaWJsZT86IGJvb2xlYW5GbiB8IGJvb2xlYW47XG59XG5cbmRlY2xhcmUgbW9kdWxlICcuLi9zdHJ1Y3R1cmUvc3RydWN0dXJlJyB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVUeXBlTWFwIHtcbiAgICAgICAgcm93OiBSb3dDb25maWc7XG4gICAgfVxufVxuXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cnVjdHVyZUNvbmZpZyB9IGZyb20gJy4vc3RydWN0dXJlJztcbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvbkNvbmZpZyBleHRlbmRzIFN0cnVjdHVyZUNvbmZpZyB7XG4gICAgdHlwZTogJ3NlY3Rpb24nO1xuICAgIC8qKlxuICAgICAqIERlZmluZSBpZiB0aGUgc3RydWN0dXJlIGlzIGEgZmxleCBjb250YWluZXIuXG4gICAgICovXG4gICAgaXNGbGV4PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGp1c3RpZnktY29udGVudCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBqdXN0aWZ5Q29udGVudD86ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1iZXR3ZWVuJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWV2ZW5seSc7XG4gICAgLyoqXG4gICAgICogRGVmaW5lIHRoZSBhbGlnbi1pdGVtcyBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBhbGlnbkl0ZW1zPzogJ3N0cmV0Y2gnIHwgJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ2Jhc2VsaW5lJyB8ICdpbml0aWFsJyB8ICdpbmhlcml0Jztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVR5cGVNYXAge1xuICAgICAgICBzZWN0aW9uOiBTZWN0aW9uQ29uZmlnO1xuICAgIH1cbn1cblxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9keW5hbWljLWZvcm0vc3JjL2xpYi9keW5hbWljLWZvcm0vY29uZmlndXJhdGlvbnMvc3RydWN0dXJlL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0cnVjdHVyZUNvbmZpZyB9IGZyb20gJy4vc3RydWN0dXJlJztcblxuLyoqXG4gKiBDb25maWd1cmHDp8OjbyBwYXJhIGVzdHJ1dHVyYSBkbyB0aXBvIHNlw6fDo28uXG4gKlxuICogw4kgbyBjb250YWluZXIgcHJpbmNpcGFsIGRvIER5bmFtaWNGb3JtLCBhZ3J1cGEgY2FtcG9zIGUgb3V0cmFzIGVzdHJ1dHVyYXMuXG4gKiBTdXBvcnRhIGxheW91dCBmbGV4Ym94IHBhcmEgY29udHJvbGFyIGRpc3Bvc2nDp8OjbyBkb3MgZmlsaG9zIGNvbSBgaXNGbGV4YCxcbiAqIGBqdXN0aWZ5Q29udGVudGAgZSBgYWxpZ25JdGVtc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdGlvbkNvbmZpZyBleHRlbmRzIFN0cnVjdHVyZUNvbmZpZyB7XG4gICAgLyoqIFRpcG8gZGEgZXN0cnV0dXJhOiBzZW1wcmUgYCdzZWN0aW9uJ2AuICovXG4gICAgdHlwZTogJ3NlY3Rpb24nO1xuICAgIC8qKlxuICAgICAqIERlZmluZSBpZiB0aGUgc3RydWN0dXJlIGlzIGEgZmxleCBjb250YWluZXIuXG4gICAgICovXG4gICAgaXNGbGV4PzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGp1c3RpZnktY29udGVudCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBqdXN0aWZ5Q29udGVudD86ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1iZXR3ZWVuJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWV2ZW5seSc7XG4gICAgLyoqXG4gICAgICogRGVmaW5lIHRoZSBhbGlnbi1pdGVtcyBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBhbGlnbkl0ZW1zPzogJ3N0cmV0Y2gnIHwgJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ2Jhc2VsaW5lJyB8ICdpbml0aWFsJyB8ICdpbmhlcml0Jztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL3N0cnVjdHVyZS9zdHJ1Y3R1cmUnIHtcbiAgICBleHBvcnQgaW50ZXJmYWNlIFN0cnVjdHVyZVR5cGVNYXAge1xuICAgICAgICBzZWN0aW9uOiBTZWN0aW9uQ29uZmlnO1xuICAgIH1cbn1cblxuIl19
@@ -1,2 +1,2 @@
1
1
  export const STRUCTURE_TYPES_LIST = ['fieldset', 'row', 'section'];
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvc3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFvQixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEeW5hbWljVHlwZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvY29uZmlndXJhdGlvbnMvZmllbGRzL2ZpZWxkJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVDb25maWcge1xuICAgIHR5cGU6IFN0cnVjdHVyZVR5cGU7XG4gICAgY29uZmlnczogKER5bmFtaWNUeXBlIHwgRHluYW1pY1N0cnVjdHVyZSlbXTtcbiAgICBoZWFkZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlVHlwZU1hcCB7fVxuZXhwb3J0IHR5cGUgU3RydWN0dXJlVHlwZSA9IGtleW9mIFN0cnVjdHVyZVR5cGVNYXA7XG5leHBvcnQgdHlwZSBEeW5hbWljU3RydWN0dXJlID0gU3RydWN0dXJlVHlwZU1hcFtrZXlvZiBTdHJ1Y3R1cmVUeXBlTWFwXTtcblxuZXhwb3J0IGNvbnN0IFNUUlVDVFVSRV9UWVBFU19MSVNUOiBTdHJ1Y3R1cmVUeXBlW10gPSBbJ2ZpZWxkc2V0JywgJ3JvdycsICdzZWN0aW9uJ107XG5cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9zcmMvbGliL2R5bmFtaWMtZm9ybS9jb25maWd1cmF0aW9ucy9zdHJ1Y3R1cmUvc3RydWN0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStCQSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBb0IsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY1R5cGUgfSBmcm9tICcuLi8uLi9mb3JtLWZpZWxkL2NvbmZpZ3VyYXRpb25zL2ZpZWxkcy9maWVsZCc7XG5cbi8qKlxuICogQ29uZmlndXJhw6fDo28gYmFzZSBjb21wYXJ0aWxoYWRhIHBvciAqKnRvZG9zKiogb3MgdGlwb3MgZGUgZXN0cnV0dXJhIGRvIER5bmFtaWNGb3JtLlxuICpcbiAqIEVzdHJ1dHVyYXMgc8OjbyBjb250w6ppbmVyZXMgcXVlIGFncnVwYW0gY2FtcG9zIGUgb3V0cmFzIGVzdHJ1dHVyYXMuXG4gKiBPcyB0aXBvcyBkaXNwb27DrXZlaXMgc8OjbzogYCdzZWN0aW9uJ2AsIGAncm93J2AsIGAnZmllbGRzZXQnYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJ1Y3R1cmVDb25maWcge1xuICAgIC8qKlxuICAgICAqIFRpcG8gZGEgZXN0cnV0dXJhLiBEZXZlIHNlciB1bSBkb3MgdmFsb3JlcyByZWdpc3RyYWRvcyBlbSBgU3RydWN0dXJlVHlwZU1hcGAuXG4gICAgICogVmFsb3JlcyBkaXNwb27DrXZlaXM6IGAnc2VjdGlvbidgLCBgJ3JvdydgLCBgJ2ZpZWxkc2V0J2AuXG4gICAgICovXG4gICAgdHlwZTogU3RydWN0dXJlVHlwZTtcbiAgICAvKipcbiAgICAgKiBMaXN0YSBkZSBjYW1wb3MgZSBzdWItZXN0cnV0dXJhcyBjb250aWRhcyBuZXN0YSBlc3RydXR1cmEuXG4gICAgICogQ2FkYSBpdGVtIHBvZGUgc2VyIHVtIGBEeW5hbWljVHlwZWAgKGNhbXBvKSBvdSBgRHluYW1pY1N0cnVjdHVyZWAgKGVzdHJ1dHVyYSBhbmluaGFkYSkuXG4gICAgICogQGV4YW1wbGUgW3sgdHlwZTogJ3N0cmluZycsIG5hbWU6ICdub21lJywgbGFiZWw6ICdOb21lJyB9XVxuICAgICAqL1xuICAgIGNvbmZpZ3M6IChEeW5hbWljVHlwZSB8IER5bmFtaWNTdHJ1Y3R1cmUpW107XG4gICAgLyoqXG4gICAgICogVMOtdHVsbyBvcGNpb25hbCBleGliaWRvIG5vIGNhYmXDp2FsaG8gZGEgZXN0cnV0dXJhLlxuICAgICAqIFVzYWRvLCBwb3IgZXhlbXBsbywgY29tbyB0w610dWxvIGRlIHNlw6fDtWVzIG91IGZpZWxkc2V0cy5cbiAgICAgKi9cbiAgICBoZWFkZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RydWN0dXJlVHlwZU1hcCB7fVxuZXhwb3J0IHR5cGUgU3RydWN0dXJlVHlwZSA9IGtleW9mIFN0cnVjdHVyZVR5cGVNYXA7XG5leHBvcnQgdHlwZSBEeW5hbWljU3RydWN0dXJlID0gU3RydWN0dXJlVHlwZU1hcFtrZXlvZiBTdHJ1Y3R1cmVUeXBlTWFwXTtcblxuZXhwb3J0IGNvbnN0IFNUUlVDVFVSRV9UWVBFU19MSVNUOiBTdHJ1Y3R1cmVUeXBlW10gPSBbJ2ZpZWxkc2V0JywgJ3JvdycsICdzZWN0aW9uJ107XG5cbiJdfQ==