@ajf/material 13.0.0-next.2 → 13.0.0-rc.1

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 (450) hide show
  1. package/barcode/barcode-module.d.ts +11 -21
  2. package/barcode/barcode.d.ts +3 -0
  3. package/barcode/barcode_public_index.d.ts +4 -0
  4. package/barcode/index.d.ts +19 -1
  5. package/barcode/package.json +6 -6
  6. package/calendar/calendar-module.d.ts +10 -21
  7. package/calendar/calendar.d.ts +3 -0
  8. package/calendar/calendar_public_index.d.ts +4 -0
  9. package/calendar/index.d.ts +19 -1
  10. package/calendar/package.json +6 -6
  11. package/checkbox-group/checkbox-group-item.d.ts +3 -0
  12. package/checkbox-group/checkbox-group-module.d.ts +9 -21
  13. package/checkbox-group/checkbox-group_public_index.d.ts +4 -0
  14. package/checkbox-group/index.d.ts +19 -1
  15. package/checkbox-group/package.json +6 -6
  16. package/esm2020/barcode/barcode-module.mjs +63 -0
  17. package/esm2020/barcode/barcode.mjs +51 -0
  18. package/esm2020/barcode/barcode_public_index.mjs +5 -0
  19. package/esm2020/barcode/index.mjs +23 -0
  20. package/{esm2015/barcode/public-api.js → esm2020/barcode/public-api.mjs} +0 -0
  21. package/esm2020/calendar/calendar-module.mjs +43 -0
  22. package/esm2020/calendar/calendar.mjs +49 -0
  23. package/esm2020/calendar/calendar_public_index.mjs +5 -0
  24. package/esm2020/calendar/index.mjs +23 -0
  25. package/{esm2015/calendar/public-api.js → esm2020/calendar/public-api.mjs} +0 -0
  26. package/esm2020/checkbox-group/checkbox-group-item.mjs +51 -0
  27. package/esm2020/checkbox-group/checkbox-group-module.mjs +42 -0
  28. package/esm2020/checkbox-group/checkbox-group_public_index.mjs +5 -0
  29. package/{esm2015/report-builder/image-filter.js → esm2020/checkbox-group/index.mjs} +2 -11
  30. package/{esm2015/checkbox-group/public-api.js → esm2020/checkbox-group/public-api.mjs} +0 -0
  31. package/esm2020/form-builder/branch-line.mjs +68 -0
  32. package/{esm2015/form-builder/choices-origin-data-source.js → esm2020/form-builder/choices-origin-data-source.mjs} +1 -1
  33. package/esm2020/form-builder/choices-origin-editor-dialog.mjs +40 -0
  34. package/esm2020/form-builder/choices-origin-editor.mjs +83 -0
  35. package/esm2020/form-builder/condition-editor-dialog.mjs +38 -0
  36. package/esm2020/form-builder/condition-editor.mjs +147 -0
  37. package/esm2020/form-builder/form-builder-module.mjs +179 -0
  38. package/esm2020/form-builder/form-builder-service.mjs +766 -0
  39. package/{esm2015/form-builder/form-builder-utils.js → esm2020/form-builder/form-builder-utils.mjs} +4 -3
  40. package/esm2020/form-builder/form-builder.mjs +180 -0
  41. package/esm2020/form-builder/form-builder_public_index.mjs +5 -0
  42. package/esm2020/form-builder/index.mjs +23 -0
  43. package/esm2020/form-builder/node-entry.mjs +260 -0
  44. package/esm2020/form-builder/node-properties.mjs +960 -0
  45. package/esm2020/form-builder/node-type-entry.mjs +46 -0
  46. package/{esm2015/form-builder/operations.js → esm2020/form-builder/operations.mjs} +0 -0
  47. package/{esm2015/form-builder/public-api.js → esm2020/form-builder/public-api.mjs} +0 -0
  48. package/esm2020/form-builder/string-identifier-dialog.mjs +79 -0
  49. package/esm2020/form-builder/validation-condition-editor-dialog.mjs +41 -0
  50. package/esm2020/form-builder/warning-condition-editor-dialog.mjs +41 -0
  51. package/esm2020/forms/barcode-field.mjs +45 -0
  52. package/esm2020/forms/boolean-field.mjs +45 -0
  53. package/esm2020/forms/date-field.mjs +45 -0
  54. package/esm2020/forms/date-input-field.mjs +67 -0
  55. package/esm2020/forms/empty-field.mjs +43 -0
  56. package/esm2020/forms/field-service.mjs +116 -0
  57. package/esm2020/forms/field-warning-dialog.mjs +34 -0
  58. package/esm2020/forms/field.mjs +42 -0
  59. package/esm2020/forms/form.mjs +51 -0
  60. package/esm2020/forms/forms-module.mjs +208 -0
  61. package/esm2020/forms/forms_public_index.mjs +5 -0
  62. package/esm2020/forms/index.mjs +23 -0
  63. package/esm2020/forms/input-field.mjs +46 -0
  64. package/esm2020/forms/multiple-choice-field.mjs +54 -0
  65. package/{esm2015/forms/public-api.js → esm2020/forms/public-api.mjs} +0 -0
  66. package/esm2020/forms/range-field.mjs +46 -0
  67. package/esm2020/forms/single-choice-field.mjs +53 -0
  68. package/esm2020/forms/table-field.mjs +45 -0
  69. package/esm2020/forms/text-field.mjs +47 -0
  70. package/esm2020/forms/time-field.mjs +45 -0
  71. package/esm2020/forms/video-url-field.mjs +50 -0
  72. package/esm2020/forms/warning-alert-service.mjs +22 -0
  73. package/esm2020/image/image-module.mjs +40 -0
  74. package/esm2020/image/image.mjs +40 -0
  75. package/esm2020/image/image_public_index.mjs +5 -0
  76. package/esm2020/image/index.mjs +23 -0
  77. package/{esm2015/image/public-api.js → esm2020/image/public-api.mjs} +0 -0
  78. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  79. package/{esm2015/monaco-editor/auto-complete-item-model.js → esm2020/monaco-editor/auto-complete-item-model.mjs} +0 -0
  80. package/{esm2015/monaco-editor/autocomplete-singleton-model.js → esm2020/monaco-editor/autocomplete-singleton-model.mjs} +3 -2
  81. package/{esm2015/monaco-editor/editor-language-model.js → esm2020/monaco-editor/editor-language-model.mjs} +0 -0
  82. package/{esm2015/monaco-editor/editor-options-model.js → esm2020/monaco-editor/editor-options-model.mjs} +1 -1
  83. package/{esm2015/monaco-editor/editor-scrollbar-options.js → esm2020/monaco-editor/editor-scrollbar-options.mjs} +0 -0
  84. package/{esm2015/monaco-editor/editor-theme.js → esm2020/monaco-editor/editor-theme.mjs} +0 -0
  85. package/esm2020/monaco-editor/index.mjs +23 -0
  86. package/esm2020/monaco-editor/monaco-editor-module.mjs +37 -0
  87. package/esm2020/monaco-editor/monaco-editor.mjs +451 -0
  88. package/esm2020/monaco-editor/monaco-editor_public_index.mjs +5 -0
  89. package/{esm2015/monaco-editor/public-api.js → esm2020/monaco-editor/public-api.mjs} +0 -0
  90. package/esm2020/node-icon/index.mjs +23 -0
  91. package/esm2020/node-icon/node-icon-module.mjs +40 -0
  92. package/esm2020/node-icon/node-icon.mjs +35 -0
  93. package/esm2020/node-icon/node-icon_public_index.mjs +5 -0
  94. package/{esm2015/node-icon/public-api.js → esm2020/node-icon/public-api.mjs} +0 -0
  95. package/esm2020/page-slider/index.mjs +23 -0
  96. package/esm2020/page-slider/page-slider-module.mjs +59 -0
  97. package/esm2020/page-slider/page-slider.mjs +42 -0
  98. package/esm2020/page-slider/page-slider_public_index.mjs +5 -0
  99. package/{esm2015/page-slider/public-api.js → esm2020/page-slider/public-api.mjs} +0 -0
  100. package/esm2020/reports/chart-widget.mjs +38 -0
  101. package/esm2020/reports/formula-widget.mjs +37 -0
  102. package/esm2020/reports/image-container-widget.mjs +41 -0
  103. package/esm2020/reports/image-widget.mjs +37 -0
  104. package/esm2020/reports/index.mjs +23 -0
  105. package/{esm2015/reports/layout-widget.js → esm2020/reports/layout-widget.mjs} +0 -0
  106. package/esm2020/reports/map-widget.mjs +37 -0
  107. package/esm2020/reports/page-break-widget.mjs +37 -0
  108. package/{esm2015/reports/public-api.js → esm2020/reports/public-api.mjs} +0 -0
  109. package/esm2020/reports/report.mjs +39 -0
  110. package/esm2020/reports/reports-module.mjs +112 -0
  111. package/esm2020/reports/reports_public_index.mjs +5 -0
  112. package/esm2020/reports/table-widget.mjs +38 -0
  113. package/esm2020/reports/text-widget.mjs +38 -0
  114. package/esm2020/reports/widget.mjs +102 -0
  115. package/{esm2015/report-builder/operations.js → esm2020/time/index.mjs} +2 -2
  116. package/{esm2015/time/public-api.js → esm2020/time/public-api.mjs} +0 -0
  117. package/esm2020/time/time-module.mjs +41 -0
  118. package/esm2020/time/time.mjs +45 -0
  119. package/esm2020/time/time_public_index.mjs +5 -0
  120. package/fesm2015/barcode.mjs +162 -0
  121. package/fesm2015/barcode.mjs.map +1 -0
  122. package/fesm2015/calendar.mjs +138 -0
  123. package/fesm2015/calendar.mjs.map +1 -0
  124. package/fesm2015/checkbox-group.mjs +142 -0
  125. package/fesm2015/checkbox-group.mjs.map +1 -0
  126. package/fesm2015/form-builder.mjs +2922 -0
  127. package/fesm2015/form-builder.mjs.map +1 -0
  128. package/fesm2015/forms.mjs +1011 -0
  129. package/fesm2015/forms.mjs.map +1 -0
  130. package/fesm2015/image.mjs +127 -0
  131. package/fesm2015/image.mjs.map +1 -0
  132. package/fesm2015/{material.js → material.mjs} +1 -1
  133. package/{bundles/material.umd.js.map → fesm2015/material.mjs.map} +1 -1
  134. package/fesm2015/{monaco-editor.js → monaco-editor.mjs} +179 -124
  135. package/fesm2015/monaco-editor.mjs.map +1 -0
  136. package/fesm2015/node-icon.mjs +123 -0
  137. package/fesm2015/node-icon.mjs.map +1 -0
  138. package/fesm2015/page-slider.mjs +147 -0
  139. package/fesm2015/page-slider.mjs.map +1 -0
  140. package/fesm2015/reports.mjs +551 -0
  141. package/fesm2015/reports.mjs.map +1 -0
  142. package/fesm2015/time.mjs +133 -0
  143. package/fesm2015/time.mjs.map +1 -0
  144. package/fesm2020/barcode.mjs +162 -0
  145. package/fesm2020/barcode.mjs.map +1 -0
  146. package/fesm2020/calendar.mjs +138 -0
  147. package/fesm2020/calendar.mjs.map +1 -0
  148. package/fesm2020/checkbox-group.mjs +140 -0
  149. package/fesm2020/checkbox-group.mjs.map +1 -0
  150. package/fesm2020/form-builder.mjs +2921 -0
  151. package/fesm2020/form-builder.mjs.map +1 -0
  152. package/fesm2020/forms.mjs +985 -0
  153. package/fesm2020/forms.mjs.map +1 -0
  154. package/fesm2020/image.mjs +127 -0
  155. package/fesm2020/image.mjs.map +1 -0
  156. package/{report-builder/image-filter.d.ts → fesm2020/material.mjs} +9 -4
  157. package/fesm2020/material.mjs.map +1 -0
  158. package/fesm2020/monaco-editor.mjs +826 -0
  159. package/fesm2020/monaco-editor.mjs.map +1 -0
  160. package/fesm2020/node-icon.mjs +123 -0
  161. package/fesm2020/node-icon.mjs.map +1 -0
  162. package/fesm2020/page-slider.mjs +147 -0
  163. package/fesm2020/page-slider.mjs.map +1 -0
  164. package/fesm2020/reports.mjs +551 -0
  165. package/fesm2020/reports.mjs.map +1 -0
  166. package/fesm2020/time.mjs +133 -0
  167. package/fesm2020/time.mjs.map +1 -0
  168. package/form-builder/branch-line.d.ts +3 -0
  169. package/form-builder/choices-origin-editor-dialog.d.ts +3 -0
  170. package/form-builder/choices-origin-editor.d.ts +3 -0
  171. package/form-builder/condition-editor-dialog.d.ts +3 -0
  172. package/form-builder/condition-editor.d.ts +3 -0
  173. package/form-builder/form-builder-module.d.ts +41 -21
  174. package/form-builder/form-builder-service.d.ts +3 -0
  175. package/form-builder/form-builder.d.ts +3 -0
  176. package/form-builder/form-builder_public_index.d.ts +4 -0
  177. package/form-builder/index.d.ts +19 -12
  178. package/form-builder/node-entry.d.ts +3 -0
  179. package/form-builder/node-properties.d.ts +3 -0
  180. package/form-builder/node-type-entry.d.ts +3 -0
  181. package/form-builder/package.json +6 -6
  182. package/form-builder/string-identifier-dialog.d.ts +3 -0
  183. package/form-builder/validation-condition-editor-dialog.d.ts +3 -0
  184. package/form-builder/warning-condition-editor-dialog.d.ts +3 -0
  185. package/forms/barcode-field.d.ts +3 -0
  186. package/forms/boolean-field.d.ts +3 -0
  187. package/forms/date-field.d.ts +3 -0
  188. package/forms/date-input-field.d.ts +3 -0
  189. package/forms/empty-field.d.ts +3 -0
  190. package/forms/field-service.d.ts +3 -0
  191. package/forms/field-warning-dialog.d.ts +3 -21
  192. package/forms/field.d.ts +3 -0
  193. package/forms/form.d.ts +3 -0
  194. package/forms/forms-module.d.ts +43 -21
  195. package/forms/forms_public_index.d.ts +4 -0
  196. package/forms/index.d.ts +19 -5
  197. package/forms/input-field.d.ts +3 -0
  198. package/forms/multiple-choice-field.d.ts +3 -0
  199. package/forms/package.json +6 -6
  200. package/forms/range-field.d.ts +3 -0
  201. package/forms/single-choice-field.d.ts +3 -0
  202. package/forms/table-field.d.ts +3 -0
  203. package/forms/text-field.d.ts +3 -0
  204. package/forms/time-field.d.ts +3 -0
  205. package/forms/video-url-field.d.ts +3 -0
  206. package/forms/warning-alert-service.d.ts +3 -0
  207. package/image/image-module.d.ts +7 -21
  208. package/image/image.d.ts +3 -0
  209. package/image/image_public_index.d.ts +4 -0
  210. package/image/index.d.ts +19 -1
  211. package/image/package.json +6 -6
  212. package/monaco-editor/index.d.ts +19 -1
  213. package/monaco-editor/monaco-editor-module.d.ts +5 -21
  214. package/monaco-editor/monaco-editor.d.ts +3 -0
  215. package/monaco-editor/monaco-editor_public_index.d.ts +4 -0
  216. package/monaco-editor/package.json +6 -6
  217. package/node-icon/index.d.ts +19 -1
  218. package/node-icon/node-icon-module.d.ts +7 -21
  219. package/node-icon/node-icon.d.ts +3 -0
  220. package/node-icon/node-icon_public_index.d.ts +4 -0
  221. package/node-icon/package.json +6 -6
  222. package/package.json +111 -11
  223. package/page-slider/index.d.ts +19 -1
  224. package/page-slider/package.json +6 -6
  225. package/page-slider/page-slider-module.d.ts +10 -21
  226. package/page-slider/page-slider.d.ts +3 -0
  227. package/page-slider/page-slider_public_index.d.ts +4 -0
  228. package/reports/chart-widget.d.ts +3 -0
  229. package/reports/formula-widget.d.ts +3 -0
  230. package/reports/image-container-widget.d.ts +3 -0
  231. package/reports/image-widget.d.ts +3 -0
  232. package/reports/index.d.ts +19 -1
  233. package/reports/map-widget.d.ts +3 -0
  234. package/reports/package.json +6 -6
  235. package/reports/page-break-widget.d.ts +3 -0
  236. package/reports/report.d.ts +3 -0
  237. package/reports/reports-module.d.ts +24 -21
  238. package/reports/reports_public_index.d.ts +4 -0
  239. package/reports/table-widget.d.ts +3 -0
  240. package/reports/text-widget.d.ts +3 -0
  241. package/reports/widget.d.ts +9 -0
  242. package/time/index.d.ts +19 -1
  243. package/time/package.json +6 -6
  244. package/time/time-module.d.ts +8 -21
  245. package/time/time.d.ts +3 -0
  246. package/time/time_public_index.d.ts +4 -0
  247. package/barcode/index.metadata.json +0 -1
  248. package/bundles/material-barcode.umd.js +0 -433
  249. package/bundles/material-barcode.umd.js.map +0 -1
  250. package/bundles/material-calendar.umd.js +0 -435
  251. package/bundles/material-calendar.umd.js.map +0 -1
  252. package/bundles/material-checkbox-group.umd.js +0 -432
  253. package/bundles/material-checkbox-group.umd.js.map +0 -1
  254. package/bundles/material-form-builder.umd.js +0 -3558
  255. package/bundles/material-form-builder.umd.js.map +0 -1
  256. package/bundles/material-forms.umd.js +0 -968
  257. package/bundles/material-forms.umd.js.map +0 -1
  258. package/bundles/material-image.umd.js +0 -420
  259. package/bundles/material-image.umd.js.map +0 -1
  260. package/bundles/material-monaco-editor.umd.js +0 -755
  261. package/bundles/material-monaco-editor.umd.js.map +0 -1
  262. package/bundles/material-node-icon.umd.js +0 -415
  263. package/bundles/material-node-icon.umd.js.map +0 -1
  264. package/bundles/material-page-slider.umd.js +0 -424
  265. package/bundles/material-page-slider.umd.js.map +0 -1
  266. package/bundles/material-report-builder.umd.js +0 -5814
  267. package/bundles/material-report-builder.umd.js.map +0 -1
  268. package/bundles/material-reports.umd.js +0 -731
  269. package/bundles/material-reports.umd.js.map +0 -1
  270. package/bundles/material-time.umd.js +0 -424
  271. package/bundles/material-time.umd.js.map +0 -1
  272. package/bundles/material.umd.js +0 -40
  273. package/calendar/index.metadata.json +0 -1
  274. package/checkbox-group/index.metadata.json +0 -1
  275. package/esm2015/barcode/barcode-module.js +0 -50
  276. package/esm2015/barcode/barcode.externs.js +0 -6
  277. package/esm2015/barcode/barcode.js +0 -52
  278. package/esm2015/barcode/index.js +0 -5
  279. package/esm2015/calendar/calendar-module.js +0 -48
  280. package/esm2015/calendar/calendar.externs.js +0 -6
  281. package/esm2015/calendar/calendar.js +0 -55
  282. package/esm2015/calendar/index.js +0 -5
  283. package/esm2015/checkbox-group/checkbox-group-item.js +0 -51
  284. package/esm2015/checkbox-group/checkbox-group-module.js +0 -47
  285. package/esm2015/checkbox-group/checkbox-group.externs.js +0 -6
  286. package/esm2015/checkbox-group/index.js +0 -5
  287. package/esm2015/form-builder/branch-line.js +0 -73
  288. package/esm2015/form-builder/choices-origin-editor-dialog.js +0 -57
  289. package/esm2015/form-builder/choices-origin-editor.js +0 -78
  290. package/esm2015/form-builder/condition-editor-dialog.js +0 -59
  291. package/esm2015/form-builder/condition-editor.js +0 -143
  292. package/esm2015/form-builder/form-builder-module.js +0 -96
  293. package/esm2015/form-builder/form-builder-service.js +0 -764
  294. package/esm2015/form-builder/form-builder.externs.js +0 -6
  295. package/esm2015/form-builder/form-builder.js +0 -187
  296. package/esm2015/form-builder/index.js +0 -16
  297. package/esm2015/form-builder/node-entry.js +0 -245
  298. package/esm2015/form-builder/node-properties.js +0 -968
  299. package/esm2015/form-builder/node-type-entry.js +0 -50
  300. package/esm2015/form-builder/string-identifier-dialog.js +0 -94
  301. package/esm2015/form-builder/validation-condition-editor-dialog.js +0 -59
  302. package/esm2015/form-builder/warning-condition-editor-dialog.js +0 -59
  303. package/esm2015/forms/barcode-field.js +0 -43
  304. package/esm2015/forms/boolean-field.js +0 -43
  305. package/esm2015/forms/date-field.js +0 -43
  306. package/esm2015/forms/date-input-field.js +0 -65
  307. package/esm2015/forms/empty-field.js +0 -43
  308. package/esm2015/forms/field-service.js +0 -115
  309. package/esm2015/forms/field-warning-dialog.js +0 -32
  310. package/esm2015/forms/field.js +0 -45
  311. package/esm2015/forms/form.js +0 -46
  312. package/esm2015/forms/forms-module.js +0 -107
  313. package/esm2015/forms/forms.externs.js +0 -6
  314. package/esm2015/forms/index.js +0 -9
  315. package/esm2015/forms/input-field.js +0 -43
  316. package/esm2015/forms/multiple-choice-field.js +0 -44
  317. package/esm2015/forms/range-field.js +0 -45
  318. package/esm2015/forms/single-choice-field.js +0 -44
  319. package/esm2015/forms/table-field.js +0 -43
  320. package/esm2015/forms/text-field.js +0 -43
  321. package/esm2015/forms/time-field.js +0 -43
  322. package/esm2015/forms/video-url-field.js +0 -47
  323. package/esm2015/forms/warning-alert-service.js +0 -42
  324. package/esm2015/image/image-module.js +0 -42
  325. package/esm2015/image/image.externs.js +0 -6
  326. package/esm2015/image/image.js +0 -44
  327. package/esm2015/image/index.js +0 -5
  328. package/esm2015/material.externs.js +0 -0
  329. package/esm2015/monaco-editor/index.js +0 -5
  330. package/esm2015/monaco-editor/monaco-editor-module.js +0 -36
  331. package/esm2015/monaco-editor/monaco-editor.externs.js +0 -6
  332. package/esm2015/monaco-editor/monaco-editor.js +0 -389
  333. package/esm2015/node-icon/index.js +0 -5
  334. package/esm2015/node-icon/node-icon-module.js +0 -42
  335. package/esm2015/node-icon/node-icon.externs.js +0 -6
  336. package/esm2015/node-icon/node-icon.js +0 -35
  337. package/esm2015/page-slider/index.js +0 -5
  338. package/esm2015/page-slider/page-slider-module.js +0 -49
  339. package/esm2015/page-slider/page-slider.externs.js +0 -6
  340. package/esm2015/page-slider/page-slider.js +0 -44
  341. package/esm2015/report-builder/column.js +0 -97
  342. package/esm2015/report-builder/condition-editor.js +0 -159
  343. package/esm2015/report-builder/content.js +0 -255
  344. package/esm2015/report-builder/custom-widget-dialog.js +0 -51
  345. package/esm2015/report-builder/custom-widget-toolbar-button.js +0 -70
  346. package/esm2015/report-builder/custom-widgets-toolbar.js +0 -124
  347. package/esm2015/report-builder/forms-analyzer-dialog.js +0 -315
  348. package/esm2015/report-builder/forms-analyzer.js +0 -264
  349. package/esm2015/report-builder/image-group.js +0 -106
  350. package/esm2015/report-builder/index.js +0 -25
  351. package/esm2015/report-builder/models.js +0 -23
  352. package/esm2015/report-builder/properties.js +0 -765
  353. package/esm2015/report-builder/public-api.js +0 -26
  354. package/esm2015/report-builder/quill-editor.js +0 -299
  355. package/esm2015/report-builder/renderer-widget.js +0 -238
  356. package/esm2015/report-builder/report-builder-drag-data.js +0 -23
  357. package/esm2015/report-builder/report-builder-module.js +0 -114
  358. package/esm2015/report-builder/report-builder-service.js +0 -1685
  359. package/esm2015/report-builder/report-builder.externs.js +0 -6
  360. package/esm2015/report-builder/report-builder.js +0 -69
  361. package/esm2015/report-builder/theme-color-dialog.js +0 -90
  362. package/esm2015/report-builder/theme-color.js +0 -215
  363. package/esm2015/report-builder/tokens.js +0 -24
  364. package/esm2015/report-builder/toolbar-dialog.js +0 -56
  365. package/esm2015/report-builder/toolbar.js +0 -90
  366. package/esm2015/report-builder/utils.js +0 -48
  367. package/esm2015/report-builder/widget-toolbar-button.js +0 -47
  368. package/esm2015/report-builder/widgets-row-buttons.js +0 -133
  369. package/esm2015/report-builder/widgets-toolbar.js +0 -79
  370. package/esm2015/reports/chart-widget.js +0 -41
  371. package/esm2015/reports/formula-widget.js +0 -41
  372. package/esm2015/reports/image-container-widget.js +0 -43
  373. package/esm2015/reports/image-widget.js +0 -41
  374. package/esm2015/reports/index.js +0 -5
  375. package/esm2015/reports/map-widget.js +0 -41
  376. package/esm2015/reports/page-break-widget.js +0 -41
  377. package/esm2015/reports/report.js +0 -41
  378. package/esm2015/reports/reports-module.js +0 -79
  379. package/esm2015/reports/reports.externs.js +0 -6
  380. package/esm2015/reports/table-widget.js +0 -41
  381. package/esm2015/reports/text-widget.js +0 -41
  382. package/esm2015/reports/widget.js +0 -120
  383. package/esm2015/time/index.js +0 -5
  384. package/esm2015/time/time-module.js +0 -44
  385. package/esm2015/time/time.externs.js +0 -6
  386. package/esm2015/time/time.js +0 -46
  387. package/fesm2015/barcode.js +0 -129
  388. package/fesm2015/barcode.js.map +0 -1
  389. package/fesm2015/calendar.js +0 -128
  390. package/fesm2015/calendar.js.map +0 -1
  391. package/fesm2015/checkbox-group.js +0 -124
  392. package/fesm2015/checkbox-group.js.map +0 -1
  393. package/fesm2015/form-builder.js +0 -2987
  394. package/fesm2015/form-builder.js.map +0 -1
  395. package/fesm2015/forms.js +0 -923
  396. package/fesm2015/forms.js.map +0 -1
  397. package/fesm2015/image.js +0 -113
  398. package/fesm2015/image.js.map +0 -1
  399. package/fesm2015/material.js.map +0 -1
  400. package/fesm2015/monaco-editor.js.map +0 -1
  401. package/fesm2015/node-icon.js +0 -104
  402. package/fesm2015/node-icon.js.map +0 -1
  403. package/fesm2015/page-slider.js +0 -119
  404. package/fesm2015/page-slider.js.map +0 -1
  405. package/fesm2015/report-builder.js +0 -5332
  406. package/fesm2015/report-builder.js.map +0 -1
  407. package/fesm2015/reports.js +0 -560
  408. package/fesm2015/reports.js.map +0 -1
  409. package/fesm2015/time.js +0 -116
  410. package/fesm2015/time.js.map +0 -1
  411. package/form-builder/index.metadata.json +0 -1
  412. package/forms/index.metadata.json +0 -1
  413. package/image/index.metadata.json +0 -1
  414. package/monaco-editor/index.metadata.json +0 -1
  415. package/node-icon/index.metadata.json +0 -1
  416. package/page-slider/index.metadata.json +0 -1
  417. package/report-builder/_report-builder.scss +0 -0
  418. package/report-builder/column.d.ts +0 -63
  419. package/report-builder/condition-editor.d.ts +0 -67
  420. package/report-builder/content.d.ts +0 -142
  421. package/report-builder/custom-widget-dialog.d.ts +0 -31
  422. package/report-builder/custom-widget-toolbar-button.d.ts +0 -45
  423. package/report-builder/custom-widgets-toolbar.d.ts +0 -71
  424. package/report-builder/forms-analyzer-dialog.d.ts +0 -91
  425. package/report-builder/forms-analyzer.d.ts +0 -102
  426. package/report-builder/image-group.d.ts +0 -69
  427. package/report-builder/index.d.ts +0 -24
  428. package/report-builder/index.metadata.json +0 -1
  429. package/report-builder/models.d.ts +0 -43
  430. package/report-builder/operations.d.ts +0 -45
  431. package/report-builder/package.json +0 -9
  432. package/report-builder/properties.d.ts +0 -365
  433. package/report-builder/public-api.d.ts +0 -26
  434. package/report-builder/quill-editor.d.ts +0 -113
  435. package/report-builder/renderer-widget.d.ts +0 -80
  436. package/report-builder/report-builder-drag-data.d.ts +0 -32
  437. package/report-builder/report-builder-module.d.ts +0 -23
  438. package/report-builder/report-builder-service.d.ts +0 -722
  439. package/report-builder/report-builder.d.ts +0 -36
  440. package/report-builder/theme-color-dialog.d.ts +0 -42
  441. package/report-builder/theme-color.d.ts +0 -108
  442. package/report-builder/tokens.d.ts +0 -24
  443. package/report-builder/toolbar-dialog.d.ts +0 -30
  444. package/report-builder/toolbar.d.ts +0 -48
  445. package/report-builder/utils.d.ts +0 -29
  446. package/report-builder/widget-toolbar-button.d.ts +0 -28
  447. package/report-builder/widgets-row-buttons.d.ts +0 -57
  448. package/report-builder/widgets-toolbar.d.ts +0 -44
  449. package/reports/index.metadata.json +0 -1
  450. package/time/index.metadata.json +0 -1
@@ -0,0 +1,260 @@
1
+ /**
2
+ * @license
3
+ * Copyright (C) Gnucoop soc. coop.
4
+ *
5
+ * This file is part of the Advanced JSON forms (ajf).
6
+ *
7
+ * Advanced JSON forms (ajf) is free software: you can redistribute it and/or
8
+ * modify it under the terms of the GNU Affero General Public License as
9
+ * published by the Free Software Foundation, either version 3 of the License,
10
+ * or (at your option) any later version.
11
+ *
12
+ * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
15
+ * General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Affero General Public License
18
+ * along with Advanced JSON forms (ajf).
19
+ * If not, see http://www.gnu.org/licenses/.
20
+ *
21
+ */
22
+ import { isContainerNode, isSlidesNode } from '@ajf/core/forms';
23
+ import { ChangeDetectionStrategy, Component, ElementRef, Input, QueryList, ViewChildren, ViewEncapsulation, } from '@angular/core';
24
+ import { Subscription } from 'rxjs';
25
+ import { AjfFbBranchLine } from './branch-line';
26
+ import { AjfFormBuilderService, } from './form-builder-service';
27
+ import { disableFieldDropPredicate, disableSlideDropPredicate, onDropProcess, } from './form-builder-utils';
28
+ import * as i0 from "@angular/core";
29
+ import * as i1 from "./form-builder-service";
30
+ import * as i2 from "./branch-line";
31
+ import * as i3 from "@angular/material/card";
32
+ import * as i4 from "@angular/material/expansion";
33
+ import * as i5 from "@ajf/material/node-icon";
34
+ import * as i6 from "@angular/material/button";
35
+ import * as i7 from "@angular/material/icon";
36
+ import * as i8 from "@angular/common";
37
+ import * as i9 from "@angular/cdk/drag-drop";
38
+ import * as i10 from "@ngneat/transloco";
39
+ const branchColors = [
40
+ '#F44336',
41
+ '#4CAF50',
42
+ '#3F51B5',
43
+ '#FFC107',
44
+ '#795548', // BROWN
45
+ ];
46
+ export class AjfFbNodeEntry {
47
+ constructor(_service) {
48
+ this._service = _service;
49
+ this._hasContent = false;
50
+ this._isFirst = false;
51
+ this._isNodeEntry = false;
52
+ this._isExpanded = false;
53
+ this._level = 0;
54
+ this._isDraggable = true;
55
+ this._branchColors = branchColors.slice(0);
56
+ this._dropZones = ['fbdz-node'];
57
+ this._slideDropZones = ['fbdz-slide'];
58
+ this._originOffset = 0;
59
+ this._originLeftMargin = '0';
60
+ this._firstBranchColor = branchColors[0];
61
+ this._branchLinesSubscription = Subscription.EMPTY;
62
+ this._childEntriesSubscription = Subscription.EMPTY;
63
+ this._currentEditedNode = this._service.editedNodeEntry;
64
+ }
65
+ get hasContent() {
66
+ return this._hasContent;
67
+ }
68
+ get isFirst() {
69
+ return this._isFirst;
70
+ }
71
+ set isFirst(isFirst) {
72
+ this._isFirst = isFirst;
73
+ }
74
+ get isNodeEntry() {
75
+ return this._isNodeEntry;
76
+ }
77
+ get isExpanded() {
78
+ return this._isExpanded;
79
+ }
80
+ set isExpanded(exp) {
81
+ this._isExpanded = exp;
82
+ setTimeout(() => this._updateBranchHeights(), 400);
83
+ }
84
+ get nodeEntry() {
85
+ return this._nodeEntry;
86
+ }
87
+ set nodeEntry(nodeEntry) {
88
+ this._nodeEntry = nodeEntry;
89
+ if (nodeEntry != null && nodeEntry.node !== void 0) {
90
+ const ne = nodeEntry;
91
+ this._isNodeEntry = true;
92
+ const node = ne.node;
93
+ this._hasContent = node != null && isContainerNode(node);
94
+ }
95
+ else {
96
+ this._isNodeEntry = false;
97
+ this._hasContent = false;
98
+ }
99
+ }
100
+ get level() {
101
+ return this._level;
102
+ }
103
+ set level(value) {
104
+ this._level = value;
105
+ }
106
+ get isDraggable() {
107
+ return this._isDraggable;
108
+ }
109
+ set isDraggable(draggable) {
110
+ this._isDraggable = draggable;
111
+ }
112
+ get realNodeEntry() {
113
+ return this._nodeEntry;
114
+ }
115
+ get branchColors() {
116
+ return this._branchColors;
117
+ }
118
+ get dropZones() {
119
+ return this._dropZones;
120
+ }
121
+ get slideDropZones() {
122
+ return this._slideDropZones;
123
+ }
124
+ get originOffset() {
125
+ return this._originOffset;
126
+ }
127
+ set originOffset(originOffset) {
128
+ this._originOffset = originOffset;
129
+ this._originLeftMargin = `${this._originOffset * 4}px`;
130
+ }
131
+ get originLeftMargin() {
132
+ return this._originLeftMargin;
133
+ }
134
+ get firstBranchColor() {
135
+ return this._firstBranchColor;
136
+ }
137
+ set firstBranchColor(firstBranchColor) {
138
+ const idx = branchColors.indexOf(firstBranchColor);
139
+ if (idx > 0) {
140
+ this._firstBranchColor = firstBranchColor;
141
+ this._branchColors = branchColors.slice(idx).concat(branchColors.slice(0, idx));
142
+ }
143
+ else {
144
+ this._firstBranchColor = branchColors[0];
145
+ this._branchColors = branchColors.slice(0);
146
+ }
147
+ }
148
+ get currentEditedNode() {
149
+ return this._currentEditedNode;
150
+ }
151
+ onResize() { }
152
+ edit(evt) {
153
+ evt.stopPropagation();
154
+ if (this.nodeEntry == null || !this.isNodeEntry) {
155
+ return;
156
+ }
157
+ this._service.editNodeEntry(this.nodeEntry);
158
+ }
159
+ delete(evt) {
160
+ evt.stopPropagation();
161
+ if (this.nodeEntry == null || !this.isNodeEntry) {
162
+ return;
163
+ }
164
+ this._service.deleteNodeEntry(this.nodeEntry);
165
+ }
166
+ isLastNode() {
167
+ if (!this.realNodeEntry || !this.realNodeEntry.children) {
168
+ return false;
169
+ }
170
+ return !this.realNodeEntry.children[0].children;
171
+ }
172
+ isSlide(node) {
173
+ return isSlidesNode(node);
174
+ }
175
+ ngAfterViewInit() {
176
+ setTimeout(() => this._updateBranchHeights());
177
+ this._childEntriesSubscription = this.childEntries.changes.subscribe(() => {
178
+ this._updateBranchHeights();
179
+ });
180
+ }
181
+ ngOnDestroy() {
182
+ this._branchLinesSubscription.unsubscribe();
183
+ this._childEntriesSubscription.unsubscribe();
184
+ }
185
+ /**
186
+ * Triggers when a field or slide node is moved or inserted by drag&dropping in the formbuilder.
187
+ * @param event The drop event.
188
+ * @param content True if the current nodeEntry contains other nodeEntries.
189
+ */
190
+ onDrop(event, content = false) {
191
+ onDropProcess(event, this._service, this._nodeEntry, content);
192
+ }
193
+ /**
194
+ * Assigns a progressive id to the dropList, to connect it to the FormBuilder source list.
195
+ * @param empty True if the list is marked as empty.
196
+ */
197
+ assignId(empty = false) {
198
+ return this._service.assignListId(this.realNodeEntry.node, empty);
199
+ }
200
+ disableSlideDrop(item) {
201
+ return disableSlideDropPredicate(item);
202
+ }
203
+ disableFieldDrop(item) {
204
+ return disableFieldDropPredicate(item);
205
+ }
206
+ emptyAreaDropPredicate() {
207
+ return (item, _drop) => {
208
+ if (this._level > 0) {
209
+ return !item.data.isSlide;
210
+ }
211
+ return item.data.isSlide || false;
212
+ };
213
+ }
214
+ _updateBranchHeights() {
215
+ if (this.nodeEntry == null ||
216
+ !this.isNodeEntry ||
217
+ this.branchLines == null ||
218
+ this.childEntries == null) {
219
+ return;
220
+ }
221
+ const nodeEntry = this.nodeEntry;
222
+ const branchLines = this.branchLines.toArray();
223
+ const sliceIdx = nodeEntry.content != null ? nodeEntry.content.length : 0;
224
+ const childEntries = this.childEntries.toArray().slice(sliceIdx);
225
+ if (branchLines.length != childEntries.length) {
226
+ return;
227
+ }
228
+ branchLines.forEach((bl, idx) => {
229
+ const ce = childEntries[idx];
230
+ bl.height = ce.nativeElement.offsetTop;
231
+ });
232
+ }
233
+ }
234
+ AjfFbNodeEntry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfFbNodeEntry, deps: [{ token: i1.AjfFormBuilderService }], target: i0.ɵɵFactoryTarget.Component });
235
+ AjfFbNodeEntry.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.0-rc.3", type: AjfFbNodeEntry, selector: "ajf-fb-node-entry", inputs: { isFirst: "isFirst", isExpanded: "isExpanded", nodeEntry: "nodeEntry", level: "level", isDraggable: "isDraggable", originOffset: "originOffset", firstBranchColor: "firstBranchColor" }, host: { listeners: { "window.resize": "onResize()" } }, viewQueries: [{ propertyName: "branchLines", predicate: AjfFbBranchLine, descendants: true }, { propertyName: "childEntries", predicate: AjfFbNodeEntry, descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-container *ngIf=\"nodeEntry != null ; else rootEmpty\">\n <ng-template [ngIf]=\"isNodeEntry && !isLastNode()\">\n <ajf-fb-branch-line\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n [offset]=\"idx\"\n [color]=\"branchColors[idx]\"\n ></ajf-fb-branch-line>\n </ng-template>\n\n <div\n class=\"mat-card-container\"\n [class.ajf-highlight]=\"(currentEditedNode|async) == nodeEntry\"\n >\n <div\n *ngIf=\"!isFirst\"\n class=\"ajf-origin-line\"\n [style.margin-left]=\"originLeftMargin\"\n [style.border-color]=\"firstBranchColor\"\n ></div>\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container *ngIf=\"!isDraggable; else draggable\">\n <mat-card>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-card>\n </ng-container>\n\n <ng-template #draggable>\n <mat-card cdkDrag [cdkDragData]=\"realNodeEntry\" class=\"ajf-draggable-box\">\n <ng-container\n *ngIf=\"isSlide(realNodeEntry.node); else fieldPanel\"\n >\n <ng-container *ngTemplateOutlet=\"slidePanel\"></ng-container>\n </ng-container>\n </mat-card>\n </ng-template>\n\n <ng-template #slidePanel>\n <mat-expansion-panel\n [expanded]=\"isExpanded\"\n (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\"\n class=\"mat-elevation-z\"\n >\n <mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-expansion-panel>\n </ng-template>\n\n <ng-template #fieldPanel>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </ng-template>\n\n <ng-template #cardTitle>\n <div class=\"ajf-title-row\">\n <ajf-node-icon [node]=\"realNodeEntry.node\"></ajf-node-icon>\n <span\n class=\"ajf-title\"\n [innerHTML]=\"(realNodeEntry.node.label || realNodeEntry.node.name) | transloco\"\n ></span>\n <span\n *ngIf=\"realNodeEntry.node.visibility && realNodeEntry.node.visibility?.condition !== 'true'\"\n class=\"ajf-visibility-condition\"\n [innerHTML]=\"'Condition: (' + realNodeEntry.node.visibility?.condition + ')'\"\n >\n </span>\n <span class=\"ajf-actions\">\n <button\n [disabled]=\"(currentEditedNode|async) == nodeEntry\"\n (click)=\"edit($event)\"\n mat-icon-button\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n [disabled]=\"(currentEditedNode|async) == null\"\n (click)=\"delete($event)\"\n mat-icon-button\n >\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </div>\n </ng-template>\n\n <ng-template #cardContent>\n <div *ngIf=\"hasContent\">\n <ajf-fb-node-entry\n cdkDropList\n class=\"ajf-fields-list\"\n *ngFor=\"let contentEntry of realNodeEntry.content; let isFirstChild = first; let idx = index\"\n [id]=\"assignId()\"\n [level]=\"level + 1\"\n [isFirst]=\"isFirstChild\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"contentEntry\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n <mat-card\n class=\"ajf-empty\"\n *ngIf=\"realNodeEntry.content.length === 0\"\n cdkDropList\n [id]=\"assignId(true)\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n ><mat-card-title>Drop your fields here</mat-card-title></mat-card\n >\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n >\n <ajf-fb-node-entry\n *ngIf=\"!isLastNode()\"\n [level]=\"level\"\n [originOffset]=\"idx\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"childNodeEntry\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n </ng-container>\n </ng-template>\n</ng-container>\n\n<ng-template #rootEmpty>\n <div class=\"mat-card-container\">\n <mat-card\n class=\"ajf-empty\"\n cdkDropList\n [cdkDropListEnterPredicate]=\"emptyAreaDropPredicate()\"\n (cdkDropListDropped)=\"onDrop($event)\"\n ><mat-card-title>Drop your slides here</mat-card-title>\n </mat-card>\n </div>\n</ng-template>\n", styles: ["ajf-fb-node-entry{display:block;position:relative}ajf-fb-node-entry .mat-card-container{position:relative}ajf-fb-node-entry .mat-card-container .ajf-origin-line{position:absolute;top:0;left:25px;width:25px;height:25px;border-bottom:2px solid;border-left:2px solid;border-bottom-left-radius:.5em}ajf-fb-node-entry .mat-card-container mat-card{margin-left:50px;padding:.5em 1em;margin-top:.2em;margin-bottom:.2em;background-color:#fff}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row{display:flex;flex:1 1 auto;flex-direction:row;align-items:center}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-title{flex:1 1 auto}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-visibility-condition{flex:1 1 auto;font-size:10px;color:#999}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-actions{flex:0 0 auto;white-space:nowrap}ajf-fb-node-entry .mat-card-container mat-card.ajf-empty{line-height:36px;border:2px dashed;box-shadow:none;box-sizing:border-box;text-align:center;color:#ccc}ajf-fb-node-entry .mat-card-container mat-card.ajf-draggable-box{padding:20px 10px;border-bottom:solid 1px #ccc;border-right:solid 1px #ccc;color:rgba(0,0,0,.87);box-sizing:border-box;cursor:move;background:#fff;font-size:14px}ajf-fb-node-entry .mat-card-container.ajf-highlight>mat-card{background-color:#fff9c4}ajf-fb-node-entry.ajf-fields-list{max-width:80%;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}ajf-fb-node-entry .cdk-drag-placeholder{opacity:0;min-height:60px}ajf-fb-node-entry .ajf-fields-list.cdk-drop-list-dragging .ajf-draggable-box:not(.cdk-drag-placeholder),ajf-fb-node-entry .cdk-drag-animating{transition:transform 250ms cubic-bezier(0, 0, 0.2, 1)}\n"], components: [{ type: i2.AjfFbBranchLine, selector: "ajf-fb-branch-line", inputs: ["offset", "color", "height"] }, { type: i3.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i5.AjfNodeIcon, selector: "ajf-node-icon" }, { type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: AjfFbNodeEntry, selector: "ajf-fb-node-entry", inputs: ["isFirst", "isExpanded", "nodeEntry", "level", "isDraggable", "originOffset", "firstBranchColor"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i9.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }], pipes: { "async": i8.AsyncPipe, "transloco": i10.TranslocoPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.3", ngImport: i0, type: AjfFbNodeEntry, decorators: [{
237
+ type: Component,
238
+ args: [{ selector: 'ajf-fb-node-entry', host: { '(window.resize)': 'onResize()' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"nodeEntry != null ; else rootEmpty\">\n <ng-template [ngIf]=\"isNodeEntry && !isLastNode()\">\n <ajf-fb-branch-line\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n [offset]=\"idx\"\n [color]=\"branchColors[idx]\"\n ></ajf-fb-branch-line>\n </ng-template>\n\n <div\n class=\"mat-card-container\"\n [class.ajf-highlight]=\"(currentEditedNode|async) == nodeEntry\"\n >\n <div\n *ngIf=\"!isFirst\"\n class=\"ajf-origin-line\"\n [style.margin-left]=\"originLeftMargin\"\n [style.border-color]=\"firstBranchColor\"\n ></div>\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container *ngIf=\"!isDraggable; else draggable\">\n <mat-card>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-card>\n </ng-container>\n\n <ng-template #draggable>\n <mat-card cdkDrag [cdkDragData]=\"realNodeEntry\" class=\"ajf-draggable-box\">\n <ng-container\n *ngIf=\"isSlide(realNodeEntry.node); else fieldPanel\"\n >\n <ng-container *ngTemplateOutlet=\"slidePanel\"></ng-container>\n </ng-container>\n </mat-card>\n </ng-template>\n\n <ng-template #slidePanel>\n <mat-expansion-panel\n [expanded]=\"isExpanded\"\n (opened)=\"isExpanded = true\"\n (closed)=\"isExpanded = false\"\n class=\"mat-elevation-z\"\n >\n <mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n </mat-expansion-panel-header>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </mat-expansion-panel>\n </ng-template>\n\n <ng-template #fieldPanel>\n <ng-container *ngTemplateOutlet=\"cardTitle\"></ng-container>\n <ng-container *ngTemplateOutlet=\"cardContent\"></ng-container>\n </ng-template>\n\n <ng-template #cardTitle>\n <div class=\"ajf-title-row\">\n <ajf-node-icon [node]=\"realNodeEntry.node\"></ajf-node-icon>\n <span\n class=\"ajf-title\"\n [innerHTML]=\"(realNodeEntry.node.label || realNodeEntry.node.name) | transloco\"\n ></span>\n <span\n *ngIf=\"realNodeEntry.node.visibility && realNodeEntry.node.visibility?.condition !== 'true'\"\n class=\"ajf-visibility-condition\"\n [innerHTML]=\"'Condition: (' + realNodeEntry.node.visibility?.condition + ')'\"\n >\n </span>\n <span class=\"ajf-actions\">\n <button\n [disabled]=\"(currentEditedNode|async) == nodeEntry\"\n (click)=\"edit($event)\"\n mat-icon-button\n >\n <mat-icon>edit</mat-icon>\n </button>\n <button\n [disabled]=\"(currentEditedNode|async) == null\"\n (click)=\"delete($event)\"\n mat-icon-button\n >\n <mat-icon>delete</mat-icon>\n </button>\n </span>\n </div>\n </ng-template>\n\n <ng-template #cardContent>\n <div *ngIf=\"hasContent\">\n <ajf-fb-node-entry\n cdkDropList\n class=\"ajf-fields-list\"\n *ngFor=\"let contentEntry of realNodeEntry.content; let isFirstChild = first; let idx = index\"\n [id]=\"assignId()\"\n [level]=\"level + 1\"\n [isFirst]=\"isFirstChild\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"contentEntry\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n <mat-card\n class=\"ajf-empty\"\n *ngIf=\"realNodeEntry.content.length === 0\"\n cdkDropList\n [id]=\"assignId(true)\"\n [cdkDropListEnterPredicate]=\"disableSlideDrop\"\n (cdkDropListDropped)=\"onDrop($event, true)\"\n ><mat-card-title>Drop your fields here</mat-card-title></mat-card\n >\n </div>\n </ng-template>\n </ng-template>\n </div>\n\n <ng-template [ngIf]=\"isNodeEntry\">\n <ng-container\n *ngFor=\"let childNodeEntry of realNodeEntry.children; let idx = index\"\n >\n <ajf-fb-node-entry\n *ngIf=\"!isLastNode()\"\n [level]=\"level\"\n [originOffset]=\"idx\"\n [firstBranchColor]=\"branchColors[idx]\"\n [nodeEntry]=\"childNodeEntry\"\n [isExpanded]=\"isExpanded\"\n ></ajf-fb-node-entry>\n </ng-container>\n </ng-template>\n</ng-container>\n\n<ng-template #rootEmpty>\n <div class=\"mat-card-container\">\n <mat-card\n class=\"ajf-empty\"\n cdkDropList\n [cdkDropListEnterPredicate]=\"emptyAreaDropPredicate()\"\n (cdkDropListDropped)=\"onDrop($event)\"\n ><mat-card-title>Drop your slides here</mat-card-title>\n </mat-card>\n </div>\n</ng-template>\n", styles: ["ajf-fb-node-entry{display:block;position:relative}ajf-fb-node-entry .mat-card-container{position:relative}ajf-fb-node-entry .mat-card-container .ajf-origin-line{position:absolute;top:0;left:25px;width:25px;height:25px;border-bottom:2px solid;border-left:2px solid;border-bottom-left-radius:.5em}ajf-fb-node-entry .mat-card-container mat-card{margin-left:50px;padding:.5em 1em;margin-top:.2em;margin-bottom:.2em;background-color:#fff}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row{display:flex;flex:1 1 auto;flex-direction:row;align-items:center}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-title{flex:1 1 auto}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-visibility-condition{flex:1 1 auto;font-size:10px;color:#999}ajf-fb-node-entry .mat-card-container mat-card .ajf-title-row>.ajf-actions{flex:0 0 auto;white-space:nowrap}ajf-fb-node-entry .mat-card-container mat-card.ajf-empty{line-height:36px;border:2px dashed;box-shadow:none;box-sizing:border-box;text-align:center;color:#ccc}ajf-fb-node-entry .mat-card-container mat-card.ajf-draggable-box{padding:20px 10px;border-bottom:solid 1px #ccc;border-right:solid 1px #ccc;color:rgba(0,0,0,.87);box-sizing:border-box;cursor:move;background:#fff;font-size:14px}ajf-fb-node-entry .mat-card-container.ajf-highlight>mat-card{background-color:#fff9c4}ajf-fb-node-entry.ajf-fields-list{max-width:80%;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:hidden}ajf-fb-node-entry .cdk-drag-placeholder{opacity:0;min-height:60px}ajf-fb-node-entry .ajf-fields-list.cdk-drop-list-dragging .ajf-draggable-box:not(.cdk-drag-placeholder),ajf-fb-node-entry .cdk-drag-animating{transition:transform 250ms cubic-bezier(0, 0, 0.2, 1)}\n"] }]
239
+ }], ctorParameters: function () { return [{ type: i1.AjfFormBuilderService }]; }, propDecorators: { branchLines: [{
240
+ type: ViewChildren,
241
+ args: [AjfFbBranchLine]
242
+ }], childEntries: [{
243
+ type: ViewChildren,
244
+ args: [AjfFbNodeEntry, { read: ElementRef }]
245
+ }], isFirst: [{
246
+ type: Input
247
+ }], isExpanded: [{
248
+ type: Input
249
+ }], nodeEntry: [{
250
+ type: Input
251
+ }], level: [{
252
+ type: Input
253
+ }], isDraggable: [{
254
+ type: Input
255
+ }], originOffset: [{
256
+ type: Input
257
+ }], firstBranchColor: [{
258
+ type: Input
259
+ }] } });
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9mb3JtLWJ1aWxkZXIvbm9kZS1lbnRyeS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9mb3JtLWJ1aWxkZXIvbm9kZS1lbnRyeS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILE9BQU8sRUFBVSxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFdkUsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUlMLHFCQUFxQixHQUN0QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGFBQWEsR0FDZCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFFOUIsTUFBTSxZQUFZLEdBQWE7SUFDN0IsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVMsRUFBRSxRQUFRO0NBQ3BCLENBQUM7QUFVRixNQUFNLE9BQU8sY0FBYztJQTZIekIsWUFBb0IsUUFBK0I7UUFBL0IsYUFBUSxHQUFSLFFBQVEsQ0FBdUI7UUF6SDNDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBS3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFTakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFLckIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUE0QnBCLFdBQU0sR0FBRyxDQUFDLENBQUM7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QUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7QWpmTm9kZSwgaXNDb250YWluZXJOb2RlLCBpc1NsaWRlc05vZGV9IGZyb20gJ0BhamYvY29yZS9mb3Jtcyc7XG5pbXBvcnQge0Nka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZHJlbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FqZkZiQnJhbmNoTGluZX0gZnJvbSAnLi9icmFuY2gtbGluZSc7XG5pbXBvcnQge1xuICBBamZGb3JtQnVpbGRlck5vZGUsXG4gIEFqZkZvcm1CdWlsZGVyTm9kZUVudHJ5LFxuICBBamZGb3JtQnVpbGRlck5vZGVUeXBlRW50cnksXG4gIEFqZkZvcm1CdWlsZGVyU2VydmljZSxcbn0gZnJvbSAnLi9mb3JtLWJ1aWxkZXItc2VydmljZSc7XG5pbXBvcnQge1xuICBkaXNhYmxlRmllbGREcm9wUHJlZGljYXRlLFxuICBkaXNhYmxlU2xpZGVEcm9wUHJlZGljYXRlLFxuICBvbkRyb3BQcm9jZXNzLFxufSBmcm9tICcuL2Zvcm0tYnVpbGRlci11dGlscyc7XG5cbmNvbnN0IGJyYW5jaENvbG9yczogc3RyaW5nW10gPSBbXG4gICcjRjQ0MzM2JywgLy8gUkVEXG4gICcjNENBRjUwJywgLy8gR1JFRU5cbiAgJyMzRjUxQjUnLCAvLyBJTkRJR09cbiAgJyNGRkMxMDcnLCAvLyBBTUJFUlxuICAnIzc5NTU0OCcsIC8vIEJST1dOXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhamYtZmItbm9kZS1lbnRyeScsXG4gIHRlbXBsYXRlVXJsOiAnbm9kZS1lbnRyeS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ25vZGUtZW50cnkuY3NzJ10sXG4gIGhvc3Q6IHsnKHdpbmRvdy5yZXNpemUpJzogJ29uUmVzaXplKCknfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFqZkZiTm9kZUVudHJ5IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZHJlbihBamZGYkJyYW5jaExpbmUpIGJyYW5jaExpbmVzOiBRdWVyeUxpc3Q8QWpmRmJCcmFuY2hMaW5lPjtcbiAgQFZpZXdDaGlsZHJlbihBamZGYk5vZGVFbnRyeSwge3JlYWQ6IEVsZW1lbnRSZWZ9KSBjaGlsZEVudHJpZXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICBwcml2YXRlIF9oYXNDb250ZW50ID0gZmFsc2U7XG4gIGdldCBoYXNDb250ZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNDb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNGaXJzdCA9IGZhbHNlO1xuICBnZXQgaXNGaXJzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNGaXJzdDtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaXNGaXJzdChpc0ZpcnN0OiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNGaXJzdCA9IGlzRmlyc3Q7XG4gIH1cblxuICBwcml2YXRlIF9pc05vZGVFbnRyeSA9IGZhbHNlO1xuICBnZXQgaXNOb2RlRW50cnkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTm9kZUVudHJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNFeHBhbmRlZCA9IGZhbHNlO1xuICBnZXQgaXNFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNFeHBhbmRlZDtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaXNFeHBhbmRlZChleHA6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0V4cGFuZGVkID0gZXhwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fdXBkYXRlQnJhbmNoSGVpZ2h0cygpLCA0MDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9kZUVudHJ5OiBBamZGb3JtQnVpbGRlck5vZGU7XG4gIGdldCBub2RlRW50cnkoKTogQWpmRm9ybUJ1aWxkZXJOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZUVudHJ5O1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBub2RlRW50cnkobm9kZUVudHJ5OiBBamZGb3JtQnVpbGRlck5vZGUpIHtcbiAgICB0aGlzLl9ub2RlRW50cnkgPSBub2RlRW50cnk7XG4gICAgaWYgKG5vZGVFbnRyeSAhPSBudWxsICYmICg8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnk+bm9kZUVudHJ5KS5ub2RlICE9PSB2b2lkIDApIHtcbiAgICAgIGNvbnN0IG5lID0gPEFqZkZvcm1CdWlsZGVyTm9kZUVudHJ5Pm5vZGVFbnRyeTtcbiAgICAgIHRoaXMuX2lzTm9kZUVudHJ5ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IG5vZGUgPSBuZS5ub2RlO1xuICAgICAgdGhpcy5faGFzQ29udGVudCA9IG5vZGUgIT0gbnVsbCAmJiBpc0NvbnRhaW5lck5vZGUobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2lzTm9kZUVudHJ5ID0gZmFsc2U7XG4gICAgICB0aGlzLl9oYXNDb250ZW50ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGV2ZWwgPSAwO1xuICBnZXQgbGV2ZWwoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbGV2ZWw7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGxldmVsKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9sZXZlbCA9IHZhbHVlO1xuICB9XG4gIHByaXZhdGUgX2lzRHJhZ2dhYmxlOiBib29sZWFuID0gdHJ1ZTtcbiAgZ2V0IGlzRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0RyYWdnYWJsZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaXNEcmFnZ2FibGUoZHJhZ2dhYmxlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNEcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gIH1cblxuICBnZXQgcmVhbE5vZGVFbnRyeSgpOiBBamZGb3JtQnVpbGRlck5vZGVFbnRyeSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVFbnRyeSBhcyBBamZGb3JtQnVpbGRlck5vZGVFbnRyeTtcbiAgfVxuXG4gIHByaXZhdGUgX2JyYW5jaENvbG9yczogc3RyaW5nW10gPSBicmFuY2hDb2xvcnMuc2xpY2UoMCk7XG4gIGdldCBicmFuY2hDb2xvcnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9icmFuY2hDb2xvcnM7XG4gIH1cblxuICBwcml2YXRlIF9kcm9wWm9uZXM6IHN0cmluZ1tdID0gWydmYmR6LW5vZGUnXTtcbiAgZ2V0IGRyb3Bab25lcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2Ryb3Bab25lcztcbiAgfVxuXG4gIHByaXZhdGUgX3NsaWRlRHJvcFpvbmVzOiBzdHJpbmdbXSA9IFsnZmJkei1zbGlkZSddO1xuICBnZXQgc2xpZGVEcm9wWm9uZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9zbGlkZURyb3Bab25lcztcbiAgfVxuXG4gIHByaXZhdGUgX29yaWdpbk9mZnNldCA9IDA7XG4gIGdldCBvcmlnaW5PZmZzZXQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fb3JpZ2luT2Zmc2V0O1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBvcmlnaW5PZmZzZXQob3JpZ2luT2Zmc2V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl9vcmlnaW5PZmZzZXQgPSBvcmlnaW5PZmZzZXQ7XG4gICAgdGhpcy5fb3JpZ2luTGVmdE1hcmdpbiA9IGAke3RoaXMuX29yaWdpbk9mZnNldCAqIDR9cHhgO1xuICB9XG4gIHByaXZhdGUgX29yaWdpbkxlZnRNYXJnaW4gPSAnMCc7XG4gIGdldCBvcmlnaW5MZWZ0TWFyZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbkxlZnRNYXJnaW47XG4gIH1cblxuICBwcml2YXRlIF9maXJzdEJyYW5jaENvbG9yID0gYnJhbmNoQ29sb3JzWzBdO1xuICBnZXQgZmlyc3RCcmFuY2hDb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maXJzdEJyYW5jaENvbG9yO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBmaXJzdEJyYW5jaENvbG9yKGZpcnN0QnJhbmNoQ29sb3I6IHN0cmluZykge1xuICAgIGNvbnN0IGlkeCA9IGJyYW5jaENvbG9ycy5pbmRleE9mKGZpcnN0QnJhbmNoQ29sb3IpO1xuICAgIGlmIChpZHggPiAwKSB7XG4gICAgICB0aGlzLl9maXJzdEJyYW5jaENvbG9yID0gZmlyc3RCcmFuY2hDb2xvcjtcbiAgICAgIHRoaXMuX2JyYW5jaENvbG9ycyA9IGJyYW5jaENvbG9ycy5zbGljZShpZHgpLmNvbmNhdChicmFuY2hDb2xvcnMuc2xpY2UoMCwgaWR4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2ZpcnN0QnJhbmNoQ29sb3IgPSBicmFuY2hDb2xvcnNbMF07XG4gICAgICB0aGlzLl9icmFuY2hDb2xvcnMgPSBicmFuY2hDb2xvcnMuc2xpY2UoMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudEVkaXRlZE5vZGU6IE9ic2VydmFibGU8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnkgfCBudWxsPjtcbiAgZ2V0IGN1cnJlbnRFZGl0ZWROb2RlKCk6IE9ic2VydmFibGU8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnkgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRFZGl0ZWROb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnJhbmNoTGluZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfY2hpbGRFbnRyaWVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc2VydmljZTogQWpmRm9ybUJ1aWxkZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5fY3VycmVudEVkaXRlZE5vZGUgPSB0aGlzLl9zZXJ2aWNlLmVkaXRlZE5vZGVFbnRyeTtcbiAgfVxuXG4gIG9uUmVzaXplKCk6IHZvaWQge31cblxuICBlZGl0KGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMubm9kZUVudHJ5ID09IG51bGwgfHwgIXRoaXMuaXNOb2RlRW50cnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2VydmljZS5lZGl0Tm9kZUVudHJ5KDxBamZGb3JtQnVpbGRlck5vZGVFbnRyeT50aGlzLm5vZGVFbnRyeSk7XG4gIH1cblxuICBkZWxldGUoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5ub2RlRW50cnkgPT0gbnVsbCB8fCAhdGhpcy5pc05vZGVFbnRyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZXJ2aWNlLmRlbGV0ZU5vZGVFbnRyeSg8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnk+dGhpcy5ub2RlRW50cnkpO1xuICB9XG5cbiAgaXNMYXN0Tm9kZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucmVhbE5vZGVFbnRyeSB8fCAhdGhpcy5yZWFsTm9kZUVudHJ5LmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAhdGhpcy5yZWFsTm9kZUVudHJ5LmNoaWxkcmVuWzBdLmNoaWxkcmVuO1xuICB9XG5cbiAgaXNTbGlkZShub2RlOiBBamZOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzU2xpZGVzTm9kZShub2RlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3VwZGF0ZUJyYW5jaEhlaWdodHMoKSk7XG4gICAgdGhpcy5fY2hpbGRFbnRyaWVzU3Vic2NyaXB0aW9uID0gdGhpcy5jaGlsZEVudHJpZXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlQnJhbmNoSGVpZ2h0cygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYnJhbmNoTGluZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9jaGlsZEVudHJpZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyB3aGVuIGEgZmllbGQgb3Igc2xpZGUgbm9kZSBpcyBtb3ZlZCBvciBpbnNlcnRlZCBieSBkcmFnJmRyb3BwaW5nIGluIHRoZSBmb3JtYnVpbGRlci5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBkcm9wIGV2ZW50LlxuICAgKiBAcGFyYW0gY29udGVudCBUcnVlIGlmIHRoZSBjdXJyZW50IG5vZGVFbnRyeSBjb250YWlucyBvdGhlciBub2RlRW50cmllcy5cbiAgICovXG4gIG9uRHJvcChcbiAgICBldmVudDogQ2RrRHJhZ0Ryb3A8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnk+IHwgQ2RrRHJhZ0Ryb3A8QWpmRm9ybUJ1aWxkZXJOb2RlVHlwZUVudHJ5PixcbiAgICBjb250ZW50ID0gZmFsc2UsXG4gICk6IHZvaWQge1xuICAgIG9uRHJvcFByb2Nlc3MoZXZlbnQsIHRoaXMuX3NlcnZpY2UsIHRoaXMuX25vZGVFbnRyeSwgY29udGVudCk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyBhIHByb2dyZXNzaXZlIGlkIHRvIHRoZSBkcm9wTGlzdCwgdG8gY29ubmVjdCBpdCB0byB0aGUgRm9ybUJ1aWxkZXIgc291cmNlIGxpc3QuXG4gICAqIEBwYXJhbSBlbXB0eSBUcnVlIGlmIHRoZSBsaXN0IGlzIG1hcmtlZCBhcyBlbXB0eS5cbiAgICovXG4gIGFzc2lnbklkKGVtcHR5OiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlLmFzc2lnbkxpc3RJZCh0aGlzLnJlYWxOb2RlRW50cnkubm9kZSwgZW1wdHkpO1xuICB9XG5cbiAgZGlzYWJsZVNsaWRlRHJvcChpdGVtOiBDZGtEcmFnPEFqZkZvcm1CdWlsZGVyTm9kZVR5cGVFbnRyeT4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGlzYWJsZVNsaWRlRHJvcFByZWRpY2F0ZShpdGVtKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZERyb3AoaXRlbTogQ2RrRHJhZzxBamZGb3JtQnVpbGRlck5vZGVUeXBlRW50cnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRpc2FibGVGaWVsZERyb3BQcmVkaWNhdGUoaXRlbSk7XG4gIH1cblxuICBlbXB0eUFyZWFEcm9wUHJlZGljYXRlKCk6IChpdGVtOiBDZGtEcmFnLCBfZHJvcDogQ2RrRHJvcExpc3QpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaXRlbTogQ2RrRHJhZywgX2Ryb3A6IENka0Ryb3BMaXN0KTogYm9vbGVhbiA9PiB7XG4gICAgICBpZiAodGhpcy5fbGV2ZWwgPiAwKSB7XG4gICAgICAgIHJldHVybiAhaXRlbS5kYXRhLmlzU2xpZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbS5kYXRhLmlzU2xpZGUgfHwgZmFsc2U7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUJyYW5jaEhlaWdodHMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub2RlRW50cnkgPT0gbnVsbCB8fFxuICAgICAgIXRoaXMuaXNOb2RlRW50cnkgfHxcbiAgICAgIHRoaXMuYnJhbmNoTGluZXMgPT0gbnVsbCB8fFxuICAgICAgdGhpcy5jaGlsZEVudHJpZXMgPT0gbnVsbFxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBub2RlRW50cnkgPSA8QWpmRm9ybUJ1aWxkZXJOb2RlRW50cnk+dGhpcy5ub2RlRW50cnk7XG4gICAgY29uc3QgYnJhbmNoTGluZXM6IEFqZkZiQnJhbmNoTGluZVtdID0gdGhpcy5icmFuY2hMaW5lcy50b0FycmF5KCk7XG4gICAgY29uc3Qgc2xpY2VJZHggPSBub2RlRW50cnkuY29udGVudCAhPSBudWxsID8gbm9kZUVudHJ5LmNvbnRlbnQubGVuZ3RoIDogMDtcbiAgICBjb25zdCBjaGlsZEVudHJpZXM6IEVsZW1lbnRSZWZbXSA9IHRoaXMuY2hpbGRFbnRyaWVzLnRvQXJyYXkoKS5zbGljZShzbGljZUlkeCk7XG5cbiAgICBpZiAoYnJhbmNoTGluZXMubGVuZ3RoICE9IGNoaWxkRW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBicmFuY2hMaW5lcy5mb3JFYWNoKChibDogQWpmRmJCcmFuY2hMaW5lLCBpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgY2U6IEVsZW1lbnRSZWYgPSBjaGlsZEVudHJpZXNbaWR4XTtcbiAgICAgIGJsLmhlaWdodCA9IGNlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgIH0pO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZUVudHJ5ICE9IG51bGwgOyBlbHNlIHJvb3RFbXB0eVwiPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOb2RlRW50cnkgJiYgIWlzTGFzdE5vZGUoKVwiPlxuICAgIDxhamYtZmItYnJhbmNoLWxpbmVcbiAgICAgICpuZ0Zvcj1cImxldCBjaGlsZE5vZGVFbnRyeSBvZiByZWFsTm9kZUVudHJ5LmNoaWxkcmVuOyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgW29mZnNldF09XCJpZHhcIlxuICAgICAgW2NvbG9yXT1cImJyYW5jaENvbG9yc1tpZHhdXCJcbiAgICA+PC9hamYtZmItYnJhbmNoLWxpbmU+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LWNhcmQtY29udGFpbmVyXCJcbiAgICBbY2xhc3MuYWpmLWhpZ2hsaWdodF09XCIoY3VycmVudEVkaXRlZE5vZGV8YXN5bmMpID09IG5vZGVFbnRyeVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIiFpc0ZpcnN0XCJcbiAgICAgIGNsYXNzPVwiYWpmLW9yaWdpbi1saW5lXCJcbiAgICAgIFtzdHlsZS5tYXJnaW4tbGVmdF09XCJvcmlnaW5MZWZ0TWFyZ2luXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItY29sb3JdPVwiZmlyc3RCcmFuY2hDb2xvclwiXG4gICAgPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJpc05vZGVFbnRyeVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0RyYWdnYWJsZTsgZWxzZSBkcmFnZ2FibGVcIj5cbiAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkVGl0bGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2FyZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2RyYWdnYWJsZT5cbiAgICAgICAgPG1hdC1jYXJkIGNka0RyYWcgW2Nka0RyYWdEYXRhXT1cInJlYWxOb2RlRW50cnlcIiBjbGFzcz1cImFqZi1kcmFnZ2FibGUtYm94XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJpc1NsaWRlKHJlYWxOb2RlRW50cnkubm9kZSk7IGVsc2UgZmllbGRQYW5lbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNsaWRlUGFuZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2xpZGVQYW5lbD5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWxcbiAgICAgICAgICBbZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICAgICAgKG9wZW5lZCk9XCJpc0V4cGFuZGVkID0gdHJ1ZVwiXG4gICAgICAgICAgKGNsb3NlZCk9XCJpc0V4cGFuZGVkID0gZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwibWF0LWVsZXZhdGlvbi16XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkVGl0bGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2ZpZWxkUGFuZWw+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkVGl0bGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2NhcmRUaXRsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFqZi10aXRsZS1yb3dcIj5cbiAgICAgICAgICA8YWpmLW5vZGUtaWNvbiBbbm9kZV09XCJyZWFsTm9kZUVudHJ5Lm5vZGVcIj48L2FqZi1ub2RlLWljb24+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYWpmLXRpdGxlXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiKHJlYWxOb2RlRW50cnkubm9kZS5sYWJlbCB8fCByZWFsTm9kZUVudHJ5Lm5vZGUubmFtZSkgIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cInJlYWxOb2RlRW50cnkubm9kZS52aXNpYmlsaXR5ICYmIHJlYWxOb2RlRW50cnkubm9kZS52aXNpYmlsaXR5Py5jb25kaXRpb24gIT09ICd0cnVlJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImFqZi12aXNpYmlsaXR5LWNvbmRpdGlvblwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIidDb25kaXRpb246ICgnICsgcmVhbE5vZGVFbnRyeS5ub2RlLnZpc2liaWxpdHk/LmNvbmRpdGlvbiArICcpJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFqZi1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEVkaXRlZE5vZGV8YXN5bmMpID09IG5vZGVFbnRyeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJlZGl0KCRldmVudClcIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEVkaXRlZE5vZGV8YXN5bmMpID09IG51bGxcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlKCRldmVudClcIlxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmRlbGV0ZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLXRlbXBsYXRlICNjYXJkQ29udGVudD5cbiAgICAgICAgPGRpdiAqbmdJZj1cImhhc0NvbnRlbnRcIj5cbiAgICAgICAgICA8YWpmLWZiLW5vZGUtZW50cnlcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBjbGFzcz1cImFqZi1maWVsZHMtbGlzdFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudEVudHJ5IG9mIHJlYWxOb2RlRW50cnkuY29udGVudDsgbGV0IGlzRmlyc3RDaGlsZCA9IGZpcnN0OyBsZXQgaWR4ID0gaW5kZXhcIlxuICAgICAgICAgICAgW2lkXT1cImFzc2lnbklkKClcIlxuICAgICAgICAgICAgW2xldmVsXT1cImxldmVsICsgMVwiXG4gICAgICAgICAgICBbaXNGaXJzdF09XCJpc0ZpcnN0Q2hpbGRcIlxuICAgICAgICAgICAgW2ZpcnN0QnJhbmNoQ29sb3JdPVwiYnJhbmNoQ29sb3JzW2lkeF1cIlxuICAgICAgICAgICAgW25vZGVFbnRyeV09XCJjb250ZW50RW50cnlcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiZGlzYWJsZVNsaWRlRHJvcFwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIlxuICAgICAgICAgID48L2FqZi1mYi1ub2RlLWVudHJ5PlxuICAgICAgICAgIDxtYXQtY2FyZFxuICAgICAgICAgICAgY2xhc3M9XCJhamYtZW1wdHlcIlxuICAgICAgICAgICAgKm5nSWY9XCJyZWFsTm9kZUVudHJ5LmNvbnRlbnQubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgICBbaWRdPVwiYXNzaWduSWQodHJ1ZSlcIlxuICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiZGlzYWJsZVNsaWRlRHJvcFwiXG4gICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgID48bWF0LWNhcmQtdGl0bGU+RHJvcCB5b3VyIGZpZWxkcyBoZXJlPC9tYXQtY2FyZC10aXRsZT48L21hdC1jYXJkXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzTm9kZUVudHJ5XCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwibGV0IGNoaWxkTm9kZUVudHJ5IG9mIHJlYWxOb2RlRW50cnkuY2hpbGRyZW47IGxldCBpZHggPSBpbmRleFwiXG4gICAgPlxuICAgICAgPGFqZi1mYi1ub2RlLWVudHJ5XG4gICAgICAgICpuZ0lmPVwiIWlzTGFzdE5vZGUoKVwiXG4gICAgICAgIFtsZXZlbF09XCJsZXZlbFwiXG4gICAgICAgIFtvcmlnaW5PZmZzZXRdPVwiaWR4XCJcbiAgICAgICAgW2ZpcnN0QnJhbmNoQ29sb3JdPVwiYnJhbmNoQ29sb3JzW2lkeF1cIlxuICAgICAgICBbbm9kZUVudHJ5XT1cImNoaWxkTm9kZUVudHJ5XCJcbiAgICAgICAgW2lzRXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiXG4gICAgICA+PC9hamYtZmItbm9kZS1lbnRyeT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3Jvb3RFbXB0eT5cbiAgPGRpdiBjbGFzcz1cIm1hdC1jYXJkLWNvbnRhaW5lclwiPlxuICAgIDxtYXQtY2FyZFxuICAgICAgY2xhc3M9XCJhamYtZW1wdHlcIlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cImVtcHR5QXJlYURyb3BQcmVkaWNhdGUoKVwiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgID48bWF0LWNhcmQtdGl0bGU+RHJvcCB5b3VyIHNsaWRlcyBoZXJlPC9tYXQtY2FyZC10aXRsZT5cbiAgICA8L21hdC1jYXJkPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=