@acorex/components 6.5.29 → 6.5.31

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 (364) hide show
  1. package/README.md +3 -3
  2. package/acorex-components.d.ts +5 -5
  3. package/esm2020/acorex-components.mjs +4 -4
  4. package/esm2020/lib/accordion/accordion.component.mjs +44 -44
  5. package/esm2020/lib/accordion/accordion.module.mjs +20 -20
  6. package/esm2020/lib/base/base-page.class.mjs +94 -94
  7. package/esm2020/lib/base/components.class.mjs +17 -17
  8. package/esm2020/lib/base/element.class.mjs +294 -294
  9. package/esm2020/lib/base/events.class.mjs +11 -11
  10. package/esm2020/lib/button/button.component.mjs +71 -71
  11. package/esm2020/lib/button/button.module.mjs +21 -21
  12. package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +413 -413
  13. package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +22 -22
  14. package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +54 -54
  15. package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +18 -18
  16. package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +213 -213
  17. package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +68 -68
  18. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +132 -132
  19. package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -37
  20. package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +47 -47
  21. package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +95 -95
  22. package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +204 -204
  23. package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -99
  24. package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +77 -77
  25. package/esm2020/lib/checkbox/checkbox.component.mjs +98 -98
  26. package/esm2020/lib/checkbox/checkbox.module.mjs +20 -20
  27. package/esm2020/lib/color-picker/color-box/color-box.component.mjs +422 -422
  28. package/esm2020/lib/color-picker/color-picker.component.mjs +82 -82
  29. package/esm2020/lib/color-picker/color-picker.module.mjs +24 -24
  30. package/esm2020/lib/context-menu/context-menu.component.mjs +65 -65
  31. package/esm2020/lib/context-menu/context-menu.directive.mjs +135 -135
  32. package/esm2020/lib/context-menu/context-menu.module.mjs +20 -20
  33. package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +138 -138
  34. package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +117 -117
  35. package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +74 -74
  36. package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +117 -117
  37. package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +258 -258
  38. package/esm2020/lib/data-filter/filter.class.mjs +44 -44
  39. package/esm2020/lib/data-filter/filter.module.mjs +90 -90
  40. package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +166 -166
  41. package/esm2020/lib/data-list/core/data-list.component.mjs +40 -40
  42. package/esm2020/lib/data-list/list/list.component.mjs +124 -124
  43. package/esm2020/lib/data-list/list/list.module.mjs +22 -22
  44. package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +85 -85
  45. package/esm2020/lib/data-source/datasource.component.mjs +47 -47
  46. package/esm2020/lib/data-source/datasource.module.mjs +18 -18
  47. package/esm2020/lib/data-source/read-param.mjs +5 -5
  48. package/esm2020/lib/date-picker/date-picker.component.mjs +702 -702
  49. package/esm2020/lib/date-picker/date-picker.module.mjs +25 -25
  50. package/esm2020/lib/dialog/dialog.component.mjs +24 -24
  51. package/esm2020/lib/dialog/dialog.module.mjs +21 -21
  52. package/esm2020/lib/dialog/dialog.service.mjs +150 -150
  53. package/esm2020/lib/drawer/content.component.mjs +18 -18
  54. package/esm2020/lib/drawer/drawer-container.component.mjs +36 -36
  55. package/esm2020/lib/drawer/drawer.component.mjs +142 -142
  56. package/esm2020/lib/drawer/drawer.module.mjs +23 -23
  57. package/esm2020/lib/dropdown/dropdown.component.mjs +176 -176
  58. package/esm2020/lib/dropdown/dropdown.module.mjs +26 -26
  59. package/esm2020/lib/fieldset/fieldset.component.mjs +59 -59
  60. package/esm2020/lib/fieldset/fieldset.module.mjs +19 -19
  61. package/esm2020/lib/form-group/form-group.component.mjs +34 -34
  62. package/esm2020/lib/form-group/form-group.module.mjs +21 -21
  63. package/esm2020/lib/label/label.component.mjs +19 -19
  64. package/esm2020/lib/label/label.module.mjs +21 -21
  65. package/esm2020/lib/loading/loading-indicator.component.mjs +17 -17
  66. package/esm2020/lib/loading/loading-panel.component.mjs +44 -44
  67. package/esm2020/lib/loading/loading.module.mjs +21 -21
  68. package/esm2020/lib/loading/loading.service.mjs +45 -45
  69. package/esm2020/lib/menu/menu-item.component.mjs +47 -47
  70. package/esm2020/lib/menu/menu.component.mjs +86 -86
  71. package/esm2020/lib/menu/menu.module.mjs +22 -22
  72. package/esm2020/lib/menu/menu2.component.mjs +96 -96
  73. package/esm2020/lib/number-box/number-box.component.mjs +622 -622
  74. package/esm2020/lib/number-box/number-box.module.mjs +21 -21
  75. package/esm2020/lib/page/content.component.mjs +32 -32
  76. package/esm2020/lib/page/footer.component.mjs +19 -19
  77. package/esm2020/lib/page/page.component.mjs +53 -53
  78. package/esm2020/lib/page/page.module.mjs +22 -22
  79. package/esm2020/lib/panel-box/panel-box.component.mjs +88 -88
  80. package/esm2020/lib/panel-box/panel-box.module.mjs +19 -19
  81. package/esm2020/lib/password-box/password-box.component.mjs +31 -31
  82. package/esm2020/lib/password-box/password-box.module.mjs +23 -23
  83. package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +48 -48
  84. package/esm2020/lib/popover/overlay.service.mjs +90 -90
  85. package/esm2020/lib/popover/popover.component.mjs +127 -127
  86. package/esm2020/lib/popover/popover.module.mjs +19 -19
  87. package/esm2020/lib/popup/popup.component.mjs +147 -147
  88. package/esm2020/lib/popup/popup.module.mjs +25 -25
  89. package/esm2020/lib/popup/popup.service.mjs +93 -93
  90. package/esm2020/lib/progress-bar/progress-bar.component.mjs +19 -19
  91. package/esm2020/lib/progress-bar/progress-bar.module.mjs +19 -19
  92. package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +61 -61
  93. package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +22 -22
  94. package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +38 -38
  95. package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +24 -24
  96. package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +115 -115
  97. package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +32 -32
  98. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +211 -211
  99. package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +78 -78
  100. package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +51 -51
  101. package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +24 -24
  102. package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +63 -63
  103. package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +24 -24
  104. package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +140 -140
  105. package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +61 -61
  106. package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +72 -72
  107. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +71 -71
  108. package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -25
  109. package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +69 -69
  110. package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -22
  111. package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +29 -29
  112. package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +25 -25
  113. package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +32 -32
  114. package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +24 -24
  115. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +32 -32
  116. package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -24
  117. package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +43 -43
  118. package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +24 -24
  119. package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +154 -154
  120. package/esm2020/lib/property-editor/property-editor.class.mjs +101 -101
  121. package/esm2020/lib/property-editor/property-editor.module.mjs +196 -196
  122. package/esm2020/lib/query-builder/query-builder-group.component.mjs +124 -124
  123. package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +171 -171
  124. package/esm2020/lib/query-builder/query-builder-rule.component.mjs +395 -395
  125. package/esm2020/lib/query-builder/query-builder.class.mjs +20 -20
  126. package/esm2020/lib/query-builder/query-builder.component.mjs +82 -82
  127. package/esm2020/lib/query-builder/query-builder.module.mjs +62 -62
  128. package/esm2020/lib/query-builder/query-builder.service.mjs +197 -197
  129. package/esm2020/lib/search-bar/search-bar.component.mjs +283 -283
  130. package/esm2020/lib/search-bar/search-bar.module.mjs +63 -63
  131. package/esm2020/lib/searchbox/searchbox.component.mjs +79 -79
  132. package/esm2020/lib/searchbox/searchbox.module.mjs +24 -24
  133. package/esm2020/lib/selectbox/selectbox.component.mjs +961 -961
  134. package/esm2020/lib/selectbox/selectbox.module.mjs +44 -44
  135. package/esm2020/lib/selectbox/selectbox2.component.mjs +574 -574
  136. package/esm2020/lib/selection-list/selection-list.component.mjs +108 -108
  137. package/esm2020/lib/selection-list/selection-list.module.mjs +21 -21
  138. package/esm2020/lib/switch/switch.component.mjs +51 -51
  139. package/esm2020/lib/switch/switch.module.mjs +20 -20
  140. package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +71 -71
  141. package/esm2020/lib/tab-page/tab-page-host.component.mjs +116 -116
  142. package/esm2020/lib/tab-page/tab-page.module.mjs +21 -21
  143. package/esm2020/lib/tab-page/tab-page.service.mjs +156 -156
  144. package/esm2020/lib/tab-strip/tab-strip.component.mjs +36 -36
  145. package/esm2020/lib/tab-strip/tab-strip.module.mjs +19 -19
  146. package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +24 -24
  147. package/esm2020/lib/tab-view/tab-view.component.mjs +105 -105
  148. package/esm2020/lib/tab-view/tab-view.module.mjs +21 -21
  149. package/esm2020/lib/tab-view/tab.component.mjs +30 -30
  150. package/esm2020/lib/textarea/textarea.component.mjs +26 -26
  151. package/esm2020/lib/textarea/textarea.module.mjs +21 -21
  152. package/esm2020/lib/textbox/textbox.component.mjs +39 -39
  153. package/esm2020/lib/textbox/textbox.module.mjs +24 -24
  154. package/esm2020/lib/time-picker/time-picker.component.mjs +943 -943
  155. package/esm2020/lib/time-picker/time-picker.module.mjs +22 -22
  156. package/esm2020/lib/toast/toast-message/toast-message.component.mjs +74 -74
  157. package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -13
  158. package/esm2020/lib/toast/toast.module.mjs +21 -21
  159. package/esm2020/lib/toast/toast.service.mjs +44 -44
  160. package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +78 -78
  161. package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +57 -57
  162. package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +54 -54
  163. package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +47 -47
  164. package/esm2020/lib/toolbar/toolbar-item.mjs +6 -6
  165. package/esm2020/lib/toolbar/toolbar.component.mjs +13 -13
  166. package/esm2020/lib/toolbar/toolbar.module.mjs +40 -40
  167. package/esm2020/lib/tooltip/tooltip.directive.mjs +100 -100
  168. package/esm2020/lib/tooltip/tooltip.module.mjs +19 -19
  169. package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +646 -646
  170. package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +35 -35
  171. package/esm2020/lib/tree-view/tree-view.component.mjs +775 -775
  172. package/esm2020/lib/tree-view/tree-view.module.mjs +22 -22
  173. package/esm2020/lib/upload-file/upload-file.component.mjs +208 -208
  174. package/esm2020/lib/upload-file/upload-file.events.mjs +2 -2
  175. package/esm2020/lib/upload-file/upload-file.module.mjs +24 -24
  176. package/esm2020/lib/validation/validation-form.component.mjs +65 -65
  177. package/esm2020/lib/validation/validation-rule.widget.mjs +111 -111
  178. package/esm2020/lib/validation/validation.class.mjs +2 -2
  179. package/esm2020/lib/validation/validation.component.mjs +89 -89
  180. package/esm2020/lib/validation/validation.module.mjs +34 -34
  181. package/esm2020/public-api.mjs +158 -158
  182. package/fesm2015/acorex-components.mjs +15616 -15616
  183. package/fesm2015/acorex-components.mjs.map +1 -1
  184. package/fesm2020/acorex-components.mjs +15552 -15552
  185. package/fesm2020/acorex-components.mjs.map +1 -1
  186. package/lib/accordion/accordion.component.d.ts +13 -13
  187. package/lib/accordion/accordion.module.d.ts +9 -9
  188. package/lib/base/base-page.class.d.ts +46 -46
  189. package/lib/base/components.class.d.ts +10 -10
  190. package/lib/base/element.class.d.ts +106 -106
  191. package/lib/base/events.class.d.ts +18 -18
  192. package/lib/button/button.component.d.ts +21 -21
  193. package/lib/button/button.module.d.ts +8 -8
  194. package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -81
  195. package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -11
  196. package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -19
  197. package/lib/calendar/scheduler/scheduler.class.d.ts +36 -36
  198. package/lib/calendar/scheduler/scheduler.component.d.ts +39 -39
  199. package/lib/calendar/scheduler/scheduler.module.d.ts +21 -21
  200. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -25
  201. package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -14
  202. package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -16
  203. package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -26
  204. package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -37
  205. package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -28
  206. package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -24
  207. package/lib/checkbox/checkbox.component.d.ts +30 -30
  208. package/lib/checkbox/checkbox.module.d.ts +9 -9
  209. package/lib/color-picker/color-box/color-box.component.d.ts +25 -25
  210. package/lib/color-picker/color-picker.component.d.ts +30 -30
  211. package/lib/color-picker/color-picker.module.d.ts +13 -13
  212. package/lib/context-menu/context-menu.component.d.ts +22 -22
  213. package/lib/context-menu/context-menu.directive.d.ts +38 -38
  214. package/lib/context-menu/context-menu.module.d.ts +9 -9
  215. package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -22
  216. package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -15
  217. package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -18
  218. package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -15
  219. package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -45
  220. package/lib/data-filter/filter.class.d.ts +40 -40
  221. package/lib/data-filter/filter.module.d.ts +24 -24
  222. package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -25
  223. package/lib/data-list/core/data-list.component.d.ts +15 -15
  224. package/lib/data-list/list/list.component.d.ts +40 -40
  225. package/lib/data-list/list/list.module.d.ts +11 -11
  226. package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -17
  227. package/lib/data-source/datasource.component.d.ts +16 -16
  228. package/lib/data-source/datasource.module.d.ts +7 -7
  229. package/lib/data-source/read-param.d.ts +40 -40
  230. package/lib/date-picker/date-picker.component.d.ts +81 -81
  231. package/lib/date-picker/date-picker.module.d.ts +14 -14
  232. package/lib/dialog/dialog.component.d.ts +14 -14
  233. package/lib/dialog/dialog.module.d.ts +10 -10
  234. package/lib/dialog/dialog.service.d.ts +36 -36
  235. package/lib/drawer/content.component.d.ts +7 -7
  236. package/lib/drawer/drawer-container.component.d.ts +10 -10
  237. package/lib/drawer/drawer.component.d.ts +34 -34
  238. package/lib/drawer/drawer.module.d.ts +10 -10
  239. package/lib/dropdown/dropdown.component.d.ts +38 -38
  240. package/lib/dropdown/dropdown.module.d.ts +13 -13
  241. package/lib/fieldset/fieldset.component.d.ts +11 -11
  242. package/lib/fieldset/fieldset.module.d.ts +8 -8
  243. package/lib/form-group/form-group.component.d.ts +14 -14
  244. package/lib/form-group/form-group.module.d.ts +8 -8
  245. package/lib/label/label.component.d.ts +9 -9
  246. package/lib/label/label.module.d.ts +8 -8
  247. package/lib/loading/loading-indicator.component.d.ts +9 -9
  248. package/lib/loading/loading-panel.component.d.ts +13 -13
  249. package/lib/loading/loading.module.d.ts +10 -10
  250. package/lib/loading/loading.service.d.ts +13 -13
  251. package/lib/menu/menu-item.component.d.ts +18 -18
  252. package/lib/menu/menu.component.d.ts +35 -35
  253. package/lib/menu/menu.module.d.ts +11 -11
  254. package/lib/menu/menu2.component.d.ts +21 -21
  255. package/lib/number-box/number-box.component.d.ts +52 -52
  256. package/lib/number-box/number-box.module.d.ts +10 -10
  257. package/lib/page/content.component.d.ts +8 -8
  258. package/lib/page/footer.component.d.ts +5 -5
  259. package/lib/page/page.component.d.ts +16 -16
  260. package/lib/page/page.module.d.ts +11 -11
  261. package/lib/panel-box/panel-box.component.d.ts +19 -19
  262. package/lib/panel-box/panel-box.module.d.ts +8 -8
  263. package/lib/password-box/password-box.component.d.ts +12 -12
  264. package/lib/password-box/password-box.module.d.ts +10 -10
  265. package/lib/popover/custom-cdk-overlay.service.d.ts +19 -19
  266. package/lib/popover/overlay.service.d.ts +31 -31
  267. package/lib/popover/popover.component.d.ts +34 -34
  268. package/lib/popover/popover.module.d.ts +8 -8
  269. package/lib/popup/popup.component.d.ts +40 -40
  270. package/lib/popup/popup.module.d.ts +13 -13
  271. package/lib/popup/popup.service.d.ts +22 -22
  272. package/lib/progress-bar/progress-bar.component.d.ts +7 -7
  273. package/lib/progress-bar/progress-bar.module.d.ts +8 -8
  274. package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -19
  275. package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -11
  276. package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -13
  277. package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -12
  278. package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -34
  279. package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -20
  280. package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -44
  281. package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -19
  282. package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -28
  283. package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -12
  284. package/lib/property-editor/editors/number-editor/number.editor.d.ts +20 -20
  285. package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -12
  286. package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -29
  287. package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -18
  288. package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -29
  289. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -28
  290. package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -14
  291. package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -25
  292. package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -11
  293. package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -11
  294. package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -13
  295. package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -18
  296. package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -12
  297. package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -17
  298. package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -12
  299. package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -17
  300. package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -12
  301. package/lib/property-editor/property-editor-renderer.directive.d.ts +30 -30
  302. package/lib/property-editor/property-editor.class.d.ts +92 -92
  303. package/lib/property-editor/property-editor.module.d.ts +21 -21
  304. package/lib/query-builder/query-builder-group.component.d.ts +33 -33
  305. package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -35
  306. package/lib/query-builder/query-builder-rule.component.d.ts +45 -45
  307. package/lib/query-builder/query-builder.class.d.ts +45 -45
  308. package/lib/query-builder/query-builder.component.d.ts +27 -27
  309. package/lib/query-builder/query-builder.module.d.ts +23 -23
  310. package/lib/query-builder/query-builder.service.d.ts +18 -18
  311. package/lib/search-bar/search-bar.component.d.ts +61 -61
  312. package/lib/search-bar/search-bar.module.d.ts +18 -18
  313. package/lib/searchbox/searchbox.component.d.ts +22 -22
  314. package/lib/searchbox/searchbox.module.d.ts +13 -13
  315. package/lib/selectbox/selectbox.component.d.ts +118 -118
  316. package/lib/selectbox/selectbox.module.d.ts +15 -15
  317. package/lib/selectbox/selectbox2.component.d.ts +103 -103
  318. package/lib/selection-list/selection-list.component.d.ts +32 -32
  319. package/lib/selection-list/selection-list.module.d.ts +10 -10
  320. package/lib/switch/switch.component.d.ts +20 -20
  321. package/lib/switch/switch.module.d.ts +9 -9
  322. package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -16
  323. package/lib/tab-page/tab-page-host.component.d.ts +25 -25
  324. package/lib/tab-page/tab-page.module.d.ts +10 -10
  325. package/lib/tab-page/tab-page.service.d.ts +30 -30
  326. package/lib/tab-strip/tab-strip.component.d.ts +28 -28
  327. package/lib/tab-strip/tab-strip.module.d.ts +8 -8
  328. package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -16
  329. package/lib/tab-view/tab-view.component.d.ts +26 -26
  330. package/lib/tab-view/tab-view.module.d.ts +10 -10
  331. package/lib/tab-view/tab.component.d.ts +12 -12
  332. package/lib/textarea/textarea.component.d.ts +12 -12
  333. package/lib/textarea/textarea.module.d.ts +8 -8
  334. package/lib/textbox/textbox.component.d.ts +16 -16
  335. package/lib/textbox/textbox.module.d.ts +11 -11
  336. package/lib/time-picker/time-picker.component.d.ts +52 -52
  337. package/lib/time-picker/time-picker.module.d.ts +11 -11
  338. package/lib/toast/toast-message/toast-message.component.d.ts +18 -18
  339. package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -8
  340. package/lib/toast/toast.module.d.ts +9 -9
  341. package/lib/toast/toast.service.d.ts +18 -18
  342. package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -12
  343. package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -24
  344. package/lib/toolbar/search/toolbar-search.component.d.ts +16 -16
  345. package/lib/toolbar/title/toolbar-title.component.d.ts +9 -9
  346. package/lib/toolbar/toolbar-item.d.ts +3 -3
  347. package/lib/toolbar/toolbar.component.d.ts +8 -8
  348. package/lib/toolbar/toolbar.module.d.ts +14 -14
  349. package/lib/tooltip/tooltip.directive.d.ts +21 -21
  350. package/lib/tooltip/tooltip.module.d.ts +8 -8
  351. package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -111
  352. package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -11
  353. package/lib/tree-view/tree-view.component.d.ts +121 -121
  354. package/lib/tree-view/tree-view.module.d.ts +11 -11
  355. package/lib/upload-file/upload-file.component.d.ts +42 -42
  356. package/lib/upload-file/upload-file.events.d.ts +10 -10
  357. package/lib/upload-file/upload-file.module.d.ts +13 -13
  358. package/lib/validation/validation-form.component.d.ts +19 -19
  359. package/lib/validation/validation-rule.widget.d.ts +23 -23
  360. package/lib/validation/validation.class.d.ts +16 -16
  361. package/lib/validation/validation.component.d.ts +25 -25
  362. package/lib/validation/validation.module.d.ts +11 -11
  363. package/package.json +1 -1
  364. package/public-api.d.ts +155 -155
@@ -1,171 +1,171 @@
1
- import { AXTranslator } from '@acorex/core';
2
- import { Component, ViewChild } from '@angular/core';
3
- import { AXBasePopupPageComponent } from '../../base/base-page.class';
4
- import { AXToastService } from '../../toast/toast.service';
5
- import { AXValidationFormComponent } from '../../validation/validation-form.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../toast/toast.service";
8
- import * as i2 from "../../validation/validation-form.component";
9
- import * as i3 from "../../form-group/form-group.component";
10
- import * as i4 from "../../label/label.component";
11
- import * as i5 from "../../textbox/textbox.component";
12
- import * as i6 from "../../validation/validation.component";
13
- import * as i7 from "../../validation/validation-rule.widget";
14
- import * as i8 from "../../selectbox/selectbox.component";
15
- import * as i9 from "../../data-source/datasource.component";
16
- import * as i10 from "../../number-box/number-box.component";
17
- import * as i11 from "@angular/common";
18
- export class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {
19
- constructor(toast) {
20
- super();
21
- this.toast = toast;
22
- this.items = [];
23
- this.complateValue = true;
24
- this.getProvideData = (e) => {
25
- if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {
26
- return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });
27
- }
28
- };
29
- this.provideDataBoolean = (e) => {
30
- return new Promise((resolve) => {
31
- resolve([
32
- {
33
- value: 'true',
34
- text: AXTranslator.get('queryBuilder.true')
35
- },
36
- {
37
- value: 'false',
38
- text: AXTranslator.get('queryBuilder.false')
39
- }
40
- ]);
41
- });
42
- };
43
- }
44
- makeJsonString(items) {
45
- return new Promise((resolve, reject) => {
46
- items.forEach((element, index, array) => {
47
- if (element.items) {
48
- this.makeJsonString(element.items);
49
- }
50
- else {
51
- if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {
52
- element.control.options.dataSource = this.provideData;
53
- }
54
- }
55
- if (index === array.length - 1) {
56
- resolve(array[0]);
57
- }
58
- });
59
- });
60
- }
61
- ngAfterViewInit() {
62
- var groupString = JSON.stringify(this.group);
63
- this.groupCopy = JSON.parse(groupString);
64
- this.makeJsonString(this.groupCopy.items);
65
- for (let i = 0; i < this.groupCopy.items.length; i++) {
66
- this.getNoValueRule(this.groupCopy.items[i]);
67
- }
68
- if (this.items.length < 1) {
69
- this.close(this.group);
70
- }
71
- }
72
- getValue(v) {
73
- return v.indexOf('????') == 0 ? v.split('|')[1] : v;
74
- }
75
- getNoValueRule(gr) {
76
- // for (let i = 0; i < gr.items.length; i++) {
77
- if (gr.condition) {
78
- for (let i = 0; i < gr.items.length; i++) {
79
- this.getNoValueRule(gr.items[i]);
80
- }
81
- }
82
- else {
83
- if (gr.onDemandLabel?.indexOf('????') == 0) {
84
- this.items.push(gr);
85
- }
86
- }
87
- // }
88
- }
89
- ngOnInit() {
90
- }
91
- textValueChange(e, rule) {
92
- rule.value = e.value;
93
- rule.text = e.value;
94
- }
95
- selectedItemsChange(e, rule) {
96
- let n = this.getOption('textField', rule);
97
- rule.text = e[0][n];
98
- if (rule && rule.control.options.valueField) {
99
- rule.value = e[0][rule.control.options.valueField];
100
- }
101
- else {
102
- rule.value = e[0].value;
103
- }
104
- rule.valueItem[0] = e[0];
105
- }
106
- valueChange(e, rule) {
107
- rule.value = e.value;
108
- rule.text = e.value;
109
- }
110
- valueBooleanChange(e, rule) {
111
- rule.text = e.value == undefined ? e[0].value : e.value;
112
- rule.value = e.value == undefined ? e[0].value : e.value;
113
- }
114
- getOption(name, rule) {
115
- return rule.control.options ? rule.control.options[name] : null;
116
- }
117
- findNullValue(gr) {
118
- for (let i = 0; i < gr.length; i++) {
119
- if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {
120
- this.complateValue = false;
121
- }
122
- }
123
- // if (gr.condition) {
124
- // for (let i = 0; i < gr.items.length; i++) {
125
- // this.findNullValue(gr.items[i]);
126
- // }
127
- // } else {
128
- // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {
129
- // this.complateValue = false;
130
- // }
131
- // }
132
- }
133
- onFooterButtonClick(e) {
134
- if (e.name === 'confirm') {
135
- this.form.validate().then(c => {
136
- if (c.result === true) {
137
- this.close(this.groupCopy);
138
- }
139
- });
140
- }
141
- if (e.name === 'cancel') {
142
- this.close();
143
- }
144
- }
145
- getFooterButtons() {
146
- return [
147
- {
148
- text: AXTranslator.get('common.confirm'),
149
- name: 'confirm',
150
- style: 'ax primary',
151
- icon: 'far fa-check-circle'
152
- },
153
- {
154
- text: AXTranslator.get('common.cancel'),
155
- name: 'cancel',
156
- style: 'ax light',
157
- icon: 'far fa-times'
158
- }
159
- ];
160
- }
161
- }
162
- AXQueryBuilderPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXQueryBuilderPopupComponent, deps: [{ token: i1.AXToastService }], target: i0.ɵɵFactoryTarget.Component });
163
- AXQueryBuilderPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXQueryBuilderPopupComponent, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: AXValidationFormComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\r\n <ax-validation-form #form>\r\n <div *ngFor=\"let rule of items\">\r\n\r\n <div *ngIf=\" rule.control\" [ngSwitch]=\"rule.control.type\" style=\"padding: 1em;\">\r\n <div *ngSwitchCase=\"'textBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'selectBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [textField]=\"getOption('textField',rule)\" [(selectedItems)]=\"rule.valueItem\"\r\n [valueField]=\"getOption('valueField',rule)\" [mode]=\"getOption('mode',rule)\"\r\n (selectedItemsChange)=\"selectedItemsChange($event,rule)\" size=\"sm\" #selectBoxValue\r\n [remoteOperation]=\"getOption('remoteOperation',rule)\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n <ax-data-source [provideData]=\"getProvideData\" [params]=\"rule\"></ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'numberBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-number-box (onValueChanged)=\"valueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-number-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'datePicker'\">\r\n\r\n\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event,rule)\"\r\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataBoolean\">\r\n </ax-data-source>\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-select-box>\r\n </ax-form-group>\r\n\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-text-box>\r\n\r\n </ax-form-group>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n </ax-validation-form>\r\n</div>", components: [{ type: i2.AXValidationFormComponent, selector: "ax-validation-form", inputs: ["validateOn"], outputs: ["onInit"] }, { type: i3.AXFormGroupComponent, selector: "ax-form-group", inputs: ["size"] }, { type: i4.AXLabelComponent, selector: "ax-label", inputs: ["size"] }, { type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i6.AXValidationComponent, selector: "ax-validation", inputs: ["rules", "validateOn"], outputs: ["rulesChange", "showMessage"] }, { type: i7.AXValidationRuleComponent, selector: "ax-validation-rule", inputs: ["type", "message", "value", "enabled"] }, { type: i8.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["showDropDownButton", "rowInputTemplate", "showCheckBox", "readonly", "rtl", "disabled", "placeholder", "size", "allowNull", "textAlign", "bufferSize", "remoteOperation", "fitParent", "dropdownWidth", "dataSource", "validation", "disabledCallback", "allowSearch", "textField", "valueField", "disabledField", "mode", "items", "selectedItems", "selectedValues"], outputs: ["dropdownToggle", "itemsChange", "onBlur", "onFocus", "selectionChanged", "selectedItemsChange", "selectedValuesChange"] }, { type: i9.AXDataSourceComponent, selector: "ax-data-source", inputs: ["provideData", "params"] }, { type: i10.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["min", "max", "showSeparator", "showCurrency", "showCounter", "scrollWeel", "showDoubleCounter", "maxLength", "intStep", "decimalNumber", "customStep"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXQueryBuilderPopupComponent, decorators: [{
165
- type: Component,
166
- args: [{ template: "<div>\r\n <ax-validation-form #form>\r\n <div *ngFor=\"let rule of items\">\r\n\r\n <div *ngIf=\" rule.control\" [ngSwitch]=\"rule.control.type\" style=\"padding: 1em;\">\r\n <div *ngSwitchCase=\"'textBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'selectBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\r\n [textField]=\"getOption('textField',rule)\" [(selectedItems)]=\"rule.valueItem\"\r\n [valueField]=\"getOption('valueField',rule)\" [mode]=\"getOption('mode',rule)\"\r\n (selectedItemsChange)=\"selectedItemsChange($event,rule)\" size=\"sm\" #selectBoxValue\r\n [remoteOperation]=\"getOption('remoteOperation',rule)\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n <ax-data-source [provideData]=\"getProvideData\" [params]=\"rule\"></ax-data-source>\r\n </ax-select-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'numberBox'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-number-box (onValueChanged)=\"valueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-number-box>\r\n </ax-form-group>\r\n </div>\r\n <div *ngSwitchCase=\"'datePicker'\">\r\n\r\n\r\n </div>\r\n <div *ngSwitchCase=\"'boolean'\">\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event,rule)\"\r\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\r\n <ax-data-source [provideData]=\"provideDataBoolean\">\r\n </ax-data-source>\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-select-box>\r\n </ax-form-group>\r\n\r\n </div>\r\n <div *ngSwitchDefault>\r\n <ax-form-group>\r\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\r\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\r\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\r\n <ax-validation>\r\n <ax-validation-rule type=\"required\"></ax-validation-rule>\r\n </ax-validation>\r\n </ax-text-box>\r\n\r\n </ax-form-group>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n\r\n </ax-validation-form>\r\n</div>" }]
167
- }], ctorParameters: function () { return [{ type: i1.AXToastService }]; }, propDecorators: { form: [{
168
- type: ViewChild,
169
- args: [AXValidationFormComponent]
170
- }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1wb3B1cC9xdWVyeS1idWlsZGVyLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXBvcHVwL3F1ZXJ5LWJ1aWxkZXItcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFxQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBS3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUt2RixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBRXRFLFlBQW9CLEtBQXFCO1FBQ3JDLEtBQUssRUFBRSxDQUFDO1FBRFEsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFJekMsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFFakMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFtRjlCLG1CQUFjLEdBQUcsQ0FBQyxDQUF5QixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMs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QUMxQix5QkFBeUIsdUVDZHhDLHVySkFpRk07NEZEcEVPLDRCQUE0QjtrQkFKeEMsU0FBUzs7cUdBS2dDLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25JdGVtLCBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlUG9wdXBQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS9iYXNlLXBhZ2UuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWE1lbnVJdGVtQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFF1ZXJ5QnVpbGRlckdyb3VwLCBBWFF1ZXJ5QnVpbGRlclBvcHVwLCBBWFF1ZXJ5QnVpbGRlclJ1bGUgfSBmcm9tICcuLi9xdWVyeS1idWlsZGVyLmNsYXNzJztcclxuXHJcbmltcG9ydCB7IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhLXNvdXJjZS9yZWFkLXBhcmFtJ1xyXG5pbXBvcnQgeyBBWFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLWZvcm0uY29tcG9uZW50JztcclxuQENvbXBvbmVudCh7XHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcXVlcnktYnVpbGRlci1wb3B1cC5jb21wb25lbnQuaHRtbCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBBWFF1ZXJ5QnVpbGRlclBvcHVwQ29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUG9wdXBQYWdlQ29tcG9uZW50IHtcclxuICAgIEBWaWV3Q2hpbGQoQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCkgZm9ybTogQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudDtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9hc3Q6IEFYVG9hc3RTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuICAgIGdyb3VwOiBBWFF1ZXJ5QnVpbGRlckdyb3VwO1xyXG4gICAgaXRlbXM6IEFYUXVlcnlCdWlsZGVyUnVsZVtdID0gW107XHJcbiAgICBncm91cENvcHk6IEFYUXVlcnlCdWlsZGVyR3JvdXA7XHJcbiAgICBjb21wbGF0ZVZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHByb3ZpZGVEYXRhOiBhbnk7XHJcbiAgICBtYWtlSnNvblN0cmluZyhpdGVtczogYW55W10pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCwgYXJyYXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSnNvblN0cmluZyhlbGVtZW50Lml0ZW1zKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY29udHJvbCAmJiBlbGVtZW50LmNvbnRyb2wub3B0aW9ucyAmJiAoZWxlbWVudC5jb250cm9sLm9wdGlvbnMuZGF0YVNvdXJjZSA9PT0gJycgfHwgZWxlbWVudC5jb250cm9sLm9wdGlvbnMuZGF0YVNvdXJjZSA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5wcm92aWRlRGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGFycmF5Lmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGFycmF5WzBdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdmFyIGdyb3VwU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5ncm91cCk7XHJcbiAgICAgICAgdGhpcy5ncm91cENvcHkgPSBKU09OLnBhcnNlKGdyb3VwU3RyaW5nKTtcclxuICAgICAgICB0aGlzLm1ha2VKc29uU3RyaW5nKHRoaXMuZ3JvdXBDb3B5Lml0ZW1zKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZ3JvdXBDb3B5Lml0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Tm9WYWx1ZVJ1bGUodGhpcy5ncm91cENvcHkuaXRlbXNbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UodGhpcy5ncm91cCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIGdldFZhbHVlKHYpIHtcclxuICAgICAgICByZXR1cm4gdi5pbmRleE9mKCc/Pz8/JykgPT0gMCA/IHYuc3BsaXQoJ3wnKVsxXSA6IHY7XHJcbiAgICB9XHJcbiAgICBnZXROb1ZhbHVlUnVsZShncikge1xyXG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgZ3IuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZ3IuY29uZGl0aW9uKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3IuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Tm9WYWx1ZVJ1bGUoZ3IuaXRlbXNbaV0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChnci5vbkRlbWFuZExhYmVsPy5pbmRleE9mKCc/Pz8/JykgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGdyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRleHRWYWx1ZUNoYW5nZShlLCBydWxlKSB7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IGUudmFsdWU7XHJcbiAgICAgICAgcnVsZS50ZXh0ID0gZS52YWx1ZTtcclxuXHJcbiAgICB9XHJcbiAgICBzZWxlY3RlZEl0ZW1zQ2hhbmdlKGUsIHJ1bGUpIHtcclxuICAgICAgICBsZXQgbiA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0RmllbGQnLCBydWxlKTtcclxuICAgICAgICBydWxlLnRleHQgPSBlWzBdW25dO1xyXG4gICAgICAgIGlmIChydWxlICYmIHJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGQpIHtcclxuICAgICAgICAgICAgcnVsZS52YWx1ZSA9IGVbMF1bcnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcnVsZS52YWx1ZSA9IGVbMF0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJ1bGUudmFsdWVJdGVtWzBdID0gZVswXTtcclxuXHJcbiAgICB9XHJcbiAgICB2YWx1ZUNoYW5nZShlLCBydWxlKSB7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IGUudmFsdWU7XHJcbiAgICAgICAgcnVsZS50ZXh0ID0gZS52YWx1ZTtcclxuXHJcbiAgICB9XHJcbiAgICB2YWx1ZUJvb2xlYW5DaGFuZ2UoZSwgcnVsZSkge1xyXG4gICAgICAgIHJ1bGUudGV4dCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gZVswXS52YWx1ZSA6IGUudmFsdWU7XHJcbiAgICAgICAgcnVsZS52YWx1ZSA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gZVswXS52YWx1ZSA6IGUudmFsdWU7XHJcblxyXG4gICAgfVxyXG4gICAgZ2V0T3B0aW9uKG5hbWU6IHN0cmluZywgcnVsZSkge1xyXG4gICAgICAgIHJldHVybiBydWxlLmNvbnRyb2wub3B0aW9ucyA/IHJ1bGUuY29udHJvbC5vcHRpb25zW25hbWVdIDogbnVsbDtcclxuICAgIH1cclxuICAgIGdldFByb3ZpZGVEYXRhID0gKGU6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMpID0+IHtcclxuICAgICAgICBpZiAoZS5leHRyYSAmJiBlLmV4dHJhLmNvbnRyb2wub3B0aW9ucyAmJiBlLmV4dHJhLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlLmV4dHJhLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKHsgLi4uZSwgb3B0aW9uc0RhdGE6IHsgLi4uZS5leHRyYS5jb250cm9sLm9wdGlvbnMgfSB9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHByb3ZpZGVEYXRhQm9vbGVhbiA9IChlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndHJ1ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLnRydWUnKVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ2ZhbHNlJyxcclxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZmFsc2UnKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgXSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGZpbmROdWxsVmFsdWUoZ3IpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChncltpXS52YWx1ZSA9PT0gbnVsbCB8fCBncltpXS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGdyW2ldLnZhbHVlID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGF0ZVZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvLyBpZiAoZ3IuY29uZGl0aW9uKSB7XHJcbiAgICAgICAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3IuaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuZmluZE51bGxWYWx1ZShnci5pdGVtc1tpXSk7XHJcbiAgICAgICAgLy8gICAgIH1cclxuXHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgaWYgKGdyLm9uRGVtYW5kTGFiZWw/LmluZGV4T2YoJz8/Pz8nKSA9PSAwIHx8IGdyLnZhbHVlID09PSBudWxsIHx8IGdyLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZ3IudmFsdWUgPT09ICcnKSB7XHJcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBsYXRlVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgb25Gb290ZXJCdXR0b25DbGljayhlOiBBWE1lbnVJdGVtQ2xpY2tFdmVudCkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm0udmFsaWRhdGUoKS50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMucmVzdWx0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSh0aGlzLmdyb3VwQ29weSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZS5uYW1lID09PSAnY2FuY2VsJykge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRGb290ZXJCdXR0b25zKCk6IEFYQnV0dG9uSXRlbVtdIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uY29uZmlybScpLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdheCBwcmltYXJ5JyxcclxuICAgICAgICAgICAgICAgIGljb246ICdmYXIgZmEtY2hlY2stY2lyY2xlJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uY2FuY2VsJyksXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYXggbGlnaHQnLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS10aW1lcydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH1cclxufSIsIjxkaXY+XHJcbiAgICA8YXgtdmFsaWRhdGlvbi1mb3JtICNmb3JtPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJ1bGUgb2YgaXRlbXNcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIgcnVsZS5jb250cm9sXCIgW25nU3dpdGNoXT1cInJ1bGUuY29udHJvbC50eXBlXCIgc3R5bGU9XCJwYWRkaW5nOiAxZW07XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIndGV4dEJveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7Z2V0VmFsdWUocnVsZS5vbkRlbWFuZExhYmVsKX19PC9heC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXRleHQtYm94IChvblZhbHVlQ2hhbmdlZCk9XCJ0ZXh0VmFsdWVDaGFuZ2UoJGV2ZW50LHJ1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2YXZgtiv2KfYsSDZhdmI2LHYryDZhti42LEg2K7ZiNivINix2Kcg2YjYp9ix2K8g2qnZhtuM2K9cIiBzaXplPVwic21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uLXJ1bGUgdHlwZT1cInJlcXVpcmVkXCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdGV4dC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0Qm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+e3tnZXRWYWx1ZShydWxlLm9uRGVtYW5kTGFiZWwpfX08L2F4LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtc2VsZWN0LWJveCBwbGFjZWhvbGRlcj1cItmF2YLYr9in2LEg2YXZiNix2K8g2YbYuNixINiu2YjYryDYsdinINmI2KfYsdivINqp2YbbjNivXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiZ2V0T3B0aW9uKCd0ZXh0RmllbGQnLHJ1bGUpXCIgWyhzZWxlY3RlZEl0ZW1zKV09XCJydWxlLnZhbHVlSXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJnZXRPcHRpb24oJ3ZhbHVlRmllbGQnLHJ1bGUpXCIgW21vZGVdPVwiZ2V0T3B0aW9uKCdtb2RlJyxydWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtc0NoYW5nZSk9XCJzZWxlY3RlZEl0ZW1zQ2hhbmdlKCRldmVudCxydWxlKVwiIHNpemU9XCJzbVwiICNzZWxlY3RCb3hWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW90ZU9wZXJhdGlvbl09XCJnZXRPcHRpb24oJ3JlbW90ZU9wZXJhdGlvbicscnVsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uLXJ1bGUgdHlwZT1cInJlcXVpcmVkXCI+PC9heC12YWxpZGF0aW9uLXJ1bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtZGF0YS1zb3VyY2UgW3Byb3ZpZGVEYXRhXT1cImdldFByb3ZpZGVEYXRhXCIgW3BhcmFtc109XCJydWxlXCI+PC9heC1kYXRhLXNvdXJjZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1zZWxlY3QtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYXgtZm9ybS1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlckJveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7Z2V0VmFsdWUocnVsZS5vbkRlbWFuZExhYmVsKX19PC9heC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LW51bWJlci1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInZhbHVlQ2hhbmdlKCRldmVudCxydWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItmF2YLYr9in2LEg2YXZiNix2K8g2YbYuNixINiu2YjYryDYsdinINmI2KfYsdivINqp2YbbjNivXCIgc2l6ZT1cInNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC12YWxpZGF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LW51bWJlci1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGF0ZVBpY2tlcidcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInYm9vbGVhbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1ncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7Z2V0VmFsdWUocnVsZS5vbkRlbWFuZExhYmVsKX19PC9heC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggI3NlbGVjdEJveEJvb2xlYW4gKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwidmFsdWVCb29sZWFuQ2hhbmdlKCRldmVudCxydWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd051bGw9XCJmYWxzZVwiIFtzZWxlY3RlZFZhbHVlc109XCJydWxlLnZhbHVlXCIgc2l6ZT1cInNtXCIgbW9kZT1cInNpbmdsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWRhdGEtc291cmNlIFtwcm92aWRlRGF0YV09XCJwcm92aWRlRGF0YUJvb2xlYW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtZGF0YS1zb3VyY2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9heC12YWxpZGF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+e3tnZXRWYWx1ZShydWxlLm9uRGVtYW5kTGFiZWwpfX08L2F4LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInRleHRWYWx1ZUNoYW5nZSgkZXZlbnQscnVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLZhdmC2K/Yp9ixINmF2YjYsdivINmG2LjYsSDYrtmI2K8g2LHYpyDZiNin2LHYryDaqdmG24zYr1wiIHNpemU9XCJzbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdmFsaWRhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC10ZXh0LWJveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9heC12YWxpZGF0aW9uLWZvcm0+XHJcbjwvZGl2PiJdfQ==
1
+ import { AXTranslator } from '@acorex/core';
2
+ import { Component, ViewChild } from '@angular/core';
3
+ import { AXBasePopupPageComponent } from '../../base/base-page.class';
4
+ import { AXToastService } from '../../toast/toast.service';
5
+ import { AXValidationFormComponent } from '../../validation/validation-form.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../toast/toast.service";
8
+ import * as i2 from "../../validation/validation-form.component";
9
+ import * as i3 from "../../form-group/form-group.component";
10
+ import * as i4 from "../../label/label.component";
11
+ import * as i5 from "../../textbox/textbox.component";
12
+ import * as i6 from "../../validation/validation.component";
13
+ import * as i7 from "../../validation/validation-rule.widget";
14
+ import * as i8 from "../../selectbox/selectbox.component";
15
+ import * as i9 from "../../data-source/datasource.component";
16
+ import * as i10 from "../../number-box/number-box.component";
17
+ import * as i11 from "@angular/common";
18
+ export class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {
19
+ constructor(toast) {
20
+ super();
21
+ this.toast = toast;
22
+ this.items = [];
23
+ this.complateValue = true;
24
+ this.getProvideData = (e) => {
25
+ if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {
26
+ return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });
27
+ }
28
+ };
29
+ this.provideDataBoolean = (e) => {
30
+ return new Promise((resolve) => {
31
+ resolve([
32
+ {
33
+ value: 'true',
34
+ text: AXTranslator.get('queryBuilder.true')
35
+ },
36
+ {
37
+ value: 'false',
38
+ text: AXTranslator.get('queryBuilder.false')
39
+ }
40
+ ]);
41
+ });
42
+ };
43
+ }
44
+ makeJsonString(items) {
45
+ return new Promise((resolve, reject) => {
46
+ items.forEach((element, index, array) => {
47
+ if (element.items) {
48
+ this.makeJsonString(element.items);
49
+ }
50
+ else {
51
+ if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {
52
+ element.control.options.dataSource = this.provideData;
53
+ }
54
+ }
55
+ if (index === array.length - 1) {
56
+ resolve(array[0]);
57
+ }
58
+ });
59
+ });
60
+ }
61
+ ngAfterViewInit() {
62
+ var groupString = JSON.stringify(this.group);
63
+ this.groupCopy = JSON.parse(groupString);
64
+ this.makeJsonString(this.groupCopy.items);
65
+ for (let i = 0; i < this.groupCopy.items.length; i++) {
66
+ this.getNoValueRule(this.groupCopy.items[i]);
67
+ }
68
+ if (this.items.length < 1) {
69
+ this.close(this.group);
70
+ }
71
+ }
72
+ getValue(v) {
73
+ return v.indexOf('????') == 0 ? v.split('|')[1] : v;
74
+ }
75
+ getNoValueRule(gr) {
76
+ // for (let i = 0; i < gr.items.length; i++) {
77
+ if (gr.condition) {
78
+ for (let i = 0; i < gr.items.length; i++) {
79
+ this.getNoValueRule(gr.items[i]);
80
+ }
81
+ }
82
+ else {
83
+ if (gr.onDemandLabel?.indexOf('????') == 0) {
84
+ this.items.push(gr);
85
+ }
86
+ }
87
+ // }
88
+ }
89
+ ngOnInit() {
90
+ }
91
+ textValueChange(e, rule) {
92
+ rule.value = e.value;
93
+ rule.text = e.value;
94
+ }
95
+ selectedItemsChange(e, rule) {
96
+ let n = this.getOption('textField', rule);
97
+ rule.text = e[0][n];
98
+ if (rule && rule.control.options.valueField) {
99
+ rule.value = e[0][rule.control.options.valueField];
100
+ }
101
+ else {
102
+ rule.value = e[0].value;
103
+ }
104
+ rule.valueItem[0] = e[0];
105
+ }
106
+ valueChange(e, rule) {
107
+ rule.value = e.value;
108
+ rule.text = e.value;
109
+ }
110
+ valueBooleanChange(e, rule) {
111
+ rule.text = e.value == undefined ? e[0].value : e.value;
112
+ rule.value = e.value == undefined ? e[0].value : e.value;
113
+ }
114
+ getOption(name, rule) {
115
+ return rule.control.options ? rule.control.options[name] : null;
116
+ }
117
+ findNullValue(gr) {
118
+ for (let i = 0; i < gr.length; i++) {
119
+ if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {
120
+ this.complateValue = false;
121
+ }
122
+ }
123
+ // if (gr.condition) {
124
+ // for (let i = 0; i < gr.items.length; i++) {
125
+ // this.findNullValue(gr.items[i]);
126
+ // }
127
+ // } else {
128
+ // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {
129
+ // this.complateValue = false;
130
+ // }
131
+ // }
132
+ }
133
+ onFooterButtonClick(e) {
134
+ if (e.name === 'confirm') {
135
+ this.form.validate().then(c => {
136
+ if (c.result === true) {
137
+ this.close(this.groupCopy);
138
+ }
139
+ });
140
+ }
141
+ if (e.name === 'cancel') {
142
+ this.close();
143
+ }
144
+ }
145
+ getFooterButtons() {
146
+ return [
147
+ {
148
+ text: AXTranslator.get('common.confirm'),
149
+ name: 'confirm',
150
+ style: 'ax primary',
151
+ icon: 'far fa-check-circle'
152
+ },
153
+ {
154
+ text: AXTranslator.get('common.cancel'),
155
+ name: 'cancel',
156
+ style: 'ax light',
157
+ icon: 'far fa-times'
158
+ }
159
+ ];
160
+ }
161
+ }
162
+ AXQueryBuilderPopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXQueryBuilderPopupComponent, deps: [{ token: i1.AXToastService }], target: i0.ɵɵFactoryTarget.Component });
163
+ AXQueryBuilderPopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXQueryBuilderPopupComponent, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: AXValidationFormComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div>\n <ax-validation-form #form>\n <div *ngFor=\"let rule of items\">\n\n <div *ngIf=\" rule.control\" [ngSwitch]=\"rule.control.type\" style=\"padding: 1em;\">\n <div *ngSwitchCase=\"'textBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'selectBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\n [textField]=\"getOption('textField',rule)\" [(selectedItems)]=\"rule.valueItem\"\n [valueField]=\"getOption('valueField',rule)\" [mode]=\"getOption('mode',rule)\"\n (selectedItemsChange)=\"selectedItemsChange($event,rule)\" size=\"sm\" #selectBoxValue\n [remoteOperation]=\"getOption('remoteOperation',rule)\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n <ax-data-source [provideData]=\"getProvideData\" [params]=\"rule\"></ax-data-source>\n </ax-select-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'numberBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-number-box (onValueChanged)=\"valueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-number-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'datePicker'\">\n\n\n </div>\n <div *ngSwitchCase=\"'boolean'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event,rule)\"\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\n <ax-data-source [provideData]=\"provideDataBoolean\">\n </ax-data-source>\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-select-box>\n </ax-form-group>\n\n </div>\n <div *ngSwitchDefault>\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n\n </ax-form-group>\n\n </div>\n </div>\n\n\n\n\n </div>\n\n </ax-validation-form>\n</div>", components: [{ type: i2.AXValidationFormComponent, selector: "ax-validation-form", inputs: ["validateOn"], outputs: ["onInit"] }, { type: i3.AXFormGroupComponent, selector: "ax-form-group", inputs: ["size"] }, { type: i4.AXLabelComponent, selector: "ax-label", inputs: ["size"] }, { type: i5.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "type", "showMask", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { type: i6.AXValidationComponent, selector: "ax-validation", inputs: ["rules", "validateOn"], outputs: ["rulesChange", "showMessage"] }, { type: i7.AXValidationRuleComponent, selector: "ax-validation-rule", inputs: ["type", "message", "value", "enabled"] }, { type: i8.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["showDropDownButton", "rowInputTemplate", "showCheckBox", "readonly", "rtl", "disabled", "placeholder", "size", "allowNull", "textAlign", "bufferSize", "remoteOperation", "fitParent", "dropdownWidth", "dataSource", "validation", "disabledCallback", "allowSearch", "textField", "valueField", "disabledField", "mode", "items", "selectedItems", "selectedValues"], outputs: ["dropdownToggle", "itemsChange", "onBlur", "onFocus", "selectionChanged", "selectedItemsChange", "selectedValuesChange"] }, { type: i9.AXDataSourceComponent, selector: "ax-data-source", inputs: ["provideData", "params"] }, { type: i10.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["min", "max", "showSeparator", "showCurrency", "showCounter", "scrollWeel", "showDoubleCounter", "maxLength", "intStep", "decimalNumber", "customStep"] }], directives: [{ type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i11.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i11.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i11.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXQueryBuilderPopupComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ template: "<div>\n <ax-validation-form #form>\n <div *ngFor=\"let rule of items\">\n\n <div *ngIf=\" rule.control\" [ngSwitch]=\"rule.control.type\" style=\"padding: 1em;\">\n <div *ngSwitchCase=\"'textBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'selectBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-select-box placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\"\n [textField]=\"getOption('textField',rule)\" [(selectedItems)]=\"rule.valueItem\"\n [valueField]=\"getOption('valueField',rule)\" [mode]=\"getOption('mode',rule)\"\n (selectedItemsChange)=\"selectedItemsChange($event,rule)\" size=\"sm\" #selectBoxValue\n [remoteOperation]=\"getOption('remoteOperation',rule)\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n <ax-data-source [provideData]=\"getProvideData\" [params]=\"rule\"></ax-data-source>\n </ax-select-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'numberBox'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-number-box (onValueChanged)=\"valueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-number-box>\n </ax-form-group>\n </div>\n <div *ngSwitchCase=\"'datePicker'\">\n\n\n </div>\n <div *ngSwitchCase=\"'boolean'\">\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-select-box #selectBoxBoolean (selectedItemsChange)=\"valueBooleanChange($event,rule)\"\n allowNull=\"false\" [selectedValues]=\"rule.value\" size=\"sm\" mode=\"single\">\n <ax-data-source [provideData]=\"provideDataBoolean\">\n </ax-data-source>\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-select-box>\n </ax-form-group>\n\n </div>\n <div *ngSwitchDefault>\n <ax-form-group>\n <ax-label>{{getValue(rule.onDemandLabel)}}</ax-label>\n <ax-text-box (onValueChanged)=\"textValueChange($event,rule)\"\n placeholder=\"\u0645\u0642\u062F\u0627\u0631 \u0645\u0648\u0631\u062F \u0646\u0638\u0631 \u062E\u0648\u062F \u0631\u0627 \u0648\u0627\u0631\u062F \u06A9\u0646\u06CC\u062F\" size=\"sm\">\n <ax-validation>\n <ax-validation-rule type=\"required\"></ax-validation-rule>\n </ax-validation>\n </ax-text-box>\n\n </ax-form-group>\n\n </div>\n </div>\n\n\n\n\n </div>\n\n </ax-validation-form>\n</div>" }]
167
+ }], ctorParameters: function () { return [{ type: i1.AXToastService }]; }, propDecorators: { form: [{
168
+ type: ViewChild,
169
+ args: [AXValidationFormComponent]
170
+ }] } });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXIvcXVlcnktYnVpbGRlci1wb3B1cC9xdWVyeS1idWlsZGVyLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvcXVlcnktYnVpbGRlci9xdWVyeS1idWlsZGVyLXBvcHVwL3F1ZXJ5LWJ1aWxkZXItcG9wdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUQsT0FBTyxFQUFxQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBS3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUt2RixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBRXRFLFlBQW9CLEtBQXFCO1FBQ3JDLEtBQUssRUFBRSxDQUFDO1FBRFEsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFJekMsVUFBSyxHQUF5QixFQUFFLENBQUM7UUFFakMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFtRjlCLG1CQUFjLEdBQUcsQ0FBQyxDQUF5QixFQUFFLEVBQUU7WUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMs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QUMxQix5QkFBeUIsdUVDZHhDLHFoSkFpRk07NEZEcEVPLDRCQUE0QjtrQkFKeEMsU0FBUzs7cUdBS2dDLElBQUk7c0JBQXpDLFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25JdGVtLCBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEJhc2VQb3B1cFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlL2Jhc2UtcGFnZS5jbGFzcyc7XG5pbXBvcnQgeyBBWE1lbnVJdGVtQ2xpY2tFdmVudCB9IGZyb20gJy4uLy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhRdWVyeUJ1aWxkZXJHcm91cCwgQVhRdWVyeUJ1aWxkZXJQb3B1cCwgQVhRdWVyeUJ1aWxkZXJSdWxlIH0gZnJvbSAnLi4vcXVlcnktYnVpbGRlci5jbGFzcyc7XG5cbmltcG9ydCB7IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhLXNvdXJjZS9yZWFkLXBhcmFtJ1xuaW1wb3J0IHsgQVhUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b2FzdC90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tZm9ybS5jb21wb25lbnQnO1xuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWJ1aWxkZXItcG9wdXAuY29tcG9uZW50Lmh0bWwnXG59KVxuXG5leHBvcnQgY2xhc3MgQVhRdWVyeUJ1aWxkZXJQb3B1cENvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBvcHVwUGFnZUNvbXBvbmVudCB7XG4gICAgQFZpZXdDaGlsZChBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50KSBmb3JtOiBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50O1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9hc3Q6IEFYVG9hc3RTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIGdyb3VwOiBBWFF1ZXJ5QnVpbGRlckdyb3VwO1xuICAgIGl0ZW1zOiBBWFF1ZXJ5QnVpbGRlclJ1bGVbXSA9IFtdO1xuICAgIGdyb3VwQ29weTogQVhRdWVyeUJ1aWxkZXJHcm91cDtcbiAgICBjb21wbGF0ZVZhbHVlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwcm92aWRlRGF0YTogYW55O1xuICAgIG1ha2VKc29uU3RyaW5nKGl0ZW1zOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgsIGFycmF5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWtlSnNvblN0cmluZyhlbGVtZW50Lml0ZW1zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jb250cm9sICYmIGVsZW1lbnQuY29udHJvbC5vcHRpb25zICYmIChlbGVtZW50LmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlID09PSAnJyB8fCBlbGVtZW50LmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlID0gdGhpcy5wcm92aWRlRGF0YTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IGFycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhcnJheVswXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHZhciBncm91cFN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JvdXApO1xuICAgICAgICB0aGlzLmdyb3VwQ29weSA9IEpTT04ucGFyc2UoZ3JvdXBTdHJpbmcpO1xuICAgICAgICB0aGlzLm1ha2VKc29uU3RyaW5nKHRoaXMuZ3JvdXBDb3B5Lml0ZW1zKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmdyb3VwQ29weS5pdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5nZXROb1ZhbHVlUnVsZSh0aGlzLmdyb3VwQ29weS5pdGVtc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoIDwgMSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZSh0aGlzLmdyb3VwKTtcbiAgICAgICAgfVxuXG4gICAgfVxuICAgIGdldFZhbHVlKHYpIHtcbiAgICAgICAgcmV0dXJuIHYuaW5kZXhPZignPz8/PycpID09IDAgPyB2LnNwbGl0KCd8JylbMV0gOiB2O1xuICAgIH1cbiAgICBnZXROb1ZhbHVlUnVsZShncikge1xuICAgICAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IGdyLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChnci5jb25kaXRpb24pIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3IuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldE5vVmFsdWVSdWxlKGdyLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGdyLm9uRGVtYW5kTGFiZWw/LmluZGV4T2YoJz8/Pz8nKSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKGdyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICB9XG5cblxuICAgIHRleHRWYWx1ZUNoYW5nZShlLCBydWxlKSB7XG4gICAgICAgIHJ1bGUudmFsdWUgPSBlLnZhbHVlO1xuICAgICAgICBydWxlLnRleHQgPSBlLnZhbHVlO1xuXG4gICAgfVxuICAgIHNlbGVjdGVkSXRlbXNDaGFuZ2UoZSwgcnVsZSkge1xuICAgICAgICBsZXQgbiA9IHRoaXMuZ2V0T3B0aW9uKCd0ZXh0RmllbGQnLCBydWxlKTtcbiAgICAgICAgcnVsZS50ZXh0ID0gZVswXVtuXTtcbiAgICAgICAgaWYgKHJ1bGUgJiYgcnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZCkge1xuICAgICAgICAgICAgcnVsZS52YWx1ZSA9IGVbMF1bcnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBydWxlLnZhbHVlID0gZVswXS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBydWxlLnZhbHVlSXRlbVswXSA9IGVbMF07XG5cbiAgICB9XG4gICAgdmFsdWVDaGFuZ2UoZSwgcnVsZSkge1xuICAgICAgICBydWxlLnZhbHVlID0gZS52YWx1ZTtcbiAgICAgICAgcnVsZS50ZXh0ID0gZS52YWx1ZTtcblxuICAgIH1cbiAgICB2YWx1ZUJvb2xlYW5DaGFuZ2UoZSwgcnVsZSkge1xuICAgICAgICBydWxlLnRleHQgPSBlLnZhbHVlID09IHVuZGVmaW5lZCA/IGVbMF0udmFsdWUgOiBlLnZhbHVlO1xuICAgICAgICBydWxlLnZhbHVlID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogZS52YWx1ZTtcblxuICAgIH1cbiAgICBnZXRPcHRpb24obmFtZTogc3RyaW5nLCBydWxlKSB7XG4gICAgICAgIHJldHVybiBydWxlLmNvbnRyb2wub3B0aW9ucyA/IHJ1bGUuY29udHJvbC5vcHRpb25zW25hbWVdIDogbnVsbDtcbiAgICB9XG4gICAgZ2V0UHJvdmlkZURhdGEgPSAoZTogQVhEYXRhU291cmNlUmVhZFBhcmFtcykgPT4ge1xuICAgICAgICBpZiAoZS5leHRyYSAmJiBlLmV4dHJhLmNvbnRyb2wub3B0aW9ucyAmJiBlLmV4dHJhLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZS5leHRyYS5jb250cm9sLm9wdGlvbnMuZGF0YVNvdXJjZSh7IC4uLmUsIG9wdGlvbnNEYXRhOiB7IC4uLmUuZXh0cmEuY29udHJvbC5vcHRpb25zIH0gfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJvdmlkZURhdGFCb29sZWFuID0gKGUpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci50cnVlJylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdmYWxzZScsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5mYWxzZScpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBdKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGZpbmROdWxsVmFsdWUoZ3IpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGdyW2ldLnZhbHVlID09PSBudWxsIHx8IGdyW2ldLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZ3JbaV0udmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wbGF0ZVZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIGlmIChnci5jb25kaXRpb24pIHtcbiAgICAgICAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3IuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmZpbmROdWxsVmFsdWUoZ3IuaXRlbXNbaV0pO1xuICAgICAgICAvLyAgICAgfVxuXG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICBpZiAoZ3Iub25EZW1hbmRMYWJlbD8uaW5kZXhPZignPz8/PycpID09IDAgfHwgZ3IudmFsdWUgPT09IG51bGwgfHwgZ3IudmFsdWUgPT09IHVuZGVmaW5lZCB8fCBnci52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmNvbXBsYXRlVmFsdWUgPSBmYWxzZTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuXG4gICAgfVxuXG4gICAgb25Gb290ZXJCdXR0b25DbGljayhlOiBBWE1lbnVJdGVtQ2xpY2tFdmVudCkge1xuICAgICAgICBpZiAoZS5uYW1lID09PSAnY29uZmlybScpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS52YWxpZGF0ZSgpLnRoZW4oYyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGMucmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UodGhpcy5ncm91cENvcHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdjYW5jZWwnKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGdldEZvb3RlckJ1dHRvbnMoKTogQVhCdXR0b25JdGVtW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jb25maXJtJyksXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpcm0nLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYXggcHJpbWFyeScsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS1jaGVjay1jaXJjbGUnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jYW5jZWwnKSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2F4IGxpZ2h0JyxcbiAgICAgICAgICAgICAgICBpY29uOiAnZmFyIGZhLXRpbWVzJ1xuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfVxufSIsIjxkaXY+XG4gICAgPGF4LXZhbGlkYXRpb24tZm9ybSAjZm9ybT5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcnVsZSBvZiBpdGVtc1wiPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIHJ1bGUuY29udHJvbFwiIFtuZ1N3aXRjaF09XCJydWxlLmNvbnRyb2wudHlwZVwiIHN0eWxlPVwicGFkZGluZzogMWVtO1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0Qm94J1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1sYWJlbD57e2dldFZhbHVlKHJ1bGUub25EZW1hbmRMYWJlbCl9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInRleHRWYWx1ZUNoYW5nZSgkZXZlbnQscnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2YXZgtiv2KfYsSDZhdmI2LHYryDZhti42LEg2K7ZiNivINix2Kcg2YjYp9ix2K8g2qnZhtuM2K9cIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdEJveCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+e3tnZXRWYWx1ZShydWxlLm9uRGVtYW5kTGFiZWwpfX08L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXNlbGVjdC1ib3ggcGxhY2Vob2xkZXI9XCLZhdmC2K/Yp9ixINmF2YjYsdivINmG2LjYsSDYrtmI2K8g2LHYpyDZiNin2LHYryDaqdmG24zYr1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRGaWVsZF09XCJnZXRPcHRpb24oJ3RleHRGaWVsZCcscnVsZSlcIiBbKHNlbGVjdGVkSXRlbXMpXT1cInJ1bGUudmFsdWVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCJnZXRPcHRpb24oJ3ZhbHVlRmllbGQnLHJ1bGUpXCIgW21vZGVdPVwiZ2V0T3B0aW9uKCdtb2RlJyxydWxlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkSXRlbXNDaGFuZ2UpPVwic2VsZWN0ZWRJdGVtc0NoYW5nZSgkZXZlbnQscnVsZSlcIiBzaXplPVwic21cIiAjc2VsZWN0Qm94VmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3RlT3BlcmF0aW9uXT1cImdldE9wdGlvbigncmVtb3RlT3BlcmF0aW9uJyxydWxlKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtZGF0YS1zb3VyY2UgW3Byb3ZpZGVEYXRhXT1cImdldFByb3ZpZGVEYXRhXCIgW3BhcmFtc109XCJydWxlXCI+PC9heC1kYXRhLXNvdXJjZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXJCb3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7Z2V0VmFsdWUocnVsZS5vbkRlbWFuZExhYmVsKX19PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1udW1iZXItYm94IChvblZhbHVlQ2hhbmdlZCk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQscnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2YXZgtiv2KfYsSDZhdmI2LHYryDZhti42LEg2K7ZiNivINix2Kcg2YjYp9ix2K8g2qnZhtuM2K9cIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LW51bWJlci1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGF0ZVBpY2tlcidcIj5cblxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb2xlYW4nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7Z2V0VmFsdWUocnVsZS5vbkRlbWFuZExhYmVsKX19PC9heC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94ICNzZWxlY3RCb3hCb29sZWFuIChzZWxlY3RlZEl0ZW1zQ2hhbmdlKT1cInZhbHVlQm9vbGVhbkNoYW5nZSgkZXZlbnQscnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93TnVsbD1cImZhbHNlXCIgW3NlbGVjdGVkVmFsdWVzXT1cInJ1bGUudmFsdWVcIiBzaXplPVwic21cIiBtb2RlPVwic2luZ2xlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWRhdGEtc291cmNlIFtwcm92aWRlRGF0YV09XCJwcm92aWRlRGF0YUJvb2xlYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LWRhdGEtc291cmNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC12YWxpZGF0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbi1ydWxlIHR5cGU9XCJyZXF1aXJlZFwiPjwvYXgtdmFsaWRhdGlvbi1ydWxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9heC1mb3JtLWdyb3VwPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICAgICAgICA8YXgtZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1sYWJlbD57e2dldFZhbHVlKHJ1bGUub25EZW1hbmRMYWJlbCl9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXgtdGV4dC1ib3ggKG9uVmFsdWVDaGFuZ2VkKT1cInRleHRWYWx1ZUNoYW5nZSgkZXZlbnQscnVsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2YXZgtiv2KfYsSDZhdmI2LHYryDZhti42LEg2K7ZiNivINix2Kcg2YjYp9ix2K8g2qnZhtuM2K9cIiBzaXplPVwic21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtdmFsaWRhdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LXZhbGlkYXRpb24tcnVsZSB0eXBlPVwicmVxdWlyZWRcIj48L2F4LXZhbGlkYXRpb24tcnVsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXZhbGlkYXRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXRleHQtYm94PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvYXgtZm9ybS1ncm91cD5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuXG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2F4LXZhbGlkYXRpb24tZm9ybT5cbjwvZGl2PiJdfQ==