cax-design-system 2.7.12 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/README.md +46 -46
  2. package/esm2022/accordion/accordion.mjs +3 -3
  3. package/esm2022/autocomplete/autocomplete.mjs +3 -3
  4. package/esm2022/avatar/avatar.mjs +3 -3
  5. package/esm2022/avatargroup/avatargroup.mjs +3 -3
  6. package/esm2022/badge/badge.mjs +3 -3
  7. package/esm2022/breadcrumb/breadcrumb.mjs +3 -3
  8. package/esm2022/button/button.mjs +3 -3
  9. package/esm2022/calendar/calendar.mjs +3 -3
  10. package/esm2022/card/card.mjs +3 -3
  11. package/esm2022/cascadeselect/cascadeselect.mjs +5 -5
  12. package/esm2022/checkbox/checkbox.mjs +3 -3
  13. package/esm2022/chip/chip.mjs +3 -3
  14. package/esm2022/chips/chips.mjs +3 -3
  15. package/esm2022/colorpicker/colorpicker.mjs +3 -3
  16. package/esm2022/commentbox/commentbox.mjs +3 -3
  17. package/esm2022/confirmdialog/confirmdialog.mjs +3 -3
  18. package/esm2022/dialog/dialog.mjs +3 -3
  19. package/esm2022/divider/divider.mjs +3 -3
  20. package/esm2022/dropdown/dropdown-item.mjs +3 -3
  21. package/esm2022/dropdown/dropdown.mjs +3 -3
  22. package/esm2022/editor/editor.mjs +3 -3
  23. package/esm2022/image/image.mjs +3 -3
  24. package/esm2022/inputgroup/inputgroup.mjs +3 -3
  25. package/esm2022/inputgroupaddon/inputgroupaddon.mjs +3 -3
  26. package/esm2022/inputmask/inputmask.mjs +3 -3
  27. package/esm2022/inputnumber/inputnumber.mjs +3 -3
  28. package/esm2022/inputtext/inputtext.component.mjs +3 -3
  29. package/esm2022/inputtextarea/inputtextarea.component.mjs +3 -3
  30. package/esm2022/logo/logo.mjs +3 -3
  31. package/esm2022/menu/menu.mjs +5 -5
  32. package/esm2022/messages/messages.mjs +3 -3
  33. package/esm2022/multiselect/multiselect.mjs +5 -5
  34. package/esm2022/navigation/navigation.mjs +3 -3
  35. package/esm2022/overlay/overlay.mjs +3 -3
  36. package/esm2022/overlaypanel/overlaypanel.mjs +3 -3
  37. package/esm2022/paginator/paginator.mjs +3 -3
  38. package/esm2022/progressbar/progressbar.mjs +3 -3
  39. package/esm2022/progressspinner/progressspinner.mjs +3 -3
  40. package/esm2022/radiobutton/radiobutton.mjs +3 -3
  41. package/esm2022/scroller/scroller.mjs +3 -3
  42. package/esm2022/selectbutton/selectbutton.mjs +3 -3
  43. package/esm2022/sidebar/sidebar.mjs +3 -3
  44. package/esm2022/skeleton/skeleton.mjs +3 -3
  45. package/esm2022/speeddial/speeddial.mjs +3 -3
  46. package/esm2022/splitbutton/splitbutton.mjs +3 -3
  47. package/esm2022/splitter/splitter.mjs +3 -3
  48. package/esm2022/steps/steps.mjs +3 -3
  49. package/esm2022/table/components/cell-editor/cell-editor.mjs +3 -3
  50. package/esm2022/table/components/column-filter/column-filter.mjs +3 -3
  51. package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +3 -3
  52. package/esm2022/table/components/sort-icon/sort-icon.mjs +3 -3
  53. package/esm2022/table/components/table-body/table-body.mjs +3 -3
  54. package/esm2022/table/components/table-checkbox/table-checkbox.mjs +3 -3
  55. package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +3 -3
  56. package/esm2022/table/components/table-radio-button/table-radio-button.mjs +3 -3
  57. package/esm2022/table/table.mjs +3 -3
  58. package/esm2022/tableconfiguration/tableconfiguration.mjs +3 -3
  59. package/esm2022/tabview/tabview.mjs +5 -5
  60. package/esm2022/tag/tag.mjs +3 -3
  61. package/esm2022/timeline/timeline.mjs +3 -3
  62. package/esm2022/toast/toast.mjs +3 -3
  63. package/esm2022/toast/toastitem.mjs +3 -3
  64. package/esm2022/toggleswitch/toggleswitch.mjs +3 -3
  65. package/esm2022/tree/tree.mjs +5 -5
  66. package/esm2022/treeselect/treeselect.mjs +3 -3
  67. package/esm2022/tristatecheckbox/tristatecheckbox.mjs +3 -3
  68. package/esm2022/upload/upload.component.mjs +3 -3
  69. package/fesm2022/cax-design-system-accordion.mjs +2 -2
  70. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  71. package/fesm2022/cax-design-system-autocomplete.mjs +2 -2
  72. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  73. package/fesm2022/cax-design-system-avatar.mjs +2 -2
  74. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  75. package/fesm2022/cax-design-system-avatargroup.mjs +2 -2
  76. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  77. package/fesm2022/cax-design-system-badge.mjs +2 -2
  78. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  79. package/fesm2022/cax-design-system-breadcrumb.mjs +2 -2
  80. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  81. package/fesm2022/cax-design-system-button.mjs +2 -2
  82. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  83. package/fesm2022/cax-design-system-calendar.mjs +2 -2
  84. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  85. package/fesm2022/cax-design-system-card.mjs +2 -2
  86. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  87. package/fesm2022/cax-design-system-cascadeselect.mjs +4 -4
  88. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  89. package/fesm2022/cax-design-system-checkbox.mjs +2 -2
  90. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  91. package/fesm2022/cax-design-system-chip.mjs +2 -2
  92. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  93. package/fesm2022/cax-design-system-chips.mjs +2 -2
  94. package/fesm2022/cax-design-system-chips.mjs.map +1 -1
  95. package/fesm2022/cax-design-system-colorpicker.mjs +2 -2
  96. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  97. package/fesm2022/cax-design-system-commentbox.mjs +2 -2
  98. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  99. package/fesm2022/cax-design-system-confirmdialog.mjs +2 -2
  100. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  101. package/fesm2022/cax-design-system-dialog.mjs +2 -2
  102. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  103. package/fesm2022/cax-design-system-divider.mjs +2 -2
  104. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  105. package/fesm2022/cax-design-system-dropdown.mjs +4 -4
  106. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  107. package/fesm2022/cax-design-system-editor.mjs +2 -2
  108. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  109. package/fesm2022/cax-design-system-image.mjs +2 -2
  110. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  111. package/fesm2022/cax-design-system-inputgroup.mjs +2 -2
  112. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  113. package/fesm2022/cax-design-system-inputgroupaddon.mjs +2 -2
  114. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  115. package/fesm2022/cax-design-system-inputmask.mjs +2 -2
  116. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  117. package/fesm2022/cax-design-system-inputnumber.mjs +2 -2
  118. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  119. package/fesm2022/cax-design-system-inputtext.mjs +2 -2
  120. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  121. package/fesm2022/cax-design-system-inputtextarea.mjs +2 -2
  122. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-logo.mjs +2 -2
  124. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-menu.mjs +4 -4
  126. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-messages.mjs +2 -2
  128. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  129. package/fesm2022/cax-design-system-multiselect.mjs +4 -4
  130. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  131. package/fesm2022/cax-design-system-navigation.mjs +2 -2
  132. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  133. package/fesm2022/cax-design-system-overlay.mjs +2 -2
  134. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  135. package/fesm2022/cax-design-system-overlaypanel.mjs +2 -2
  136. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  137. package/fesm2022/cax-design-system-paginator.mjs +2 -2
  138. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  139. package/fesm2022/cax-design-system-progressbar.mjs +2 -2
  140. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  141. package/fesm2022/cax-design-system-progressspinner.mjs +2 -2
  142. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  143. package/fesm2022/cax-design-system-radiobutton.mjs +2 -2
  144. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  145. package/fesm2022/cax-design-system-scroller.mjs +2 -2
  146. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  147. package/fesm2022/cax-design-system-selectbutton.mjs +2 -2
  148. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  149. package/fesm2022/cax-design-system-sidebar.mjs +2 -2
  150. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  151. package/fesm2022/cax-design-system-skeleton.mjs +2 -2
  152. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  153. package/fesm2022/cax-design-system-speeddial.mjs +2 -2
  154. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  155. package/fesm2022/cax-design-system-splitbutton.mjs +2 -2
  156. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  157. package/fesm2022/cax-design-system-splitter.mjs +2 -2
  158. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  159. package/fesm2022/cax-design-system-steps.mjs +2 -2
  160. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  161. package/fesm2022/cax-design-system-table.mjs +18 -18
  162. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  163. package/fesm2022/cax-design-system-tableconfiguration.mjs +2 -2
  164. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  165. package/fesm2022/cax-design-system-tabview.mjs +4 -4
  166. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  167. package/fesm2022/cax-design-system-tag.mjs +2 -2
  168. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  169. package/fesm2022/cax-design-system-timeline.mjs +2 -2
  170. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  171. package/fesm2022/cax-design-system-toast.mjs +4 -4
  172. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  173. package/fesm2022/cax-design-system-toggleswitch.mjs +2 -2
  174. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  175. package/fesm2022/cax-design-system-tree.mjs +4 -4
  176. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  177. package/fesm2022/cax-design-system-treeselect.mjs +2 -2
  178. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  179. package/fesm2022/cax-design-system-tristatecheckbox.mjs +2 -2
  180. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  181. package/fesm2022/cax-design-system-upload.mjs +2 -2
  182. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  183. package/package.json +138 -138
  184. package/resources/cax.min.scss +1 -1
  185. package/resources/cax.scss +12518 -12488
  186. package/resources/components/accordion/accordion.scss +46 -46
  187. package/resources/components/autocomplete/autocomplete.scss +183 -183
  188. package/resources/components/avatar/avatar.scss +34 -34
  189. package/resources/components/avatargroup/avatargroup.scss +10 -10
  190. package/resources/components/badge/badge.scss +67 -67
  191. package/resources/components/blockui/blockui.css +26 -26
  192. package/resources/components/breadcrumb/breadcrumb.scss +33 -33
  193. package/resources/components/button/button.scss +163 -163
  194. package/resources/components/calendar/calendar.scss +235 -235
  195. package/resources/components/card/card.scss +50 -50
  196. package/resources/components/carousel/carousel.css +71 -71
  197. package/resources/components/cascadeselect/cascadeselect.scss +105 -105
  198. package/resources/components/checkbox/checkbox.scss +30 -30
  199. package/resources/components/chip/chip.scss +6 -6
  200. package/resources/components/chips/chips.scss +205 -205
  201. package/resources/components/colorpicker/colorpicker-images.scss +6 -6
  202. package/resources/components/colorpicker/colorpicker.scss +82 -82
  203. package/resources/components/commentbox/commentbox.scss +611 -611
  204. package/resources/components/common/common.scss +183 -183
  205. package/resources/components/confirmpopup/confirmpopup.css +53 -53
  206. package/resources/components/contextmenu/contextmenu.css +42 -42
  207. package/resources/components/dataview/dataview.css +13 -13
  208. package/resources/components/dialog/dialog.scss +171 -171
  209. package/resources/components/divider/divider.scss +86 -86
  210. package/resources/components/dock/dock.css +107 -107
  211. package/resources/components/dropdown/dropdown.scss +94 -94
  212. package/resources/components/editor/editor.scss +3 -3
  213. package/resources/components/fieldset/fieldset.css +30 -30
  214. package/resources/components/fileupload/fileupload.css +47 -47
  215. package/resources/components/galleria/galleria.css +281 -281
  216. package/resources/components/iconfield/iconfield.css +5 -5
  217. package/resources/components/image/image.scss +92 -92
  218. package/resources/components/inplace/inplace.css +19 -19
  219. package/resources/components/inputicon/inputicon.css +6 -6
  220. package/resources/components/inputmask/inputmask.scss +12 -12
  221. package/resources/components/inputnumber/inputnumber.scss +109 -109
  222. package/resources/components/inputotp/inputotp.css +2 -2
  223. package/resources/components/inputswitch/inputswitch.css +23 -23
  224. package/resources/components/inputtext/inputtext.scss +145 -145
  225. package/resources/components/inputtextarea/inputtextarea.scss +10 -10
  226. package/resources/components/knob/knob.css +20 -20
  227. package/resources/components/listbox/listbox.css +40 -40
  228. package/resources/components/megamenu/megamenu.css +108 -108
  229. package/resources/components/menu/menu.scss +30 -30
  230. package/resources/components/menubar/menubar.css +81 -81
  231. package/resources/components/message/message.css +17 -17
  232. package/resources/components/messages/messages.scss +55 -55
  233. package/resources/components/multiselect/multiselect.scss +132 -132
  234. package/resources/components/navigation/navigation.scss +196 -196
  235. package/resources/components/orderlist/orderlist.css +78 -78
  236. package/resources/components/organizationchart/organizationchart.css +62 -62
  237. package/resources/components/overlay/overlay.scss +80 -80
  238. package/resources/components/overlaypanel/overlaypanel.scss +66 -66
  239. package/resources/components/paginator/paginator.scss +41 -41
  240. package/resources/components/panel/panel.css +29 -29
  241. package/resources/components/panelmenu/panelmenu.css +45 -45
  242. package/resources/components/password/password.css +54 -54
  243. package/resources/components/picklist/picklist.css +60 -60
  244. package/resources/components/progressbar/progressbar.scss +107 -107
  245. package/resources/components/progressspinner/progressspinner.scss +94 -94
  246. package/resources/components/radiobutton/radiobutton.scss +34 -34
  247. package/resources/components/rating/rating.css +15 -15
  248. package/resources/components/ripple/ripple.scss +29 -29
  249. package/resources/components/scroller/scroller.scss +58 -58
  250. package/resources/components/scrollpanel/scrollpanel.css +50 -50
  251. package/resources/components/scrolltop/scrolltop.css +18 -18
  252. package/resources/components/sidebar/sidebar.scss +117 -117
  253. package/resources/components/skeleton/skeleton.scss +24 -24
  254. package/resources/components/slidemenu/slidemenu.css +100 -100
  255. package/resources/components/slider/slider.css +41 -41
  256. package/resources/components/speeddial/speeddial.scss +122 -122
  257. package/resources/components/spinner/spinner.css +63 -63
  258. package/resources/components/splitbutton/splitbutton.scss +53 -53
  259. package/resources/components/splitter/splitter.scss +73 -73
  260. package/resources/components/stepper/stepper.css +9 -9
  261. package/resources/components/steps/steps.scss +50 -50
  262. package/resources/components/table/table.scss +451 -451
  263. package/resources/components/tableconfiguration/tableconfiguration.scss +115 -115
  264. package/resources/components/tabmenu/tabmenu.css +80 -80
  265. package/resources/components/tabview/tabview.scss +198 -198
  266. package/resources/components/tag/tag.scss +23 -23
  267. package/resources/components/terminal/terminal.css +24 -24
  268. package/resources/components/tieredmenu/tieredmenu.scss +55 -55
  269. package/resources/components/timeline/timeline.scss +128 -128
  270. package/resources/components/toast/toast.scss +87 -87
  271. package/resources/components/toggleswitch/toggleswitch.scss +36 -36
  272. package/resources/components/toolbar/toolbar.css +19 -19
  273. package/resources/components/tooltip/tooltip.scss +124 -124
  274. package/resources/components/tree/tree.scss +154 -154
  275. package/resources/components/treeselect/treeselect.scss +114 -114
  276. package/resources/components/treetable/treetable.css +205 -205
  277. package/resources/components/upload/upload.component.scss +145 -145
  278. package/resources/logo/dataX-dark.svg +12 -12
  279. package/resources/logo/dataX-icon-dark.svg +5 -5
  280. package/resources/logo/dataX-icon.svg +5 -5
  281. package/resources/logo/dataX.svg +12 -12
  282. package/resources/styles/colors.scss +397 -397
  283. package/resources/styles/shadow-blur.scss +21 -21
  284. package/resources/styles/space-radius-border.scss +49 -49
  285. package/resources/styles/typography.scss +116 -135
@@ -231,13 +231,13 @@ export class RadioButton {
231
231
  `);
232
232
  }
233
233
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RadioButton, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: RadioControlRegistry }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
234
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: RadioButton, isStandalone: true, selector: "cax-radioButton", inputs: { value: "value", size: "size", formControlName: "formControlName", name: "name", disabled: ["disabled", "disabled", booleanAttribute], label: "label", variant: "variant", tabindex: ["tabindex", "tabindex", numberAttribute], inputId: "inputId", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", autofocus: ["autofocus", "autofocus", booleanAttribute] }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "cax-element" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-radiobutton cax-component': true,\r\n 'cax-radiobutton-checked': checked,\r\n 'cax-radiobutton-disabled': disabled,\r\n 'cax-radiobutton-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled',\r\n 'cax-radiobutton-sm': size === 'sm',\r\n 'cax-radiobutton-md': size === 'md' || !size,\r\n 'cax-radiobutton-lg': size === 'lg'\r\n }\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'radiobutton'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n (click)=\"handleClick($event, input, true)\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"radio\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-checked]=\"checked\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n pAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div [ngClass]=\"{ 'cax-radiobutton-box': true, 'cax-highlight': checked, 'cax-disabled': disabled, 'cax-focus': focused }\" [attr.data-pc-section]=\"'input'\">\r\n <span class=\"cax-radiobutton-icon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"select($event)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{ 'cax-radiobutton-label': true, 'cax-radiobutton-label-active': input.checked, 'cax-disabled': disabled, 'cax-radiobutton-label-focus': focused, 'cax-radiobutton-label-sm': size === 'sm',\r\n 'cax-radiobutton-label-md': size === 'md' || !size,\r\n 'cax-radiobutton-label-lg': size === 'lg' }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n >{{ label }}</label\r\n>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AutoFocusModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
234
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: RadioButton, isStandalone: true, selector: "cax-radioButton", inputs: { value: "value", size: "size", formControlName: "formControlName", name: "name", disabled: ["disabled", "disabled", booleanAttribute], label: "label", variant: "variant", tabindex: ["tabindex", "tabindex", numberAttribute], inputId: "inputId", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", style: "style", styleClass: "styleClass", labelStyleClass: "labelStyleClass", autofocus: ["autofocus", "autofocus", booleanAttribute] }, outputs: { onClick: "onClick", onFocus: "onFocus", onBlur: "onBlur" }, host: { classAttribute: "cax-element" }, providers: [RADIO_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputViewChild", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div\n [ngStyle]=\"style\"\n [ngClass]=\"{\n 'cax-radiobutton cax-component': true,\n 'cax-radiobutton-checked': checked,\n 'cax-radiobutton-disabled': disabled,\n 'cax-radiobutton-focused': focused,\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled',\n 'cax-radiobutton-sm': size === 'sm',\n 'cax-radiobutton-md': size === 'md' || !size,\n 'cax-radiobutton-lg': size === 'lg'\n }\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'radiobutton'\"\n [attr.data-pc-section]=\"'root'\"\n (click)=\"handleClick($event, input, true)\"\n>\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\">\n <input\n #input\n [attr.id]=\"inputId\"\n type=\"radio\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-checked]=\"checked\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'hiddenInput'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n />\n </div>\n <div [ngClass]=\"{ 'cax-radiobutton-box': true, 'cax-highlight': checked, 'cax-disabled': disabled, 'cax-focus': focused }\" [attr.data-pc-section]=\"'input'\">\n <span class=\"cax-radiobutton-icon\" [attr.data-pc-section]=\"'icon'\"></span>\n </div>\n</div>\n<label\n (click)=\"select($event)\"\n [class]=\"labelStyleClass\"\n [ngClass]=\"{ 'cax-radiobutton-label': true, 'cax-radiobutton-label-active': input.checked, 'cax-disabled': disabled, 'cax-radiobutton-label-focus': focused, 'cax-radiobutton-label-sm': size === 'sm',\n 'cax-radiobutton-label-md': size === 'md' || !size,\n 'cax-radiobutton-label-lg': size === 'lg' }\"\n *ngIf=\"label\"\n [attr.for]=\"inputId\"\n [attr.data-pc-section]=\"'label'\"\n >{{ label }}</label\n>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: AutoFocusModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
235
235
  }
236
236
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RadioButton, decorators: [{
237
237
  type: Component,
238
238
  args: [{ selector: 'cax-radioButton', providers: [RADIO_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, AutoFocusModule], host: {
239
239
  class: 'cax-element'
240
- }, template: "<div\r\n [ngStyle]=\"style\"\r\n [ngClass]=\"{\r\n 'cax-radiobutton cax-component': true,\r\n 'cax-radiobutton-checked': checked,\r\n 'cax-radiobutton-disabled': disabled,\r\n 'cax-radiobutton-focused': focused,\r\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled',\r\n 'cax-radiobutton-sm': size === 'sm',\r\n 'cax-radiobutton-md': size === 'md' || !size,\r\n 'cax-radiobutton-lg': size === 'lg'\r\n }\"\r\n [class]=\"styleClass\"\r\n [attr.data-pc-name]=\"'radiobutton'\"\r\n [attr.data-pc-section]=\"'root'\"\r\n (click)=\"handleClick($event, input, true)\"\r\n>\r\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\">\r\n <input\r\n #input\r\n [attr.id]=\"inputId\"\r\n type=\"radio\"\r\n [attr.name]=\"name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-checked]=\"checked\"\r\n (focus)=\"onInputFocus($event)\"\r\n (blur)=\"onInputBlur($event)\"\r\n [attr.data-pc-section]=\"'hiddenInput'\"\r\n pAutoFocus\r\n [autofocus]=\"autofocus\"\r\n />\r\n </div>\r\n <div [ngClass]=\"{ 'cax-radiobutton-box': true, 'cax-highlight': checked, 'cax-disabled': disabled, 'cax-focus': focused }\" [attr.data-pc-section]=\"'input'\">\r\n <span class=\"cax-radiobutton-icon\" [attr.data-pc-section]=\"'icon'\"></span>\r\n </div>\r\n</div>\r\n<label\r\n (click)=\"select($event)\"\r\n [class]=\"labelStyleClass\"\r\n [ngClass]=\"{ 'cax-radiobutton-label': true, 'cax-radiobutton-label-active': input.checked, 'cax-disabled': disabled, 'cax-radiobutton-label-focus': focused, 'cax-radiobutton-label-sm': size === 'sm',\r\n 'cax-radiobutton-label-md': size === 'md' || !size,\r\n 'cax-radiobutton-label-lg': size === 'lg' }\"\r\n *ngIf=\"label\"\r\n [attr.for]=\"inputId\"\r\n [attr.data-pc-section]=\"'label'\"\r\n >{{ label }}</label\r\n>\r\n" }]
240
+ }, template: "<div\n [ngStyle]=\"style\"\n [ngClass]=\"{\n 'cax-radiobutton cax-component': true,\n 'cax-radiobutton-checked': checked,\n 'cax-radiobutton-disabled': disabled,\n 'cax-radiobutton-focused': focused,\n 'cax-variant-filled': variant === 'filled' || config.inputStyle() === 'filled',\n 'cax-radiobutton-sm': size === 'sm',\n 'cax-radiobutton-md': size === 'md' || !size,\n 'cax-radiobutton-lg': size === 'lg'\n }\"\n [class]=\"styleClass\"\n [attr.data-pc-name]=\"'radiobutton'\"\n [attr.data-pc-section]=\"'root'\"\n (click)=\"handleClick($event, input, true)\"\n>\n <div class=\"cax-hidden-accessible\" [attr.data-pc-section]=\"'hiddenInputWrapper'\">\n <input\n #input\n [attr.id]=\"inputId\"\n type=\"radio\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [value]=\"value\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"tabindex\"\n [attr.aria-checked]=\"checked\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n [attr.data-pc-section]=\"'hiddenInput'\"\n pAutoFocus\n [autofocus]=\"autofocus\"\n />\n </div>\n <div [ngClass]=\"{ 'cax-radiobutton-box': true, 'cax-highlight': checked, 'cax-disabled': disabled, 'cax-focus': focused }\" [attr.data-pc-section]=\"'input'\">\n <span class=\"cax-radiobutton-icon\" [attr.data-pc-section]=\"'icon'\"></span>\n </div>\n</div>\n<label\n (click)=\"select($event)\"\n [class]=\"labelStyleClass\"\n [ngClass]=\"{ 'cax-radiobutton-label': true, 'cax-radiobutton-label-active': input.checked, 'cax-disabled': disabled, 'cax-radiobutton-label-focus': focused, 'cax-radiobutton-label-sm': size === 'sm',\n 'cax-radiobutton-label-md': size === 'md' || !size,\n 'cax-radiobutton-label-lg': size === 'lg' }\"\n *ngIf=\"label\"\n [attr.for]=\"inputId\"\n [attr.data-pc-section]=\"'label'\"\n >{{ label }}</label\n>\n" }]
241
241
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: RadioControlRegistry }, { type: i1.caxConfig }], propDecorators: { value: [{
242
242
  type: Input
243
243
  }], size: [{
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
281
281
  type: ViewChild,
282
282
  args: ['input']
283
283
  }] } });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmFkaW9idXR0b24vcmFkaW9idXR0b24udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmFkaW9idXR0b24vcmFkaW9idXR0b24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBWSxLQUFLLEVBQStCLE1BQU0sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1TyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUs5RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBUTtJQUNyQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQzFDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUtGLE1BQU0sT0FBTyxvQkFBb0I7SUFDckIsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUU5QixHQUFHLENBQUMsT0FBa0IsRUFBRSxRQUFxQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBcUI7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxD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QUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTTVCLE9BQU87c0JBQWhCLE1BQU07Z0JBTUcsT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWEsY0FBYztzQkFBakMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBJbnB1dCwgTmdNb2R1bGUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgYm9vbGVhbkF0dHJpYnV0ZSwgZm9yd2FyZFJlZiwgbnVtYmVyQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdHMtaGVscGVycyc7XG5pbXBvcnQgeyBBdXRvRm9jdXNNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdXRvZm9jdXMnO1xuXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICcuL3JhZGlvYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjYXhDb25maWcgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuXG5leHBvcnQgY29uc3QgUkFESU9fVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0J1dHRvbiksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Db250cm9sUmVnaXN0cnkge1xuICAgIHByaXZhdGUgYWNjZXNzb3JzOiBhbnlbXSA9IFtdO1xuXG4gICAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgYWNjZXNzb3I6IFJhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLnB1c2goW2NvbnRyb2wsIGFjY2Vzc29yXSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGFjY2Vzc29yOiBSYWRpb0J1dHRvbikge1xuICAgICAgICB0aGlzLmFjY2Vzc29ycyA9IHRoaXMuYWNjZXNzb3JzLmZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNbMV0gIT09IGFjY2Vzc29yO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3QoYWNjZXNzb3I6IFJhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2FtZUdyb3VwKGMsIGFjY2Vzc29yKSAmJiBjWzFdICE9PSBhY2Nlc3Nvcikge1xuICAgICAgICAgICAgICAgIGNbMV0ud3JpdGVWYWx1ZShhY2Nlc3Nvci52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTYW1lR3JvdXAoY29udHJvbFBhaXI6IFtOZ0NvbnRyb2wsIFJhZGlvQnV0dG9uXSwgYWNjZXNzb3I6IFJhZGlvQnV0dG9uKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29udHJvbFBhaXJbMF0uY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xQYWlyWzBdLmNvbnRyb2wucm9vdCA9PT0gKGFjY2Vzc29yIGFzIGFueSkuY29udHJvbC5jb250cm9sLnJvb3QgJiYgY29udHJvbFBhaXJbMV0ubmFtZSA9PT0gYWNjZXNzb3IubmFtZTtcbiAgICB9XG59XG4vKipcbiAqIFJhZGlvQnV0dG9uIGlzIGFuIGV4dGVuc2lvbiB0byBzdGFuZGFyZCByYWRpbyBidXR0b24gZWxlbWVudCB3aXRoIHRoZW1pbmcuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1yYWRpb0J1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvYnV0dG9uLmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEF1dG9Gb2N1c01vZHVsZV0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b24gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHRoZSByYWRpb2J1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIHJhZGlvYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyA9ICdtZCc7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSByYWRpb2J1dHRvbiBncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIExhYmVsIG9mIHRoZSByYWRpb2J1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgb2YgdGhlIGZvY3VzIGlucHV0IHRvIG1hdGNoIGEgbGFiZWwgZGVmaW5lZCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgbGFiZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHJhZGlvIGJ1dHRvbiBjbGljay5cbiAgICAgKiBAcGFyYW0ge1JhZGlvQnV0dG9uQ2xpY2tFdmVudH0gZXZlbnQgLSBDdXN0b20gY2xpY2sgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxSYWRpb0J1dHRvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSYWRpb0J1dHRvbkNsaWNrRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHJlY2VpdmVzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXRWaWV3Q2hpbGQhOiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgY2hlY2tlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgZm9jdXNlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBjb250cm9sOiBOdWxsYWJsZTxOZ0NvbnRyb2w+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlZ2lzdHJ5OiBSYWRpb0NvbnRyb2xSZWdpc3RyeSxcbiAgICAgICAgcHVibGljIGNvbmZpZzogY2F4Q29uZmlnXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XG4gICAgICAgIHRoaXMuY2hlY2tOYW1lKCk7XG4gICAgICAgIHRoaXMucmVnaXN0cnkuYWRkKHRoaXMuY29udHJvbCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50LCByYWRpb0J1dHRvbjogSFRNTEVsZW1lbnQsIGZvY3VzOiBib29sZWFuKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHJhZGlvQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3QoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuc2VsZWN0KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWUgPT0gdGhpcy52YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZCAmJiB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgZm9jdXMgdG8gaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHB1YmxpYyBmb2N1cygpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucmVnaXN0cnkucmVtb3ZlKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tOYW1lKCkge1xuICAgICAgICBpZiAodGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMubmFtZSAhPT0gdGhpcy5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dOYW1lRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubmFtZSAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5mb3JtQ29udHJvbE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRocm93TmFtZUVycm9yKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICAgICAgbXVzdCBtYXRjaC4gRXg6IDxjYXgtcmFkaW9CdXR0b24gZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+PC9jYXgtcmFkaW9CdXR0b24+XG4gICAgICAgIGApO1xuICAgIH1cbn1cbiIsIjxkaXZcclxuICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICdjYXgtcmFkaW9idXR0b24gY2F4LWNvbXBvbmVudCc6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAnY2F4LXJhZGlvYnV0dG9uLWNoZWNrZWQnOiBjaGVja2VkLFxyXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1kaXNhYmxlZCc6IGRpc2FibGVkLFxyXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1mb2N1c2VkJzogZm9jdXNlZCxcclxuICAgICAgICAgICAgICAgICdjYXgtdmFyaWFudC1maWxsZWQnOiB2YXJpYW50ID09PSAnZmlsbGVkJyB8fCBjb25maWcuaW5wdXRTdHlsZSgpID09PSAnZmlsbGVkJyxcclxuICAgICAgICAgICAgICAgICdjYXgtcmFkaW9idXR0b24tc20nOiBzaXplID09PSAnc20nLFxyXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1tZCc6IHNpemUgPT09ICdtZCcgfHwgIXNpemUsXHJcbiAgICAgICAgICAgICAgICAnY2F4LXJhZGlvYnV0dG9uLWxnJzogc2l6ZSA9PT0gJ2xnJ1xyXG4gICAgICAgICAgICB9XCJcclxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcclxuICAgIFthdHRyLmRhdGEtcGMtbmFtZV09XCIncmFkaW9idXR0b24nXCJcclxuICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIlxyXG4gICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaW5wdXQsIHRydWUpXCJcclxuPlxyXG4gICAgPGRpdiBjbGFzcz1cImNheC1oaWRkZW4tYWNjZXNzaWJsZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaGlkZGVuSW5wdXRXcmFwcGVyJ1wiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAjaW5wdXRcclxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxyXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXHJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImNoZWNrZWRcIlxyXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidoaWRkZW5JbnB1dCdcIlxyXG4gICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCJcclxuICAgICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2NheC1yYWRpb2J1dHRvbi1ib3gnOiB0cnVlLCAnY2F4LWhpZ2hsaWdodCc6IGNoZWNrZWQsICdjYXgtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ2NheC1mb2N1cyc6IGZvY3VzZWQgfVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaW5wdXQnXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtcmFkaW9idXR0b24taWNvblwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInaWNvbidcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxsYWJlbFxyXG4gICAgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQpXCJcclxuICAgIFtjbGFzc109XCJsYWJlbFN0eWxlQ2xhc3NcIlxyXG4gICAgW25nQ2xhc3NdPVwieyAnY2F4LXJhZGlvYnV0dG9uLWxhYmVsJzogdHJ1ZSwgJ2NheC1yYWRpb2J1dHRvbi1sYWJlbC1hY3RpdmUnOiBpbnB1dC5jaGVja2VkLCAnY2F4LWRpc2FibGVkJzogZGlzYWJsZWQsICdjYXgtcmFkaW9idXR0b24tbGFiZWwtZm9jdXMnOiBmb2N1c2VkLCAnY2F4LXJhZGlvYnV0dG9uLWxhYmVsLXNtJzogc2l6ZSA9PT0gJ3NtJyxcclxuICAgICdjYXgtcmFkaW9idXR0b24tbGFiZWwtbWQnOiBzaXplID09PSAnbWQnIHx8ICFzaXplLFxyXG4gICAgJ2NheC1yYWRpb2J1dHRvbi1sYWJlbC1sZyc6IHNpemUgPT09ICdsZycgfVwiXHJcbiAgICAqbmdJZj1cImxhYmVsXCJcclxuICAgIFthdHRyLmZvcl09XCJpbnB1dElkXCJcclxuICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbGFiZWwnXCJcclxuICAgID57eyBsYWJlbCB9fTwvbGFiZWxcclxuPlxyXG4iXX0=
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmFkaW9idXR0b24vcmFkaW9idXR0b24udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcmFkaW9idXR0b24vcmFkaW9idXR0b24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBWSxLQUFLLEVBQStCLE1BQU0sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1TyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQUs5RCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBUTtJQUNyQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQzFDLEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUtGLE1BQU0sT0FBTyxvQkFBb0I7SUFDckIsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUU5QixHQUFHLENBQUMsT0FBa0IsRUFBRSxRQUFxQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBcUI7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxD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QUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBTTVCLE9BQU87c0JBQWhCLE1BQU07Z0JBTUcsT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxNQUFNO3NCQUFmLE1BQU07Z0JBRWEsY0FBYztzQkFBakMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBJbnB1dCwgTmdNb2R1bGUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgYm9vbGVhbkF0dHJpYnV0ZSwgZm9yd2FyZFJlZiwgbnVtYmVyQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdHMtaGVscGVycyc7XG5pbXBvcnQgeyBBdXRvRm9jdXNNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdXRvZm9jdXMnO1xuXG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICcuL3JhZGlvYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjYXhDb25maWcgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hcGknO1xuXG5leHBvcnQgY29uc3QgUkFESU9fVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0J1dHRvbiksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Db250cm9sUmVnaXN0cnkge1xuICAgIHByaXZhdGUgYWNjZXNzb3JzOiBhbnlbXSA9IFtdO1xuXG4gICAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgYWNjZXNzb3I6IFJhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLnB1c2goW2NvbnRyb2wsIGFjY2Vzc29yXSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGFjY2Vzc29yOiBSYWRpb0J1dHRvbikge1xuICAgICAgICB0aGlzLmFjY2Vzc29ycyA9IHRoaXMuYWNjZXNzb3JzLmZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNbMV0gIT09IGFjY2Vzc29yO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3QoYWNjZXNzb3I6IFJhZGlvQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuYWNjZXNzb3JzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2FtZUdyb3VwKGMsIGFjY2Vzc29yKSAmJiBjWzFdICE9PSBhY2Nlc3Nvcikge1xuICAgICAgICAgICAgICAgIGNbMV0ud3JpdGVWYWx1ZShhY2Nlc3Nvci52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTYW1lR3JvdXAoY29udHJvbFBhaXI6IFtOZ0NvbnRyb2wsIFJhZGlvQnV0dG9uXSwgYWNjZXNzb3I6IFJhZGlvQnV0dG9uKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghY29udHJvbFBhaXJbMF0uY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRyb2xQYWlyWzBdLmNvbnRyb2wucm9vdCA9PT0gKGFjY2Vzc29yIGFzIGFueSkuY29udHJvbC5jb250cm9sLnJvb3QgJiYgY29udHJvbFBhaXJbMV0ubmFtZSA9PT0gYWNjZXNzb3IubmFtZTtcbiAgICB9XG59XG4vKipcbiAqIFJhZGlvQnV0dG9uIGlzIGFuIGV4dGVuc2lvbiB0byBzdGFuZGFyZCByYWRpbyBidXR0b24gZWxlbWVudCB3aXRoIHRoZW1pbmcuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NheC1yYWRpb0J1dHRvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvYnV0dG9uLmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEF1dG9Gb2N1c01vZHVsZV0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9CdXR0b24gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIFZhbHVlIG9mIHRoZSByYWRpb2J1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55O1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIHJhZGlvYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyA9ICdtZCc7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGZvcm0gY29udHJvbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSByYWRpb2J1dHRvbiBncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIExhYmVsIG9mIHRoZSByYWRpb2J1dHRvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5wdXQgdmFyaWFudCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHZhcmlhbnQ6ICdmaWxsZWQnIHwgJ291dGxpbmVkJyA9ICdvdXRsaW5lZCc7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgb2YgdGhlIGZvY3VzIGlucHV0IHRvIG1hdGNoIGEgbGFiZWwgZGVmaW5lZCBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpbnB1dElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoZXMgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYW5kIGxhYmVsKHMpIHdoZXJlIGl0cyB2YWx1ZSBzaG91bGQgYmUgb25lIG9yIG1vcmUgZWxlbWVudCBJRHMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYXJpYUxhYmVsbGVkQnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgbGFiZWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHJhZGlvIGJ1dHRvbiBjbGljay5cbiAgICAgKiBAcGFyYW0ge1JhZGlvQnV0dG9uQ2xpY2tFdmVudH0gZXZlbnQgLSBDdXN0b20gY2xpY2sgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxSYWRpb0J1dHRvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxSYWRpb0J1dHRvbkNsaWNrRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHJlY2VpdmVzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Gb2N1czogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxvc2VzIGZvY3VzLlxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXRWaWV3Q2hpbGQhOiBFbGVtZW50UmVmO1xuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgb25Nb2RlbFRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgY2hlY2tlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBwdWJsaWMgZm9jdXNlZDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBjb250cm9sOiBOdWxsYWJsZTxOZ0NvbnRyb2w+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlZ2lzdHJ5OiBSYWRpb0NvbnRyb2xSZWdpc3RyeSxcbiAgICAgICAgcHVibGljIGNvbmZpZzogY2F4Q29uZmlnXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCk7XG4gICAgICAgIHRoaXMuY2hlY2tOYW1lKCk7XG4gICAgICAgIHRoaXMucmVnaXN0cnkuYWRkKHRoaXMuY29udHJvbCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQ6IEV2ZW50LCByYWRpb0J1dHRvbjogSFRNTEVsZW1lbnQsIGZvY3VzOiBib29sZWFuKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIHJhZGlvQnV0dG9uLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3QoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0cnkuc2VsZWN0KHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMudmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gdmFsdWUgPT0gdGhpcy52YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFZpZXdDaGlsZCAmJiB0aGlzLmlucHV0Vmlld0NoaWxkLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdGhpcy5jaGVja2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk1vZGVsVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUodmFsOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWw7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25CbHVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGxpZXMgZm9jdXMgdG8gaW5wdXQgZmllbGQuXG4gICAgICogQGdyb3VwIE1ldGhvZFxuICAgICAqL1xuICAgIHB1YmxpYyBmb2N1cygpIHtcbiAgICAgICAgdGhpcy5pbnB1dFZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMucmVnaXN0cnkucmVtb3ZlKHRoaXMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tOYW1lKCkge1xuICAgICAgICBpZiAodGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lICYmIHRoaXMubmFtZSAhPT0gdGhpcy5mb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dOYW1lRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubmFtZSAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5mb3JtQ29udHJvbE5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRocm93TmFtZUVycm9yKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICAgICAgbXVzdCBtYXRjaC4gRXg6IDxjYXgtcmFkaW9CdXR0b24gZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+PC9jYXgtcmFkaW9CdXR0b24+XG4gICAgICAgIGApO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBbbmdTdHlsZV09XCJzdHlsZVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdjYXgtcmFkaW9idXR0b24gY2F4LWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1jaGVja2VkJzogY2hlY2tlZCxcbiAgICAgICAgICAgICAgICAnY2F4LXJhZGlvYnV0dG9uLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1mb2N1c2VkJzogZm9jdXNlZCxcbiAgICAgICAgICAgICAgICAnY2F4LXZhcmlhbnQtZmlsbGVkJzogdmFyaWFudCA9PT0gJ2ZpbGxlZCcgfHwgY29uZmlnLmlucHV0U3R5bGUoKSA9PT0gJ2ZpbGxlZCcsXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1zbSc6IHNpemUgPT09ICdzbScsXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1tZCc6IHNpemUgPT09ICdtZCcgfHwgIXNpemUsXG4gICAgICAgICAgICAgICAgJ2NheC1yYWRpb2J1dHRvbi1sZyc6IHNpemUgPT09ICdsZydcbiAgICAgICAgICAgIH1cIlxuICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3JhZGlvYnV0dG9uJ1wiXG4gICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiXG4gICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKCRldmVudCwgaW5wdXQsIHRydWUpXCJcbj5cbiAgICA8ZGl2IGNsYXNzPVwiY2F4LWhpZGRlbi1hY2Nlc3NpYmxlXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidoaWRkZW5JbnB1dFdyYXBwZXInXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2hpZGRlbklucHV0J1wiXG4gICAgICAgICAgICBwQXV0b0ZvY3VzXG4gICAgICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJ7ICdjYXgtcmFkaW9idXR0b24tYm94JzogdHJ1ZSwgJ2NheC1oaWdobGlnaHQnOiBjaGVja2VkLCAnY2F4LWRpc2FibGVkJzogZGlzYWJsZWQsICdjYXgtZm9jdXMnOiBmb2N1c2VkIH1cIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2lucHV0J1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNheC1yYWRpb2J1dHRvbi1pY29uXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidpY29uJ1wiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGxhYmVsXG4gICAgKGNsaWNrKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgICBbY2xhc3NdPVwibGFiZWxTdHlsZUNsYXNzXCJcbiAgICBbbmdDbGFzc109XCJ7ICdjYXgtcmFkaW9idXR0b24tbGFiZWwnOiB0cnVlLCAnY2F4LXJhZGlvYnV0dG9uLWxhYmVsLWFjdGl2ZSc6IGlucHV0LmNoZWNrZWQsICdjYXgtZGlzYWJsZWQnOiBkaXNhYmxlZCwgJ2NheC1yYWRpb2J1dHRvbi1sYWJlbC1mb2N1cyc6IGZvY3VzZWQsICdjYXgtcmFkaW9idXR0b24tbGFiZWwtc20nOiBzaXplID09PSAnc20nLFxuICAgICdjYXgtcmFkaW9idXR0b24tbGFiZWwtbWQnOiBzaXplID09PSAnbWQnIHx8ICFzaXplLFxuICAgICdjYXgtcmFkaW9idXR0b24tbGFiZWwtbGcnOiBzaXplID09PSAnbGcnIH1cIlxuICAgICpuZ0lmPVwibGFiZWxcIlxuICAgIFthdHRyLmZvcl09XCJpbnB1dElkXCJcbiAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ2xhYmVsJ1wiXG4gICAgPnt7IGxhYmVsIH19PC9sYWJlbFxuPlxuIl19