@acorex/platform 18.0.11 → 18.0.13

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 (545) hide show
  1. package/auth/lib/session.service.d.ts +2 -2
  2. package/common/lib/app/application.types.d.ts +3 -2
  3. package/common/lib/layout/sticky.directive.d.ts +1 -1
  4. package/common/lib/schema/widget/widget-renderer.d.ts +1 -0
  5. package/core/utils/countdown-timer.d.ts +4 -2
  6. package/esm2022/auth/lib/session.service.mjs +23 -38
  7. package/esm2022/common/lib/app/application.types.mjs +1 -1
  8. package/esm2022/common/lib/layout/sticky.directive.mjs +2 -2
  9. package/esm2022/common/lib/schema/widget/widget-renderer.mjs +20 -16
  10. package/esm2022/common/lib/schema/widgets/text/text-widget-column.component.mjs +3 -3
  11. package/esm2022/core/utils/countdown-timer.mjs +10 -3
  12. package/esm2022/layout/builder/lib/builder/builder.service.mjs +15 -12
  13. package/esm2022/layout/builder/lib/builder/index.mjs +7 -6
  14. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +33 -0
  15. package/esm2022/layout/builder/lib/builder/widget-groups.mjs +27 -0
  16. package/esm2022/layout/builder/lib/builder/widget-registery.service.mjs +3 -3
  17. package/esm2022/layout/builder/lib/builder/widget.types.mjs +7 -6
  18. package/esm2022/layout/designer/index.mjs +3 -3
  19. package/esm2022/layout/designer/lib/board/board.component.mjs +69 -45
  20. package/esm2022/layout/designer/lib/command.mjs +185 -0
  21. package/esm2022/layout/designer/lib/designer/designer.component.mjs +64 -38
  22. package/esm2022/layout/designer/lib/designer.service.mjs +142 -115
  23. package/esm2022/layout/designer/lib/header-menu/header-menu.component.mjs +24 -0
  24. package/esm2022/layout/designer/lib/helpers/add-widget-button/add-widget-button.component.mjs +37 -0
  25. package/esm2022/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.mjs +82 -0
  26. package/esm2022/layout/designer/lib/history/history.component.mjs +28 -0
  27. package/esm2022/layout/designer/lib/outline/outline.component.mjs +17 -17
  28. package/esm2022/layout/designer/lib/pages/pages.component.mjs +28 -0
  29. package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +5 -2
  30. package/esm2022/layout/designer/lib/widget-designer-renderer.component.mjs +3 -3
  31. package/esm2022/layout/designer/lib/widget-picker/widget-picker.component.mjs +80 -6
  32. package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.mjs +6 -4
  33. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +17 -7
  34. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +1 -1
  35. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +12 -6
  36. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +1 -2
  37. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +2 -2
  38. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +1 -1
  39. package/esm2022/widgets/lib/properties/editors.props.mjs +114 -44
  40. package/esm2022/widgets/lib/properties/layout.props.mjs +60 -0
  41. package/esm2022/widgets/lib/properties/table-column.props.mjs +3 -2
  42. package/esm2022/widgets/lib/widgets/actions/button/button-widget-view.component.mjs +52 -0
  43. package/esm2022/widgets/lib/widgets/actions/button/button-widget.config.mjs +27 -0
  44. package/esm2022/widgets/lib/widgets/actions/button/index.mjs +3 -0
  45. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-column.component.mjs +1 -1
  46. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-edit.component.mjs +122 -0
  47. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-filter.component.mjs +1 -1
  48. package/esm2022/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-print.component.mjs +1 -1
  49. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget-view.component.mjs +215 -0
  50. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.config.mjs +51 -0
  51. package/esm2022/widgets/lib/widgets/advance/file/file-box-widget.service.mjs +3 -0
  52. package/esm2022/widgets/lib/widgets/advance/file/index.mjs +8 -0
  53. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-column.component.mjs +1 -1
  54. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-edit.component.mjs +1 -1
  55. package/esm2022/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-filter.component.mjs +1 -1
  56. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-print.component.mjs +19 -0
  57. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-types.mjs +2 -0
  58. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.mjs +160 -0
  59. package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget.config.mjs +29 -0
  60. package/esm2022/widgets/lib/widgets/advance/gallery/index.mjs +7 -0
  61. package/esm2022/widgets/lib/widgets/advance/map/index.mjs +7 -0
  62. package/esm2022/widgets/lib/widgets/{editors/link-widget/link-widget-print.component.mjs → advance/map/map-box-widget-column.component.mjs} +5 -5
  63. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget-edit.component.mjs +171 -0
  64. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-filter.component.mjs +1 -1
  65. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-print.component.mjs +1 -1
  66. package/esm2022/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-view.component.mjs +3 -3
  67. package/esm2022/widgets/lib/widgets/advance/map/map-box-widget.config.mjs +31 -0
  68. package/esm2022/widgets/lib/widgets/advance/qrcode/index.mjs +3 -0
  69. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +51 -0
  70. package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.mjs +62 -0
  71. package/esm2022/widgets/lib/widgets/advance/signature/index.mjs +7 -0
  72. package/esm2022/widgets/lib/widgets/{editors/select-box-widget/select-box-widget-print.component.mjs → advance/signature/signature-pad-widget-column.component.mjs} +5 -5
  73. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget-edit.component.mjs +142 -0
  74. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-filter.component.mjs +1 -1
  75. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-print.component.mjs +1 -1
  76. package/esm2022/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-view.component.mjs +1 -1
  77. package/esm2022/widgets/lib/widgets/advance/signature/signature-pad-widget.config.mjs +31 -0
  78. package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.mjs +10 -12
  79. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-column.component.mjs +1 -1
  80. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-edit.component.mjs +48 -0
  81. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-filter.component.mjs +1 -1
  82. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-print.component.mjs +1 -1
  83. package/esm2022/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-view.component.mjs +1 -1
  84. package/esm2022/widgets/lib/widgets/editors/color/color-box-widget.config.mjs +31 -0
  85. package/esm2022/widgets/lib/widgets/editors/color/index.mjs +7 -0
  86. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-column.component.mjs +36 -0
  87. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +297 -0
  88. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-filter.component.mjs +1 -1
  89. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-print.component.mjs +1 -1
  90. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-view.component.mjs +122 -0
  91. package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +81 -0
  92. package/esm2022/widgets/lib/widgets/editors/contact/contact.type.mjs +2 -0
  93. package/esm2022/widgets/lib/widgets/editors/contact/index.mjs +7 -0
  94. package/esm2022/widgets/lib/widgets/editors/{contact-widget → contact}/popup-component.mjs +1 -1
  95. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +44 -0
  96. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +133 -0
  97. package/esm2022/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-filter.component.mjs +1 -1
  98. package/esm2022/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-print.component.mjs +1 -1
  99. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +54 -0
  100. package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.mjs +40 -0
  101. package/esm2022/widgets/lib/widgets/editors/date-time/index.mjs +7 -0
  102. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-column.component.mjs +66 -0
  103. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget-edit.component.mjs +249 -0
  104. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-filter.component.mjs +1 -1
  105. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-print.component.mjs +1 -1
  106. package/esm2022/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-view.component.mjs +1 -1
  107. package/esm2022/widgets/lib/widgets/editors/email/email-box-widget.config.mjs +39 -0
  108. package/esm2022/widgets/lib/widgets/editors/email/index.mjs +7 -0
  109. package/esm2022/widgets/lib/widgets/editors/large-text/index.mjs +7 -0
  110. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-column.component.mjs +1 -1
  111. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-edit.component.mjs +1 -1
  112. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-filter.component.mjs +1 -1
  113. package/esm2022/widgets/lib/widgets/editors/{map-box-widget/map-box-widget-column.component.mjs → large-text/large-text-widget-print.component.mjs} +5 -5
  114. package/esm2022/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-view.component.mjs +1 -1
  115. package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget.config.mjs +39 -0
  116. package/esm2022/widgets/lib/widgets/editors/link/index.mjs +7 -0
  117. package/esm2022/widgets/lib/widgets/editors/{link-widget → link}/link-widget-column.component.mjs +1 -1
  118. package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +391 -0
  119. package/esm2022/widgets/lib/widgets/editors/link/link-widget-filter.component.mjs +20 -0
  120. package/esm2022/widgets/lib/widgets/editors/link/link-widget-print.component.mjs +19 -0
  121. package/esm2022/widgets/lib/widgets/editors/{link-widget → link}/link-widget-view.component.mjs +1 -1
  122. package/esm2022/widgets/lib/widgets/editors/link/link-widget.config.mjs +29 -0
  123. package/esm2022/widgets/lib/widgets/editors/number/index.mjs +7 -0
  124. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-column.component.mjs +38 -0
  125. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-edit.component.mjs +157 -0
  126. package/esm2022/widgets/lib/widgets/{layout/repeater-widget/repeater-widget-edit.component.mjs → editors/number/number-box-widget-filter.component.mjs} +5 -5
  127. package/esm2022/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-print.component.mjs +1 -1
  128. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget-view.component.mjs +56 -0
  129. package/esm2022/widgets/lib/widgets/editors/number/number-box-widget.config.mjs +39 -0
  130. package/esm2022/widgets/lib/widgets/editors/password/index.mjs +7 -0
  131. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget/phone-box-widget-print.component.mjs → password/password-box-widget-column.component.mjs} +5 -5
  132. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-edit.component.mjs +1 -1
  133. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-filter.component.mjs +1 -1
  134. package/esm2022/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-print.component.mjs +1 -1
  135. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget-view.component.mjs +76 -0
  136. package/esm2022/widgets/lib/widgets/editors/password/password-box-widget.config.mjs +38 -0
  137. package/esm2022/widgets/lib/widgets/editors/phone/index.mjs +7 -0
  138. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-column.component.mjs +66 -0
  139. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-edit.component.mjs +1 -1
  140. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-filter.component.mjs +1 -1
  141. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget-print.component.mjs +19 -0
  142. package/esm2022/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-view.component.mjs +1 -1
  143. package/esm2022/widgets/lib/widgets/editors/phone/phone-box-widget.config.mjs +32 -0
  144. package/esm2022/widgets/lib/widgets/editors/rich-text/index.mjs +7 -0
  145. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-popup.component.mjs +1 -1
  146. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-column.component.mjs +46 -0
  147. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +67 -0
  148. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-filter.component.mjs +1 -1
  149. package/esm2022/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-print.component.mjs +1 -1
  150. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-view.component.mjs +45 -0
  151. package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.mjs +39 -0
  152. package/esm2022/widgets/lib/widgets/editors/select/index.mjs +7 -0
  153. package/esm2022/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-column.component.mjs +1 -1
  154. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +85 -0
  155. package/esm2022/widgets/lib/widgets/editors/{gallery-widget/gallery-widget-print.component.mjs → select/select-box-widget-filter.component.mjs} +5 -5
  156. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-print.component.mjs +19 -0
  157. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +60 -0
  158. package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +38 -0
  159. package/esm2022/widgets/lib/widgets/editors/selection-list/index.mjs +7 -0
  160. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-column.component.mjs +41 -0
  161. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +72 -0
  162. package/esm2022/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-filter.component.mjs +1 -1
  163. package/esm2022/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-print.component.mjs +1 -1
  164. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +44 -0
  165. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +29 -0
  166. package/esm2022/widgets/lib/widgets/editors/text/index.mjs +7 -0
  167. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-column.component.mjs +1 -1
  168. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-edit.component.mjs +121 -0
  169. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-filter.component.mjs +1 -1
  170. package/esm2022/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-print.component.mjs +1 -1
  171. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget-view.component.mjs +47 -0
  172. package/esm2022/widgets/lib/widgets/editors/text/text-box-widget.config.mjs +41 -0
  173. package/esm2022/widgets/lib/widgets/editors/toggle/index.mjs +7 -0
  174. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-column.component.mjs +1 -1
  175. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-edit.component.mjs +1 -1
  176. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-filter.component.mjs +1 -1
  177. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-print.component.mjs +1 -1
  178. package/esm2022/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-view.component.mjs +1 -1
  179. package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget.config.mjs +40 -0
  180. package/esm2022/widgets/lib/widgets/index.mjs +23 -22
  181. package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +65 -0
  182. package/esm2022/widgets/lib/widgets/layout/{block-widget → block}/block-widget-view.component.mjs +1 -1
  183. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +26 -0
  184. package/esm2022/widgets/lib/widgets/layout/block/index.mjs +4 -0
  185. package/esm2022/widgets/lib/widgets/layout/document/document-widget.config.mjs +13 -0
  186. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.mjs +56 -0
  187. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.mjs +41 -0
  188. package/esm2022/widgets/lib/widgets/layout/form-field/form-field-widget.config.mjs +25 -0
  189. package/esm2022/widgets/lib/widgets/layout/form-field/index.mjs +4 -0
  190. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +101 -0
  191. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-print.component.mjs +19 -0
  192. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-view.component.mjs +18 -0
  193. package/esm2022/widgets/lib/widgets/layout/grid/grid-widget.config.mjs +26 -0
  194. package/esm2022/widgets/lib/widgets/layout/grid/index.mjs +5 -0
  195. package/esm2022/widgets/lib/widgets/layout/page/index.mjs +3 -0
  196. package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +65 -0
  197. package/esm2022/widgets/lib/widgets/layout/{page-widget → page}/page-widget-view.component.mjs +1 -1
  198. package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +27 -0
  199. package/esm2022/widgets/lib/widgets/layout/repeater/index.mjs +6 -0
  200. package/esm2022/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-designer.component.mjs +1 -1
  201. package/esm2022/widgets/lib/widgets/{editors/link-widget/link-widget-filter.component.mjs → layout/repeater/repeater-widget-edit.component.mjs} +5 -5
  202. package/esm2022/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-print.component.mjs +1 -1
  203. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-view.component.mjs +52 -0
  204. package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget.config.mjs +24 -0
  205. package/esm2022/widgets/lib/widgets/layout/text-block/index.mjs +3 -0
  206. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget-view.component.mjs +29 -0
  207. package/esm2022/widgets/lib/widgets/layout/text-block/text-block-widget.config.mjs +42 -0
  208. package/esm2022/widgets/lib/widgets.module.mjs +17 -3
  209. package/fesm2022/acorex-platform-auth.mjs +22 -37
  210. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  211. package/fesm2022/{acorex-platform-common-text-widget-column.component-D-mLfzKJ.mjs → acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs} +3 -3
  212. package/fesm2022/acorex-platform-common-text-widget-column.component-ytX4OqZX.mjs.map +1 -0
  213. package/fesm2022/acorex-platform-common.mjs +21 -17
  214. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  215. package/fesm2022/acorex-platform-core.mjs +9 -2
  216. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  217. package/fesm2022/acorex-platform-layout-builder.mjs +163 -129
  218. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  219. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-CaMaBGON.mjs +100 -0
  220. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-CaMaBGON.mjs.map +1 -0
  221. package/fesm2022/acorex-platform-layout-designer.mjs +640 -265
  222. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  223. package/fesm2022/acorex-platform-layout-entity.mjs +5 -4
  224. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  225. package/fesm2022/{acorex-platform-layouts-entity-create-view.component-B2XtNJo1.mjs → acorex-platform-layouts-entity-create-view.component-C2pYReAo.mjs} +17 -7
  226. package/fesm2022/acorex-platform-layouts-entity-create-view.component-C2pYReAo.mjs.map +1 -0
  227. package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs → acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs} +12 -5
  228. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs.map +1 -0
  229. package/fesm2022/acorex-platform-layouts.mjs +4 -4
  230. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  231. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs → acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs} +1 -2
  232. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-DKNRxpQk.mjs.map +1 -0
  233. package/fesm2022/acorex-platform-themes-default.mjs +4 -4
  234. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  235. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DYb6bilD.mjs → acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs} +14 -4
  236. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DlfG4EP1.mjs.map +1 -0
  237. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map +1 -1
  238. package/fesm2022/acorex-platform-widgets.mjs +3989 -3315
  239. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  240. package/layout/builder/lib/builder/builder.service.d.ts +1 -1
  241. package/layout/builder/lib/builder/index.d.ts +6 -5
  242. package/layout/builder/lib/builder/widget-catalog.d.ts +3 -0
  243. package/layout/builder/lib/builder/widget-groups.d.ts +6 -0
  244. package/layout/builder/lib/builder/widget-registery.service.d.ts +1 -1
  245. package/layout/builder/lib/builder/widget.types.d.ts +44 -6
  246. package/layout/designer/index.d.ts +2 -2
  247. package/layout/designer/lib/board/board.component.d.ts +7 -2
  248. package/layout/designer/lib/command.d.ts +70 -0
  249. package/layout/designer/lib/designer/designer.component.d.ts +4 -10
  250. package/layout/designer/lib/designer.service.d.ts +34 -19
  251. package/layout/designer/lib/header-menu/header-menu.component.d.ts +7 -0
  252. package/layout/designer/lib/helpers/grid-drawer/grid-drawer.component.d.ts +19 -0
  253. package/layout/designer/lib/history/history.component.d.ts +7 -0
  254. package/layout/designer/lib/outline/outline.component.d.ts +1 -0
  255. package/layout/designer/lib/pages/pages.component.d.ts +7 -0
  256. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +1 -0
  257. package/layout/designer/lib/widget-picker/widget-picker.component.d.ts +22 -4
  258. package/layout/entity/lib/widgets/lookup-widget/lookup-widget.config.d.ts +5 -0
  259. package/package.json +12 -12
  260. package/widgets/lib/properties/editors.props.d.ts +5 -1
  261. package/widgets/lib/properties/layout.props.d.ts +4 -0
  262. package/widgets/lib/widgets/actions/{button-widget → button}/button-widget-view.component.d.ts +1 -0
  263. package/widgets/lib/widgets/actions/button/button-widget.config.d.ts +7 -0
  264. package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget.config.d.ts +5 -0
  265. package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget.config.d.ts +5 -0
  266. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +37 -0
  267. package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget.config.d.ts +5 -0
  268. package/widgets/lib/widgets/advance/qrcode/index.d.ts +2 -0
  269. package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +12 -0
  270. package/widgets/lib/widgets/advance/qrcode/qrcode-widget.config.d.ts +7 -0
  271. package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget.config.d.ts +5 -0
  272. package/widgets/lib/widgets/editors/checkbox/checkbox-widget.config.d.ts +5 -0
  273. package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-edit.component.d.ts +2 -4
  274. package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget.config.d.ts +5 -0
  275. package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-edit.component.d.ts +1 -1
  276. package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-view.component.d.ts +1 -1
  277. package/widgets/lib/widgets/editors/contact/contact-widget.config.d.ts +7 -0
  278. package/widgets/lib/widgets/editors/date-time/date-time-box-widget.config.d.ts +7 -0
  279. package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget.config.d.ts +5 -0
  280. package/widgets/lib/widgets/editors/large-text/large-text-widget.config.d.ts +7 -0
  281. package/widgets/lib/widgets/editors/link/link-widget.config.d.ts +7 -0
  282. package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-edit.component.d.ts +2 -0
  283. package/widgets/lib/widgets/editors/number/number-box-widget.config.d.ts +7 -0
  284. package/widgets/lib/widgets/editors/password/password-box-widget.config.d.ts +7 -0
  285. package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget.config.d.ts +5 -0
  286. package/widgets/lib/widgets/editors/rich-text/rich-text-widget.config.d.ts +7 -0
  287. package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-edit.component.d.ts +2 -0
  288. package/widgets/lib/widgets/editors/select/select-box-widget.config.d.ts +7 -0
  289. package/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.d.ts +7 -0
  290. package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-edit.component.d.ts +1 -1
  291. package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget.config.d.ts +5 -0
  292. package/widgets/lib/widgets/editors/toggle/toggle-widget.config.d.ts +7 -0
  293. package/widgets/lib/widgets/index.d.ts +21 -21
  294. package/widgets/lib/widgets/layout/block/block-widget.config.d.ts +7 -0
  295. package/widgets/lib/widgets/layout/document/document-widget.config.d.ts +7 -0
  296. package/widgets/lib/widgets/layout/form-field/form-field-widget-designer.component.d.ts +7 -0
  297. package/widgets/lib/widgets/layout/form-field/form-field-widget-view.component.d.ts +7 -0
  298. package/widgets/lib/widgets/layout/form-field/form-field-widget.config.d.ts +7 -0
  299. package/widgets/lib/widgets/layout/form-field/index.d.ts +3 -0
  300. package/widgets/lib/widgets/layout/grid/grid-widget-designer.component.d.ts +20 -0
  301. package/widgets/lib/widgets/layout/grid/grid-widget-print.component.d.ts +6 -0
  302. package/widgets/lib/widgets/layout/grid/grid-widget-view.component.d.ts +6 -0
  303. package/widgets/lib/widgets/layout/grid/grid-widget.config.d.ts +7 -0
  304. package/widgets/lib/widgets/layout/grid/index.d.ts +4 -0
  305. package/widgets/lib/widgets/layout/{page-widget → page}/page-widget-designer.component.d.ts +2 -0
  306. package/widgets/lib/widgets/layout/page/page-widget.config.d.ts +7 -0
  307. package/widgets/lib/widgets/layout/repeater/repeater-widget.config.d.ts +7 -0
  308. package/widgets/lib/widgets/layout/text-block/text-block-widget.config.d.ts +7 -0
  309. package/esm2022/layout/builder/lib/builder/layout.types.mjs +0 -30
  310. package/esm2022/layout/designer/lib/buttons/add-widget-button/add-widget-button.component.mjs +0 -37
  311. package/esm2022/layout/designer/lib/designer.module.mjs +0 -16
  312. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget-view.component.mjs +0 -37
  313. package/esm2022/widgets/lib/widgets/actions/button-widget/button-widget.config.mjs +0 -25
  314. package/esm2022/widgets/lib/widgets/actions/button-widget/index.mjs +0 -3
  315. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget-edit.component.mjs +0 -54
  316. package/esm2022/widgets/lib/widgets/editors/color-box-widget/color-box-widget.config.mjs +0 -34
  317. package/esm2022/widgets/lib/widgets/editors/color-box-widget/index.mjs +0 -7
  318. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-column.component.mjs +0 -36
  319. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-edit.component.mjs +0 -297
  320. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget-view.component.mjs +0 -122
  321. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact-widget.config.mjs +0 -78
  322. package/esm2022/widgets/lib/widgets/editors/contact-widget/contact.type.mjs +0 -2
  323. package/esm2022/widgets/lib/widgets/editors/contact-widget/index.mjs +0 -7
  324. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-column.component.mjs +0 -44
  325. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-edit.component.mjs +0 -133
  326. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget-view.component.mjs +0 -54
  327. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.mjs +0 -38
  328. package/esm2022/widgets/lib/widgets/editors/date-time-box-widget/index.mjs +0 -7
  329. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-column.component.mjs +0 -66
  330. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget-edit.component.mjs +0 -249
  331. package/esm2022/widgets/lib/widgets/editors/email-box-widget/email-box-widget.config.mjs +0 -36
  332. package/esm2022/widgets/lib/widgets/editors/email-box-widget/index.mjs +0 -7
  333. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-edit.component.mjs +0 -122
  334. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget-view.component.mjs +0 -215
  335. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.config.mjs +0 -48
  336. package/esm2022/widgets/lib/widgets/editors/file-box-widget/file-box-widget.service.mjs +0 -3
  337. package/esm2022/widgets/lib/widgets/editors/file-box-widget/index.mjs +0 -8
  338. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-types.mjs +0 -2
  339. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget-view.component.mjs +0 -160
  340. package/esm2022/widgets/lib/widgets/editors/gallery-widget/gallery-widget.config.mjs +0 -26
  341. package/esm2022/widgets/lib/widgets/editors/gallery-widget/index.mjs +0 -7
  342. package/esm2022/widgets/lib/widgets/editors/large-text-widget/index.mjs +0 -7
  343. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget-print.component.mjs +0 -19
  344. package/esm2022/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.mjs +0 -37
  345. package/esm2022/widgets/lib/widgets/editors/link-widget/index.mjs +0 -7
  346. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget-edit.component.mjs +0 -391
  347. package/esm2022/widgets/lib/widgets/editors/link-widget/link-widget.config.mjs +0 -26
  348. package/esm2022/widgets/lib/widgets/editors/map-box-widget/index.mjs +0 -7
  349. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.mjs +0 -96
  350. package/esm2022/widgets/lib/widgets/editors/map-box-widget/map-box-widget.config.mjs +0 -28
  351. package/esm2022/widgets/lib/widgets/editors/number-box-widget/index.mjs +0 -7
  352. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-column.component.mjs +0 -38
  353. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-edit.component.mjs +0 -151
  354. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-filter.component.mjs +0 -20
  355. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget-view.component.mjs +0 -56
  356. package/esm2022/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.mjs +0 -37
  357. package/esm2022/widgets/lib/widgets/editors/password-box-widget/index.mjs +0 -7
  358. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-column.component.mjs +0 -19
  359. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget-view.component.mjs +0 -76
  360. package/esm2022/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.mjs +0 -35
  361. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/index.mjs +0 -7
  362. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget-column.component.mjs +0 -66
  363. package/esm2022/widgets/lib/widgets/editors/phone-box-widget/phone-box-widget.config.mjs +0 -29
  364. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/index.mjs +0 -7
  365. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-column.component.mjs +0 -46
  366. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-edit.component.mjs +0 -67
  367. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget-view.component.mjs +0 -45
  368. package/esm2022/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.mjs +0 -37
  369. package/esm2022/widgets/lib/widgets/editors/select-box-widget/index.mjs +0 -7
  370. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-edit.component.mjs +0 -75
  371. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-filter.component.mjs +0 -19
  372. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget-view.component.mjs +0 -60
  373. package/esm2022/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.mjs +0 -28
  374. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/index.mjs +0 -7
  375. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-column.component.mjs +0 -41
  376. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-edit.component.mjs +0 -72
  377. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget-view.component.mjs +0 -44
  378. package/esm2022/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.mjs +0 -25
  379. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/index.mjs +0 -7
  380. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-column.component.mjs +0 -19
  381. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget-edit.component.mjs +0 -142
  382. package/esm2022/widgets/lib/widgets/editors/signature-pad-widget/signature-pad-widget.config.mjs +0 -34
  383. package/esm2022/widgets/lib/widgets/editors/text-box-widget/index.mjs +0 -7
  384. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-edit.component.mjs +0 -119
  385. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget-view.component.mjs +0 -47
  386. package/esm2022/widgets/lib/widgets/editors/text-box-widget/text-box-widget.config.mjs +0 -38
  387. package/esm2022/widgets/lib/widgets/editors/toggle-widget/index.mjs +0 -7
  388. package/esm2022/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.mjs +0 -36
  389. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget-designer.component.mjs +0 -65
  390. package/esm2022/widgets/lib/widgets/layout/block-widget/block-widget.config.mjs +0 -27
  391. package/esm2022/widgets/lib/widgets/layout/block-widget/index.mjs +0 -4
  392. package/esm2022/widgets/lib/widgets/layout/page-widget/index.mjs +0 -3
  393. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget-designer.component.mjs +0 -55
  394. package/esm2022/widgets/lib/widgets/layout/page-widget/page-widget.config.mjs +0 -27
  395. package/esm2022/widgets/lib/widgets/layout/repeater-widget/index.mjs +0 -6
  396. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget-view.component.mjs +0 -52
  397. package/esm2022/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.mjs +0 -20
  398. package/esm2022/widgets/lib/widgets/layout/text-block-widget/index.mjs +0 -3
  399. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget-view.component.mjs +0 -29
  400. package/esm2022/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.mjs +0 -39
  401. package/fesm2022/acorex-platform-common-text-widget-column.component-D-mLfzKJ.mjs.map +0 -1
  402. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs +0 -26
  403. package/fesm2022/acorex-platform-layout-designer-widget-picker.component-DkZGbnkz.mjs.map +0 -1
  404. package/fesm2022/acorex-platform-layouts-entity-create-view.component-B2XtNJo1.mjs.map +0 -1
  405. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-CjofXJku.mjs.map +0 -1
  406. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cv0mt0pU.mjs.map +0 -1
  407. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DYb6bilD.mjs.map +0 -1
  408. package/layout/builder/lib/builder/layout.types.d.ts +0 -1
  409. package/layout/designer/lib/designer.module.d.ts +0 -6
  410. package/widgets/lib/widgets/actions/button-widget/button-widget.config.d.ts +0 -2
  411. package/widgets/lib/widgets/editors/contact-widget/contact-widget.config.d.ts +0 -2
  412. package/widgets/lib/widgets/editors/date-time-box-widget/date-time-box-widget.config.d.ts +0 -2
  413. package/widgets/lib/widgets/editors/large-text-widget/large-text-widget.config.d.ts +0 -2
  414. package/widgets/lib/widgets/editors/link-widget/link-widget.config.d.ts +0 -2
  415. package/widgets/lib/widgets/editors/map-box-widget/map-box-widget-edit.component.d.ts +0 -15
  416. package/widgets/lib/widgets/editors/number-box-widget/number-box-widget.config.d.ts +0 -2
  417. package/widgets/lib/widgets/editors/password-box-widget/password-box-widget.config.d.ts +0 -2
  418. package/widgets/lib/widgets/editors/rich-text-widget/rich-text-widget.config.d.ts +0 -2
  419. package/widgets/lib/widgets/editors/select-box-widget/select-box-widget.config.d.ts +0 -2
  420. package/widgets/lib/widgets/editors/selection-list-widget/selection-list-widget.config.d.ts +0 -2
  421. package/widgets/lib/widgets/editors/toggle-widget/toggle-widget.config.d.ts +0 -2
  422. package/widgets/lib/widgets/layout/block-widget/block-widget.config.d.ts +0 -2
  423. package/widgets/lib/widgets/layout/page-widget/page-widget.config.d.ts +0 -2
  424. package/widgets/lib/widgets/layout/repeater-widget/repeater-widget.config.d.ts +0 -2
  425. package/widgets/lib/widgets/layout/text-block-widget/text-block-widget.config.d.ts +0 -2
  426. /package/layout/designer/lib/{buttons → helpers}/add-widget-button/add-widget-button.component.d.ts +0 -0
  427. /package/widgets/lib/widgets/actions/{button-widget → button}/index.d.ts +0 -0
  428. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-column.component.d.ts +0 -0
  429. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-edit.component.d.ts +0 -0
  430. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-filter.component.d.ts +0 -0
  431. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-print.component.d.ts +0 -0
  432. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget-view.component.d.ts +0 -0
  433. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/file-box-widget.service.d.ts +0 -0
  434. /package/widgets/lib/widgets/{editors/file-box-widget → advance/file}/index.d.ts +0 -0
  435. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-column.component.d.ts +0 -0
  436. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-edit.component.d.ts +0 -0
  437. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-filter.component.d.ts +0 -0
  438. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-print.component.d.ts +0 -0
  439. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-types.d.ts +0 -0
  440. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/gallery-widget-view.component.d.ts +0 -0
  441. /package/widgets/lib/widgets/{editors/gallery-widget → advance/gallery}/index.d.ts +0 -0
  442. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/index.d.ts +0 -0
  443. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-column.component.d.ts +0 -0
  444. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-filter.component.d.ts +0 -0
  445. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-print.component.d.ts +0 -0
  446. /package/widgets/lib/widgets/{editors/map-box-widget → advance/map}/map-box-widget-view.component.d.ts +0 -0
  447. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/index.d.ts +0 -0
  448. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-column.component.d.ts +0 -0
  449. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-edit.component.d.ts +0 -0
  450. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-filter.component.d.ts +0 -0
  451. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-print.component.d.ts +0 -0
  452. /package/widgets/lib/widgets/{editors/signature-pad-widget → advance/signature}/signature-pad-widget-view.component.d.ts +0 -0
  453. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-column.component.d.ts +0 -0
  454. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-filter.component.d.ts +0 -0
  455. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-print.component.d.ts +0 -0
  456. /package/widgets/lib/widgets/editors/{color-box-widget → color}/color-box-widget-view.component.d.ts +0 -0
  457. /package/widgets/lib/widgets/editors/{color-box-widget → color}/index.d.ts +0 -0
  458. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-column.component.d.ts +0 -0
  459. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-filter.component.d.ts +0 -0
  460. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact-widget-print.component.d.ts +0 -0
  461. /package/widgets/lib/widgets/editors/{contact-widget → contact}/contact.type.d.ts +0 -0
  462. /package/widgets/lib/widgets/editors/{contact-widget → contact}/index.d.ts +0 -0
  463. /package/widgets/lib/widgets/editors/{contact-widget → contact}/popup-component.d.ts +0 -0
  464. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-column.component.d.ts +0 -0
  465. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-edit.component.d.ts +0 -0
  466. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-filter.component.d.ts +0 -0
  467. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-print.component.d.ts +0 -0
  468. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/date-time-box-widget-view.component.d.ts +0 -0
  469. /package/widgets/lib/widgets/editors/{date-time-box-widget → date-time}/index.d.ts +0 -0
  470. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-column.component.d.ts +0 -0
  471. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-edit.component.d.ts +0 -0
  472. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-filter.component.d.ts +0 -0
  473. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-print.component.d.ts +0 -0
  474. /package/widgets/lib/widgets/editors/{email-box-widget → email}/email-box-widget-view.component.d.ts +0 -0
  475. /package/widgets/lib/widgets/editors/{email-box-widget → email}/index.d.ts +0 -0
  476. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/index.d.ts +0 -0
  477. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-column.component.d.ts +0 -0
  478. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-edit.component.d.ts +0 -0
  479. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-filter.component.d.ts +0 -0
  480. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-print.component.d.ts +0 -0
  481. /package/widgets/lib/widgets/editors/{large-text-widget → large-text}/large-text-widget-view.component.d.ts +0 -0
  482. /package/widgets/lib/widgets/editors/{link-widget → link}/index.d.ts +0 -0
  483. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-column.component.d.ts +0 -0
  484. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-edit.component.d.ts +0 -0
  485. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-filter.component.d.ts +0 -0
  486. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-print.component.d.ts +0 -0
  487. /package/widgets/lib/widgets/editors/{link-widget → link}/link-widget-view.component.d.ts +0 -0
  488. /package/widgets/lib/widgets/editors/{number-box-widget → number}/index.d.ts +0 -0
  489. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-column.component.d.ts +0 -0
  490. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-filter.component.d.ts +0 -0
  491. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-print.component.d.ts +0 -0
  492. /package/widgets/lib/widgets/editors/{number-box-widget → number}/number-box-widget-view.component.d.ts +0 -0
  493. /package/widgets/lib/widgets/editors/{password-box-widget → password}/index.d.ts +0 -0
  494. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-column.component.d.ts +0 -0
  495. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-edit.component.d.ts +0 -0
  496. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-filter.component.d.ts +0 -0
  497. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-print.component.d.ts +0 -0
  498. /package/widgets/lib/widgets/editors/{password-box-widget → password}/password-box-widget-view.component.d.ts +0 -0
  499. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/index.d.ts +0 -0
  500. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-column.component.d.ts +0 -0
  501. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-edit.component.d.ts +0 -0
  502. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-filter.component.d.ts +0 -0
  503. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-print.component.d.ts +0 -0
  504. /package/widgets/lib/widgets/editors/{phone-box-widget → phone}/phone-box-widget-view.component.d.ts +0 -0
  505. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/index.d.ts +0 -0
  506. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-popup.component.d.ts +0 -0
  507. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-column.component.d.ts +0 -0
  508. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-edit.component.d.ts +0 -0
  509. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-filter.component.d.ts +0 -0
  510. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-print.component.d.ts +0 -0
  511. /package/widgets/lib/widgets/editors/{rich-text-widget → rich-text}/rich-text-widget-view.component.d.ts +0 -0
  512. /package/widgets/lib/widgets/editors/{select-box-widget → select}/index.d.ts +0 -0
  513. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-column.component.d.ts +0 -0
  514. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-filter.component.d.ts +0 -0
  515. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-print.component.d.ts +0 -0
  516. /package/widgets/lib/widgets/editors/{select-box-widget → select}/select-box-widget-view.component.d.ts +0 -0
  517. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/index.d.ts +0 -0
  518. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-column.component.d.ts +0 -0
  519. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-edit.component.d.ts +0 -0
  520. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-filter.component.d.ts +0 -0
  521. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-print.component.d.ts +0 -0
  522. /package/widgets/lib/widgets/editors/{selection-list-widget → selection-list}/selection-list-widget-view.component.d.ts +0 -0
  523. /package/widgets/lib/widgets/editors/{text-box-widget → text}/index.d.ts +0 -0
  524. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-column.component.d.ts +0 -0
  525. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-filter.component.d.ts +0 -0
  526. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-print.component.d.ts +0 -0
  527. /package/widgets/lib/widgets/editors/{text-box-widget → text}/text-box-widget-view.component.d.ts +0 -0
  528. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/index.d.ts +0 -0
  529. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-column.component.d.ts +0 -0
  530. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-edit.component.d.ts +0 -0
  531. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-filter.component.d.ts +0 -0
  532. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-print.component.d.ts +0 -0
  533. /package/widgets/lib/widgets/editors/{toggle-widget → toggle}/toggle-widget-view.component.d.ts +0 -0
  534. /package/widgets/lib/widgets/layout/{block-widget → block}/block-widget-designer.component.d.ts +0 -0
  535. /package/widgets/lib/widgets/layout/{block-widget → block}/block-widget-view.component.d.ts +0 -0
  536. /package/widgets/lib/widgets/layout/{block-widget → block}/index.d.ts +0 -0
  537. /package/widgets/lib/widgets/layout/{page-widget → page}/index.d.ts +0 -0
  538. /package/widgets/lib/widgets/layout/{page-widget → page}/page-widget-view.component.d.ts +0 -0
  539. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/index.d.ts +0 -0
  540. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-designer.component.d.ts +0 -0
  541. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-edit.component.d.ts +0 -0
  542. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-print.component.d.ts +0 -0
  543. /package/widgets/lib/widgets/layout/{repeater-widget → repeater}/repeater-widget-view.component.d.ts +0 -0
  544. /package/widgets/lib/widgets/layout/{text-block-widget → text-block}/index.d.ts +0 -0
  545. /package/widgets/lib/widgets/layout/{text-block-widget → text-block}/text-block-widget-view.component.d.ts +0 -0
@@ -280,7 +280,7 @@ export class AXPEntityListViewComponent {
280
280
  this.dataSource.reset();
281
281
  }
282
282
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityListViewComponent, deps: [{ token: i1.AXActionSheetService }, { token: i2.AXUnsubscriber }, { token: i3.AXPlatform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
283
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPEntityListViewComponent, selector: "ng-component", providers: [AXUnsubscriber], viewQueries: [{ propertyName: "viewsTemplate", first: true, predicate: ["viewsTemplate"], descendants: true }, { propertyName: "grid", first: true, predicate: ["grid"], descendants: true }, { propertyName: "entityViewDrawer", first: true, predicate: ["entityViewDrawer"], descendants: true }], ngImport: i0, template: "<ax-drawer-container>\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"true\" [mode]=\"platform.is('SM') ? 'overlay' : 'push'\">\n <ax-content class=\"ax-w-64 ax-border-e\">\n <div class=\"ax-p-6 ax-py-4 ax-gap-6 ax-flex ax-flex-col\">\n <p class=\"ax-text-2xl ax-font-bold\">Folders</p>\n <ax-side-menu>\n <ng-container *ngFor=\"let node of menuItems\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n </ax-side-menu>\n <ng-template #sideMenu let-item>\n <ax-side-menu-item [text]=\"item.text\">\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-folder ax-text-warning-500\"></ax-icon>\n </ax-prefix>\n <ng-container *ngIf=\"item.children\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ng-container>\n </ax-side-menu-item>\n </ng-template>\n </div>\n </ax-content>\n </ax-drawer> -->\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\">\n <div\n class=\"ax-flex ax-flex-col ax-gap-0 md:ax-gap-4 ax-px-4 ax-py-3 md:ax-py-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n >\n @if(platform.is('MD')){\n <div class=\"ax-flex ax-justify-between ax-mb-4\">\n @if(this.grid?.selectedRows?.length==0){\n <div class=\"ax-text-xl ax-font-bold\">{{ title }}</div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if(canCreate) {\n <ax-button color=\"primary\" class=\"ax-sm\" (onClick)=\"handleCreateClick()\">\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-button>\n }\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list>\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\n <span (click)=\"clearSelectedItems()\" class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\"\n >Clear Items</span\n >\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if(canDelete) {\n <ax-button color=\"danger\" class=\"ax-sm\" (onClick)=\"handleCommandClick('delete')\">\n <ax-icon class=\"fa-solid fa-trash\"> </ax-icon>\n </ax-button>\n }\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\n </ax-button>\n </div>\n }\n </div>\n\n <div class=\"ax-flex ax-items-center ax-justify-between\">\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" [text]=\"(view$ | async)?.title\" color=\"ghost\">\n <ax-icon class=\"fa-solid fa-eye ax-text-neutral-400\"> </ax-icon>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async }}</ax-title>\n <ax-button-item\n *ngFor=\"let v of publicViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item\n *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item (onClick)=\"addCustomViewPopup()\" text=\"Add Custom View\" class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <div class=\"ax-flex ax-gap-2\">\n @if(searchBoxTitle){\n <ax-button (onClick)=\"toggleSearchBox()\" [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\">\n <ax-icon class=\"fa-solid fa-search ax-text-neutral-400\"> </ax-icon>\n </ax-button>\n }\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-bars ax-text-neutral-400\"> </ax-icon>\n </ax-button>\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-sliders ax-text-neutral-400\"> </ax-icon>\n @if ((conditionsCount$ | async)) {\n <ax-suffix>\n <ax-badge [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-bars-sort ax-text-neutral-400\"> </ax-icon>\n @if ((sortCount$ | async)) {\n <ax-suffix>\n <ax-badge [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n </div>\n </div>\n <div [class.collapsed-search-box]=\"searchBoxCollapsed\" class=\"ax-transition-all ax-mt-4\">\n <ax-search-box [title]=\"searchBoxTitle\" [placeholder]=\"('widget.lookup.search' | translate | async) + searchBoxPlaceholder\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n } @else {\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-3\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold ax-mb-2\">{{ title }}</div>\n @if(this.grid?.selectedRows?.length==0){\n <div class=\"ax-flex ax-gap-3\">\n @if(canCreate) {\n <ax-button [text]=\"'create-new' | translate | async\" color=\"primary\" (onClick)=\"handleCreateClick()\">\n <ax-prefix>\n <i class=\"fa-solid fa-add\"></i>\n </ax-prefix>\n </ax-button>\n }\n <ax-button [text]=\"'entity.actions' | translate | async\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list>\n @if(canImport){\n <ax-button-item (onClick)=\"handleImportClick()\" text=\"Import\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-import\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }@else {\n <div class=\"ax-flex ax-gap-3\">\n @if(canDelete) {\n <ax-button text=\"Delete Items\" color=\"danger\" (onClick)=\"handleCommandClick('delete')\">\n <ax-prefix>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-prefix>\n </ax-button>\n }\n <ax-button [text]=\"'entity.actions' | translate | async\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-justify-between\">\n <!----------------------- View Mode --------------------->\n @if(this.grid?.selectedRows?.length==0) {\n <div class=\"ax-flex ax-w-full ax-justify-between ax-gap-3\">\n <div class=\"ax-flex ax-gap-3\">\n <ax-button [text]=\"(view$ | async)?.title\" #views color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-eye\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async }}</ax-title>\n <ax-button-item\n *ngFor=\"let v of publicViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item\n class=\"ax-pe-4 ax-flex ax-justify-between\"\n *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n >\n <ax-suffix>\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\n <ax-icon class=\"far fa-edit\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-button-item>\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\" class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n @if(searchBoxTitle){\n <div class=\"ax-w-72\">\n <ax-search-box\n [title]=\"searchBoxTitle\"\n [(ngModel)]=\"searchValue\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n [placeholder]=\"('widget.lookup.search' | translate | async) + searchBoxPlaceholder\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n </div>\n\n <div class=\"ax-flex ax-gap-3\">\n <ax-button [text]=\"'entity.columns' | translate | async\" color=\"ghost\" #columns (onClick)=\"columnsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"{{ columnsCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\" #conditions>\n <ax-prefix>\n <i class=\"fa-solid fa-sliders\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"{{ conditionsCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button [text]=\"'entity.sort' | translate | async\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars-sort\"></i>\n </ax-prefix>\n <ax-suffix *ngIf=\"(sortCount$ | async)! > 0\">\n <ax-badge text=\"{{ sortCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n </div>\n </div>\n\n } @else{\n <!----------------------- Selection Mode --------------------->\n <div>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\n <span (click)=\"clearSelectedItems()\" class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\"\n >Clear Items</span\n >\n </div>\n </div>\n }\n </div>\n }\n </div>\n <div class=\"ax-flex-1 ax-px-6 ax-py-4 ax-flex ax-overflow-auto\">\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"ax-flex-1\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <!-- <ax-index-column *ngIf=\"!platform.is('SM')\" [width]=\"'85px'\"></ax-index-column> -->\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n @for(col of (columns$ | async);track col.name) {\n <axp-widget-column-renderer\n *ngIf=\"col.visible\"\n [schema]=\"col.schema\"\n [dataField]=\"col.name\"\n [caption]=\"col.title\"\n [options]=\"col.options\"\n [displayFormat]=\"col.displayFormat\"\n [width]=\"'180px'\"\n [allowSorting]=\"false\"\n >\n </axp-widget-column-renderer>\n }\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n <ax-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getInlineRowItems\" (onItemClick)=\"handleRowCommandClick($event)\"></ax-command-column>\n </ax-data-table>\n </div>\n </ax-content>\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-columns [loader]=\"loader\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\n <axp-list-view-option-conditions [loader]=\"loader\" (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [loader]=\"loader\"></axp-list-view-option-sorting>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i6.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i8.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i8.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i8.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i9.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "component", type: i10.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i11.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i11.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "component", type: i12.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: i13.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["width", "caption", "headerTemplate", "allowSorting", "fixed", "footerTemplate", "cellTemplate", "options", "dataField", "displayFormat", "schema"] }, { kind: "directive", type: i14.AXPFeatureDirective, selector: "[feature]", inputs: ["feature", "featureElse"] }, { kind: "component", type: i15.AXPListViewOptionsColumnsComponent, selector: "axp-list-view-option-columns", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "component", type: i16.AXPListViewOptionConditionsComponent, selector: "axp-list-view-option-conditions", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "component", type: i17.AXPListViewOptionSortingComponent, selector: "axp-list-view-option-sorting", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
283
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPEntityListViewComponent, selector: "ng-component", providers: [AXUnsubscriber], viewQueries: [{ propertyName: "viewsTemplate", first: true, predicate: ["viewsTemplate"], descendants: true }, { propertyName: "grid", first: true, predicate: ["grid"], descendants: true }, { propertyName: "entityViewDrawer", first: true, predicate: ["entityViewDrawer"], descendants: true }], ngImport: i0, template: "<ax-drawer-container>\n <!-- <ax-drawer #drawer location=\"start\" [collapsed]=\"true\" [mode]=\"platform.is('SM') ? 'overlay' : 'push'\">\n <ax-content class=\"ax-w-64 ax-border-e\">\n <div class=\"ax-p-6 ax-py-4 ax-gap-6 ax-flex ax-flex-col\">\n <p class=\"ax-text-2xl ax-font-bold\">Folders</p>\n <ax-side-menu>\n <ng-container *ngFor=\"let node of menuItems\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: node }\">\n </ng-container>\n </ax-side-menu>\n <ng-template #sideMenu let-item>\n <ax-side-menu-item [text]=\"item.text\">\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-folder ax-text-warning-500\"></ax-icon>\n </ax-prefix>\n <ng-container *ngIf=\"item.children\">\n <ng-container *ngFor=\"let child of item.children\" [ngTemplateOutlet]=\"sideMenu\"\n [ngTemplateOutletContext]=\"{ $implicit: child }\">\n </ng-container>\n </ng-container>\n </ax-side-menu-item>\n </ng-template>\n </div>\n </ax-content>\n </ax-drawer> -->\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\">\n <div\n class=\"ax-flex ax-flex-col ax-gap-0 md:ax-gap-4 ax-px-4 ax-py-3 md:ax-py-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n >\n @if(platform.is('MD')){\n <div class=\"ax-flex ax-justify-between ax-mb-4\">\n @if(this.grid?.selectedRows?.length==0){\n <div class=\"ax-text-xl ax-font-bold\">{{ title }}</div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if(canCreate) {\n <ax-button color=\"primary\" class=\"ax-sm\" (onClick)=\"handleCreateClick()\">\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-button>\n }\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list>\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\n <span (click)=\"clearSelectedItems()\" class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\"\n >Clear Items</span\n >\n </div>\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n @if(canDelete) {\n <ax-button color=\"danger\" class=\"ax-sm\" (onClick)=\"handleCommandClick('delete')\">\n <ax-icon class=\"fa-solid fa-trash\"> </ax-icon>\n </ax-button>\n }\n <ax-button color=\"ghost\" class=\"ax-sm\" #more>\n <ax-icon class=\"fa-solid fa-ellipsis-vertical\"> </ax-icon>\n </ax-button>\n </div>\n }\n </div>\n\n <div class=\"ax-flex ax-items-center ax-justify-between\">\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" [text]=\"(view$ | async)?.title\" color=\"ghost\">\n <ax-icon class=\"fa-solid fa-eye ax-text-neutral-400\"> </ax-icon>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async }}</ax-title>\n <ax-button-item\n *ngFor=\"let v of publicViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item\n *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item (onClick)=\"addCustomViewPopup()\" text=\"Add Custom View\" class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <div class=\"ax-flex ax-gap-2\">\n @if(searchBoxTitle){\n <ax-button (onClick)=\"toggleSearchBox()\" [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\">\n <ax-icon class=\"fa-solid fa-search ax-text-neutral-400\"> </ax-icon>\n </ax-button>\n }\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"columnsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-bars ax-text-neutral-400\"> </ax-icon>\n </ax-button>\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-sliders ax-text-neutral-400\"> </ax-icon>\n @if ((conditionsCount$ | async)) {\n <ax-suffix>\n <ax-badge [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n <ax-button [disabled]=\"this.grid?.selectedRows?.length != 0\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\n <ax-icon class=\"fa-solid fa-bars-sort ax-text-neutral-400\"> </ax-icon>\n @if ((sortCount$ | async)) {\n <ax-suffix>\n <ax-badge [color]=\"'primary'\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n </div>\n </div>\n <div [class.collapsed-search-box]=\"searchBoxCollapsed\" class=\"ax-transition-all ax-mt-4\">\n <ax-search-box [title]=\"searchBoxTitle\" [placeholder]=\"('widget.lookup.search' | translate | async) + searchBoxPlaceholder\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n } @else {\n <div class=\"ax-flex ax-items-center ax-justify-between ax-gap-3\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold ax-mb-2\">{{ title }}</div>\n @if(this.grid?.selectedRows?.length==0){\n <div class=\"ax-flex ax-gap-3\">\n @if(canCreate) {\n <ax-button [text]=\"'create-new' | translate | async\" color=\"primary\" (onClick)=\"handleCreateClick()\">\n <ax-prefix>\n <i class=\"fa-solid fa-add\"></i>\n </ax-prefix>\n </ax-button>\n }\n <ax-button [text]=\"'entity.actions' | translate | async\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list>\n @if(canImport){\n <ax-button-item (onClick)=\"handleImportClick()\" text=\"Import\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-import\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-button-item text=\"Export\" class=\"ax-font-semibold\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-file-export\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }@else {\n <div class=\"ax-flex ax-gap-3\">\n @if(canDelete) {\n <ax-button text=\"Delete Items\" color=\"danger\" (onClick)=\"handleCommandClick('delete')\">\n <ax-prefix>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-prefix>\n </ax-button>\n }\n <ax-button [text]=\"'entity.actions' | translate | async\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n <div class=\"ax-flex ax-items-center ax-justify-between\">\n <!----------------------- View Mode --------------------->\n @if(this.grid?.selectedRows?.length==0) {\n <div class=\"ax-flex ax-w-full ax-justify-between ax-gap-3\">\n <div class=\"ax-flex ax-gap-3\">\n <ax-button [text]=\"(view$ | async)?.title\" #views color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-eye\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async }}</ax-title>\n <ax-button-item\n *ngFor=\"let v of publicViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n ></ax-button-item>\n <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item\n class=\"ax-pe-4 ax-flex ax-justify-between\"\n *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"(view$ | async) == v\"\n (onClick)=\"loader.setView(v.name)\"\n >\n <ax-suffix>\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\n <ax-icon class=\"far fa-edit\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-button-item>\n <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\" class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n @if(searchBoxTitle){\n <div class=\"ax-w-72\">\n <ax-search-box\n [title]=\"searchBoxTitle\"\n [(ngModel)]=\"searchValue\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"\n [placeholder]=\"('widget.lookup.search' | translate | async) + searchBoxPlaceholder\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n </div>\n }\n </div>\n\n <div class=\"ax-flex ax-gap-3\">\n <ax-button [text]=\"'entity.columns' | translate | async\" color=\"ghost\" #columns (onClick)=\"columnsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"{{ columnsCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\" #conditions>\n <ax-prefix>\n <i class=\"fa-solid fa-sliders\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"{{ conditionsCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button [text]=\"'entity.sort' | translate | async\" color=\"ghost\" (onClick)=\"sortsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars-sort\"></i>\n </ax-prefix>\n <ax-suffix *ngIf=\"(sortCount$ | async)! > 0\">\n <ax-badge text=\"{{ sortCount$ | async }}\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n </div>\n </div>\n\n } @else{\n <!----------------------- Selection Mode --------------------->\n <div>\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ this.grid?.selectedRows?.length }} Items Selected </span>\n <span (click)=\"clearSelectedItems()\" class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\"\n >Clear Items</span\n >\n </div>\n </div>\n }\n </div>\n }\n </div>\n <div class=\"ax-flex-1 ax-px-6 ax-py-4 ax-flex ax-overflow-auto\">\n <ax-data-table\n #grid\n [showFooter]=\"false\"\n class=\"ax-flex-1\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [fetchDataMode]=\"'manual'\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n [loading]=\"{ enabled: true, animation: true }\"\n >\n <!-- <ax-index-column *ngIf=\"!platform.is('SM')\" [width]=\"'85px'\"></ax-index-column> -->\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n @for(col of (columns$ | async);track col.name) {\n <axp-widget-column-renderer\n *ngIf=\"col.visible\"\n [schema]=\"col.schema\"\n [dataField]=\"col.name\"\n [caption]=\"col.title\"\n [options]=\"col.options\"\n [displayFormat]=\"col.displayFormat\"\n [width]=\"'180px'\"\n [allowSorting]=\"false\"\n >\n </axp-widget-column-renderer>\n }\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"\n ></ax-dropdown-command-column>\n <ax-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getInlineRowItems\" (onItemClick)=\"handleRowCommandClick($event)\"></ax-command-column>\n </ax-data-table>\n </div>\n </ax-content>\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-columns [loader]=\"loader\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\n <axp-list-view-option-conditions [loader]=\"loader\" (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [loader]=\"loader\"></axp-list-view-option-sorting>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>\n", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i6.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i6.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i6.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i8.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i8.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i8.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i9.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "component", type: i10.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i11.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i11.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "component", type: i12.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: i13.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["width", "caption", "headerTemplate", "allowSorting", "fixed", "footerTemplate", "cellTemplate", "options", "dataField", "displayFormat", "schema"] }, { kind: "directive", type: i14.AXPFeatureDirective, selector: "[feature]", inputs: ["feature", "featureElse"] }, { kind: "component", type: i15.AXPListViewOptionsColumnsComponent, selector: "axp-list-view-option-columns", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "component", type: i16.AXPListViewOptionConditionsComponent, selector: "axp-list-view-option-conditions", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "component", type: i17.AXPListViewOptionSortingComponent, selector: "axp-list-view-option-sorting", inputs: ["loader"], outputs: ["onClosed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i18.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
284
284
  }
285
285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityListViewComponent, decorators: [{
286
286
  type: Component,
@@ -8,14 +8,13 @@ import { AXLoadingModule } from '@acorex/components/loading';
8
8
  import { AXBasePageComponent } from '@acorex/components/page';
9
9
  import { AXTabsModule } from '@acorex/components/tabs';
10
10
  import { AXTooltipModule } from '@acorex/components/tooltip';
11
+ import { AXTranslationModule } from '@acorex/core/translation';
11
12
  import { AXValidationModule } from '@acorex/core/validation';
12
- import { AXPStickyDirective } from '@acorex/platform/common';
13
- import { AXPSchemaModule } from '@acorex/platform/common';
13
+ import { AXPSchemaModule, AXPStickyDirective } from '@acorex/platform/common';
14
14
  import { CommonModule } from '@angular/common';
15
15
  import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
16
16
  import { FormsModule } from '@angular/forms';
17
17
  import { cloneDeep } from 'lodash-es';
18
- import { AXTranslationModule } from '@acorex/core/translation';
19
18
  import * as i0 from "@angular/core";
20
19
  import * as i1 from "@angular/common";
21
20
  import * as i2 from "@acorex/components/form";
@@ -50,9 +49,16 @@ export class AXPEntityModifyViewComponent extends AXBasePageComponent {
50
49
  if (formResult.result) {
51
50
  if (this.entity.commands?.update) {
52
51
  this.submitLoading.set(true);
53
- await this.entity.commands.update(this.editForm.context.id, this.editForm.context);
52
+ try {
53
+ const res = await this.entity.commands.update(this.editForm.context.id, this.editForm.context);
54
+ if (res?.result != false) {
55
+ this.close({ result: true, context: this.editForm.context });
56
+ }
57
+ }
58
+ catch (error) {
59
+ console.log(error);
60
+ }
54
61
  this.submitLoading.set(false);
55
- this.close({ result: true, context: this.editForm.context });
56
62
  }
57
63
  }
58
64
  }
@@ -86,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
86
92
  AXPStickyDirective,
87
93
  ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ax-min-h-[25vh]\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <div class=\"ax-flex ax-flex-col ax-pb-4\">\n <ax-form-field class=\"ax-grid ax-grid-cols-12 ax-gap-4 ax-py-2 first:ax-pt-0 last:ax-pb-0\">\n <ng-container *ngFor=\"let name of properties\">\n <ng-container *ngIf=\"loader.getProp(name) as prop\">\n <!-- lg:ax-col-span-6 -->\n <!-- lg:ax-col-start-1 -->\n <div *ngIf=\"prop.canEdit\" class=\"ax-col-span-12 ax-col-start-1 lg:ax-col-span-{{\n prop.layout?.positions?.default?.span || 12\n }} lg:ax-col-start-{{ prop.layout?.positions?.default?.start || 1 }} ax-flex ax-flex-col ax-gap-1\">\n <span class=\"ax-font-semibold ax-text-sm\">{{ prop.title }}</span>\n <axp-widget-renderer [schema]=\"prop.schema\" [prop]=\"prop\" [mode]=\"'edit'\"\n [context]=\"editForm.context\"></axp-widget-renderer>\n </div>\n </ng-container>\n </ng-container>\n </ax-form-field>\n </div>\n </ax-form>\n <ax-footer>\n <ax-suffix>\n <ax-dropdown-button [text]=\"'discard' | translate | async\" (onClick)=\"handleSectionDiscard(form)\">\n <ax-button-item-list>\n <ax-button-item [text]=\"('reset' | translate | async) ?? ' '\" (onClick)=\"handleSectionReset(form)\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n <ax-button [disabled]=\"submitLoading()\" color=\"primary\" [text]=\"'save-changes' | translate | async\" (onClick)=\"handleSectionSubmit(form)\">\n <ax-loading *ngIf=\"submitLoading()\"></ax-loading>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n</div>" }]
88
94
  }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1vZGlmeS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0cy9zcmMvbGliL2FkbWluL2VudGl0eS1sYXlvdXQvZW50aXR5LW1vZGlmeS12aWV3L2VudGl0eS1tb2RpZnktdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dHMvc3JjL2xpYi9hZG1pbi9lbnRpdHktbGF5b3V0L2VudGl0eS1tb2RpZnktdmlldy9lbnRpdHktbW9kaWZ5LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxP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OzJGQU9WLDRCQUE0QjtrQkF4QnhDLFNBQVM7OEJBRUM7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsRUFBRTt3QkFDRixrQkFBa0I7cUJBQ25CLGNBQ1csSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYRHJvcGRvd25CdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24tYnV0dG9uJztcbmltcG9ydCB7IEFYRm9ybUNvbXBvbmVudCwgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhUYWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHsgQVhUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5Q29uZmlnLCBBWFBTY2hlbWFNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgV3JpdGFibGVTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRW50aXR5TW9kaWZ5Vmlld0xvYWRlciB9IGZyb20gJy4vZW50aXR5LW1vZGlmeS12aWV3LmNvbmZpZyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktbW9kaWZ5LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYRm9ybU1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEaWFsb2dNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWFBTY2hlbWFNb2R1bGUsXG4gICAgQVhUb29sdGlwTW9kdWxlLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICBBWExhYmVsTW9kdWxlLFxuICAgIEFYRHJvcGRvd25CdXR0b25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICAvL1xuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1vZGlmeVZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGxvYWRlciE6IEFYUEVudGl0eU1vZGlmeVZpZXdMb2FkZXI7XG4gIGNvbnRleHQ6IGFueTtcbiAgZW50aXR5ITogQVhQRW50aXR5Q29uZmlnO1xuICBwcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICBzdWJtaXRMb2FkaW5nOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIGVkaXRGb3JtOiB7XG4gICAgY29udGV4dD86IGFueTtcbiAgICBwcmV2aW91c0NvbnRleHQ/OiBhbnk7XG4gIH0gPSB7fTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2VDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKHsgcmVzdWx0OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHQgPSBjbG9uZURlZXAodGhpcy5jb250ZXh0KTtcbiAgICB0aGlzLmVkaXRGb3JtLnByZXZpb3VzQ29udGV4dCA9IGNsb25lRGVlcCh0aGlzLmNvbnRleHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlY3Rpb25EaXNjYXJkKGZvcm06IEFYRm9ybUNvbXBvbmVudCkge1xuICAgIHRoaXMuY2xvc2UoeyByZXN1bHQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlY3Rpb25SZXNldChmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHQgPSBjbG9uZURlZXAodGhpcy5lZGl0Rm9ybS5wcmV2aW91c0NvbnRleHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlY3Rpb25TdWJtaXQoZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgZm9ybVJlc3VsdCA9IGF3YWl0IGZvcm0udmFsaWRhdGUoKTtcbiAgICBpZiAoZm9ybVJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIGlmICh0aGlzLmVudGl0eS5jb21tYW5kcz8udXBkYXRlKSB7XG4gICAgICAgIHRoaXMuc3VibWl0TG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW50aXR5LmNvbW1hbmRzLnVwZGF0ZSh0aGlzLmVkaXRGb3JtLmNvbnRleHQuaWQsIHRoaXMuZWRpdEZvcm0uY29udGV4dCk7XG4gICAgICAgIHRoaXMuc3VibWl0TG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNsb3NlKHsgcmVzdWx0OiB0cnVlLCBjb250ZXh0OiB0aGlzLmVkaXRGb3JtLmNvbnRleHQgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLmVkaXRGb3JtLmNvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuZWRpdEZvcm0ucHJldmlvdXNDb250ZXh0ID0gbnVsbDtcbiAgfVxuXG4gIC8vIG92ZXJyaWRlIG9uQ2xvc2luZyhlOiBBWENvbXBvbmVudENsb3NpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gIC8vICAgICBpZiAoZS5kYXRhPy5zYXZlIHx8IGlzRW1wdHkodGhpcy5sb2FkZXIuZGF0YSkpXG4gIC8vICAgICAgICAgZS5jYW5jZWwgPSBmYWxzZTtcbiAgLy8gICAgIGVsc2Uge1xuICAvLyAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcbiAgLy8gICAgIH1cbiAgLy8gfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LW1pbi1oLVsyNXZoXVwiPlxuICA8YXgtZm9ybSBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTYgYXgtcC00XCIgI2Zvcm0gW21lc3NhZ2VTdHlsZV09XCInYm90dG9tJ1wiIFt1cGRhdGVPbl09XCInYmx1cidcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wYi00XCI+XG4gICAgICA8YXgtZm9ybS1maWVsZCBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTEyIGF4LWdhcC00IGF4LXB5LTIgZmlyc3Q6YXgtcHQtMCBsYXN0OmF4LXBiLTBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbmFtZSBvZiBwcm9wZXJ0aWVzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRlci5nZXRQcm9wKG5hbWUpIGFzIHByb3BcIj5cbiAgICAgICAgICAgIDwhLS0gbGc6YXgtY29sLXNwYW4tNiAtLT5cbiAgICAgICAgICAgIDwhLS0gbGc6YXgtY29sLXN0YXJ0LTEgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcC5jYW5FZGl0XCIgY2xhc3M9XCJheC1jb2wtc3Bhbi0xMiBheC1jb2wtc3RhcnQtMSBsZzpheC1jb2wtc3Bhbi17e1xuICAgICAgICAgICAgICAgIHByb3AubGF5b3V0Py5wb3NpdGlvbnM/LmRlZmF1bHQ/LnNwYW4gfHwgMTJcbiAgICAgICAgICAgICAgfX0gIGxnOmF4LWNvbC1zdGFydC17eyBwcm9wLmxheW91dD8ucG9zaXRpb25zPy5kZWZhdWx0Py5zdGFydCB8fCAxIH19IGF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTFcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQtc21cIj57eyBwcm9wLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8YXhwLXdpZGdldC1yZW5kZXJlciBbc2NoZW1hXT1cInByb3Auc2NoZW1hXCIgW3Byb3BdPVwicHJvcFwiIFttb2RlXT1cIidlZGl0J1wiXG4gICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiZWRpdEZvcm0uY29udGV4dFwiPjwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXgtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgPC9heC1mb3JtPlxuICA8YXgtZm9vdGVyPlxuICAgIDxheC1zdWZmaXg+XG4gICAgICA8YXgtZHJvcGRvd24tYnV0dG9uIFt0ZXh0XT1cIidkaXNjYXJkJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VjdGlvbkRpc2NhcmQoZm9ybSlcIj5cbiAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cIigncmVzZXQnIHwgdHJhbnNsYXRlIHwgYXN5bmMpID8/ICcgJ1wiIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25SZXNldChmb3JtKVwiPlxuICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLXJvdGF0ZS1sZWZ0IGZhLWZsaXAtaG9yaXpvbnRhbFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgICAgPGF4LWJ1dHRvbiBbZGlzYWJsZWRdPVwic3VibWl0TG9hZGluZygpXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ3NhdmUtY2hhbmdlcycgfCB0cmFuc2xhdGUgfCBhc3luY1wiIChvbkNsaWNrKT1cImhhbmRsZVNlY3Rpb25TdWJtaXQoZm9ybSlcIj5cbiAgICAgICAgPGF4LWxvYWRpbmcgKm5nSWY9XCJzdWJtaXRMb2FkaW5nKClcIj48L2F4LWxvYWRpbmc+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICA8L2F4LXN1ZmZpeD5cbiAgPC9heC1mb290ZXI+XG48L2Rpdj4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1vZGlmeS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0cy9zcmMvbGliL2FkbWluL2VudGl0eS1sYXlvdXQvZW50aXR5LW1vZGlmeS12aWV3L2VudGl0eS1tb2RpZnktdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dHMvc3JjL2xpYi9hZG1pbi9lbnRpdHktbGF5b3V0L2VudGl0eS1tb2RpZnktdmlldy9lbnRpdHktbW9kaWZ5LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxP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Vyw4QkFDWCxZQUFZLDBTQUNaLGlCQUFpQix1VkFFakIsY0FBYyw4dkJBQ2QsY0FBYyw4QkFDZCxlQUFlLDhLQUNmLFlBQVksOEJBQ1osZUFBZSwwS0FDZixlQUFlLDhCQUNmLGtCQUFrQiw4QkFDbEIsYUFBYSw4QkFDYixzQkFBc0Isd1RBQ3RCLG1CQUFtQjs7MkZBT1YsNEJBQTRCO2tCQXhCeEMsU0FBUzs4QkFFQzt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixFQUFFO3dCQUNGLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERpYWxvZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bi1idXR0b24nO1xuaW1wb3J0IHsgQVhGb3JtQ29tcG9uZW50LCBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWExhYmVsTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xhYmVsJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEFYUEVudGl0eUNvbmZpZywgQVhQU2NoZW1hTW9kdWxlLCBBWFBTdGlja3lEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgV3JpdGFibGVTaWduYWwsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRW50aXR5TW9kaWZ5Vmlld0xvYWRlciB9IGZyb20gJy4vZW50aXR5LW1vZGlmeS12aWV3LmNvbmZpZyc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZW50aXR5LW1vZGlmeS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGlhbG9nTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhQU2NoZW1hTW9kdWxlLFxuICAgIEFYVG9vbHRpcE1vZHVsZSxcbiAgICBBWFZhbGlkYXRpb25Nb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gICAgLy9cbiAgICBBWFBTdGlja3lEaXJlY3RpdmUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNb2RpZnlWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBsb2FkZXIhOiBBWFBFbnRpdHlNb2RpZnlWaWV3TG9hZGVyO1xuICBjb250ZXh0OiBhbnk7XG4gIGVudGl0eSE6IEFYUEVudGl0eUNvbmZpZztcbiAgcHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgc3VibWl0TG9hZGluZzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBlZGl0Rm9ybToge1xuICAgIGNvbnRleHQ/OiBhbnk7XG4gICAgcHJldmlvdXNDb250ZXh0PzogYW55O1xuICB9ID0ge307XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlQ2xpY2soKSB7XG4gICAgdGhpcy5jbG9zZSh7IHJlc3VsdDogZmFsc2UgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0ID0gY2xvbmVEZWVwKHRoaXMuY29udGV4dCk7XG4gICAgdGhpcy5lZGl0Rm9ybS5wcmV2aW91c0NvbnRleHQgPSBjbG9uZURlZXAodGhpcy5jb250ZXh0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZWN0aW9uRGlzY2FyZChmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICB0aGlzLmNsb3NlKHsgcmVzdWx0OiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZWN0aW9uUmVzZXQoZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XG4gICAgdGhpcy5lZGl0Rm9ybS5jb250ZXh0ID0gY2xvbmVEZWVwKHRoaXMuZWRpdEZvcm0ucHJldmlvdXNDb250ZXh0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTZWN0aW9uU3VibWl0KGZvcm06IEFYRm9ybUNvbXBvbmVudCkge1xuICAgIGNvbnN0IGZvcm1SZXN1bHQgPSBhd2FpdCBmb3JtLnZhbGlkYXRlKCk7XG4gICAgaWYgKGZvcm1SZXN1bHQucmVzdWx0KSB7XG4gICAgICBpZiAodGhpcy5lbnRpdHkuY29tbWFuZHM/LnVwZGF0ZSkge1xuICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZW50aXR5LmNvbW1hbmRzLnVwZGF0ZSh0aGlzLmVkaXRGb3JtLmNvbnRleHQuaWQsIHRoaXMuZWRpdEZvcm0uY29udGV4dCk7XG4gICAgICAgICAgaWYgKHJlcz8ucmVzdWx0ICE9IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKHsgcmVzdWx0OiB0cnVlLCBjb250ZXh0OiB0aGlzLmVkaXRGb3JtLmNvbnRleHQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuZWRpdEZvcm0uY29udGV4dCA9IG51bGw7XG4gICAgdGhpcy5lZGl0Rm9ybS5wcmV2aW91c0NvbnRleHQgPSBudWxsO1xuICB9XG5cbiAgLy8gb3ZlcnJpZGUgb25DbG9zaW5nKGU6IEFYQ29tcG9uZW50Q2xvc2luZyk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gICAgIGlmIChlLmRhdGE/LnNhdmUgfHwgaXNFbXB0eSh0aGlzLmxvYWRlci5kYXRhKSlcbiAgLy8gICAgICAgICBlLmNhbmNlbCA9IGZhbHNlO1xuICAvLyAgICAgZWxzZSB7XG4gIC8vICAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xuICAvLyAgICAgfVxuICAvLyB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtbWluLWgtWzI1dmhdXCI+XG4gIDxheC1mb3JtIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNiBheC1wLTRcIiAjZm9ybSBbbWVzc2FnZVN0eWxlXT1cIidib3R0b20nXCIgW3VwZGF0ZU9uXT1cIidibHVyJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LXBiLTRcIj5cbiAgICAgIDxheC1mb3JtLWZpZWxkIGNsYXNzPVwiYXgtZ3JpZCBheC1ncmlkLWNvbHMtMTIgYXgtZ2FwLTQgYXgtcHktMiBmaXJzdDpheC1wdC0wIGxhc3Q6YXgtcGItMFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBuYW1lIG9mIHByb3BlcnRpZXNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGVyLmdldFByb3AobmFtZSkgYXMgcHJvcFwiPlxuICAgICAgICAgICAgPCEtLSBsZzpheC1jb2wtc3Bhbi02IC0tPlxuICAgICAgICAgICAgPCEtLSBsZzpheC1jb2wtc3RhcnQtMSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wLmNhbkVkaXRcIiBjbGFzcz1cImF4LWNvbC1zcGFuLTEyIGF4LWNvbC1zdGFydC0xIGxnOmF4LWNvbC1zcGFuLXt7XG4gICAgICAgICAgICAgICAgcHJvcC5sYXlvdXQ/LnBvc2l0aW9ucz8uZGVmYXVsdD8uc3BhbiB8fCAxMlxuICAgICAgICAgICAgICB9fSAgbGc6YXgtY29sLXN0YXJ0LXt7IHByb3AubGF5b3V0Py5wb3NpdGlvbnM/LmRlZmF1bHQ/LnN0YXJ0IHx8IDEgfX0gYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1zbVwiPnt7IHByb3AudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtzY2hlbWFdPVwicHJvcC5zY2hlbWFcIiBbcHJvcF09XCJwcm9wXCIgW21vZGVdPVwiJ2VkaXQnXCJcbiAgICAgICAgICAgICAgICBbY29udGV4dF09XCJlZGl0Rm9ybS5jb250ZXh0XCI+PC9heHAtd2lkZ2V0LXJlbmRlcmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L2F4LWZvcm0+XG4gIDxheC1mb290ZXI+XG4gICAgPGF4LXN1ZmZpeD5cbiAgICAgIDxheC1kcm9wZG93bi1idXR0b24gW3RleHRdPVwiJ2Rpc2NhcmQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVTZWN0aW9uRGlzY2FyZChmb3JtKVwiPlxuICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gW3RleHRdPVwiKCdyZXNldCcgfCB0cmFuc2xhdGUgfCBhc3luYykgPz8gJyAnXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VjdGlvblJlc2V0KGZvcm0pXCI+XG4gICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtcm90YXRlLWxlZnQgZmEtZmxpcC1ob3Jpem9udGFsXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgPC9heC1kcm9wZG93bi1idXR0b24+XG4gICAgICA8YXgtYnV0dG9uIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nKClcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInc2F2ZS1jaGFuZ2VzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlU2VjdGlvblN1Ym1pdChmb3JtKVwiPlxuICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cInN1Ym1pdExvYWRpbmcoKVwiPjwvYXgtbG9hZGluZz5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgIDwvYXgtc3VmZml4PlxuICA8L2F4LWZvb3Rlcj5cbjwvZGl2PiJdfQ==
@@ -61,7 +61,6 @@ export class AXPEntityMasterCreateViewComponent extends AXBasePageComponent {
61
61
  }
62
62
  }
63
63
  async handleContextChange(data) {
64
- debugger;
65
64
  this.vm.context.set(data);
66
65
  }
67
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityMasterCreateViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
@@ -94,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
94
93
  AXPGridLayoutDirective
95
94
  ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <axp-widgets-container [context]=\"vm.context()\" (contextChange)=\"handleContextChange($event)\">\n <ax-form class=\"ax-flex ax-flex-col ax-gap-6 ax-p-4 ax-pb-8\" #form [messageStyle]=\"'bottom'\" [updateOn]=\"'blur'\">\n <!-- Begin Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-col-span-12\">\n <ax-form #form>\n <div class=\"ax-pb-4\">\n <span class=\"ax-font-bold ax-text-xl\">{{ section.title() }}</span>\n @if(section.description()) {\n <p class=\"ax-text-sm ax-text-gray-500\">{{ section.description() }}</p>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.elements(); track $index) {\n <ax-form-field class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <ax-label class=\"ax-font-semibold ax-text-sm\" [required]=\"attr.isRequired()\">{{ attr.title()\n }}</ax-label>\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'edit'\"> </axp-widget-renderer>\n </ax-form-field>\n }\n </div>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </ax-form>\n </axp-widgets-container>\n <ax-footer>\n <ax-suffix>\n <ax-button look=\"solid\" color=\"ghost\" [text]=\"'cancel' | translate | async\" (onClick)=\"handleCloseClick()\">\n </ax-button>\n <ax-dropdown-button [disabled]=\"vm.isInProgress()\" color=\"primary\" [text]=\"'save' | translate | async\"\n look=\"solid\" (onClick)=\"handleSaveClick(form)\">\n <ax-loading *ngIf=\"vm.isInProgress()\"></ax-loading>\n <ax-button-item-list>\n <ax-button-item [text]=\"('save' | translate | async) + ' ' + ('create-new' | translate | async)\"\n (onClick)=\"handleSaveAndNewClick(form)\">\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-footer>\n</div>" }]
96
95
  }] });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9lbnRpdHktbGF5b3V0cy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3L2VudGl0eS1tYXN0ZXItY3JlYXRlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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aEIsc0JBQXNCOzsyRkFLYixrQ0FBa0M7a0JBM0I5QyxTQUFTOzhCQUVDO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLEVBQUU7d0JBQ0Ysc0JBQXNCO3dCQUN0QixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3FCQUN2QixjQUNXLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYVGFic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhQR3JpZExheW91dERpcmVjdGl2ZSwgQVhQU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlckNyZWF0ZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGlhbG9nTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhUb29sdGlwTW9kdWxlLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICBBWExhYmVsTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJDcmVhdGVWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB2bSE6IEFYUEVudGl0eU1hc3RlckNyZWF0ZVZpZXdNb2RlbDtcblxuICBwcm90ZWN0ZWQgd29ya2Zsb3cgPSBpbmplY3QoQVhQV29ya2Zsb3dTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2VDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQmFja0NsaWNrKCkge1xuICAgIC8vYXdhaXQgdGhpcy52bS5leGVjdXRlQ29tbWFuZCgnYmFjaycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZU5leHRDbGljayhmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICAvLyBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xuICAgIC8vIGlmIChmb3JtUmVzdWx0LnJlc3VsdCkge1xuICAgIC8vICAgYXdhaXQgdGhpcy52bS5leGVjdXRlQ29tbWFuZCgnbmV4dCcpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQ2xpY2soZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgZm9ybVJlc3VsdCA9IGF3YWl0IGZvcm0udmFsaWRhdGUoKTtcbiAgICBpZiAoZm9ybVJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMudm0uc2F2ZSgpO1xuICAgICAgdGhpcy5jbG9zZSh7IHNhdmU6IHRydWUsIHJlY29yZElkOiByZWNvcmQuaWQsIGl0ZW06IHJlY29yZCwgcmVkaXJlY3Q6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVBbmROZXdDbGljayhmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xuICAgIGlmIChmb3JtUmVzdWx0LnJlc3VsdCkge1xuICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgdGhpcy52bS5zYXZlKCk7XG4gICAgICB0aGlzLmNsb3NlKHsgc2F2ZTogdHJ1ZSwgcmVjb3JkSWQ6IHJlY29yZC5pZCwgcmVkaXJlY3Q6IGZhbHNlIH0pO1xuICAgICAgYXdhaXQgdGhpcy52bS5jcmVhdGVOZXdPbmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ29udGV4dENoYW5nZShkYXRhOiBhbnkpIHtcbiAgICBkZWJ1Z2dlclxuICAgIHRoaXMudm0uY29udGV4dC5zZXQoZGF0YSk7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwidm0uY29udGV4dCgpXCIgKGNvbnRleHRDaGFuZ2UpPVwiaGFuZGxlQ29udGV4dENoYW5nZSgkZXZlbnQpXCI+XG4gICAgPGF4LWZvcm0gY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC02IGF4LXAtNCBheC1wYi04XCIgI2Zvcm0gW21lc3NhZ2VTdHlsZV09XCInYm90dG9tJ1wiIFt1cGRhdGVPbl09XCInYmx1cidcIj5cbiAgICAgIDwhLS0gQmVnaW4gU2VjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZ3JpZCBheC1ncmlkLWNvbHMtMTIgYXgtZ2FwLTRcIj5cbiAgICAgICAgQGZvcihzZWN0aW9uIG9mIHZtLnNlY3Rpb25zKCk7IHRyYWNrIHNlY3Rpb24ubmFtZSgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1jb2wtc3Bhbi0xMlwiPlxuICAgICAgICAgIDxheC1mb3JtICNmb3JtPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXBiLTRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtdGV4dC14bFwiPnt7IHNlY3Rpb24udGl0bGUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmKHNlY3Rpb24uZGVzY3JpcHRpb24oKSkge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1ncmF5LTUwMFwiPnt7IHNlY3Rpb24uZGVzY3JpcHRpb24oKSB9fTwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZC1ib2R5ICFheC1ncmlkICFheC1ncmlkLWNvbHMtMTIgIWF4LWdhcC00XCI+XG4gICAgICAgICAgICAgIEBmb3IoYXR0ciBvZiBzZWN0aW9uLmVsZW1lbnRzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8YXgtZm9ybS1maWVsZCBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTFcIiBbZ3JpZExheW91dF09XCJhdHRyLmxheW91dCgpXCI+XG4gICAgICAgICAgICAgICAgPGF4LWxhYmVsIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXNtXCIgW3JlcXVpcmVkXT1cImF0dHIuaXNSZXF1aXJlZCgpXCI+e3sgYXR0ci50aXRsZSgpXG4gICAgICAgICAgICAgICAgICB9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwiYXR0ci5ub2RlKClcIiBbbW9kZV09XCInZWRpdCdcIj4gPC9heHAtd2lkZ2V0LXJlbmRlcmVyPlxuICAgICAgICAgICAgICA8L2F4LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXgtZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBGaW5pc2ggU2VjdGlvbnMgIC0tPlxuICAgIDwvYXgtZm9ybT5cbiAgPC9heHAtd2lkZ2V0cy1jb250YWluZXI+XG4gIDxheC1mb290ZXI+XG4gICAgPGF4LXN1ZmZpeD5cbiAgICAgIDxheC1idXR0b24gbG9vaz1cInNvbGlkXCIgY29sb3I9XCJnaG9zdFwiIFt0ZXh0XT1cIidjYW5jZWwnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZUNsaWNrKClcIj5cbiAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPGF4LWRyb3Bkb3duLWJ1dHRvbiBbZGlzYWJsZWRdPVwidm0uaXNJblByb2dyZXNzKClcIiBjb2xvcj1cInByaW1hcnlcIiBbdGV4dF09XCInc2F2ZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgIGxvb2s9XCJzb2xpZFwiIChvbkNsaWNrKT1cImhhbmRsZVNhdmVDbGljayhmb3JtKVwiPlxuICAgICAgICA8YXgtbG9hZGluZyAqbmdJZj1cInZtLmlzSW5Qcm9ncmVzcygpXCI+PC9heC1sb2FkaW5nPlxuICAgICAgICA8YXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW0gW3RleHRdPVwiKCdzYXZlJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKSArICcgJyArICgnY3JlYXRlLW5ldycgfCB0cmFuc2xhdGUgfCBhc3luYylcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlU2F2ZUFuZE5ld0NsaWNrKGZvcm0pXCI+XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgPC9heC1kcm9wZG93bi1idXR0b24+XG4gICAgPC9heC1zdWZmaXg+XG4gIDwvYXgtZm9vdGVyPlxuPC9kaXY+Il19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RoZW1lcy9kZWZhdWx0L3NyYy9saWIvbGF5b3V0cy9lbnRpdHktbGF5b3V0cy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3L2VudGl0eS1tYXN0ZXItY3JlYXRlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1jcmVhdGUtdmlldy9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDNUUsT0FBTyxFQUFtQixZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFp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YixrQ0FBa0M7a0JBM0I5QyxTQUFTOzhCQUVDO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLEVBQUU7d0JBQ0Ysc0JBQXNCO3dCQUN0QixnQkFBZ0I7d0JBQ2hCLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3FCQUN2QixjQUNXLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEZvcm1Db21wb25lbnQsIEFYRm9ybU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9mb3JtJztcbmltcG9ydCB7IEFYTGFiZWxNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbGFiZWwnO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYVGFic01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IEFYVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBXcml0YWJsZVNpZ25hbCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdmFsaWRhdGlvbic7XG5cbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhQR3JpZExheW91dERpcmVjdGl2ZSwgQVhQU3RpY2t5RGlyZWN0aXZlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBXaWRnZXRzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlckNyZWF0ZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktbWFzdGVyLWNyZWF0ZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFYQnV0dG9uTW9kdWxlLFxuICAgIEFYRGlhbG9nTW9kdWxlLFxuICAgIEFYTG9hZGluZ01vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhUb29sdGlwTW9kdWxlLFxuICAgIEFYVmFsaWRhdGlvbk1vZHVsZSxcbiAgICBBWExhYmVsTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhEcm9wZG93bkJ1dHRvbk1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBFbnRpdHlNYXN0ZXJDcmVhdGVWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlUGFnZUNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB2bSE6IEFYUEVudGl0eU1hc3RlckNyZWF0ZVZpZXdNb2RlbDtcblxuICBwcm90ZWN0ZWQgd29ya2Zsb3cgPSBpbmplY3QoQVhQV29ya2Zsb3dTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgaGFuZGxlQ2xvc2VDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQmFja0NsaWNrKCkge1xuICAgIC8vYXdhaXQgdGhpcy52bS5leGVjdXRlQ29tbWFuZCgnYmFjaycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZU5leHRDbGljayhmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICAvLyBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xuICAgIC8vIGlmIChmb3JtUmVzdWx0LnJlc3VsdCkge1xuICAgIC8vICAgYXdhaXQgdGhpcy52bS5leGVjdXRlQ29tbWFuZCgnbmV4dCcpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQ2xpY2soZm9ybTogQVhGb3JtQ29tcG9uZW50KSB7XG4gICAgY29uc3QgZm9ybVJlc3VsdCA9IGF3YWl0IGZvcm0udmFsaWRhdGUoKTtcbiAgICBpZiAoZm9ybVJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMudm0uc2F2ZSgpO1xuICAgICAgdGhpcy5jbG9zZSh7IHNhdmU6IHRydWUsIHJlY29yZElkOiByZWNvcmQuaWQsIGl0ZW06IHJlY29yZCwgcmVkaXJlY3Q6IHRydWUgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVBbmROZXdDbGljayhmb3JtOiBBWEZvcm1Db21wb25lbnQpIHtcbiAgICBjb25zdCBmb3JtUmVzdWx0ID0gYXdhaXQgZm9ybS52YWxpZGF0ZSgpO1xuICAgIGlmIChmb3JtUmVzdWx0LnJlc3VsdCkge1xuICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgdGhpcy52bS5zYXZlKCk7XG4gICAgICB0aGlzLmNsb3NlKHsgc2F2ZTogdHJ1ZSwgcmVjb3JkSWQ6IHJlY29yZC5pZCwgcmVkaXJlY3Q6IGZhbHNlIH0pO1xuICAgICAgYXdhaXQgdGhpcy52bS5jcmVhdGVOZXdPbmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ29udGV4dENoYW5nZShkYXRhOiBhbnkpIHtcbiAgICB0aGlzLnZtLmNvbnRleHQuc2V0KGRhdGEpO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cInZtLmNvbnRleHQoKVwiIChjb250ZXh0Q2hhbmdlKT1cImhhbmRsZUNvbnRleHRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxheC1mb3JtIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNiBheC1wLTQgYXgtcGItOFwiICNmb3JtIFttZXNzYWdlU3R5bGVdPVwiJ2JvdHRvbSdcIiBbdXBkYXRlT25dPVwiJ2JsdXInXCI+XG4gICAgICA8IS0tIEJlZ2luIFNlY3Rpb25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWdyaWQgYXgtZ3JpZC1jb2xzLTEyIGF4LWdhcC00XCI+XG4gICAgICAgIEBmb3Ioc2VjdGlvbiBvZiB2bS5zZWN0aW9ucygpOyB0cmFjayBzZWN0aW9uLm5hbWUoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29sLXNwYW4tMTJcIj5cbiAgICAgICAgICA8YXgtZm9ybSAjZm9ybT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1wYi00XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1ib2xkIGF4LXRleHQteGxcIj57eyBzZWN0aW9uLnRpdGxlKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZihzZWN0aW9uLmRlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LXNtIGF4LXRleHQtZ3JheS01MDBcIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uKCkgfX08L3A+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtYm9keSAhYXgtZ3JpZCAhYXgtZ3JpZC1jb2xzLTEyICFheC1nYXAtNFwiPlxuICAgICAgICAgICAgICBAZm9yKGF0dHIgb2Ygc2VjdGlvbi5lbGVtZW50cygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGF4LWZvcm0tZmllbGQgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xXCIgW2dyaWRMYXlvdXRdPVwiYXR0ci5sYXlvdXQoKVwiPlxuICAgICAgICAgICAgICAgIDxheC1sYWJlbCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGQgYXgtdGV4dC1zbVwiIFtyZXF1aXJlZF09XCJhdHRyLmlzUmVxdWlyZWQoKVwiPnt7IGF0dHIudGl0bGUoKVxuICAgICAgICAgICAgICAgICAgfX08L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCIgW21vZGVdPVwiJ2VkaXQnXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgICAgPC9heC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F4LWZvcm0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gRmluaXNoIFNlY3Rpb25zICAtLT5cbiAgICA8L2F4LWZvcm0+XG4gIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICA8YXgtZm9vdGVyPlxuICAgIDxheC1zdWZmaXg+XG4gICAgICA8YXgtYnV0dG9uIGxvb2s9XCJzb2xpZFwiIGNvbG9yPVwiZ2hvc3RcIiBbdGV4dF09XCInY2FuY2VsJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2VDbGljaygpXCI+XG4gICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDxheC1kcm9wZG93bi1idXR0b24gW2Rpc2FibGVkXT1cInZtLmlzSW5Qcm9ncmVzcygpXCIgY29sb3I9XCJwcmltYXJ5XCIgW3RleHRdPVwiJ3NhdmUnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgICAgICBsb29rPVwic29saWRcIiAob25DbGljayk9XCJoYW5kbGVTYXZlQ2xpY2soZm9ybSlcIj5cbiAgICAgICAgPGF4LWxvYWRpbmcgKm5nSWY9XCJ2bS5pc0luUHJvZ3Jlc3MoKVwiPjwvYXgtbG9hZGluZz5cbiAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cIignc2F2ZScgfCB0cmFuc2xhdGUgfCBhc3luYykgKyAnICcgKyAoJ2NyZWF0ZS1uZXcnIHwgdHJhbnNsYXRlIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZVNhdmVBbmROZXdDbGljayhmb3JtKVwiPlxuICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0tbGlzdD5cbiAgICAgIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICAgIDwvYXgtc3VmZml4PlxuICA8L2F4LWZvb3Rlcj5cbjwvZGl2PiJdfQ==
@@ -130,7 +130,7 @@ export class AXPEntityMasterListViewComponent {
130
130
  this.vm.destroy();
131
131
  }
132
132
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPEntityMasterListViewComponent, deps: [{ token: i1.AXActionSheetService }, { token: i2.AXPlatform }], target: i0.ɵɵFactoryTarget.Component }); }
133
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPEntityMasterListViewComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<ax-drawer-container>\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\" #content>\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-gap-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\n <!-------- Begin Toolbar -------->\n <!-------- Begin Line 1 -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">{{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : ('actions' | translate | async)\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index;let first=$first) {\n <ng-container>\n @if(tr.separated && !$first) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n\n <!-------- Finish Line 1 -------->\n\n <!-------- Begin Line 2 -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-4\">\n <!-------- Begin Selection -------->\n\n @if(vm.hasSelectedItems()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ vm.selectedItems().length }} Items Selected </span>\n <span (click)=\"vm.clearSelection()\"\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\n Items</span>\n </div>\n\n <!-------- Finish Selection -------->\n\n } @else {\n\n <!-------- Begin View -------->\n\n <ax-button [text]=\"vm.view().title\" #views color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-eye\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async\n }}</ax-title>\n <ax-button-item *ngFor=\"let v of vm.views()\" [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"vm.view() == v\" (onClick)=\"vm.setView(v.name)\"></ax-button-item>\n <!-- <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\n <ax-suffix>\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\n <ax-icon class=\"far fa-edit\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-button-item> -->\n <!-- <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container> -->\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-------- Finish View -------->\n\n <!-------- Begin Inline Search -------->\n @if(vm.hasInlineFilters() && !(this.platform.is('Mobile') || this.platform.is('SM'))) {\n <div class=\"ax-w-72\">\n <ax-search-box\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n </div>\n } }\n <!-------- Finish Inline Search -------->\n </div>\n <!-- Begin View Action Menu -->\n @if(!vm.hasSelectedItems()) {\n <div class=\"ax-flex ax-gap-3\">\n @if(vm.hasInlineFilters() && (this.platform.is('Mobile') || this.platform.is('SM'))) {\n <ax-button (onClick)=\"toggleSearchBar()\" color=\"ghost\"> <ax-icon class=\"fa-solid fa-search\"> </ax-icon>\n </ax-button>}\n\n <ax-button [text]=\"makeResponsive('entity.columns' | translate | async)\" color=\"ghost\"\n (onClick)=\"columnsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge [text]=\"makeResponsive(vm.visibleColumnCount().toString())\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\"\n *feature=\"'axp-entity-list-advance-filter'\">\n <ax-prefix>\n <i class=\"fa-solid fa-sliders\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"3\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n\n @if(vm.canSort()) {\n <ax-button [text]=\"makeResponsive('entity.sort' | translate | async)\" color=\"ghost\"\n (onClick)=\"sortsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars-sort\"></i>\n </ax-prefix>\n @if(vm.sortedCount()) {\n <ax-suffix>\n <ax-badge [text]=\"makeResponsive(vm.sortedCount().toString())\" color=\"primary\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n }\n </div>\n }\n <!-- Finish View Action Menu -->\n </div>\n <div>\n @if(vm.hasInlineFilters() && (this.platform.is('Mobile') || this.platform.is('SM'))) {\n <ax-search-box [class.collapsed-search-box]=\"searchBarShown()\" class=\"ax-transition-all\"\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n </div>\n <!-------- Finish Line 2 -------->\n\n <!----- Finish Toolbar ----->\n </div>\n </div>\n <!----- Begin DataTable ----->\n <div class=\"ax-flex ax-flex-1 ax-px-6 ax-py-6 ax-pt-0 ax-overflow-auto\">\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\" (onRowDbClick)=\"handleRowDbClick($event)\">\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n @for(col of vm.columns();track col.name) { @if(col.visible) {\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\n } }\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\n </ax-data-table>\n </div>\n <!----- Finish DataTable ----->\n </ax-content>\n\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-columns [viewModel]=\"vm\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\n <!-- <axp-list-view-option-conditions [loader]=\"loader\"\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions> -->\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [viewModel]=\"vm\"></axp-list-view-option-sorting>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i5.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i6.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i8.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i9.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i9.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i10.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i10.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i11.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i12.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i12.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i12.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPEntityMasterListViewComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "grid", first: true, predicate: ["grid"], descendants: true }], ngImport: i0, template: "<ax-drawer-container>\n <ax-content class=\"ax-flex ax-flex-col ax-overflow-hidden\" #content>\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\">\n <div class=\"ax-flex ax-flex-col ax-pt-4 ax-gap-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\" #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\" [stickyParent]=\"content.getHostElement()\">\n <!-------- Begin Toolbar -------->\n <!-------- Begin Line 1 -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">{{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item [active]=\"last\" [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\" [routerLink]=\"b.url\">\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : ('actions' | translate | async)\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index;let first=$first) {\n <ng-container>\n @if(tr.separated && !$first) {\n <ax-divider></ax-divider>\n }\n <ax-button-item [text]=\"tr.title\" class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n\n <!-------- Finish Line 1 -------->\n\n <!-------- Begin Line 2 -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <div class=\"ax-flex ax-justify-start ax-items-center ax-gap-4\">\n <!-------- Begin Selection -------->\n\n @if(vm.hasSelectedItems()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\"> {{ vm.selectedItems().length }} Items Selected </span>\n <span (click)=\"vm.clearSelection()\"\n class=\"ax-text-sm ax-text-primary dark:ax-text-primary-300 ax-underline ax-cursor-pointer\">Clear\n Items</span>\n </div>\n\n <!-------- Finish Selection -------->\n\n } @else {\n\n <!-------- Begin View -------->\n\n <ax-button [text]=\"vm.view().title\" #views color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-eye\"></i>\n </ax-prefix>\n <ax-suffix>\n <i class=\"fa-solid fa-caret-down\"></i>\n </ax-suffix>\n <ax-dropdown-panel [adaptivityEnabled]=\"true\">\n <ax-button-item-list class=\"ax-bg-surface\">\n <ax-title class=\"ax-font-bold ax-opacity-100\">{{ 'entity.public-view' | translate | async\n }}</ax-title>\n <ax-button-item *ngFor=\"let v of vm.views()\" [text]=\"v.title\"\n [class.ax-bg-on-surface]=\"vm.view() == v\" (onClick)=\"vm.setView(v.name)\"></ax-button-item>\n <!-- <ax-title class=\"ax-font-bold ax-opacity-100\" *ngIf=\"hasCustomViews$ | async\">Created by me</ax-title>\n <ax-button-item class=\"ax-pe-4 ax-flex ax-justify-between\" *ngFor=\"let v of customViews$ | async\"\n [text]=\"v.title\" [class.ax-bg-on-surface]=\"(view$ | async) == v\" (onClick)=\"loader.setView(v.name)\">\n <ax-suffix>\n <ax-button (onClick)=\"updateViewPopup($event, v)\" class=\"ax-xs\" look=\"none\">\n <ax-icon class=\"far fa-edit\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-button-item> -->\n <!-- <ng-container *feature=\"'axp-entity-list-custom-view'\">\n <ax-divider></ax-divider>\n <ax-button-item text=\"Add Custom View\" (onClick)=\"addCustomViewPopup()\"\n class=\"ax-font-semibold ax-text-primary\"></ax-button-item>\n </ng-container> -->\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-------- Finish View -------->\n\n <!-------- Begin Inline Search -------->\n @if(vm.hasInlineFilters() && !(this.platform.is('Mobile') || this.platform.is('SM'))) {\n <div class=\"ax-w-72\">\n <ax-search-box\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n </div>\n } }\n <!-------- Finish Inline Search -------->\n </div>\n <!-- Begin View Action Menu -->\n @if(!vm.hasSelectedItems()) {\n <div class=\"ax-flex ax-gap-3\">\n @if(vm.hasInlineFilters() && (this.platform.is('Mobile') || this.platform.is('SM'))) {\n <ax-button (onClick)=\"toggleSearchBar()\" color=\"ghost\"> <ax-icon class=\"fa-solid fa-search\"> </ax-icon>\n </ax-button>}\n\n <ax-button [text]=\"makeResponsive('entity.columns' | translate | async)\" color=\"ghost\"\n (onClick)=\"columnsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge [text]=\"makeResponsive(vm.visibleColumnCount().toString())\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n <ax-button text=\"Filters\" color=\"ghost\" (onClick)=\"conditionsDrawer.open()\"\n *feature=\"'axp-entity-list-advance-filter'\">\n <ax-prefix>\n <i class=\"fa-solid fa-sliders\"></i>\n </ax-prefix>\n <ax-suffix>\n <ax-badge text=\"3\" color=\"primary\"></ax-badge>\n </ax-suffix>\n </ax-button>\n\n @if(vm.canSort()) {\n <ax-button [text]=\"makeResponsive('entity.sort' | translate | async)\" color=\"ghost\"\n (onClick)=\"sortsDrawer.open()\">\n <ax-prefix>\n <i class=\"fa-solid fa-bars-sort\"></i>\n </ax-prefix>\n @if(vm.sortedCount()) {\n <ax-suffix>\n <ax-badge [text]=\"makeResponsive(vm.sortedCount().toString())\" color=\"primary\"></ax-badge>\n </ax-suffix>\n }\n </ax-button>\n }\n </div>\n }\n <!-- Finish View Action Menu -->\n </div>\n <div>\n @if(vm.hasInlineFilters() && (this.platform.is('Mobile') || this.platform.is('SM'))) {\n <ax-search-box [class.collapsed-search-box]=\"searchBarShown()\" class=\"ax-transition-all\"\n [placeholder]=\"('widget.lookup.search' | translate | async) + vm.inlineFiltersPlaceholders().join(', ')\"\n (onValueChanged)=\"handleChangeSearchValue($event)\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n </div>\n <!-------- Finish Line 2 -------->\n\n <!----- Finish Toolbar ----->\n </div>\n </div>\n <!----- Begin DataTable ----->\n <div class=\"ax-flex ax-flex-1 ax-px-6 ax-py-6 ax-pt-0 ax-overflow-auto\">\n <ax-data-table #grid [showFooter]=\"false\" class=\"ax-flex-1\" [paging]=\"true\" [fetchDataMode]=\"'manual'\"\n [loading]=\"{ enabled: true, animation: true }\" [dataSource]=\"vm.dataSource\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\" (onRowDbClick)=\"handleRowDbClick($event)\">\n <ax-select-column fixed=\"start\" [width]=\"'50px'\"></ax-select-column>\n @for(col of vm.columns();track col.name) { @if(col.visible) {\n <axp-widget-column-renderer [caption]=\"col.title\" [node]=\"col.node()\"></axp-widget-column-renderer>\n } }\n <ax-dropdown-command-column fixed=\"end\" [width]=\"'60px'\" [items]=\"getDropdownRowItems\"\n (onItemClick)=\"handleRowCommandClick($event)\"></ax-dropdown-command-column>\n </ax-data-table>\n </div>\n <!----- Finish DataTable ----->\n </ax-content>\n\n <ax-drawer (collapsedChange)=\"closeDrawer('columns', $event)\" #columnsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-columns [viewModel]=\"vm\" (onClosed)=\"columnsDrawer.close()\"></axp-list-view-option-columns>\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('conditions', $event)\" #conditionsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[25vw] ax-border-e\">\n <!-- <axp-list-view-option-conditions [loader]=\"loader\"\n (onClosed)=\"conditionsDrawer.close()\"></axp-list-view-option-conditions> -->\n </ax-content>\n </ax-drawer>\n <ax-drawer (collapsedChange)=\"closeDrawer('sorts', $event)\" #sortsDrawer location=\"end\" [mode]=\"'overlay'\">\n <ax-content class=\"ax-w-[85vw] md:ax-w-[45vw] lg:ax-w-[35vw] 2xl:ax-w-[20vw] ax-border-e\">\n <axp-list-view-option-sorting (onClosed)=\"sortsDrawer.close()\" [viewModel]=\"vm\"></axp-list-view-option-sorting>\n </ax-content>\n </ax-drawer>\n</ax-drawer-container>", styles: [".cdk-drag-preview{border-radius:.375rem;border-width:1px;--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background:rgba(var(--ax-color-on-surface));padding:.5rem;height:max-content!important}.collapsed-search-box{margin-top:0;height:0px;opacity:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i5.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i5.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i6.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i6.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i7.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i8.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "component", type: i9.AXDrawerComponent, selector: "ax-drawer", inputs: ["location", "showBackdrop", "mode", "collapsed", "closeOthers"], outputs: ["locationChange", "modeChange", "collapsedChange"] }, { kind: "component", type: i9.AXDrawerContainerComponent, selector: "ax-drawer-container" }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i10.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i10.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i11.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "delayTime"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i12.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "rowTemplate", "emptyTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged"] }, { kind: "component", type: i12.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i12.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type:
134
134
  //
135
135
  AXPLayoutBuilderModule }, { kind: "component", type: i13.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "node", "footerTemplate", "cellTemplate", "headerTemplate"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "directive", type: i14.AXPFeatureDirective, selector: "[feature]", inputs: ["feature", "featureElse"] }, { kind: "component", type:
136
136
  //
@@ -172,4 +172,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
172
172
  type: ViewChild,
173
173
  args: ['grid']
174
174
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsR0FJbEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxN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LGlCQUFpQix1Y0FDakIsYUFBYSx5SUFDYixnQkFBZ0Isd1BBQ2hCLGVBQWUsOEJBQ2YsWUFBWSw4QkFDWixtQkFBbUIsOEJBQ25CLGNBQWMsOFRBQ2QsY0FBYyw4QkFDZCxlQUFlLDhCQUNmLFlBQVksOEJBQ1osZUFBZSw4QkFDZixtQkFBbUIsaVBBQ25CLGlCQUFpQiw0WEFDakIsaUJBQWlCO2dCQUNqQixFQUFFO2dCQUNGLHNCQUFzQiwwTkFDdEIsZ0JBQWdCLCtCQUNoQixrQkFBa0Isb0xBRWxCLGFBQWE7Z0JBQ2IsRUFBRTtnQkFDRixrQ0FBa0MsdUhBQ2xDLGlDQUFpQyxzSEFDakMsbUJBQW1COzsyRkFJVixnQ0FBZ0M7a0JBckM1QyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsRUFBRTt3QkFDRixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGFBQWE7d0JBQ2IsRUFBRTt3QkFDRixrQ0FBa0M7d0JBQ2xDLGlDQUFpQzt3QkFDakMsbUJBQW1CO3FCQUNwQixjQUNXLElBQUk7a0hBaUJHLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQWN0aW9uU2hlZXRNb2R1bGUsIEFYQWN0aW9uU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQge1xuICBBWERhdGFUYWJsZUNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVNb2R1bGUsXG4gIEFYRGF0YVRhYmxlUm93RGJDbGljayxcbiAgQVhSb3dDb21tYW5kSXRlbSxcbiAgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFBBdXRoTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7XG4gIEFYUEFkbWluTGF5b3V0U3RhdGUsXG4gIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gIEFYUExheW91dFNlcnZpY2UsXG4gIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgZ2V0Q2hpbGREcmF3ZXIsXG4gIGlzU21hbGxTY3JlZW4sXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMvbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMaXN0Vmlld09wdGlvblNvcnRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xpc3Qtdmlldy1vcHRpb24tc29ydGluZy9saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhBY3Rpb25TaGVldE1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWERpYWxvZ01vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYVG9vbHRpcE1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIEFYUEF1dGhNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50LFxuICAgIEFYUExpc3RWaWV3T3B0aW9uU29ydGluZ0NvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgYWN0aXZlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YVsndm0nXSBhcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsO1xuXG4gIC8vXG4gIHByaXZhdGUgc3RvcmUgPSBpbmplY3QoU3RvcmU8QVhQQWRtaW5MYXlvdXRTdGF0ZT4pO1xuICBwcm90ZWN0ZWQgaXNTTSA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzU21hbGxTY3JlZW4oKSk7XG4gIHByb3RlY3RlZCBpc09wZW4gPSB0aGlzLnN0b3JlLnNlbGVjdChnZXRDaGlsZERyYXdlcigpKTtcbiAgLy9cbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcbiAgLy9cbiAgcHJvdGVjdGVkIHNlYXJjaEJhclNob3duID0gc2lnbmFsKHRydWUpO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyaWQnKSBncmlkITogQVhEYXRhVGFibGVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25TaGVldFNlcnZpY2U6IEFYQWN0aW9uU2hlZXRTZXJ2aWNlLCBwcm90ZWN0ZWQgcGxhdGZvcm06IEFYUGxhdGZvcm0pIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RlZFJvd3MgPSB0aGlzLnZtLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIC8vXG4gICAgdGhpcy52bS5ldmVudHMkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUuYWN0aW9uID09ICdyZWZyZXNoJykge1xuICAgICAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudm0uc2V0VmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlRHJhd2VyKG5hbWU6IHN0cmluZywgY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgIGNhc2UgJ2NvbmRpdGlvbnMnOlxuICAgICAgICAgIC8vdGhpcy5sb2FkZXIucmVzZXRDb25kaXRpb25zKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvbHVtbnMnOlxuICAgICAgICAgIHRoaXMudm0uYXBwbHlDb2x1bW5zKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NvcnRzJzpcbiAgICAgICAgICAvL3RoaXMudm0ucmVzZXRTb3J0cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZVNlYXJjaFZhbHVlKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy52bS5hcHBseUlubGluZUZpbHRlcihlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRyb3Bkb3duUm93SXRlbXMgPSBjb21wdXRlZDxBWFJvd0NvbW1hbmRJdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy52bS5yb3dBY3Rpb25zKCkubWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgICh7XG4gICAgICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICB0ZXh0OiBjLnRpdGxlLFxuICAgICAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgICB9IGFzIEFYUm93Q29tbWFuZEl0ZW0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XG4gICAgY29uc3QgZDogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IGUuY29tcG9uZW50LFxuICAgICAgbmFtZTogdGhpcy5kcm9wZG93blJvd0l0ZW1zKClbMF0ubmFtZSxcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlUm93Q29tbWFuZENsaWNrKGQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERyb3Bkb3duUm93SXRlbXMgPSAocm93RGF0YTogdW5rbm93bik6IFByb21pc2U8QVhSb3dDb21tYW5kSXRlbVtdPiA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRyb3Bkb3duUm93SXRlbXMoKSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVJvd0NvbW1hbmRDbGljayhlOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMudm0uZXhlY3V0ZUNvbW1hbmQoZS5uYW1lLCBlLmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcbiAgICB0aGlzLnZtLnNlbGVjdGVkSXRlbXMuc2V0KHJvd3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1ha2VSZXNwb25zaXZlPHQ+KHZhbHVlOiB0KTogdCB8IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXMoJ01vYmlsZScpIHx8IHRoaXMucGxhdGZvcm0uaXMoJ1NNJykpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTZWFyY2hCYXIoKSB7XG4gICAgdGhpcy5zZWFyY2hCYXJTaG93bi5zZXQoIXRoaXMuc2VhcmNoQmFyU2hvd24oKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZtLmRlc3Ryb3koKTtcbiAgfVxufVxuIiwiPGF4LWRyYXdlci1jb250YWluZXI+XG4gIDxheC1jb250ZW50IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1vdmVyZmxvdy1oaWRkZW5cIiAjY29udGVudD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LWdhcC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCIgI3N0aWNreT1cImF4cFN0aWNreVwiXG4gICAgICAgIFtheHBTdGlja3ldPVwiJ2F4LWJnLXN1cmZhY2UgYXgtcHgtNiBheC1weS0zIC1heC1teC02IGF4LXNoYWRvdy14bCdcIiBbc3RpY2t5UGFyZW50XT1cImNvbnRlbnQuZ2V0SG9zdEVsZW1lbnQoKVwiPlxuICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIFRvb2xiYXIgIC0tLS0tLS0tPlxuICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIExpbmUgMSAgLS0tLS0tLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIFRpdGxlICAtLS0tLS0tLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LXRyYW5zaXRpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQteGwgbWQ6YXgtdGV4dC0zeGwgYXgtZm9udC1ib2xkXCI+e3sgdm0udGl0bGUoKSB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYodm0uZGVzY3JpcHRpb24oKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwXCIgW2NsYXNzLmF4LWhpZGRlbl09XCJzdGlja3kuaXNTdGlja3lcIj57eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cImlzU00gfCBhc3luY1wiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCBheC10ZXh0LXhzIGF4LW14LTJcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICBAZm9yKGIgb2Ygdm0uYmVhcmRjcnVtYnMoKTt0cmFjayAkaW5kZXg7bGV0IGxhc3Q9JGxhc3QpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnJlYWRjcnVtYnMtaXRlbSBbYWN0aXZlXT1cImxhc3RcIiBbY2xhc3MuIWF4LWZvbnQtc2VtaWJvbGRdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiIFtyb3V0ZXJMaW5rXT1cImIudXJsXCI+XG4gICAgICAgICAgICAgICAgICBAaWYoYi5pY29uKSB7XG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAge3sgYi50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnMtaXRlbT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgPCEtLSBCZWdpbiBBY3Rpb24gTWVudSAgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnByaW1hcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cInRyLnRpdGxlXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH0gQGlmKHZtLnNlY29uZGFyeUFjdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogKCdhY3Rpb25zJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKVwiIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgQGZvcih0ciBvZiB2bS5zZWNvbmRhcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4O2xldCBmaXJzdD0kZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIEBpZih0ci5zZXBhcmF0ZWQgJiYgISRmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cInRyLnRpdGxlXCIgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQte3sgdHIuY29sb3IgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBGaW5pc2ggQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBMaW5lIDEgIC0tLS0tLS0tPlxuXG4gICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gTGluZSAyIC0tLS0tLS0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gU2VsZWN0aW9uICAtLS0tLS0tLT5cblxuICAgICAgICAgICAgQGlmKHZtLmhhc1NlbGVjdGVkSXRlbXMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZFwiPiB7eyB2bS5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoIH19IEl0ZW1zIFNlbGVjdGVkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInZtLmNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LXByaW1hcnkgZGFyazpheC10ZXh0LXByaW1hcnktMzAwIGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiPkNsZWFyXG4gICAgICAgICAgICAgICAgSXRlbXM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLS0tLS0tLSBGaW5pc2ggU2VsZWN0aW9uICAtLS0tLS0tLT5cblxuICAgICAgICAgICAgfSBAZWxzZSB7XG5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gVmlldyAgLS0tLS0tLS0+XG5cbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwidm0udmlldygpLnRpdGxlXCIgI3ZpZXdzIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJldC1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1iZy1zdXJmYWNlXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtdGl0bGUgY2xhc3M9XCJheC1mb250LWJvbGQgYXgtb3BhY2l0eS0xMDBcIj57eyAnZW50aXR5LnB1YmxpYy12aWV3JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAqbmdGb3I9XCJsZXQgdiBvZiB2bS52aWV3cygpXCIgW3RleHRdPVwidi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1iZy1vbi1zdXJmYWNlXT1cInZtLnZpZXcoKSA9PSB2XCIgKG9uQ2xpY2spPVwidm0uc2V0Vmlldyh2Lm5hbWUpXCI+PC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGF4LXRpdGxlIGNsYXNzPVwiYXgtZm9udC1ib2xkIGF4LW9wYWNpdHktMTAwXCIgKm5nSWY9XCJoYXNDdXN0b21WaWV3cyQgfCBhc3luY1wiPkNyZWF0ZWQgYnkgbWU8L2F4LXRpdGxlPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBjbGFzcz1cImF4LXBlLTQgYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW5cIiAqbmdGb3I9XCJsZXQgdiBvZiBjdXN0b21WaWV3cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2LnRpdGxlXCIgW2NsYXNzLmF4LWJnLW9uLXN1cmZhY2VdPVwiKHZpZXckIHwgYXN5bmMpID09IHZcIiAob25DbGljayk9XCJsb2FkZXIuc2V0Vmlldyh2Lm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInVwZGF0ZVZpZXdQb3B1cCgkZXZlbnQsIHYpXCIgY2xhc3M9XCJheC14c1wiIGxvb2s9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXIgZmEtZWRpdFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT4gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKmZlYXR1cmU9XCInYXhwLWVudGl0eS1saXN0LWN1c3RvbS12aWV3J1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJBZGQgQ3VzdG9tIFZpZXdcIiAob25DbGljayk9XCJhZGRDdXN0b21WaWV3UG9wdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXByaW1hcnlcIj48L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIFZpZXcgIC0tLS0tLS0tPlxuXG4gICAgICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIElubGluZSBTZWFyY2ggICAtLS0tLS0tLT5cbiAgICAgICAgICAgIEBpZih2bS5oYXNJbmxpbmVGaWx0ZXJzKCkgJiYgISh0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctNzJcIj5cbiAgICAgICAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luYykgKyB2bS5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUNoYW5nZVNlYXJjaFZhbHVlKCRldmVudClcIj48YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPjwvYXgtc2VhcmNoLWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBJbmxpbmUgU2VhcmNoIC0tLS0tLS0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gQmVnaW4gVmlldyBBY3Rpb24gTWVudSAgLS0+XG4gICAgICAgICAgQGlmKCF2bS5oYXNTZWxlY3RlZEl0ZW1zKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtM1wiPlxuICAgICAgICAgICAgQGlmKHZtLmhhc0lubGluZUZpbHRlcnMoKSAmJiAodGhpcy5wbGF0Zm9ybS5pcygnTW9iaWxlJykgfHwgdGhpcy5wbGF0Zm9ybS5pcygnU00nKSkpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwidG9nZ2xlU2VhcmNoQmFyKClcIiBjb2xvcj1cImdob3N0XCI+IDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtc2VhcmNoXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPn1cblxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJtYWtlUmVzcG9uc2l2ZSgnZW50aXR5LmNvbHVtbnMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpXCIgY29sb3I9XCJnaG9zdFwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNvbHVtbnNEcmF3ZXIub3BlbigpXCI+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1iYXJzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgICA8YXgtYmFkZ2UgW3RleHRdPVwibWFrZVJlc3BvbnNpdmUodm0udmlzaWJsZUNvbHVtbkNvdW50KCkudG9TdHJpbmcoKSlcIiBjb2xvcj1cInByaW1hcnlcIj48L2F4LWJhZGdlPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0ZXh0PVwiRmlsdGVyc1wiIGNvbG9yPVwiZ2hvc3RcIiAob25DbGljayk9XCJjb25kaXRpb25zRHJhd2VyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICpmZWF0dXJlPVwiJ2F4cC1lbnRpdHktbGlzdC1hZHZhbmNlLWZpbHRlcidcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXNsaWRlcnNcIj48L2k+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgIDxheC1iYWRnZSB0ZXh0PVwiM1wiIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgIEBpZih2bS5jYW5Tb3J0KCkpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwibWFrZVJlc3BvbnNpdmUoJ2VudGl0eS5zb3J0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jKVwiIGNvbG9yPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzb3J0c0RyYXdlci5vcGVuKClcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWJhcnMtc29ydFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIEBpZih2bS5zb3J0ZWRDb3VudCgpKSB7XG4gICAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWJhZGdlIFt0ZXh0XT1cIm1ha2VSZXNwb25zaXZlKHZtLnNvcnRlZENvdW50KCkudG9TdHJpbmcoKSlcIiBjb2xvcj1cInByaW1hcnlcIj48L2F4LWJhZGdlPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDwhLS0gRmluaXNoIFZpZXcgQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBAaWYodm0uaGFzSW5saW5lRmlsdGVycygpICYmICh0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpKSkge1xuICAgICAgICAgIDxheC1zZWFyY2gtYm94IFtjbGFzcy5jb2xsYXBzZWQtc2VhcmNoLWJveF09XCJzZWFyY2hCYXJTaG93bigpXCIgY2xhc3M9XCJheC10cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luYykgKyB2bS5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVwiXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiPjxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+PC9heC1zZWFyY2gtYm94PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIExpbmUgMiAgLS0tLS0tLS0+XG5cbiAgICAgICAgPCEtLS0tLSBGaW5pc2ggVG9vbGJhciAgLS0tLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tLS0tIEJlZ2luIERhdGFUYWJsZSAgLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LXB4LTYgYXgtcHktNiBheC1wdC0wIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgIDxheC1kYXRhLXRhYmxlICNncmlkIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgY2xhc3M9XCJheC1mbGV4LTFcIiBbcGFnaW5nXT1cInRydWVcIiBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXG4gICAgICAgIFtsb2FkaW5nXT1cInsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1cIiBbZGF0YVNvdXJjZV09XCJ2bS5kYXRhU291cmNlXCJcbiAgICAgICAgKHNlbGVjdGVkUm93c0NoYW5nZSk9XCJoYW5kbGVTZWxlY3RlZFJvd3NDaGFuZ2UoJGV2ZW50KVwiIChvblJvd0RiQ2xpY2spPVwiaGFuZGxlUm93RGJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxheC1zZWxlY3QtY29sdW1uIGZpeGVkPVwic3RhcnRcIiBbd2lkdGhdPVwiJzUwcHgnXCI+PC9heC1zZWxlY3QtY29sdW1uPlxuICAgICAgICBAZm9yKGNvbCBvZiB2bS5jb2x1bW5zKCk7dHJhY2sgY29sLm5hbWUpIHsgQGlmKGNvbC52aXNpYmxlKSB7XG4gICAgICAgIDxheHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlciBbY2FwdGlvbl09XCJjb2wudGl0bGVcIiBbbm9kZV09XCJjb2wubm9kZSgpXCI+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICAgICAgfSB9XG4gICAgICAgIDxheC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbiBmaXhlZD1cImVuZFwiIFt3aWR0aF09XCInNjBweCdcIiBbaXRlbXNdPVwiZ2V0RHJvcGRvd25Sb3dJdGVtc1wiXG4gICAgICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NvbW1hbmRDbGljaygkZXZlbnQpXCI+PC9heC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbj5cbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tLS0tIEZpbmlzaCBEYXRhVGFibGUgIC0tLS0tPlxuICA8L2F4LWNvbnRlbnQ+XG5cbiAgPGF4LWRyYXdlciAoY29sbGFwc2VkQ2hhbmdlKT1cImNsb3NlRHJhd2VyKCdjb2x1bW5zJywgJGV2ZW50KVwiICNjb2x1bW5zRHJhd2VyIGxvY2F0aW9uPVwiZW5kXCIgW21vZGVdPVwiJ292ZXJsYXknXCI+XG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LVs4NXZ3XSBtZDpheC13LVs0NXZ3XSBsZzpheC13LVszNXZ3XSAyeGw6YXgtdy1bMjB2d10gYXgtYm9yZGVyLWVcIj5cbiAgICAgIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zIFt2aWV3TW9kZWxdPVwidm1cIiAob25DbG9zZWQpPVwiY29sdW1uc0RyYXdlci5jbG9zZSgpXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zPlxuICAgIDwvYXgtY29udGVudD5cbiAgPC9heC1kcmF3ZXI+XG4gIDxheC1kcmF3ZXIgKGNvbGxhcHNlZENoYW5nZSk9XCJjbG9zZURyYXdlcignY29uZGl0aW9ucycsICRldmVudClcIiAjY29uZGl0aW9uc0RyYXdlciBsb2NhdGlvbj1cImVuZFwiIFttb2RlXT1cIidvdmVybGF5J1wiPlxuICAgIDxheC1jb250ZW50IGNsYXNzPVwiYXgtdy1bODV2d10gbWQ6YXgtdy1bNDV2d10gbGc6YXgtdy1bMzV2d10gMnhsOmF4LXctWzI1dnddIGF4LWJvcmRlci1lXCI+XG4gICAgICA8IS0tIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb25kaXRpb25zIFtsb2FkZXJdPVwibG9hZGVyXCJcbiAgICAgICAgKG9uQ2xvc2VkKT1cImNvbmRpdGlvbnNEcmF3ZXIuY2xvc2UoKVwiPjwvYXhwLWxpc3Qtdmlldy1vcHRpb24tY29uZGl0aW9ucz4gLS0+XG4gICAgPC9heC1jb250ZW50PlxuICA8L2F4LWRyYXdlcj5cbiAgPGF4LWRyYXdlciAoY29sbGFwc2VkQ2hhbmdlKT1cImNsb3NlRHJhd2VyKCdzb3J0cycsICRldmVudClcIiAjc29ydHNEcmF3ZXIgbG9jYXRpb249XCJlbmRcIiBbbW9kZV09XCInb3ZlcmxheSdcIj5cbiAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LXctWzg1dnddIG1kOmF4LXctWzQ1dnddIGxnOmF4LXctWzM1dnddIDJ4bDpheC13LVsyMHZ3XSBheC1ib3JkZXItZVwiPlxuICAgICAgPGF4cC1saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcgKG9uQ2xvc2VkKT1cInNvcnRzRHJhd2VyLmNsb3NlKClcIiBbdmlld01vZGVsXT1cInZtXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nPlxuICAgIDwvYXgtY29udGVudD5cbiAgPC9heC1kcmF3ZXI+XG48L2F4LWRyYXdlci1jb250YWluZXI+Il19
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90aGVtZXMvZGVmYXVsdC9zcmMvbGliL2xheW91dHMvZW50aXR5LWxheW91dHMvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcvZW50aXR5LW1hc3Rlci1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsR0FJbEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSSxPQUFPLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxN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LGlCQUFpQix1Y0FDakIsYUFBYSx5SUFDYixnQkFBZ0Isd1BBQ2hCLGVBQWUsOEJBQ2YsWUFBWSw4QkFDWixtQkFBbUIsOEJBQ25CLGNBQWMsNlVBQ2QsY0FBYyw4QkFDZCxlQUFlLDhCQUNmLFlBQVksOEJBQ1osZUFBZSw4QkFDZixtQkFBbUIsaVBBQ25CLGlCQUFpQiw0WEFDakIsaUJBQWlCO2dCQUNqQixFQUFFO2dCQUNGLHNCQUFzQiwwTkFDdEIsZ0JBQWdCLCtCQUNoQixrQkFBa0Isb0xBRWxCLGFBQWE7Z0JBQ2IsRUFBRTtnQkFDRixrQ0FBa0MsdUhBQ2xDLGlDQUFpQyxzSEFDakMsbUJBQW1COzsyRkFJVixnQ0FBZ0M7a0JBckM1QyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsRUFBRTt3QkFDRixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLGFBQWE7d0JBQ2IsRUFBRTt3QkFDRixrQ0FBa0M7d0JBQ2xDLGlDQUFpQzt3QkFDakMsbUJBQW1CO3FCQUNwQixjQUNXLElBQUk7a0hBaUJHLElBQUk7c0JBQXRCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQWN0aW9uU2hlZXRNb2R1bGUsIEFYQWN0aW9uU2hlZXRTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQge1xuICBBWERhdGFUYWJsZUNvbXBvbmVudCxcbiAgQVhEYXRhVGFibGVNb2R1bGUsXG4gIEFYRGF0YVRhYmxlUm93RGJDbGljayxcbiAgQVhSb3dDb21tYW5kSXRlbSxcbiAgQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcbmltcG9ydCB7IEFYRHJhd2VyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RyYXdlcic7XG5pbXBvcnQgeyBBWFBsYXRmb3JtIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnJlYWRjcnVtYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnJlYWRjcnVtYnMnO1xuaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhEaWFsb2dNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGlhbG9nJztcbmltcG9ydCB7IEFYRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZHJvcGRvd24nO1xuaW1wb3J0IHsgQVhGb3JtTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Zvcm0nO1xuaW1wb3J0IHsgQVhMb2FkaW5nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2xvYWRpbmcnO1xuaW1wb3J0IHsgQVhQb3BvdmVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BvcG92ZXInO1xuaW1wb3J0IHsgQVhTZWFyY2hCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VhcmNoLWJveCc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBBWFBBdXRoTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7XG4gIEFYUEFkbWluTGF5b3V0U3RhdGUsXG4gIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gIEFYUExheW91dFNlcnZpY2UsXG4gIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgZ2V0Q2hpbGREcmF3ZXIsXG4gIGlzU21hbGxTY3JlZW4sXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3TW9kZWwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMvbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBMaXN0Vmlld09wdGlvblNvcnRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xpc3Qtdmlldy1vcHRpb24tc29ydGluZy9saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICdlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydlbnRpdHktbWFzdGVyLWxpc3Qtdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWERyb3Bkb3duTW9kdWxlLFxuICAgIEFYUG9wb3Zlck1vZHVsZSxcbiAgICBBWEZvcm1Nb2R1bGUsXG4gICAgQVhBY3Rpb25TaGVldE1vZHVsZSxcbiAgICBBWERyYXdlck1vZHVsZSxcbiAgICBBWERpYWxvZ01vZHVsZSxcbiAgICBBWExvYWRpbmdNb2R1bGUsXG4gICAgQVhUYWJzTW9kdWxlLFxuICAgIEFYVG9vbHRpcE1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYU2VhcmNoQm94TW9kdWxlLFxuICAgIEFYRGF0YVRhYmxlTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIEFYUEF1dGhNb2R1bGUsXG4gICAgLy9cbiAgICBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50LFxuICAgIEFYUExpc3RWaWV3T3B0aW9uU29ydGluZ0NvbXBvbmVudCxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEFYUEVudGl0eU1hc3Rlckxpc3RWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBsYXlvdXQgPSBpbmplY3QoQVhQTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgYWN0aXZlUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB2bSA9IHRoaXMuYWN0aXZlUm91dGUuc25hcHNob3QuZGF0YVsndm0nXSBhcyBBWFBFbnRpdHlNYXN0ZXJMaXN0Vmlld01vZGVsO1xuXG4gIC8vXG4gIHByaXZhdGUgc3RvcmUgPSBpbmplY3QoU3RvcmU8QVhQQWRtaW5MYXlvdXRTdGF0ZT4pO1xuICBwcm90ZWN0ZWQgaXNTTSA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzU21hbGxTY3JlZW4oKSk7XG4gIHByb3RlY3RlZCBpc09wZW4gPSB0aGlzLnN0b3JlLnNlbGVjdChnZXRDaGlsZERyYXdlcigpKTtcbiAgLy9cbiAgcHJvdGVjdGVkIGZvY3VzZWRSb3c6IGFueTtcbiAgLy9cbiAgcHJvdGVjdGVkIHNlYXJjaEJhclNob3duID0gc2lnbmFsKHRydWUpO1xuXG4gIEBWaWV3Q2hpbGQoJ2dyaWQnKSBncmlkITogQVhEYXRhVGFibGVDb21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhY3Rpb25TaGVldFNlcnZpY2U6IEFYQWN0aW9uU2hlZXRTZXJ2aWNlLCBwcm90ZWN0ZWQgcGxhdGZvcm06IEFYUGxhdGZvcm0pIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JpZC5zZWxlY3RlZFJvd3MgPSB0aGlzLnZtLnNlbGVjdGVkSXRlbXMoKTtcbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICAgIC8vXG4gICAgdGhpcy52bS5ldmVudHMkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgaWYgKGUuYWN0aW9uID09ICdyZWZyZXNoJykge1xuICAgICAgICB0aGlzLmdyaWQucmVmcmVzaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudm0uc2V0VmlldygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlRHJhd2VyKG5hbWU6IHN0cmluZywgY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgaWYgKGNvbGxhcHNlZCkge1xuICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgIGNhc2UgJ2NvbmRpdGlvbnMnOlxuICAgICAgICAgIC8vdGhpcy5sb2FkZXIucmVzZXRDb25kaXRpb25zKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2NvbHVtbnMnOlxuICAgICAgICAgIHRoaXMudm0uYXBwbHlDb2x1bW5zKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NvcnRzJzpcbiAgICAgICAgICAvL3RoaXMudm0ucmVzZXRTb3J0cygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZVNlYXJjaFZhbHVlKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQpIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy52bS5hcHBseUlubGluZUZpbHRlcihlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRyb3Bkb3duUm93SXRlbXMgPSBjb21wdXRlZDxBWFJvd0NvbW1hbmRJdGVtW10+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy52bS5yb3dBY3Rpb25zKCkubWFwKFxuICAgICAgKGMpID0+XG4gICAgICAgICh7XG4gICAgICAgICAgaWNvbjogYy5pY29uLFxuICAgICAgICAgIG5hbWU6IGMubmFtZSxcbiAgICAgICAgICB0ZXh0OiBjLnRpdGxlLFxuICAgICAgICAgIGNvbG9yOiBjLmNvbG9yLFxuICAgICAgICB9IGFzIEFYUm93Q29tbWFuZEl0ZW0pXG4gICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0RiQ2xpY2soZTogQVhEYXRhVGFibGVSb3dEYkNsaWNrKSB7XG4gICAgY29uc3QgZDogQVhSb3dDb21tYW5kSXRlbUNsaWNrRXZlbnQgPSB7XG4gICAgICBjb21wb25lbnQ6IGUuY29tcG9uZW50LFxuICAgICAgbmFtZTogdGhpcy5kcm9wZG93blJvd0l0ZW1zKClbMF0ubmFtZSxcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlUm93Q29tbWFuZENsaWNrKGQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERyb3Bkb3duUm93SXRlbXMgPSAocm93RGF0YTogdW5rbm93bik6IFByb21pc2U8QVhSb3dDb21tYW5kSXRlbVtdPiA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmRyb3Bkb3duUm93SXRlbXMoKSk7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVJvd0NvbW1hbmRDbGljayhlOiBBWFJvd0NvbW1hbmRJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMudm0uZXhlY3V0ZUNvbW1hbmQoZS5uYW1lLCBlLmRhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNlbGVjdGVkUm93c0NoYW5nZShyb3dzOiB1bmtub3duW10pIHtcbiAgICB0aGlzLnZtLnNlbGVjdGVkSXRlbXMuc2V0KHJvd3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1ha2VSZXNwb25zaXZlPHQ+KHZhbHVlOiB0KTogdCB8IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucGxhdGZvcm0uaXMoJ01vYmlsZScpIHx8IHRoaXMucGxhdGZvcm0uaXMoJ1NNJykpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVTZWFyY2hCYXIoKSB7XG4gICAgdGhpcy5zZWFyY2hCYXJTaG93bi5zZXQoIXRoaXMuc2VhcmNoQmFyU2hvd24oKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnZtLmRlc3Ryb3koKTtcbiAgfVxufVxuIiwiPGF4LWRyYXdlci1jb250YWluZXI+XG4gIDxheC1jb250ZW50IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1vdmVyZmxvdy1oaWRkZW5cIiAjY29udGVudD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTQgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LWdhcC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCIgI3N0aWNreT1cImF4cFN0aWNreVwiXG4gICAgICAgIFtheHBTdGlja3ldPVwiJ2F4LWJnLXN1cmZhY2UgYXgtcHgtNiBheC1weS0zIC1heC1teC02IGF4LXNoYWRvdy14bCdcIiBbc3RpY2t5UGFyZW50XT1cImNvbnRlbnQuZ2V0SG9zdEVsZW1lbnQoKVwiPlxuICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIFRvb2xiYXIgIC0tLS0tLS0tPlxuICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIExpbmUgMSAgLS0tLS0tLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWp1c3RpZnktYmV0d2VlbiBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIFRpdGxlICAtLS0tLS0tLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LXRyYW5zaXRpb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQteGwgbWQ6YXgtdGV4dC0zeGwgYXgtZm9udC1ib2xkXCI+e3sgdm0udGl0bGUoKSB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYodm0uZGVzY3JpcHRpb24oKSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LW5ldXRyYWwtNjAwXCIgW2NsYXNzLmF4LWhpZGRlbl09XCJzdGlja3kuaXNTdGlja3lcIj57eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cImlzU00gfCBhc3luY1wiPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGl2aWRlcj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCBheC10ZXh0LXhzIGF4LW14LTJcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICBAZm9yKGIgb2Ygdm0uYmVhcmRjcnVtYnMoKTt0cmFjayAkaW5kZXg7bGV0IGxhc3Q9JGxhc3QpIHtcbiAgICAgICAgICAgICAgICA8YXgtYnJlYWRjcnVtYnMtaXRlbSBbYWN0aXZlXT1cImxhc3RcIiBbY2xhc3MuIWF4LWZvbnQtc2VtaWJvbGRdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiIFtyb3V0ZXJMaW5rXT1cImIudXJsXCI+XG4gICAgICAgICAgICAgICAgICBAaWYoYi5pY29uKSB7XG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAge3sgYi50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnMtaXRlbT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgPCEtLSBCZWdpbiBBY3Rpb24gTWVudSAgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnByaW1hcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8YXgtYnV0dG9uIFt0ZXh0XT1cInRyLnRpdGxlXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIH0gQGlmKHZtLnNlY29uZGFyeUFjdGlvbnMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogKCdhY3Rpb25zJyB8IHRyYW5zbGF0ZSB8IGFzeW5jKVwiIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICAgICAgQGZvcih0ciBvZiB2bS5zZWNvbmRhcnlBY3Rpb25zKCk7dHJhY2sgJGluZGV4O2xldCBmaXJzdD0kZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIEBpZih0ci5zZXBhcmF0ZWQgJiYgISRmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICA8YXgtZGl2aWRlcj48L2F4LWRpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFt0ZXh0XT1cInRyLnRpdGxlXCIgY2xhc3M9XCJheC1mb250LXNlbWlib2xkIGF4LXRleHQte3sgdHIuY29sb3IgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1pY29uIFtpY29uXT1cInRyLmljb25cIj4gPC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICA8L2F4LWRyb3Bkb3duLXBhbmVsPlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBGaW5pc2ggQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBMaW5lIDEgIC0tLS0tLS0tPlxuXG4gICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gTGluZSAyIC0tLS0tLS0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1zdGFydCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gU2VsZWN0aW9uICAtLS0tLS0tLT5cblxuICAgICAgICAgICAgQGlmKHZtLmhhc1NlbGVjdGVkSXRlbXMoKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtY2VudGVyIGF4LWgtMTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtYm9sZFwiPiB7eyB2bS5zZWxlY3RlZEl0ZW1zKCkubGVuZ3RoIH19IEl0ZW1zIFNlbGVjdGVkIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInZtLmNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdGV4dC1zbSBheC10ZXh0LXByaW1hcnkgZGFyazpheC10ZXh0LXByaW1hcnktMzAwIGF4LXVuZGVybGluZSBheC1jdXJzb3ItcG9pbnRlclwiPkNsZWFyXG4gICAgICAgICAgICAgICAgSXRlbXM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLS0tLS0tLSBGaW5pc2ggU2VsZWN0aW9uICAtLS0tLS0tLT5cblxuICAgICAgICAgICAgfSBAZWxzZSB7XG5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gQmVnaW4gVmlldyAgLS0tLS0tLS0+XG5cbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwidm0udmlldygpLnRpdGxlXCIgI3ZpZXdzIGNvbG9yPVwiZ2hvc3RcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWV5ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYXJldC1kb3duXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtLWxpc3QgY2xhc3M9XCJheC1iZy1zdXJmYWNlXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtdGl0bGUgY2xhc3M9XCJheC1mb250LWJvbGQgYXgtb3BhY2l0eS0xMDBcIj57eyAnZW50aXR5LnB1YmxpYy12aWV3JyB8IHRyYW5zbGF0ZSB8IGFzeW5jXG4gICAgICAgICAgICAgICAgICAgIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSAqbmdGb3I9XCJsZXQgdiBvZiB2bS52aWV3cygpXCIgW3RleHRdPVwidi50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1iZy1vbi1zdXJmYWNlXT1cInZtLnZpZXcoKSA9PSB2XCIgKG9uQ2xpY2spPVwidm0uc2V0Vmlldyh2Lm5hbWUpXCI+PC9heC1idXR0b24taXRlbT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGF4LXRpdGxlIGNsYXNzPVwiYXgtZm9udC1ib2xkIGF4LW9wYWNpdHktMTAwXCIgKm5nSWY9XCJoYXNDdXN0b21WaWV3cyQgfCBhc3luY1wiPkNyZWF0ZWQgYnkgbWU8L2F4LXRpdGxlPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24taXRlbSBjbGFzcz1cImF4LXBlLTQgYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW5cIiAqbmdGb3I9XCJsZXQgdiBvZiBjdXN0b21WaWV3cyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICBbdGV4dF09XCJ2LnRpdGxlXCIgW2NsYXNzLmF4LWJnLW9uLXN1cmZhY2VdPVwiKHZpZXckIHwgYXN5bmMpID09IHZcIiAob25DbGljayk9XCJsb2FkZXIuc2V0Vmlldyh2Lm5hbWUpXCI+XG4gICAgICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIChvbkNsaWNrKT1cInVwZGF0ZVZpZXdQb3B1cCgkZXZlbnQsIHYpXCIgY2xhc3M9XCJheC14c1wiIGxvb2s9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYXIgZmEtZWRpdFwiPiA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPC9heC1idXR0b24taXRlbT4gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKmZlYXR1cmU9XCInYXhwLWVudGl0eS1saXN0LWN1c3RvbS12aWV3J1wiPlxuICAgICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJBZGQgQ3VzdG9tIFZpZXdcIiAob25DbGljayk9XCJhZGRDdXN0b21WaWV3UG9wdXAoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXByaW1hcnlcIj48L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIFZpZXcgIC0tLS0tLS0tPlxuXG4gICAgICAgICAgICA8IS0tLS0tLS0tIEJlZ2luIElubGluZSBTZWFyY2ggICAtLS0tLS0tLT5cbiAgICAgICAgICAgIEBpZih2bS5oYXNJbmxpbmVGaWx0ZXJzKCkgJiYgISh0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctNzJcIj5cbiAgICAgICAgICAgICAgPGF4LXNlYXJjaC1ib3hcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luYykgKyB2bS5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVwiXG4gICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImhhbmRsZUNoYW5nZVNlYXJjaFZhbHVlKCRldmVudClcIj48YXgtY2xlYXItYnV0dG9uPjwvYXgtY2xlYXItYnV0dG9uPjwvYXgtc2VhcmNoLWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfSB9XG4gICAgICAgICAgICA8IS0tLS0tLS0tIEZpbmlzaCBJbmxpbmUgU2VhcmNoIC0tLS0tLS0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gQmVnaW4gVmlldyBBY3Rpb24gTWVudSAgLS0+XG4gICAgICAgICAgQGlmKCF2bS5oYXNTZWxlY3RlZEl0ZW1zKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtM1wiPlxuICAgICAgICAgICAgQGlmKHZtLmhhc0lubGluZUZpbHRlcnMoKSAmJiAodGhpcy5wbGF0Zm9ybS5pcygnTW9iaWxlJykgfHwgdGhpcy5wbGF0Zm9ybS5pcygnU00nKSkpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gKG9uQ2xpY2spPVwidG9nZ2xlU2VhcmNoQmFyKClcIiBjb2xvcj1cImdob3N0XCI+IDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtc2VhcmNoXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPn1cblxuICAgICAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJtYWtlUmVzcG9uc2l2ZSgnZW50aXR5LmNvbHVtbnMnIHwgdHJhbnNsYXRlIHwgYXN5bmMpXCIgY29sb3I9XCJnaG9zdFwiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImNvbHVtbnNEcmF3ZXIub3BlbigpXCI+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1iYXJzXCI+PC9pPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgICA8YXgtYmFkZ2UgW3RleHRdPVwibWFrZVJlc3BvbnNpdmUodm0udmlzaWJsZUNvbHVtbkNvdW50KCkudG9TdHJpbmcoKSlcIiBjb2xvcj1cInByaW1hcnlcIj48L2F4LWJhZGdlPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPGF4LWJ1dHRvbiB0ZXh0PVwiRmlsdGVyc1wiIGNvbG9yPVwiZ2hvc3RcIiAob25DbGljayk9XCJjb25kaXRpb25zRHJhd2VyLm9wZW4oKVwiXG4gICAgICAgICAgICAgICpmZWF0dXJlPVwiJ2F4cC1lbnRpdHktbGlzdC1hZHZhbmNlLWZpbHRlcidcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXNsaWRlcnNcIj48L2k+XG4gICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICA8YXgtc3VmZml4PlxuICAgICAgICAgICAgICAgIDxheC1iYWRnZSB0ZXh0PVwiM1wiIGNvbG9yPVwicHJpbWFyeVwiPjwvYXgtYmFkZ2U+XG4gICAgICAgICAgICAgIDwvYXgtc3VmZml4PlxuICAgICAgICAgICAgPC9heC1idXR0b24+XG5cbiAgICAgICAgICAgIEBpZih2bS5jYW5Tb3J0KCkpIHtcbiAgICAgICAgICAgIDxheC1idXR0b24gW3RleHRdPVwibWFrZVJlc3BvbnNpdmUoJ2VudGl0eS5zb3J0JyB8IHRyYW5zbGF0ZSB8IGFzeW5jKVwiIGNvbG9yPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAob25DbGljayk9XCJzb3J0c0RyYXdlci5vcGVuKClcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWJhcnMtc29ydFwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICAgIEBpZih2bS5zb3J0ZWRDb3VudCgpKSB7XG4gICAgICAgICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWJhZGdlIFt0ZXh0XT1cIm1ha2VSZXNwb25zaXZlKHZtLnNvcnRlZENvdW50KCkudG9TdHJpbmcoKSlcIiBjb2xvcj1cInByaW1hcnlcIj48L2F4LWJhZGdlPlxuICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDwhLS0gRmluaXNoIFZpZXcgQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICBAaWYodm0uaGFzSW5saW5lRmlsdGVycygpICYmICh0aGlzLnBsYXRmb3JtLmlzKCdNb2JpbGUnKSB8fCB0aGlzLnBsYXRmb3JtLmlzKCdTTScpKSkge1xuICAgICAgICAgIDxheC1zZWFyY2gtYm94IFtjbGFzcy5jb2xsYXBzZWQtc2VhcmNoLWJveF09XCJzZWFyY2hCYXJTaG93bigpXCIgY2xhc3M9XCJheC10cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCd3aWRnZXQubG9va3VwLnNlYXJjaCcgfCB0cmFuc2xhdGUgfCBhc3luYykgKyB2bS5pbmxpbmVGaWx0ZXJzUGxhY2Vob2xkZXJzKCkuam9pbignLCAnKVwiXG4gICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlQ2hhbmdlU2VhcmNoVmFsdWUoJGV2ZW50KVwiPjxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+PC9heC1zZWFyY2gtYm94PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0tLS0tLS0gRmluaXNoIExpbmUgMiAgLS0tLS0tLS0+XG5cbiAgICAgICAgPCEtLS0tLSBGaW5pc2ggVG9vbGJhciAgLS0tLS0+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tLS0tIEJlZ2luIERhdGFUYWJsZSAgLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC0xIGF4LXB4LTYgYXgtcHktNiBheC1wdC0wIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgIDxheC1kYXRhLXRhYmxlICNncmlkIFtzaG93Rm9vdGVyXT1cImZhbHNlXCIgY2xhc3M9XCJheC1mbGV4LTFcIiBbcGFnaW5nXT1cInRydWVcIiBbZmV0Y2hEYXRhTW9kZV09XCInbWFudWFsJ1wiXG4gICAgICAgIFtsb2FkaW5nXT1cInsgZW5hYmxlZDogdHJ1ZSwgYW5pbWF0aW9uOiB0cnVlIH1cIiBbZGF0YVNvdXJjZV09XCJ2bS5kYXRhU291cmNlXCJcbiAgICAgICAgKHNlbGVjdGVkUm93c0NoYW5nZSk9XCJoYW5kbGVTZWxlY3RlZFJvd3NDaGFuZ2UoJGV2ZW50KVwiIChvblJvd0RiQ2xpY2spPVwiaGFuZGxlUm93RGJDbGljaygkZXZlbnQpXCI+XG4gICAgICAgIDxheC1zZWxlY3QtY29sdW1uIGZpeGVkPVwic3RhcnRcIiBbd2lkdGhdPVwiJzUwcHgnXCI+PC9heC1zZWxlY3QtY29sdW1uPlxuICAgICAgICBAZm9yKGNvbCBvZiB2bS5jb2x1bW5zKCk7dHJhY2sgY29sLm5hbWUpIHsgQGlmKGNvbC52aXNpYmxlKSB7XG4gICAgICAgIDxheHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlciBbY2FwdGlvbl09XCJjb2wudGl0bGVcIiBbbm9kZV09XCJjb2wubm9kZSgpXCI+PC9heHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcj5cbiAgICAgICAgfSB9XG4gICAgICAgIDxheC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbiBmaXhlZD1cImVuZFwiIFt3aWR0aF09XCInNjBweCdcIiBbaXRlbXNdPVwiZ2V0RHJvcGRvd25Sb3dJdGVtc1wiXG4gICAgICAgICAgKG9uSXRlbUNsaWNrKT1cImhhbmRsZVJvd0NvbW1hbmRDbGljaygkZXZlbnQpXCI+PC9heC1kcm9wZG93bi1jb21tYW5kLWNvbHVtbj5cbiAgICAgIDwvYXgtZGF0YS10YWJsZT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tLS0tIEZpbmlzaCBEYXRhVGFibGUgIC0tLS0tPlxuICA8L2F4LWNvbnRlbnQ+XG5cbiAgPGF4LWRyYXdlciAoY29sbGFwc2VkQ2hhbmdlKT1cImNsb3NlRHJhd2VyKCdjb2x1bW5zJywgJGV2ZW50KVwiICNjb2x1bW5zRHJhd2VyIGxvY2F0aW9uPVwiZW5kXCIgW21vZGVdPVwiJ292ZXJsYXknXCI+XG4gICAgPGF4LWNvbnRlbnQgY2xhc3M9XCJheC13LVs4NXZ3XSBtZDpheC13LVs0NXZ3XSBsZzpheC13LVszNXZ3XSAyeGw6YXgtdy1bMjB2d10gYXgtYm9yZGVyLWVcIj5cbiAgICAgIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zIFt2aWV3TW9kZWxdPVwidm1cIiAob25DbG9zZWQpPVwiY29sdW1uc0RyYXdlci5jbG9zZSgpXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zPlxuICAgIDwvYXgtY29udGVudD5cbiAgPC9heC1kcmF3ZXI+XG4gIDxheC1kcmF3ZXIgKGNvbGxhcHNlZENoYW5nZSk9XCJjbG9zZURyYXdlcignY29uZGl0aW9ucycsICRldmVudClcIiAjY29uZGl0aW9uc0RyYXdlciBsb2NhdGlvbj1cImVuZFwiIFttb2RlXT1cIidvdmVybGF5J1wiPlxuICAgIDxheC1jb250ZW50IGNsYXNzPVwiYXgtdy1bODV2d10gbWQ6YXgtdy1bNDV2d10gbGc6YXgtdy1bMzV2d10gMnhsOmF4LXctWzI1dnddIGF4LWJvcmRlci1lXCI+XG4gICAgICA8IS0tIDxheHAtbGlzdC12aWV3LW9wdGlvbi1jb25kaXRpb25zIFtsb2FkZXJdPVwibG9hZGVyXCJcbiAgICAgICAgKG9uQ2xvc2VkKT1cImNvbmRpdGlvbnNEcmF3ZXIuY2xvc2UoKVwiPjwvYXhwLWxpc3Qtdmlldy1vcHRpb24tY29uZGl0aW9ucz4gLS0+XG4gICAgPC9heC1jb250ZW50PlxuICA8L2F4LWRyYXdlcj5cbiAgPGF4LWRyYXdlciAoY29sbGFwc2VkQ2hhbmdlKT1cImNsb3NlRHJhd2VyKCdzb3J0cycsICRldmVudClcIiAjc29ydHNEcmF3ZXIgbG9jYXRpb249XCJlbmRcIiBbbW9kZV09XCInb3ZlcmxheSdcIj5cbiAgICA8YXgtY29udGVudCBjbGFzcz1cImF4LXctWzg1dnddIG1kOmF4LXctWzQ1dnddIGxnOmF4LXctWzM1dnddIDJ4bDpheC13LVsyMHZ3XSBheC1ib3JkZXItZVwiPlxuICAgICAgPGF4cC1saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcgKG9uQ2xvc2VkKT1cInNvcnRzRHJhd2VyLmNsb3NlKClcIiBbdmlld01vZGVsXT1cInZtXCI+PC9heHAtbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nPlxuICAgIDwvYXgtY29udGVudD5cbiAgPC9heC1kcmF3ZXI+XG48L2F4LWRyYXdlci1jb250YWluZXI+Il19