@acorex/platform 20.3.0-next.9 → 20.4.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 (131) hide show
  1. package/common/index.d.ts +643 -365
  2. package/core/index.d.ts +19 -4
  3. package/fesm2022/acorex-platform-auth.mjs +19 -19
  4. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-common-common-settings.provider-9OHien_H.mjs +47 -0
  6. package/fesm2022/acorex-platform-common-common-settings.provider-9OHien_H.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-common.mjs +674 -243
  8. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-core.mjs +58 -46
  10. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-domain.mjs +16 -16
  12. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-builder.mjs +1933 -2330
  14. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-components.mjs +1511 -1626
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +82 -82
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity-create-entity.command-DyXF9zAh.mjs +52 -0
  20. package/fesm2022/acorex-platform-layout-entity-create-entity.command-DyXF9zAh.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-layout-entity.mjs +1371 -917
  22. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-views.mjs +63 -54
  24. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-layout-widget-core.mjs +2758 -0
  26. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-C2Qn1YAW.mjs → acorex-platform-layout-widgets-button-widget-designer.component-C_3IWNkj.mjs} +6 -6
  28. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C_3IWNkj.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CJltEgut.mjs} +5 -5
  30. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CJltEgut.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-pM-TIuk0.mjs} +5 -5
  32. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-pM-TIuk0.mjs.map +1 -0
  33. package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-BqI96-fU.mjs} +5 -5
  34. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-BqI96-fU.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-view.component-C-AhenaM.mjs} +5 -5
  36. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-C-AhenaM.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs → acorex-platform-layout-widgets-extra-properties-widget-edit.component-DCAya5ne.mjs} +5 -5
  38. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-DCAya5ne.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs → acorex-platform-layout-widgets-extra-properties-widget-view.component-D-PnBqLb.mjs} +5 -5
  40. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-D-PnBqLb.mjs.map +1 -0
  41. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs → acorex-platform-layout-widgets-file-list-popup.component-DuuFHWvB.mjs} +9 -9
  42. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-DuuFHWvB.mjs.map +1 -0
  43. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-D8ivmxzT.mjs → acorex-platform-layout-widgets-page-widget-designer.component-Bss0xUcu.mjs} +8 -8
  44. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-Bss0xUcu.mjs.map +1 -0
  45. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-Cy9mHnNP.mjs} +8 -8
  46. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Cy9mHnNP.mjs.map +1 -0
  47. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Dmg5DdX8.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DznLtuer.mjs} +6 -5
  48. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DznLtuer.mjs.map +1 -0
  49. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-yADN3Xji.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-ndOUSFi9.mjs} +6 -7
  50. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-ndOUSFi9.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-widgets.mjs → acorex-platform-layout-widgets.mjs} +4154 -3147
  52. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-native.mjs +7 -7
  54. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  55. package/fesm2022/acorex-platform-runtime.mjs +40 -40
  56. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-B1PT6FtZ.mjs +115 -0
  58. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-B1PT6FtZ.mjs.map +1 -0
  59. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs → acorex-platform-themes-default-entity-master-list-view.component-rdKxuMC_.mjs} +69 -33
  60. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-rdKxuMC_.mjs.map +1 -0
  61. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-4g19A3eI.mjs +101 -0
  62. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-4g19A3eI.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs → acorex-platform-themes-default-entity-master-single-view.component-B8gx5cG7.mjs} +17 -17
  64. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B8gx5cG7.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs → acorex-platform-themes-default-error-401.component-CcvGfdhu.mjs} +4 -4
  66. package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map → acorex-platform-themes-default-error-401.component-CcvGfdhu.mjs.map} +1 -1
  67. package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs → acorex-platform-themes-default-error-404.component-4-CaEsnV.mjs} +4 -4
  68. package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map → acorex-platform-themes-default-error-404.component-4-CaEsnV.mjs.map} +1 -1
  69. package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs → acorex-platform-themes-default-error-offline.component-BNecbFEj.mjs} +4 -4
  70. package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs.map → acorex-platform-themes-default-error-offline.component-BNecbFEj.mjs.map} +1 -1
  71. package/fesm2022/acorex-platform-themes-default.mjs +118 -54
  72. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  73. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs → acorex-platform-themes-shared-icon-chooser-view.component-Dc_Txe32.mjs} +5 -5
  74. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-Dc_Txe32.mjs.map +1 -0
  75. package/fesm2022/{acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs → acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs} +8 -8
  76. package/fesm2022/acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs.map +1 -0
  77. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-hgWLhhle.mjs} +5 -5
  78. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-hgWLhhle.mjs.map +1 -0
  79. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-CY3JZK_W.mjs} +5 -5
  80. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-CY3JZK_W.mjs.map +1 -0
  81. package/fesm2022/acorex-platform-themes-shared.mjs +66 -55
  82. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  83. package/fesm2022/acorex-platform-workflow.mjs +27 -39
  84. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  85. package/layout/builder/README.md +1577 -3
  86. package/layout/builder/index.d.ts +735 -868
  87. package/layout/components/index.d.ts +218 -714
  88. package/layout/designer/index.d.ts +4 -4
  89. package/layout/entity/index.d.ts +954 -375
  90. package/layout/views/index.d.ts +13 -14
  91. package/layout/widget-core/README.md +4 -0
  92. package/layout/widget-core/index.d.ts +959 -0
  93. package/layout/widgets/README.md +4 -0
  94. package/{widgets → layout/widgets}/index.d.ts +426 -365
  95. package/package.json +18 -14
  96. package/themes/shared/index.d.ts +2 -2
  97. package/workflow/index.d.ts +3 -173
  98. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs +0 -115
  99. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +0 -101
  102. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C2Qn1YAW.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CzEFmKWG.mjs +0 -84
  110. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CzEFmKWG.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BXPrXy-h.mjs +0 -55
  112. package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-BXPrXy-h.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-KYCQ2qTJ.mjs +0 -92
  114. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-KYCQ2qTJ.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-BVZ7lWm9.mjs +0 -55
  116. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-BVZ7lWm9.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map +0 -1
  121. package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map +0 -1
  122. package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map +0 -1
  123. package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +0 -1
  124. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-D8ivmxzT.mjs.map +0 -1
  125. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-Cydlpsat.mjs +0 -40
  126. package/fesm2022/acorex-platform-widgets-rich-text-popup.component-Cydlpsat.mjs.map +0 -1
  127. package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +0 -1
  128. package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-Dmg5DdX8.mjs.map +0 -1
  129. package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-yADN3Xji.mjs.map +0 -1
  130. package/fesm2022/acorex-platform-widgets.mjs.map +0 -1
  131. package/widgets/README.md +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../tmp-esm2022/layout/builder/lib/builder/widget-status.types.js","../tmp-esm2022/layout/builder/lib/builder/builder.service.js","../tmp-esm2022/layout/builder/lib/builder/context-store.service.js","../tmp-esm2022/layout/builder/lib/builder/widget-catalog.js","../tmp-esm2022/layout/builder/lib/builder/widget.types.js","../tmp-esm2022/layout/builder/lib/builder/widget-base.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/box-model-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/block-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/flex-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/inline-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/flex-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/grid-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/grid-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-item-ops-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/base-widget/table-item-base-widget.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-registery.service.js","../tmp-esm2022/layout/builder/lib/builder/widget-column-renderer.js","../tmp-esm2022/layout/builder/lib/builder/widget-container.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-placeholder.component.js","../tmp-esm2022/layout/builder/lib/builder/widget-renderer.directive.js","../tmp-esm2022/layout/builder/lib/builder/builder.module.js","../tmp-esm2022/layout/builder/lib/builder/helper/property-editor.helper.js","../tmp-esm2022/layout/builder/lib/builder/widget-categories.js","../tmp-esm2022/layout/builder/lib/builder/widget-group.types.js","../tmp-esm2022/layout/builder/acorex-platform-layout-builder.js"],"sourcesContent":["export var AXPPageStatus;\n(function (AXPPageStatus) {\n // Idle statuses\n AXPPageStatus[\"Idle\"] = \"idle\";\n // Rendering statuses\n AXPPageStatus[\"Rendering\"] = \"rendering\";\n AXPPageStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPPageStatus[\"Processing\"] = \"processing\";\n // Submission statuses\n AXPPageStatus[\"Submitting\"] = \"submitting\";\n AXPPageStatus[\"Submitted\"] = \"submitted\";\n // Validation statuses\n AXPPageStatus[\"Validating\"] = \"validating\";\n AXPPageStatus[\"Validated\"] = \"validated\";\n // Error handling\n AXPPageStatus[\"Error\"] = \"error\";\n})(AXPPageStatus || (AXPPageStatus = {}));\nexport var AXPWidgetStatus;\n(function (AXPWidgetStatus) {\n // Rendering statuses\n AXPWidgetStatus[\"Rendering\"] = \"rendering\";\n AXPWidgetStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPWidgetStatus[\"Processing\"] = \"processing\";\n // Error handling\n AXPWidgetStatus[\"Error\"] = \"error\";\n})(AXPWidgetStatus || (AXPWidgetStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXN0YXR1cy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1zdGF0dXMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksYUFxQlg7QUFyQkQsV0FBWSxhQUFhO0lBQ3JCLGdCQUFnQjtJQUNoQiw4QkFBYSxDQUFBO0lBRWIscUJBQXFCO0lBQ3JCLHdDQUF1QixDQUFBO0lBQ3ZCLHNDQUFxQixDQUFBO0lBRXJCLHNCQUFzQjtJQUN0QiwwQ0FBeUIsQ0FBQTtJQUV6QixzQkFBc0I7SUFDdEIsMENBQXlCLENBQUE7SUFDekIsd0NBQXVCLENBQUE7SUFFdkIsc0JBQXNCO0lBQ3RCLDBDQUF5QixDQUFBO0lBQ3pCLHdDQUF1QixDQUFBO0lBRXZCLGlCQUFpQjtJQUNqQixnQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFyQlcsYUFBYSxLQUFiLGFBQWEsUUFxQnhCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFVWDtBQVZELFdBQVksZUFBZTtJQUN2QixxQkFBcUI7SUFDckIsMENBQXVCLENBQUE7SUFDdkIsd0NBQXFCLENBQUE7SUFFckIsc0JBQXNCO0lBQ3RCLDRDQUF5QixDQUFBO0lBRXpCLGlCQUFpQjtJQUNqQixrQ0FBZSxDQUFBO0FBQ25CLENBQUMsRUFWVyxlQUFlLEtBQWYsZUFBZSxRQVUxQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEFYUFBhZ2VTdGF0dXMge1xuICAgIC8vIElkbGUgc3RhdHVzZXNcbiAgICBJZGxlID0gJ2lkbGUnLCAgICAgICAgICAgICAgICAgLy8gVGhlIHBhZ2UgaXMgaWRsZS5cblxuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIFJlbmRlcmluZyA9ICdyZW5kZXJpbmcnLCAgICAgICAvLyBUaGUgcGFnZSBpcyBiZWluZyByZW5kZXJlZC5cbiAgICBSZW5kZXJlZCA9ICdyZW5kZXJlZCcsICAgICAgICAgLy8gVGhlIHJlbmRlcmluZyBwcm9jZXNzIGlzIGNvbXBsZXRlLiBzaG91bGQgYmUgcmVuYW1lZCB0byBpZGxlXG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgUHJvY2Vzc2luZyA9ICdwcm9jZXNzaW5nJywgICAgIC8vIFRoZSBwYWdlIGlzIHBlcmZvcm1pbmcgYSB0YXNrIG9yIGludGVyYWN0aW9uLlxuXG4gICAgLy8gU3VibWlzc2lvbiBzdGF0dXNlc1xuICAgIFN1Ym1pdHRpbmcgPSAnc3VibWl0dGluZycsICAgLy8gVGhlIGZvcm0gaXMgYmVpbmcgc3VibWl0dGVkLlxuICAgIFN1Ym1pdHRlZCA9ICdzdWJtaXR0ZWQnLCAgICAgLy8gU3VibWlzc2lvbiBpcyBjb21wbGV0ZWQuXG5cbiAgICAvLyBWYWxpZGF0aW9uIHN0YXR1c2VzXG4gICAgVmFsaWRhdGluZyA9ICd2YWxpZGF0aW5nJywgICAgIC8vIFRoZSBmb3JtIGlzIGJlaW5nIHZhbGlkYXRlZC5cbiAgICBWYWxpZGF0ZWQgPSAndmFsaWRhdGVkJywgICAgICAgLy8gVmFsaWRhdGlvbiBpcyBjb21wbGV0ZWQuICBcblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgRXJyb3IgPSAnZXJyb3InLFxufVxuXG5leHBvcnQgZW51bSBBWFBXaWRnZXRTdGF0dXMge1xuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIFJlbmRlcmluZyA9ICdyZW5kZXJpbmcnLCAgICAgICAvLyBUaGUgd2lkZ2V0IGlzIGJlaW5nIHJlbmRlcmVkLlxuICAgIFJlbmRlcmVkID0gJ3JlbmRlcmVkJywgICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIHByb2Nlc3MgaXMgY29tcGxldGUuXG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgUHJvY2Vzc2luZyA9ICdwcm9jZXNzaW5nJywgICAgIC8vIFRoZSB3aWRnZXQgaXMgcGVyZm9ybWluZyBhIHRhc2sgb3IgaW50ZXJhY3Rpb24uXG5cbiAgICAvLyBFcnJvciBoYW5kbGluZ1xuICAgIEVycm9yID0gJ2Vycm9yJywgICAgICAgICAgICAgICAvLyBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgYW55IHBoYXNlLlxufVxuIl19","import { computed, Injectable, signal } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPPageStatus, AXPWidgetStatus } from './widget-status.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPLayoutElement {\n api() {\n return {};\n }\n}\nexport class AXPLayoutBuilderService {\n constructor() {\n this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: \"variables$\" }] : []));\n this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: \"functions$\" }] : []));\n this.onRefresh = new Subject();\n this.widgets = new Map();\n this.onWidgetRegistered = new Subject();\n this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: \"status$\" }] : []));\n this.status = this.status$.asReadonly();\n this.isBusy = computed(() => {\n return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n }\n get variables() {\n return this.variables$();\n }\n get functions() {\n return this.functions$();\n }\n updateStatus() {\n this.status$.update(() => this.detectStatus());\n }\n detectStatus() {\n const statuses = Array.from(this.widgets.values()).map((c) => c.status());\n // Rendering statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Rendering)) {\n return AXPPageStatus.Rendering;\n }\n if (statuses.every((status) => status === AXPWidgetStatus.Rendered)) {\n return AXPPageStatus.Rendered;\n }\n // Processing statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Processing)) {\n return AXPPageStatus.Processing;\n }\n // Error handling\n if (statuses.some((status) => status === AXPWidgetStatus.Error)) {\n return AXPPageStatus.Error;\n }\n return AXPPageStatus.Rendered; // Default to Loaded when all widgets are in a completed state\n }\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n setStatus(status) {\n this.status$.set(status);\n }\n setVariables(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n setFunctions(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n registerWidget(id, widget) {\n this.widgets.set(id, widget);\n this.onWidgetRegistered.next({ id, widget });\n }\n getWidget(id) {\n return this.widgets.get(id);\n }\n /**\n * Waits until a widget with the given id is registered, then resolves with it.\n * If the widget is already registered, resolves immediately.\n * Optionally accepts a timeout (in ms) after which it resolves with undefined.\n */\n async waitForWidget(id, timeoutMs) {\n const existing = this.widgets.get(id);\n if (existing) {\n return existing;\n }\n return new Promise((resolve) => {\n let resolved = false;\n let timer = null;\n const sub = this.onWidgetRegistered.subscribe(({ id: registeredId, widget }) => {\n if (registeredId === id && !resolved) {\n resolved = true;\n sub.unsubscribe();\n if (timer) {\n clearTimeout(timer);\n }\n resolve(widget);\n }\n });\n if (timeoutMs != null && timeoutMs > 0) {\n timer = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n sub.unsubscribe();\n resolve(undefined);\n }\n }, timeoutMs);\n }\n });\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJdkUsTUFBTSxPQUFnQixnQkFBZ0I7SUFJcEMsR0FBRztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLHVCQUF1QjtJQURwQztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFNLEVBQUUsc0RBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLHNEQUFDLENBQUM7UUFFdEQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXZELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztRQUNyQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBNEMsQ0FBQztRQUU3RSxZQUFPLEdBQUcsTUFBTSxDQUFnQixhQUFhLENBQUMsU0FBUyxtREFBQyxDQUFDO1FBQzFELFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5DLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEs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RSxJQUFJLFlBQVksS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNsQixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLEtBQVUsQ0FBQzs4R0EvSFgsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzLCBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBMYXlvdXRFbGVtZW50QVBJID0geyBbbmFtZTogc3RyaW5nXTogU3ViamVjdDxhbnk+IHwgRnVuY3Rpb24gfTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUExheW91dEVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWJzdHJhY3QgZ2V0IHN0YXR1cygpOiBTaWduYWw8QVhQV2lkZ2V0U3RhdHVzPjtcblxuICBhcGkoKTogQVhQTGF5b3V0RWxlbWVudEFQSSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdmFyaWFibGVzJCA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBmdW5jdGlvbnMkID0gc2lnbmFsPHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfT4oe30pO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblJlZnJlc2g6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgd2lkZ2V0cyA9IG5ldyBNYXA8c3RyaW5nLCBBWFBMYXlvdXRFbGVtZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uV2lkZ2V0UmVnaXN0ZXJlZCA9IG5ldyBTdWJqZWN0PHsgaWQ6IHN0cmluZzsgd2lkZ2V0OiBBWFBMYXlvdXRFbGVtZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXMkID0gc2lnbmFsPEFYUFBhZ2VTdGF0dXM+KEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHRoaXMuc3RhdHVzJC5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gW0FYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZywgQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLCBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIGdldCB2YXJpYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVzJCgpO1xuICB9XG5cbiAgZ2V0IGZ1bmN0aW9ucygpOiB7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9ucyQoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTdGF0dXMoKSB7XG4gICAgdGhpcy5zdGF0dXMkLnVwZGF0ZSgoKSA9PiB0aGlzLmRldGVjdFN0YXR1cygpKTtcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0U3RhdHVzKCk6IEFYUFBhZ2VTdGF0dXMge1xuICAgIGNvbnN0IHN0YXR1c2VzID0gQXJyYXkuZnJvbSh0aGlzLndpZGdldHMudmFsdWVzKCkpLm1hcCgoYykgPT4gYy5zdGF0dXMoKSk7XG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nKSkge1xuICAgICAgcmV0dXJuIEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nO1xuICAgIH1cbiAgICBpZiAoc3RhdHVzZXMuZXZlcnkoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUmVuZGVyZWQpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5SZW5kZXJlZDtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzaW5nIHN0YXR1c2VzXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuUHJvY2Vzc2luZykpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlByb2Nlc3Npbmc7XG4gICAgfVxuXG4gICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICBpZiAoc3RhdHVzZXMuc29tZSgoc3RhdHVzKSA9PiBzdGF0dXMgPT09IEFYUFdpZGdldFN0YXR1cy5FcnJvcikpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLkVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlJlbmRlcmVkOyAvLyBEZWZhdWx0IHRvIExvYWRlZCB3aGVuIGFsbCB3aWRnZXRzIGFyZSBpbiBhIGNvbXBsZXRlZCBzdGF0ZVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25SZWZyZXNoLm5leHQoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHNldFN0YXR1cyhzdGF0dXM6IEFYUFBhZ2VTdGF0dXMpIHtcbiAgICB0aGlzLnN0YXR1cyQuc2V0KHN0YXR1cyk7XG4gIH1cblxuICBzZXRWYXJpYWJsZXMoa2V5c1ZhbHVlczogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgc2V0VmFyaWFibGVzKC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID09IDApIHJldHVybjtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAxKSB0aGlzLnZhcmlhYmxlcyQuc2V0KGFyZ3NbMF0pO1xuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09IDIpIHtcbiAgICAgIHRoaXMudmFyaWFibGVzJC51cGRhdGUoKHYpID0+IHNldCh2LCBhcmdzWzBdLCBhcmdzWzFdKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RnVuY3Rpb25zKGtleXNWYWx1ZXM6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldEZ1bmN0aW9ucyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMSkgdGhpcy5mdW5jdGlvbnMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLmZ1bmN0aW9ucyQudXBkYXRlKCh2KSA9PiBzZXQodiwgYXJnc1swXSwgYXJnc1sxXSkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyV2lkZ2V0KGlkOiBzdHJpbmcsIHdpZGdldDogQVhQTGF5b3V0RWxlbWVudCkge1xuICAgIHRoaXMud2lkZ2V0cy5zZXQoaWQsIHdpZGdldCk7XG4gICAgdGhpcy5vbldpZGdldFJlZ2lzdGVyZWQubmV4dCh7IGlkLCB3aWRnZXQgfSk7XG4gIH1cblxuICBnZXRXaWRnZXQoaWQ6IHN0cmluZyk6IEFYUExheW91dEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyB1bnRpbCBhIHdpZGdldCB3aXRoIHRoZSBnaXZlbiBpZCBpcyByZWdpc3RlcmVkLCB0aGVuIHJlc29sdmVzIHdpdGggaXQuXG4gICAqIElmIHRoZSB3aWRnZXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAgICogT3B0aW9uYWxseSBhY2NlcHRzIGEgdGltZW91dCAoaW4gbXMpIGFmdGVyIHdoaWNoIGl0IHJlc29sdmVzIHdpdGggdW5kZWZpbmVkLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvcldpZGdldChpZDogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPEFYUExheW91dEVsZW1lbnQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMud2lkZ2V0cy5nZXQoaWQpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgcmV0dXJuIGV4aXN0aW5nO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxBWFBMYXlvdXRFbGVtZW50IHwgdW5kZWZpbmVkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2U7XG4gICAgICBsZXQgdGltZXI6IGFueSA9IG51bGw7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLm9uV2lkZ2V0UmVnaXN0ZXJlZC5zdWJzY3JpYmUoKHsgaWQ6IHJlZ2lzdGVyZWRJZCwgd2lkZ2V0IH0pID0+IHtcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWRJZCA9PT0gaWQgJiYgIXJlc29sdmVkKSB7XG4gICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIGlmICh0aW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZSh3aWRnZXQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRpbWVvdXRNcyAhPSBudWxsICYmIHRpbWVvdXRNcyA+IDApIHtcbiAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHJlc29sdmUodW5kZWZpbmVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHRpbWVvdXRNcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG59XG4iXX0=","import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, get, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { setSmart } from '@acorex/platform/core';\nexport class AXPLayoutContextChangeEvent {\n}\nexport const AXPLayoutBuilderContextStore = signalStore(\n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = get(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return get(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvY29udGV4dC1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFPLE9BQU8sRUFBUyxNQUFNLFdBQVcsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUlqRCxNQUFNLE9BQU8sMkJBQTJCO0NBTXZDO0FBRUQsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsV0FBVztBQUNuRCxnQkFBZ0I7QUFDaEIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDYixJQUFJLEVBQUUsRUFBRSxFQUFFLHNCQUFzQjtJQUNoQyxLQUFLLEVBQUUsV0FBb0MsRUFBRSxnQkFBZ0I7SUFDN0QsZUFBZSxFQUFFLEVBQUUsRUFBRSwwQ0FBMEM7SUFDL0QsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLGlDQUFpQztJQUN2RCxVQUFVLEVBQUU7UUFDUixLQUFLLEVBQUUsV0FBVztLQUNVLEVBQUUsb0JBQW9CO0NBQ3pELENBQUMsQ0FBQztBQUVILG1CQUFtQjtBQUNuQixZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEtB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QUFDO0lBQ1AsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixRQUFRLENBQUMsSUFBWTtRQUNqQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNKLENBQUMsQ0FBQyxDQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaWduYWxTdG9yZSwgd2l0aFN0YXRlLCB3aXRoQ29tcHV0ZWQsIHdpdGhNZXRob2RzLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgc2V0LCBpc0VxdWFsLCBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2V0U21hcnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBWFBMYXlvdXRDb250ZXh0U3RhdGUgPSAnaW5pdGlhdGVkJyB8ICdyZXN0b3JlZCcgfCAnY2hhbmdlZCcgfCAncGF0Y2gnO1xuXG5leHBvcnQgY2xhc3MgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50IHtcbiAgICBvbGRWYWx1ZT86IGFueTtcbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHN0YXRlOiBBWFBMYXlvdXRDb250ZXh0U3RhdGU7XG4gICAgZGF0YTogYW55O1xufVxuXG5leHBvcnQgY29uc3QgQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICAgIC8vIEluaXRpYWwgU3RhdGVcbiAgICB3aXRoU3RhdGUoKCkgPT4gKHtcbiAgICAgICAgZGF0YToge30sIC8vIFNoYXJlZCBjb250ZXh0IGRhdGFcbiAgICAgICAgc3RhdGU6ICdpbml0aWF0ZWQnIGFzIEFYUExheW91dENvbnRleHRTdGF0ZSwgLy8gQ3VycmVudCBzdGF0ZVxuICAgICAgICBpbml0aWFsU25hcHNob3Q6IHt9LCAvLyBTbmFwc2hvdCBvZiB0aGUgZmlyc3QgaW5pdGlhbGl6ZWQgc3RhdGVcbiAgICAgICAgcHJldmlvdXNTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBsYXN0Q2hhbmdlOiB7XG4gICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgIH0gYXMgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50LCAvLyBMYXN0IGNoYW5nZSBldmVudFxuICAgIH0pKSxcblxuICAgIC8vIENvbXB1dGVkIFNpZ25hbHNcbiAgICB3aXRoQ29tcHV0ZWQoKHsgZGF0YSwgc3RhdGUsIGxhc3RDaGFuZ2UsIGluaXRpYWxTbmFwc2hvdCwgcHJldmlvdXNTbmFwc2hvdCB9KSA9PiAoe1xuICAgICAgICBpc0NoYW5nZWQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdjaGFuZ2VkJyksXG4gICAgICAgIGlzUmVzZXQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdyZXN0b3JlZCcpLFxuICAgICAgICBpc0luaXRpYXRlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2luaXRpYXRlZCcpLFxuICAgICAgICBpc0VtcHR5OiBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhkYXRhKCkpLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIGlzRGlydHk6IGNvbXB1dGVkKCgpID0+ICFpc0VxdWFsKGRhdGEoKSwgcHJldmlvdXNTbmFwc2hvdCgpKSksIFxuICAgICAgICBzbmFwc2hvdDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGRhdGEoKSkpLCAvLyBDdXJyZW50IGRhdGEgc25hcHNob3RcbiAgICAgICAgaW5pdGlhbDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGluaXRpYWxTbmFwc2hvdCgpKSksIC8vIEluaXRpYWwgc25hcHNob3RcbiAgICAgICAgcHJldmlvdXM6IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcChwcmV2aW91c1NuYXBzaG90KCkpKSwgLy8gUHJldmlvdXMgc25hcHNob3RcbiAgICAgICAgY2hhbmdlRXZlbnQ6IGNvbXB1dGVkKCgpID0+IGxhc3RDaGFuZ2UoKSksIC8vIFJlYWN0aXZlIGxhc3QgY2hhbmdlIGV2ZW50XG4gICAgfSkpLFxuXG4gICAgLy8gTWV0aG9kcyBmb3IgU3RhdGUgTWFuYWdlbWVudFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgICAgLy8gVXBkYXRlIGEgc3BlY2lmaWMgdmFsdWVcbiAgICAgICAgdXBkYXRlKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKTtcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0KGN1cnJlbnREYXRhLCBwYXRoKTtcblxuICAgICAgICAgICAgLy8gU2tpcCBpZiB0aGUgdmFsdWUgaGFzbid0IGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmFsdWUgYW5kIHByZXBhcmUgdGhlIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBzZXRTbWFydChjdXJyZW50RGF0YSwgcGF0aCwgdmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gUGF0Y2ggdGhlIHN0YXRlXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGxhc3RDaGFuZ2U6IGNoYW5nZUV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcGF0Y2goY29udGV4dDoge30pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gY2xvbmVEZWVwKHN0b3JlLmRhdGEoKSk7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCBwcmVwYXJlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0geyAuLi5jdXJyZW50RGF0YSwgLi4uY29udGV4dCB9O1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUExheW91dENvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3BhdGNoJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFBhdGNoIHRoZSBzdGF0ZVxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgIHJlc2V0KCkge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbERhdGEgPSBzdG9yZS5pbml0aWFsKCk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKSwgLy8gQ3VycmVudCBkYXRhIGJlY29tZXMgb2xkIHZhbHVlXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdyZXN0b3JlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3Jlc3RvcmVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gICAgICAgIHNldChpbml0aWFsRGF0YTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHN0b3JlLmRhdGEoKTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKGN1cnJlbnREYXRhLCBpbml0aWFsRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgc3RhdGUgbWF0Y2hlcyB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBpbml0aWFsU25hcHNob3Q6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFNhdmUgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFzIHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEdldCBhIHNwZWNpZmljIHZhbHVlXG4gICAgICAgIGdldFZhbHVlKHBhdGg6IHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGdldChzdG9yZS5kYXRhKCksIHBhdGgpO1xuICAgICAgICB9LFxuICAgIH0pKVxuKTtcbiJdfQ==","const AXPWidgetsCatalog = {\n timeDuration: 'time-duration',\n tagable: 'tagable-editor',\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n largeText: 'large-text-editor',\n number: 'number-editor',\n numberUnit: 'number-unit-editor',\n password: 'password-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n table: 'table-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n fileUploader: 'file-uploader',\n fileTypeExtension: 'file-type-extension',\n map: 'map',\n imageMarker: 'image-marker',\n image: 'image',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n advancedGrid: 'advanced-grid-layout',\n advancedGridItem: 'advanced-grid-item-layout',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n // gridRow: 'grid-row-layout',\n widgetSelector: 'widget-selector',\n template: 'template',\n templateDesigner: 'template-designer',\n cronJob: 'cron-job',\n spacing: 'spacing',\n direction: 'direction',\n border: 'border',\n flexLayout: 'flex-layout',\n flexItem: 'flex-item-layout',\n tableLayout: 'table-layout',\n tableItem: 'table-item-layout',\n avatar: 'avatar',\n themePaletteChooser: 'theme-palette-chooser',\n themeModeChooser: 'theme-mode-chooser',\n menuOrientationChooser: 'menu-orientation-chooser',\n fontStyleChooser: 'font-style-chooser',\n fontSizeChooser: 'font-size-chooser',\n iconChooser: 'icon-chooser',\n themeColorChooser: 'theme-color-chooser',\n gridOptions: 'grid-options',\n gridItemOptions: 'grid-item-options',\n advancedGridOptions: 'advanced-grid-options',\n stringFilter: 'string-filter',\n numberFilter: 'number-filter',\n dateTimeFilter: 'datetime-filter',\n booleanFilter: 'boolean-filter',\n lookupFilter: 'lookup-filter',\n flexOptions: 'flex-options',\n flexItemOptions: 'flex-item-options',\n selectFilter: 'select-filter',\n requiredValidation: 'required-validation',\n regularExpressionValidation: 'regular-expression-validation',\n minLengthValidation: 'min-length-validation',\n maxLengthValidation: 'max-length-validation',\n lessThanValidation: 'less-than-validation',\n greaterThanValidation: 'greater-than-validation',\n betweenValidation: 'between-validation',\n equalValidation: 'equal-validation',\n callbackValidation: 'callback-validation',\n donutChart: 'donut-chart',\n lineChart: 'line-chart',\n barChart: 'bar-chart',\n gaugeChart: 'gauge-chart',\n stickyNote: 'sticky-note',\n clockCalendar: 'clock-calendar',\n analogClock: 'analog-clock',\n weather: 'weather',\n minimalWeather: 'minimal-weather',\n advancedWeather: 'advanced-weather',\n metaData: 'meta-data-editor',\n templateEditor: 'template-box-editor',\n panel: 'panel',\n notification: 'notification',\n taskBoard: 'task-board',\n comment: 'comment',\n list: 'list',\n listToolbar: 'list-toolbar',\n entityList: 'entity-list',\n documentUploader: 'document-uploader',\n};\nexport { AXPWidgetsCatalog };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGlCQUFpQixHQUFzQjtJQUMzQyxZQUFZLEVBQUUsZUFBZTtJQUM3QixPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFFBQVEsRUFBRSxpQkFBaUI7SUFDM0IsS0FBSyxFQUFFLGNBQWM7SUFDckIsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxJQUFJLEVBQUUsYUFBYTtJQUNuQixLQUFLLEVBQUUsY0FBYztJQUNyQixNQUFNLEVBQUUsZUFBZTtJQUN2QixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLGNBQWM7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxzQkFBc0I7SUFDcEMsZ0JBQWdCLEVBQUUsMkJBQTJCO0lBQzdDLElBQUksRUFBRSxhQUFhO0lBQ25CLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsOEJBQThCO0lBQzlCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsUUFBUSxFQUFFLFVBQVU7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLE9BQU8sRUFBRSxVQUFVO0lBQ25CLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsU0FBUyxFQUFFLG1CQUFtQjtJQUM5QixNQUFNLEVBQUUsUUFBUTtJQUNoQixtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsZ0JBQWdCLEVBQUUsb0JBQW9CO0lBQ3RDLHNCQUFzQixFQUFFLDBCQUEwQjtJQUNsRCxnQkFBZ0IsRUFBRSxvQkFBb0I7SUFDdEMsZUFBZSxFQUFFLG1CQUFtQjtJQUNwQyxXQUFXLEVBQUUsY0FBYztJQUMzQixpQkFBaUIsRUFBRSxxQkFBcUI7SUFDeEMsV0FBVyxFQUFFLGNBQWM7SUFDM0IsZUFBZSxFQUFFLG1CQUFtQjtJQUNwQyxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFlBQVksRUFBRSxlQUFlO0lBQzdCLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0Isa0JBQWtCLEVBQUUscUJBQXFCO0lBQ3pDLDJCQUEyQixFQUFFLCtCQUErQjtJQUM1RCxtQkFBbUIsRUFBRSx1QkFBdUI7SUFDNUMsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxxQkFBcUIsRUFBRSx5QkFBeUI7SUFDaEQsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsa0JBQWtCLEVBQUUscUJBQXFCO0lBQ3pDLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLGFBQWEsRUFBRSxnQkFBZ0I7SUFDL0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsY0FBYyxFQUFFLHFCQUFxQjtJQUNyQyxLQUFLLEVBQUUsT0FBTztJQUNkLFlBQVksRUFBRSxjQUFjO0lBQzVCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osV0FBVyxFQUFFLGNBQWM7SUFDM0IsVUFBVSxFQUFFLGFBQWE7SUFFekIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldFR5cGVzTWFwIH0gZnJvbSAnLi93aWRnZXQtbWFwJztcblxuY29uc3QgQVhQV2lkZ2V0c0NhdGFsb2c6IEFYUFdpZGdldFR5cGVzTWFwID0ge1xuICB0aW1lRHVyYXRpb246ICd0aW1lLWR1cmF0aW9uJyxcbiAgdGFnYWJsZTogJ3RhZ2FibGUtZWRpdG9yJyxcbiAgY2hlY2tib3g6ICdjaGVja2JveC1lZGl0b3InLFxuICBjb2xvcjogJ2NvbG9yLWVkaXRvcicsXG4gIGNvbnRhY3Q6ICdjb250YWN0LWVkaXRvcicsXG4gIGRhdGVUaW1lOiAnZGF0ZS10aW1lLWVkaXRvcicsXG4gIGxhcmdlVGV4dDogJ2xhcmdlLXRleHQtZWRpdG9yJyxcbiAgbnVtYmVyOiAnbnVtYmVyLWVkaXRvcicsXG4gIG51bWJlclVuaXQ6ICdudW1iZXItdW5pdC1lZGl0b3InLFxuICBwYXNzd29yZDogJ3Bhc3N3b3JkLWVkaXRvcicsXG4gIHJpY2hUZXh0OiAncmljaC10ZXh0LWVkaXRvcicsXG4gIHNlbGVjdDogJ3NlbGVjdC1lZGl0b3InLFxuICBzZWxlY3Rpb25MaXN0OiAnc2VsZWN0aW9uLWxpc3QtZWRpdG9yJyxcbiAgdGV4dDogJ3RleHQtZWRpdG9yJyxcbiAgdGFibGU6ICd0YWJsZS1lZGl0b3InLFxuICB0b2dnbGU6ICd0b2dnbGUtZWRpdG9yJyxcbiAgYmxvY2tMYXlvdXQ6ICdibG9jay1sYXlvdXQnLFxuICBwYWdlTGF5b3V0OiAncGFnZS1sYXlvdXQnLFxuICByZXBlYXRlckxheW91dDogJ3JlcGVhdGVyLWxheW91dCcsXG4gIHRleHRCbG9ja0xheW91dDogJ3RleHQtYmxvY2stbGF5b3V0JyxcbiAgZmlsZVVwbG9hZGVyOiAnZmlsZS11cGxvYWRlcicsXG4gIGZpbGVUeXBlRXh0ZW5zaW9uOiAnZmlsZS10eXBlLWV4dGVuc2lvbicsXG4gIG1hcDogJ21hcCcsXG4gIGltYWdlTWFya2VyOiAnaW1hZ2UtbWFya2VyJyxcbiAgaW1hZ2U6ICdpbWFnZScsXG4gIGdhbGxlcnk6ICdnYWxsZXJ5JyxcbiAgc2lnbmF0dXJlOiAnc2lnbmF0dXJlJyxcbiAgYnV0dG9uQWN0aW9uOiAnYnV0dG9uLWFjdGlvbicsXG4gIGRvY3VtZW50OiAnZG9jdW1lbnQtbGF5b3V0JyxcbiAgbG9va3VwOiAnbG9va3VwLWVkaXRvcicsXG4gIGZvcm1GaWVsZDogJ2Zvcm0tZmllbGQnLFxuICBxcmNvZGU6ICdxcmNvZGUnLFxuICBhZHZhbmNlZEdyaWQ6ICdhZHZhbmNlZC1ncmlkLWxheW91dCcsXG4gIGFkdmFuY2VkR3JpZEl0ZW06ICdhZHZhbmNlZC1ncmlkLWl0ZW0tbGF5b3V0JyxcbiAgZ3JpZDogJ2dyaWQtbGF5b3V0JyxcbiAgZ3JpZEl0ZW06ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgLy8gZ3JpZFJvdzogJ2dyaWQtcm93LWxheW91dCcsXG4gIHdpZGdldFNlbGVjdG9yOiAnd2lkZ2V0LXNlbGVjdG9yJyxcbiAgdGVtcGxhdGU6ICd0ZW1wbGF0ZScsXG4gIHRlbXBsYXRlRGVzaWduZXI6ICd0ZW1wbGF0ZS1kZXNpZ25lcicsXG4gIGNyb25Kb2I6ICdjcm9uLWpvYicsXG4gIHNwYWNpbmc6ICdzcGFjaW5nJyxcbiAgZGlyZWN0aW9uOiAnZGlyZWN0aW9uJyxcbiAgYm9yZGVyOiAnYm9yZGVyJyxcbiAgZmxleExheW91dDogJ2ZsZXgtbGF5b3V0JyxcbiAgZmxleEl0ZW06ICdmbGV4LWl0ZW0tbGF5b3V0JyxcbiAgdGFibGVMYXlvdXQ6ICd0YWJsZS1sYXlvdXQnLFxuICB0YWJsZUl0ZW06ICd0YWJsZS1pdGVtLWxheW91dCcsXG4gIGF2YXRhcjogJ2F2YXRhcicsXG4gIHRoZW1lUGFsZXR0ZUNob29zZXI6ICd0aGVtZS1wYWxldHRlLWNob29zZXInLFxuICB0aGVtZU1vZGVDaG9vc2VyOiAndGhlbWUtbW9kZS1jaG9vc2VyJyxcbiAgbWVudU9yaWVudGF0aW9uQ2hvb3NlcjogJ21lbnUtb3JpZW50YXRpb24tY2hvb3NlcicsXG4gIGZvbnRTdHlsZUNob29zZXI6ICdmb250LXN0eWxlLWNob29zZXInLFxuICBmb250U2l6ZUNob29zZXI6ICdmb250LXNpemUtY2hvb3NlcicsXG4gIGljb25DaG9vc2VyOiAnaWNvbi1jaG9vc2VyJyxcbiAgdGhlbWVDb2xvckNob29zZXI6ICd0aGVtZS1jb2xvci1jaG9vc2VyJyxcbiAgZ3JpZE9wdGlvbnM6ICdncmlkLW9wdGlvbnMnLFxuICBncmlkSXRlbU9wdGlvbnM6ICdncmlkLWl0ZW0tb3B0aW9ucycsXG4gIGFkdmFuY2VkR3JpZE9wdGlvbnM6ICdhZHZhbmNlZC1ncmlkLW9wdGlvbnMnLFxuICBzdHJpbmdGaWx0ZXI6ICdzdHJpbmctZmlsdGVyJyxcbiAgbnVtYmVyRmlsdGVyOiAnbnVtYmVyLWZpbHRlcicsXG4gIGRhdGVUaW1lRmlsdGVyOiAnZGF0ZXRpbWUtZmlsdGVyJyxcbiAgYm9vbGVhbkZpbHRlcjogJ2Jvb2xlYW4tZmlsdGVyJyxcbiAgbG9va3VwRmlsdGVyOiAnbG9va3VwLWZpbHRlcicsXG4gIGZsZXhPcHRpb25zOiAnZmxleC1vcHRpb25zJyxcbiAgZmxleEl0ZW1PcHRpb25zOiAnZmxleC1pdGVtLW9wdGlvbnMnLFxuICBzZWxlY3RGaWx0ZXI6ICdzZWxlY3QtZmlsdGVyJyxcbiAgcmVxdWlyZWRWYWxpZGF0aW9uOiAncmVxdWlyZWQtdmFsaWRhdGlvbicsXG4gIHJlZ3VsYXJFeHByZXNzaW9uVmFsaWRhdGlvbjogJ3JlZ3VsYXItZXhwcmVzc2lvbi12YWxpZGF0aW9uJyxcbiAgbWluTGVuZ3RoVmFsaWRhdGlvbjogJ21pbi1sZW5ndGgtdmFsaWRhdGlvbicsXG4gIG1heExlbmd0aFZhbGlkYXRpb246ICdtYXgtbGVuZ3RoLXZhbGlkYXRpb24nLFxuICBsZXNzVGhhblZhbGlkYXRpb246ICdsZXNzLXRoYW4tdmFsaWRhdGlvbicsXG4gIGdyZWF0ZXJUaGFuVmFsaWRhdGlvbjogJ2dyZWF0ZXItdGhhbi12YWxpZGF0aW9uJyxcbiAgYmV0d2VlblZhbGlkYXRpb246ICdiZXR3ZWVuLXZhbGlkYXRpb24nLFxuICBlcXVhbFZhbGlkYXRpb246ICdlcXVhbC12YWxpZGF0aW9uJyxcbiAgY2FsbGJhY2tWYWxpZGF0aW9uOiAnY2FsbGJhY2stdmFsaWRhdGlvbicsXG4gIGRvbnV0Q2hhcnQ6ICdkb251dC1jaGFydCcsXG4gIGxpbmVDaGFydDogJ2xpbmUtY2hhcnQnLFxuICBiYXJDaGFydDogJ2Jhci1jaGFydCcsXG4gIGdhdWdlQ2hhcnQ6ICdnYXVnZS1jaGFydCcsXG4gIHN0aWNreU5vdGU6ICdzdGlja3ktbm90ZScsXG4gIGNsb2NrQ2FsZW5kYXI6ICdjbG9jay1jYWxlbmRhcicsXG4gIGFuYWxvZ0Nsb2NrOiAnYW5hbG9nLWNsb2NrJyxcbiAgd2VhdGhlcjogJ3dlYXRoZXInLFxuICBtaW5pbWFsV2VhdGhlcjogJ21pbmltYWwtd2VhdGhlcicsXG4gIGFkdmFuY2VkV2VhdGhlcjogJ2FkdmFuY2VkLXdlYXRoZXInLFxuICBtZXRhRGF0YTogJ21ldGEtZGF0YS1lZGl0b3InLFxuICB0ZW1wbGF0ZUVkaXRvcjogJ3RlbXBsYXRlLWJveC1lZGl0b3InLFxuICBwYW5lbDogJ3BhbmVsJyxcbiAgbm90aWZpY2F0aW9uOiAnbm90aWZpY2F0aW9uJyxcbiAgdGFza0JvYXJkOiAndGFzay1ib2FyZCcsXG4gIGNvbW1lbnQ6ICdjb21tZW50JyxcbiAgbGlzdDogJ2xpc3QnLFxuICBsaXN0VG9vbGJhcjogJ2xpc3QtdG9vbGJhcicsXG4gIGVudGl0eUxpc3Q6ICdlbnRpdHktbGlzdCcsXG5cbiAgZG9jdW1lbnRVcGxvYWRlcjogJ2RvY3VtZW50LXVwbG9hZGVyJyxcbn07XG5cbmV4cG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH07XG4iXX0=","import { InjectionToken } from '@angular/core';\nimport { cloneDeep, isNil, merge } from 'lodash-es';\nimport { AXPWidgetsCatalog } from './widget-catalog';\nexport function cloneProperty(property, values) {\n return merge(cloneDeep(property), values);\n}\nexport function createStringProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createNumberProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'number',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.number,\n options: ctor.options,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createBooleanProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport function createSelectProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken('AXP_WIDGET_COLUMN_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBNkJyRCxNQUFNLFVBQVUsYUFBYSxDQUMzQixRQUEyQixFQUMzQixNQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQU9wQztJQUNDLE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sRUFBRTtZQUNOLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUM1QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUM3QjtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUNwRCxDQUFDO0FBQ0os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QyxDQUFDO2lCQUN6RzthQUNGO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBaUNELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFxQixrQkFBa0IsQ0FBQyxDQUFDO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUEyQix5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhQRGF0YVR5cGUsXG4gIEFYUE1ldGFEYXRhLFxuICBBWFBPcHRpb25zRGF0YSxcbiAgQVhQUGFydGlhbE5lc3RlZCxcbiAgQVhQVmFsaWRhdGlvblJ1bGVzLFxuICBBWFBWYWx1ZVRyYW5zZm9ybWVyRnVuY3Rpb25zLFxuICBBWFBXaWRnZXRUcmlnZ2Vycyxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzTmlsLCBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJy4vd2lkZ2V0LWNhdGFsb2cnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q2F0ZWdvcnkgfSBmcm9tICcuL3dpZGdldC1jYXRlZ29yaWVzJztcbmltcG9ydCB7IEFYUFdpZGdldEdyb3VwIH0gZnJvbSAnLi93aWRnZXQtZ3JvdXAudHlwZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0VHlwZXNNYXAgfSBmcm9tICcuL3dpZGdldC1tYXAnO1xuaW1wb3J0IHsgQVhQUGFnZVN0YXR1cyB9IGZyb20gJy4vd2lkZ2V0LXN0YXR1cy50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICBvcmRlcj86IG51bWJlcjtcbiAgc2NoZW1hOiB7XG4gICAgZGF0YVR5cGU6IEFYUERhdGFUeXBlO1xuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnkgfCBzdHJpbmcgfCAoKGNvbnRleHQ6IGFueSB8IG51bGwpID0+IGFueSk7XG4gICAgaW50ZXJmYWNlOiBSZXF1aXJlZDxQaWNrPEFYUFdpZGdldE5vZGUsICdwYXRoJz4+ICYgT21pdDxBWFBXaWRnZXROb2RlLCAncGF0aCc+O1xuICB9O1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhQVmFsaWRhdGlvblJ1bGVzO1xuICB2aXNpYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVQcm9wZXJ0eShcbiAgcHJvcGVydHk6IEFYUFdpZGdldFByb3BlcnR5LFxuICB2YWx1ZXM6IEFYUFBhcnRpYWxOZXN0ZWQ8QVhQV2lkZ2V0UHJvcGVydHk+XG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyaW5nUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOdW1iZXJQcm9wZXJ0eShjdG9yOiB7XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIG9wdGlvbnM/OiB7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgZGVjaW1hbHM/OiBudW1iZXI7XG4gIH07XG59KTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICB0aXRsZTogY3Rvci50aXRsZSxcbiAgICBncm91cDogY3Rvci5ncm91cCxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgIG9wdGlvbnM6IGN0b3Iub3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdIHwgYW55O1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8geyBpZDogY3Rvci5kZWZhdWx0VmFsdWUsIHRpdGxlOiBjdG9yLmRlZmF1bHRWYWx1ZSB9XG4gICAgICAgICAgOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IGN0b3IuZGF0YVNvdXJjZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IGlkOiBpdGVtLCB0aXRsZTogaXRlbSB9IDogaXRlbSkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHZpc2libGU6IGN0b3IudmlzaWJsZSA/PyB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGUge1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgbW9kZT86IEFYUFdpZGdldFJlbmRlck1vZGVcbiAgcGF0aD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHZhbHVlVHJhbnNmb3Jtcz86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuIHtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbiAgbm9kZTogQVhQV2lkZ2V0Tm9kZTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICB0eXBlOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbiBleHRlbmRzIEFYUFdpZGdldENvbHVtbk5vZGUge1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Tm9kZVRva2VuPignQVhQX1dJREdFVF9UT0tFTicpO1xuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldENvbHVtbk5vZGVUb2tlbj4oJ0FYUF9XSURHRVRfQ09MVU1OX1RPS0VOJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiAoKSA9PiBQcm9taXNlPGFueT47XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHMge1xuICBkZXNpZ25lcj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgdmlldz86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZWRpdD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgcHJpbnQ/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGNvbHVtbj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgZmlsdGVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRWaWV3VHlwZSA9ICdjb250YWluZXInIHwgJ2VkaXRvcicgfCAnYWN0aW9uJyB8ICd2aWV3JyB8ICdmaWx0ZXInIHwgJ3ZhbGlkYXRpb24nIHwgJ2Rhc2hib2FyZCc7XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldERlc2lnbmVyT3B0aW9uc01hcCA9IHtcbiAgY29udGFpbmVyOiB7IGNhbkluc2VydDogYm9vbGVhbiB9O1xuICBlZGl0b3I6IHtcbiAgICBuZWVkTGFiZWw6IGJvb2xlYW47XG4gIH07XG4gIGFjdGlvbjoge307XG4gIHZpZXc6IHt9O1xufTtcblxuZXhwb3J0IHR5cGUgQVhQRXh0cmFjdFdpZGdldENvbmZpZzxUPiA9IHtcbiAgdHlwZTogQVhQV2lkZ2V0Vmlld1R5cGU7XG4gIGRlc2lnbmVyOiBUIGV4dGVuZHMgeyB0eXBlOiBpbmZlciBWIH1cbiAgPyBWIGV4dGVuZHMga2V5b2YgQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwXG4gID8gQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwW1ZdXG4gIDogYW55XG4gIDogYW55O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWc8VCA9IGFueT4ge1xuICBuYW1lOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgYWxpYXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNhdGVnb3JpZXM/OiBBWFBXaWRnZXRDYXRlZ29yeSB8IEFYUFdpZGdldENhdGVnb3J5W107XG4gIGdyb3Vwcz86IEFYUFdpZGdldEdyb3VwW107XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICBjb21wb25lbnRzOiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHR5cGU6IEFYUEV4dHJhY3RXaWRnZXRDb25maWc8VD5bJ3R5cGUnXTtcbiAgZGVzaWduZXI/OiBBWFBFeHRyYWN0V2lkZ2V0Q29uZmlnPFQ+WydkZXNpZ25lciddO1xuICBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgZGVmYXVsdEZpbHRlcldpZGdldE5hbWU/OlxuICB8ICdzdHJpbmctZmlsdGVyJ1xuICB8ICdudW1iZXItZmlsdGVyJ1xuICB8ICdkYXRldGltZS1maWx0ZXInXG4gIHwgJ2Jvb2xlYW4tZmlsdGVyJ1xuICB8ICdzZWxlY3QtZmlsdGVyJ1xuICB8ICdsb29rdXAtZmlsdGVyJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgZXh0ZW5kZWRXaWRnZXQge1xuICB3aWRnZXQ6IEFYUFdpZGdldENvbmZpZztcbiAgcGFyZW50TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRSZW5kZXJNb2RlID0ga2V5b2YgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRCdWlsZGVyU3RhdHVzQ2hhbmdlZEV2ZW50IHtcbiAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzO1xufVxuXG5cbiJdfQ==","import { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinitionProviderService, extractValue, } from '@acorex/platform/core';\nimport { computed, effect, ElementRef, inject, Injectable, signal } from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isObjectLike, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPBaseWidgetComponent extends AXPLayoutElement {\n constructor() {\n super(...arguments);\n this.token = inject(AXP_WIDGET_TOKEN);\n this.host = inject(ElementRef).nativeElement;\n this.layoutService = inject(AXPLayoutBuilderService);\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.config = this.token.config;\n this.node = this.token.node;\n this.name = this.token.node.name;\n this.component = this;\n this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = new Subject();\n this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = this._status.asReadonly();\n this.onStatusChanged = new BehaviorSubject(this._status());\n this.#statusEffect = effect(() => {\n this.onStatusChanged.next(this.status());\n }, ...(ngDevMode ? [{ debugName: \"#statusEffect\" }] : []));\n this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: \"_children\" }] : []));\n this.children = this._children.asReadonly();\n }\n get id() {\n return this._id;\n }\n #statusEffect;\n outputs() {\n return [];\n }\n ngOnInit() {\n if (get(this.node, '__meta__.added')) {\n this.onAdded();\n }\n this.setStatus(AXPWidgetStatus.Rendered);\n }\n setStatus(status) {\n this._status.set(status);\n this.layoutService.updateStatus();\n }\n setOptions(values) {\n const oldValue = this.options();\n const value = cloneDeep(values);\n this._options.set({ ...oldValue, ...value });\n this.onOptionsChanged.next({ sender: this });\n }\n output(name) {\n const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c));\n if (outputs.some((c) => c.name == name)) {\n const opt = get(this, name);\n if (typeof opt == 'function') {\n return opt();\n }\n return opt;\n }\n return null;\n }\n call(name, ...args) {\n const fn = get(this, name);\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n setChildren(children) {\n this._children.set([...children]);\n }\n onAdded() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.path = this.token.node.path;\n this.defaultValue = this.token.defaultValue ?? this.token.node.defaultValue;\n this._isValueWidget = false;\n this.isValueWidget = () => this._isValueWidget;\n this.onValueChanged = new Subject();\n this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: \"fullPath\" }] : []));\n this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: \"parentPath\" }] : []));\n this.getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()) : null;\n }, ...(ngDevMode ? [{ debugName: \"getValue\", equal: isEqual }] : [{ equal: isEqual }]));\n this.validationRules = computed(() => {\n const validationsRaw = this.options()['validations'];\n if (validationsRaw == null) {\n return [];\n }\n return Object.values(this.options()['validations'])\n .filter((c) => c != null)\n .map((c) => ({\n rule: c.rule,\n message: c.message,\n options: c.options,\n }));\n }, ...(ngDevMode ? [{ debugName: \"validationRules\" }] : []));\n }\n ngOnInit() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n if (!isNil(this.defaultValue) && isNil(this.getValue())) {\n this.setValue(this.defaultValue);\n }\n }\n //\n super.ngOnInit();\n }\n extractValue(path) {\n const rawValue = this.contextService.getValue(path);\n if (this.node.valueTransforms?.getter) {\n return this.node.valueTransforms?.getter(rawValue);\n }\n return rawValue;\n }\n setValue(value) {\n if (this.node.valueTransforms?.setter) {\n value = this.node.valueTransforms?.setter(value);\n }\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (isNil(value) && isNil(oldValue)) {\n return;\n }\n if (isEqual(oldValue, value)) {\n return;\n }\n if (this.fullPath()) {\n this.contextService.update(this.fullPath(), value);\n this.onValueChanged.next({ sender: this });\n }\n }\n detectFullPath() {\n const sections = [];\n const ids = [];\n //\n let parent = this;\n //\n while (parent) {\n const isValueWidget = parent instanceof AXPValueWidgetComponent && parent.isValueWidget();\n const valueParent = parent;\n const path = valueParent.path ?? (isValueWidget ? valueParent.name : null);\n const id = valueParent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null && isValueWidget) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this.parentPath.set(sections.slice(0, sections.length - 1).join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.layoutService.registerWidget(this._id, this);\n }\n }\n handleValueChanged(e) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPDataListWidgetComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.dataService = inject(AXPDataSourceDefinitionProviderService);\n this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: \"valueField\" }] : []));\n this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.isReady = computed(() => {\n const key = this.dataSource().config?.key;\n const valueField = this.valueField();\n const result = key == valueField;\n return result;\n }, ...(ngDevMode ? [{ debugName: \"isReady\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n this.rf = effect(async () => {\n const rawValue = this.options()['dataSource'];\n // static datasource class\n if (rawValue instanceof AXDataSource) {\n this.dataSource.set(rawValue);\n }\n // static array datasource\n else if (Array.isArray(rawValue)) {\n const ds = new AXDataSource({\n key: this.valueField(),\n pageSize: 10,\n load: async (e) => {\n const raw = this.options()['dataSource'];\n return {\n items: raw,\n total: raw.length,\n };\n },\n byKey: (key) => {\n const raw = this.options()['dataSource'];\n const item = raw.filter((c) => c[this.valueField()] == key);\n return Promise.resolve(item[0]);\n },\n });\n this.dataSource.set(ds);\n }\n // resolve data source by name\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const id = typeof rawValue == 'object' ? rawValue['id'] : rawValue;\n const c = await this.dataService.get(id);\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples, {\n key: this.valueField(),\n pageSize: 500,\n }));\n }\n else {\n const ds = c?.source();\n if (ds && ds instanceof Promise) {\n const d = await ds;\n this.dataSource.set(d);\n }\n else if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }, ...(ngDevMode ? [{ debugName: \"rf\" }] : []));\n this.effect2 = effect(async () => {\n const value = this.getValue();\n const items = [];\n if (Array.isArray(value)) {\n items.push(...(await Promise.all(value.map((item) => this.extractItem(item)))));\n }\n else {\n items.push(await this.extractItem(value));\n }\n this.selectedItems.set(items.filter((c) => c != null));\n }, ...(ngDevMode ? [{ debugName: \"effect2\" }] : []));\n }\n async extractItem(item) {\n if (isNil(item)) {\n return null;\n }\n if (isObjectLike(item) && get(item, this.textField()) != null) {\n return item;\n }\n const key = extractValue(item, this.valueField());\n const ds = this.dataSource();\n if (ds.config?.byKey) {\n const found = await ds.config?.byKey(key);\n if (found) {\n return found;\n }\n }\n return isObjectLike(item)\n ? item\n : {\n [this.valueField()]: item,\n [this.textField()]: item,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPColumnWidgetComponent {\n constructor() {\n this.token = inject(AXP_WIDGET_COLUMN_TOKEN);\n this.path = this.token.path;\n this.options = this.token.options ?? {};\n this.rawValue = null;\n this.nullText = this.options['nullText'];\n this.nullValue = this.options['nullValue'];\n this.value = computed(() => {\n if (isNil(this.rawValue) && !isNil(this.nullValue)) {\n return this.nullValue;\n }\n return this.rawValue;\n }, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQXVCLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakcsT0FBTyxFQUNMLHNDQUFzQyxFQUd0QyxZQUFZLEdBQ2IsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWdCLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGdCQUFnQixDQUFDOztBQU0vRyxNQUFNLE9BQWdCLHNCQUF1QixTQUFRLGdCQUFnQjtJQURyRTs7UUFFcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBK0IsQ0FBQztRQUV2RCxrQkFBYSxHQUFHLE1B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LENBQUM7UUFFeEIsYUFBUSxHQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFXLENBQUM7UUFDbkQsY0FBUyxHQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFNLENBQUM7UUFFdkQsVUFBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDeEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDLGlEQUFDLENBQUM7S0FDSjs4R0FoQnFCLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50LCBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UsXG4gIEFYUFZhbGlkYXRpb25SdWxlLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIGV4dHJhY3RWYWx1ZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgY29tcHV0ZWQsIGVmZmVjdCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGlzRXF1YWwsIGlzTmlsLCBpc09iamVjdExpa2UsIGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0U3RhdHVzIH0gZnJvbSAnLi93aWRnZXQtc3RhdHVzLnR5cGVzJztcbmltcG9ydCB7IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOLCBBWFBfV0lER0VUX1RPS0VOLCBBWFBXaWRnZXROb2RlLCBBWFBXaWRnZXRSZW5kZXJNb2RlIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBDbGFzc01hcCA9IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PjtcbmV4cG9ydCB0eXBlIEFYUFN0eWxlTWFwID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPj47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQTGF5b3V0RWxlbWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbiA9IGluamVjdChBWFBfV0lER0VUX1RPS0VOKTtcbiAgcHVibGljIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCBhcyBIVE1MRGl2RWxlbWVudDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGF5b3V0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnID0gdGhpcy50b2tlbi5jb25maWc7XG4gIHB1YmxpYyByZWFkb25seSBub2RlID0gdGhpcy50b2tlbi5ub2RlO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBuYW1lID0gdGhpcy50b2tlbi5ub2RlLm5hbWU7XG5cbiAgcHJvdGVjdGVkIGNvbXBvbmVudCA9IHRoaXM7XG5cbiAgcHJvdGVjdGVkIF9pZDogc3RyaW5nIHwgbnVsbDtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSBzaWduYWwodGhpcy50b2tlbi5vcHRpb25zID8/IHt9KTtcbiAgcHVibGljIG9wdGlvbnMgPSB0aGlzLl9vcHRpb25zLmFzUmVhZG9ubHkoKTtcblxuICBwdWJsaWMgb25PcHRpb25zQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PHsgc2VuZGVyOiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSBfc3RhdHVzID0gc2lnbmFsPEFYUFdpZGdldFN0YXR1cz4oQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZyk7XG4gIHB1YmxpYyBzdGF0dXMgPSB0aGlzLl9zdGF0dXMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblN0YXR1c0NoYW5nZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYUFdpZGdldFN0YXR1cz4odGhpcy5fc3RhdHVzKCkpO1xuXG4gICNzdGF0dXNFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLm5leHQodGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpc0J1c3kgPSBjb21wdXRlZCgoKSA9PiBbQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZywgQVhQV2lkZ2V0U3RhdHVzLlByb2Nlc3NpbmddLmluY2x1ZGVzKHRoaXMuc3RhdHVzKCkpKTtcblxuICBwYXJlbnQ6IEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXJlbnRDb21wb25lbnQ6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGluZGV4OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlO1xuICBsb2NrZWQ6IGJvb2xlYW47XG5cbiAgcHJvdGVjdGVkIG91dHB1dHMoKTogKHN0cmluZyB8IHsgW25hbWU6IHN0cmluZ106IHVua25vd24gfSlbXSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKGdldCh0aGlzLm5vZGUsICdfX21ldGFfXy5hZGRlZCcpKSB7XG4gICAgICB0aGlzLm9uQWRkZWQoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0dXMoQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0dXMoc3RhdHVzOiBBWFBXaWRnZXRTdGF0dXMpIHtcbiAgICB0aGlzLl9zdGF0dXMuc2V0KHN0YXR1cyk7XG4gICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnVwZGF0ZVN0YXR1cygpO1xuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IHZhbHVlID0gY2xvbmVEZWVwKHZhbHVlcyk7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi5vbGRWYWx1ZSwgLi4udmFsdWUgfSk7XG4gICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLm5leHQoeyBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBvdXRwdXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMub3V0cHV0cygpLm1hcCgoYykgPT4gKHR5cGVvZiBjID09ICdzdHJpbmcnID8geyBuYW1lOiBjLCB2YWx1ZTogYyB9IDogYykpIGFzIHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1bXTtcblxuICAgIGlmIChvdXRwdXRzLnNvbWUoKGMpID0+IGMubmFtZSA9PSBuYW1lKSkge1xuICAgICAgY29uc3Qgb3B0ID0gZ2V0KHRoaXMsIG5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBvcHQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBUO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2hpbGRyZW4gPSBzaWduYWwodGhpcy50b2tlbi5ub2RlLmNoaWxkcmVuID8/IFtdKTtcbiAgcHJvdGVjdGVkIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW4uYXNSZWFkb25seSgpO1xuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvbkFkZGVkKCkge31cblxuICBob3N0Q2xhc3M/KCk6IEFYUENsYXNzTWFwO1xuICBob3N0U3R5bGU/KCk6IEFYUFN0eWxlTWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQge31cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsPiBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ubm9kZS5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFZhbHVlID0gdGhpcy50b2tlbi5kZWZhdWx0VmFsdWUgPz8gdGhpcy50b2tlbi5ub2RlLmRlZmF1bHRWYWx1ZTtcblxuICBwcml2YXRlIF9pc1ZhbHVlV2lkZ2V0ID0gZmFsc2U7XG4gIHByaXZhdGUgaXNWYWx1ZVdpZGdldCA9ICgpID0+IHRoaXMuX2lzVmFsdWVXaWRnZXQ7XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8eyBzZW5kZXI6IEFYUEJhc2VXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICBwdWJsaWMgZnVsbFBhdGggPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBwYXJlbnRQYXRoID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHRoaXMuX2lzVmFsdWVXaWRnZXQgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzPy5zb21lKChjKSA9PiBjLm5hbWUgPT0gJ3BhdGgnKSA/PyBmYWxzZTtcbiAgICBpZiAodGhpcy5pc1ZhbHVlV2lkZ2V0KCkpIHtcbiAgICAgIHRoaXMuZGV0ZWN0RnVsbFBhdGgoKTtcbiAgICAgIGlmICghaXNOaWwodGhpcy5kZWZhdWx0VmFsdWUpICYmIGlzTmlsKHRoaXMuZ2V0VmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSA9IGNvbXB1dGVkPFQ+KFxuICAgICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZ1bGxQYXRoKCkgPyB0aGlzLmV4dHJhY3RWYWx1ZSh0aGlzLmZ1bGxQYXRoKCkhKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBpc0VxdWFsIH0sXG4gICk7XG5cbiAgcHJvdGVjdGVkIHZhbGlkYXRpb25SdWxlcyA9IGNvbXB1dGVkPEFYUFZhbGlkYXRpb25SdWxlcz4oKCkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25zUmF3ID0gdGhpcy5vcHRpb25zKClbJ3ZhbGlkYXRpb25zJ107XG4gICAgaWYgKHZhbGlkYXRpb25zUmF3ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5vcHRpb25zKClbJ3ZhbGlkYXRpb25zJ10pXG4gICAgICAuZmlsdGVyKChjKSA9PiBjICE9IG51bGwpXG4gICAgICAubWFwKFxuICAgICAgICAoYzogYW55KSA9PlxuICAgICAgICAgICh7XG4gICAgICAgICAgICBydWxlOiBjLnJ1bGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBjLm1lc3NhZ2UsXG4gICAgICAgICAgICBvcHRpb25zOiBjLm9wdGlvbnMsXG4gICAgICAgICAgfSkgYXMgQVhQVmFsaWRhdGlvblJ1bGUsXG4gICAgICApO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgZXh0cmFjdFZhbHVlKHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldFZhbHVlKHBhdGgpO1xuICAgIGlmICh0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5nZXR0ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5nZXR0ZXIocmF3VmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmF3VmFsdWU7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5ub2RlLnZhbHVlVHJhbnNmb3Jtcz8uc2V0dGVyKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMubm9kZS52YWx1ZVRyYW5zZm9ybXM/LnNldHRlcih2YWx1ZSk7XG4gICAgfVxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIHZhbHVlID0gaXNVbmRlZmluZWQodmFsdWUpID8gbnVsbCA6IHZhbHVlO1xuICAgIGlmIChpc05pbCh2YWx1ZSkgJiYgaXNOaWwob2xkVmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZnVsbFBhdGgoKSkge1xuICAgICAgdGhpcy5jb250ZXh0U2VydmljZS51cGRhdGUodGhpcy5mdWxsUGF0aCgpISwgdmFsdWUpO1xuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5uZXh0KHsgc2VuZGVyOiB0aGlzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGV0ZWN0RnVsbFBhdGgoKSB7XG4gICAgY29uc3Qgc2VjdGlvbnMgPSBbXTtcbiAgICBjb25zdCBpZHMgPSBbXTtcbiAgICAvL1xuICAgIGxldCBwYXJlbnQ6IEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcyBhcyBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50O1xuICAgIC8vXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgY29uc3QgaXNWYWx1ZVdpZGdldCA9IHBhcmVudCBpbnN0YW5jZW9mIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50ICYmIHBhcmVudC5pc1ZhbHVlV2lkZ2V0KCk7XG4gICAgICBjb25zdCB2YWx1ZVBhcmVudCA9IHBhcmVudCBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxhbnk+O1xuICAgICAgY29uc3QgcGF0aCA9IHZhbHVlUGFyZW50LnBhdGggPz8gKGlzVmFsdWVXaWRnZXQgPyB2YWx1ZVBhcmVudC5uYW1lIDogbnVsbCk7XG4gICAgICBjb25zdCBpZCA9IHZhbHVlUGFyZW50Lm5hbWU7XG4gICAgICAvL1xuICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgc2VjdGlvbnMucHVzaChwYXRoKTtcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnQuaW5kZXggIT0gbnVsbCAmJiBpc1ZhbHVlV2lkZ2V0KSB7XG4gICAgICAgIHNlY3Rpb25zLnB1c2goYFske3BhcmVudC5pbmRleH1dYCk7XG4gICAgICB9XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICBpZHMucHVzaChgJHtwYXJlbnQuaW5kZXh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5mdWxsUGF0aC5zZXQoc2VjdGlvbnMucmV2ZXJzZSgpLmpvaW4oJy4nKSk7XG4gICAgdGhpcy5wYXJlbnRQYXRoLnNldChzZWN0aW9ucy5zbGljZSgwLCBzZWN0aW9ucy5sZW5ndGggLSAxKS5qb2luKCcuJykpO1xuICAgIHRoaXMuX2lkID0gdGhpcy5uYW1lIHx8IHRoaXMucGFyZW50ID8gaWRzLnJldmVyc2UoKS5qb2luKCdfJykgOiBudWxsO1xuICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHRoaXMuX2lkLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VD4pIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy5zZXRWYWx1ZShlLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERhdGFMaXN0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQ8YW55PiB7XG4gIHByaXZhdGUgZGF0YVNlcnZpY2UgPSBpbmplY3QoQVhQRGF0YVNvdXJjZURlZmluaXRpb25Qcm92aWRlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCB0ZXh0RmllbGQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHRoaXMub3B0aW9ucygpWyd0ZXh0RmllbGQnXSA/PyAndGl0bGUnKTtcbiAgcHJvdGVjdGVkIHZhbHVlRmllbGQgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+ICh0aGlzLm9wdGlvbnMoKVsndmFsdWVGaWVsZCddIGFzIHN0cmluZykgPz8gJ2lkJyk7XG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gc2lnbmFsPEFYRGF0YVNvdXJjZTxhbnk+Pihjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2U8YW55PihbXSkpO1xuXG4gIHByb3RlY3RlZCBpc1JlYWR5ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZGF0YVNvdXJjZSgpLmNvbmZpZz8ua2V5O1xuICAgIGNvbnN0IHZhbHVlRmllbGQgPSB0aGlzLnZhbHVlRmllbGQoKTtcbiAgICBjb25zdCByZXN1bHQgPSBrZXkgPT0gdmFsdWVGaWVsZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIHByaXZhdGUgcmYgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcbiAgICAvLyBzdGF0aWMgIGRhdGFzb3VyY2UgY2xhc3NcbiAgICBpZiAocmF3VmFsdWUgaW5zdGFuY2VvZiBBWERhdGFTb3VyY2UpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQocmF3VmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgYXJyYXkgZGF0YXNvdXJjZVxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICBjb25zdCBkcyA9IG5ldyBBWERhdGFTb3VyY2Uoe1xuICAgICAgICBrZXk6IHRoaXMudmFsdWVGaWVsZCgpLFxuICAgICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICAgIGxvYWQ6IGFzeW5jIChlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogcmF3LFxuICAgICAgICAgICAgdG90YWw6IHJhdy5sZW5ndGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYnlLZXk6IChrZXk6IHVua25vd24pID0+IHtcbiAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSByYXcuZmlsdGVyKChjOiBhbnkpID0+IGNbdGhpcy52YWx1ZUZpZWxkKCldID09IGtleSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShpdGVtWzBdKSBhcyBhbnk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoZHMpO1xuICAgIH1cbiAgICAvLyByZXNvbHZlIGRhdGEgc291cmNlIGJ5IG5hbWVcbiAgICBlbHNlIGlmIChyYXdWYWx1ZSAmJiAodHlwZW9mIHJhd1ZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiByYXdWYWx1ZSA9PSAnb2JqZWN0JykpIHtcbiAgICAgIGNvbnN0IGlkID0gdHlwZW9mIHJhd1ZhbHVlID09ICdvYmplY3QnID8gcmF3VmFsdWVbJ2lkJ10gOiByYXdWYWx1ZTtcbiAgICAgIGNvbnN0IGMgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldChpZCk7XG4gICAgICBpZiAodGhpcy5tb2RlID09ICdkZXNpZ25lcicgJiYgYz8uc2FtcGxlcz8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoXG4gICAgICAgICAgY29udmVydEFycmF5VG9EYXRhU291cmNlKGMuc2FtcGxlcywge1xuICAgICAgICAgICAga2V5OiB0aGlzLnZhbHVlRmllbGQoKSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiA1MDAsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkcyA9IGM/LnNvdXJjZSgpO1xuICAgICAgICBpZiAoZHMgJiYgZHMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgY29uc3QgZCA9IGF3YWl0IGRzO1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoZCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZHMpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGRzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBlbXB0eSBkYXRhc291cmNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoY29udmVydEFycmF5VG9EYXRhU291cmNlPGFueT4oW10pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlbXB0eSBkYXRhc291cmNlXG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxhbnk+KFtdKSk7XG4gICAgfVxuICB9KTtcblxuICBwcm90ZWN0ZWQgYXN5bmMgZXh0cmFjdEl0ZW0oaXRlbTogdW5rbm93bik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKGlzTmlsKGl0ZW0pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0TGlrZShpdGVtKSAmJiBnZXQoaXRlbSwgdGhpcy50ZXh0RmllbGQoKSkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IGV4dHJhY3RWYWx1ZShpdGVtLCB0aGlzLnZhbHVlRmllbGQoKSk7XG4gICAgY29uc3QgZHMgPSB0aGlzLmRhdGFTb3VyY2UoKTtcbiAgICBpZiAoZHMuY29uZmlnPy5ieUtleSkge1xuICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBkcy5jb25maWc/LmJ5S2V5KGtleSk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKGl0ZW0pXG4gICAgICA/IGl0ZW1cbiAgICAgIDoge1xuICAgICAgICAgIFt0aGlzLnZhbHVlRmllbGQoKV06IGl0ZW0sXG4gICAgICAgICAgW3RoaXMudGV4dEZpZWxkKCldOiBpdGVtLFxuICAgICAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBlZmZlY3QyID0gZWZmZWN0KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBpdGVtczogYW55W10gPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGl0ZW1zLnB1c2goLi4uKGF3YWl0IFByb21pc2UuYWxsKHZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLmV4dHJhY3RJdGVtKGl0ZW0pKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbXMucHVzaChhd2FpdCB0aGlzLmV4dHJhY3RJdGVtKHZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zZXQoaXRlbXMuZmlsdGVyKChjKSA9PiBjICE9IG51bGwpKTtcbiAgfSk7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb2x1bW5XaWRnZXRDb21wb25lbnQ8VCA9IGFueSB8IG51bGwgfCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW4gPSBpbmplY3QoQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IHRoaXMudG9rZW4ub3B0aW9ucyA/PyB7fTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJhd1ZhbHVlOiBUID0gbnVsbCBhcyBUO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm93RGF0YTogYW55O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVsbFRleHQ6IGFueSA9IHRoaXMub3B0aW9uc1snbnVsbFRleHQnXSBhcyBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBudWxsVmFsdWU6IFQgPSB0aGlzLm9wdGlvbnNbJ251bGxWYWx1ZSddIGFzIFQ7XG5cbiAgcHJvdGVjdGVkIHZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChpc05pbCh0aGlzLnJhd1ZhbHVlKSAmJiAhaXNOaWwodGhpcy5udWxsVmFsdWUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5udWxsVmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJhd1ZhbHVlO1xuICB9KTtcbn1cbiJdfQ==","import { computed, Injectable } from '@angular/core';\nimport { AXPLayoutBaseWidgetComponent } from '../widget-base.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostBoxStyle = computed(() => {\n const options = this.options();\n const style = {};\n const spacing = options?.['spacing'];\n const border = options?.['border'];\n const backgroundColor = options?.['backgroundColor'];\n const direction = options?.['direction'];\n const overflow = options?.['overflow'];\n const overflowX = options?.['overflowX'];\n const overflowY = options?.['overflowY'];\n style['background-color'] = backgroundColor ?? '';\n style['padding'] = spacing?.padding ?? '';\n style['margin'] = spacing?.margin ?? '';\n style['border-radius'] = border?.radius ?? '';\n style['border-width'] = border?.width ?? '';\n style['border-color'] = border?.color ?? '';\n style['border-style'] = border?.style ?? '';\n style['overflow'] = overflow ?? '';\n style['overflow-x'] = overflowX ?? '';\n style['overflow-y'] = overflowY ?? '';\n style['direction'] = direction ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostBoxStyle\" }] : []));\n this.blockStyle = computed(() => {\n const options = this.options();\n const style = { ...this.hostBoxStyle() };\n const width = options?.['width'];\n const minWidth = options?.['minWidth'];\n const maxWidth = options?.['maxWidth'];\n const height = options?.['height'];\n const minHeight = options?.['minHeight'];\n const maxHeight = options?.['maxHeight'];\n style['min-width'] = minWidth ?? '';\n style['width'] = width ?? '';\n style['max-width'] = maxWidth ?? '';\n style['min-height'] = minHeight ?? '';\n style['height'] = height ?? '';\n style['max-height'] = maxHeight ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"blockStyle\" }] : []));\n this.inlineStyle = computed(() => {\n return { ...this.hostBoxStyle() };\n }, ...(ngDevMode ? [{ debugName: \"inlineStyle\" }] : []));\n this.blockClass = computed(() => {\n return {\n 'ax-block': true,\n 'ax-w-full': true,\n // 'ax-widget-outline': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"blockClass\" }] : []));\n this.inlineClass = computed(() => {\n return {\n 'ax-inline-block': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"inlineClass\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9ib3gtbW9kZWwtd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQWUsNEJBQTRCLEVBQWUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixnQ0FBaUMsU0FBUSw0QkFBNEI7SUFEM0Y7O1FBRVMsaUJBQVksR0FBRyxRQUFRLENBQWMsR0FBRyxFQUFFO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUUvQixNQUFNLEtBQUssR0FBb0MsRUFBRSxDQUFDO1lBRWxELE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBb0MsQ0FBQztZQUN4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQW1DLENBQUM7WUFFckUsTUFBTSxlQUFlLEdBQUcsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQXVCLENBQUM7WUFDM0UsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUF1QixDQUFDO1lBRS9ELE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBdUIsQ0FBQztZQUM3RCxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFDL0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUF1QixDQUFDO1lBRS9ELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLGVBQWUsSUFBSSxFQUFFLENBQUM7WUFDbEQsS0FB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O2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJvcmRlckJveFN0cmluZywgQVhQU3BhY2luZ0JveFN0cmluZyB9IGZyb20gJy4uL2hlbHBlcic7XG5pbXBvcnQgeyBBWFBDbGFzc01hcCwgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCwgQVhQU3R5bGVNYXAgfSBmcm9tICcuLi93aWRnZXQtYmFzZS5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIGhvc3RCb3hTdHlsZSA9IGNvbXB1dGVkPEFYUFN0eWxlTWFwPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7fTtcblxuICAgIGNvbnN0IHNwYWNpbmcgPSBvcHRpb25zPy5bJ3NwYWNpbmcnXSBhcyBBWFBTcGFjaW5nQm94U3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGJvcmRlciA9IG9wdGlvbnM/LlsnYm9yZGVyJ10gYXMgQVhQQm9yZGVyQm94U3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gb3B0aW9ucz8uWydiYWNrZ3JvdW5kQ29sb3InXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gb3B0aW9ucz8uWydkaXJlY3Rpb24nXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBvdmVyZmxvdyA9IG9wdGlvbnM/Llsnb3ZlcmZsb3cnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3ZlcmZsb3dYID0gb3B0aW9ucz8uWydvdmVyZmxvd1gnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3Qgb3ZlcmZsb3dZID0gb3B0aW9ucz8uWydvdmVyZmxvd1knXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gYmFja2dyb3VuZENvbG9yID8/ICcnO1xuICAgIHN0eWxlWydwYWRkaW5nJ10gPSBzcGFjaW5nPy5wYWRkaW5nID8/ICcnO1xuICAgIHN0eWxlWydtYXJnaW4nXSA9IHNwYWNpbmc/Lm1hcmdpbiA/PyAnJztcblxuICAgIHN0eWxlWydib3JkZXItcmFkaXVzJ10gPSBib3JkZXI/LnJhZGl1cyA/PyAnJztcbiAgICBzdHlsZVsnYm9yZGVyLXdpZHRoJ10gPSBib3JkZXI/LndpZHRoID8/ICcnO1xuICAgIHN0eWxlWydib3JkZXItY29sb3InXSA9IGJvcmRlcj8uY29sb3IgPz8gJyc7XG4gICAgc3R5bGVbJ2JvcmRlci1zdHlsZSddID0gYm9yZGVyPy5zdHlsZSA/PyAnJztcblxuICAgIHN0eWxlWydvdmVyZmxvdyddID0gb3ZlcmZsb3cgPz8gJyc7XG4gICAgc3R5bGVbJ292ZXJmbG93LXgnXSA9IG92ZXJmbG93WCA/PyAnJztcbiAgICBzdHlsZVsnb3ZlcmZsb3cteSddID0gb3ZlcmZsb3dZID8/ICcnO1xuXG4gICAgc3R5bGVbJ2RpcmVjdGlvbiddID0gZGlyZWN0aW9uID8/ICcnO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgYmxvY2tTdHlsZSA9IGNvbXB1dGVkPEFYUFN0eWxlTWFwPigoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLnRoaXMuaG9zdEJveFN0eWxlKCkgfTtcblxuICAgIGNvbnN0IHdpZHRoID0gb3B0aW9ucz8uWyd3aWR0aCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaW5XaWR0aCA9IG9wdGlvbnM/LlsnbWluV2lkdGgnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4V2lkdGggPSBvcHRpb25zPy5bJ21heFdpZHRoJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgaGVpZ2h0ID0gb3B0aW9ucz8uWydoZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWluSGVpZ2h0ID0gb3B0aW9ucz8uWydtaW5IZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gb3B0aW9ucz8uWydtYXhIZWlnaHQnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBzdHlsZVsnbWluLXdpZHRoJ10gPSBtaW5XaWR0aCA/PyAnJztcbiAgICBzdHlsZVsnd2lkdGgnXSA9IHdpZHRoID8/ICcnO1xuICAgIHN0eWxlWydtYXgtd2lkdGgnXSA9IG1heFdpZHRoID8/ICcnO1xuXG4gICAgc3R5bGVbJ21pbi1oZWlnaHQnXSA9IG1pbkhlaWdodCA/PyAnJztcbiAgICBzdHlsZVsnaGVpZ2h0J10gPSBoZWlnaHQgPz8gJyc7XG4gICAgc3R5bGVbJ21heC1oZWlnaHQnXSA9IG1heEhlaWdodCA/PyAnJztcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGlubGluZVN0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICByZXR1cm4geyAuLi50aGlzLmhvc3RCb3hTdHlsZSgpIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBibG9ja0NsYXNzID0gY29tcHV0ZWQ8QVhQQ2xhc3NNYXA+KCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2F4LWJsb2NrJzogdHJ1ZSxcbiAgICAgICdheC13LWZ1bGwnOiB0cnVlLFxuICAgICAgLy8gJ2F4LXdpZGdldC1vdXRsaW5lJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaW5saW5lQ2xhc3MgPSBjb21wdXRlZDxBWFBDbGFzc01hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnYXgtaW5saW5lLWJsb2NrJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQUdoRixNQUFNLE9BQWdCLGlDQUFrQyxTQUFRLGdDQUFnQztJQURoRzs7UUFFa0IsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7S0FDL0Q7OEdBSHFCLGlDQUFpQztrSEFBakMsaUNBQWlDOzsyRkFBakMsaUNBQWlDO2tCQUR0RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ib3gtbW9kZWwtd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJsb2NrQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmJsb2NrU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flex\" }] : []));\n this.hostFlexStyle = computed(() => {\n const blockStyle = this.blockStyle();\n const style = { ...blockStyle };\n const flex = this.flex();\n if (isNil(flex?.flexDirection)) {\n style['flex-direction'] = '';\n }\n else {\n style['flex-direction'] = flex.flexDirection;\n }\n if (isNil(flex?.flexWrap)) {\n style['flex-wrap'] = '';\n }\n else {\n style['flex-wrap'] = flex.flexWrap;\n }\n //TODO NEED TO FIX LATER\n style['overflow'] = flex?.flexWrap === 'nowrap' ? 'auto' : '';\n //END\n if (isNil(flex?.justifyContent)) {\n style['justify-content'] = '';\n }\n else {\n style['justify-content'] = flex.justifyContent;\n }\n if (isNil(flex?.alignItems)) {\n style['align-items'] = '';\n }\n else {\n style['align-items'] = flex.alignItems;\n }\n if (isNil(flex?.gap)) {\n style['gap'] = '';\n }\n else {\n style['gap'] = flex.gap;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexStyle\" }] : []));\n this.hostFlexClass = computed(() => {\n return {\n ...this.blockClass(),\n 'ax-flex': true,\n 'ax-h-full': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9mbGV4LWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLGlDQUFpQztJQURoRzs7UUFFWSxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWtDLGdEQUFDLENBQUM7UUFFekUsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxNQUFNLEtBQUssR0FBb0MsRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQy9DLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckMsQ0FBQztZQUNELHdCQUF3QjtZQUN4QixLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxFQUFFLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELEtBQUs7WUFDTCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxQixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLHlEQUFDLENBQUM7UUFFSSxrQkFBYSxHQUFHLFFBQVEsQ0FBMEIsR0FBRyxFQUFFO1lBQzVELE9BQU87Z0JBQ0wsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsSUFBSTthQUNsQixDQUFDO1FBQ0osQ0FBQyx5REFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxxREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxxREFBQyxDQUFDO0tBQ0o7OEdBckRxQixnQ0FBZ0M7a0hBQWhDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFEckQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBGbGV4Qm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEZsZXhCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGZsZXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSBhcyBBWFBGbGV4Qm94U3RyaW5nIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEZsZXhTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBibG9ja1N0eWxlID0gdGhpcy5ibG9ja1N0eWxlKCk7XG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLmJsb2NrU3R5bGUgfTtcbiAgICBjb25zdCBmbGV4ID0gdGhpcy5mbGV4KCk7XG4gICAgaWYgKGlzTmlsKGZsZXg/LmZsZXhEaXJlY3Rpb24pKSB7XG4gICAgICBzdHlsZVsnZmxleC1kaXJlY3Rpb24nXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZmxleC1kaXJlY3Rpb24nXSA9IGZsZXguZmxleERpcmVjdGlvbjtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmZsZXhXcmFwKSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtd3JhcCddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LXdyYXAnXSA9IGZsZXguZmxleFdyYXA7XG4gICAgfVxuICAgIC8vVE9ETyBORUVEIFRPIEZJWCBMQVRFUlxuICAgIHN0eWxlWydvdmVyZmxvdyddID0gZmxleD8uZmxleFdyYXAgPT09ICdub3dyYXAnID8gJ2F1dG8nIDogJyc7XG4gICAgLy9FTkRcbiAgICBpZiAoaXNOaWwoZmxleD8uanVzdGlmeUNvbnRlbnQpKSB7XG4gICAgICBzdHlsZVsnanVzdGlmeS1jb250ZW50J10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2p1c3RpZnktY29udGVudCddID0gZmxleC5qdXN0aWZ5Q29udGVudDtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmFsaWduSXRlbXMpKSB7XG4gICAgICBzdHlsZVsnYWxpZ24taXRlbXMnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnYWxpZ24taXRlbXMnXSA9IGZsZXguYWxpZ25JdGVtcztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZsZXg/LmdhcCkpIHtcbiAgICAgIHN0eWxlWydnYXAnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZ2FwJ10gPSBmbGV4LmdhcDtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEZsZXhDbGFzcyA9IGNvbXB1dGVkPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYmxvY2tDbGFzcygpLFxuICAgICAgJ2F4LWZsZXgnOiB0cnVlLFxuICAgICAgJ2F4LWgtZnVsbCc6IHRydWUsXG4gICAgfTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleENsYXNzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhTdHlsZSgpO1xuICB9KTtcbn1cbiJdfQ==","import { computed, Injectable } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2lubGluZS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0Isa0NBQW1DLFNBQVEsZ0NBQWdDO0lBRGpHOztRQUVrQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUscURBQUMsQ0FBQztRQUMvQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUscURBQUMsQ0FBQztLQUNoRTs4R0FIcUIsa0NBQWtDO2tIQUFsQyxrQ0FBa0M7OzJGQUFsQyxrQ0FBa0M7a0JBRHZELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUElubGluZUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlubGluZUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pbmxpbmVTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPInlineBaseLayoutWidgetComponent } from './inline-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flexItem\" }] : []));\n this.hostFlexItemStyle = computed(() => {\n const inlineStyle = this.blockStyle();\n const style = { ...inlineStyle };\n const fi = this.flexItem();\n if (isNil(fi?.order)) {\n style['order'] = '';\n }\n else {\n style['order'] = fi.order;\n }\n if (isNil(fi?.grow)) {\n style['flex-grow'] = '';\n }\n else {\n style['flex-grow'] = fi.grow;\n }\n if (isNil(fi?.shrink)) {\n style['flex-shrink'] = '';\n }\n else {\n style['flex-shrink'] = fi.shrink;\n }\n if (isNil(fi?.basis)) {\n style['flex-basis'] = '';\n }\n else {\n style['flex-basis'] = fi.basis;\n }\n if (isNil(fi?.alignSelf)) {\n style['align-self'] = '';\n }\n else {\n style['align-self'] = fi.alignSelf;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemStyle\" }] : []));\n this.hostFlexItemClass = computed(() => {\n return {\n ...this.blockClass(),\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexItemClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexItemStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2ZsZXgtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFHcEYsTUFBTSxPQUFnQixvQ0FBcUMsU0FBUSxrQ0FBa0M7SUFEckc7O1FBRVksYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFzQyxvREFBQyxDQUFDO1FBRWpGLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsV0FBVyxFQUFFLENBQUM7WUFDbEUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDMUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkMsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3JDLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsNkRBQUMsQ0FBQztRQUVJLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsT0FBTztnQkFDTCxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDckIsQ0FBQztRQUNKLENBQUMsNkRBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbEMsQ0FBQyxxREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLHFEQUFDLENBQUM7S0FDSjs4R0FoRHFCLG9DQUFvQztrSEFBcEMsb0NBQW9DOzsyRkFBcEMsb0NBQW9DO2tCQUR6RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUEZsZXhJdGVtQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUElubGluZUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2lubGluZS1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQRmxleEl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBmbGV4SXRlbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpIGFzIEFYUEZsZXhJdGVtQm94U3RyaW5nIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEZsZXhJdGVtU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5saW5lU3R5bGUgPSB0aGlzLmJsb2NrU3R5bGUoKTtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4uaW5saW5lU3R5bGUgfTtcbiAgICBjb25zdCBmaSA9IHRoaXMuZmxleEl0ZW0oKTtcbiAgICBpZiAoaXNOaWwoZmk/Lm9yZGVyKSkge1xuICAgICAgc3R5bGVbJ29yZGVyJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ29yZGVyJ10gPSBmaS5vcmRlcjtcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5ncm93KSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtZ3JvdyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWdyb3cnXSA9IGZpLmdyb3c7XG4gICAgfVxuICAgIGlmIChpc05pbChmaT8uc2hyaW5rKSkge1xuICAgICAgc3R5bGVbJ2ZsZXgtc2hyaW5rJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtc2hyaW5rJ10gPSBmaS5zaHJpbms7XG4gICAgfVxuICAgIGlmIChpc05pbChmaT8uYmFzaXMpKSB7XG4gICAgICBzdHlsZVsnZmxleC1iYXNpcyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWJhc2lzJ10gPSBmaS5iYXNpcztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5hbGlnblNlbGYpKSB7XG4gICAgICBzdHlsZVsnYWxpZ24tc2VsZiddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydhbGlnbi1zZWxmJ10gPSBmaS5hbGlnblNlbGY7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RGbGV4SXRlbUNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmJsb2NrQ2xhc3MoKSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RGbGV4SXRlbUNsYXNzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhJdGVtU3R5bGUoKTtcbiAgfSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n this.hostGridStyle = computed(() => {\n const style = { ...this.inlineStyle() };\n const g = this.grid()?.default;\n if (g?.gap)\n style['gap'] = g.gap;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridStyle\" }] : []));\n this.hostGridClass = computed(() => {\n const cls = {\n ...this.inlineClass(),\n 'ax-grid': true,\n };\n const g = this.grid()?.default;\n if (g?.columns)\n cls[`lg:ax-grid-cols-${g.columns}`] = true;\n if (g?.rows)\n cls[`lg:ax-grid-rows-${g.rows}`] = true;\n if (g?.justifyItems)\n cls[`lg:ax-justify-items-${g.justifyItems}`] = true;\n if (g?.alignItems)\n cls[`lg:ax-align-items-${g.alignItems}`] = true;\n if (g?.autoFlow)\n cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridClass\" }] : []));\n this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC9ncmlkLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbEYsTUFBTSxPQUFnQixnQ0FBaUMsU0FBUSxpQ0FBaUM7SUFEaEc7O1FBRVUsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQXdDLGdEQUFDLENBQUM7UUFFeEYsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDekUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUUvQixJQUFJLENBQUMsRUFBRSxHQUFHO2dCQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBRWpDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyx5REFBQyxDQUFDO1FBRUksa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sR0FBRyxHQUE0QjtnQkFDbkMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixTQUFTLEVBQUUsSUFBSTthQUNoQixDQUFDO1lBRUYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQztZQUUvQixJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxFQUFFLElBQUk7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDckQsSUFBSSxDQUFDLEVBQUUsWUFBWTtnQkFBRSxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6RSxJQUFJLENBQUMsRUFBRSxVQUFVO2dCQUFFLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ25FLElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFN0QsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLHlEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUscURBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUscURBQUMsQ0FBQztLQUNsRTs4R0EvQnFCLGdDQUFnQztrSEFBaEMsZ0NBQWdDOzsyRkFBaEMsZ0NBQWdDO2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRCcmVha3BvaW50VmFsdWVzIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEdyaWRCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBncmlkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LlsnZ3JpZCddIGFzIEFYUEdyaWRCcmVha3BvaW50VmFsdWVzIHwgdW5kZWZpbmVkKTtcblxuICBwdWJsaWMgaG9zdEdyaWRTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5pbmxpbmVTdHlsZSgpIH07XG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZCgpPy5kZWZhdWx0O1xuXG4gICAgaWYgKGc/LmdhcCkgc3R5bGVbJ2dhcCddID0gZy5nYXA7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0R3JpZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICAuLi50aGlzLmlubGluZUNsYXNzKCksXG4gICAgICAnYXgtZ3JpZCc6IHRydWUsXG4gICAgfTtcblxuICAgIGNvbnN0IGcgPSB0aGlzLmdyaWQoKT8uZGVmYXVsdDtcblxuICAgIGlmIChnPy5jb2x1bW5zKSBjbHNbYGxnOmF4LWdyaWQtY29scy0ke2cuY29sdW1uc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LnJvd3MpIGNsc1tgbGc6YXgtZ3JpZC1yb3dzLSR7Zy5yb3dzfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uanVzdGlmeUl0ZW1zKSBjbHNbYGxnOmF4LWp1c3RpZnktaXRlbXMtJHtnLmp1c3RpZnlJdGVtc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LmFsaWduSXRlbXMpIGNsc1tgbGc6YXgtYWxpZ24taXRlbXMtJHtnLmFsaWduSXRlbXN9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5hdXRvRmxvdykgY2xzW2BsZzpheC1ncmlkLWZsb3ctJHtnLmF1dG9GbG93fWBdID0gdHJ1ZTtcblxuICAgIHJldHVybiBjbHM7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPFlexBaseLayoutWidgetComponent } from './flex-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"gridItem\" }] : []));\n this.hostGridItemStyle = computed(() => {\n const style = { ...this.hostFlexStyle() };\n const g = this.gridItem();\n if (g?.alignSelf)\n style['align-self'] = g.alignSelf;\n if (g?.justifySelf)\n style['justify-self'] = g.justifySelf;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemStyle\" }] : []));\n this.hostGridItemClass = computed(() => {\n const cls = { ...this.hostFlexClass() };\n const g = this.gridItem();\n if (g?.colSpan)\n cls[`lg:ax-col-span-${g.colSpan}`] = true;\n if (g?.colStart)\n cls[`lg:ax-col-start-${g.colStart}`] = true;\n if (g?.colEnd)\n cls[`lg:ax-col-end-${g.colEnd}`] = true;\n if (g?.rowSpan)\n cls[`lg:ax-row-span-${g.rowSpan}`] = true;\n if (g?.rowStart)\n cls[`lg:ax-row-start-${g.rowStart}`] = true;\n if (g?.rowEnd)\n cls[`lg:ax-row-end-${g.rowEnd}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemClass\" }] : []));\n this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2Jhc2Utd2lkZ2V0L2dyaWQtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0Isb0NBQXFDLFNBQVEsZ0NBQWdDO0lBRG5HOztRQUVVLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBc0Msb0RBQUMsQ0FBQztRQUUvRSxzQkFBaUIsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDM0UsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTFCLElBQUksQ0FBQyxFQUFFLFNBQVM7Z0JBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDcEQsSUFBSSxDQUFDLEVBQUUsV0FBVztnQkFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUUxRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsNkRBQUMsQ0FBQztRQUVJLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQTRCLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUNqRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFMUIsSUFBSSxDQUFDLEVBQUUsT0FBTztnQkFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxRQUFRO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxFQUFFLE1BQU07Z0JBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFdkQsSUFBSSxDQUFDLEVBQUUsT0FBTztnQkFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUMxRCxJQUFJLENBQUMsRUFBRSxRQUFRO2dCQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxFQUFFLE1BQU07Z0JBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFFdkQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLDZEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxxREFBQyxDQUFDO1FBQ3JELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHFEQUFDLENBQUM7S0FDdEU7OEdBOUJxQixvQ0FBb0M7a0hBQXBDLG9DQUFvQzs7MkZBQXBDLG9DQUFvQztrQkFEekQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBHcmlkSXRlbUJveFN0cmluZyB9IGZyb20gJy4uL2hlbHBlci9wcm9wZXJ0eS1lZGl0b3IudHlwZSc7XG5pbXBvcnQgeyBBWFBGbGV4QmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQR3JpZEl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQRmxleEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWRJdGVtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkgYXMgQVhQR3JpZEl0ZW1Cb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0R3JpZEl0ZW1TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ob3N0RmxleFN0eWxlKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkSXRlbSgpO1xuXG4gICAgaWYgKGc/LmFsaWduU2VsZikgc3R5bGVbJ2FsaWduLXNlbGYnXSA9IGcuYWxpZ25TZWxmO1xuICAgIGlmIChnPy5qdXN0aWZ5U2VsZikgc3R5bGVbJ2p1c3RpZnktc2VsZiddID0gZy5qdXN0aWZ5U2VsZjtcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RHcmlkSXRlbUNsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7IC4uLnRoaXMuaG9zdEZsZXhDbGFzcygpIH07XG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZEl0ZW0oKTtcblxuICAgIGlmIChnPy5jb2xTcGFuKSBjbHNbYGxnOmF4LWNvbC1zcGFuLSR7Zy5jb2xTcGFufWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uY29sU3RhcnQpIGNsc1tgbGc6YXgtY29sLXN0YXJ0LSR7Zy5jb2xTdGFydH1gXSA9IHRydWU7XG4gICAgaWYgKGc/LmNvbEVuZCkgY2xzW2BsZzpheC1jb2wtZW5kLSR7Zy5jb2xFbmR9YF0gPSB0cnVlO1xuXG4gICAgaWYgKGc/LnJvd1NwYW4pIGNsc1tgbGc6YXgtcm93LXNwYW4tJHtnLnJvd1NwYW59YF0gPSB0cnVlO1xuICAgIGlmIChnPy5yb3dTdGFydCkgY2xzW2BsZzpheC1yb3ctc3RhcnQtJHtnLnJvd1N0YXJ0fWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8ucm93RW5kKSBjbHNbYGxnOmF4LXJvdy1lbmQtJHtnLnJvd0VuZH1gXSA9IHRydWU7XG5cbiAgICByZXR1cm4gY2xzO1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0R3JpZEl0ZW1DbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRJdGVtU3R5bGUoKSk7XG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostTableClass = computed(() => ({\n ...this.blockClass(),\n }), ...(ngDevMode ? [{ debugName: \"hostTableClass\" }] : []));\n this.hostTableStyle = computed(() => {\n const style = { ...this.blockStyle() };\n style['overflow-x'] = 'auto';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostTableStyle\" }] : []));\n this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvdGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGlDQUFrQyxTQUFRLGlDQUFpQztJQURqRzs7UUFFUyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUNyQixDQUFDLDBEQUFDLENBQUM7UUFFRyxtQkFBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN4RSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQywwREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHFEQUFDLENBQUM7UUFDbEQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHFEQUFDLENBQUM7S0FDbkU7OEdBYnFCLGlDQUFpQztrSEFBakMsaUNBQWlDOzsyRkFBakMsaUNBQWlDO2tCQUR0RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHB1YmxpYyBob3N0VGFibGVDbGFzcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgLi4udGhpcy5ibG9ja0NsYXNzKCksXG4gIH0pKTtcblxuICBwdWJsaWMgaG9zdFRhYmxlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj4gPSB7IC4uLnRoaXMuYmxvY2tTdHlsZSgpIH07XG4gICAgc3R5bGVbJ292ZXJmbG93LXgnXSA9ICdhdXRvJztcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RUYWJsZUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0VGFibGVTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvYmFzZS13aWRnZXQvdGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0Isd0NBQXlDLFNBQVEsaUNBQWlDOzhHQUFsRix3Q0FBd0M7a0hBQXhDLHdDQUF3Qzs7MkZBQXhDLHdDQUF3QztrQkFEN0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlSXRlbU9wc0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICAvLyBDb2x1bW5zIChyZWxhdGl2ZSB0byBjdXJyZW50IGNlbGwpXG4gIGFic3RyYWN0IGluc2VydENvbHVtbkxlZnQoKTogdm9pZDtcbiAgYWJzdHJhY3QgaW5zZXJ0Q29sdW1uUmlnaHQoKTogdm9pZDtcblxuICAvLyBSb3dzIHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbFxuICBhYnN0cmFjdCBpbnNlcnRSb3dBYm92ZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBpbnNlcnRSb3dCZWxvdygpOiB2b2lkO1xuXG4gIC8vIENlbGwtbGV2ZWwgaW5zZXJ0IG9wZXJhdGlvbnMgKHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbClcbiAgYWJzdHJhY3QgaW5zZXJ0Q2VsbFNoaWZ0UmlnaHQoKTogdm9pZDsgLy8gaW5zZXJ0IHRvIHRoZSBsZWZ0IG9mIHRhcmdldCwgc2hpZnQgcmlnaHQsIGluY3JlYXNlIGNvbHVtbnNcbiAgYWJzdHJhY3QgaW5zZXJ0Q2VsbFNoaWZ0RG93bigpOiB2b2lkOyAvLyBpbnNlcnQgYWJvdmUgdGFyZ2V0IHJvdywgc2hpZnQgZG93biwgaW5jcmVhc2Ugcm93c1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { AXPTableItemOpsBaseLayoutWidgetComponent } from './table-item-ops-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.colSpan = computed(() => {\n const v = this.options()?.colSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"colSpan\" }] : []));\n this.rowSpan = computed(() => {\n const v = this.options()?.rowSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"rowSpan\" }] : []));\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9iYXNlLXdpZGdldC90YWJsZS1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFHbEcsTUFBTSxPQUFnQixxQ0FBc0MsU0FBUSx3Q0FBd0M7SUFENUc7O1FBRVksWUFBTyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUksSUFBSSxDQUFDLE9BQU8sRUFBVSxFQUFFLE9BQTZCLENBQUM7WUFDakUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxtREFBQyxDQUFDO1FBQ08sWUFBTyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDeEMsTUFBTSxDQUFDLEdBQUksSUFBSSxDQUFDLE9BQU8sRUFBVSxFQUFFLE9BQTZCLENBQUM7WUFDakUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxtREFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHFEQUFDLENBQUM7S0FDL0Q7OEdBWnFCLHFDQUFxQztrSEFBckMscUNBQXFDOzsyRkFBckMscUNBQXFDO2tCQUQxRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFRhYmxlSXRlbU9wc0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWl0ZW0tb3BzLWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBUYWJsZUl0ZW1CYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBjb2xTcGFuID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgdiA9ICh0aGlzLm9wdGlvbnMoKSBhcyBhbnkpPy5jb2xTcGFuIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdiA/IE1hdGgubWF4KDEsIHYpIDogMTtcbiAgfSk7XG4gIHByb3RlY3RlZCByb3dTcGFuID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgY29uc3QgdiA9ICh0aGlzLm9wdGlvbnMoKSBhcyBhbnkpPy5yb3dTcGFuIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdiA/IE1hdGgubWF4KDEsIHYpIDogMTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRegistryService {\n /**\n *\n */\n constructor() {\n this.types = new Map();\n AXPWidgetRegistryService.instance = this;\n }\n register(widget) {\n this.types.set(widget.name, widget);\n }\n extend(parentName, widget) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n resolve(name) {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n all() {\n return Array.from(this.types.values());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFNbEMsTUFBTSxPQUFPLHdCQUF3QjtJQUtuQzs7T0FFRztJQUNIO1FBUFEsVUFBSyxHQUFpQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBUXRELHdCQUF3QixDQUFDLFFBQVEsR0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUF1QjtRQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBa0IsRUFBRSxNQUF1QjtRQUNoRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELFNBQVMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBWTtRQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixJQUFJLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxHQUFHO1FBQ1IsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQWpDVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzsyRkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB0eXBlczogTWFwPHN0cmluZywgQVhQV2lkZ2V0Q29uZmlnPiA9IG5ldyBNYXAoKTtcblxuICBwdWJsaWMgc3RhdGljICBpbnN0YW5jZTpBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UuaW5zdGFuY2U9dGhpcztcbiAgfVxuXG4gIHJlZ2lzdGVyKHdpZGdldDogQVhQV2lkZ2V0Q29uZmlnKSB7XG4gICAgdGhpcy50eXBlcy5zZXQod2lkZ2V0Lm5hbWUsIHdpZGdldCk7XG4gIH1cblxuICBleHRlbmQocGFyZW50TmFtZTogc3RyaW5nLCB3aWRnZXQ6IEFYUFdpZGdldENvbmZpZykge1xuICAgIGNvbnN0IHBhcmVudFdpZGdldCA9IHRoaXMucmVzb2x2ZShwYXJlbnROYW1lKTtcbiAgICBjb25zdCBuZXdXaWRnZXQgPSBtZXJnZSh7fSwgcGFyZW50V2lkZ2V0LCB3aWRnZXQpO1xuICAgIG5ld1dpZGdldC5uYW1lID0gd2lkZ2V0Lm5hbWU7XG4gICAgdGhpcy5yZWdpc3RlcihuZXdXaWRnZXQpO1xuICB9XG5cbiAgcmVzb2x2ZShuYW1lOiBzdHJpbmcpOiBBWFBXaWRnZXRDb25maWcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHdpZGdldCA9IHRoaXMudHlwZXMuZ2V0KG5hbWUpO1xuICAgIGlmICghd2lkZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdpZGdldCB3aXRoIG5hbWUgXCIke25hbWV9XCIgZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwdWJsaWMgYWxsKCk6IEFYUFdpZGdldENvbmZpZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnR5cGVzLnZhbHVlcygpKTtcbiAgfVxufVxuIl19","import { AXBaseDataTable, AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { getSmart } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal, } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.grid = inject(AXBaseDataTable);\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.injector = inject(Injector);\n this.cdr = inject(ChangeDetectorRef);\n }\n get node() {\n return this._node;\n }\n set node(v) {\n this._node = v;\n }\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n // if (row.data?.__meta__?.expanded === undefined) {\n // this.width = `${parseInt(this.width as string) + 24}px`;\n // }\n }\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n get loadingEnabled() {\n return true;\n }\n get name() {\n return `col-${this.node.path}`;\n }\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column';\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n this.width = this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n getInputs(data) {\n return {\n rawValue: getSmart(data, this.node.path),\n rowData: data,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: \"axp-widget-column-renderer\", inputs: { caption: \"caption\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", customWidth: \"customWidth\", node: \"node\", footerTemplate: \"footerTemplate\", expandHandler: \"expandHandler\", cellTemplate: \"cellTemplate\", headerTemplate: \"headerTemplate\" }, providers: [\n AXPLayoutBuilderService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ], viewQueries: [{ propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div class=\"ax-flex ax-gap-2 ax-items-center\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [\n AXPLayoutBuilderService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n standalone: false,\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], customWidth: [{\n type: Input\n }], node: [{\n type: Input,\n args: [{ required: true }]\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], expandHandler: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbHVtbi1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1jb2x1bW4tcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQXVCLHVCQUF1QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUE0QzlFLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSwwQkFBMEI7SUExQ2hGOztRQTJDWSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3JELFNBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFnQi9CLGtCQUFhLEdBQUcsTUFBTSxDQUFNLEVBQUUseURBQUMsQ0FBQztRQUM5QixlQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksc0RBQUMsQ0FBQztRQW9ENUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7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LElBQUksRUFBRTtnQkFZbEIsY0FBYztzQkFEcEIsS0FBSztnQkFJRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUTtnQkFRWixhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUUsb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLE1BQU07Z0JBUVYsY0FBYztzQkFEcEIsS0FBSztnQkFJRSxzQkFBc0I7c0JBRDdCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSwgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBnZXRTbWFydCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtbk5vZGUsIEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOIH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LWNvbHVtbi1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLXRlbXBsYXRlICNoZWFkZXI+e3sgY2FwdGlvbiB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvdz5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWdhcC0yIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICBAaWYgKGV4cGFuZEhhbmRsZXIpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlRXhwYW5kUm93KHJvdylcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1leHBhbmQtaGFuZGxlclwiXG4gICAgICAgICAgICBbY2xhc3MuYXgtaW52aXNpYmxlXT1cInJvdy5kYXRhLmhhc0NoaWxkID09PSBmYWxzZVwiXG4gICAgICAgICAgICBpZD1cImF4LWV4cGFuZC1oYW5kbGVyLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZy1pbmxpbmUtc3RhcnQucmVtXT1cInJvdy5kYXRhPy5fX21ldGFfXz8ubGV2ZWwgKiAyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGxvYWRpbmdSb3coKSA9PT0gcm93KSB7XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXNwaW5uZXItdGhpcmQgYXgtYW5pbWF0ZS10d1NwaW4gYXgtYW5pbWF0ZS1pbmZpbml0ZVwiPjwvaT5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBAaWYgKHJvdy5kYXRhPy5fX21ldGFfXz8uZXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiY3VzdG9tQ29sbGFwc2VJY29uIHx8ICdmYXIgZmEtbWludXMtc3F1YXJlIGF4LXRleHQtbWQgYXgtb3BhY2l0eS03NSdcIj48L2k+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21FeHBhbmRJY29uIHx8ICdmYXIgZmEtcGx1cy1zcXVhcmUgYXgtdGV4dC1tZCAgYXgtb3BhY2l0eS03NSdcIj48L2k+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGNvbXBvbmVudCAmJiB3aWRnZXRJbmplY3RvciAmJiByb3c/LmRhdGEpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wb25lbnQ7IGluamVjdG9yOiB3aWRnZXRJbmplY3RvcjsgaW5wdXRzOiBnZXRJbnB1dHMocm93LmRhdGEpXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFsnY2FwdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG5cbiAgQElucHV0KCkgY3VzdG9tRXhwYW5kSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Db2xsYXBzZUljb246IHN0cmluZztcblxuICBASW5wdXQoKSBjdXN0b21XaWR0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX25vZGU6IEFYUFdpZGdldENvbHVtbk5vZGU7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBnZXQgbm9kZSgpOiBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfVxuICBwdWJsaWMgc2V0IG5vZGUodjogQVhQV2lkZ2V0Q29sdW1uTm9kZSkge1xuICAgIHRoaXMuX25vZGUgPSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZWRPcHRpb25zID0gc2lnbmFsPGFueT4oe30pO1xuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgZ2V0IHJlbmRlckZvb3RlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50Rm9vdGVyVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgZXhwYW5kSGFuZGxlcjogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgY2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBAVmlld0NoaWxkKCdjZWxsJylcbiAgcHJpdmF0ZSBfY29udGVudENlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgZ2V0IHJlbmRlckNlbGxUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbFRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRDZWxsVGVtcGxhdGU7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpXG4gIHByaXZhdGUgX2NvbnRlbnRIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUV4cGFuZFJvdyhyb3c6IGFueSkge1xuICAgIHRoaXMubG9hZGluZ1Jvdy5zZXQocm93KTtcbiAgICBhd2FpdCB0aGlzLmdyaWQuZXhwYW5kUm93KHJvdyk7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChudWxsKTtcbiAgICAvLyBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICB0aGlzLndpZHRoID0gYCR7cGFyc2VJbnQodGhpcy53aWR0aCBhcyBzdHJpbmcpICsgMjR9cHhgO1xuICAgIC8vIH1cbiAgfVxuXG4gIGdldCByZW5kZXJIZWFkZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZGVyVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudEhlYWRlclRlbXBsYXRlO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGNvbC0ke3RoaXMubm9kZS5wYXRofWA7XG4gIH1cblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0SW5qZWN0b3IhOiBJbmplY3RvcjtcbiAgcHJvdGVjdGVkIGNvbXBvbmVudCE6IGFueTtcblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZS50eXBlKTtcbiAgICBjb25zdCBtb2RlID0gJ2NvbHVtbic7XG4gICAgdGhpcy5jb21wb25lbnQgPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbbW9kZV0/LmNvbXBvbmVudCgpO1xuICAgIC8vXG4gICAgY29uc3QgcHJvcHMgPSB3aWRnZXQ/LmNvbXBvbmVudHNbbW9kZV0/LnByb3BlcnRpZXNcbiAgICAgID8uZmlsdGVyKChjKSA9PiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUpXG4gICAgICAubWFwKChjKSA9PiAoeyBbYy5uYW1lXTogYy5zY2hlbWEuZGVmYXVsdFZhbHVlIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuICAgIC8vXG4gICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgdGhpcy5ub2RlLm9wdGlvbnMpIHx8IHt9KTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBwYXRoOiB0aGlzLm5vZGUucGF0aCxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgIH07XG4gICAgdGhpcy53aWRnZXRJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIHRoaXMud2lkdGggPSB0aGlzLmN1c3RvbVdpZHRoID8gdGhpcy5jdXN0b21XaWR0aCA6ICh0aGlzLm1lcmdlZE9wdGlvbnMoKS53aWR0aCA/PyAnMjAwcHgnKTtcbiAgICB0aGlzLmFsbG93UmVzaXppbmcgPSB0aGlzLm1lcmdlZE9wdGlvbnMoKS5hbGxvd1Jlc2l6aW5nIHx8IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0SW5wdXRzKGRhdGE6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1ZhbHVlOiBnZXRTbWFydChkYXRhLCB0aGlzLm5vZGUucGF0aCEpLFxuICAgICAgcm93RGF0YTogZGF0YSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, computed, effect, inject, } from '@angular/core';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetContainerComponent {\n set context(value) {\n this.contextService.set(value);\n }\n set functions(v) {\n this.builderService.setFunctions(v);\n }\n constructor() {\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.builderService = inject(AXPLayoutBuilderService);\n this.onContextChanged = new EventEmitter();\n this.status = computed(() => {\n return this.builderService.status();\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this.isBusy = computed(() => {\n return this.builderService.isBusy();\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n effect(() => {\n if (this.contextService.isChanged()) {\n this.onContextChanged.emit(this.contextService.changeEvent());\n }\n });\n }\n refresh() {\n this.builderService.refresh();\n }\n find(name) {\n return this.builderService.waitForWidget(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AXPWidgetContainerComponent, isStandalone: false, selector: \"axp-widgets-container\", inputs: { context: \"context\", functions: \"functions\" }, outputs: { onContextChanged: \"onContextChanged\" }, host: { styleAttribute: \"display: contents;\" }, providers: [AXPLayoutBuilderService, AXPLayoutBuilderContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXPLayoutBuilderContextStore],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { onContextChanged: [{\n type: Output\n }], context: [{\n type: Input\n }], functions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNEJBQTRCLEVBQStCLE1BQU0seUJBQXlCLENBQUM7O0FBVXBHLE1BQU0sT0FBTywyQkFBMkI7SUFPdEMsSUFDSSxPQUFPLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDVyxTQUFTLENBQUMsQ0FBTTtRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7UUFoQmdCLG1CQUFjLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDdEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUdqRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBK0IsQ0FBQztRQW9CNUUsV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLENBQUMsa0RBQUMsQ0FBQztRQUVJLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QyxDQUFDLGtEQUFDLENBQUM7UUFiRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFXTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sSUFBSSxDQUFDLElBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDOzhHQXhDVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnT0FIM0IsQ0FBQyx1QkFBdUIsRUFBRSw0QkFBNEIsQ0FBQywwQkFIeEQsMkJBQTJCOzsyRkFNMUIsMkJBQTJCO2tCQVJ2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixFQUFFLDRCQUE0QixDQUFDO29CQUNsRSxVQUFVLEVBQUUsS0FBSztpQkFDbEI7d0RBTWlCLGdCQUFnQjtzQkFEL0IsTUFBTTtnQkFJSCxPQUFPO3NCQURWLEtBQUs7Z0JBTUssU0FBUztzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlckNvbnRleHRTdG9yZSwgQVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50IH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0cy1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcbiAgcHJvdmlkZXJzOiBbQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEJ1aWxkZXJDb250ZXh0U3RvcmVdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJDb250ZXh0U3RvcmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQTGF5b3V0Q29udGV4dENoYW5nZUV2ZW50PigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjb250ZXh0KHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGZ1bmN0aW9ucyh2OiBhbnkpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnNldEZ1bmN0aW9ucyh2KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb250ZXh0U2VydmljZS5pc0NoYW5nZWQoKSkge1xuICAgICAgICB0aGlzLm9uQ29udGV4dENoYW5nZWQuZW1pdCh0aGlzLmNvbnRleHRTZXJ2aWNlLmNoYW5nZUV2ZW50KCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXR1cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5zdGF0dXMoKTtcbiAgfSk7XG5cbiAgcHVibGljIGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5pc0J1c3koKTtcbiAgfSk7XG5cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLnJlZnJlc2goKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLndhaXRGb3JXaWRnZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/skeleton\";\nexport class AXPWidgetPlaceholderComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: \"axp-widget-placeholder\", ngImport: i0, template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i1.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1wbGFjZWhvbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBV25FLE1BQU0sT0FBTyw2QkFBNkI7OEdBQTdCLDZCQUE2QjtrR0FBN0IsNkJBQTZCLGtGQVA5Qjs7U0FFSCwyREFFRyxnQkFBZ0I7OzJGQUdmLDZCQUE2QjtrQkFUekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUU7O1NBRUg7b0JBQ1AsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlOiBgPGRpdj5cbiAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LWZ1bGwgYXgtaC0xMCBheC1yb3VuZGVkLW1kXCI+PC9heC1za2VsZXRvbj5cbiAgPC9kaXY+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtBWFNrZWxldG9uTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UGxhY2Vob2xkZXJDb21wb25lbnQge31cbiJdfQ==","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Directive, Injector, ViewContainerRef, effect, inject, input, output, signal, } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isEqual, isString, merge, set, sum } from 'lodash-es';\nimport { Subject, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutBuilderContextStore } from './context-store.service';\nimport { AXPWidgetPlaceholderComponent } from './widget-placeholder.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRendererDirective {\n //#endregion\n //#endregion\n constructor() {\n this.parentNode = input(...(ngDevMode ? [undefined, { debugName: \"parentNode\" }] : []));\n this.index = input(...(ngDevMode ? [undefined, { debugName: \"index\" }] : []));\n this.mode = input.required(...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n this.node = input.required(...(ngDevMode ? [{ debugName: \"node\" }] : []));\n this._options = signal({}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = output();\n this.onValueChanged = output();\n //#region ---- Properties ----\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.injector = inject(Injector);\n this.builderService = inject(AXPLayoutBuilderService);\n this.contextService = inject(AXPLayoutBuilderContextStore);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.translateService = inject(AXTranslationService);\n this.widgetService = inject(AXPWidgetRegistryService);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.expressionEvaluators = new Map();\n this.renderTimeoutId = null;\n this.hasInitialRender = false;\n this.onContextChanged = new Subject();\n //#region ---- Performance Optimization Properties ----\n this.contextUpdateQueue = new Set();\n this.contextUpdateTimeout = null;\n this.CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms\n // Removed visibility detection - not needed for current implementation\n // Expression result caching\n this.expressionCache = new Map();\n this.EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)\n // Options change tracking\n this.lastAppliedOptions = null;\n // Expression result tracking\n this.lastExpressionResults = new Map();\n // Buffer for context changes that happen before initial render completes\n this.preRenderContextQueue = new Set();\n effect(async () => {\n const changed = this.contextService.changeEvent();\n // Don't trigger re-render during initial setup\n if (!this.hasInitialRender) {\n if (changed.path) {\n this.preRenderContextQueue.add(changed.path);\n console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);\n }\n return;\n }\n // CRITICAL PERFORMANCE FIX: Only respond to relevant context changes\n if (changed.path && this.isRelevantContextChange(changed.path)) {\n console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);\n this.queueContextUpdate(changed.path);\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n await this.processBatchedUpdates();\n });\n }\n //#region ---- Expression Caching Methods ----\n getCachedExpressionResult(expressionKey) {\n const cached = this.expressionCache.get(expressionKey);\n if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {\n console.log(`💾 [${this.node().type}] Using cached expression result for '${expressionKey}'`);\n return cached.value;\n }\n return null;\n }\n setCachedExpressionResult(expressionKey, value) {\n this.expressionCache.set(expressionKey, {\n value,\n timestamp: performance.now(),\n });\n }\n clearExpressionCache() {\n this.expressionCache.clear();\n }\n isPathAffectingExpressions(changedPath) {\n console.log(`🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`);\n // If widget has no expressions, no need to clear cache\n if (this.expressionEvaluators.size === 0) {\n console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);\n return false;\n }\n // Use the same logic as hasExpressionDependency to check for actual dependencies\n if (this.hasExpressionDependency(changedPath)) {\n console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);\n return true;\n }\n console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);\n return false;\n }\n //#endregion\n //#region ---- Context Batching Methods ----\n queueContextUpdate(path) {\n if (path) {\n console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);\n this.contextUpdateQueue.add(path);\n // Clear existing timeout\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n // Debounce updates\n this.contextUpdateTimeout = setTimeout(() => {\n console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);\n this.processBatchedUpdates();\n }, this.CONTEXT_UPDATE_DEBOUNCE_MS);\n }\n }\n async processBatchedUpdates() {\n if (this.contextUpdateQueue.size === 0)\n return;\n const startTime = performance.now();\n const paths = Array.from(this.contextUpdateQueue);\n this.contextUpdateQueue.clear();\n console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);\n // Clear expression cache only if changed paths affect this widget's expressions\n const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));\n if (shouldClearCache) {\n console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);\n this.clearExpressionCache();\n }\n // Process updates in batches\n const optionsStartTime = performance.now();\n const hasOptionsUpdate = await this.updateOptionsBasedOnContext();\n const optionsTime = performance.now() - optionsStartTime;\n if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {\n console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);\n this.applyOptions();\n }\n // Check formulas for any of the changed paths\n const formulaStartTime = performance.now();\n const formulaNeedsUpdate = paths.some((path) => this.checkFormulaForUpdate(this.node().formula, path));\n if (formulaNeedsUpdate) {\n console.log(`🧮 [${this.node().type}] Formula needs update`);\n await this.updateValueBasedOnFormula();\n }\n const formulaTime = performance.now() - formulaStartTime;\n // Emit context changes\n paths.forEach((path) => {\n this.onContextChanged.next({ path });\n });\n const totalTime = performance.now() - startTime;\n console.log(`✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, formula: ${formulaTime.toFixed(2)}ms)`);\n }\n //#endregion\n //#region ---- Context Relevance Filtering ----\n isRelevantContextChange(changedPath) {\n const node = this.node();\n // 1. Direct path match - widget's own field\n if (node.path === changedPath) {\n return true;\n }\n // 2. Parent path match - widget is inside the changed container\n if (node.path && changedPath.startsWith(node.path + '.')) {\n return true;\n }\n // 3. Child path match - changed field is inside this widget's container\n if (node.path && node.path.startsWith(changedPath + '.')) {\n return true;\n }\n // 4. Expression dependency check - if widget has expressions that depend on this path\n if (this.hasExpressionDependency(changedPath)) {\n return true;\n }\n // 5. Formula dependency check - if widget's formula depends on this path\n if (node.formula && this.checkFormulaForUpdate(node.formula, changedPath)) {\n return true;\n }\n // 6. Trigger dependency check - if widget has triggers that depend on this path\n if (this.hasTriggerDependency(changedPath)) {\n return true;\n }\n return false;\n }\n hasExpressionDependency(changedPath) {\n // Check if any cached expressions depend on the changed path\n for (const [path, evaluator] of this.expressionEvaluators) {\n // Check if the expression path itself contains the changed path\n if (path.includes(changedPath)) {\n return true;\n }\n // Parse the actual expression content to check for context.eval() calls\n // We need to get the original expression string to analyze it\n const node = this.node();\n const expressionValue = this.getExpressionValueFromNode(node, path);\n if (expressionValue && typeof expressionValue === 'string') {\n // Look for context.eval() calls that reference the changed path\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(expressionValue)) !== null) {\n const evalPath = match[1];\n // Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'party.typeId' -> 'party.type.id')\n const normalizePath = (p) => {\n if (!p)\n return p;\n const parts = p.split('.');\n const last = parts[parts.length - 1];\n if (last && last.endsWith('Id')) {\n parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');\n }\n return parts.join('.');\n };\n const isSegmentSuffix = (a, b) => {\n if (!a || !b)\n return false;\n const pa = a.split('.');\n const pb = b.split('.');\n if (pb.length > pa.length)\n return false;\n for (let i = 1; i <= pb.length; i++) {\n if (pa[pa.length - i] !== pb[pb.length - i])\n return false;\n }\n return true;\n };\n const evalNorm = normalizePath(evalPath);\n const changedNorm = normalizePath(changedPath);\n // Debug log for dependency check\n console.log(`🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`);\n // Generic direct and hierarchical dependency checks (raw and normalized)\n const rawMatch = evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.') ||\n isSegmentSuffix(evalPath, changedPath) ||\n isSegmentSuffix(changedPath, evalPath);\n const normMatch = evalNorm === changedNorm ||\n evalNorm.startsWith(changedNorm + '.') ||\n changedNorm.startsWith(evalNorm + '.') ||\n isSegmentSuffix(evalNorm, changedNorm) ||\n isSegmentSuffix(changedNorm, evalNorm);\n if (rawMatch || normMatch) {\n console.log(`🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`);\n return true;\n }\n // Check for path aliases/mappings (e.g., typeId.id <-> type.id)\n if (this.isPathAlias(evalPath, changedPath)) {\n console.log(`🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`);\n return true;\n }\n }\n }\n }\n return false;\n }\n isPathAlias(evalPath, changedPath) {\n // Dynamic path alias detection based on 'Id' suffix pattern\n // Examples: typeId.id <-> type.id, categoryId.name <-> category.name\n // Check if evalPath ends with 'Id' and has a property\n if (evalPath.endsWith('Id') && evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (changedPath === mappedPath) {\n console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check if changedPath ends with 'Id' and has a property\n if (changedPath.endsWith('Id') && changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (evalPath === mappedPath) {\n console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)\n if (evalPath.endsWith('Id') && !evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (changedPath === mappedPath) {\n console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n if (changedPath.endsWith('Id') && !changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (evalPath === mappedPath) {\n console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n return false;\n }\n getExpressionValueFromNode(node, path) {\n try {\n // Navigate through the node structure to find the expression value\n const pathParts = path.split('.');\n let current = node.options || {};\n // Navigate through the path parts\n for (const part of pathParts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part];\n }\n else {\n return null;\n }\n }\n return typeof current === 'string' ? current : null;\n }\n catch (error) {\n console.error('Error extracting expression value from node:', error);\n return null;\n }\n }\n hasTriggerDependency(changedPath) {\n const node = this.node();\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers)\n return false;\n // Check if any trigger event depends on the changed path\n for (const trigger of triggers) {\n if (trigger.event && trigger.event.includes(changedPath)) {\n return true;\n }\n }\n return false;\n }\n //#endregion\n // Removed visibility detection methods - not needed for current implementation\n // Detect input changes\n ngOnChanges(changes) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n rerenderComponent() {\n // Clear any pending render operation to prevent double rendering\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n this.renderTimeoutId = null;\n }\n // Reset loading state to allow re-rendering\n this.isLoading.set(false);\n // Schedule the component loading\n this.renderTimeoutId = setTimeout(async () => {\n await this.loadComponent();\n this.renderTimeoutId = null;\n });\n }\n ngOnDestroy() {\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n }\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n try {\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const propertiesToProcess = [\n ...(widget?.properties ?? []),\n ...(widget?.components[this.mode()]?.properties ?? []),\n ]?.filter((c) => c.schema.defaultValue != null);\n // Process default values (evaluate expressions if needed)\n const props = {};\n for (const property of propertiesToProcess) {\n const defaultValue = property.schema.defaultValue;\n if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n // Evaluate expression for default value\n try {\n const evaluatedValue = await this.evaluateExpression(defaultValue);\n props[property.name] = evaluatedValue;\n }\n catch (error) {\n console.error(`Error evaluating default value expression for property ${property.name}:`, error);\n props[property.name] = cloneDeep(defaultValue); // Fallback to original value\n }\n }\n else {\n // Use static default value\n props[property.name] = cloneDeep(defaultValue);\n }\n }\n //\n this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});\n this.expressionEvaluators.clear();\n // Register expressions from widget defaults and node options to cover related-entity cases\n this.preprocessAndInitialOptions(cloneDeep(widget?.options));\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n this._options.update((val) => ({ ...val, ...this.mergedOptions() }));\n // Evaluate default value\n let defaultValue = this.node().defaultValue;\n if (defaultValue && this.expressionEvaluator.isExpression(defaultValue)) {\n defaultValue = await this.evaluateExpression(defaultValue);\n }\n //\n const tokenValue = {\n node: this.node(),\n defaultValue: defaultValue,\n options: this.mergedOptions(),\n config: widget,\n };\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);\n //\n const com = await widget?.components[this.mode()]?.component();\n if (!com) {\n console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);\n return;\n }\n this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.setStatus(AXPWidgetStatus.Rendering);\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n this.instance.setStatus(AXPWidgetStatus.Rendered);\n this.instance?.onOptionsChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onOptionsChanged.emit({ sender: this, widget: c.sender });\n });\n this.instance?.onValueChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onValueChanged.emit({ sender: this, widget: c.sender });\n });\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n //\n loadingRef.destroy();\n // Mark that initial render is complete\n this.hasInitialRender = true;\n // Re-evaluate expressions after initial render to catch late-arriving related context\n if (this.expressionEvaluators.size > 0) {\n console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n // Process any buffered pre-render context changes now that the component is ready\n if (this.preRenderContextQueue.size > 0) {\n console.log(`🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`);\n this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));\n this.preRenderContextQueue.clear();\n await this.processBatchedUpdates();\n }\n }\n catch (error) {\n console.error('Error loading component:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n applyOptions() {\n if (!this.instance)\n return;\n const currentOptions = this.mergedOptions();\n // Check if options have actually changed\n if (this.hasOptionsChanged(currentOptions)) {\n console.log('applyOptions', this.node().path, '- options changed');\n this._options.update((val) => ({ ...val, ...currentOptions }));\n this.instance.setOptions(currentOptions);\n this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash\n }\n else {\n console.log('applyOptions', this.node().path, '- no changes, skipping');\n }\n }\n hasOptionsChanged(newOptions) {\n if (!this.lastAppliedOptions) {\n return true; // First time, always apply\n }\n // Deep comparison of options using Lodash isEqual\n return !isEqual(newOptions, this.lastAppliedOptions);\n }\n // Removed deepCloneValue method - now using Lodash cloneDeep\n checkFormulaForUpdate(formula, path) {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n }\n else\n return false;\n }\n preprocessAndInitialOptions(obj, pathPrefix = '') {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n // CRITICAL FIX: Skip trigger actions during options processing\n //\n // PROBLEM: Trigger actions were being evaluated immediately during widget setup/options processing,\n // causing them to execute before the actual trigger event occurred. This meant triggers would fire\n // during initialization instead of when the specified context path actually changed.\n //\n // ROOT CAUSE: The expression evaluator was processing trigger action expressions (like console.log\n // or widget.setValue calls) as part of the normal options preprocessing, treating them as dynamic\n // expressions that needed immediate evaluation.\n //\n // SOLUTION: Detect when we're processing trigger actions and store them as static values without\n // expression evaluation. This ensures trigger actions are only evaluated when the trigger's\n // subscription callback actually fires (when the event condition is met).\n //\n // RESULT: Triggers now only execute when their event filters pass (e.g., when the specified\n // context path changes), not during widget initialization.\n if (currentPath.includes('triggers') && (key === 'action' || currentPath.endsWith('.action'))) {\n // Apply static values directly without expression evaluation\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n return;\n }\n if (typeof value === 'string' && this.expressionEvaluator.isExpression(value)) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n }\n else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n async updateOptionsBasedOnContext() {\n // Early return if no expressions to evaluate\n if (this.expressionEvaluators.size === 0) {\n return 0;\n }\n console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n // Check cache first\n const cachedValue = this.getCachedExpressionResult(path);\n if (cachedValue !== null) {\n console.log(`💾 [${this.node().type}] Using cached expression result for '${path}'`);\n return { path, newValue: cachedValue, fromCache: true };\n }\n // Evaluate expression if not cached\n const evalStartTime = performance.now();\n const newValue = await evaluator();\n const evalTime = performance.now() - evalStartTime;\n // Check if result has actually changed using Lodash isEqual\n const lastValue = this.lastExpressionResults.get(path);\n const hasChanged = !isEqual(newValue, lastValue);\n if (hasChanged) {\n console.log(`📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`);\n // Cache the result and track it\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: true };\n }\n else {\n console.log(`📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`);\n // Cache the result but don't update\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: false };\n }\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Filter updates to only include those that have actually changed\n const changedUpdates = updates.filter((update) => update.hasChanged !== false);\n // Apply updates to mergedOptions only for changed values\n if (changedUpdates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n changedUpdates.forEach(({ path, newValue }) => {\n set(updatedOptions, path, newValue);\n });\n return updatedOptions;\n });\n }\n const cacheHits = updates.filter((update) => update.fromCache).length;\n const skippedUpdates = updates.length - changedUpdates.length;\n console.log(`📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`);\n return changedUpdates.length;\n }\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula);\n this.instance.setValue(value);\n }\n }\n async evaluateExpression(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n return await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n buildExpressionScope() {\n return {\n context: this.getContextScope(),\n events: this.getEventScope(),\n widget: this.getWidgetScope(),\n methods: this.getFunctionScope(),\n vars: this.getVariablesScope(),\n };\n }\n getContextScope() {\n return {\n eval: (path) => {\n //TODO: Handle array index\n const fullPath = path.startsWith('>') ? `${this.instance?.parentPath()}.${path.substring(1)}` : path;\n const value = this.contextService.getValue(fullPath);\n return value;\n },\n set: (path, value) => {\n this.contextService.update(path, value);\n },\n data: () => {\n return this.contextService.data();\n },\n isDirty: () => {\n return this.contextService.isDirty();\n },\n };\n }\n getEventScope() {\n return {\n context: (path) => {\n return this.onContextChanged.pipe(filter((c) => {\n // If no path filter specified, pass all events\n if (path == null || path === '') {\n return true;\n }\n // Ensure c.path exists\n if (!c.path) {\n return false;\n }\n // Pattern: \"prefix*\" - matches paths that start with prefix\n if (path.endsWith('*')) {\n const prefix = path.substring(0, path.length - 1);\n return c.path.startsWith(prefix);\n }\n // Pattern: \"*suffix\" - matches paths that end with suffix\n else if (path.startsWith('*')) {\n const suffix = path.substring(1);\n return c.path.endsWith(suffix);\n }\n // Exact match\n else {\n return c.path === path;\n }\n }));\n },\n from: (event) => get(this.instance.api(), event),\n };\n }\n getWidgetScope() {\n return {\n call: (name, ...args) => {\n this.instance.call(name, ...args);\n },\n setValue: (value) => {\n this.instance.setValue(value);\n },\n clear: () => {\n this.instance.setValue(undefined);\n },\n refresh: () => {\n const refresh = this.instance?.['refresh'];\n if (refresh && typeof refresh === 'function') {\n refresh.bind(this.instance)();\n }\n },\n output: (name) => {\n this.instance.output(name);\n },\n find: (id) => {\n return this.builderService.getWidget(id);\n },\n };\n }\n getFunctionScope() {\n const scope = {\n sum: (values) => {\n return sum(values);\n },\n translate: (text, options) => {\n return this.translateService.translateAsync(text, options);\n },\n widgetInfo: (name) => {\n return this.widgetService.resolve(name);\n },\n };\n // Add custom functions from builder service\n Object.entries(this.builderService.functions).forEach(([key, fn]) => {\n scope[key] = (...args) => {\n return fn(...args);\n };\n });\n return scope;\n }\n getVariablesScope() {\n return {\n eval: (path) => get(this.builderService.variables, path),\n };\n }\n async assignTriggers() {\n const node = this.node();\n // Check multiple possible locations for triggers\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers) {\n return;\n }\n for (const trigger of triggers) {\n try {\n const event = await this.evaluateTrigger(trigger.event);\n if (event) {\n event.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const exec = async (action) => {\n if (!isEmpty(action) && isString(action)) {\n await this.evaluateAction(action);\n }\n };\n const actions = Array.isArray(trigger.action) ? trigger.action : [trigger.action];\n actions.forEach(async (a) => await exec(a));\n });\n }\n }\n catch (error) {\n console.error('Error assigning trigger:', error);\n }\n }\n }\n async evaluateTrigger(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n const result = await this.expressionEvaluator.evaluate(templateExpression, scope);\n // Check if result is an Observable\n if (result && typeof result.subscribe === 'function') {\n return result;\n }\n else {\n return null;\n }\n }\n catch (error) {\n console.error('Error evaluating trigger expression:', error);\n return null;\n }\n }\n async evaluateAction(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n console.error('Error evaluating action expression:', templateExpression, error);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.8\", type: AXPWidgetRendererDirective, isStandalone: false, selector: \"[axp-widget-renderer]\", inputs: { parentNode: { classPropertyName: \"parentNode\", publicName: \"parentNode\", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: \"node\", publicName: \"node\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: \"onOptionsChanged\", onValueChanged: \"onValueChanged\" }, providers: [\n {\n provide: AXUnsubscriber,\n },\n ], exportAs: [\"widgetRenderer\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-widget-renderer]',\n exportAs: 'widgetRenderer',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n standalone: false,\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQStCLDZCQUE2QixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDaEgsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBRVIsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFLTCxnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEIsTUFBTSxPQUFPLDBC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QUFFLGNBQWM7YUFDeEI7U0FDRjs7MkZBR1UsMEJBQTBCO2tCQVZ0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsY0FBYzt5QkFDeEI7cUJBQ0Y7b0JBQ0QsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGVPcHRpb25zLCBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUsIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTZXJ2aWNlLCBBWFBNZXRhRGF0YSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSW5qZWN0b3IsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBpc0VtcHR5LCBpc0VxdWFsLCBpc1N0cmluZywgbWVyZ2UsIHNldCwgc3VtIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlIH0gZnJvbSAnLi9jb250ZXh0LXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQQmFzZVdpZGdldENvbXBvbmVudCwgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCwgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXROb2RlVG9rZW4sXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG4gIEFYUF9XSURHRVRfVE9LRU4sXG59IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmVPcHRpb25zID0gQVhQTWV0YURhdGE7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIGV4cG9ydEFzOiAnd2lkZ2V0UmVuZGVyZXInLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFVuc3Vic2NyaWJlcixcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUge1xuICBwYXJlbnROb2RlID0gaW5wdXQ8QVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIF9vcHRpb25zID0gc2lnbmFsPEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlT3B0aW9ucz4oe30pO1xuICBwdWJsaWMgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkID0gb3V0cHV0PHsgc2VuZGVyOiBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZTsgd2lkZ2V0OiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlZCA9IG91dHB1dDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICAvLyNyZWdpb24gLS0tLSAgIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgcHJvdGVjdGVkIG1lcmdlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByb3RlY3RlZCBjb250ZXh0U2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyQ29udGV4dFN0b3JlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoQVhUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0U2VydmljZSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgZXhwcmVzc2lvbkV2YWx1YXRvciA9IGluamVjdChBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSk7XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgLy9UT0RPIGNoZWNrIGlmIGluc3RhbmNlIGNhbm5vdCBiZSBwdWJsaWMgY2hhbmdlIGl0OlxuICBwdWJsaWMgaW5zdGFuY2UhOiBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDtcbiAgcHJpdmF0ZSBleHByZXNzaW9uRXZhbHVhdG9yczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICBwcml2YXRlIHJlbmRlclRpbWVvdXRJZDogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBoYXNJbml0aWFsUmVuZGVyID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBvbkNvbnRleHRDaGFuZ2VkID0gbmV3IFN1YmplY3Q8eyBwYXRoOiBzdHJpbmcgfT4oKTtcblxuICAvLyNyZWdpb24gLS0tLSAgIFBlcmZvcm1hbmNlIE9wdGltaXphdGlvbiBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByaXZhdGUgY29udGV4dFVwZGF0ZVF1ZXVlID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgY29udGV4dFVwZGF0ZVRpbWVvdXQ6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgQ09OVEVYVF9VUERBVEVfREVCT1VOQ0VfTVMgPSA0OyAvLyB+MjUwZnBzIGZvciBsYXJnZSBmb3Jtc1xuXG4gIC8vIFJlbW92ZWQgdmlzaWJpbGl0eSBkZXRlY3Rpb24gLSBub3QgbmVlZGVkIGZvciBjdXJyZW50IGltcGxlbWVudGF0aW9uXG5cbiAgLy8gRXhwcmVzc2lvbiByZXN1bHQgY2FjaGluZ1xuICBwcml2YXRlIGV4cHJlc3Npb25DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCB7IHZhbHVlOiBhbnk7IHRpbWVzdGFtcDogbnVtYmVyIH0+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgRVhQUkVTU0lPTl9DQUNIRV9UVEwgPSA1MDA7IC8vIENhY2hlIGZvciA1MDBtcyAoaW5jcmVhc2VkIGZvciBiZXR0ZXIgaGl0IHJhdGUpXG5cbiAgLy8gT3B0aW9ucyBjaGFuZ2UgdHJhY2tpbmdcbiAgcHJpdmF0ZSBsYXN0QXBwbGllZE9wdGlvbnM6IGFueSA9IG51bGw7XG5cbiAgLy8gRXhwcmVzc2lvbiByZXN1bHQgdHJhY2tpbmdcbiAgcHJpdmF0ZSBsYXN0RXhwcmVzc2lvblJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIC8vIEJ1ZmZlciBmb3IgY29udGV4dCBjaGFuZ2VzIHRoYXQgaGFwcGVuIGJlZm9yZSBpbml0aWFsIHJlbmRlciBjb21wbGV0ZXNcbiAgcHJpdmF0ZSBwcmVSZW5kZXJDb250ZXh0UXVldWUgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNlbmRyZWdpb25cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2hhbmdlRXZlbnQoKTtcblxuICAgICAgLy8gRG9uJ3QgdHJpZ2dlciByZS1yZW5kZXIgZHVyaW5nIGluaXRpYWwgc2V0dXBcbiAgICAgIGlmICghdGhpcy5oYXNJbml0aWFsUmVuZGVyKSB7XG4gICAgICAgIGlmIChjaGFuZ2VkLnBhdGgpIHtcbiAgICAgICAgICB0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5hZGQoY2hhbmdlZC5wYXRoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhg8J+TnSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQnVmZmVyZWQgcHJlLXJlbmRlciBjb250ZXh0IGNoYW5nZTogJHtjaGFuZ2VkLnBhdGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDUklUSUNBTCBQRVJGT1JNQU5DRSBGSVg6IE9ubHkgcmVzcG9uZCB0byByZWxldmFudCBjb250ZXh0IGNoYW5nZXNcbiAgICAgIGlmIChjaGFuZ2VkLnBhdGggJiYgdGhpcy5pc1JlbGV2YW50Q29udGV4dENoYW5nZShjaGFuZ2VkLnBhdGgpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn46vIFske3RoaXMubm9kZSgpLnR5cGV9XSBDb250ZXh0IGNoYW5nZSBkZXRlY3RlZDogJHtjaGFuZ2VkLnBhdGh9YCk7XG4gICAgICAgIHRoaXMucXVldWVDb250ZXh0VXBkYXRlKGNoYW5nZWQucGF0aCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uUmVmcmVzaC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZShhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3NCYXRjaGVkVXBkYXRlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFeHByZXNzaW9uIENhY2hpbmcgTWV0aG9kcyAgIC0tLS1cblxuICBwcml2YXRlIGdldENhY2hlZEV4cHJlc3Npb25SZXN1bHQoZXhwcmVzc2lvbktleTogc3RyaW5nKTogYW55IHwgbnVsbCB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5leHByZXNzaW9uQ2FjaGUuZ2V0KGV4cHJlc3Npb25LZXkpO1xuICAgIGlmIChjYWNoZWQgJiYgcGVyZm9ybWFuY2Uubm93KCkgLSBjYWNoZWQudGltZXN0YW1wIDwgdGhpcy5FWFBSRVNTSU9OX0NBQ0hFX1RUTCkge1xuICAgICAgY29uc29sZS5sb2coYPCfkr4gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFVzaW5nIGNhY2hlZCBleHByZXNzaW9uIHJlc3VsdCBmb3IgJyR7ZXhwcmVzc2lvbktleX0nYCk7XG4gICAgICByZXR1cm4gY2FjaGVkLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChleHByZXNzaW9uS2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5zZXQoZXhwcmVzc2lvbktleSwge1xuICAgICAgdmFsdWUsXG4gICAgICB0aW1lc3RhbXA6IHBlcmZvcm1hbmNlLm5vdygpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckV4cHJlc3Npb25DYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1BhdGhBZmZlY3RpbmdFeHByZXNzaW9ucyhjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQ2hlY2tpbmcgaWYgcGF0aCAnJHtjaGFuZ2VkUGF0aH0nIGFmZmVjdHMgZXhwcmVzc2lvbnMuIEV4cHJlc3Npb24gY291bnQ6ICR7dGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplfWAsXG4gICAgKTtcblxuICAgIC8vIElmIHdpZGdldCBoYXMgbm8gZXhwcmVzc2lvbnMsIG5vIG5lZWQgdG8gY2xlYXIgY2FjaGVcbiAgICBpZiAodGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCAnJHtjaGFuZ2VkUGF0aH0nIC0gbm8gZXhwcmVzc2lvbnMsIGtlZXBpbmcgY2FjaGVgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIHNhbWUgbG9naWMgYXMgaGFzRXhwcmVzc2lvbkRlcGVuZGVuY3kgdG8gY2hlY2sgZm9yIGFjdHVhbCBkZXBlbmRlbmNpZXNcbiAgICBpZiAodGhpcy5oYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoICcke2NoYW5nZWRQYXRofScgYWZmZWN0cyBleHByZXNzaW9ucyAtIGNsZWFyaW5nIGNhY2hlYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCAnJHtjaGFuZ2VkUGF0aH0nIGRvZXMgbm90IGFmZmVjdCBleHByZXNzaW9ucyAtIGtlZXBpbmcgY2FjaGVgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIENvbnRleHQgQmF0Y2hpbmcgTWV0aG9kcyAgIC0tLS1cblxuICBwcml2YXRlIHF1ZXVlQ29udGV4dFVwZGF0ZShwYXRoOiBzdHJpbmcpIHtcbiAgICBpZiAocGF0aCkge1xuICAgICAgY29uc29sZS5sb2coYPCflIQgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFF1ZXVlaW5nIGNvbnRleHQgdXBkYXRlIGZvciBwYXRoOiAke3BhdGh9YCk7XG4gICAgICB0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5hZGQocGF0aCk7XG5cbiAgICAgIC8vIENsZWFyIGV4aXN0aW5nIHRpbWVvdXRcbiAgICAgIGlmICh0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0KSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gRGVib3VuY2UgdXBkYXRlc1xuICAgICAgdGhpcy5jb250ZXh0VXBkYXRlVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhg4pqhIFske3RoaXMubm9kZSgpLnR5cGV9XSBQcm9jZXNzaW5nIGJhdGNoZWQgdXBkYXRlcyBmb3IgJHt0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5zaXplfSBwYXRoc2ApO1xuICAgICAgICB0aGlzLnByb2Nlc3NCYXRjaGVkVXBkYXRlcygpO1xuICAgICAgfSwgdGhpcy5DT05URVhUX1VQREFURV9ERUJPVU5DRV9NUyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQmF0Y2hlZFVwZGF0ZXMoKSB7XG4gICAgaWYgKHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLnNpemUgPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IHBhdGhzID0gQXJyYXkuZnJvbSh0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZSk7XG4gICAgdGhpcy5jb250ZXh0VXBkYXRlUXVldWUuY2xlYXIoKTtcblxuICAgIGNvbnNvbGUubG9nKGDwn5OKIFske3RoaXMubm9kZSgpLnR5cGV9XSBQcm9jZXNzaW5nICR7cGF0aHMubGVuZ3RofSBwYXRoczpgLCBwYXRocyk7XG5cbiAgICAvLyBDbGVhciBleHByZXNzaW9uIGNhY2hlIG9ubHkgaWYgY2hhbmdlZCBwYXRocyBhZmZlY3QgdGhpcyB3aWRnZXQncyBleHByZXNzaW9uc1xuICAgIGNvbnN0IHNob3VsZENsZWFyQ2FjaGUgPSBwYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmlzUGF0aEFmZmVjdGluZ0V4cHJlc3Npb25zKHBhdGgpKTtcbiAgICBpZiAoc2hvdWxkQ2xlYXJDYWNoZSkge1xuICAgICAgY29uc29sZS5sb2coYPCfl5HvuI8gWyR7dGhpcy5ub2RlKCkudHlwZX1dIENsZWFyaW5nIGV4cHJlc3Npb24gY2FjaGUgZHVlIHRvIGV4cHJlc3Npb24tYWZmZWN0aW5nIHBhdGggY2hhbmdlYCk7XG4gICAgICB0aGlzLmNsZWFyRXhwcmVzc2lvbkNhY2hlKCk7XG4gICAgfVxuXG4gICAgLy8gUHJvY2VzcyB1cGRhdGVzIGluIGJhdGNoZXNcbiAgICBjb25zdCBvcHRpb25zU3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgaGFzT3B0aW9uc1VwZGF0ZSA9IGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgY29uc3Qgb3B0aW9uc1RpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIG9wdGlvbnNTdGFydFRpbWU7XG5cbiAgICBpZiAodHlwZW9mIGhhc09wdGlvbnNVcGRhdGUgPT09ICdudW1iZXInICYmIGhhc09wdGlvbnNVcGRhdGUgPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhg8J+UpyBbJHt0aGlzLm5vZGUoKS50eXBlfV0gT3B0aW9ucyB1cGRhdGVkICgke29wdGlvbnNUaW1lLnRvRml4ZWQoMil9bXMpYCk7XG4gICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvcm11bGFzIGZvciBhbnkgb2YgdGhlIGNoYW5nZWQgcGF0aHNcbiAgICBjb25zdCBmb3JtdWxhU3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgZm9ybXVsYU5lZWRzVXBkYXRlID0gcGF0aHMuc29tZSgocGF0aCkgPT4gdGhpcy5jaGVja0Zvcm11bGFGb3JVcGRhdGUodGhpcy5ub2RlKCkuZm9ybXVsYSwgcGF0aCkpO1xuXG4gICAgaWYgKGZvcm11bGFOZWVkc1VwZGF0ZSkge1xuICAgICAgY29uc29sZS5sb2coYPCfp64gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEZvcm11bGEgbmVlZHMgdXBkYXRlYCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKTtcbiAgICB9XG4gICAgY29uc3QgZm9ybXVsYVRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIGZvcm11bGFTdGFydFRpbWU7XG5cbiAgICAvLyBFbWl0IGNvbnRleHQgY2hhbmdlc1xuICAgIHBhdGhzLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgIHRoaXMub25Db250ZXh0Q2hhbmdlZC5uZXh0KHsgcGF0aCB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRvdGFsVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYOKchSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQmF0Y2ggcHJvY2Vzc2luZyBjb21wbGV0ZWQgaW4gJHt0b3RhbFRpbWUudG9GaXhlZCgyKX1tcyAob3B0aW9uczogJHtvcHRpb25zVGltZS50b0ZpeGVkKDIpfW1zLCBmb3JtdWxhOiAke2Zvcm11bGFUaW1lLnRvRml4ZWQoMil9bXMpYCxcbiAgICApO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb250ZXh0IFJlbGV2YW5jZSBGaWx0ZXJpbmcgICAtLS0tXG5cbiAgcHJpdmF0ZSBpc1JlbGV2YW50Q29udGV4dENoYW5nZShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuXG4gICAgLy8gMS4gRGlyZWN0IHBhdGggbWF0Y2ggLSB3aWRnZXQncyBvd24gZmllbGRcbiAgICBpZiAobm9kZS5wYXRoID09PSBjaGFuZ2VkUGF0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMi4gUGFyZW50IHBhdGggbWF0Y2ggLSB3aWRnZXQgaXMgaW5zaWRlIHRoZSBjaGFuZ2VkIGNvbnRhaW5lclxuICAgIGlmIChub2RlLnBhdGggJiYgY2hhbmdlZFBhdGguc3RhcnRzV2l0aChub2RlLnBhdGggKyAnLicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAzLiBDaGlsZCBwYXRoIG1hdGNoIC0gY2hhbmdlZCBmaWVsZCBpcyBpbnNpZGUgdGhpcyB3aWRnZXQncyBjb250YWluZXJcbiAgICBpZiAobm9kZS5wYXRoICYmIG5vZGUucGF0aC5zdGFydHNXaXRoKGNoYW5nZWRQYXRoICsgJy4nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNC4gRXhwcmVzc2lvbiBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0IGhhcyBleHByZXNzaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGlzIHBhdGhcbiAgICBpZiAodGhpcy5oYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDUuIEZvcm11bGEgZGVwZW5kZW5jeSBjaGVjayAtIGlmIHdpZGdldCdzIGZvcm11bGEgZGVwZW5kcyBvbiB0aGlzIHBhdGhcbiAgICBpZiAobm9kZS5mb3JtdWxhICYmIHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKG5vZGUuZm9ybXVsYSwgY2hhbmdlZFBhdGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyA2LiBUcmlnZ2VyIGRlcGVuZGVuY3kgY2hlY2sgLSBpZiB3aWRnZXQgaGFzIHRyaWdnZXJzIHRoYXQgZGVwZW5kIG9uIHRoaXMgcGF0aFxuICAgIGlmICh0aGlzLmhhc1RyaWdnZXJEZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgYW55IGNhY2hlZCBleHByZXNzaW9ucyBkZXBlbmQgb24gdGhlIGNoYW5nZWQgcGF0aFxuICAgIGZvciAoY29uc3QgW3BhdGgsIGV2YWx1YXRvcl0gb2YgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycykge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV4cHJlc3Npb24gcGF0aCBpdHNlbGYgY29udGFpbnMgdGhlIGNoYW5nZWQgcGF0aFxuICAgICAgaWYgKHBhdGguaW5jbHVkZXMoY2hhbmdlZFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgYWN0dWFsIGV4cHJlc3Npb24gY29udGVudCB0byBjaGVjayBmb3IgY29udGV4dC5ldmFsKCkgY2FsbHNcbiAgICAgIC8vIFdlIG5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBleHByZXNzaW9uIHN0cmluZyB0byBhbmFseXplIGl0XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgICBjb25zdCBleHByZXNzaW9uVmFsdWUgPSB0aGlzLmdldEV4cHJlc3Npb25WYWx1ZUZyb21Ob2RlKG5vZGUsIHBhdGgpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvblZhbHVlICYmIHR5cGVvZiBleHByZXNzaW9uVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIExvb2sgZm9yIGNvbnRleHQuZXZhbCgpIGNhbGxzIHRoYXQgcmVmZXJlbmNlIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICAgICAgY29uc3QgY29udGV4dEV2YWxSZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKFsnXCJdKFteJ1xcXCJdKylbJ1wiXVxcKS9nO1xuICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSBjb250ZXh0RXZhbFJlZ2V4LmV4ZWMoZXhwcmVzc2lvblZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBldmFsUGF0aCA9IG1hdGNoWzFdO1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIElkLXN1ZmZpeGVkIHNlZ21lbnRzIHRvIGRvdC1pZCBmb3JtIChlLmcuLCAndHlwZUlkJyAtPiAndHlwZS5pZCcsICdwYXJ0eS50eXBlSWQnIC0+ICdwYXJ0eS50eXBlLmlkJylcbiAgICAgICAgICBjb25zdCBub3JtYWxpemVQYXRoID0gKHA6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgICBpZiAoIXApIHJldHVybiBwO1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAobGFzdCAmJiBsYXN0LmVuZHNXaXRoKCdJZCcpKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnNwbGljZShwYXJ0cy5sZW5ndGggLSAxLCAxLCBsYXN0LnNsaWNlKDAsIC0yKSwgJ2lkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFydHMuam9pbignLicpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpc1NlZ21lbnRTdWZmaXggPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcGEgPSBhLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBwYiA9IGIuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChwYi5sZW5ndGggPiBwYS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChwYVtwYS5sZW5ndGggLSBpXSAhPT0gcGJbcGIubGVuZ3RoIC0gaV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBldmFsTm9ybSA9IG5vcm1hbGl6ZVBhdGgoZXZhbFBhdGgpO1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWROb3JtID0gbm9ybWFsaXplUGF0aChjaGFuZ2VkUGF0aCk7XG5cbiAgICAgICAgICAvLyBEZWJ1ZyBsb2cgZm9yIGRlcGVuZGVuY3kgY2hlY2tcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGDwn6etIFske3RoaXMubm9kZSgpLnR5cGV9XSBkZXAtY2hlY2sgZXhwcj0nJHtwYXRofScsIGNoYW5nZWQ9JyR7Y2hhbmdlZFBhdGh9JywgZXZhbD0nJHtldmFsUGF0aH0nLCBldmFsTm9ybT0nJHtldmFsTm9ybX0nLCBjaGFuZ2VkTm9ybT0nJHtjaGFuZ2VkTm9ybX0nYCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gR2VuZXJpYyBkaXJlY3QgYW5kIGhpZXJhcmNoaWNhbCBkZXBlbmRlbmN5IGNoZWNrcyAocmF3IGFuZCBub3JtYWxpemVkKVxuICAgICAgICAgIGNvbnN0IHJhd01hdGNoID1cbiAgICAgICAgICAgIGV2YWxQYXRoID09PSBjaGFuZ2VkUGF0aCB8fFxuICAgICAgICAgICAgZXZhbFBhdGguc3RhcnRzV2l0aChjaGFuZ2VkUGF0aCArICcuJykgfHxcbiAgICAgICAgICAgIGNoYW5nZWRQYXRoLnN0YXJ0c1dpdGgoZXZhbFBhdGggKyAnLicpIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoZXZhbFBhdGgsIGNoYW5nZWRQYXRoKSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50U3VmZml4KGNoYW5nZWRQYXRoLCBldmFsUGF0aCk7XG5cbiAgICAgICAgICBjb25zdCBub3JtTWF0Y2ggPVxuICAgICAgICAgICAgZXZhbE5vcm0gPT09IGNoYW5nZWROb3JtIHx8XG4gICAgICAgICAgICBldmFsTm9ybS5zdGFydHNXaXRoKGNoYW5nZWROb3JtICsgJy4nKSB8fFxuICAgICAgICAgICAgY2hhbmdlZE5vcm0uc3RhcnRzV2l0aChldmFsTm9ybSArICcuJykgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudFN1ZmZpeChldmFsTm9ybSwgY2hhbmdlZE5vcm0pIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoY2hhbmdlZE5vcm0sIGV2YWxOb3JtKTtcblxuICAgICAgICAgIGlmIChyYXdNYXRjaCB8fCBub3JtTWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXhwcmVzc2lvbiAnJHtwYXRofScgZGVwZW5kcyBvbiAnJHtjaGFuZ2VkUGF0aH0nIHZpYSBjb250ZXh0LmV2YWwoJyR7ZXZhbFBhdGh9JykgKGdlbmVyaWMgbWF0Y2gpYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVjayBmb3IgcGF0aCBhbGlhc2VzL21hcHBpbmdzIChlLmcuLCB0eXBlSWQuaWQgPC0+IHR5cGUuaWQpXG4gICAgICAgICAgaWYgKHRoaXMuaXNQYXRoQWxpYXMoZXZhbFBhdGgsIGNoYW5nZWRQYXRoKSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgIGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBFeHByZXNzaW9uICcke3BhdGh9JyBkZXBlbmRzIG9uICcke2NoYW5nZWRQYXRofScgdmlhIGNvbnRleHQuZXZhbCgnJHtldmFsUGF0aH0nKSAocGF0aCBhbGlhcylgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0aEFsaWFzKGV2YWxQYXRoOiBzdHJpbmcsIGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBEeW5hbWljIHBhdGggYWxpYXMgZGV0ZWN0aW9uIGJhc2VkIG9uICdJZCcgc3VmZml4IHBhdHRlcm5cbiAgICAvLyBFeGFtcGxlczogdHlwZUlkLmlkIDwtPiB0eXBlLmlkLCBjYXRlZ29yeUlkLm5hbWUgPC0+IGNhdGVnb3J5Lm5hbWVcblxuICAgIC8vIENoZWNrIGlmIGV2YWxQYXRoIGVuZHMgd2l0aCAnSWQnIGFuZCBoYXMgYSBwcm9wZXJ0eVxuICAgIGlmIChldmFsUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiBldmFsUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGV2YWxQYXRoLnN1YnN0cmluZygwLCBldmFsUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGV2YWxQYXRoLnN1YnN0cmluZyhldmFsUGF0aC5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LiR7cHJvcGVydHl9YDtcblxuICAgICAgaWYgKGNoYW5nZWRQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNoYW5nZWRQYXRoIGVuZHMgd2l0aCAnSWQnIGFuZCBoYXMgYSBwcm9wZXJ0eVxuICAgIGlmIChjaGFuZ2VkUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiBjaGFuZ2VkUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGNoYW5nZWRQYXRoLnN1YnN0cmluZygwLCBjaGFuZ2VkUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGNoYW5nZWRQYXRoLnN1YnN0cmluZyhjaGFuZ2VkUGF0aC5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LiR7cHJvcGVydHl9YDtcblxuICAgICAgaWYgKGV2YWxQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBkaXJlY3QgJ0lkJyBzdWZmaXggbWFwcGluZyAoZS5nLiwgdHlwZUlkIDwtPiB0eXBlLmlkKVxuICAgIGlmIChldmFsUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiAhZXZhbFBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBldmFsUGF0aC5zdWJzdHJpbmcoMCwgZXZhbFBhdGgubGFzdEluZGV4T2YoJ0lkJykpO1xuICAgICAgY29uc3QgbWFwcGVkUGF0aCA9IGAke2Jhc2VQYXRofS5pZGA7XG5cbiAgICAgIGlmIChjaGFuZ2VkUGF0aCA9PT0gbWFwcGVkUGF0aCkge1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCBhbGlhcyBkZXRlY3RlZDogJyR7ZXZhbFBhdGh9JyA8LT4gJyR7Y2hhbmdlZFBhdGh9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFBhdGguZW5kc1dpdGgoJ0lkJykgJiYgIWNoYW5nZWRQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGNvbnN0IGJhc2VQYXRoID0gY2hhbmdlZFBhdGguc3Vic3RyaW5nKDAsIGNoYW5nZWRQYXRoLmxhc3RJbmRleE9mKCdJZCcpKTtcbiAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBgJHtiYXNlUGF0aH0uaWRgO1xuXG4gICAgICBpZiAoZXZhbFBhdGggPT09IG1hcHBlZFBhdGgpIHtcbiAgICAgICAgY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggYWxpYXMgZGV0ZWN0ZWQ6ICcke2V2YWxQYXRofScgPC0+ICcke2NoYW5nZWRQYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHByZXNzaW9uVmFsdWVGcm9tTm9kZShub2RlOiBBWFBXaWRnZXROb2RlLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgLy8gTmF2aWdhdGUgdGhyb3VnaCB0aGUgbm9kZSBzdHJ1Y3R1cmUgdG8gZmluZCB0aGUgZXhwcmVzc2lvbiB2YWx1ZVxuICAgICAgY29uc3QgcGF0aFBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgbGV0IGN1cnJlbnQ6IGFueSA9IG5vZGUub3B0aW9ucyB8fCB7fTtcblxuICAgICAgLy8gTmF2aWdhdGUgdGhyb3VnaCB0aGUgcGF0aCBwYXJ0c1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhdGhQYXJ0cykge1xuICAgICAgICBpZiAoY3VycmVudCAmJiB0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgcGFydCBpbiBjdXJyZW50KSB7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnc3RyaW5nJyA/IGN1cnJlbnQgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBleHRyYWN0aW5nIGV4cHJlc3Npb24gdmFsdWUgZnJvbSBub2RlOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzVHJpZ2dlckRlcGVuZGVuY3koY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICBjb25zdCB0cmlnZ2VycyA9IG5vZGUudHJpZ2dlcnMgfHwgbm9kZS5vcHRpb25zPy5bJ3RyaWdnZXJzJ10gfHwgdGhpcy5tZXJnZWRPcHRpb25zKCk/LnRyaWdnZXJzO1xuXG4gICAgaWYgKCF0cmlnZ2VycykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHRyaWdnZXIgZXZlbnQgZGVwZW5kcyBvbiB0aGUgY2hhbmdlZCBwYXRoXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICBpZiAodHJpZ2dlci5ldmVudCAmJiB0cmlnZ2VyLmV2ZW50LmluY2x1ZGVzKGNoYW5nZWRQYXRoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8gUmVtb3ZlZCB2aXNpYmlsaXR5IGRldGVjdGlvbiBtZXRob2RzIC0gbm90IG5lZWRlZCBmb3IgY3VycmVudCBpbXBsZW1lbnRhdGlvblxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIC8vIENsZWFyIGFueSBwZW5kaW5nIHJlbmRlciBvcGVyYXRpb24gdG8gcHJldmVudCBkb3VibGUgcmVuZGVyaW5nXG4gICAgaWYgKHRoaXMucmVuZGVyVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZW5kZXJUaW1lb3V0SWQpO1xuICAgICAgdGhpcy5yZW5kZXJUaW1lb3V0SWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGxvYWRpbmcgc3RhdGUgdG8gYWxsb3cgcmUtcmVuZGVyaW5nXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcblxuICAgIC8vIFNjaGVkdWxlIHRoZSBjb21wb25lbnQgbG9hZGluZ1xuICAgIHRoaXMucmVuZGVyVGltZW91dElkID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMucmVuZGVyVGltZW91dElkID0gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJlbmRlclRpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVuZGVyVGltZW91dElkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAvL1xuICAgICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBwcm9wZXJ0aWVzVG9Qcm9jZXNzID0gW1xuICAgICAgICAuLi4od2lkZ2V0Py5wcm9wZXJ0aWVzID8/IFtdKSxcbiAgICAgICAgLi4uKHdpZGdldD8uY29tcG9uZW50c1t0aGlzLm1vZGUoKV0/LnByb3BlcnRpZXMgPz8gW10pLFxuICAgICAgXT8uZmlsdGVyKChjKSA9PiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgIT0gbnVsbCk7XG5cbiAgICAgIC8vIFByb2Nlc3MgZGVmYXVsdCB2YWx1ZXMgKGV2YWx1YXRlIGV4cHJlc3Npb25zIGlmIG5lZWRlZClcbiAgICAgIGNvbnN0IHByb3BzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNUb1Byb2Nlc3MpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gcHJvcGVydHkuc2NoZW1hLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5pc0V4cHJlc3Npb24oZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgIC8vIEV2YWx1YXRlIGV4cHJlc3Npb24gZm9yIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZXZhbHVhdGVkVmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgcHJvcHNbcHJvcGVydHkubmFtZV0gPSBldmFsdWF0ZWRWYWx1ZTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgZXZhbHVhdGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gZm9yIHByb3BlcnR5ICR7cHJvcGVydHkubmFtZX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgcHJvcHNbcHJvcGVydHkubmFtZV0gPSBjbG9uZURlZXAoZGVmYXVsdFZhbHVlKTsgLy8gRmFsbGJhY2sgdG8gb3JpZ2luYWwgdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXNlIHN0YXRpYyBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgcHJvcHNbcHJvcGVydHkubmFtZV0gPSBjbG9uZURlZXAoZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9cbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy5zZXQobWVyZ2UocHJvcHMsIHdpZGdldD8ub3B0aW9ucywgdGhpcy5ub2RlKCkub3B0aW9ucykgfHwge30pO1xuXG4gICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLmNsZWFyKCk7XG4gICAgICAvLyBSZWdpc3RlciBleHByZXNzaW9ucyBmcm9tIHdpZGdldCBkZWZhdWx0cyBhbmQgbm9kZSBvcHRpb25zIHRvIGNvdmVyIHJlbGF0ZWQtZW50aXR5IGNhc2VzXG4gICAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhjbG9uZURlZXAod2lkZ2V0Py5vcHRpb25zKSk7XG4gICAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhjbG9uZURlZXAodGhpcy5ub2RlKCkub3B0aW9ucykpO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICAgIC8vXG4gICAgICB0aGlzLl9vcHRpb25zLnVwZGF0ZSgodmFsKSA9PiAoeyAuLi52YWwsIC4uLnRoaXMubWVyZ2VkT3B0aW9ucygpIH0pKTtcbiAgICAgIC8vIEV2YWx1YXRlIGRlZmF1bHQgdmFsdWVcbiAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWU7XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlICYmIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5pc0V4cHJlc3Npb24oZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICAgIG5vZGU6IHRoaXMubm9kZSgpLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb3B0aW9uczogdGhpcy5tZXJnZWRPcHRpb25zKCksXG4gICAgICAgIGNvbmZpZzogd2lkZ2V0LFxuICAgICAgfSBhcyBBWFBXaWRnZXROb2RlVG9rZW47XG4gICAgICBjb25zdCB0b2tlbiA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBsb2FkaW5nUmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCk7XG4gICAgICAvL1xuICAgICAgY29uc3QgY29tID0gYXdhaXQgd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8uY29tcG9uZW50KCk7XG4gICAgICBpZiAoIWNvbSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMubm9kZSgpLnR5cGV9IHdpZGdldCBjb21wb25lbnQgbm90IGZvdW5kIHdpdGggbW9kZTogJHt0aGlzLm1vZGUoKX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PGFueT4+KGNvbSwgeyBpbmplY3RvcjogdG9rZW4gfSk7XG4gICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFN0YXR1cyhBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nKTtcbiAgICAgIHRoaXMuaW5zdGFuY2UucGFyZW50ID0gdGhpcy5wYXJlbnROb2RlKCk7XG4gICAgICB0aGlzLmluc3RhbmNlLmluZGV4ID0gdGhpcy5pbmRleCgpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFN0YXR1cyhBWFBXaWRnZXRTdGF0dXMuUmVuZGVyZWQpO1xuICAgICAgdGhpcy5pbnN0YW5jZT8ub25PcHRpb25zQ2hhbmdlZD8ucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLmVtaXQoeyBzZW5kZXI6IHRoaXMsIHdpZGdldDogYy5zZW5kZXIgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5zdGFuY2U/Lm9uVmFsdWVDaGFuZ2VkPy5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLmVtaXQoeyBzZW5kZXI6IHRoaXMsIHdpZGdldDogYy5zZW5kZXIgYXMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfSk7XG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgICAgYXdhaXQgdGhpcy5hc3NpZ25UcmlnZ2VycygpO1xuICAgICAgLy9cbiAgICAgIGxvYWRpbmdSZWYuZGVzdHJveSgpO1xuXG4gICAgICAvLyBNYXJrIHRoYXQgaW5pdGlhbCByZW5kZXIgaXMgY29tcGxldGVcbiAgICAgIHRoaXMuaGFzSW5pdGlhbFJlbmRlciA9IHRydWU7XG5cbiAgICAgIC8vIFJlLWV2YWx1YXRlIGV4cHJlc3Npb25zIGFmdGVyIGluaXRpYWwgcmVuZGVyIHRvIGNhdGNoIGxhdGUtYXJyaXZpbmcgcmVsYXRlZCBjb250ZXh0XG4gICAgICBpZiAodGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplID4gMCkge1xuICAgICAgICBjb25zb2xlLmxvZyhg8J+UhCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUmUtZXZhbHVhdGluZyBleHByZXNzaW9ucyBhZnRlciBpbml0aWFsIHJlbmRlcmApO1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIGFueSBidWZmZXJlZCBwcmUtcmVuZGVyIGNvbnRleHQgY2hhbmdlcyBub3cgdGhhdCB0aGUgY29tcG9uZW50IGlzIHJlYWR5XG4gICAgICBpZiAodGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuc2l6ZSA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYPCfmoAgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFByb2Nlc3NpbmcgJHt0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5zaXplfSBidWZmZXJlZCBwcmUtcmVuZGVyIGNoYW5nZXNgLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5mb3JFYWNoKChwKSA9PiB0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5hZGQocCkpO1xuICAgICAgICB0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5jbGVhcigpO1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Nlc3NCYXRjaGVkVXBkYXRlcygpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNvbXBvbmVudDonLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG5cbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMubWVyZ2VkT3B0aW9ucygpO1xuXG4gICAgLy8gQ2hlY2sgaWYgb3B0aW9ucyBoYXZlIGFjdHVhbGx5IGNoYW5nZWRcbiAgICBpZiAodGhpcy5oYXNPcHRpb25zQ2hhbmdlZChjdXJyZW50T3B0aW9ucykpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdhcHBseU9wdGlvbnMnLCB0aGlzLm5vZGUoKS5wYXRoLCAnLSBvcHRpb25zIGNoYW5nZWQnKTtcbiAgICAgIHRoaXMuX29wdGlvbnMudXBkYXRlKCh2YWwpID0+ICh7IC4uLnZhbCwgLi4uY3VycmVudE9wdGlvbnMgfSkpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRPcHRpb25zKGN1cnJlbnRPcHRpb25zKTtcbiAgICAgIHRoaXMubGFzdEFwcGxpZWRPcHRpb25zID0gY2xvbmVEZWVwKGN1cnJlbnRPcHRpb25zKTsgLy8gRGVlcCBjbG9uZSB1c2luZyBMb2Rhc2hcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ2FwcGx5T3B0aW9ucycsIHRoaXMubm9kZSgpLnBhdGgsICctIG5vIGNoYW5nZXMsIHNraXBwaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNPcHRpb25zQ2hhbmdlZChuZXdPcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMubGFzdEFwcGxpZWRPcHRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gRmlyc3QgdGltZSwgYWx3YXlzIGFwcGx5XG4gICAgfVxuXG4gICAgLy8gRGVlcCBjb21wYXJpc29uIG9mIG9wdGlvbnMgdXNpbmcgTG9kYXNoIGlzRXF1YWxcbiAgICByZXR1cm4gIWlzRXF1YWwobmV3T3B0aW9ucywgdGhpcy5sYXN0QXBwbGllZE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gUmVtb3ZlZCBkZWVwQ2xvbmVWYWx1ZSBtZXRob2QgLSBub3cgdXNpbmcgTG9kYXNoIGNsb25lRGVlcFxuXG4gIHByaXZhdGUgY2hlY2tGb3JtdWxhRm9yVXBkYXRlKGZvcm11bGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aD86IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybXVsYSkge1xuICAgICAgY29uc3QgcmVnZXggPSAvY29udGV4dFxcLmV2YWxcXCgnKFteJ10rKSdcXCkvZztcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtdWxhLm1hdGNoKHJlZ2V4KTtcbiAgICAgIGNvbnN0IG5vZGVzID0gbWF0Y2hlcyA/IG1hdGNoZXMubWFwKChtYXRjaDogYW55KSA9PiBtYXRjaC5tYXRjaCgvJyhbXiddKyknLylbMV0pIDogW107XG4gICAgICByZXR1cm4gbm9kZXMuaW5jbHVkZXMocGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgLy8gQ1JJVElDQUwgRklYOiBTa2lwIHRyaWdnZXIgYWN0aW9ucyBkdXJpbmcgb3B0aW9ucyBwcm9jZXNzaW5nXG4gICAgICAvL1xuICAgICAgLy8gUFJPQkxFTTogVHJpZ2dlciBhY3Rpb25zIHdlcmUgYmVpbmcgZXZhbHVhdGVkIGltbWVkaWF0ZWx5IGR1cmluZyB3aWRnZXQgc2V0dXAvb3B0aW9ucyBwcm9jZXNzaW5nLFxuICAgICAgLy8gY2F1c2luZyB0aGVtIHRvIGV4ZWN1dGUgYmVmb3JlIHRoZSBhY3R1YWwgdHJpZ2dlciBldmVudCBvY2N1cnJlZC4gVGhpcyBtZWFudCB0cmlnZ2VycyB3b3VsZCBmaXJlXG4gICAgICAvLyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gaW5zdGVhZCBvZiB3aGVuIHRoZSBzcGVjaWZpZWQgY29udGV4dCBwYXRoIGFjdHVhbGx5IGNoYW5nZWQuXG4gICAgICAvL1xuICAgICAgLy8gUk9PVCBDQVVTRTogVGhlIGV4cHJlc3Npb24gZXZhbHVhdG9yIHdhcyBwcm9jZXNzaW5nIHRyaWdnZXIgYWN0aW9uIGV4cHJlc3Npb25zIChsaWtlIGNvbnNvbGUubG9nXG4gICAgICAvLyBvciB3aWRnZXQuc2V0VmFsdWUgY2FsbHMpIGFzIHBhcnQgb2YgdGhlIG5vcm1hbCBvcHRpb25zIHByZXByb2Nlc3NpbmcsIHRyZWF0aW5nIHRoZW0gYXMgZHluYW1pY1xuICAgICAgLy8gZXhwcmVzc2lvbnMgdGhhdCBuZWVkZWQgaW1tZWRpYXRlIGV2YWx1YXRpb24uXG4gICAgICAvL1xuICAgICAgLy8gU09MVVRJT046IERldGVjdCB3aGVuIHdlJ3JlIHByb2Nlc3NpbmcgdHJpZ2dlciBhY3Rpb25zIGFuZCBzdG9yZSB0aGVtIGFzIHN0YXRpYyB2YWx1ZXMgd2l0aG91dFxuICAgICAgLy8gZXhwcmVzc2lvbiBldmFsdWF0aW9uLiBUaGlzIGVuc3VyZXMgdHJpZ2dlciBhY3Rpb25zIGFyZSBvbmx5IGV2YWx1YXRlZCB3aGVuIHRoZSB0cmlnZ2VyJ3NcbiAgICAgIC8vIHN1YnNjcmlwdGlvbiBjYWxsYmFjayBhY3R1YWxseSBmaXJlcyAod2hlbiB0aGUgZXZlbnQgY29uZGl0aW9uIGlzIG1ldCkuXG4gICAgICAvL1xuICAgICAgLy8gUkVTVUxUOiBUcmlnZ2VycyBub3cgb25seSBleGVjdXRlIHdoZW4gdGhlaXIgZXZlbnQgZmlsdGVycyBwYXNzIChlLmcuLCB3aGVuIHRoZSBzcGVjaWZpZWRcbiAgICAgIC8vIGNvbnRleHQgcGF0aCBjaGFuZ2VzKSwgbm90IGR1cmluZyB3aWRnZXQgaW5pdGlhbGl6YXRpb24uXG4gICAgICBpZiAoY3VycmVudFBhdGguaW5jbHVkZXMoJ3RyaWdnZXJzJykgJiYgKGtleSA9PT0gJ2FjdGlvbicgfHwgY3VycmVudFBhdGguZW5kc1dpdGgoJy5hY3Rpb24nKSkpIHtcbiAgICAgICAgLy8gQXBwbHkgc3RhdGljIHZhbHVlcyBkaXJlY3RseSB3aXRob3V0IGV4cHJlc3Npb24gZXZhbHVhdGlvblxuICAgICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZXQoY3VycmVudE9wdGlvbnMsIGN1cnJlbnRQYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5pc0V4cHJlc3Npb24odmFsdWUpKSB7XG4gICAgICAgIC8vIENhY2hlIGR5bmFtaWMgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNldChjdXJyZW50UGF0aCwgKCkgPT4gdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBvYmplY3RzXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKHZhbHVlLCBjdXJyZW50UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5XG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSB7XG4gICAgLy8gRWFybHkgcmV0dXJuIGlmIG5vIGV4cHJlc3Npb25zIHRvIGV2YWx1YXRlXG4gICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV2YWx1YXRpbmcgJHt0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemV9IGV4cHJlc3Npb25zYCk7XG5cbiAgICBjb25zdCB1cGRhdGVQcm9taXNlcyA9IEFycmF5LmZyb20odGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycykubWFwKGFzeW5jIChbcGF0aCwgZXZhbHVhdG9yXSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gdGhpcy5nZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KHBhdGgpO1xuICAgICAgaWYgKGNhY2hlZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5K+IFske3RoaXMubm9kZSgpLnR5cGV9XSBVc2luZyBjYWNoZWQgZXhwcmVzc2lvbiByZXN1bHQgZm9yICcke3BhdGh9J2ApO1xuICAgICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZTogY2FjaGVkVmFsdWUsIGZyb21DYWNoZTogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICAvLyBFdmFsdWF0ZSBleHByZXNzaW9uIGlmIG5vdCBjYWNoZWRcbiAgICAgIGNvbnN0IGV2YWxTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gYXdhaXQgZXZhbHVhdG9yKCk7XG4gICAgICBjb25zdCBldmFsVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gZXZhbFN0YXJ0VGltZTtcblxuICAgICAgLy8gQ2hlY2sgaWYgcmVzdWx0IGhhcyBhY3R1YWxseSBjaGFuZ2VkIHVzaW5nIExvZGFzaCBpc0VxdWFsXG4gICAgICBjb25zdCBsYXN0VmFsdWUgPSB0aGlzLmxhc3RFeHByZXNzaW9uUmVzdWx0cy5nZXQocGF0aCk7XG4gICAgICBjb25zdCBoYXNDaGFuZ2VkID0gIWlzRXF1YWwobmV3VmFsdWUsIGxhc3RWYWx1ZSk7XG5cbiAgICAgIGlmIChoYXNDaGFuZ2VkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGDwn5OdIFske3RoaXMubm9kZSgpLnR5cGV9XSBFeHByZXNzaW9uICcke3BhdGh9JyBldmFsdWF0ZWQgaW4gJHtldmFsVGltZS50b0ZpeGVkKDIpfW1zIC0gdmFsdWUgY2hhbmdlZGAsXG4gICAgICAgICk7XG4gICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQgYW5kIHRyYWNrIGl0XG4gICAgICAgIHRoaXMuc2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChwYXRoLCBuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMubGFzdEV4cHJlc3Npb25SZXN1bHRzLnNldChwYXRoLCBjbG9uZURlZXAobmV3VmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHsgcGF0aCwgbmV3VmFsdWUsIGZyb21DYWNoZTogZmFsc2UsIGhhc0NoYW5nZWQ6IHRydWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGDwn5OdIFske3RoaXMubm9kZSgpLnR5cGV9XSBFeHByZXNzaW9uICcke3BhdGh9JyBldmFsdWF0ZWQgaW4gJHtldmFsVGltZS50b0ZpeGVkKDIpfW1zIC0gdmFsdWUgdW5jaGFuZ2VkLCBza2lwcGluZyB1cGRhdGVgLFxuICAgICAgICApO1xuICAgICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0IGJ1dCBkb24ndCB1cGRhdGVcbiAgICAgICAgdGhpcy5zZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KHBhdGgsIG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0RXhwcmVzc2lvblJlc3VsdHMuc2V0KHBhdGgsIGNsb25lRGVlcChuZXdWYWx1ZSkpO1xuICAgICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZSwgZnJvbUNhY2hlOiBmYWxzZSwgaGFzQ2hhbmdlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFdhaXQgZm9yIGFsbCBldmFsdWF0b3JzIHRvIGNvbXBsZXRlXG4gICAgY29uc3QgdXBkYXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHVwZGF0ZVByb21pc2VzKTtcblxuICAgIC8vIEZpbHRlciB1cGRhdGVzIHRvIG9ubHkgaW5jbHVkZSB0aG9zZSB0aGF0IGhhdmUgYWN0dWFsbHkgY2hhbmdlZFxuICAgIGNvbnN0IGNoYW5nZWRVcGRhdGVzID0gdXBkYXRlcy5maWx0ZXIoKHVwZGF0ZSkgPT4gdXBkYXRlLmhhc0NoYW5nZWQgIT09IGZhbHNlKTtcblxuICAgIC8vIEFwcGx5IHVwZGF0ZXMgdG8gbWVyZ2VkT3B0aW9ucyBvbmx5IGZvciBjaGFuZ2VkIHZhbHVlc1xuICAgIGlmIChjaGFuZ2VkVXBkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0geyAuLi5vIH07XG4gICAgICAgIGNoYW5nZWRVcGRhdGVzLmZvckVhY2goKHsgcGF0aCwgbmV3VmFsdWUgfSkgPT4ge1xuICAgICAgICAgIHNldCh1cGRhdGVkT3B0aW9ucywgcGF0aCwgbmV3VmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRPcHRpb25zO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVIaXRzID0gdXBkYXRlcy5maWx0ZXIoKHVwZGF0ZSkgPT4gdXBkYXRlLmZyb21DYWNoZSkubGVuZ3RoO1xuICAgIGNvbnN0IHNraXBwZWRVcGRhdGVzID0gdXBkYXRlcy5sZW5ndGggLSBjaGFuZ2VkVXBkYXRlcy5sZW5ndGg7XG5cbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGDwn5OLIFske3RoaXMubm9kZSgpLnR5cGV9XSBBcHBsaWVkICR7Y2hhbmdlZFVwZGF0ZXMubGVuZ3RofSBleHByZXNzaW9uIHVwZGF0ZXMgKCR7Y2FjaGVIaXRzfSBjYWNoZSBoaXRzLCAke3NraXBwZWRVcGRhdGVzfSBza2lwcGVkKWAsXG4gICAgKTtcbiAgICByZXR1cm4gY2hhbmdlZFVwZGF0ZXMubGVuZ3RoO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpIHtcbiAgICBpZiAodGhpcy5ub2RlKCkuZm9ybXVsYSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih0aGlzLm5vZGUoKS5mb3JtdWxhISk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5idWlsZEV4cHJlc3Npb25TY29wZSgpO1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZSh0ZW1wbGF0ZUV4cHJlc3Npb24sIHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRXhwcmVzc2lvblNjb3BlKCk6IEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dFNjb3BlKCksXG4gICAgICBldmVudHM6IHRoaXMuZ2V0RXZlbnRTY29wZSgpLFxuICAgICAgd2lkZ2V0OiB0aGlzLmdldFdpZGdldFNjb3BlKCksXG4gICAgICBtZXRob2RzOiB0aGlzLmdldEZ1bmN0aW9uU2NvcGUoKSxcbiAgICAgIHZhcnM6IHRoaXMuZ2V0VmFyaWFibGVzU2NvcGUoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0U2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGV2YWw6IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy9UT0RPOiBIYW5kbGUgYXJyYXkgaW5kZXhcbiAgICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnN0YXJ0c1dpdGgoJz4nKSA/IGAke3RoaXMuaW5zdGFuY2U/LnBhcmVudFBhdGgoKX0uJHtwYXRoLnN1YnN0cmluZygxKX1gIDogcGF0aDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmdldFZhbHVlKGZ1bGxQYXRoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldDogKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZShwYXRoLCB2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgZGF0YTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5kYXRhKCk7XG4gICAgICB9LFxuICAgICAgaXNEaXJ0eTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0U2VydmljZS5pc0RpcnR5KCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50U2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRleHQ6IChwYXRoPzogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uQ29udGV4dENoYW5nZWQucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGMpID0+IHtcbiAgICAgICAgICAgIC8vIElmIG5vIHBhdGggZmlsdGVyIHNwZWNpZmllZCwgcGFzcyBhbGwgZXZlbnRzXG4gICAgICAgICAgICBpZiAocGF0aCA9PSBudWxsIHx8IHBhdGggPT09ICcnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRW5zdXJlIGMucGF0aCBleGlzdHNcbiAgICAgICAgICAgIGlmICghYy5wYXRoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFBhdHRlcm46IFwicHJlZml4KlwiIC0gbWF0Y2hlcyBwYXRocyB0aGF0IHN0YXJ0IHdpdGggcHJlZml4XG4gICAgICAgICAgICBpZiAocGF0aC5lbmRzV2l0aCgnKicpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgIHJldHVybiBjLnBhdGguc3RhcnRzV2l0aChwcmVmaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGF0dGVybjogXCIqc3VmZml4XCIgLSBtYXRjaGVzIHBhdGhzIHRoYXQgZW5kIHdpdGggc3VmZml4XG4gICAgICAgICAgICBlbHNlIGlmIChwYXRoLnN0YXJ0c1dpdGgoJyonKSkge1xuICAgICAgICAgICAgICBjb25zdCBzdWZmaXggPSBwYXRoLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGMucGF0aC5lbmRzV2l0aChzdWZmaXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRXhhY3QgbWF0Y2hcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gYy5wYXRoID09PSBwYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGZyb206IChldmVudDogc3RyaW5nKSA9PiBnZXQodGhpcy5pbnN0YW5jZS5hcGkoKSwgZXZlbnQpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFdpZGdldFNjb3BlKCk6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBjYWxsOiAobmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmNhbGwobmFtZSwgLi4uYXJncyk7XG4gICAgICB9LFxuICAgICAgc2V0VmFsdWU6ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSxcbiAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIH0sXG4gICAgICByZWZyZXNoOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2ggPSAodGhpcy5pbnN0YW5jZSBhcyBhbnkpPy5bJ3JlZnJlc2gnXTtcbiAgICAgICAgaWYgKHJlZnJlc2ggJiYgdHlwZW9mIHJlZnJlc2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZWZyZXNoLmJpbmQodGhpcy5pbnN0YW5jZSkoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG91dHB1dDogKG5hbWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLm91dHB1dChuYW1lKTtcbiAgICAgIH0sXG4gICAgICBmaW5kOiAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRXaWRnZXQoaWQpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGdW5jdGlvblNjb3BlKCk6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0ge1xuICAgIGNvbnN0IHNjb3BlOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9ID0ge1xuICAgICAgc3VtOiAodmFsdWVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHN1bSh2YWx1ZXMpO1xuICAgICAgfSxcbiAgICAgIHRyYW5zbGF0ZTogKHRleHQ6IHN0cmluZywgb3B0aW9ucz86IEFYVHJhbnNsYXRlT3B0aW9ucykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKHRleHQsIG9wdGlvbnMpO1xuICAgICAgfSxcbiAgICAgIHdpZGdldEluZm86IChuYW1lOiBzdHJpbmcpOiBBWFBXaWRnZXRDb25maWcgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRTZXJ2aWNlLnJlc29sdmUobmFtZSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBBZGQgY3VzdG9tIGZ1bmN0aW9ucyBmcm9tIGJ1aWxkZXIgc2VydmljZVxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYnVpbGRlclNlcnZpY2UuZnVuY3Rpb25zKS5mb3JFYWNoKChba2V5LCBmbl0pID0+IHtcbiAgICAgIHNjb3BlW2tleV0gPSAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFyaWFibGVzU2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGV2YWw6IChwYXRoOiBzdHJpbmcpID0+IGdldCh0aGlzLmJ1aWxkZXJTZXJ2aWNlLnZhcmlhYmxlcywgcGF0aCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNzaWduVHJpZ2dlcnMoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIC8vIENoZWNrIG11bHRpcGxlIHBvc3NpYmxlIGxvY2F0aW9ucyBmb3IgdHJpZ2dlcnNcbiAgICBjb25zdCB0cmlnZ2VycyA9IG5vZGUudHJpZ2dlcnMgfHwgbm9kZS5vcHRpb25zPy5bJ3RyaWdnZXJzJ10gfHwgdGhpcy5tZXJnZWRPcHRpb25zKCk/LnRyaWdnZXJzO1xuXG4gICAgaWYgKCF0cmlnZ2Vycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0cmlnZ2Vycykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXZlbnQgPSBhd2FpdCB0aGlzLmV2YWx1YXRlVHJpZ2dlcih0cmlnZ2VyLmV2ZW50KTtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgZXZlbnQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhlYyA9IGFzeW5jIChhY3Rpb246IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoYWN0aW9uKSAmJiBpc1N0cmluZyhhY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5ldmFsdWF0ZUFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IEFycmF5LmlzQXJyYXkodHJpZ2dlci5hY3Rpb24pID8gdHJpZ2dlci5hY3Rpb24gOiBbdHJpZ2dlci5hY3Rpb25dO1xuICAgICAgICAgICAgYWN0aW9ucy5mb3JFYWNoKGFzeW5jIChhOiBzdHJpbmcpID0+IGF3YWl0IGV4ZWMoYSkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhc3NpZ25pbmcgdHJpZ2dlcjonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZVRyaWdnZXIodGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPE9ic2VydmFibGU8YW55PiB8IG51bGw+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmJ1aWxkRXhwcmVzc2lvblNjb3BlKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuZXZhbHVhdGUodGVtcGxhdGVFeHByZXNzaW9uLCBzY29wZSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHJlc3VsdCBpcyBhbiBPYnNlcnZhYmxlXG4gICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyB0cmlnZ2VyIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUFjdGlvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuYnVpbGRFeHByZXNzaW9uU2NvcGUoKTtcbiAgICAgIGF3YWl0IHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZSh0ZW1wbGF0ZUV4cHJlc3Npb24sIHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBhY3Rpb24gZXhwcmVzc2lvbjonLCB0ZW1wbGF0ZUV4cHJlc3Npb24sIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { AXPWidgetColumnRendererComponent } from './widget-column-renderer';\nimport { AXPWidgetContainerComponent } from './widget-container.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetRendererDirective } from './widget-renderer.directive';\nimport * as i0 from \"@angular/core\";\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\nexport class AXPLayoutBuilderModule {\n static forRoot(config) {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, deps: [{ token: 'AXPLayoutBuilderModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: AXPLayoutBuilderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPLayoutBuilderModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQXVCLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBUXpFLE1BQU0sVUFBVSxHQUFHLENBQUMsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztBQU8vRyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBc0M7UUFDbkQsT0FBTztZQUNMLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSwrQkFBK0I7b0JBQ3hDLFVBQVUsRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBRTVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3ZHLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFzQztRQUNwRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLCtCQUErQjtvQkFDeEMsVUFBVSxFQUFFLENBQUMsUUFBa0MsRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQzdELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQzt3QkFFNUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDdkcsQ0FBQztvQkFDSixDQUFDO29CQUNELElBQUksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUNoQyxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQWlFLFNBQWdCO1FBQy9FLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FoRFUsc0JBQXNCLGtCQTRDRCwrQkFBK0I7K0dBNUNwRCxzQkFBc0IsaUJBUGYsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCLGFBR2pHLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixhQUh2RSwyQkFBMkIsRUFBRSxnQ0FBZ0MsRUFBRSwwQkFBMEI7K0dBT2hHLHNCQUFzQixZQUp2QixZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUI7OzJGQUk5RSxzQkFBc0I7a0JBTGxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLENBQUM7b0JBQzFGLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO29CQUN4QixZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDOUI7OzBCQTZDYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1jb2x1bW4tcmVuZGVyZXInO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZSB9IGZyb20gJy4vd2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIGV4dGVuZGVkV2lkZ2V0IH0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dEJ1aWxkZXJNb2R1bGVDb25maWdzIHtcbiAgd2lkZ2V0cz86IEFYUFdpZGdldENvbmZpZ1tdO1xuICBleHRlbmRlZFdpZGdldHM/OiBleHRlbmRlZFdpZGdldFtdO1xufVxuXG5jb25zdCBDT01QT05FTlRTID0gW0FYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCwgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQsIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9ydGFsTW9kdWxlLCBBWFNrZWxldG9uTW9kdWxlLCBDb21tb25Nb2R1bGUsIEFYVHJhbnNsYXRpb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UU10sXG4gIGRlY2xhcmF0aW9uczogWy4uLkNPTVBPTkVOVFNdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnPzogQVhQTGF5b3V0QnVpbGRlck1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUExheW91dEJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBMYXlvdXRCdWlsZGVyTW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbmZpZz8ud2lkZ2V0cz8ubWFwKCh3KSA9PiBQcm9taXNlLnJlc29sdmUocmVnaXN0cnkucmVnaXN0ZXIodykpKSB8fCBbXSk7XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBjb25maWc/LmV4dGVuZGVkV2lkZ2V0cz8ubWFwKChldykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LmV4dGVuZChldy5wYXJlbnROYW1lLCBldy53aWRnZXQpKSkgfHwgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUFdpZGdldFJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZm9yQ2hpbGQoY29uZmlnPzogQVhQTGF5b3V0QnVpbGRlck1vZHVsZUNvbmZpZ3MpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFYUExheW91dEJ1aWxkZXJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6ICdBWFBMYXlvdXRCdWlsZGVyTW9kdWxlRmFjdG9yeScsXG4gICAgICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdHJ5OiBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpID0+IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNvbmZpZz8ud2lkZ2V0cz8ubWFwKCh3KSA9PiBQcm9taXNlLnJlc29sdmUocmVnaXN0cnkucmVnaXN0ZXIodykpKSB8fCBbXSk7XG5cbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBjb25maWc/LmV4dGVuZGVkV2lkZ2V0cz8ubWFwKChldykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LmV4dGVuZChldy5wYXJlbnROYW1lLCBldy53aWRnZXQpKSkgfHwgW10sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVwczogW0FYUFdpZGdldFJlZ2lzdHJ5U2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdCgnQVhQTGF5b3V0QnVpbGRlck1vZHVsZUZhY3RvcnknKSBpbnN0YW5jZXM6IGFueVtdKSB7XG4gICAgaW5zdGFuY2VzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBmKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","export class AXPPropertyEditorHelper {\n static expandShorthand(values) {\n switch (values.length) {\n case 1:\n return [values[0], values[0], values[0], values[0]];\n case 2:\n return [values[0], values[1], values[0], values[1]];\n case 3:\n return [values[0], values[1], values[2], values[1]];\n case 4:\n return values;\n default:\n throw new Error(`Invalid shorthand value count. Input: ${values}`);\n }\n }\n static condenseShorthand(values) {\n if (values.length !== 4) {\n throw new Error('Expected 4 values for condensation.');\n }\n if (values[0] === values[1] && values[1] === values[2] && values[2] === values[3]) {\n return `${values[0]}`;\n }\n else if (values[0] === values[2] && values[1] === values[3]) {\n return `${values[0]} ${values[1]}`;\n }\n else if (values[1] === values[3]) {\n return `${values[0]} ${values[1]} ${values[2]}`;\n }\n else {\n return `${values[0]} ${values[1]} ${values[2]} ${values[3]}`;\n }\n }\n static parseSides(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return { top: values[0], right: values[1], bottom: values[2], left: values[3] };\n }\n static parseSidesWithUnits(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return {\n top: AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n right: AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n bottom: AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n left: AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseCorners(input) {\n const values = this.expandShorthand(input.split(' ').map((value) => value.trim()));\n return {\n 'top-left': AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n 'top-right': AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n 'bottom-left': AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n 'bottom-right': AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseSpacingBox(input) {\n return {\n margin: this.parseSidesWithUnits(input.margin),\n padding: this.parseSidesWithUnits(input.padding),\n };\n }\n static parseBorderBox(input) {\n return {\n width: this.parseSidesWithUnits(input.width),\n radius: this.parseCorners(input.radius),\n color: this.parseSides(input.color),\n style: this.parseSides(input.style),\n };\n }\n static parseSpacingBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n margin: AXPPropertyEditorHelper.condenseShorthand([\n format(input.margin.top, units.margin.top),\n format(input.margin.right, units.margin.right),\n format(input.margin.bottom, units.margin.bottom),\n format(input.margin.left, units.margin.left),\n ]),\n padding: AXPPropertyEditorHelper.condenseShorthand([\n format(input.padding.top, units.padding.top),\n format(input.padding.right, units.padding.right),\n format(input.padding.bottom, units.padding.bottom),\n format(input.padding.left, units.padding.left),\n ]),\n };\n }\n static parseBorderBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n width: AXPPropertyEditorHelper.condenseShorthand([\n format(input.width.top, units.width.top),\n format(input.width.right, units.width.right),\n format(input.width.bottom, units.width.bottom),\n format(input.width.left, units.width.left),\n ]),\n radius: AXPPropertyEditorHelper.condenseShorthand([\n format(input.radius['top-left'], units.radius['top-left']),\n format(input.radius['top-right'], units.radius['top-right']),\n format(input.radius['bottom-right'], units.radius['bottom-right']),\n format(input.radius['bottom-left'], units.radius['bottom-left']),\n ]),\n color: AXPPropertyEditorHelper.condenseShorthand([\n `${input.color.top}${units.color.top}`,\n `${input.color.right}${units.color.right}`,\n `${input.color.bottom}${units.color.bottom}`,\n `${input.color.left}${units.color.left}`,\n ]),\n style: AXPPropertyEditorHelper.condenseShorthand([\n `${input.style.top}${units.style.top}`,\n `${input.style.right}${units.style.right}`,\n `${input.style.bottom}${units.style.bottom}`,\n `${input.style.left}${units.style.left}`,\n ]),\n };\n }\n static getValueWithUnit(input) {\n if (typeof input === 'number')\n return { value: input, unit: 'px' };\n if (input === 'auto')\n return { value: 0, unit: 'px' };\n const match = input.match(/^([0-9.]+)([a-z%]*)$/i);\n if (!match)\n throw new Error(`Invalid unit format: ${input}`);\n return { value: parseFloat(match[1]), unit: match[2] || '' };\n }\n static getValueFromUnit(value, unit) {\n return unit ? `${value}${unit}` : `${value}`;\n }\n static parseGap(gap) {\n const parts = gap.split(/\\s+/);\n const match = parts[0].match(/^(\\d+\\.?\\d*)([a-z%]+)$/);\n if (!match) {\n throw new Error('Invalid gap format');\n }\n const [, xValue, unit] = match;\n let yValue = parseFloat(xValue);\n if (parts.length === 2) {\n const secondMatch = parts[1].match(/^(\\d+\\.?\\d*)[a-z%]+$/);\n if (!secondMatch) {\n throw new Error('Invalid gap format');\n }\n yValue = parseFloat(secondMatch[1]);\n }\n return {\n values: {\n x: parseFloat(xValue),\n y: yValue,\n },\n unit,\n };\n }\n static parseGridTemplate(gridTemplate) {\n const match = gridTemplate.match(/^repeat\\((\\d+),\\s*(?:1fr|auto|minmax\\([^)]*\\))\\)$/);\n if (!match) {\n throw new Error(\"Invalid grid template format. Expected 'repeat(N, 1fr|auto|minmax(...))'.\");\n }\n return parseInt(match[1], 10);\n }\n static createGridTemplate(repetitionCount) {\n if (repetitionCount <= 0) {\n throw new Error('Repetition count must be a positive integer.');\n }\n return `repeat(${repetitionCount}, 1fr)`;\n }\n}\nexport function findNonEmptyBreakpoints(values) {\n const breakpoints = ['default', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];\n const nonEmptyBreakpoints = [];\n for (const breakpoint of breakpoints) {\n if (values[breakpoint] !== undefined) {\n nonEmptyBreakpoints.push(breakpoint);\n }\n }\n return nonEmptyBreakpoints;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL2hlbHBlci9wcm9wZXJ0eS1lZGl0b3IuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sT0FBTyx1QkFBdUI7SUFDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBbUIsTUFBVztRQUMxRCxRQUFRLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBSSxNQUFXO1FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FB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QztJQUNILENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBCb3JkZXJCb3gsXG4gIEFYUEJvcmRlckJveFN0cmluZyxcbiAgQVhQQnJlYWtwb2ludHMsXG4gIEFYUEJyZWFrcG9pbnRWYWx1ZXMsXG4gIEFYUFByb3BlcnR5Q29ybmVycyxcbiAgQVhQUHJvcGVydHlTaWRlcyxcbiAgQVhQU3BhY2luZ0JveCxcbiAgQVhQU3BhY2luZ0JveFN0cmluZyxcbn0gZnJvbSAnLi9wcm9wZXJ0eS1lZGl0b3IudHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlciB7XG4gIHByaXZhdGUgc3RhdGljIGV4cGFuZFNob3J0aGFuZDxUIGV4dGVuZHMgc3RyaW5nPih2YWx1ZXM6IFRbXSk6IFRbXSB7XG4gICAgc3dpdGNoICh2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBbdmFsdWVzWzBdLCB2YWx1ZXNbMF0sIHZhbHVlc1swXSwgdmFsdWVzWzBdXTtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIFt2YWx1ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzBdLCB2YWx1ZXNbMV1dO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMl0sIHZhbHVlc1sxXV07XG4gICAgICBjYXNlIDQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2hvcnRoYW5kIHZhbHVlIGNvdW50LiBJbnB1dDogJHt2YWx1ZXN9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29uZGVuc2VTaG9ydGhhbmQ8VD4odmFsdWVzOiBUW10pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoICE9PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIDQgdmFsdWVzIGZvciBjb25kZW5zYXRpb24uJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlc1swXSA9PT0gdmFsdWVzWzFdICYmIHZhbHVlc1sxXSA9PT0gdmFsdWVzWzJdICYmIHZhbHVlc1syXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfWA7XG4gICAgfSBlbHNlIGlmICh2YWx1ZXNbMF0gPT09IHZhbHVlc1syXSAmJiB2YWx1ZXNbMV0gPT09IHZhbHVlc1szXSkge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlc1swXX0gJHt2YWx1ZXNbMV19YDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlc1sxXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX0gJHt2YWx1ZXNbMl19YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlc1swXX0gJHt2YWx1ZXNbMV19ICR7dmFsdWVzWzJdfSAke3ZhbHVlc1szXX1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlU2lkZXMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5U2lkZXMge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZXhwYW5kU2hvcnRoYW5kKGlucHV0Lm1hdGNoKC8oPzpyZ2JcXChbXildK1xcKXxbXiBdKykvZyk/Lm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkgfHwgW10pO1xuICAgIHJldHVybiB7IHRvcDogdmFsdWVzWzBdLCByaWdodDogdmFsdWVzWzFdLCBib3R0b206IHZhbHVlc1syXSwgbGVmdDogdmFsdWVzWzNdIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0OiBzdHJpbmcpOiBBWFBQcm9wZXJ0eVNpZGVzPG51bWJlcj4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZXhwYW5kU2hvcnRoYW5kKGlucHV0Lm1hdGNoKC8oPzpyZ2JcXChbXildK1xcKXxbXiBdKykvZyk/Lm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkgfHwgW10pO1xuICAgIHJldHVybiB7XG4gICAgICB0b3A6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzBdKS52YWx1ZSxcbiAgICAgIHJpZ2h0OiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1sxXSkudmFsdWUsXG4gICAgICBib3R0b206IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzJdKS52YWx1ZSxcbiAgICAgIGxlZnQ6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzNdKS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VDb3JuZXJzKGlucHV0OiBzdHJpbmcpOiBBWFBQcm9wZXJ0eUNvcm5lcnM8bnVtYmVyPiB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQuc3BsaXQoJyAnKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS50cmltKCkpKTtcbiAgICByZXR1cm4ge1xuICAgICAgJ3RvcC1sZWZ0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMF0pLnZhbHVlLFxuICAgICAgJ3RvcC1yaWdodCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzFdKS52YWx1ZSxcbiAgICAgICdib3R0b20tbGVmdCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzJdKS52YWx1ZSxcbiAgICAgICdib3R0b20tcmlnaHQnOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1szXSkudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTcGFjaW5nQm94KGlucHV0OiBBWFBTcGFjaW5nQm94U3RyaW5nKTogQVhQU3BhY2luZ0JveDxudW1iZXI+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFyZ2luOiB0aGlzLnBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQubWFyZ2luKSxcbiAgICAgIHBhZGRpbmc6IHRoaXMucGFyc2VTaWRlc1dpdGhVbml0cyhpbnB1dC5wYWRkaW5nKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUJvcmRlckJveChpbnB1dDogQVhQQm9yZGVyQm94U3RyaW5nKTogQVhQQm9yZGVyQm94PG51bWJlciB8IHN0cmluZz4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdGhpcy5wYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0LndpZHRoKSxcbiAgICAgIHJhZGl1czogdGhpcy5wYXJzZUNvcm5lcnMoaW5wdXQucmFkaXVzKSxcbiAgICAgIGNvbG9yOiB0aGlzLnBhcnNlU2lkZXMoaW5wdXQuY29sb3IpLFxuICAgICAgc3R5bGU6IHRoaXMucGFyc2VTaWRlcyhpbnB1dC5zdHlsZSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VTcGFjaW5nQm94UmV2ZXJzZShcbiAgICBpbnB1dDogQVhQU3BhY2luZ0JveDxudW1iZXI+LFxuICAgIHVuaXRzOiBBWFBTcGFjaW5nQm94PHN0cmluZz4sXG4gICk6IEFYUFNwYWNpbmdCb3hTdHJpbmcge1xuICAgIGNvbnN0IGZvcm1hdCA9ICh2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpID0+IGAke3ZhbHVlfSR7dW5pdH1gO1xuICAgIHJldHVybiB7XG4gICAgICBtYXJnaW46IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0Lm1hcmdpbi50b3AsIHVuaXRzLm1hcmdpbi50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLnJpZ2h0LCB1bml0cy5tYXJnaW4ucmlnaHQpLFxuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLmJvdHRvbSwgdW5pdHMubWFyZ2luLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4ubGVmdCwgdW5pdHMubWFyZ2luLmxlZnQpLFxuICAgICAgXSksXG4gICAgICBwYWRkaW5nOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLnRvcCwgdW5pdHMucGFkZGluZy50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQucGFkZGluZy5yaWdodCwgdW5pdHMucGFkZGluZy5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLmJvdHRvbSwgdW5pdHMucGFkZGluZy5ib3R0b20pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucGFkZGluZy5sZWZ0LCB1bml0cy5wYWRkaW5nLmxlZnQpLFxuICAgICAgXSksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VCb3JkZXJCb3hSZXZlcnNlKFxuICAgIGlucHV0OiBBWFBCb3JkZXJCb3g8bnVtYmVyIHwgc3RyaW5nPixcbiAgICB1bml0czogQVhQQm9yZGVyQm94PHN0cmluZz4sXG4gICk6IEFYUEJvcmRlckJveFN0cmluZyB7XG4gICAgY29uc3QgZm9ybWF0ID0gKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIHVuaXQ6IHN0cmluZykgPT4gYCR7dmFsdWV9JHt1bml0fWA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLnRvcCwgdW5pdHMud2lkdGgudG9wKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLnJpZ2h0LCB1bml0cy53aWR0aC5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC53aWR0aC5ib3R0b20sIHVuaXRzLndpZHRoLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC53aWR0aC5sZWZ0LCB1bml0cy53aWR0aC5sZWZ0KSxcbiAgICAgIF0pLFxuICAgICAgcmFkaXVzOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ3RvcC1sZWZ0J10sIHVuaXRzLnJhZGl1c1sndG9wLWxlZnQnXSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ3RvcC1yaWdodCddLCB1bml0cy5yYWRpdXNbJ3RvcC1yaWdodCddKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1snYm90dG9tLXJpZ2h0J10sIHVuaXRzLnJhZGl1c1snYm90dG9tLXJpZ2h0J10pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucmFkaXVzWydib3R0b20tbGVmdCddLCB1bml0cy5yYWRpdXNbJ2JvdHRvbS1sZWZ0J10pLFxuICAgICAgXSksXG4gICAgICBjb2xvcjogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBgJHtpbnB1dC5jb2xvci50b3B9JHt1bml0cy5jb2xvci50b3B9YCxcbiAgICAgICAgYCR7aW5wdXQuY29sb3IucmlnaHR9JHt1bml0cy5jb2xvci5yaWdodH1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5ib3R0b219JHt1bml0cy5jb2xvci5ib3R0b219YCxcbiAgICAgICAgYCR7aW5wdXQuY29sb3IubGVmdH0ke3VuaXRzLmNvbG9yLmxlZnR9YCxcbiAgICAgIF0pLFxuICAgICAgc3R5bGU6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUudG9wfSR7dW5pdHMuc3R5bGUudG9wfWAsXG4gICAgICAgIGAke2lucHV0LnN0eWxlLnJpZ2h0fSR7dW5pdHMuc3R5bGUucmlnaHR9YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUuYm90dG9tfSR7dW5pdHMuc3R5bGUuYm90dG9tfWAsXG4gICAgICAgIGAke2lucHV0LnN0eWxlLmxlZnR9JHt1bml0cy5zdHlsZS5sZWZ0fWAsXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRWYWx1ZVdpdGhVbml0KGlucHV0OiBzdHJpbmcgfCBudW1iZXIpOiB7IHZhbHVlOiBudW1iZXI7IHVuaXQ6IHN0cmluZyB9IHtcbiAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJykgcmV0dXJuIHsgdmFsdWU6IGlucHV0LCB1bml0OiAncHgnIH07XG4gICAgaWYgKGlucHV0ID09PSAnYXV0bycpIHJldHVybiB7IHZhbHVlOiAwLCB1bml0OiAncHgnIH07XG5cbiAgICBjb25zdCBtYXRjaCA9IGlucHV0Lm1hdGNoKC9eKFswLTkuXSspKFthLXolXSopJC9pKTtcbiAgICBpZiAoIW1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdCBmb3JtYXQ6ICR7aW5wdXR9YCk7XG5cbiAgICByZXR1cm4geyB2YWx1ZTogcGFyc2VGbG9hdChtYXRjaFsxXSksIHVuaXQ6IG1hdGNoWzJdIHx8ICcnIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlRnJvbVVuaXQodmFsdWU6IG51bWJlciwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdW5pdCA/IGAke3ZhbHVlfSR7dW5pdH1gIDogYCR7dmFsdWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2VHYXAoZ2FwOiBzdHJpbmcpOiB7IHZhbHVlczogUmVjb3JkPCd4JyB8ICd5JywgbnVtYmVyPjsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBhcnRzID0gZ2FwLnNwbGl0KC9cXHMrLyk7XG4gICAgY29uc3QgbWF0Y2ggPSBwYXJ0c1swXS5tYXRjaCgvXihcXGQrXFwuP1xcZCopKFthLXolXSspJC8pO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBnYXAgZm9ybWF0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgWywgeFZhbHVlLCB1bml0XSA9IG1hdGNoO1xuICAgIGxldCB5VmFsdWUgPSBwYXJzZUZsb2F0KHhWYWx1ZSk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3Qgc2Vjb25kTWF0Y2ggPSBwYXJ0c1sxXS5tYXRjaCgvXihcXGQrXFwuP1xcZCopW2EteiVdKyQvKTtcbiAgICAgIGlmICghc2Vjb25kTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdhcCBmb3JtYXQnKTtcbiAgICAgIH1cbiAgICAgIHlWYWx1ZSA9IHBhcnNlRmxvYXQoc2Vjb25kTWF0Y2hbMV0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZXM6IHtcbiAgICAgICAgeDogcGFyc2VGbG9hdCh4VmFsdWUpLFxuICAgICAgICB5OiB5VmFsdWUsXG4gICAgICB9LFxuICAgICAgdW5pdCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUdyaWRUZW1wbGF0ZShncmlkVGVtcGxhdGU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgbWF0Y2ggPSBncmlkVGVtcGxhdGUubWF0Y2goL15yZXBlYXRcXCgoXFxkKyksXFxzKig/OjFmcnxhdXRvfG1pbm1heFxcKFteKV0qXFwpKVxcKSQvKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyaWQgdGVtcGxhdGUgZm9ybWF0LiBFeHBlY3RlZCAncmVwZWF0KE4sIDFmcnxhdXRvfG1pbm1heCguLi4pKScuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlR3JpZFRlbXBsYXRlKHJlcGV0aXRpb25Db3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAocmVwZXRpdGlvbkNvdW50IDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVwZXRpdGlvbiBjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGByZXBlYXQoJHtyZXBldGl0aW9uQ291bnR9LCAxZnIpYDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vbkVtcHR5QnJlYWtwb2ludHM8VD4odmFsdWVzOiBBWFBCcmVha3BvaW50VmFsdWVzPFQ+KTogQVhQQnJlYWtwb2ludHNbXSB7XG4gIGNvbnN0IGJyZWFrcG9pbnRzOiBBWFBCcmVha3BvaW50c1tdID0gWydkZWZhdWx0JywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJywgJzJ4bCcsICczeGwnXTtcbiAgY29uc3Qgbm9uRW1wdHlCcmVha3BvaW50czogQVhQQnJlYWtwb2ludHNbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykge1xuICAgIGlmICh2YWx1ZXNbYnJlYWtwb2ludF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgbm9uRW1wdHlCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25FbXB0eUJyZWFrcG9pbnRzO1xufVxuIl19","export const AXP_WIDGETS_LAYOUT_CATEGORY = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\nexport const AXP_WIDGETS_EDITOR_CATEGORY = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\nexport const AXP_WIDGETS_ACTION_CATEGORY = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\nexport const AXP_WIDGETS_ADVANCE_CATEGORY = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\nexport const AXP_WIDGETS_CATEGORIES = [\n AXP_WIDGETS_LAYOUT_CATEGORY,\n AXP_WIDGETS_EDITOR_CATEGORY,\n AXP_WIDGETS_ACTION_CATEGORY,\n AXP_WIDGETS_ADVANCE_CATEGORY,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGVnb3JpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtY2F0ZWdvcmllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxRQUFRO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxTQUFTO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBc0I7SUFDNUQsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxRQUFRO0NBQ2hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBc0I7SUFDN0QsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxTQUFTO0NBQ2pCLENBQUM7QUFJRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBd0I7SUFDekQsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENhdGVnb3J5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfTEFZT1VUX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2xheW91dCcsXG4gIG9yZGVyOiAxLFxuICB0aXRsZTogJ0xheW91dCcsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2VkaXRvcicsXG4gIG9yZGVyOiAyLFxuICB0aXRsZTogJ0VkaXRvcnMnLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0FDVElPTl9DQVRFR09SWTogQVhQV2lkZ2V0Q2F0ZWdvcnkgPSB7XG4gIG5hbWU6ICdhY3Rpb24nLFxuICBvcmRlcjogMyxcbiAgdGl0bGU6ICdBY3Rpb24nLFxufTtcblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnYWR2YW5jZScsXG4gIG9yZGVyOiA0LFxuICB0aXRsZTogJ0FkdmFuY2UnLFxufTtcblxuXG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19DQVRFR09SSUVTOiBBWFBXaWRnZXRDYXRlZ29yeVtdID0gW1xuICBBWFBfV0lER0VUU19MQVlPVVRfQ0FURUdPUlksXG4gIEFYUF9XSURHRVRTX0VESVRPUl9DQVRFR09SWSxcbiAgQVhQX1dJREdFVFNfQUNUSU9OX0NBVEVHT1JZLFxuICBBWFBfV0lER0VUU19BRFZBTkNFX0NBVEVHT1JZLFxuXTtcbiJdfQ==","export var AXPWidgetGroupEnum;\n(function (AXPWidgetGroupEnum) {\n AXPWidgetGroupEnum[\"FormElement\"] = \"form-element\";\n AXPWidgetGroupEnum[\"DashboardWidget\"] = \"dashboard-widget\";\n AXPWidgetGroupEnum[\"FormTemplate\"] = \"form-template\";\n AXPWidgetGroupEnum[\"PropertyEditor\"] = \"property-editor\";\n AXPWidgetGroupEnum[\"MetaData\"] = \"meta-data\";\n AXPWidgetGroupEnum[\"SettingWidget\"] = \"setting-widget\";\n AXPWidgetGroupEnum[\"EntityWidget\"] = \"entity-widget\";\n})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyb3VwLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LWdyb3VwLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sQ0FBTixJQUFZLGtCQVFYO0FBUkQsV0FBWSxrQkFBa0I7SUFDNUIsa0RBQTRCLENBQUE7SUFDNUIsMERBQW9DLENBQUE7SUFDcEMsb0RBQThCLENBQUE7SUFDOUIsd0RBQWtDLENBQUE7SUFDbEMsNENBQXNCLENBQUE7SUFDdEIsc0RBQWdDLENBQUE7SUFDaEMsb0RBQThCLENBQUE7QUFDaEMsQ0FBQyxFQVJXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFRN0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBWFBXaWRnZXRHcm91cCA9XG4gICdmb3JtLWVsZW1lbnQnIHxcbiAgJ2Rhc2hib2FyZC13aWRnZXQnIHxcbiAgJ2Zvcm0tdGVtcGxhdGUnIHxcbiAgJ3Byb3BlcnR5LWVkaXRvcicgfFxuICAnbWV0YS1kYXRhJyB8XG4gICdzZXR0aW5nLXdpZGdldCcgfFxuICAnZW50aXR5LXdpZGdldCc7XG5cblxuZXhwb3J0IGVudW0gQVhQV2lkZ2V0R3JvdXBFbnVtIHtcbiAgRm9ybUVsZW1lbnQgPSAnZm9ybS1lbGVtZW50JyxcbiAgRGFzaGJvYXJkV2lkZ2V0ID0gJ2Rhc2hib2FyZC13aWRnZXQnLFxuICBGb3JtVGVtcGxhdGUgPSAnZm9ybS10ZW1wbGF0ZScsXG4gIFByb3BlcnR5RWRpdG9yID0gJ3Byb3BlcnR5LWVkaXRvcicsXG4gIE1ldGFEYXRhID0gJ21ldGEtZGF0YScsXG4gIFNldHRpbmdXaWRnZXQgPSAnc2V0dGluZy13aWRnZXQnLFxuICBFbnRpdHlXaWRnZXQgPSAnZW50aXR5LXdpZGdldCcsXG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../tmp-esm2022/layout/builder/lib/layout-builder.service.js","../tmp-esm2022/layout/builder/lib/layout-conversion.service.js","../tmp-esm2022/layout/builder/lib/layout-renderer.component.js","../tmp-esm2022/layout/builder/lib/layout-builder.module.js","../tmp-esm2022/layout/builder/lib/layout-builder.types.js","../tmp-esm2022/layout/builder/lib/dialog-renderer.component.js","../tmp-esm2022/layout/builder/acorex-platform-layout-builder.js"],"sourcesContent":["import { AXPopupService } from '@acorex/components/popup';\nimport { Injectable, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n//#region ---- Inheritance Utilities ----\n/**\n * Resolves inherited properties from context and local values\n */\nfunction resolveInheritedProperties(context, localValues = {}) {\n return {\n mode: localValues.mode ?? context.mode ?? 'edit',\n disabled: localValues.disabled ?? context.disabled,\n readonly: localValues.readonly ?? context.readonly,\n direction: localValues.direction ?? context.direction,\n visible: localValues.visible ?? context.visible,\n };\n}\n/**\n * Merges inheritance context with local overrides\n */\nfunction mergeInheritanceContext(parentContext, localOverrides = {}) {\n return {\n ...parentContext,\n ...localOverrides,\n };\n}\n/**\n * Generates a random string for path/name generation\n */\nfunction generateRandomId() {\n return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);\n}\n/**\n * Converts label to a valid path/name\n */\nfunction labelToPath(label) {\n return label\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, '') // Remove special characters\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .substring(0, 50); // Limit length\n}\n/**\n * Generates path for value widgets based on hierarchy\n */\nfunction generateValueWidgetPath(widgetName, formFieldName, formFieldLabel) {\n // Priority: widget name -> form field name -> generated from label -> random\n if (widgetName) {\n return widgetName;\n }\n if (formFieldName) {\n return formFieldName;\n }\n if (formFieldLabel) {\n return labelToPath(formFieldLabel);\n }\n return generateRandomId();\n}\n//#endregion\n//#region ---- Service Implementation ----\nexport class AXPLayoutBuilderService {\n constructor() {\n this.popupService = inject(AXPopupService);\n }\n /**\n * Create a new layout builder\n */\n create() {\n return new LayoutBuilder(this.popupService);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutBuilderService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutBuilderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//#endregion\n//#region ---- Layout Builder Implementation ----\n/**\n * Main layout builder - Single Responsibility: Layout orchestration\n * Open/Closed: Extensible through container delegates\n */\nclass LayoutBuilder {\n constructor(popupService) {\n this.popupService = popupService;\n this.root = {\n children: [],\n mode: 'edit',\n type: 'flex-layout',\n };\n this.inheritanceContext = {\n mode: 'edit',\n };\n }\n // Predefined layout containers at root level - delegate pattern required\n grid(delegate) {\n const container = new GridContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n //this.state.children!.push(container.build());\n this.root = container.build();\n return this;\n }\n flex(delegate) {\n const container = new FlexContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.root.children.push(container.build());\n return this;\n }\n panel(delegate) {\n const container = new PanelContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.root.children.push(container.build());\n return this;\n }\n page(delegate) {\n const container = new PageContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.root.children.push(container.build());\n return this;\n }\n tabset(delegate) {\n const container = new TabsetContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.root.children.push(container.build());\n return this;\n }\n fieldset(delegate) {\n const container = new FieldsetContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.root.children.push(container.build());\n return this;\n }\n dialog(delegate) {\n const container = new DialogContainerBuilder(this.popupService);\n if (delegate) {\n delegate(container);\n }\n return container;\n }\n formField(label, delegate) {\n const field = new FormFieldBuilder(label);\n field.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(field);\n }\n this.root.children.push(field.build());\n return this;\n }\n build() {\n return {\n type: this.root.type,\n children: this.root.children,\n mode: this.root.mode,\n };\n }\n}\n//#endregion\n//#region ---- Container Builder Implementation ----\n/**\n * Abstract base container builder - Open/Closed Principle\n * Provides common functionality for all container types\n */\nclass BaseContainerBuilder {\n constructor(containerType) {\n this.containerState = {\n mode: 'edit',\n type: 'flex-layout',\n children: [],\n };\n this.inheritanceContext = {};\n this.containerState.type = containerType;\n }\n // Base methods shared by all containers\n ensureChildren() {\n this.containerState.children = this.containerState.children || [];\n }\n addWidget(type, options) {\n const child = new WidgetBuilder();\n child.type(type);\n // For value widgets, ensure path is provided\n const widgetOptions = options ?? {};\n const path = widgetOptions.path;\n const name = widgetOptions.name;\n if (this.isValueWidget(type) && !path) {\n throw new Error(`Value widget '${type}' requires a 'path' property`);\n }\n // Set name and path in widget state, not options\n if (name) {\n child.name(name);\n }\n if (path) {\n child.path(path);\n }\n // Remove name and path from options\n const { name: _, path: __, ...cleanOptions } = widgetOptions;\n // IMPORTANT: Apply inheritance context BEFORE setting options\n // This ensures that inherited properties (readonly, disabled, etc.) are applied first\n // Then user-provided options will override them if explicitly set\n child.withInheritanceContext(this.inheritanceContext);\n child.options(cleanOptions);\n this.ensureChildren();\n this.containerState.children.push(child.build());\n return this;\n }\n isValueWidget(type) {\n const valueWidgetTypes = [\n 'text-editor',\n 'large-text-editor',\n 'rich-text-editor',\n 'password-editor',\n 'number-editor',\n 'select-editor',\n 'lookup-editor',\n 'selection-list-editor',\n 'date-time-editor',\n 'toggle-editor',\n 'color-editor',\n ];\n return valueWidgetTypes.includes(type);\n }\n build() {\n const result = {\n type: this.containerState.type,\n children: this.containerState.children,\n options: this.containerState.options,\n mode: this.containerState.mode,\n visible: this.containerState.visible,\n };\n // Add name with _form_field suffix for form fields\n if (this.containerState.type === 'form-field') {\n if (this.containerState.name) {\n result.name = this.containerState.name;\n }\n else if (this.containerState.options?.['label']) {\n result.name = labelToPath(this.containerState.options['label']) + '_form_field';\n }\n // Form fields don't have path\n }\n else {\n // Other containers can have name and path\n if (this.containerState.name) {\n result.name = this.containerState.name;\n }\n if (this.containerState.path) {\n result.path = this.containerState.path;\n }\n if (this.containerState.defaultValue !== undefined) {\n result.defaultValue = this.containerState.defaultValue;\n }\n }\n return result;\n }\n}\n/**\n * Base container builder mixin - Interface Segregation Principle\n * Provides common container operations\n */\nclass BaseContainerMixin extends BaseContainerBuilder {\n name(name) {\n this.containerState.name = name;\n return this;\n }\n path(path) {\n this.containerState.path = path;\n return this;\n }\n mode(mode) {\n this.containerState.mode = mode;\n this.inheritanceContext.mode = mode;\n return this;\n }\n visible(condition) {\n if (!this.containerState.options)\n this.containerState.options = {};\n this.containerState.options['visible'] = condition;\n this.inheritanceContext.visible = condition;\n return this;\n }\n disabled(condition) {\n if (!this.containerState.options)\n this.containerState.options = {};\n this.containerState.options['disabled'] = condition;\n this.inheritanceContext.disabled = condition;\n return this;\n }\n readonly(condition) {\n if (!this.containerState.options)\n this.containerState.options = {};\n this.containerState.options['readonly'] = condition;\n this.inheritanceContext.readonly = condition;\n return this;\n }\n direction(direction) {\n if (!this.containerState.options)\n this.containerState.options = {};\n this.containerState.options['direction'] = direction;\n this.inheritanceContext.direction = direction;\n return this;\n }\n // Inheritance context methods\n withInheritanceContext(context) {\n this.inheritanceContext = mergeInheritanceContext(context);\n return this;\n }\n getInheritanceContext() {\n return { ...this.inheritanceContext };\n }\n}\n/**\n * Layout container mixin - Interface Segregation Principle\n * Provides layout-specific operations\n */\nclass LayoutContainerMixin extends BaseContainerMixin {\n layout(value) {\n // Map layout intent to grid item sizing so containers like `form-field`\n // can span multiple columns inside grid/fieldset layouts.\n if (!this.containerState.options)\n this.containerState.options = {};\n if (typeof value === 'number') {\n // Direct numeric shorthand → colSpan\n this.containerState.options.colSpan = value;\n }\n else if (value) {\n // Try to extract a reasonable colSpan from breakpoint positions\n const positions = value.positions;\n if (positions) {\n const colSpan = positions?.lg?.colSpan ??\n positions?.xl?.colSpan ??\n positions?.xxl?.colSpan ??\n positions?.md?.colSpan ??\n positions?.sm?.colSpan;\n if (colSpan != null) {\n this.containerState.options.colSpan = colSpan;\n }\n }\n }\n return this;\n }\n}\n/**\n * Child container mixin - Interface Segregation Principle\n * Provides child container management\n */\nclass ChildContainerMixin extends LayoutContainerMixin {\n grid(delegate) {\n const container = new GridContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n flex(delegate) {\n const container = new FlexContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n panel(delegate) {\n const container = new PanelContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n page(delegate) {\n const container = new PageContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n tabset(delegate) {\n const container = new TabsetContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n fieldset(delegate) {\n const container = new FieldsetContainerBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n dialog(delegate) {\n const container = new DialogContainerBuilder(); // Will use inject() fallback\n if (delegate) {\n delegate(container);\n }\n return container;\n }\n formField(label, delegate) {\n const field = new FormFieldBuilder(label);\n field.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(field);\n }\n this.ensureChildren();\n this.containerState.children.push(field.build());\n return this;\n }\n}\n/**\n * Widget container mixin - Interface Segregation Principle\n * Provides widget creation operations\n */\nclass WidgetContainerMixin extends ChildContainerMixin {\n textBox(options) {\n this.addWidget('text-editor', options);\n return this;\n }\n largeTextBox(options) {\n this.addWidget('large-text-editor', options);\n return this;\n }\n richText(options) {\n this.addWidget('rich-text-editor', options);\n return this;\n }\n passwordBox(options) {\n this.addWidget('password-editor', options);\n return this;\n }\n numberBox(options) {\n this.addWidget('number-editor', options);\n return this;\n }\n selectBox(options) {\n this.addWidget('select-editor', options);\n return this;\n }\n lookupBox(options) {\n this.addWidget('lookup-editor', options);\n return this;\n }\n selectionList(options) {\n this.addWidget('selection-list-editor', options);\n return this;\n }\n dateTimeBox(options) {\n this.addWidget('date-time-editor', options);\n return this;\n }\n toggleSwitch(options) {\n this.addWidget('toggle-editor', options);\n return this;\n }\n colorBox(options) {\n this.addWidget('color-editor', options);\n return this;\n }\n list(delegate) {\n const container = new ListWidgetBuilder();\n container.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(container);\n }\n this.ensureChildren();\n this.containerState.children.push(container.build());\n return this;\n }\n customWidget(type, options) {\n this.addWidget(type, options);\n return this;\n }\n}\n/**\n * Flex Container Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass FlexContainerBuilder extends WidgetContainerMixin {\n constructor() {\n super('flex-layout');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Flex\n setDirection(direction) {\n return this.setOptions({ flexDirection: direction });\n }\n setWrap(wrap) {\n return this.setOptions({ flexWrap: wrap });\n }\n setJustifyContent(justify) {\n return this.setOptions({ justifyContent: justify });\n }\n setAlignItems(align) {\n return this.setOptions({ alignItems: align });\n }\n setGap(gap) {\n return this.setOptions({ gap });\n }\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setPadding(padding) {\n return this.setOptions({ spacing: { padding } });\n }\n setMargin(margin) {\n return this.setOptions({ spacing: { margin } });\n }\n}\n/**\n * Grid Container Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass GridContainerBuilder extends WidgetContainerMixin {\n constructor() {\n super('grid-layout');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Grid\n setColumns(columns) {\n return this.setOptions({ grid: { default: { columns } } });\n }\n setRows(rows) {\n return this.setOptions({ grid: { default: { rows } } });\n }\n setGap(gap) {\n return this.setOptions({ grid: { default: { gap } } });\n }\n setJustifyItems(justify) {\n return this.setOptions({ grid: { default: { justifyItems: justify } } });\n }\n setAlignItems(align) {\n return this.setOptions({ grid: { default: { alignItems: align } } });\n }\n setAutoFlow(flow) {\n return this.setOptions({ grid: { default: { autoFlow: flow } } });\n }\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setPadding(padding) {\n return this.setOptions({ spacing: { padding } });\n }\n setMargin(margin) {\n return this.setOptions({ spacing: { margin } });\n }\n}\n/**\n * Panel Container Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass PanelContainerBuilder extends WidgetContainerMixin {\n constructor() {\n super('panel-layout');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Panel\n setCaption(caption) {\n return this.setOptions({ caption });\n }\n setIcon(icon) {\n return this.setOptions({ icon });\n }\n setLook(look) {\n return this.setOptions({ look });\n }\n setShowHeader(show) {\n return this.setOptions({ showHeader: show });\n }\n setCollapsed(collapsed) {\n return this.setOptions({ collapsed });\n }\n}\n/**\n * Page Container Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass PageContainerBuilder extends WidgetContainerMixin {\n constructor() {\n super('page-layout');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Page\n setBackgroundColor(color) {\n return this.setOptions({ backgroundColor: color });\n }\n setTheme(theme) {\n return this.setOptions({ theme });\n }\n setHasHeader(hasHeader) {\n return this.setOptions({ hasHeader });\n }\n setHasFooter(hasFooter) {\n return this.setOptions({ hasFooter });\n }\n setDirection(direction) {\n return this.setOptions({ direction });\n }\n}\n/**\n * Tabset Container Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass TabsetContainerBuilder extends WidgetContainerMixin {\n constructor() {\n super('tabset-layout');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Tabset\n setLook(look) {\n return this.setOptions({ look });\n }\n setOrientation(orientation) {\n return this.setOptions({ orientation });\n }\n setActiveIndex(index) {\n return this.setOptions({ activeIndex: index });\n }\n}\n/**\n * Form Field Builder - Liskov Substitution Principle\n * Can only contain ONE widget with automatic path generation\n */\nclass FormFieldBuilder extends LayoutContainerMixin {\n constructor(label) {\n super('form-field');\n this.hasWidget = false;\n this.containerState.options = { label, showLabel: true };\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n setLabel(label) {\n return this.setOptions({ label });\n }\n setShowLabel(showLabel) {\n return this.setOptions({ showLabel });\n }\n // Single widget methods with automatic path generation\n addSingleWidget(type, options) {\n if (this.hasWidget) {\n throw new Error('Form field can only contain one widget');\n }\n const formFieldName = this.containerState.name;\n const formFieldPath = this.containerState.path; // Get explicit path from form field\n const formFieldLabel = this.containerState.options?.['label'];\n const widgetName = options?.name;\n // Generate widget path: explicit path -> widget name -> form field name -> label -> random\n let widgetPath;\n if (formFieldPath) {\n widgetPath = formFieldPath; // Use explicit form field path first\n }\n else if (widgetName) {\n widgetPath = widgetName;\n }\n else if (formFieldName) {\n widgetPath = formFieldName; // Use form field name as default path\n }\n else if (formFieldLabel) {\n widgetPath = labelToPath(formFieldLabel);\n }\n else {\n widgetPath = generateRandomId();\n }\n const finalName = widgetName || formFieldName || widgetPath;\n const child = new WidgetBuilder();\n child.type(type);\n child.name(finalName);\n child.path(widgetPath);\n // Remove name from options since it's now in state\n const { name: _, ...cleanOptions } = (options || {});\n child.withInheritanceContext(this.inheritanceContext);\n child.options(cleanOptions);\n // IMPORTANT: Store the widget builder, don't build it yet!\n // This allows properties set after this method (like disabled, readonly) to be applied\n this.childWidget = child;\n this.hasWidget = true;\n return this;\n }\n textBox(options) {\n return this.addSingleWidget('text-editor', options);\n }\n largeTextBox(options) {\n return this.addSingleWidget('large-text-editor', options);\n }\n richText(options) {\n return this.addSingleWidget('rich-text-editor', options);\n }\n passwordBox(options) {\n return this.addSingleWidget('password-editor', options);\n }\n numberBox(options) {\n return this.addSingleWidget('number-editor', options);\n }\n selectBox(options) {\n return this.addSingleWidget('select-editor', options);\n }\n lookupBox(options) {\n return this.addSingleWidget('lookup-editor', options);\n }\n selectionList(options) {\n return this.addSingleWidget('selection-list-editor', options);\n }\n dateTimeBox(options) {\n return this.addSingleWidget('date-time-editor', options);\n }\n toggleSwitch(options) {\n return this.addSingleWidget('toggle-editor', options);\n }\n colorBox(options) {\n return this.addSingleWidget('color-editor', options);\n }\n customWidget(type, options) {\n return this.addSingleWidget(type, options);\n }\n // Override property setters to propagate changes to child widget\n disabled(condition) {\n super.disabled(condition);\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n readonly(condition) {\n super.readonly(condition);\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n visible(condition) {\n super.visible(condition);\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n direction(direction) {\n super.direction(direction);\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n mode(mode) {\n super.mode(mode);\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n // Override withInheritanceContext to pass it to the child widget if it exists\n withInheritanceContext(context) {\n // Call parent implementation first\n super.withInheritanceContext(context);\n // If we have a child widget, update its inheritance context too\n if (this.childWidget) {\n this.childWidget.withInheritanceContext(this.inheritanceContext);\n }\n return this;\n }\n // Override build() to build the child widget at the last moment\n build() {\n // Build the child widget and add it to children before building the form field\n if (this.childWidget) {\n this.ensureChildren();\n this.containerState.children.push(this.childWidget.build());\n }\n // Call parent build\n return super.build();\n }\n}\n/**\n * Fieldset Container Builder - Liskov Substitution Principle\n * Extends LayoutContainerMixin to inherit layout functionality\n * Specialized for form fields only\n */\nclass FieldsetContainerBuilder extends LayoutContainerMixin {\n constructor() {\n super('fieldset-layout');\n this.containerState.options = {};\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for Fieldset\n setTitle(title) {\n return this.setOptions({ title });\n }\n setDescription(description) {\n return this.setOptions({ description });\n }\n setIcon(icon) {\n return this.setOptions({ icon });\n }\n setCollapsible(collapsible) {\n return this.setOptions({ collapsible });\n }\n setIsOpen(isOpen) {\n return this.setOptions({ isOpen });\n }\n setLook(look) {\n return this.setOptions({ look });\n }\n setShowHeader(showHeader) {\n return this.setOptions({ showHeader });\n }\n setCols(cols) {\n return this.setOptions({ cols });\n }\n // Only form fields are allowed in fieldset\n formField(label, delegate) {\n const field = new FormFieldBuilder(label);\n field.withInheritanceContext(this.inheritanceContext);\n if (delegate) {\n delegate(field);\n }\n this.ensureChildren();\n this.containerState.children.push(field.build());\n return this;\n }\n}\n/**\n * List Widget Builder - Liskov Substitution Principle\n * Extends WidgetContainerMixin to inherit all common functionality\n */\nclass ListWidgetBuilder extends WidgetContainerMixin {\n constructor() {\n super('list');\n }\n setOptions(options) {\n this.containerState.options = { ...this.containerState.options, ...options };\n return this;\n }\n // Individual fluent methods for List Widget\n setDataSource(dataSource) {\n return this.setOptions({ dataSource });\n }\n setColumns(columns) {\n return this.setOptions({ columns });\n }\n // Event handlers\n setOnRowClick(handler) {\n return this.setOptions({ onRowClick: handler });\n }\n setOnRowDoubleClick(handler) {\n return this.setOptions({ onRowDoubleClick: handler });\n }\n setOnSelectionChange(handler) {\n return this.setOptions({ onSelectionChange: handler });\n }\n setOnRowCommand(handler) {\n return this.setOptions({ onRowCommand: handler });\n }\n // Table features\n setPaging(paging) {\n return this.setOptions({ paging });\n }\n setShowHeader(show) {\n return this.setOptions({ showHeader: show });\n }\n setShowFooter(show) {\n return this.setOptions({ showFooter: show });\n }\n setFixHeader(fix) {\n return this.setOptions({ fixHeader: fix });\n }\n setFixFooter(fix) {\n return this.setOptions({ fixFooter: fix });\n }\n setFetchDataMode(mode) {\n return this.setOptions({ fetchDataMode: mode });\n }\n setParentField(field) {\n return this.setOptions({ parentField: field });\n }\n setMinHeight(height) {\n return this.setOptions({ minHeight: height });\n }\n // Selection & Index\n setShowIndex(show) {\n return this.setOptions({ showIndex: show });\n }\n setAllowSelection(allow) {\n return this.setOptions({ allowSelection: allow });\n }\n // Commands\n setPrimaryCommands(commands) {\n return this.setOptions({ primaryCommands: commands });\n }\n setSecondaryCommands(commands) {\n return this.setOptions({ secondaryCommands: commands });\n }\n // Loading\n setLoading(loading) {\n return this.setOptions({ loading });\n }\n}\n/**\n * Dialog Container Builder - Specialized for dialog functionality\n * Uses composition instead of inheritance for cleaner separation\n */\nclass DialogContainerBuilder {\n constructor(popupService) {\n this.dialogState = {\n type: 'flex-layout', // This will be overridden when content layout exists\n children: [],\n mode: 'edit',\n dialogOptions: {\n title: '',\n size: 'md',\n closeButton: false,\n },\n actions: {\n footer: {\n prefix: [],\n suffix: [],\n },\n },\n };\n if (popupService) {\n this.popupService = popupService;\n }\n else {\n this.popupService = inject(AXPopupService);\n }\n }\n setOptions(options) {\n this.dialogState.dialogOptions = { ...this.dialogState.dialogOptions, ...options };\n return this;\n }\n // Individual fluent methods for Dialog\n setTitle(title) {\n return this.setOptions({ title });\n }\n setMessage(message) {\n return this.setOptions({ message });\n }\n setSize(size) {\n return this.setOptions({ size });\n }\n setCloseButton(closeButton) {\n return this.setOptions({ closeButton });\n }\n setContext(context) {\n return this.setOptions({ context });\n }\n content(delegate) {\n if (delegate) {\n // Create a flex container directly instead of through LayoutBuilder\n const flexContainer = new FlexContainerBuilder();\n flexContainer.setDirection('column');\n flexContainer.setGap('10px');\n delegate(flexContainer);\n this.contentLayout = flexContainer.build();\n }\n return this;\n }\n setActions(delegate) {\n if (delegate) {\n const actionBuilder = new ActionBuilder(this);\n delegate(actionBuilder);\n }\n return this;\n }\n // Build method to create dialog node\n build() {\n // If we have content layout, use it directly to avoid extra wrapper\n if (this.contentLayout) {\n return {\n ...this.contentLayout,\n // Add dialog-specific properties\n options: {\n ...this.contentLayout.options,\n ...this.dialogState.dialogOptions,\n },\n };\n }\n // Fallback to dialog state structure if no content\n const result = {\n ...this.dialogState,\n children: [],\n };\n // Add dialog-specific properties\n if (this.dialogState.dialogOptions) {\n result.options = { ...result.options, ...this.dialogState.dialogOptions };\n }\n return result;\n }\n // Dialog-specific methods\n async show() {\n const dialogNode = this.build();\n // Import the dialog renderer component dynamically\n const { AXPDialogRendererComponent } = await import('./dialog-renderer.component');\n // Create dialog configuration\n const dialogConfig = {\n title: this.dialogState.dialogOptions?.title || '',\n message: this.dialogState.dialogOptions?.message,\n context: this.dialogState.dialogOptions?.context || {},\n definition: dialogNode,\n actions: this.dialogState.actions,\n };\n // The Promise resolves when user clicks an action button\n return new Promise(async (resolve) => {\n this.popupService.open(AXPDialogRendererComponent, {\n title: dialogConfig.title,\n size: this.dialogState.dialogOptions?.size || 'md',\n closeButton: this.dialogState.dialogOptions?.closeButton || false,\n closeOnBackdropClick: false,\n draggable: false,\n data: {\n config: dialogConfig,\n callBack: (result) => {\n // Resolve with the dialog reference when user clicks an action\n resolve(result);\n },\n },\n });\n });\n }\n}\n//#endregion\n//#region ---- Widget Builder Implementation ----\n/**\n * Widget Builder - Single Responsibility Principle\n * Handles individual widget configuration and building\n */\nclass WidgetBuilder {\n constructor(name) {\n this.widgetState = {\n type: 'widget',\n options: {},\n };\n this.inheritanceContext = {};\n if (name) {\n this.widgetState.name = name;\n }\n }\n type(type) {\n this.widgetState.type = type;\n return this;\n }\n name(name) {\n this.widgetState.name = name;\n if (!this.widgetState.path) {\n this.widgetState.path = name;\n }\n return this;\n }\n path(path) {\n this.widgetState.path = path;\n return this;\n }\n options(options) {\n // Merge options instead of replacing to preserve inherited properties\n this.widgetState.options = { ...this.widgetState.options, ...options };\n return this;\n }\n layout(value) {\n if (typeof value === 'number') {\n this.widgetState.layout = {\n positions: {\n sm: { colSpan: 12 },\n md: { colSpan: 12 },\n lg: { colSpan: value },\n xl: { colSpan: value },\n xxl: { colSpan: value },\n },\n };\n }\n else {\n this.widgetState.layout = value;\n }\n return this;\n }\n mode(mode) {\n this.widgetState.mode = mode;\n this.inheritanceContext.mode = mode;\n return this;\n }\n visible(condition) {\n if (!this.widgetState.options) {\n this.widgetState.options = {};\n }\n this.widgetState.options['visible'] = condition;\n this.inheritanceContext.visible = condition;\n return this;\n }\n disabled(condition) {\n if (!this.widgetState.options) {\n this.widgetState.options = {};\n }\n this.widgetState.options['disabled'] = condition;\n this.inheritanceContext.disabled = condition;\n return this;\n }\n readonly(condition) {\n if (!this.widgetState.options) {\n this.widgetState.options = {};\n }\n this.widgetState.options['readonly'] = condition;\n this.inheritanceContext.readonly = condition;\n return this;\n }\n direction(direction) {\n if (!this.widgetState.options) {\n this.widgetState.options = {};\n }\n this.widgetState.options['direction'] = direction;\n this.inheritanceContext.direction = direction;\n return this;\n }\n // Inheritance context methods\n withInheritanceContext(context) {\n this.inheritanceContext = mergeInheritanceContext(context);\n // Apply inherited properties to widget state\n const resolved = resolveInheritedProperties(context, this.inheritanceContext);\n // Always apply inherited properties (remove the conditions that check if already set)\n // This allows properties to be updated when inheritance context changes\n if (resolved.mode) {\n this.widgetState.mode = resolved.mode;\n }\n if (!this.widgetState.options)\n this.widgetState.options = {};\n if (resolved.disabled !== undefined) {\n this.widgetState.options['disabled'] = resolved.disabled;\n }\n if (resolved.readonly !== undefined) {\n this.widgetState.options['readonly'] = resolved.readonly;\n }\n if (resolved.direction !== undefined) {\n this.widgetState.options['direction'] = resolved.direction;\n }\n if (resolved.visible !== undefined) {\n this.widgetState.options['visible'] = resolved.visible;\n }\n return this;\n }\n getInheritanceContext() {\n return { ...this.inheritanceContext };\n }\n build() {\n return {\n name: this.widgetState.name,\n type: this.widgetState.type,\n options: this.widgetState.options,\n mode: this.widgetState.mode,\n path: this.widgetState.path,\n defaultValue: this.widgetState.defaultValue,\n };\n }\n}\n//#region ---- Action Builder Implementation ----\nclass ActionBuilder {\n constructor(dialogBuilder) {\n this.dialogBuilder = dialogBuilder;\n }\n cancel(text) {\n if (!this.dialogBuilder['dialogState'].actions.footer.suffix) {\n this.dialogBuilder['dialogState'].actions.footer.suffix = [];\n }\n this.dialogBuilder['dialogState'].actions.footer.suffix.push({\n title: text || '@general:actions.cancel.title',\n icon: 'fa-times',\n color: 'default',\n command: { name: 'cancel' },\n });\n return this;\n }\n submit(text) {\n if (!this.dialogBuilder['dialogState'].actions.footer.suffix) {\n this.dialogBuilder['dialogState'].actions.footer.suffix = [];\n }\n this.dialogBuilder['dialogState'].actions.footer.suffix.push({\n title: text || '@general:actions.submit.title',\n icon: 'fa-check',\n color: 'primary',\n command: { name: 'submit', options: { validate: true } },\n });\n return this;\n }\n custom(action) {\n if (!this.dialogBuilder['dialogState'].actions.footer.suffix) {\n this.dialogBuilder['dialogState'].actions.footer.suffix = [];\n }\n this.dialogBuilder['dialogState'].actions.footer.suffix.push(action);\n return this;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9sYXlvdXQtYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUE0Q25ELDZDQUE2QztBQUU3Qzs7R0FFRztBQUNILFNBQVMsMEJBQTBCLENBQ2pDLE9BQTJCLEVBQzNCLGNBQTJDLEVBQUU7SUFFN0MsT0FBTztRQUNMLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTTtRQUNoRCxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUTtRQUNsRCxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUTtRQUNsRCxTQUFTLEVBQUUsV0FBVyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUztRQUNyRCxPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTztLQUNoRCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FDOUIsYUFBaUMsRUFDakMsaUJBQThDLEVBQUU7SUFFaEQsT0FBTztRQUNMLEdBQUcsYUFBYTtRQUNoQixHQUFHLGNBQWM7S0FDbEIsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FB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Q0FBQyxPQUFRLENBQUMsTUFBTyxDQUFDLE1BQU8sQ0FBQyxJQUFJLENBQUM7WUFDOUQsS0FBSyxFQUFFLElBQUksSUFBSSwrQkFBK0I7WUFDOUMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUU7U0FDekQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXlCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQVEsQ0FBQyxNQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFRLENBQUMsTUFBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBUSxDQUFDLE1BQU8sQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhQQWN0aW9uTWVudUl0ZW0sIEFYUEdyaWRMYXlvdXRPcHRpb25zIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0UmVuZGVyTW9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhQRGlhbG9nQ29udGFpbmVyT3B0aW9ucyxcbiAgQVhQRGlhbG9nUmVmLFxuICBBWFBGaWVsZHNldENvbnRhaW5lck9wdGlvbnMsXG4gIEFYUEZsZXhDb250YWluZXJPcHRpb25zLFxuICBBWFBGb3JtRmllbGRPcHRpb25zLFxuICAvLyBDb250YWluZXIgb3B0aW9uc1xuICBBWFBHcmlkQ29udGFpbmVyT3B0aW9ucyxcbiAgQVhQTGlzdFdpZGdldE9wdGlvbnMsXG4gIEFYUFBhZ2VDb250YWluZXJPcHRpb25zLFxuICBBWFBQYW5lbENvbnRhaW5lck9wdGlvbnMsXG4gIEFYUFRhYnNldENvbnRhaW5lck9wdGlvbnMsXG4gIENvbG9yQm94T3B0aW9ucyxcbiAgRGF0ZVRpbWVCb3hPcHRpb25zLFxuICBEaWFsb2dCdWlsZGVyU3RhdGUsXG4gIElBY3Rpb25CdWlsZGVyLFxuICBJRGlhbG9nQnVpbGRlcixcbiAgSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcixcbiAgSUZsZXhDb250YWluZXJCdWlsZGVyLFxuICBJRm9ybUZpZWxkQnVpbGRlcixcbiAgSUdyaWRDb250YWluZXJCdWlsZGVyLFxuICBJTGF5b3V0QnVpbGRlcixcbiAgSUxpc3RXaWRnZXRCdWlsZGVyLFxuICBJUGFnZUNvbnRhaW5lckJ1aWxkZXIsXG4gIElQYW5lbENvbnRhaW5lckJ1aWxkZXIsXG4gIElUYWJzZXRDb250YWluZXJCdWlsZGVyLFxuICBJV2lkZ2V0QnVpbGRlcixcbiAgLy8gSW5oZXJpdGFuY2UgY29udGV4dFxuICBJbmhlcml0YW5jZUNvbnRleHQsXG4gIEluaGVyaXRlZFByb3BlcnRpZXMsXG4gIExhcmdlVGV4dEJveE9wdGlvbnMsXG4gIExheW91dEJ1aWxkZXJTdGF0ZSxcbiAgTG9va3VwQm94T3B0aW9ucyxcbiAgTnVtYmVyQm94T3B0aW9ucyxcbiAgUGFzc3dvcmRCb3hPcHRpb25zLFxuICBSaWNoVGV4dE9wdGlvbnMsXG4gIFNlbGVjdEJveE9wdGlvbnMsXG4gIFNlbGVjdGlvbkxpc3RPcHRpb25zLFxuICBUZXh0Qm94T3B0aW9ucyxcbiAgVG9nZ2xlU3dpdGNoT3B0aW9ucyxcbiAgV2lkZ2V0QnVpbGRlclN0YXRlLFxufSBmcm9tICcuL2xheW91dC1idWlsZGVyLnR5cGVzJztcblxuLy8jcmVnaW9uIC0tLS0gICBJbmhlcml0YW5jZSBVdGlsaXRpZXMgICAtLS0tXG5cbi8qKlxuICogUmVzb2x2ZXMgaW5oZXJpdGVkIHByb3BlcnRpZXMgZnJvbSBjb250ZXh0IGFuZCBsb2NhbCB2YWx1ZXNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUluaGVyaXRlZFByb3BlcnRpZXMoXG4gIGNvbnRleHQ6IEluaGVyaXRhbmNlQ29udGV4dCxcbiAgbG9jYWxWYWx1ZXM6IFBhcnRpYWw8SW5oZXJpdGFuY2VDb250ZXh0PiA9IHt9LFxuKTogSW5oZXJpdGVkUHJvcGVydGllcyB7XG4gIHJldHVybiB7XG4gICAgbW9kZTogbG9jYWxWYWx1ZXMubW9kZSA/PyBjb250ZXh0Lm1vZGUgPz8gJ2VkaXQnLFxuICAgIGRpc2FibGVkOiBsb2NhbFZhbHVlcy5kaXNhYmxlZCA/PyBjb250ZXh0LmRpc2FibGVkLFxuICAgIHJlYWRvbmx5OiBsb2NhbFZhbHVlcy5yZWFkb25seSA/PyBjb250ZXh0LnJlYWRvbmx5LFxuICAgIGRpcmVjdGlvbjogbG9jYWxWYWx1ZXMuZGlyZWN0aW9uID8/IGNvbnRleHQuZGlyZWN0aW9uLFxuICAgIHZpc2libGU6IGxvY2FsVmFsdWVzLnZpc2libGUgPz8gY29udGV4dC52aXNpYmxlLFxuICB9O1xufVxuXG4vKipcbiAqIE1lcmdlcyBpbmhlcml0YW5jZSBjb250ZXh0IHdpdGggbG9jYWwgb3ZlcnJpZGVzXG4gKi9cbmZ1bmN0aW9uIG1lcmdlSW5oZXJpdGFuY2VDb250ZXh0KFxuICBwYXJlbnRDb250ZXh0OiBJbmhlcml0YW5jZUNvbnRleHQsXG4gIGxvY2FsT3ZlcnJpZGVzOiBQYXJ0aWFsPEluaGVyaXRhbmNlQ29udGV4dD4gPSB7fSxcbik6IEluaGVyaXRhbmNlQ29udGV4dCB7XG4gIHJldHVybiB7XG4gICAgLi4ucGFyZW50Q29udGV4dCxcbiAgICAuLi5sb2NhbE92ZXJyaWRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSByYW5kb20gc3RyaW5nIGZvciBwYXRoL25hbWUgZ2VuZXJhdGlvblxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUlkKCk6IHN0cmluZyB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTUpICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE1KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBsYWJlbCB0byBhIHZhbGlkIHBhdGgvbmFtZVxuICovXG5mdW5jdGlvbiBsYWJlbFRvUGF0aChsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGxhYmVsXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvW15hLXowLTlcXHNdL2csICcnKSAvLyBSZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4gICAgLnJlcGxhY2UoL1xccysvZywgJ18nKSAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIHVuZGVyc2NvcmVzXG4gICAgLnN1YnN0cmluZygwLCA1MCk7IC8vIExpbWl0IGxlbmd0aFxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBwYXRoIGZvciB2YWx1ZSB3aWRnZXRzIGJhc2VkIG9uIGhpZXJhcmNoeVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZVZhbHVlV2lkZ2V0UGF0aCh3aWRnZXROYW1lPzogc3RyaW5nLCBmb3JtRmllbGROYW1lPzogc3RyaW5nLCBmb3JtRmllbGRMYWJlbD86IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFByaW9yaXR5OiB3aWRnZXQgbmFtZSAtPiBmb3JtIGZpZWxkIG5hbWUgLT4gZ2VuZXJhdGVkIGZyb20gbGFiZWwgLT4gcmFuZG9tXG4gIGlmICh3aWRnZXROYW1lKSB7XG4gICAgcmV0dXJuIHdpZGdldE5hbWU7XG4gIH1cblxuICBpZiAoZm9ybUZpZWxkTmFtZSkge1xuICAgIHJldHVybiBmb3JtRmllbGROYW1lO1xuICB9XG5cbiAgaWYgKGZvcm1GaWVsZExhYmVsKSB7XG4gICAgcmV0dXJuIGxhYmVsVG9QYXRoKGZvcm1GaWVsZExhYmVsKTtcbiAgfVxuXG4gIHJldHVybiBnZW5lcmF0ZVJhbmRvbUlkKCk7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFNlcnZpY2UgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGxheW91dCBidWlsZGVyXG4gICAqL1xuICBjcmVhdGUoKTogSUxheW91dEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgTGF5b3V0QnVpbGRlcih0aGlzLnBvcHVwU2VydmljZSk7XG4gIH1cbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgTGF5b3V0IEJ1aWxkZXIgSW1wbGVtZW50YXRpb24gICAtLS0tXG5cbi8qKlxuICogTWFpbiBsYXlvdXQgYnVpbGRlciAtIFNpbmdsZSBSZXNwb25zaWJpbGl0eTogTGF5b3V0IG9yY2hlc3RyYXRpb25cbiAqIE9wZW4vQ2xvc2VkOiBFeHRlbnNpYmxlIHRocm91Z2ggY29udGFpbmVyIGRlbGVnYXRlc1xuICovXG5jbGFzcyBMYXlvdXRCdWlsZGVyIGltcGxlbWVudHMgSUxheW91dEJ1aWxkZXIge1xuICBwcml2YXRlIHJvb3Q6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgY2hpbGRyZW46IFtdLFxuICAgIG1vZGU6ICdlZGl0JyxcbiAgICB0eXBlOiAnZmxleC1sYXlvdXQnLFxuICB9O1xuXG4gIHByaXZhdGUgaW5oZXJpdGFuY2VDb250ZXh0OiBJbmhlcml0YW5jZUNvbnRleHQgPSB7XG4gICAgbW9kZTogJ2VkaXQnLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9wdXBTZXJ2aWNlOiBBWFBvcHVwU2VydmljZSkge31cblxuICAvLyBQcmVkZWZpbmVkIGxheW91dCBjb250YWluZXJzIGF0IHJvb3QgbGV2ZWwgLSBkZWxlZ2F0ZSBwYXR0ZXJuIHJlcXVpcmVkXG4gIGdyaWQoZGVsZWdhdGU6IChjb250YWluZXI6IElHcmlkQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgR3JpZENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBjb250YWluZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICAvL3RoaXMuc3RhdGUuY2hpbGRyZW4hLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHRoaXMucm9vdCA9IGNvbnRhaW5lci5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxleChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXIge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBGbGV4Q29udGFpbmVyQnVpbGRlcigpO1xuICAgIGNvbnRhaW5lci53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMucm9vdC5jaGlsZHJlbiEucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwYW5lbChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSVBhbmVsQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgUGFuZWxDb250YWluZXJCdWlsZGVyKCk7XG4gICAgY29udGFpbmVyLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5yb290LmNoaWxkcmVuIS5wdXNoKGNvbnRhaW5lci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHBhZ2UoZGVsZWdhdGU6IChjb250YWluZXI6IElQYWdlQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgUGFnZUNvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBjb250YWluZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLnJvb3QuY2hpbGRyZW4hLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGFic2V0KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgVGFic2V0Q29udGFpbmVyQnVpbGRlcigpO1xuICAgIGNvbnRhaW5lci53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMucm9vdC5jaGlsZHJlbiEucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmaWVsZHNldChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgRmllbGRzZXRDb250YWluZXJCdWlsZGVyKCk7XG4gICAgY29udGFpbmVyLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5yb290LmNoaWxkcmVuIS5wdXNoKGNvbnRhaW5lci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRpYWxvZyhkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSURpYWxvZ0J1aWxkZXIpID0+IHZvaWQpOiBJRGlhbG9nQnVpbGRlciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IERpYWxvZ0NvbnRhaW5lckJ1aWxkZXIodGhpcy5wb3B1cFNlcnZpY2UpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbiAgfVxuXG4gIGZvcm1GaWVsZChsYWJlbDogc3RyaW5nLCBkZWxlZ2F0ZT86IChmaWVsZDogSUZvcm1GaWVsZEJ1aWxkZXIpID0+IHZvaWQpOiBJTGF5b3V0QnVpbGRlciB7XG4gICAgY29uc3QgZmllbGQgPSBuZXcgRm9ybUZpZWxkQnVpbGRlcihsYWJlbCk7XG4gICAgZmllbGQud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShmaWVsZCk7XG4gICAgfVxuICAgIHRoaXMucm9vdC5jaGlsZHJlbiEucHVzaChmaWVsZC5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGJ1aWxkKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnJvb3QudHlwZSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLnJvb3QuY2hpbGRyZW4sXG4gICAgICBtb2RlOiB0aGlzLnJvb3QubW9kZSxcbiAgICB9O1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbnRhaW5lciBCdWlsZGVyIEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4vKipcbiAqIEFic3RyYWN0IGJhc2UgY29udGFpbmVyIGJ1aWxkZXIgLSBPcGVuL0Nsb3NlZCBQcmluY2lwbGVcbiAqIFByb3ZpZGVzIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBhbGwgY29udGFpbmVyIHR5cGVzXG4gKi9cbmFic3RyYWN0IGNsYXNzIEJhc2VDb250YWluZXJCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIGNvbnRhaW5lclN0YXRlOiBMYXlvdXRCdWlsZGVyU3RhdGUgPSB7XG4gICAgbW9kZTogJ2VkaXQnLFxuICAgIHR5cGU6ICdmbGV4LWxheW91dCcsXG4gICAgY2hpbGRyZW46IFtdLFxuICB9O1xuXG4gIHByb3RlY3RlZCBpbmhlcml0YW5jZUNvbnRleHQ6IEluaGVyaXRhbmNlQ29udGV4dCA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRhaW5lclR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUudHlwZSA9IGNvbnRhaW5lclR5cGU7XG4gIH1cblxuICAvLyBCYXNlIG1ldGhvZHMgc2hhcmVkIGJ5IGFsbCBjb250YWluZXJzXG4gIHByb3RlY3RlZCBlbnN1cmVDaGlsZHJlbigpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuID0gdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiB8fCBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRXaWRnZXQ8VD4odHlwZTogc3RyaW5nLCBvcHRpb25zPzogVCk6IHRoaXMge1xuICAgIGNvbnN0IGNoaWxkID0gbmV3IFdpZGdldEJ1aWxkZXIoKTtcbiAgICBjaGlsZC50eXBlKHR5cGUpO1xuXG4gICAgLy8gRm9yIHZhbHVlIHdpZGdldHMsIGVuc3VyZSBwYXRoIGlzIHByb3ZpZGVkXG4gICAgY29uc3Qgd2lkZ2V0T3B0aW9ucyA9IG9wdGlvbnMgPz8ge307XG4gICAgY29uc3QgcGF0aCA9ICh3aWRnZXRPcHRpb25zIGFzIGFueSkucGF0aDtcbiAgICBjb25zdCBuYW1lID0gKHdpZGdldE9wdGlvbnMgYXMgYW55KS5uYW1lO1xuXG4gICAgaWYgKHRoaXMuaXNWYWx1ZVdpZGdldCh0eXBlKSAmJiAhcGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSB3aWRnZXQgJyR7dHlwZX0nIHJlcXVpcmVzIGEgJ3BhdGgnIHByb3BlcnR5YCk7XG4gICAgfVxuXG4gICAgLy8gU2V0IG5hbWUgYW5kIHBhdGggaW4gd2lkZ2V0IHN0YXRlLCBub3Qgb3B0aW9uc1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBjaGlsZC5uYW1lKG5hbWUpO1xuICAgIH1cbiAgICBpZiAocGF0aCkge1xuICAgICAgY2hpbGQucGF0aChwYXRoKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgbmFtZSBhbmQgcGF0aCBmcm9tIG9wdGlvbnNcbiAgICBjb25zdCB7IG5hbWU6IF8sIHBhdGg6IF9fLCAuLi5jbGVhbk9wdGlvbnMgfSA9IHdpZGdldE9wdGlvbnMgYXMgYW55O1xuXG4gICAgLy8gSU1QT1JUQU5UOiBBcHBseSBpbmhlcml0YW5jZSBjb250ZXh0IEJFRk9SRSBzZXR0aW5nIG9wdGlvbnNcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBpbmhlcml0ZWQgcHJvcGVydGllcyAocmVhZG9ubHksIGRpc2FibGVkLCBldGMuKSBhcmUgYXBwbGllZCBmaXJzdFxuICAgIC8vIFRoZW4gdXNlci1wcm92aWRlZCBvcHRpb25zIHdpbGwgb3ZlcnJpZGUgdGhlbSBpZiBleHBsaWNpdGx5IHNldFxuICAgIGNoaWxkLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGNoaWxkLm9wdGlvbnMoY2xlYW5PcHRpb25zKTtcblxuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNoaWxkLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ZhbHVlV2lkZ2V0KHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlV2lkZ2V0VHlwZXMgPSBbXG4gICAgICAndGV4dC1lZGl0b3InLFxuICAgICAgJ2xhcmdlLXRleHQtZWRpdG9yJyxcbiAgICAgICdyaWNoLXRleHQtZWRpdG9yJyxcbiAgICAgICdwYXNzd29yZC1lZGl0b3InLFxuICAgICAgJ251bWJlci1lZGl0b3InLFxuICAgICAgJ3NlbGVjdC1lZGl0b3InLFxuICAgICAgJ2xvb2t1cC1lZGl0b3InLFxuICAgICAgJ3NlbGVjdGlvbi1saXN0LWVkaXRvcicsXG4gICAgICAnZGF0ZS10aW1lLWVkaXRvcicsXG4gICAgICAndG9nZ2xlLWVkaXRvcicsXG4gICAgICAnY29sb3ItZWRpdG9yJyxcbiAgICBdO1xuICAgIHJldHVybiB2YWx1ZVdpZGdldFR5cGVzLmluY2x1ZGVzKHR5cGUpO1xuICB9XG5cbiAgYnVpbGQoKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgY29uc3QgcmVzdWx0OiBBWFBXaWRnZXROb2RlID0ge1xuICAgICAgdHlwZTogdGhpcy5jb250YWluZXJTdGF0ZS50eXBlLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4sXG4gICAgICBvcHRpb25zOiB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMsXG4gICAgICBtb2RlOiB0aGlzLmNvbnRhaW5lclN0YXRlLm1vZGUsXG4gICAgICB2aXNpYmxlOiB0aGlzLmNvbnRhaW5lclN0YXRlLnZpc2libGUsXG4gICAgfTtcblxuICAgIC8vIEFkZCBuYW1lIHdpdGggX2Zvcm1fZmllbGQgc3VmZml4IGZvciBmb3JtIGZpZWxkc1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclN0YXRlLnR5cGUgPT09ICdmb3JtLWZpZWxkJykge1xuICAgICAgaWYgKHRoaXMuY29udGFpbmVyU3RhdGUubmFtZSkge1xuICAgICAgICByZXN1bHQubmFtZSA9IHRoaXMuY29udGFpbmVyU3RhdGUubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zPy5bJ2xhYmVsJ10pIHtcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSBsYWJlbFRvUGF0aCh0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnNbJ2xhYmVsJ10pICsgJ19mb3JtX2ZpZWxkJztcbiAgICAgIH1cbiAgICAgIC8vIEZvcm0gZmllbGRzIGRvbid0IGhhdmUgcGF0aFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlciBjb250YWluZXJzIGNhbiBoYXZlIG5hbWUgYW5kIHBhdGhcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lclN0YXRlLm5hbWUpIHtcbiAgICAgICAgcmVzdWx0Lm5hbWUgPSB0aGlzLmNvbnRhaW5lclN0YXRlLm5hbWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jb250YWluZXJTdGF0ZS5wYXRoKSB7XG4gICAgICAgIHJlc3VsdC5wYXRoID0gdGhpcy5jb250YWluZXJTdGF0ZS5wYXRoO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udGFpbmVyU3RhdGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0LmRlZmF1bHRWYWx1ZSA9IHRoaXMuY29udGFpbmVyU3RhdGUuZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNvbnRhaW5lciBidWlsZGVyIG1peGluIC0gSW50ZXJmYWNlIFNlZ3JlZ2F0aW9uIFByaW5jaXBsZVxuICogUHJvdmlkZXMgY29tbW9uIGNvbnRhaW5lciBvcGVyYXRpb25zXG4gKi9cbmFic3RyYWN0IGNsYXNzIEJhc2VDb250YWluZXJNaXhpbjxUQ29udGFpbmVyPiBleHRlbmRzIEJhc2VDb250YWluZXJCdWlsZGVyIHtcbiAgbmFtZShuYW1lOiBzdHJpbmcpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm5hbWUgPSBuYW1lO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuICBwYXRoKHBhdGg6IHN0cmluZyk6IFRDb250YWluZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUucGF0aCA9IHBhdGg7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgbW9kZShtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlKTogVENvbnRhaW5lciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5tb2RlID0gbW9kZTtcbiAgICB0aGlzLmluaGVyaXRhbmNlQ29udGV4dC5tb2RlID0gbW9kZTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICB2aXNpYmxlKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IFRDb250YWluZXIge1xuICAgIGlmICghdGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zKSB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnNbJ3Zpc2libGUnXSA9IGNvbmRpdGlvbjtcbiAgICB0aGlzLmluaGVyaXRhbmNlQ29udGV4dC52aXNpYmxlID0gY29uZGl0aW9uO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIGRpc2FibGVkKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IFRDb250YWluZXIge1xuICAgIGlmICghdGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zKSB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnNbJ2Rpc2FibGVkJ10gPSBjb25kaXRpb247XG4gICAgdGhpcy5pbmhlcml0YW5jZUNvbnRleHQuZGlzYWJsZWQgPSBjb25kaXRpb247XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgcmVhZG9ubHkoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogVENvbnRhaW5lciB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMpIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9uc1sncmVhZG9ubHknXSA9IGNvbmRpdGlvbjtcbiAgICB0aGlzLmluaGVyaXRhbmNlQ29udGV4dC5yZWFkb25seSA9IGNvbmRpdGlvbjtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBkaXJlY3Rpb24oZGlyZWN0aW9uOiAncnRsJyB8ICdsdHInKTogVENvbnRhaW5lciB7XG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMpIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHt9O1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9uc1snZGlyZWN0aW9uJ10gPSBkaXJlY3Rpb247XG4gICAgdGhpcy5pbmhlcml0YW5jZUNvbnRleHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIEluaGVyaXRhbmNlIGNvbnRleHQgbWV0aG9kc1xuICB3aXRoSW5oZXJpdGFuY2VDb250ZXh0KGNvbnRleHQ6IEluaGVyaXRhbmNlQ29udGV4dCk6IFRDb250YWluZXIge1xuICAgIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0ID0gbWVyZ2VJbmhlcml0YW5jZUNvbnRleHQoY29udGV4dCk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgZ2V0SW5oZXJpdGFuY2VDb250ZXh0KCk6IEluaGVyaXRhbmNlQ29udGV4dCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5pbmhlcml0YW5jZUNvbnRleHQgfTtcbiAgfVxufVxuXG4vKipcbiAqIExheW91dCBjb250YWluZXIgbWl4aW4gLSBJbnRlcmZhY2UgU2VncmVnYXRpb24gUHJpbmNpcGxlXG4gKiBQcm92aWRlcyBsYXlvdXQtc3BlY2lmaWMgb3BlcmF0aW9uc1xuICovXG5hYnN0cmFjdCBjbGFzcyBMYXlvdXRDb250YWluZXJNaXhpbjxUQ29udGFpbmVyPiBleHRlbmRzIEJhc2VDb250YWluZXJNaXhpbjxUQ29udGFpbmVyPiB7XG4gIGxheW91dCh2YWx1ZTogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4gfCBudW1iZXIpOiBUQ29udGFpbmVyIHtcbiAgICAvLyBNYXAgbGF5b3V0IGludGVudCB0byBncmlkIGl0ZW0gc2l6aW5nIHNvIGNvbnRhaW5lcnMgbGlrZSBgZm9ybS1maWVsZGBcbiAgICAvLyBjYW4gc3BhbiBtdWx0aXBsZSBjb2x1bW5zIGluc2lkZSBncmlkL2ZpZWxkc2V0IGxheW91dHMuXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMpIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIC8vIERpcmVjdCBudW1lcmljIHNob3J0aGFuZCDihpIgY29sU3BhblxuICAgICAgKHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyBhcyBhbnkpLmNvbFNwYW4gPSB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBUcnkgdG8gZXh0cmFjdCBhIHJlYXNvbmFibGUgY29sU3BhbiBmcm9tIGJyZWFrcG9pbnQgcG9zaXRpb25zXG4gICAgICBjb25zdCBwb3NpdGlvbnMgPSAodmFsdWUgYXMgYW55KS5wb3NpdGlvbnMgYXMgYW55O1xuICAgICAgaWYgKHBvc2l0aW9ucykge1xuICAgICAgICBjb25zdCBjb2xTcGFuID1cbiAgICAgICAgICBwb3NpdGlvbnM/LmxnPy5jb2xTcGFuID8/XG4gICAgICAgICAgcG9zaXRpb25zPy54bD8uY29sU3BhbiA/P1xuICAgICAgICAgIHBvc2l0aW9ucz8ueHhsPy5jb2xTcGFuID8/XG4gICAgICAgICAgcG9zaXRpb25zPy5tZD8uY29sU3BhbiA/P1xuICAgICAgICAgIHBvc2l0aW9ucz8uc20/LmNvbFNwYW47XG4gICAgICAgIGlmIChjb2xTcGFuICE9IG51bGwpIHtcbiAgICAgICAgICAodGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zIGFzIGFueSkuY29sU3BhbiA9IGNvbFNwYW47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBDaGlsZCBjb250YWluZXIgbWl4aW4gLSBJbnRlcmZhY2UgU2VncmVnYXRpb24gUHJpbmNpcGxlXG4gKiBQcm92aWRlcyBjaGlsZCBjb250YWluZXIgbWFuYWdlbWVudFxuICovXG5hYnN0cmFjdCBjbGFzcyBDaGlsZENvbnRhaW5lck1peGluPFRDb250YWluZXI+IGV4dGVuZHMgTGF5b3V0Q29udGFpbmVyTWl4aW48VENvbnRhaW5lcj4ge1xuICBncmlkKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgR3JpZENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBjb250YWluZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgZmxleChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IEZsZXhDb250YWluZXJCdWlsZGVyKCk7XG4gICAgY29udGFpbmVyLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5lbnN1cmVDaGlsZHJlbigpO1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4hLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIHBhbmVsKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJUGFuZWxDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IFBhbmVsQ29udGFpbmVyQnVpbGRlcigpO1xuICAgIGNvbnRhaW5lci53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNvbnRhaW5lci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBwYWdlKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgUGFnZUNvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICBjb250YWluZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgdGFic2V0KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IFRDb250YWluZXIge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBUYWJzZXRDb250YWluZXJCdWlsZGVyKCk7XG4gICAgY29udGFpbmVyLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5lbnN1cmVDaGlsZHJlbigpO1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4hLnB1c2goY29udGFpbmVyLmJ1aWxkKCkpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIGZpZWxkc2V0KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lciB7XG4gICAgY29uc3QgY29udGFpbmVyID0gbmV3IEZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcigpO1xuICAgIGNvbnRhaW5lci53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGNvbnRhaW5lcik7XG4gICAgfVxuICAgIHRoaXMuZW5zdXJlQ2hpbGRyZW4oKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKGNvbnRhaW5lci5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBkaWFsb2coZGVsZWdhdGU6IChjb250YWluZXI6IElEaWFsb2dCdWlsZGVyKSA9PiB2b2lkKTogSURpYWxvZ0J1aWxkZXIge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG5ldyBEaWFsb2dDb250YWluZXJCdWlsZGVyKCk7IC8vIFdpbGwgdXNlIGluamVjdCgpIGZhbGxiYWNrXG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG5cbiAgZm9ybUZpZWxkKGxhYmVsOiBzdHJpbmcsIGRlbGVnYXRlPzogKGZpZWxkOiBJRm9ybUZpZWxkQnVpbGRlcikgPT4gdm9pZCk6IFRDb250YWluZXIge1xuICAgIGNvbnN0IGZpZWxkID0gbmV3IEZvcm1GaWVsZEJ1aWxkZXIobGFiZWwpO1xuICAgIGZpZWxkLndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgZGVsZWdhdGUoZmllbGQpO1xuICAgIH1cbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChmaWVsZC5idWlsZCgpKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBXaWRnZXQgY29udGFpbmVyIG1peGluIC0gSW50ZXJmYWNlIFNlZ3JlZ2F0aW9uIFByaW5jaXBsZVxuICogUHJvdmlkZXMgd2lkZ2V0IGNyZWF0aW9uIG9wZXJhdGlvbnNcbiAqL1xuYWJzdHJhY3QgY2xhc3MgV2lkZ2V0Q29udGFpbmVyTWl4aW48VENvbnRhaW5lcj4gZXh0ZW5kcyBDaGlsZENvbnRhaW5lck1peGluPFRDb250YWluZXI+IHtcbiAgdGV4dEJveChvcHRpb25zPzogVGV4dEJveE9wdGlvbnMpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmFkZFdpZGdldCgndGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBsYXJnZVRleHRCb3gob3B0aW9ucz86IExhcmdlVGV4dEJveE9wdGlvbnMpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmFkZFdpZGdldCgnbGFyZ2UtdGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICByaWNoVGV4dChvcHRpb25zPzogUmljaFRleHRPcHRpb25zKTogVENvbnRhaW5lciB7XG4gICAgdGhpcy5hZGRXaWRnZXQoJ3JpY2gtdGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogVENvbnRhaW5lciB7XG4gICAgdGhpcy5hZGRXaWRnZXQoJ3Bhc3N3b3JkLWVkaXRvcicsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIG51bWJlckJveChvcHRpb25zPzogTnVtYmVyQm94T3B0aW9ucyk6IFRDb250YWluZXIge1xuICAgIHRoaXMuYWRkV2lkZ2V0KCdudW1iZXItZWRpdG9yJywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgc2VsZWN0Qm94KG9wdGlvbnM6IFNlbGVjdEJveE9wdGlvbnMpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmFkZFdpZGdldCgnc2VsZWN0LWVkaXRvcicsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIGxvb2t1cEJveChvcHRpb25zOiBMb29rdXBCb3hPcHRpb25zKTogVENvbnRhaW5lciB7XG4gICAgdGhpcy5hZGRXaWRnZXQoJ2xvb2t1cC1lZGl0b3InLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBzZWxlY3Rpb25MaXN0KG9wdGlvbnM6IFNlbGVjdGlvbkxpc3RPcHRpb25zKTogVENvbnRhaW5lciB7XG4gICAgdGhpcy5hZGRXaWRnZXQoJ3NlbGVjdGlvbi1saXN0LWVkaXRvcicsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIGRhdGVUaW1lQm94KG9wdGlvbnM/OiBEYXRlVGltZUJveE9wdGlvbnMpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmFkZFdpZGdldCgnZGF0ZS10aW1lLWVkaXRvcicsIG9wdGlvbnMpO1xuICAgIHJldHVybiB0aGlzIGFzIHVua25vd24gYXMgVENvbnRhaW5lcjtcbiAgfVxuXG4gIHRvZ2dsZVN3aXRjaChvcHRpb25zPzogVG9nZ2xlU3dpdGNoT3B0aW9ucyk6IFRDb250YWluZXIge1xuICAgIHRoaXMuYWRkV2lkZ2V0KCd0b2dnbGUtZWRpdG9yJywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgY29sb3JCb3gob3B0aW9ucz86IENvbG9yQm94T3B0aW9ucyk6IFRDb250YWluZXIge1xuICAgIHRoaXMuYWRkV2lkZ2V0KCdjb2xvci1lZGl0b3InLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cblxuICBsaXN0KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJTGlzdFdpZGdldEJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBuZXcgTGlzdFdpZGdldEJ1aWxkZXIoKTtcbiAgICBjb250YWluZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICBkZWxlZ2F0ZShjb250YWluZXIpO1xuICAgIH1cbiAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5jaGlsZHJlbiEucHVzaChjb250YWluZXIuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXMgYXMgdW5rbm93biBhcyBUQ29udGFpbmVyO1xuICB9XG5cbiAgY3VzdG9tV2lkZ2V0PFQ+KHR5cGU6IHN0cmluZywgb3B0aW9ucz86IFQpOiBUQ29udGFpbmVyIHtcbiAgICB0aGlzLmFkZFdpZGdldDxUPih0eXBlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcyBhcyB1bmtub3duIGFzIFRDb250YWluZXI7XG4gIH1cbn1cblxuLyoqXG4gKiBGbGV4IENvbnRhaW5lciBCdWlsZGVyIC0gTGlza292IFN1YnN0aXR1dGlvbiBQcmluY2lwbGVcbiAqIEV4dGVuZHMgV2lkZ2V0Q29udGFpbmVyTWl4aW4gdG8gaW5oZXJpdCBhbGwgY29tbW9uIGZ1bmN0aW9uYWxpdHlcbiAqL1xuY2xhc3MgRmxleENvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbjxJRmxleENvbnRhaW5lckJ1aWxkZXI+IGltcGxlbWVudHMgSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2ZsZXgtbGF5b3V0Jyk7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUEZsZXhDb250YWluZXJPcHRpb25zKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMgPSB7IC4uLnRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gSW5kaXZpZHVhbCBmbHVlbnQgbWV0aG9kcyBmb3IgRmxleFxuICBzZXREaXJlY3Rpb24oZGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nIHwgJ3Jvdy1yZXZlcnNlJyB8ICdjb2x1bW4tcmV2ZXJzZScpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBmbGV4RGlyZWN0aW9uOiBkaXJlY3Rpb24gfSk7XG4gIH1cblxuICBzZXRXcmFwKHdyYXA6ICdub3dyYXAnIHwgJ3dyYXAnIHwgJ3dyYXAtcmV2ZXJzZScpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBmbGV4V3JhcDogd3JhcCB9KTtcbiAgfVxuXG4gIHNldEp1c3RpZnlDb250ZW50KFxuICAgIGp1c3RpZnk6ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1iZXR3ZWVuJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWV2ZW5seScsXG4gICk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGp1c3RpZnlDb250ZW50OiBqdXN0aWZ5IH0pO1xuICB9XG5cbiAgc2V0QWxpZ25JdGVtcyhhbGlnbjogJ2ZsZXgtc3RhcnQnIHwgJ2ZsZXgtZW5kJyB8ICdjZW50ZXInIHwgJ2Jhc2VsaW5lJyB8ICdzdHJldGNoJyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGFsaWduSXRlbXM6IGFsaWduIH0pO1xuICB9XG5cbiAgc2V0R2FwKGdhcDogc3RyaW5nKTogSUZsZXhDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ2FwIH0pO1xuICB9XG5cbiAgc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yIH0pO1xuICB9XG5cbiAgc2V0UGFkZGluZyhwYWRkaW5nOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzcGFjaW5nOiB7IHBhZGRpbmcgfSB9KTtcbiAgfVxuXG4gIHNldE1hcmdpbihtYXJnaW46IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNwYWNpbmc6IHsgbWFyZ2luIH0gfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBHcmlkIENvbnRhaW5lciBCdWlsZGVyIC0gTGlza292IFN1YnN0aXR1dGlvbiBQcmluY2lwbGVcbiAqIEV4dGVuZHMgV2lkZ2V0Q29udGFpbmVyTWl4aW4gdG8gaW5oZXJpdCBhbGwgY29tbW9uIGZ1bmN0aW9uYWxpdHlcbiAqL1xuY2xhc3MgR3JpZENvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbjxJR3JpZENvbnRhaW5lckJ1aWxkZXI+IGltcGxlbWVudHMgSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2dyaWQtbGF5b3V0Jyk7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUEdyaWRDb250YWluZXJPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMgPSB7IC4uLnRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gSW5kaXZpZHVhbCBmbHVlbnQgbWV0aG9kcyBmb3IgR3JpZFxuICBzZXRDb2x1bW5zKGNvbHVtbnM6IG51bWJlcik6IElHcmlkQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGdyaWQ6IHsgZGVmYXVsdDogeyBjb2x1bW5zIH0gfSB9KTtcbiAgfVxuXG4gIHNldFJvd3Mocm93czogbnVtYmVyKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ3JpZDogeyBkZWZhdWx0OiB7IHJvd3MgfSB9IH0pO1xuICB9XG5cbiAgc2V0R2FwKGdhcDogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ3JpZDogeyBkZWZhdWx0OiB7IGdhcCB9IH0gfSk7XG4gIH1cblxuICBzZXRKdXN0aWZ5SXRlbXMoanVzdGlmeTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgfCAnc3RyZXRjaCcpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBncmlkOiB7IGRlZmF1bHQ6IHsganVzdGlmeUl0ZW1zOiBqdXN0aWZ5IH0gfSB9KTtcbiAgfVxuXG4gIHNldEFsaWduSXRlbXMoYWxpZ246ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInIHwgJ3N0cmV0Y2gnKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ3JpZDogeyBkZWZhdWx0OiB7IGFsaWduSXRlbXM6IGFsaWduIH0gfSB9KTtcbiAgfVxuXG4gIHNldEF1dG9GbG93KGZsb3c6ICdyb3cnIHwgJ2NvbHVtbicgfCAncm93IGRlbnNlJyB8ICdjb2x1bW4gZGVuc2UnKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZ3JpZDogeyBkZWZhdWx0OiB7IGF1dG9GbG93OiBmbG93IH0gfSB9KTtcbiAgfVxuXG4gIHNldEJhY2tncm91bmRDb2xvcihjb2xvcjogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgYmFja2dyb3VuZENvbG9yOiBjb2xvciB9KTtcbiAgfVxuXG4gIHNldFBhZGRpbmcocGFkZGluZzogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgc3BhY2luZzogeyBwYWRkaW5nIH0gfSk7XG4gIH1cblxuICBzZXRNYXJnaW4obWFyZ2luOiBzdHJpbmcpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzcGFjaW5nOiB7IG1hcmdpbiB9IH0pO1xuICB9XG59XG5cbi8qKlxuICogUGFuZWwgQ29udGFpbmVyIEJ1aWxkZXIgLSBMaXNrb3YgU3Vic3RpdHV0aW9uIFByaW5jaXBsZVxuICogRXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbiB0byBpbmhlcml0IGFsbCBjb21tb24gZnVuY3Rpb25hbGl0eVxuICovXG5jbGFzcyBQYW5lbENvbnRhaW5lckJ1aWxkZXIgZXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbjxJUGFuZWxDb250YWluZXJCdWlsZGVyPiBpbXBsZW1lbnRzIElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigncGFuZWwtbGF5b3V0Jyk7XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUFBhbmVsQ29udGFpbmVyT3B0aW9ucyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBQYW5lbFxuICBzZXRDYXB0aW9uKGNhcHRpb246IHN0cmluZyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBjYXB0aW9uIH0pO1xuICB9XG5cbiAgc2V0SWNvbihpY29uOiBzdHJpbmcpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgaWNvbiB9KTtcbiAgfVxuXG4gIHNldExvb2sobG9vazogJ3NvbGlkJyB8ICdmaWxsJyB8ICdvdXRsaW5lJyB8ICdmbGF0JyB8ICdub25lJyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBsb29rIH0pO1xuICB9XG5cbiAgc2V0U2hvd0hlYWRlcihzaG93OiBib29sZWFuKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNob3dIZWFkZXI6IHNob3cgfSk7XG4gIH1cblxuICBzZXRDb2xsYXBzZWQoY29sbGFwc2VkOiBib29sZWFuKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNvbGxhcHNlZCB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFBhZ2UgQ29udGFpbmVyIEJ1aWxkZXIgLSBMaXNrb3YgU3Vic3RpdHV0aW9uIFByaW5jaXBsZVxuICogRXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbiB0byBpbmhlcml0IGFsbCBjb21tb24gZnVuY3Rpb25hbGl0eVxuICovXG5jbGFzcyBQYWdlQ29udGFpbmVyQnVpbGRlciBleHRlbmRzIFdpZGdldENvbnRhaW5lck1peGluPElQYWdlQ29udGFpbmVyQnVpbGRlcj4gaW1wbGVtZW50cyBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigncGFnZS1sYXlvdXQnKTtcbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQUGFnZUNvbnRhaW5lck9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBQYWdlXG4gIHNldEJhY2tncm91bmRDb2xvcihjb2xvcjogc3RyaW5nKTogSVBhZ2VDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgYmFja2dyb3VuZENvbG9yOiBjb2xvciB9KTtcbiAgfVxuXG4gIHNldFRoZW1lKHRoZW1lOiB7IGlkOiBzdHJpbmcgfSk6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0SGFzSGVhZGVyKGhhc0hlYWRlcjogYm9vbGVhbik6IElQYWdlQ29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGhhc0hlYWRlciB9KTtcbiAgfVxuXG4gIHNldEhhc0Zvb3RlcihoYXNGb290ZXI6IGJvb2xlYW4pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBoYXNGb290ZXIgfSk7XG4gIH1cblxuICBzZXREaXJlY3Rpb24oZGlyZWN0aW9uOiBzdHJpbmcpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBkaXJlY3Rpb24gfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUYWJzZXQgQ29udGFpbmVyIEJ1aWxkZXIgLSBMaXNrb3YgU3Vic3RpdHV0aW9uIFByaW5jaXBsZVxuICogRXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbiB0byBpbmhlcml0IGFsbCBjb21tb24gZnVuY3Rpb25hbGl0eVxuICovXG5jbGFzcyBUYWJzZXRDb250YWluZXJCdWlsZGVyIGV4dGVuZHMgV2lkZ2V0Q29udGFpbmVyTWl4aW48SVRhYnNldENvbnRhaW5lckJ1aWxkZXI+IGltcGxlbWVudHMgSVRhYnNldENvbnRhaW5lckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigndGFic2V0LWxheW91dCcpO1xuICB9XG5cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBUYWJzZXRDb250YWluZXJPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBUYWJzZXRcbiAgc2V0TG9vayhsb29rOiAnd2l0aC1saW5lJyB8ICd3aXRoLWxpbmUtY29sb3InIHwgJ3BpbGxzJyB8ICdwaWxscy1jb2xvcicpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGxvb2sgfSk7XG4gIH1cblxuICBzZXRPcmllbnRhdGlvbihvcmllbnRhdGlvbjogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyk6IElUYWJzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgb3JpZW50YXRpb24gfSk7XG4gIH1cblxuICBzZXRBY3RpdmVJbmRleChpbmRleDogbnVtYmVyKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBhY3RpdmVJbmRleDogaW5kZXggfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtIEZpZWxkIEJ1aWxkZXIgLSBMaXNrb3YgU3Vic3RpdHV0aW9uIFByaW5jaXBsZVxuICogQ2FuIG9ubHkgY29udGFpbiBPTkUgd2lkZ2V0IHdpdGggYXV0b21hdGljIHBhdGggZ2VuZXJhdGlvblxuICovXG5jbGFzcyBGb3JtRmllbGRCdWlsZGVyIGV4dGVuZHMgTGF5b3V0Q29udGFpbmVyTWl4aW48SUZvcm1GaWVsZEJ1aWxkZXI+IGltcGxlbWVudHMgSUZvcm1GaWVsZEJ1aWxkZXIge1xuICBwcml2YXRlIGhhc1dpZGdldCA9IGZhbHNlO1xuICBwcml2YXRlIGNoaWxkV2lkZ2V0PzogV2lkZ2V0QnVpbGRlcjsgLy8gU3RvcmUgdGhlIHdpZGdldCBidWlsZGVyLCBub3QgdGhlIGJ1aWx0IHdpZGdldFxuXG4gIGNvbnN0cnVjdG9yKGxhYmVsOiBzdHJpbmcpIHtcbiAgICBzdXBlcignZm9ybS1maWVsZCcpO1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgbGFiZWwsIHNob3dMYWJlbDogdHJ1ZSB9O1xuICB9XG5cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBGb3JtRmllbGRPcHRpb25zKTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRMYWJlbChsYWJlbDogc3RyaW5nKTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBsYWJlbCB9KTtcbiAgfVxuXG4gIHNldFNob3dMYWJlbChzaG93TGFiZWw6IGJvb2xlYW4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNob3dMYWJlbCB9KTtcbiAgfVxuXG4gIC8vIFNpbmdsZSB3aWRnZXQgbWV0aG9kcyB3aXRoIGF1dG9tYXRpYyBwYXRoIGdlbmVyYXRpb25cbiAgcHJpdmF0ZSBhZGRTaW5nbGVXaWRnZXQ8VD4odHlwZTogc3RyaW5nLCBvcHRpb25zPzogT21pdDxULCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIGlmICh0aGlzLmhhc1dpZGdldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3JtIGZpZWxkIGNhbiBvbmx5IGNvbnRhaW4gb25lIHdpZGdldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1GaWVsZE5hbWUgPSB0aGlzLmNvbnRhaW5lclN0YXRlLm5hbWU7XG4gICAgY29uc3QgZm9ybUZpZWxkUGF0aCA9IHRoaXMuY29udGFpbmVyU3RhdGUucGF0aDsgLy8gR2V0IGV4cGxpY2l0IHBhdGggZnJvbSBmb3JtIGZpZWxkXG4gICAgY29uc3QgZm9ybUZpZWxkTGFiZWwgPSB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnM/LlsnbGFiZWwnXTtcbiAgICBjb25zdCB3aWRnZXROYW1lID0gKG9wdGlvbnMgYXMgYW55KT8ubmFtZTtcblxuICAgIC8vIEdlbmVyYXRlIHdpZGdldCBwYXRoOiBleHBsaWNpdCBwYXRoIC0+IHdpZGdldCBuYW1lIC0+IGZvcm0gZmllbGQgbmFtZSAtPiBsYWJlbCAtPiByYW5kb21cbiAgICBsZXQgd2lkZ2V0UGF0aDogc3RyaW5nO1xuICAgIGlmIChmb3JtRmllbGRQYXRoKSB7XG4gICAgICB3aWRnZXRQYXRoID0gZm9ybUZpZWxkUGF0aDsgLy8gVXNlIGV4cGxpY2l0IGZvcm0gZmllbGQgcGF0aCBmaXJzdFxuICAgIH0gZWxzZSBpZiAod2lkZ2V0TmFtZSkge1xuICAgICAgd2lkZ2V0UGF0aCA9IHdpZGdldE5hbWU7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGROYW1lKSB7XG4gICAgICB3aWRnZXRQYXRoID0gZm9ybUZpZWxkTmFtZTsgLy8gVXNlIGZvcm0gZmllbGQgbmFtZSBhcyBkZWZhdWx0IHBhdGhcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZExhYmVsKSB7XG4gICAgICB3aWRnZXRQYXRoID0gbGFiZWxUb1BhdGgoZm9ybUZpZWxkTGFiZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aWRnZXRQYXRoID0gZ2VuZXJhdGVSYW5kb21JZCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmFsTmFtZSA9IHdpZGdldE5hbWUgfHwgZm9ybUZpZWxkTmFtZSB8fCB3aWRnZXRQYXRoO1xuXG4gICAgY29uc3QgY2hpbGQgPSBuZXcgV2lkZ2V0QnVpbGRlcigpO1xuICAgIGNoaWxkLnR5cGUodHlwZSk7XG4gICAgY2hpbGQubmFtZShmaW5hbE5hbWUpO1xuICAgIGNoaWxkLnBhdGgod2lkZ2V0UGF0aCk7XG5cbiAgICAvLyBSZW1vdmUgbmFtZSBmcm9tIG9wdGlvbnMgc2luY2UgaXQncyBub3cgaW4gc3RhdGVcbiAgICBjb25zdCB7IG5hbWU6IF8sIC4uLmNsZWFuT3B0aW9ucyB9ID0gKG9wdGlvbnMgfHwge30pIGFzIGFueTtcbiAgICBjaGlsZC53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBjaGlsZC5vcHRpb25zKGNsZWFuT3B0aW9ucyk7XG5cbiAgICAvLyBJTVBPUlRBTlQ6IFN0b3JlIHRoZSB3aWRnZXQgYnVpbGRlciwgZG9uJ3QgYnVpbGQgaXQgeWV0IVxuICAgIC8vIFRoaXMgYWxsb3dzIHByb3BlcnRpZXMgc2V0IGFmdGVyIHRoaXMgbWV0aG9kIChsaWtlIGRpc2FibGVkLCByZWFkb25seSkgdG8gYmUgYXBwbGllZFxuICAgIHRoaXMuY2hpbGRXaWRnZXQgPSBjaGlsZDtcbiAgICB0aGlzLmhhc1dpZGdldCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRleHRCb3gob3B0aW9ucz86IE9taXQ8VGV4dEJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlV2lkZ2V0PFRleHRCb3hPcHRpb25zPigndGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogT21pdDxMYXJnZVRleHRCb3hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZVdpZGdldDxMYXJnZVRleHRCb3hPcHRpb25zPignbGFyZ2UtdGV4dC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIHJpY2hUZXh0KG9wdGlvbnM/OiBPbWl0PFJpY2hUZXh0T3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGRTaW5nbGVXaWRnZXQ8UmljaFRleHRPcHRpb25zPigncmljaC10ZXh0LWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgcGFzc3dvcmRCb3gob3B0aW9ucz86IE9taXQ8UGFzc3dvcmRCb3hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZVdpZGdldDxQYXNzd29yZEJveE9wdGlvbnM+KCdwYXNzd29yZC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIG51bWJlckJveChvcHRpb25zPzogT21pdDxOdW1iZXJCb3hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZVdpZGdldDxOdW1iZXJCb3hPcHRpb25zPignbnVtYmVyLWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgc2VsZWN0Qm94KG9wdGlvbnM6IE9taXQ8U2VsZWN0Qm94T3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5hZGRTaW5nbGVXaWRnZXQ8U2VsZWN0Qm94T3B0aW9ucz4oJ3NlbGVjdC1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGxvb2t1cEJveChvcHRpb25zOiBPbWl0PExvb2t1cEJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlV2lkZ2V0PExvb2t1cEJveE9wdGlvbnM+KCdsb29rdXAtZWRpdG9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBzZWxlY3Rpb25MaXN0KG9wdGlvbnM6IE9taXQ8U2VsZWN0aW9uTGlzdE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlV2lkZ2V0PFNlbGVjdGlvbkxpc3RPcHRpb25zPignc2VsZWN0aW9uLWxpc3QtZWRpdG9yJywgb3B0aW9ucyk7XG4gIH1cblxuICBkYXRlVGltZUJveChvcHRpb25zPzogT21pdDxEYXRlVGltZUJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlV2lkZ2V0PERhdGVUaW1lQm94T3B0aW9ucz4oJ2RhdGUtdGltZS1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIHRvZ2dsZVN3aXRjaChvcHRpb25zPzogT21pdDxUb2dnbGVTd2l0Y2hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZVdpZGdldDxUb2dnbGVTd2l0Y2hPcHRpb25zPigndG9nZ2xlLWVkaXRvcicsIG9wdGlvbnMpO1xuICB9XG5cbiAgY29sb3JCb3gob3B0aW9ucz86IE9taXQ8Q29sb3JCb3hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZVdpZGdldDxDb2xvckJveE9wdGlvbnM+KCdjb2xvci1lZGl0b3InLCBvcHRpb25zKTtcbiAgfVxuXG4gIGN1c3RvbVdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PFQsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlV2lkZ2V0PFQ+KHR5cGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgcHJvcGVydHkgc2V0dGVycyB0byBwcm9wYWdhdGUgY2hhbmdlcyB0byBjaGlsZCB3aWRnZXRcbiAgb3ZlcnJpZGUgZGlzYWJsZWQoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHN1cGVyLmRpc2FibGVkKGNvbmRpdGlvbik7XG4gICAgaWYgKHRoaXMuY2hpbGRXaWRnZXQpIHtcbiAgICAgIHRoaXMuY2hpbGRXaWRnZXQud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHN1cGVyLnJlYWRvbmx5KGNvbmRpdGlvbik7XG4gICAgaWYgKHRoaXMuY2hpbGRXaWRnZXQpIHtcbiAgICAgIHRoaXMuY2hpbGRXaWRnZXQud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb3ZlcnJpZGUgdmlzaWJsZShjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgc3VwZXIudmlzaWJsZShjb25kaXRpb24pO1xuICAgIGlmICh0aGlzLmNoaWxkV2lkZ2V0KSB7XG4gICAgICB0aGlzLmNoaWxkV2lkZ2V0LndpdGhJbmhlcml0YW5jZUNvbnRleHQodGhpcy5pbmhlcml0YW5jZUNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG92ZXJyaWRlIGRpcmVjdGlvbihkaXJlY3Rpb246ICdydGwnIHwgJ2x0cicpOiBJRm9ybUZpZWxkQnVpbGRlciB7XG4gICAgc3VwZXIuZGlyZWN0aW9uKGRpcmVjdGlvbik7XG4gICAgaWYgKHRoaXMuY2hpbGRXaWRnZXQpIHtcbiAgICAgIHRoaXMuY2hpbGRXaWRnZXQud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb3ZlcnJpZGUgbW9kZShtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlKTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIHN1cGVyLm1vZGUobW9kZSk7XG4gICAgaWYgKHRoaXMuY2hpbGRXaWRnZXQpIHtcbiAgICAgIHRoaXMuY2hpbGRXaWRnZXQud2l0aEluaGVyaXRhbmNlQ29udGV4dCh0aGlzLmluaGVyaXRhbmNlQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGUgd2l0aEluaGVyaXRhbmNlQ29udGV4dCB0byBwYXNzIGl0IHRvIHRoZSBjaGlsZCB3aWRnZXQgaWYgaXQgZXhpc3RzXG4gIG92ZXJyaWRlIHdpdGhJbmhlcml0YW5jZUNvbnRleHQoY29udGV4dDogSW5oZXJpdGFuY2VDb250ZXh0KTogSUZvcm1GaWVsZEJ1aWxkZXIge1xuICAgIC8vIENhbGwgcGFyZW50IGltcGxlbWVudGF0aW9uIGZpcnN0XG4gICAgc3VwZXIud2l0aEluaGVyaXRhbmNlQ29udGV4dChjb250ZXh0KTtcblxuICAgIC8vIElmIHdlIGhhdmUgYSBjaGlsZCB3aWRnZXQsIHVwZGF0ZSBpdHMgaW5oZXJpdGFuY2UgY29udGV4dCB0b29cbiAgICBpZiAodGhpcy5jaGlsZFdpZGdldCkge1xuICAgICAgdGhpcy5jaGlsZFdpZGdldC53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIGJ1aWxkKCkgdG8gYnVpbGQgdGhlIGNoaWxkIHdpZGdldCBhdCB0aGUgbGFzdCBtb21lbnRcbiAgb3ZlcnJpZGUgYnVpbGQoKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgLy8gQnVpbGQgdGhlIGNoaWxkIHdpZGdldCBhbmQgYWRkIGl0IHRvIGNoaWxkcmVuIGJlZm9yZSBidWlsZGluZyB0aGUgZm9ybSBmaWVsZFxuICAgIGlmICh0aGlzLmNoaWxkV2lkZ2V0KSB7XG4gICAgICB0aGlzLmVuc3VyZUNoaWxkcmVuKCk7XG4gICAgICB0aGlzLmNvbnRhaW5lclN0YXRlLmNoaWxkcmVuIS5wdXNoKHRoaXMuY2hpbGRXaWRnZXQuYnVpbGQoKSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsbCBwYXJlbnQgYnVpbGRcbiAgICByZXR1cm4gc3VwZXIuYnVpbGQoKTtcbiAgfVxufVxuXG4vKipcbiAqIEZpZWxkc2V0IENvbnRhaW5lciBCdWlsZGVyIC0gTGlza292IFN1YnN0aXR1dGlvbiBQcmluY2lwbGVcbiAqIEV4dGVuZHMgTGF5b3V0Q29udGFpbmVyTWl4aW4gdG8gaW5oZXJpdCBsYXlvdXQgZnVuY3Rpb25hbGl0eVxuICogU3BlY2lhbGl6ZWQgZm9yIGZvcm0gZmllbGRzIG9ubHlcbiAqL1xuY2xhc3MgRmllbGRzZXRDb250YWluZXJCdWlsZGVyXG4gIGV4dGVuZHMgTGF5b3V0Q29udGFpbmVyTWl4aW48SUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcj5cbiAgaW1wbGVtZW50cyBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyXG57XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdmaWVsZHNldC1sYXlvdXQnKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQRmllbGRzZXRDb250YWluZXJPcHRpb25zKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgdGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zID0geyAuLi50aGlzLmNvbnRhaW5lclN0YXRlLm9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEluZGl2aWR1YWwgZmx1ZW50IG1ldGhvZHMgZm9yIEZpZWxkc2V0XG4gIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgdGl0bGUgfSk7XG4gIH1cblxuICBzZXREZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGRlc2NyaXB0aW9uIH0pO1xuICB9XG5cbiAgc2V0SWNvbihpY29uOiBzdHJpbmcpOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgaWNvbiB9KTtcbiAgfVxuXG4gIHNldENvbGxhcHNpYmxlKGNvbGxhcHNpYmxlOiBib29sZWFuKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNvbGxhcHNpYmxlIH0pO1xuICB9XG5cbiAgc2V0SXNPcGVuKGlzT3BlbjogYm9vbGVhbik6IElGaWVsZHNldENvbnRhaW5lckJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBpc09wZW4gfSk7XG4gIH1cblxuICBzZXRMb29rKGxvb2s6ICdmaWVsZHNldCcgfCAnY2FyZCcgfCAnZ3JvdXAnKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGxvb2sgfSk7XG4gIH1cblxuICBzZXRTaG93SGVhZGVyKHNob3dIZWFkZXI6IGJvb2xlYW4pOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgc2hvd0hlYWRlciB9KTtcbiAgfVxuXG4gIHNldENvbHMoY29sczogbnVtYmVyKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNvbHMgfSk7XG4gIH1cblxuICAvLyBPbmx5IGZvcm0gZmllbGRzIGFyZSBhbGxvd2VkIGluIGZpZWxkc2V0XG4gIGZvcm1GaWVsZChsYWJlbDogc3RyaW5nLCBkZWxlZ2F0ZT86IChmaWVsZDogSUZvcm1GaWVsZEJ1aWxkZXIpID0+IHZvaWQpOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyIHtcbiAgICBjb25zdCBmaWVsZCA9IG5ldyBGb3JtRmllbGRCdWlsZGVyKGxhYmVsKTtcbiAgICBmaWVsZC53aXRoSW5oZXJpdGFuY2VDb250ZXh0KHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcbiAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgIGRlbGVnYXRlKGZpZWxkKTtcbiAgICB9XG4gICAgdGhpcy5lbnN1cmVDaGlsZHJlbigpO1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUuY2hpbGRyZW4hLnB1c2goZmllbGQuYnVpbGQoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuLyoqXG4gKiBMaXN0IFdpZGdldCBCdWlsZGVyIC0gTGlza292IFN1YnN0aXR1dGlvbiBQcmluY2lwbGVcbiAqIEV4dGVuZHMgV2lkZ2V0Q29udGFpbmVyTWl4aW4gdG8gaW5oZXJpdCBhbGwgY29tbW9uIGZ1bmN0aW9uYWxpdHlcbiAqL1xuY2xhc3MgTGlzdFdpZGdldEJ1aWxkZXIgZXh0ZW5kcyBXaWRnZXRDb250YWluZXJNaXhpbjxJTGlzdFdpZGdldEJ1aWxkZXI+IGltcGxlbWVudHMgSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2xpc3QnKTtcbiAgfVxuXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQTGlzdFdpZGdldE9wdGlvbnMpOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMuY29udGFpbmVyU3RhdGUub3B0aW9ucyA9IHsgLi4udGhpcy5jb250YWluZXJTdGF0ZS5vcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBJbmRpdmlkdWFsIGZsdWVudCBtZXRob2RzIGZvciBMaXN0IFdpZGdldFxuICBzZXREYXRhU291cmNlKGRhdGFTb3VyY2U6IGFueVtdKTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgZGF0YVNvdXJjZSB9KTtcbiAgfVxuXG4gIHNldENvbHVtbnMoY29sdW1uczogYW55W10pOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBjb2x1bW5zIH0pO1xuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnNcbiAgc2V0T25Sb3dDbGljayhoYW5kbGVyOiAocm93OiBhbnkpID0+IHZvaWQpOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBvblJvd0NsaWNrOiBoYW5kbGVyIH0pO1xuICB9XG5cbiAgc2V0T25Sb3dEb3VibGVDbGljayhoYW5kbGVyOiAocm93OiBhbnkpID0+IHZvaWQpOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBvblJvd0RvdWJsZUNsaWNrOiBoYW5kbGVyIH0pO1xuICB9XG5cbiAgc2V0T25TZWxlY3Rpb25DaGFuZ2UoaGFuZGxlcjogKHNlbGVjdGVkUm93czogYW55W10pID0+IHZvaWQpOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBvblNlbGVjdGlvbkNoYW5nZTogaGFuZGxlciB9KTtcbiAgfVxuXG4gIHNldE9uUm93Q29tbWFuZChoYW5kbGVyOiAoY29tbWFuZDogYW55LCBzZWxlY3RlZFJvd3M6IGFueVtdKSA9PiB2b2lkKTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgb25Sb3dDb21tYW5kOiBoYW5kbGVyIH0pO1xuICB9XG5cbiAgLy8gVGFibGUgZmVhdHVyZXNcbiAgc2V0UGFnaW5nKHBhZ2luZzogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHBhZ2luZyB9KTtcbiAgfVxuXG4gIHNldFNob3dIZWFkZXIoc2hvdzogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNob3dIZWFkZXI6IHNob3cgfSk7XG4gIH1cblxuICBzZXRTaG93Rm9vdGVyKHNob3c6IGJvb2xlYW4pOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzaG93Rm9vdGVyOiBzaG93IH0pO1xuICB9XG5cbiAgc2V0Rml4SGVhZGVyKGZpeDogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGZpeEhlYWRlcjogZml4IH0pO1xuICB9XG5cbiAgc2V0Rml4Rm9vdGVyKGZpeDogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGZpeEZvb3RlcjogZml4IH0pO1xuICB9XG5cbiAgc2V0RmV0Y2hEYXRhTW9kZShtb2RlOiAnYXV0bycgfCAnbWFudWFsJyk6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGZldGNoRGF0YU1vZGU6IG1vZGUgfSk7XG4gIH1cblxuICBzZXRQYXJlbnRGaWVsZChmaWVsZDogc3RyaW5nKTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgcGFyZW50RmllbGQ6IGZpZWxkIH0pO1xuICB9XG5cbiAgc2V0TWluSGVpZ2h0KGhlaWdodDogc3RyaW5nIHwgbnVtYmVyKTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgbWluSGVpZ2h0OiBoZWlnaHQgfSk7XG4gIH1cblxuICAvLyBTZWxlY3Rpb24gJiBJbmRleFxuICBzZXRTaG93SW5kZXgoc2hvdzogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHNob3dJbmRleDogc2hvdyB9KTtcbiAgfVxuXG4gIHNldEFsbG93U2VsZWN0aW9uKGFsbG93OiBib29sZWFuKTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgYWxsb3dTZWxlY3Rpb246IGFsbG93IH0pO1xuICB9XG5cbiAgLy8gQ29tbWFuZHNcbiAgc2V0UHJpbWFyeUNvbW1hbmRzKGNvbW1hbmRzOiBhbnlbXSk6IElMaXN0V2lkZ2V0QnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IHByaW1hcnlDb21tYW5kczogY29tbWFuZHMgfSk7XG4gIH1cblxuICBzZXRTZWNvbmRhcnlDb21tYW5kcyhjb21tYW5kczogYW55W10pOiBJTGlzdFdpZGdldEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzZWNvbmRhcnlDb21tYW5kczogY29tbWFuZHMgfSk7XG4gIH1cblxuICAvLyBMb2FkaW5nXG4gIHNldExvYWRpbmcobG9hZGluZzogeyBlbmFibGVkPzogYm9vbGVhbjsgYW5pbWF0aW9uPzogYm9vbGVhbiB9KTogSUxpc3RXaWRnZXRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgbG9hZGluZyB9KTtcbiAgfVxufVxuXG4vKipcbiAqIERpYWxvZyBDb250YWluZXIgQnVpbGRlciAtIFNwZWNpYWxpemVkIGZvciBkaWFsb2cgZnVuY3Rpb25hbGl0eVxuICogVXNlcyBjb21wb3NpdGlvbiBpbnN0ZWFkIG9mIGluaGVyaXRhbmNlIGZvciBjbGVhbmVyIHNlcGFyYXRpb25cbiAqL1xuY2xhc3MgRGlhbG9nQ29udGFpbmVyQnVpbGRlciBpbXBsZW1lbnRzIElEaWFsb2dCdWlsZGVyIHtcbiAgcHJpdmF0ZSBkaWFsb2dTdGF0ZTogRGlhbG9nQnVpbGRlclN0YXRlID0ge1xuICAgIHR5cGU6ICdmbGV4LWxheW91dCcsIC8vIFRoaXMgd2lsbCBiZSBvdmVycmlkZGVuIHdoZW4gY29udGVudCBsYXlvdXQgZXhpc3RzXG4gICAgY2hpbGRyZW46IFtdLFxuICAgIG1vZGU6ICdlZGl0JyxcbiAgICBkaWFsb2dPcHRpb25zOiB7XG4gICAgICB0aXRsZTogJycsXG4gICAgICBzaXplOiAnbWQnLFxuICAgICAgY2xvc2VCdXR0b246IGZhbHNlLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIHByZWZpeDogW10sXG4gICAgICAgIHN1ZmZpeDogW10sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2U6IEFYUG9wdXBTZXJ2aWNlO1xuICBwcml2YXRlIGNvbnRlbnRMYXlvdXQ/OiBBWFBXaWRnZXROb2RlO1xuXG4gIGNvbnN0cnVjdG9yKHBvcHVwU2VydmljZT86IEFYUG9wdXBTZXJ2aWNlKSB7XG4gICAgaWYgKHBvcHVwU2VydmljZSkge1xuICAgICAgdGhpcy5wb3B1cFNlcnZpY2UgPSBwb3B1cFNlcnZpY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgICB9XG4gIH1cblxuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUERpYWxvZ0NvbnRhaW5lck9wdGlvbnMpOiBJRGlhbG9nQnVpbGRlciB7XG4gICAgdGhpcy5kaWFsb2dTdGF0ZS5kaWFsb2dPcHRpb25zID0geyAuLi50aGlzLmRpYWxvZ1N0YXRlLmRpYWxvZ09wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIEluZGl2aWR1YWwgZmx1ZW50IG1ldGhvZHMgZm9yIERpYWxvZ1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogSURpYWxvZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyB0aXRsZSB9KTtcbiAgfVxuXG4gIHNldE1lc3NhZ2UobWVzc2FnZT86IHN0cmluZyk6IElEaWFsb2dCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5zZXRPcHRpb25zKHsgbWVzc2FnZSB9KTtcbiAgfVxuXG4gIHNldFNpemUoc2l6ZTogYW55KTogSURpYWxvZ0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldE9wdGlvbnMoeyBzaXplIH0pO1xuICB9XG5cbiAgc2V0Q2xvc2VCdXR0b24oY2xvc2VCdXR0b246IGJvb2xlYW4pOiBJRGlhbG9nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNsb3NlQnV0dG9uIH0pO1xuICB9XG5cbiAgc2V0Q29udGV4dChjb250ZXh0OiBhbnkpOiBJRGlhbG9nQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuc2V0T3B0aW9ucyh7IGNvbnRleHQgfSk7XG4gIH1cblxuICBjb250ZW50KGRlbGVnYXRlOiAobGF5b3V0QnVpbGRlcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSURpYWxvZ0J1aWxkZXIge1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgLy8gQ3JlYXRlIGEgZmxleCBjb250YWluZXIgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aHJvdWdoIExheW91dEJ1aWxkZXJcbiAgICAgIGNvbnN0IGZsZXhDb250YWluZXIgPSBuZXcgRmxleENvbnRhaW5lckJ1aWxkZXIoKTtcbiAgICAgIGZsZXhDb250YWluZXIuc2V0RGlyZWN0aW9uKCdjb2x1bW4nKTtcbiAgICAgIGZsZXhDb250YWluZXIuc2V0R2FwKCcxMHB4Jyk7XG4gICAgICBkZWxlZ2F0ZShmbGV4Q29udGFpbmVyKTtcbiAgICAgIHRoaXMuY29udGVudExheW91dCA9IGZsZXhDb250YWluZXIuYnVpbGQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRBY3Rpb25zKGRlbGVnYXRlPzogKGFjdGlvbnM6IElBY3Rpb25CdWlsZGVyKSA9PiB2b2lkKTogSURpYWxvZ0J1aWxkZXIge1xuICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgY29uc3QgYWN0aW9uQnVpbGRlciA9IG5ldyBBY3Rpb25CdWlsZGVyKHRoaXMpO1xuICAgICAgZGVsZWdhdGUoYWN0aW9uQnVpbGRlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gQnVpbGQgbWV0aG9kIHRvIGNyZWF0ZSBkaWFsb2cgbm9kZVxuICBidWlsZCgpOiBBWFBXaWRnZXROb2RlIHtcbiAgICAvLyBJZiB3ZSBoYXZlIGNvbnRlbnQgbGF5b3V0LCB1c2UgaXQgZGlyZWN0bHkgdG8gYXZvaWQgZXh0cmEgd3JhcHBlclxuICAgIGlmICh0aGlzLmNvbnRlbnRMYXlvdXQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnRoaXMuY29udGVudExheW91dCxcbiAgICAgICAgLy8gQWRkIGRpYWxvZy1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAuLi50aGlzLmNvbnRlbnRMYXlvdXQub3B0aW9ucyxcbiAgICAgICAgICAuLi50aGlzLmRpYWxvZ1N0YXRlLmRpYWxvZ09wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIHRvIGRpYWxvZyBzdGF0ZSBzdHJ1Y3R1cmUgaWYgbm8gY29udGVudFxuICAgIGNvbnN0IHJlc3VsdDogQVhQV2lkZ2V0Tm9kZSA9IHtcbiAgICAgIC4uLnRoaXMuZGlhbG9nU3RhdGUsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfTtcblxuICAgIC8vIEFkZCBkaWFsb2ctc3BlY2lmaWMgcHJvcGVydGllc1xuICAgIGlmICh0aGlzLmRpYWxvZ1N0YXRlLmRpYWxvZ09wdGlvbnMpIHtcbiAgICAgIHJlc3VsdC5vcHRpb25zID0geyAuLi5yZXN1bHQub3B0aW9ucywgLi4udGhpcy5kaWFsb2dTdGF0ZS5kaWFsb2dPcHRpb25zIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIERpYWxvZy1zcGVjaWZpYyBtZXRob2RzXG4gIGFzeW5jIHNob3coKTogUHJvbWlzZTxBWFBEaWFsb2dSZWY+IHtcbiAgICBjb25zdCBkaWFsb2dOb2RlID0gdGhpcy5idWlsZCgpO1xuXG4gICAgLy8gSW1wb3J0IHRoZSBkaWFsb2cgcmVuZGVyZXIgY29tcG9uZW50IGR5bmFtaWNhbGx5XG4gICAgY29uc3QgeyBBWFBEaWFsb2dSZW5kZXJlckNvbXBvbmVudCB9ID0gYXdhaXQgaW1wb3J0KCcuL2RpYWxvZy1yZW5kZXJlci5jb21wb25lbnQnKTtcblxuICAgIC8vIENyZWF0ZSBkaWFsb2cgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLmRpYWxvZ1N0YXRlLmRpYWxvZ09wdGlvbnM/LnRpdGxlIHx8ICcnLFxuICAgICAgbWVzc2FnZTogdGhpcy5kaWFsb2dTdGF0ZS5kaWFsb2dPcHRpb25zPy5tZXNzYWdlLFxuICAgICAgY29udGV4dDogdGhpcy5kaWFsb2dTdGF0ZS5kaWFsb2dPcHRpb25zPy5jb250ZXh0IHx8IHt9LFxuICAgICAgZGVmaW5pdGlvbjogZGlhbG9nTm9kZSxcbiAgICAgIGFjdGlvbnM6IHRoaXMuZGlhbG9nU3RhdGUuYWN0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gVGhlIFByb21pc2UgcmVzb2x2ZXMgd2hlbiB1c2VyIGNsaWNrcyBhbiBhY3Rpb24gYnV0dG9uXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICB0aGlzLnBvcHVwU2VydmljZS5vcGVuKEFYUERpYWxvZ1JlbmRlcmVyQ29tcG9uZW50LCB7XG4gICAgICAgIHRpdGxlOiBkaWFsb2dDb25maWcudGl0bGUsXG4gICAgICAgIHNpemU6IHRoaXMuZGlhbG9nU3RhdGUuZGlhbG9nT3B0aW9ucz8uc2l6ZSB8fCAnbWQnLFxuICAgICAgICBjbG9zZUJ1dHRvbjogdGhpcy5kaWFsb2dTdGF0ZS5kaWFsb2dPcHRpb25zPy5jbG9zZUJ1dHRvbiB8fCBmYWxzZSxcbiAgICAgICAgY2xvc2VPbkJhY2tkcm9wQ2xpY2s6IGZhbHNlLFxuICAgICAgICBkcmFnZ2FibGU6IGZhbHNlLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgY29uZmlnOiBkaWFsb2dDb25maWcsXG4gICAgICAgICAgY2FsbEJhY2s6IChyZXN1bHQ6IEFYUERpYWxvZ1JlZikgPT4ge1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSB3aXRoIHRoZSBkaWFsb2cgcmVmZXJlbmNlIHdoZW4gdXNlciBjbGlja3MgYW4gYWN0aW9uXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFdpZGdldCBCdWlsZGVyIEltcGxlbWVudGF0aW9uICAgLS0tLVxuXG4vKipcbiAqIFdpZGdldCBCdWlsZGVyIC0gU2luZ2xlIFJlc3BvbnNpYmlsaXR5IFByaW5jaXBsZVxuICogSGFuZGxlcyBpbmRpdmlkdWFsIHdpZGdldCBjb25maWd1cmF0aW9uIGFuZCBidWlsZGluZ1xuICovXG5jbGFzcyBXaWRnZXRCdWlsZGVyIGltcGxlbWVudHMgSVdpZGdldEJ1aWxkZXIge1xuICBwcml2YXRlIHdpZGdldFN0YXRlOiBXaWRnZXRCdWlsZGVyU3RhdGUgPSB7XG4gICAgdHlwZTogJ3dpZGdldCcgYXMgY29uc3QsXG4gICAgb3B0aW9uczoge30gYXMgYW55LFxuICB9O1xuXG4gIHByaXZhdGUgaW5oZXJpdGFuY2VDb250ZXh0OiBJbmhlcml0YW5jZUNvbnRleHQgPSB7fTtcblxuICBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUubmFtZSA9IG5hbWU7XG4gICAgfVxuICB9XG5cbiAgdHlwZSh0eXBlOiBzdHJpbmcpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS50eXBlID0gdHlwZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5hbWUobmFtZTogc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMud2lkZ2V0U3RhdGUubmFtZSA9IG5hbWU7XG4gICAgaWYgKCF0aGlzLndpZGdldFN0YXRlLnBhdGgpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUucGF0aCA9IG5hbWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcGF0aChwYXRoOiBzdHJpbmcpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5wYXRoID0gcGF0aDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9wdGlvbnMob3B0aW9uczogYW55KTogSVdpZGdldEJ1aWxkZXIge1xuICAgIC8vIE1lcmdlIG9wdGlvbnMgaW5zdGVhZCBvZiByZXBsYWNpbmcgdG8gcHJlc2VydmUgaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAgICB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMgPSB7IC4uLnRoaXMud2lkZ2V0U3RhdGUub3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbGF5b3V0KHZhbHVlOiBQYXJ0aWFsPEFYUEdyaWRMYXlvdXRPcHRpb25zPiB8IG51bWJlcik6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5sYXlvdXQgPSB7XG4gICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgIHNtOiB7IGNvbFNwYW46IDEyIH0sXG4gICAgICAgICAgbWQ6IHsgY29sU3BhbjogMTIgfSxcbiAgICAgICAgICBsZzogeyBjb2xTcGFuOiB2YWx1ZSB9LFxuICAgICAgICAgIHhsOiB7IGNvbFNwYW46IHZhbHVlIH0sXG4gICAgICAgICAgeHhsOiB7IGNvbFNwYW46IHZhbHVlIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLmxheW91dCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1vZGUobW9kZTogQVhQV2lkZ2V0UmVuZGVyTW9kZSk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICB0aGlzLndpZGdldFN0YXRlLm1vZGUgPSBtb2RlO1xuICAgIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0Lm1vZGUgPSBtb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdmlzaWJsZShjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJV2lkZ2V0QnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUub3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnNbJ3Zpc2libGUnXSA9IGNvbmRpdGlvbjtcbiAgICB0aGlzLmluaGVyaXRhbmNlQ29udGV4dC52aXNpYmxlID0gY29uZGl0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGlzYWJsZWQoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zKSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zWydkaXNhYmxlZCddID0gY29uZGl0aW9uO1xuICAgIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0LmRpc2FibGVkID0gY29uZGl0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVhZG9ubHkoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zKSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zWydyZWFkb25seSddID0gY29uZGl0aW9uO1xuICAgIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0LnJlYWRvbmx5ID0gY29uZGl0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGlyZWN0aW9uKGRpcmVjdGlvbjogJ3J0bCcgfCAnbHRyJyk6IElXaWRnZXRCdWlsZGVyIHtcbiAgICBpZiAoIXRoaXMud2lkZ2V0U3RhdGUub3B0aW9ucykge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMud2lkZ2V0U3RhdGUub3B0aW9uc1snZGlyZWN0aW9uJ10gPSBkaXJlY3Rpb247XG4gICAgdGhpcy5pbmhlcml0YW5jZUNvbnRleHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gSW5oZXJpdGFuY2UgY29udGV4dCBtZXRob2RzXG4gIHdpdGhJbmhlcml0YW5jZUNvbnRleHQoY29udGV4dDogSW5oZXJpdGFuY2VDb250ZXh0KTogSVdpZGdldEJ1aWxkZXIge1xuICAgIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0ID0gbWVyZ2VJbmhlcml0YW5jZUNvbnRleHQoY29udGV4dCk7XG5cbiAgICAvLyBBcHBseSBpbmhlcml0ZWQgcHJvcGVydGllcyB0byB3aWRnZXQgc3RhdGVcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVJbmhlcml0ZWRQcm9wZXJ0aWVzKGNvbnRleHQsIHRoaXMuaW5oZXJpdGFuY2VDb250ZXh0KTtcblxuICAgIC8vIEFsd2F5cyBhcHBseSBpbmhlcml0ZWQgcHJvcGVydGllcyAocmVtb3ZlIHRoZSBjb25kaXRpb25zIHRoYXQgY2hlY2sgaWYgYWxyZWFkeSBzZXQpXG4gICAgLy8gVGhpcyBhbGxvd3MgcHJvcGVydGllcyB0byBiZSB1cGRhdGVkIHdoZW4gaW5oZXJpdGFuY2UgY29udGV4dCBjaGFuZ2VzXG4gICAgaWYgKHJlc29sdmVkLm1vZGUpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUubW9kZSA9IHJlc29sdmVkLm1vZGU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMpIHRoaXMud2lkZ2V0U3RhdGUub3B0aW9ucyA9IHt9O1xuXG4gICAgaWYgKHJlc29sdmVkLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUub3B0aW9uc1snZGlzYWJsZWQnXSA9IHJlc29sdmVkLmRpc2FibGVkO1xuICAgIH1cblxuICAgIGlmIChyZXNvbHZlZC5yZWFkb25seSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnNbJ3JlYWRvbmx5J10gPSByZXNvbHZlZC5yZWFkb25seTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWQuZGlyZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMud2lkZ2V0U3RhdGUub3B0aW9uc1snZGlyZWN0aW9uJ10gPSByZXNvbHZlZC5kaXJlY3Rpb247XG4gICAgfVxuXG4gICAgaWYgKHJlc29sdmVkLnZpc2libGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy53aWRnZXRTdGF0ZS5vcHRpb25zWyd2aXNpYmxlJ10gPSByZXNvbHZlZC52aXNpYmxlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0SW5oZXJpdGFuY2VDb250ZXh0KCk6IEluaGVyaXRhbmNlQ29udGV4dCB7XG4gICAgcmV0dXJuIHsgLi4udGhpcy5pbmhlcml0YW5jZUNvbnRleHQgfTtcbiAgfVxuXG4gIGJ1aWxkKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLndpZGdldFN0YXRlLm5hbWUsXG4gICAgICB0eXBlOiB0aGlzLndpZGdldFN0YXRlLnR5cGUsXG4gICAgICBvcHRpb25zOiB0aGlzLndpZGdldFN0YXRlLm9wdGlvbnMsXG4gICAgICBtb2RlOiB0aGlzLndpZGdldFN0YXRlLm1vZGUsXG4gICAgICBwYXRoOiB0aGlzLndpZGdldFN0YXRlLnBhdGgsXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMud2lkZ2V0U3RhdGUuZGVmYXVsdFZhbHVlLFxuICAgIH07XG4gIH1cbn1cblxuLy8jcmVnaW9uIC0tLS0gICBBY3Rpb24gQnVpbGRlciBJbXBsZW1lbnRhdGlvbiAgIC0tLS1cblxuY2xhc3MgQWN0aW9uQnVpbGRlciBpbXBsZW1lbnRzIElBY3Rpb25CdWlsZGVyIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2dCdWlsZGVyOiBEaWFsb2dDb250YWluZXJCdWlsZGVyKSB7fVxuXG4gIGNhbmNlbCh0ZXh0Pzogc3RyaW5nKTogSUFjdGlvbkJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5kaWFsb2dCdWlsZGVyWydkaWFsb2dTdGF0ZSddLmFjdGlvbnMhLmZvb3RlciEuc3VmZml4KSB7XG4gICAgICB0aGlzLmRpYWxvZ0J1aWxkZXJbJ2RpYWxvZ1N0YXRlJ10uYWN0aW9ucyEuZm9vdGVyIS5zdWZmaXggPSBbXTtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dCdWlsZGVyWydkaWFsb2dTdGF0ZSddLmFjdGlvbnMhLmZvb3RlciEuc3VmZml4IS5wdXNoKHtcbiAgICAgIHRpdGxlOiB0ZXh0IHx8ICdAZ2VuZXJhbDphY3Rpb25zLmNhbmNlbC50aXRsZScsXG4gICAgICBpY29uOiAnZmEtdGltZXMnLFxuICAgICAgY29sb3I6ICdkZWZhdWx0JyxcbiAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ2NhbmNlbCcgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN1Ym1pdCh0ZXh0Pzogc3RyaW5nKTogSUFjdGlvbkJ1aWxkZXIge1xuICAgIGlmICghdGhpcy5kaWFsb2dCdWlsZGVyWydkaWFsb2dTdGF0ZSddLmFjdGlvbnMhLmZvb3RlciEuc3VmZml4KSB7XG4gICAgICB0aGlzLmRpYWxvZ0J1aWxkZXJbJ2RpYWxvZ1N0YXRlJ10uYWN0aW9ucyEuZm9vdGVyIS5zdWZmaXggPSBbXTtcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dCdWlsZGVyWydkaWFsb2dTdGF0ZSddLmFjdGlvbnMhLmZvb3RlciEuc3VmZml4IS5wdXNoKHtcbiAgICAgIHRpdGxlOiB0ZXh0IHx8ICdAZ2VuZXJhbDphY3Rpb25zLnN1Ym1pdC50aXRsZScsXG4gICAgICBpY29uOiAnZmEtY2hlY2snLFxuICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIGNvbW1hbmQ6IHsgbmFtZTogJ3N1Ym1pdCcsIG9wdGlvbnM6IHsgdmFsaWRhdGU6IHRydWUgfSB9LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY3VzdG9tKGFjdGlvbjogQVhQQWN0aW9uTWVudUl0ZW0pOiBJQWN0aW9uQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ0J1aWxkZXJbJ2RpYWxvZ1N0YXRlJ10uYWN0aW9ucyEuZm9vdGVyIS5zdWZmaXgpIHtcbiAgICAgIHRoaXMuZGlhbG9nQnVpbGRlclsnZGlhbG9nU3RhdGUnXS5hY3Rpb25zIS5mb290ZXIhLnN1ZmZpeCA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ0J1aWxkZXJbJ2RpYWxvZ1N0YXRlJ10uYWN0aW9ucyEuZm9vdGVyIS5zdWZmaXghLnB1c2goYWN0aW9uKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXPLayoutConversionService {\n constructor() {\n //#region ---- Caching ----\n this.widgetTreeCache = new Map();\n this.formDefinitionCache = new Map();\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Convert AXPDynamicFormDefinition to AXPWidgetNode tree structure\n * Groups become Fieldset Layouts with Form Field widgets as children\n * Fields become Form Field widgets with Editor widgets as children\n */\n convertFormDefinition(formDefinition) {\n // Create cache key based on form definition content\n const cacheKey = this.createFormDefinitionCacheKey(formDefinition);\n // Check cache first\n if (this.widgetTreeCache.has(cacheKey)) {\n return this.widgetTreeCache.get(cacheKey);\n }\n // Generate widget tree\n const widgetTree = {\n type: 'grid-layout',\n name: 'dynamic-form-container',\n options: {\n title: 'Dynamic Form',\n grid: {\n default: {\n columns: 1,\n gap: '1rem',\n },\n },\n },\n children: formDefinition.groups.map((group) => this.createGroupAsFieldsetWidget(group)),\n };\n // Cache the result\n this.widgetTreeCache.set(cacheKey, widgetTree);\n return widgetTree;\n }\n /**\n * Convert AXPWidgetNode tree back to AXPDynamicFormDefinition\n * Parses Fieldset Layouts back to Groups\n * Parses Form Field widgets back to Fields\n */\n convertWidgetTreeToFormDefinition(widgetTree) {\n // Create cache key based on widget tree content\n const cacheKey = this.createWidgetTreeCacheKey(widgetTree);\n // Check cache first\n if (this.formDefinitionCache.has(cacheKey)) {\n return this.formDefinitionCache.get(cacheKey);\n }\n // Parse widget tree\n const groups = [];\n if (widgetTree.children) {\n widgetTree.children.forEach((child) => {\n if (child.type === 'fieldset-layout') {\n const group = this.extractGroupFromFieldset(child);\n groups.push(group);\n }\n });\n }\n const formDefinition = { groups };\n // Cache the result\n this.formDefinitionCache.set(cacheKey, formDefinition);\n return formDefinition;\n }\n /**\n * Validate that a widget tree represents a valid dynamic form structure\n */\n validateFormWidgetTree(widgetTree) {\n if (!widgetTree || widgetTree.type !== 'grid-layout') {\n return false;\n }\n if (!widgetTree.children || widgetTree.children.length === 0) {\n return true; // Empty form is valid\n }\n // Check that all children are fieldset-layout widgets\n return widgetTree.children.every((child) => child.type === 'fieldset-layout' &&\n child.children &&\n child.children.every((formField) => formField.type === 'form-field' && formField.children && formField.children.length > 0));\n }\n /**\n * Clear all caches\n */\n clearCaches() {\n this.widgetTreeCache.clear();\n this.formDefinitionCache.clear();\n }\n /**\n * Get cache statistics\n */\n getCacheStats() {\n return {\n widgetTreeCacheSize: this.widgetTreeCache.size,\n formDefinitionCacheSize: this.formDefinitionCache.size,\n };\n }\n //#endregion\n //#region ---- Private Methods ----\n /**\n * Convert a single group to Fieldset widget structure\n */\n createGroupAsFieldsetWidget(group) {\n // Determine columns count from layout or default to 1\n const columnsCount = 1;\n return {\n type: 'fieldset-layout',\n name: group.name,\n options: {\n title: group.title,\n description: group.description,\n cols: columnsCount,\n },\n children: this.createFieldWidgets(group.parameters, columnsCount),\n };\n }\n /**\n * Convert fields to Form Field widgets\n */\n createFieldWidgets(fields, columnsCount) {\n return fields.map((field) => this.createFormFieldWidget(field));\n }\n /**\n * Convert a single field to Form Field widget with editor as child\n */\n createFormFieldWidget(field) {\n return {\n type: 'form-field',\n name: field.path,\n options: {\n label: field.title,\n description: field.description,\n showLabel: true,\n },\n children: [field.widget], // The editor widget becomes a child of form-field\n };\n }\n /**\n * Extract group information from Fieldset Layout widget\n */\n extractGroupFromFieldset(fieldsetNode) {\n const columnsCount = fieldsetNode.options?.['cols'] || 1;\n // Extract fields directly from fieldset children\n const fields = [];\n if (fieldsetNode.children) {\n fieldsetNode.children.forEach((formField) => {\n if (formField.type === 'form-field' && formField.children && formField.children.length > 0) {\n const field = this.extractFieldFromFormWidget(formField);\n if (field) {\n fields.push(field);\n }\n }\n });\n }\n return {\n name: fieldsetNode.name || `group-${Date.now()}`,\n title: fieldsetNode.options?.['title'],\n description: fieldsetNode.options?.['description'],\n parameters: fields,\n };\n }\n /**\n * Extract field information from Form Field widget\n */\n extractFieldFromFormWidget(formFieldNode) {\n if (!formFieldNode.children || formFieldNode.children.length === 0) {\n return null;\n }\n const editorWidget = formFieldNode.children[0];\n return {\n path: formFieldNode.name || editorWidget.name || `field-${Date.now()}`,\n title: formFieldNode.options?.['label'],\n description: formFieldNode.options?.['description'],\n widget: editorWidget,\n mode: formFieldNode.mode,\n };\n }\n /**\n * Create cache key for form definition\n */\n createFormDefinitionCacheKey(formDefinition) {\n // Create a hash-like key instead of full JSON string\n const keyParts = [];\n keyParts.push(`groups:${formDefinition.groups.length}`);\n formDefinition.groups.forEach((group, groupIndex) => {\n keyParts.push(`g${groupIndex}:${group.name}:${group.parameters.length}`);\n group.parameters.forEach((param, paramIndex) => {\n keyParts.push(`p${groupIndex}.${paramIndex}:${param.path}:${param.widget.type}`);\n });\n });\n if (formDefinition.mode) {\n keyParts.push(`mode:${formDefinition.mode}`);\n }\n // Join with delimiter and create a shorter hash\n const keyString = keyParts.join('|');\n // If still too long, create a simple hash\n if (keyString.length > 100) {\n return this.createSimpleHash(keyString);\n }\n return keyString;\n }\n /**\n * Create cache key for widget tree\n */\n createWidgetTreeCacheKey(widgetTree) {\n // Create a hash-like key instead of full JSON string\n const keyParts = [];\n keyParts.push(`type:${widgetTree.type}`);\n if (widgetTree.name) {\n keyParts.push(`name:${widgetTree.name}`);\n }\n if (widgetTree.children) {\n keyParts.push(`children:${widgetTree.children.length}`);\n widgetTree.children.forEach((child, index) => {\n keyParts.push(`c${index}:${child.type}`);\n if (child.children) {\n keyParts.push(`cc${index}:${child.children.length}`);\n child.children.forEach((grandChild, gIndex) => {\n keyParts.push(`gc${index}.${gIndex}:${grandChild.type}`);\n if (grandChild.children) {\n keyParts.push(`gcc${index}.${gIndex}:${grandChild.children.length}`);\n }\n });\n }\n });\n }\n // Join with delimiter and create a shorter hash\n const keyString = keyParts.join('|');\n // If still too long, create a simple hash\n if (keyString.length > 100) {\n return this.createSimpleHash(keyString);\n }\n return keyString;\n }\n /**\n * Create a simple hash from a string\n */\n createSimpleHash(str) {\n let hash = 0;\n if (str.length === 0)\n return hash.toString();\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash).toString(36); // Convert to base36 for shorter string\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutConversionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutConversionService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutConversionService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWNvbnZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9sYXlvdXQtY29udmVyc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBVzNDLE1BQU0sT0FBTywwQkFBMEI7SUFIdkM7UUFJRSwrQkFBK0I7UUFFdkIsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUNuRCx3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztLQStTM0U7SUE3U0MsWUFBWTtJQUVaLHNDQUFzQztJQUV0Qzs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUMsY0FBd0M7UUFDNUQsb0RBQW9EO1FBQ3BELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVuRSxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFFLENBQUM7UUFDN0MsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBa0I7WUFDaEMsSUFBSSxFQUFFLGFBQWE7WUFDbkIsSUFBSSxFQUFFLHdCQUF3QjtZQUM5QixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLGNBQWM7Z0JBQ3JCLElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLENBQUM7d0JBQ1YsR0FBRyxFQUFFLE1BQU07cUJBQ1o7aUJBQ0Y7YUFDRjtZQUNELFFBQVEsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hGLENBQUM7UUFFRixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUNBQWlDLENBQUMsVUFBeUI7UUFDekQsZ0RBQWdEO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBRSxDQUFDO1FBQ2pELENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsTUFBTSxNQUFNLEdBQW9DLEVBQUUsQ0FBQztRQUVuRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztvQkFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUVsQyxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdkQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsVUFBeUI7UUFDOUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3JELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDLENBQUMsc0JBQXNCO1FBQ3JDLENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FDOUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssQ0FBQyxJQUFJLEtBQUssaUJBQWlCO1lBQ2hDLEtBQUssQ0FBQyxRQUFRO1lBQ2QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQ2xCLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxTQUFTLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDdEcsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1lBQzlDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO1NBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWTtJQUVaLHVDQUF1QztJQUV2Qzs7T0FFRztJQUNLLDJCQUEyQixDQUFDLEtBQW9DO1FBQ3RFLHNEQUFzRDtRQUN0RCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFdkIsT0FBTztZQUNMLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsSUFBSSxFQUFFLFlBQVk7YUFDbkI7WUFDRCxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO1NBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxrQkFBa0IsQ0FBQyxNQUF1QyxFQUFFLFlBQW9CO1FBQ3RGLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOztPQUVHO0lBQ0sscUJBQXFCLENBQUMsS0FBb0M7UUFDaEUsT0FBTztZQUNMLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixPQUFPLEVBQUU7Z0JBQ1AsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCO1lBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGtEQUFrRDtTQUM3RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssd0JBQXdCLENBQUMsWUFBMkI7UUFDMUQsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV6RCxpREFBaUQ7UUFDakQsTUFBTSxNQUFNLEdBQW9DLEVBQUUsQ0FBQztRQUVuRCxJQUFJLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMxQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssWUFBWSxJQUFJLFNBQVMsQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekQsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDVixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyQixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDaEQsS0FBSyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDdEMsV0FBVyxFQUFFLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDbEQsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNLLDBCQUEwQixDQUFDLGFBQTRCO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25FLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsT0FBTztZQUNMLElBQUksRUFBRSxhQUFhLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDdkMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDbkQsTUFBTSxFQUFFLFlBQVk7WUFDcEIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUEwQjtTQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ssNEJBQTRCLENBQUMsY0FBd0M7UUFDM0UscURBQXFEO1FBQ3JELE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUU5QixRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXhELGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO1lBQ2xELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFekUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7Z0JBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLElBQUksVUFBVSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLDBDQUEwQztRQUMxQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNLLHdCQUF3QixDQUFDLFVBQXlCO1FBQ3hELHFEQUFxRDtRQUNyRCxNQUFNLFFBQVEsR0FBYSxFQUFFLENBQUM7UUFFOUIsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUV4RCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDM0MsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFekMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUVyRCxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRTt3QkFDNUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxNQUFNLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBRXpELElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUN4QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLE1BQU0sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7d0JBQ3ZFLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXJDLDBDQUEwQztRQUMxQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLEdBQVc7UUFDbEMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakMsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyw0QkFBNEI7UUFDbEQsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7SUFDN0UsQ0FBQzs4R0FoVFUsMEJBQTBCO2tIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBWFBEeW5hbWljRm9ybURlZmluaXRpb24sXG4gIEFYUER5bmFtaWNGb3JtRmllbGREZWZpbml0aW9uLFxuICBBWFBEeW5hbWljRm9ybUdyb3VwRGVmaW5pdGlvbixcbiAgQVhQRHluYW1pY0Zvcm1Nb2RlLFxufSBmcm9tICcuL2xheW91dC1idWlsZGVyLnR5cGVzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dENvbnZlcnNpb25TZXJ2aWNlIHtcbiAgLy8jcmVnaW9uIC0tLS0gICBDYWNoaW5nICAgLS0tLVxuXG4gIHByaXZhdGUgd2lkZ2V0VHJlZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdpZGdldE5vZGU+KCk7XG4gIHByaXZhdGUgZm9ybURlZmluaXRpb25DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBBWFBEeW5hbWljRm9ybURlZmluaXRpb24+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQdWJsaWMgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogQ29udmVydCBBWFBEeW5hbWljRm9ybURlZmluaXRpb24gdG8gQVhQV2lkZ2V0Tm9kZSB0cmVlIHN0cnVjdHVyZVxuICAgKiBHcm91cHMgYmVjb21lIEZpZWxkc2V0IExheW91dHMgd2l0aCBGb3JtIEZpZWxkIHdpZGdldHMgYXMgY2hpbGRyZW5cbiAgICogRmllbGRzIGJlY29tZSBGb3JtIEZpZWxkIHdpZGdldHMgd2l0aCBFZGl0b3Igd2lkZ2V0cyBhcyBjaGlsZHJlblxuICAgKi9cbiAgY29udmVydEZvcm1EZWZpbml0aW9uKGZvcm1EZWZpbml0aW9uOiBBWFBEeW5hbWljRm9ybURlZmluaXRpb24pOiBBWFBXaWRnZXROb2RlIHtcbiAgICAvLyBDcmVhdGUgY2FjaGUga2V5IGJhc2VkIG9uIGZvcm0gZGVmaW5pdGlvbiBjb250ZW50XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUZvcm1EZWZpbml0aW9uQ2FjaGVLZXkoZm9ybURlZmluaXRpb24pO1xuXG4gICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgICBpZiAodGhpcy53aWRnZXRUcmVlQ2FjaGUuaGFzKGNhY2hlS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0VHJlZUNhY2hlLmdldChjYWNoZUtleSkhO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHdpZGdldCB0cmVlXG4gICAgY29uc3Qgd2lkZ2V0VHJlZTogQVhQV2lkZ2V0Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdncmlkLWxheW91dCcsXG4gICAgICBuYW1lOiAnZHluYW1pYy1mb3JtLWNvbnRhaW5lcicsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIHRpdGxlOiAnRHluYW1pYyBGb3JtJyxcbiAgICAgICAgZ3JpZDoge1xuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGNvbHVtbnM6IDEsXG4gICAgICAgICAgICBnYXA6ICcxcmVtJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiBmb3JtRGVmaW5pdGlvbi5ncm91cHMubWFwKChncm91cCkgPT4gdGhpcy5jcmVhdGVHcm91cEFzRmllbGRzZXRXaWRnZXQoZ3JvdXApKSxcbiAgICB9O1xuXG4gICAgLy8gQ2FjaGUgdGhlIHJlc3VsdFxuICAgIHRoaXMud2lkZ2V0VHJlZUNhY2hlLnNldChjYWNoZUtleSwgd2lkZ2V0VHJlZSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0VHJlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IEFYUFdpZGdldE5vZGUgdHJlZSBiYWNrIHRvIEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvblxuICAgKiBQYXJzZXMgRmllbGRzZXQgTGF5b3V0cyBiYWNrIHRvIEdyb3Vwc1xuICAgKiBQYXJzZXMgRm9ybSBGaWVsZCB3aWRnZXRzIGJhY2sgdG8gRmllbGRzXG4gICAqL1xuICBjb252ZXJ0V2lkZ2V0VHJlZVRvRm9ybURlZmluaXRpb24od2lkZ2V0VHJlZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB7XG4gICAgLy8gQ3JlYXRlIGNhY2hlIGtleSBiYXNlZCBvbiB3aWRnZXQgdHJlZSBjb250ZW50XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZVdpZGdldFRyZWVDYWNoZUtleSh3aWRnZXRUcmVlKTtcblxuICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0XG4gICAgaWYgKHRoaXMuZm9ybURlZmluaXRpb25DYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtRGVmaW5pdGlvbkNhY2hlLmdldChjYWNoZUtleSkhO1xuICAgIH1cblxuICAgIC8vIFBhcnNlIHdpZGdldCB0cmVlXG4gICAgY29uc3QgZ3JvdXBzOiBBWFBEeW5hbWljRm9ybUdyb3VwRGVmaW5pdGlvbltdID0gW107XG5cbiAgICBpZiAod2lkZ2V0VHJlZS5jaGlsZHJlbikge1xuICAgICAgd2lkZ2V0VHJlZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGQudHlwZSA9PT0gJ2ZpZWxkc2V0LWxheW91dCcpIHtcbiAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZXh0cmFjdEdyb3VwRnJvbUZpZWxkc2V0KGNoaWxkKTtcbiAgICAgICAgICBncm91cHMucHVzaChncm91cCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EZWZpbml0aW9uID0geyBncm91cHMgfTtcblxuICAgIC8vIENhY2hlIHRoZSByZXN1bHRcbiAgICB0aGlzLmZvcm1EZWZpbml0aW9uQ2FjaGUuc2V0KGNhY2hlS2V5LCBmb3JtRGVmaW5pdGlvbik7XG5cbiAgICByZXR1cm4gZm9ybURlZmluaXRpb247XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhhdCBhIHdpZGdldCB0cmVlIHJlcHJlc2VudHMgYSB2YWxpZCBkeW5hbWljIGZvcm0gc3RydWN0dXJlXG4gICAqL1xuICB2YWxpZGF0ZUZvcm1XaWRnZXRUcmVlKHdpZGdldFRyZWU6IEFYUFdpZGdldE5vZGUpOiBib29sZWFuIHtcbiAgICBpZiAoIXdpZGdldFRyZWUgfHwgd2lkZ2V0VHJlZS50eXBlICE9PSAnZ3JpZC1sYXlvdXQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF3aWRnZXRUcmVlLmNoaWxkcmVuIHx8IHdpZGdldFRyZWUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTsgLy8gRW1wdHkgZm9ybSBpcyB2YWxpZFxuICAgIH1cblxuICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoaWxkcmVuIGFyZSBmaWVsZHNldC1sYXlvdXQgd2lkZ2V0c1xuICAgIHJldHVybiB3aWRnZXRUcmVlLmNoaWxkcmVuLmV2ZXJ5KFxuICAgICAgKGNoaWxkKSA9PlxuICAgICAgICBjaGlsZC50eXBlID09PSAnZmllbGRzZXQtbGF5b3V0JyAmJlxuICAgICAgICBjaGlsZC5jaGlsZHJlbiAmJlxuICAgICAgICBjaGlsZC5jaGlsZHJlbi5ldmVyeShcbiAgICAgICAgICAoZm9ybUZpZWxkKSA9PiBmb3JtRmllbGQudHlwZSA9PT0gJ2Zvcm0tZmllbGQnICYmIGZvcm1GaWVsZC5jaGlsZHJlbiAmJiBmb3JtRmllbGQuY2hpbGRyZW4ubGVuZ3RoID4gMCxcbiAgICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjYWNoZXNcbiAgICovXG4gIGNsZWFyQ2FjaGVzKCk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0VHJlZUNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5mb3JtRGVmaW5pdGlvbkNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIHN0YXRpc3RpY3NcbiAgICovXG4gIGdldENhY2hlU3RhdHMoKTogeyB3aWRnZXRUcmVlQ2FjaGVTaXplOiBudW1iZXI7IGZvcm1EZWZpbml0aW9uQ2FjaGVTaXplOiBudW1iZXIgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZGdldFRyZWVDYWNoZVNpemU6IHRoaXMud2lkZ2V0VHJlZUNhY2hlLnNpemUsXG4gICAgICBmb3JtRGVmaW5pdGlvbkNhY2hlU2l6ZTogdGhpcy5mb3JtRGVmaW5pdGlvbkNhY2hlLnNpemUsXG4gICAgfTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJpdmF0ZSBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgc2luZ2xlIGdyb3VwIHRvIEZpZWxkc2V0IHdpZGdldCBzdHJ1Y3R1cmVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlR3JvdXBBc0ZpZWxkc2V0V2lkZ2V0KGdyb3VwOiBBWFBEeW5hbWljRm9ybUdyb3VwRGVmaW5pdGlvbik6IEFYUFdpZGdldE5vZGUge1xuICAgIC8vIERldGVybWluZSBjb2x1bW5zIGNvdW50IGZyb20gbGF5b3V0IG9yIGRlZmF1bHQgdG8gMVxuICAgIGNvbnN0IGNvbHVtbnNDb3VudCA9IDE7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ZpZWxkc2V0LWxheW91dCcsXG4gICAgICBuYW1lOiBncm91cC5uYW1lLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICB0aXRsZTogZ3JvdXAudGl0bGUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBncm91cC5kZXNjcmlwdGlvbixcbiAgICAgICAgY29sczogY29sdW1uc0NvdW50LFxuICAgICAgfSxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNyZWF0ZUZpZWxkV2lkZ2V0cyhncm91cC5wYXJhbWV0ZXJzLCBjb2x1bW5zQ291bnQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBmaWVsZHMgdG8gRm9ybSBGaWVsZCB3aWRnZXRzXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUZpZWxkV2lkZ2V0cyhmaWVsZHM6IEFYUER5bmFtaWNGb3JtRmllbGREZWZpbml0aW9uW10sIGNvbHVtbnNDb3VudDogbnVtYmVyKTogQVhQV2lkZ2V0Tm9kZVtdIHtcbiAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+IHRoaXMuY3JlYXRlRm9ybUZpZWxkV2lkZ2V0KGZpZWxkKSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHNpbmdsZSBmaWVsZCB0byBGb3JtIEZpZWxkIHdpZGdldCB3aXRoIGVkaXRvciBhcyBjaGlsZFxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtRmllbGRXaWRnZXQoZmllbGQ6IEFYUER5bmFtaWNGb3JtRmllbGREZWZpbml0aW9uKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdmb3JtLWZpZWxkJyxcbiAgICAgIG5hbWU6IGZpZWxkLnBhdGgsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGxhYmVsOiBmaWVsZC50aXRsZSxcbiAgICAgICAgZGVzY3JpcHRpb246IGZpZWxkLmRlc2NyaXB0aW9uLFxuICAgICAgICBzaG93TGFiZWw6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2hpbGRyZW46IFtmaWVsZC53aWRnZXRdLCAvLyBUaGUgZWRpdG9yIHdpZGdldCBiZWNvbWVzIGEgY2hpbGQgb2YgZm9ybS1maWVsZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBncm91cCBpbmZvcm1hdGlvbiBmcm9tIEZpZWxkc2V0IExheW91dCB3aWRnZXRcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdEdyb3VwRnJvbUZpZWxkc2V0KGZpZWxkc2V0Tm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUER5bmFtaWNGb3JtR3JvdXBEZWZpbml0aW9uIHtcbiAgICBjb25zdCBjb2x1bW5zQ291bnQgPSBmaWVsZHNldE5vZGUub3B0aW9ucz8uWydjb2xzJ10gfHwgMTtcblxuICAgIC8vIEV4dHJhY3QgZmllbGRzIGRpcmVjdGx5IGZyb20gZmllbGRzZXQgY2hpbGRyZW5cbiAgICBjb25zdCBmaWVsZHM6IEFYUER5bmFtaWNGb3JtRmllbGREZWZpbml0aW9uW10gPSBbXTtcblxuICAgIGlmIChmaWVsZHNldE5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZpZWxkc2V0Tm9kZS5jaGlsZHJlbi5mb3JFYWNoKChmb3JtRmllbGQpID0+IHtcbiAgICAgICAgaWYgKGZvcm1GaWVsZC50eXBlID09PSAnZm9ybS1maWVsZCcgJiYgZm9ybUZpZWxkLmNoaWxkcmVuICYmIGZvcm1GaWVsZC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLmV4dHJhY3RGaWVsZEZyb21Gb3JtV2lkZ2V0KGZvcm1GaWVsZCk7XG4gICAgICAgICAgaWYgKGZpZWxkKSB7XG4gICAgICAgICAgICBmaWVsZHMucHVzaChmaWVsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZmllbGRzZXROb2RlLm5hbWUgfHwgYGdyb3VwLSR7RGF0ZS5ub3coKX1gLFxuICAgICAgdGl0bGU6IGZpZWxkc2V0Tm9kZS5vcHRpb25zPy5bJ3RpdGxlJ10sXG4gICAgICBkZXNjcmlwdGlvbjogZmllbGRzZXROb2RlLm9wdGlvbnM/LlsnZGVzY3JpcHRpb24nXSxcbiAgICAgIHBhcmFtZXRlcnM6IGZpZWxkcyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgZmllbGQgaW5mb3JtYXRpb24gZnJvbSBGb3JtIEZpZWxkIHdpZGdldFxuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0RmllbGRGcm9tRm9ybVdpZGdldChmb3JtRmllbGROb2RlOiBBWFBXaWRnZXROb2RlKTogQVhQRHluYW1pY0Zvcm1GaWVsZERlZmluaXRpb24gfCBudWxsIHtcbiAgICBpZiAoIWZvcm1GaWVsZE5vZGUuY2hpbGRyZW4gfHwgZm9ybUZpZWxkTm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVkaXRvcldpZGdldCA9IGZvcm1GaWVsZE5vZGUuY2hpbGRyZW5bMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aDogZm9ybUZpZWxkTm9kZS5uYW1lIHx8IGVkaXRvcldpZGdldC5uYW1lIHx8IGBmaWVsZC0ke0RhdGUubm93KCl9YCxcbiAgICAgIHRpdGxlOiBmb3JtRmllbGROb2RlLm9wdGlvbnM/LlsnbGFiZWwnXSxcbiAgICAgIGRlc2NyaXB0aW9uOiBmb3JtRmllbGROb2RlLm9wdGlvbnM/LlsnZGVzY3JpcHRpb24nXSxcbiAgICAgIHdpZGdldDogZWRpdG9yV2lkZ2V0LFxuICAgICAgbW9kZTogZm9ybUZpZWxkTm9kZS5tb2RlIGFzIEFYUER5bmFtaWNGb3JtTW9kZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBjYWNoZSBrZXkgZm9yIGZvcm0gZGVmaW5pdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtRGVmaW5pdGlvbkNhY2hlS2V5KGZvcm1EZWZpbml0aW9uOiBBWFBEeW5hbWljRm9ybURlZmluaXRpb24pOiBzdHJpbmcge1xuICAgIC8vIENyZWF0ZSBhIGhhc2gtbGlrZSBrZXkgaW5zdGVhZCBvZiBmdWxsIEpTT04gc3RyaW5nXG4gICAgY29uc3Qga2V5UGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBrZXlQYXJ0cy5wdXNoKGBncm91cHM6JHtmb3JtRGVmaW5pdGlvbi5ncm91cHMubGVuZ3RofWApO1xuXG4gICAgZm9ybURlZmluaXRpb24uZ3JvdXBzLmZvckVhY2goKGdyb3VwLCBncm91cEluZGV4KSA9PiB7XG4gICAgICBrZXlQYXJ0cy5wdXNoKGBnJHtncm91cEluZGV4fToke2dyb3VwLm5hbWV9OiR7Z3JvdXAucGFyYW1ldGVycy5sZW5ndGh9YCk7XG5cbiAgICAgIGdyb3VwLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW0sIHBhcmFtSW5kZXgpID0+IHtcbiAgICAgICAga2V5UGFydHMucHVzaChgcCR7Z3JvdXBJbmRleH0uJHtwYXJhbUluZGV4fToke3BhcmFtLnBhdGh9OiR7cGFyYW0ud2lkZ2V0LnR5cGV9YCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmIChmb3JtRGVmaW5pdGlvbi5tb2RlKSB7XG4gICAgICBrZXlQYXJ0cy5wdXNoKGBtb2RlOiR7Zm9ybURlZmluaXRpb24ubW9kZX1gKTtcbiAgICB9XG5cbiAgICAvLyBKb2luIHdpdGggZGVsaW1pdGVyIGFuZCBjcmVhdGUgYSBzaG9ydGVyIGhhc2hcbiAgICBjb25zdCBrZXlTdHJpbmcgPSBrZXlQYXJ0cy5qb2luKCd8Jyk7XG5cbiAgICAvLyBJZiBzdGlsbCB0b28gbG9uZywgY3JlYXRlIGEgc2ltcGxlIGhhc2hcbiAgICBpZiAoa2V5U3RyaW5nLmxlbmd0aCA+IDEwMCkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2ltcGxlSGFzaChrZXlTdHJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlTdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGNhY2hlIGtleSBmb3Igd2lkZ2V0IHRyZWVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlV2lkZ2V0VHJlZUNhY2hlS2V5KHdpZGdldFRyZWU6IEFYUFdpZGdldE5vZGUpOiBzdHJpbmcge1xuICAgIC8vIENyZWF0ZSBhIGhhc2gtbGlrZSBrZXkgaW5zdGVhZCBvZiBmdWxsIEpTT04gc3RyaW5nXG4gICAgY29uc3Qga2V5UGFydHM6IHN0cmluZ1tdID0gW107XG5cbiAgICBrZXlQYXJ0cy5wdXNoKGB0eXBlOiR7d2lkZ2V0VHJlZS50eXBlfWApO1xuXG4gICAgaWYgKHdpZGdldFRyZWUubmFtZSkge1xuICAgICAga2V5UGFydHMucHVzaChgbmFtZToke3dpZGdldFRyZWUubmFtZX1gKTtcbiAgICB9XG5cbiAgICBpZiAod2lkZ2V0VHJlZS5jaGlsZHJlbikge1xuICAgICAga2V5UGFydHMucHVzaChgY2hpbGRyZW46JHt3aWRnZXRUcmVlLmNoaWxkcmVuLmxlbmd0aH1gKTtcblxuICAgICAgd2lkZ2V0VHJlZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAga2V5UGFydHMucHVzaChgYyR7aW5kZXh9OiR7Y2hpbGQudHlwZX1gKTtcblxuICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgICBrZXlQYXJ0cy5wdXNoKGBjYyR7aW5kZXh9OiR7Y2hpbGQuY2hpbGRyZW4ubGVuZ3RofWApO1xuXG4gICAgICAgICAgY2hpbGQuY2hpbGRyZW4uZm9yRWFjaCgoZ3JhbmRDaGlsZCwgZ0luZGV4KSA9PiB7XG4gICAgICAgICAgICBrZXlQYXJ0cy5wdXNoKGBnYyR7aW5kZXh9LiR7Z0luZGV4fToke2dyYW5kQ2hpbGQudHlwZX1gKTtcblxuICAgICAgICAgICAgaWYgKGdyYW5kQ2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAga2V5UGFydHMucHVzaChgZ2NjJHtpbmRleH0uJHtnSW5kZXh9OiR7Z3JhbmRDaGlsZC5jaGlsZHJlbi5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEpvaW4gd2l0aCBkZWxpbWl0ZXIgYW5kIGNyZWF0ZSBhIHNob3J0ZXIgaGFzaFxuICAgIGNvbnN0IGtleVN0cmluZyA9IGtleVBhcnRzLmpvaW4oJ3wnKTtcblxuICAgIC8vIElmIHN0aWxsIHRvbyBsb25nLCBjcmVhdGUgYSBzaW1wbGUgaGFzaFxuICAgIGlmIChrZXlTdHJpbmcubGVuZ3RoID4gMTAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVTaW1wbGVIYXNoKGtleVN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzaW1wbGUgaGFzaCBmcm9tIGEgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVNpbXBsZUhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoYXNoID0gMDtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAgIGhhc2ggPSBoYXNoICYgaGFzaDsgLy8gQ29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIH1cblxuICAgIHJldHVybiBNYXRoLmFicyhoYXNoKS50b1N0cmluZygzNik7IC8vIENvbnZlcnQgdG8gYmFzZTM2IGZvciBzaG9ydGVyIHN0cmluZ1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=","import { AXFormComponent, AXFormModule } from '@acorex/components/form';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { AXPPageStatus, AXPWidgetContainerComponent, AXPWidgetCoreModule, } from '@acorex/platform/layout/widget-core';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, input, model, output, signal, viewChild, } from '@angular/core';\nimport { cloneDeep, get, isEqual } from 'lodash-es';\nimport { debounceTime, distinctUntilChanged, startWith, Subject } from 'rxjs';\nimport { AXPLayoutConversionService } from './layout-conversion.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/widget-core\";\nimport * as i2 from \"@acorex/components/form\";\nexport class AXPLayoutRendererComponent {\n constructor() {\n this.evaluatorService = inject(AXPExpressionEvaluatorService);\n this.conversionService = inject(AXPLayoutConversionService);\n /**\n * Tracks the latest scheduled evaluation to ensure last-write-wins for async evaluate\n */\n this.evaluationRunId = 0;\n /**\n * RxJS subjects for context management\n */\n this.contextUpdateSubject = new Subject();\n this.contextChangeSubject = new Subject();\n /**\n * Cache for expression evaluation results\n */\n this.expressionCache = new Map();\n /**\n * Cache for widget tree comparisons\n */\n this.widgetTreeCache = new Map();\n /**\n * Last layout hash for change detection\n */\n this.lastLayoutHash = '';\n //#region ---- Inputs ----\n /**\n * Form definition containing groups and fields OR widget tree\n */\n this.layout = input.required(...(ngDevMode ? [{ debugName: \"layout\" }] : []));\n /**\n * Form context/model data\n */\n this.context = model({}, ...(ngDevMode ? [{ debugName: \"context\" }] : []));\n /**\n * Form appearance and density styling (normal, compact, spacious)\n */\n this.look = input('fieldset', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n /**\n * Default form mode. Can be overridden by section/group and field.\n */\n this.mode = input('edit', ...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n //#endregion\n //#region ---- Widget Tree Conversion ----\n this.widgetTree = signal(null, ...(ngDevMode ? [{ debugName: \"widgetTree\" }] : []));\n /**\n * Convert and evaluate data when inputs change (optimized with RxJS)\n */\n this.conversionEffect = effect(() => {\n const inputData = this.layout();\n const ctx = this.internalContext();\n const look = this.look();\n const runId = ++this.evaluationRunId;\n // Generate layout hash for change detection\n const layoutHash = this.generateLayoutHash(inputData, look);\n // Skip if layout hasn't changed\n if (layoutHash === this.lastLayoutHash && this.widgetTree()) {\n return;\n }\n this.lastLayoutHash = layoutHash;\n (async () => {\n // First evaluate expressions if needed\n const evaluated = await this.expressionEvaluator(inputData, ctx);\n // Ignore stale results\n if (runId !== this.evaluationRunId) {\n return;\n }\n // Convert to widget tree (this will also apply the layout look)\n const tree = evaluated;\n // Update widget tree\n const prev = this.widgetTree();\n if (!isEqual(prev, tree)) {\n tree.mode = this.mode();\n this.widgetTree.set(tree);\n }\n })();\n }, ...(ngDevMode ? [{ debugName: \"conversionEffect\" }] : []));\n //#endregion\n //#region ---- Outputs ----\n /**\n * Emitted when context change is initiated\n */\n this.contextInitiated = output();\n /**\n * Emitted when form becomes valid/invalid\n */\n this.validityChange = output();\n //#endregion\n //#region ---- Properties ----\n this.form = viewChild(AXFormComponent, ...(ngDevMode ? [{ debugName: \"form\" }] : []));\n this.container = viewChild(AXPWidgetContainerComponent, ...(ngDevMode ? [{ debugName: \"container\" }] : []));\n /**\n * Internal context signal for reactivity\n */\n this.internalContext = signal({}, ...(ngDevMode ? [{ debugName: \"internalContext\" }] : []));\n /**\n * Initial context for reset functionality\n */\n this.initialContext = {};\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to sync context changes from external to internal (optimized with RxJS)\n */\n this.#contextSyncEffect = effect(() => {\n const ctx = this.context() ?? {};\n this.contextUpdateSubject.next(ctx);\n }, ...(ngDevMode ? [{ debugName: \"#contextSyncEffect\" }] : []));\n /**\n * Effect to handle widget tree status changes\n */\n this.#widgetStatusEffect = effect(() => {\n const widgetTree = this.widgetTree();\n if (widgetTree) {\n this.container()?.builderService.setStatus(AXPPageStatus.Rendered);\n }\n }, ...(ngDevMode ? [{ debugName: \"#widgetStatusEffect\" }] : []));\n }\n async expressionEvaluator(expression, context) {\n // Check if it's a form definition that needs conversion\n if (this.isFormDefinition(expression)) {\n return this.conversionService.convertFormDefinition(expression);\n }\n // Generate cache key using a more efficient method\n const cacheKey = this.generateCacheKey(expression, context);\n // Check cache first\n if (this.expressionCache.has(cacheKey)) {\n return this.expressionCache.get(cacheKey);\n }\n const scope = {\n context: {\n eval: (path) => get(context, path),\n },\n };\n const result = await this.evaluatorService.evaluate(expression, scope);\n // Cache result with LRU-like behavior\n if (this.expressionCache.size > 50) {\n // Clear half the cache when it gets too large\n const keysToDelete = Array.from(this.expressionCache.keys()).slice(0, 25);\n keysToDelete.forEach((key) => this.expressionCache.delete(key));\n }\n this.expressionCache.set(cacheKey, result);\n return result;\n }\n //#endregion\n //#region ---- Lifecycle Methods ----\n ngOnInit() {\n // Initialize internal context with input context\n const ctx = this.context() ?? {};\n this.internalContext.set(ctx);\n // Store initial context for reset functionality\n this.initialContext = cloneDeep(ctx);\n // Setup RxJS streams for context management\n this.setupContextStreams();\n }\n //#endregion\n //#region ---- Effects ----\n /**\n * Effect to sync context changes from external to internal (optimized with RxJS)\n */\n #contextSyncEffect;\n /**\n * Effect to handle widget tree status changes\n */\n #widgetStatusEffect;\n //#endregion\n //#region ---- Event Handlers ----\n /**\n * Handle context change events from widget container (optimized with RxJS)\n */\n handleContextChanged(event) {\n if (event.state === 'initiated') {\n this.contextInitiated.emit(event.data);\n }\n else {\n this.contextChangeSubject.next(event.data ?? {});\n }\n }\n //#endregion\n //#region ---- Public Methods ----\n /**\n * Get the form component instance\n */\n getForm() {\n return this.form();\n }\n /**\n * Get the widget container component instance\n */\n getContainer() {\n return this.container();\n }\n /**\n * Get current form context\n */\n getContext() {\n return this.internalContext();\n }\n /**\n * Update form context programmatically\n */\n updateContext(context) {\n this.internalContext.set(context);\n }\n /**\n * Get the current widget tree\n */\n getWidgetTree() {\n return this.widgetTree();\n }\n /**\n * Validate the form\n */\n async validate() {\n const form = this.form();\n if (form) {\n const isValid = await form.validate();\n this.validityChange.emit(isValid.result);\n return isValid;\n }\n return {\n result: false,\n messages: [],\n rules: [],\n };\n }\n /**\n * Clear the form context\n */\n clear() {\n // Clear internal context\n this.internalContext.set({});\n // Update the model signal\n this.context.set({});\n }\n /**\n * Reset the form to its initial state\n */\n reset() {\n // Reset to initial context\n const resetContext = cloneDeep(this.initialContext);\n this.internalContext.set(resetContext);\n // Update the model signal\n this.context.set(resetContext);\n }\n //#endregion\n //#region ---- RxJS Stream Setup ----\n /**\n * Setup RxJS streams for context management\n */\n setupContextStreams() {\n // Debounced context updates from external source\n this.contextUpdateSubject\n .pipe(debounceTime(16), // ~60fps\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)), startWith(this.context() ?? {}))\n .subscribe((ctx) => {\n this.internalContext.set(ctx);\n });\n // Debounced context changes from widgets\n this.contextChangeSubject\n .pipe(debounceTime(16), // ~60fps\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)))\n .subscribe((ctx) => {\n this.internalContext.set(ctx);\n // Update the model signal directly - it will emit change events automatically\n this.context.set(this.internalContext());\n });\n }\n //#endregion\n //#region ---- Type Guards ----\n /**\n * Type guard to check if the input is a form definition\n */\n isFormDefinition(data) {\n return data && typeof data === 'object' && 'groups' in data && Array.isArray(data.groups);\n }\n //#endregion\n //#region ---- Utility Methods ----\n /**\n * Generate layout hash for change detection (short hash)\n */\n generateLayoutHash(layout, look) {\n if (!layout)\n return '';\n // Generate short hash for large layout strings\n const layoutStr = typeof layout === 'string' ? layout : JSON.stringify(layout);\n const layoutHash = this.simpleHash(layoutStr);\n return `${layoutHash}|${look}`;\n }\n /**\n * Generate cache key for expression evaluation (short hash)\n */\n generateCacheKey(expression, context) {\n // Use short hash for better performance\n const exprStr = typeof expression === 'string' ? expression : JSON.stringify(expression);\n const exprHash = this.simpleHash(exprStr);\n const ctxHash = this.generateContextHash(context);\n return `${exprHash}|${ctxHash}`;\n }\n /**\n * Generate a simple hash for context change detection\n */\n generateContextHash(context) {\n if (!context || typeof context !== 'object') {\n return String(context);\n }\n // Generate short hash for context\n const keys = Object.keys(context).sort();\n const contextStr = keys.map((key) => `${key}:${context[key]}`).join('|');\n return this.simpleHash(contextStr);\n }\n /**\n * Simple hash function for generating short keys\n */\n simpleHash(str) {\n let hash = 0;\n if (str.length === 0)\n return hash.toString();\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n // Convert to positive hex string\n return Math.abs(hash).toString(16);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutRendererComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXPLayoutRendererComponent, isStandalone: true, selector: \"axp-layout-renderer\", inputs: { layout: { classPropertyName: \"layout\", publicName: \"layout\", isSignal: true, isRequired: true, transformFunction: null }, context: { classPropertyName: \"context\", publicName: \"context\", isSignal: true, isRequired: false, transformFunction: null }, look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { context: \"contextChange\", contextInitiated: \"contextInitiated\", validityChange: \"validityChange\" }, viewQueries: [{ propertyName: \"form\", first: true, predicate: AXFormComponent, descendants: true, isSignal: true }, { propertyName: \"container\", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: `\n <ax-form>\n <axp-widgets-container [context]=\"internalContext()\" (onContextChanged)=\"handleContextChanged($event)\">\n @if (widgetTree()) {\n <ng-container axp-widget-renderer [node]=\"widgetTree()!\" [mode]=\"mode()\"></ng-container>\n }\n </axp-widgets-container>\n </ax-form>\n `, isInline: true, styles: [\":host{display:block;width:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i1.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXFormModule }, { kind: \"component\", type: i2.AXFormComponent, selector: \"ax-form\", inputs: [\"labelMode\", \"look\", \"messageStyle\", \"updateOn\"], outputs: [\"onValidate\", \"updateOnChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPLayoutRendererComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axp-layout-renderer', standalone: true, imports: [CommonModule, AXPWidgetCoreModule, AXFormModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <ax-form>\n <axp-widgets-container [context]=\"internalContext()\" (onContextChanged)=\"handleContextChanged($event)\">\n @if (widgetTree()) {\n <ng-container axp-widget-renderer [node]=\"widgetTree()!\" [mode]=\"mode()\"></ng-container>\n }\n </axp-widgets-container>\n </ax-form>\n `, styles: [\":host{display:block;width:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9sYXlvdXQtcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFeEUsT0FBTyxFQUErQiw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25HLE9BQU8sRUFDTCxhQUFhLEVBQ2IsMkJBQTJCLEVBRTNCLG1CQUFtQixHQUVwQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU5RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7OztBQXlCekUsTUFBTSxPQUFPLDBCQUEwQjtJQXZCdkM7UUF3QlUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDekQsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFL0Q7O1dBRUc7UUFDSyxvQkFBZSxHQUFHLENBQUMsQ0FBQztRQUU1Qjs7V0FFRztRQUNLLHlCQUFvQixHQUFHLElBQUks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R0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsNEJBQTRCO1FBQ2xELENBQUM7UUFFRCxpQ0FBaUM7UUFDakMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDOzhHQXpZVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixrdEJBcUpaLGVBQWUsNEZBQ1YsMkJBQTJCLGdFQXhLL0M7Ozs7Ozs7O0dBUVQsMEdBVlMsWUFBWSw4QkFBRSxtQkFBbUIsOFpBQUUsWUFBWTs7MkZBb0I5QywwQkFBMEI7a0JBdkJ0QyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLG1CQUN6Qyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7Ozs7OztHQVFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhGb3JtQ29tcG9uZW50LCBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25TdW1tYXJ5IH0gZnJvbSAnQGFjb3JleC9jb3JlL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlLCBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBBWFBQYWdlU3RhdHVzLFxuICBBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQsXG4gIEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQsXG4gIEFYUFdpZGdldENvcmVNb2R1bGUsXG4gIEFYUFdpZGdldE5vZGUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG1vZGVsLFxuICBPbkluaXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3RhcnRXaXRoLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBEeW5hbWljRm9ybURlZmluaXRpb24sIEFYUER5bmFtaWNGb3JtTG9vaywgQVhQRHluYW1pY0Zvcm1Nb2RlIH0gZnJvbSAnLi9sYXlvdXQtYnVpbGRlci50eXBlcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRDb252ZXJzaW9uU2VydmljZSB9IGZyb20gJy4vbGF5b3V0LWNvbnZlcnNpb24uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtcmVuZGVyZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFBXaWRnZXRDb3JlTW9kdWxlLCBBWEZvcm1Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXgtZm9ybT5cbiAgICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiaW50ZXJuYWxDb250ZXh0KClcIiAob25Db250ZXh0Q2hhbmdlZCk9XCJoYW5kbGVDb250ZXh0Q2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIEBpZiAod2lkZ2V0VHJlZSgpKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cIndpZGdldFRyZWUoKSFcIiBbbW9kZV09XCJtb2RlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9heHAtd2lkZ2V0cy1jb250YWluZXI+XG4gICAgPC9heC1mb3JtPlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgZXZhbHVhdG9yU2VydmljZSA9IGluamVjdChBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSk7XG4gIHByaXZhdGUgY29udmVyc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0Q29udmVyc2lvblNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIGxhdGVzdCBzY2hlZHVsZWQgZXZhbHVhdGlvbiB0byBlbnN1cmUgbGFzdC13cml0ZS13aW5zIGZvciBhc3luYyBldmFsdWF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBldmFsdWF0aW9uUnVuSWQgPSAwO1xuXG4gIC8qKlxuICAgKiBSeEpTIHN1YmplY3RzIGZvciBjb250ZXh0IG1hbmFnZW1lbnRcbiAgICovXG4gIHByaXZhdGUgY29udGV4dFVwZGF0ZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG4gIHByaXZhdGUgY29udGV4dENoYW5nZVN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIENhY2hlIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24gcmVzdWx0c1xuICAgKi9cbiAgcHJpdmF0ZSBleHByZXNzaW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmb3Igd2lkZ2V0IHRyZWUgY29tcGFyaXNvbnNcbiAgICovXG4gIHByaXZhdGUgd2lkZ2V0VHJlZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgLyoqXG4gICAqIExhc3QgbGF5b3V0IGhhc2ggZm9yIGNoYW5nZSBkZXRlY3Rpb25cbiAgICovXG4gIHByaXZhdGUgbGFzdExheW91dEhhc2ggPSAnJztcblxuICAvLyNyZWdpb24gLS0tLSAgIElucHV0cyAgIC0tLS1cblxuICAvKipcbiAgICogRm9ybSBkZWZpbml0aW9uIGNvbnRhaW5pbmcgZ3JvdXBzIGFuZCBmaWVsZHMgT1Igd2lkZ2V0IHRyZWVcbiAgICovXG4gIGxheW91dCA9IGlucHV0LnJlcXVpcmVkPEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB8IEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgLyoqXG4gICAqIEZvcm0gY29udGV4dC9tb2RlbCBkYXRhXG4gICAqL1xuICBjb250ZXh0ID0gbW9kZWw8YW55Pih7fSk7XG5cbiAgLyoqXG4gICAqIEZvcm0gYXBwZWFyYW5jZSBhbmQgZGVuc2l0eSBzdHlsaW5nIChub3JtYWwsIGNvbXBhY3QsIHNwYWNpb3VzKVxuICAgKi9cbiAgbG9vayA9IGlucHV0PEFYUER5bmFtaWNGb3JtTG9vaz4oJ2ZpZWxkc2V0Jyk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZm9ybSBtb2RlLiBDYW4gYmUgb3ZlcnJpZGRlbiBieSBzZWN0aW9uL2dyb3VwIGFuZCBmaWVsZC5cbiAgICovXG4gIG1vZGUgPSBpbnB1dDxBWFBEeW5hbWljRm9ybU1vZGU+KCdlZGl0Jyk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBXaWRnZXQgVHJlZSBDb252ZXJzaW9uICAgLS0tLVxuXG4gIHByb3RlY3RlZCB3aWRnZXRUcmVlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogQ29udmVydCBhbmQgZXZhbHVhdGUgZGF0YSB3aGVuIGlucHV0cyBjaGFuZ2UgKG9wdGltaXplZCB3aXRoIFJ4SlMpXG4gICAqL1xuICBjb252ZXJzaW9uRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbnB1dERhdGEgPSB0aGlzLmxheW91dCgpO1xuICAgIGNvbnN0IGN0eCA9IHRoaXMuaW50ZXJuYWxDb250ZXh0KCk7XG4gICAgY29uc3QgbG9vayA9IHRoaXMubG9vaygpO1xuICAgIGNvbnN0IHJ1bklkID0gKyt0aGlzLmV2YWx1YXRpb25SdW5JZDtcblxuICAgIC8vIEdlbmVyYXRlIGxheW91dCBoYXNoIGZvciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgY29uc3QgbGF5b3V0SGFzaCA9IHRoaXMuZ2VuZXJhdGVMYXlvdXRIYXNoKGlucHV0RGF0YSwgbG9vayk7XG5cbiAgICAvLyBTa2lwIGlmIGxheW91dCBoYXNuJ3QgY2hhbmdlZFxuICAgIGlmIChsYXlvdXRIYXNoID09PSB0aGlzLmxhc3RMYXlvdXRIYXNoICYmIHRoaXMud2lkZ2V0VHJlZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0TGF5b3V0SGFzaCA9IGxheW91dEhhc2g7XG5cbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gRmlyc3QgZXZhbHVhdGUgZXhwcmVzc2lvbnMgaWYgbmVlZGVkXG4gICAgICBjb25zdCBldmFsdWF0ZWQgPSBhd2FpdCB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IoaW5wdXREYXRhLCBjdHgpO1xuXG4gICAgICAvLyBJZ25vcmUgc3RhbGUgcmVzdWx0c1xuICAgICAgaWYgKHJ1bklkICE9PSB0aGlzLmV2YWx1YXRpb25SdW5JZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnZlcnQgdG8gd2lkZ2V0IHRyZWUgKHRoaXMgd2lsbCBhbHNvIGFwcGx5IHRoZSBsYXlvdXQgbG9vaylcbiAgICAgIGNvbnN0IHRyZWUgPSBldmFsdWF0ZWQ7XG5cbiAgICAgIC8vIFVwZGF0ZSB3aWRnZXQgdHJlZVxuICAgICAgY29uc3QgcHJldiA9IHRoaXMud2lkZ2V0VHJlZSgpO1xuICAgICAgaWYgKCFpc0VxdWFsKHByZXYsIHRyZWUpKSB7XG4gICAgICAgIHRyZWUubW9kZSA9IHRoaXMubW9kZSgpO1xuICAgICAgICB0aGlzLndpZGdldFRyZWUuc2V0KHRyZWUpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBhc3luYyBleHByZXNzaW9uRXZhbHVhdG9yKGV4cHJlc3Npb246IGFueSwgY29udGV4dDogYW55KSB7XG4gICAgLy8gQ2hlY2sgaWYgaXQncyBhIGZvcm0gZGVmaW5pdGlvbiB0aGF0IG5lZWRzIGNvbnZlcnNpb25cbiAgICBpZiAodGhpcy5pc0Zvcm1EZWZpbml0aW9uKGV4cHJlc3Npb24pKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJzaW9uU2VydmljZS5jb252ZXJ0Rm9ybURlZmluaXRpb24oZXhwcmVzc2lvbik7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgY2FjaGUga2V5IHVzaW5nIGEgbW9yZSBlZmZpY2llbnQgbWV0aG9kXG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmdlbmVyYXRlQ2FjaGVLZXkoZXhwcmVzc2lvbiwgY29udGV4dCk7XG5cbiAgICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICAgIGlmICh0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXMoY2FjaGVLZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCBzY29wZTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlID0ge1xuICAgICAgY29udGV4dDoge1xuICAgICAgICBldmFsOiAocGF0aDogc3RyaW5nKSA9PiBnZXQoY29udGV4dCwgcGF0aCksXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV2YWx1YXRvclNlcnZpY2UuZXZhbHVhdGUoZXhwcmVzc2lvbiwgc2NvcGUpO1xuXG4gICAgLy8gQ2FjaGUgcmVzdWx0IHdpdGggTFJVLWxpa2UgYmVoYXZpb3JcbiAgICBpZiAodGhpcy5leHByZXNzaW9uQ2FjaGUuc2l6ZSA+IDUwKSB7XG4gICAgICAvLyBDbGVhciBoYWxmIHRoZSBjYWNoZSB3aGVuIGl0IGdldHMgdG9vIGxhcmdlXG4gICAgICBjb25zdCBrZXlzVG9EZWxldGUgPSBBcnJheS5mcm9tKHRoaXMuZXhwcmVzc2lvbkNhY2hlLmtleXMoKSkuc2xpY2UoMCwgMjUpO1xuICAgICAga2V5c1RvRGVsZXRlLmZvckVhY2goKGtleSkgPT4gdGhpcy5leHByZXNzaW9uQ2FjaGUuZGVsZXRlKGtleSkpO1xuICAgIH1cbiAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBPdXRwdXRzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gY29udGV4dCBjaGFuZ2UgaXMgaW5pdGlhdGVkXG4gICAqL1xuICBjb250ZXh0SW5pdGlhdGVkID0gb3V0cHV0PGFueT4oKTtcblxuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGZvcm0gYmVjb21lcyB2YWxpZC9pbnZhbGlkXG4gICAqL1xuICB2YWxpZGl0eUNoYW5nZSA9IG91dHB1dDxib29sZWFuPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJvcGVydGllcyAgIC0tLS1cblxuICBwcml2YXRlIGZvcm0gPSB2aWV3Q2hpbGQoQVhGb3JtQ29tcG9uZW50KTtcbiAgcHJpdmF0ZSBjb250YWluZXIgPSB2aWV3Q2hpbGQoQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50KTtcblxuICAvKipcbiAgICogSW50ZXJuYWwgY29udGV4dCBzaWduYWwgZm9yIHJlYWN0aXZpdHlcbiAgICovXG4gIHByb3RlY3RlZCBpbnRlcm5hbENvbnRleHQgPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgY29udGV4dCBmb3IgcmVzZXQgZnVuY3Rpb25hbGl0eVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsQ29udGV4dDogYW55ID0ge307XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBMaWZlY3ljbGUgTWV0aG9kcyAgIC0tLS1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBJbml0aWFsaXplIGludGVybmFsIGNvbnRleHQgd2l0aCBpbnB1dCBjb250ZXh0XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0KCkgPz8ge307XG4gICAgdGhpcy5pbnRlcm5hbENvbnRleHQuc2V0KGN0eCk7XG5cbiAgICAvLyBTdG9yZSBpbml0aWFsIGNvbnRleHQgZm9yIHJlc2V0IGZ1bmN0aW9uYWxpdHlcbiAgICB0aGlzLmluaXRpYWxDb250ZXh0ID0gY2xvbmVEZWVwKGN0eCk7XG5cbiAgICAvLyBTZXR1cCBSeEpTIHN0cmVhbXMgZm9yIGNvbnRleHQgbWFuYWdlbWVudFxuICAgIHRoaXMuc2V0dXBDb250ZXh0U3RyZWFtcygpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBFZmZlY3RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gc3luYyBjb250ZXh0IGNoYW5nZXMgZnJvbSBleHRlcm5hbCB0byBpbnRlcm5hbCAob3B0aW1pemVkIHdpdGggUnhKUylcbiAgICovXG4gICNjb250ZXh0U3luY0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0KCkgPz8ge307XG4gICAgdGhpcy5jb250ZXh0VXBkYXRlU3ViamVjdC5uZXh0KGN0eCk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFZmZlY3QgdG8gaGFuZGxlIHdpZGdldCB0cmVlIHN0YXR1cyBjaGFuZ2VzXG4gICAqL1xuICAjd2lkZ2V0U3RhdHVzRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB3aWRnZXRUcmVlID0gdGhpcy53aWRnZXRUcmVlKCk7XG4gICAgaWYgKHdpZGdldFRyZWUpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyKCk/LmJ1aWxkZXJTZXJ2aWNlLnNldFN0YXR1cyhBWFBQYWdlU3RhdHVzLlJlbmRlcmVkKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgRXZlbnQgSGFuZGxlcnMgICAtLS0tXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjb250ZXh0IGNoYW5nZSBldmVudHMgZnJvbSB3aWRnZXQgY29udGFpbmVyIChvcHRpbWl6ZWQgd2l0aCBSeEpTKVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRDaGFuZ2VkKGV2ZW50OiBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LnN0YXRlID09PSAnaW5pdGlhdGVkJykge1xuICAgICAgdGhpcy5jb250ZXh0SW5pdGlhdGVkLmVtaXQoZXZlbnQuZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29udGV4dENoYW5nZVN1YmplY3QubmV4dChldmVudC5kYXRhID8/IHt9KTtcbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBNZXRob2RzICAgLS0tLVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZvcm0gY29tcG9uZW50IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9ybSgpOiBBWEZvcm1Db21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZvcm0oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHdpZGdldCBjb250YWluZXIgY29tcG9uZW50IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29udGFpbmVyKCk6IEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgZm9ybSBjb250ZXh0XG4gICAqL1xuICBwdWJsaWMgZ2V0Q29udGV4dCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmludGVybmFsQ29udGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBmb3JtIGNvbnRleHQgcHJvZ3JhbW1hdGljYWxseVxuICAgKi9cbiAgcHVibGljIHVwZGF0ZUNvbnRleHQoY29udGV4dDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbENvbnRleHQuc2V0KGNvbnRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCB3aWRnZXQgdHJlZVxuICAgKi9cbiAgcHVibGljIGdldFdpZGdldFRyZWUoKTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLndpZGdldFRyZWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZm9ybVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlKCk6IFByb21pc2U8QVhWYWxpZGF0aW9uU3VtbWFyeT4ge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm0oKTtcbiAgICBpZiAoZm9ybSkge1xuICAgICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IGZvcm0udmFsaWRhdGUoKTtcbiAgICAgIHRoaXMudmFsaWRpdHlDaGFuZ2UuZW1pdChpc1ZhbGlkLnJlc3VsdCk7XG4gICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3VsdDogZmFsc2UsXG4gICAgICBtZXNzYWdlczogW10sXG4gICAgICBydWxlczogW10sXG4gICAgfSBhcyBBWFZhbGlkYXRpb25TdW1tYXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHRoZSBmb3JtIGNvbnRleHRcbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAvLyBDbGVhciBpbnRlcm5hbCBjb250ZXh0XG4gICAgdGhpcy5pbnRlcm5hbENvbnRleHQuc2V0KHt9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgbW9kZWwgc2lnbmFsXG4gICAgdGhpcy5jb250ZXh0LnNldCh7fSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIGZvcm0gdG8gaXRzIGluaXRpYWwgc3RhdGVcbiAgICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICAvLyBSZXNldCB0byBpbml0aWFsIGNvbnRleHRcbiAgICBjb25zdCByZXNldENvbnRleHQgPSBjbG9uZURlZXAodGhpcy5pbml0aWFsQ29udGV4dCk7XG4gICAgdGhpcy5pbnRlcm5hbENvbnRleHQuc2V0KHJlc2V0Q29udGV4dCk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIG1vZGVsIHNpZ25hbFxuICAgIHRoaXMuY29udGV4dC5zZXQocmVzZXRDb250ZXh0KTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUnhKUyBTdHJlYW0gU2V0dXAgICAtLS0tXG5cbiAgLyoqXG4gICAqIFNldHVwIFJ4SlMgc3RyZWFtcyBmb3IgY29udGV4dCBtYW5hZ2VtZW50XG4gICAqL1xuICBwcml2YXRlIHNldHVwQ29udGV4dFN0cmVhbXMoKTogdm9pZCB7XG4gICAgLy8gRGVib3VuY2VkIGNvbnRleHQgdXBkYXRlcyBmcm9tIGV4dGVybmFsIHNvdXJjZVxuICAgIHRoaXMuY29udGV4dFVwZGF0ZVN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTYpLCAvLyB+NjBmcHNcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IGlzRXF1YWwocHJldiwgY3VycikpLFxuICAgICAgICBzdGFydFdpdGgodGhpcy5jb250ZXh0KCkgPz8ge30pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY3R4KSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxDb250ZXh0LnNldChjdHgpO1xuICAgICAgfSk7XG5cbiAgICAvLyBEZWJvdW5jZWQgY29udGV4dCBjaGFuZ2VzIGZyb20gd2lkZ2V0c1xuICAgIHRoaXMuY29udGV4dENoYW5nZVN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMTYpLCAvLyB+NjBmcHNcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IGlzRXF1YWwocHJldiwgY3VycikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY3R4KSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxDb250ZXh0LnNldChjdHgpO1xuICAgICAgICAvLyBVcGRhdGUgdGhlIG1vZGVsIHNpZ25hbCBkaXJlY3RseSAtIGl0IHdpbGwgZW1pdCBjaGFuZ2UgZXZlbnRzIGF1dG9tYXRpY2FsbHlcbiAgICAgICAgdGhpcy5jb250ZXh0LnNldCh0aGlzLmludGVybmFsQ29udGV4dCgpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBUeXBlIEd1YXJkcyAgIC0tLS1cblxuICAvKipcbiAgICogVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgaW5wdXQgaXMgYSBmb3JtIGRlZmluaXRpb25cbiAgICovXG4gIHByaXZhdGUgaXNGb3JtRGVmaW5pdGlvbihkYXRhOiBhbnkpOiBkYXRhIGlzIEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB7XG4gICAgcmV0dXJuIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdncm91cHMnIGluIGRhdGEgJiYgQXJyYXkuaXNBcnJheShkYXRhLmdyb3Vwcyk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gLS0tLSAgIFV0aWxpdHkgTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogR2VuZXJhdGUgbGF5b3V0IGhhc2ggZm9yIGNoYW5nZSBkZXRlY3Rpb24gKHNob3J0IGhhc2gpXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlTGF5b3V0SGFzaChsYXlvdXQ6IGFueSwgbG9vazogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWxheW91dCkgcmV0dXJuICcnO1xuXG4gICAgLy8gR2VuZXJhdGUgc2hvcnQgaGFzaCBmb3IgbGFyZ2UgbGF5b3V0IHN0cmluZ3NcbiAgICBjb25zdCBsYXlvdXRTdHIgPSB0eXBlb2YgbGF5b3V0ID09PSAnc3RyaW5nJyA/IGxheW91dCA6IEpTT04uc3RyaW5naWZ5KGxheW91dCk7XG4gICAgY29uc3QgbGF5b3V0SGFzaCA9IHRoaXMuc2ltcGxlSGFzaChsYXlvdXRTdHIpO1xuICAgIHJldHVybiBgJHtsYXlvdXRIYXNofXwke2xvb2t9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBjYWNoZSBrZXkgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiAoc2hvcnQgaGFzaClcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDYWNoZUtleShleHByZXNzaW9uOiBhbnksIGNvbnRleHQ6IGFueSk6IHN0cmluZyB7XG4gICAgLy8gVXNlIHNob3J0IGhhc2ggZm9yIGJldHRlciBwZXJmb3JtYW5jZVxuICAgIGNvbnN0IGV4cHJTdHIgPSB0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycgPyBleHByZXNzaW9uIDogSlNPTi5zdHJpbmdpZnkoZXhwcmVzc2lvbik7XG4gICAgY29uc3QgZXhwckhhc2ggPSB0aGlzLnNpbXBsZUhhc2goZXhwclN0cik7XG4gICAgY29uc3QgY3R4SGFzaCA9IHRoaXMuZ2VuZXJhdGVDb250ZXh0SGFzaChjb250ZXh0KTtcbiAgICByZXR1cm4gYCR7ZXhwckhhc2h9fCR7Y3R4SGFzaH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgc2ltcGxlIGhhc2ggZm9yIGNvbnRleHQgY2hhbmdlIGRldGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRleHRIYXNoKGNvbnRleHQ6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb250ZXh0IHx8IHR5cGVvZiBjb250ZXh0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyhjb250ZXh0KTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmF0ZSBzaG9ydCBoYXNoIGZvciBjb250ZXh0XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbnRleHQpLnNvcnQoKTtcbiAgICBjb25zdCBjb250ZXh0U3RyID0ga2V5cy5tYXAoKGtleSkgPT4gYCR7a2V5fToke2NvbnRleHRba2V5XX1gKS5qb2luKCd8Jyk7XG4gICAgcmV0dXJuIHRoaXMuc2ltcGxlSGFzaChjb250ZXh0U3RyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW1wbGUgaGFzaCBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBzaG9ydCBrZXlzXG4gICAqL1xuICBwcml2YXRlIHNpbXBsZUhhc2goc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoYXNoID0gMDtcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2gudG9TdHJpbmcoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hhcjtcbiAgICAgIGhhc2ggPSBoYXNoICYgaGFzaDsgLy8gQ29udmVydCB0byAzMi1iaXQgaW50ZWdlclxuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdG8gcG9zaXRpdmUgaGV4IHN0cmluZ1xuICAgIHJldHVybiBNYXRoLmFicyhoYXNoKS50b1N0cmluZygxNik7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXPLayoutBuilderService } from './layout-builder.service';\nimport { AXPLayoutRendererComponent } from './layout-renderer.component';\nimport * as i0 from \"@angular/core\";\nexport class LayoutBuilderModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: LayoutBuilderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.4\", ngImport: i0, type: LayoutBuilderModule, imports: [CommonModule, AXPLayoutRendererComponent], exports: [AXPLayoutRendererComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: LayoutBuilderModule, providers: [AXPLayoutBuilderService], imports: [CommonModule, AXPLayoutRendererComponent] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: LayoutBuilderModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AXPLayoutRendererComponent],\n providers: [AXPLayoutBuilderService],\n exports: [AXPLayoutRendererComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2xheW91dC1idWlsZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFKcEIsWUFBWSxFQUFFLDBCQUEwQixhQUV4QywwQkFBMEI7K0dBRXpCLG1CQUFtQixhQUhuQixDQUFDLHVCQUF1QixDQUFDLFlBRDFCLFlBQVksRUFBRSwwQkFBMEI7OzJGQUl2QyxtQkFBbUI7a0JBTC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLDBCQUEwQixDQUFDO29CQUNuRCxTQUFTLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vbGF5b3V0LWJ1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBMYXlvdXRSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vbGF5b3V0LXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbQVhQTGF5b3V0QnVpbGRlclNlcnZpY2VdLFxuICBleHBvcnRzOiBbQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRCdWlsZGVyTW9kdWxlIHt9XG4iXX0=","export {};\n//#endregion\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LWJ1aWxkZXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvbGF5b3V0LWJ1aWxkZXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQXlyQkEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBvcHVwU2l6ZVR5cGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHtcbiAgQVhQQWN0aW9uTWVudUl0ZW0sXG4gIEFYUEV4cHJlc3Npb24sXG4gIEFYUEdyaWRMYXlvdXRPcHRpb25zLFxuICBBWFBPcHRpb25zRGF0YSxcbiAgQVhQVmFsaWRhdGlvblJ1bGVzLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSwgQVhQV2lkZ2V0UmVuZGVyTW9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlJztcblxuLyoqXG4gKiBGb3JtIGFwcGVhcmFuY2UgYW5kIGRlbnNpdHkgc3R5bGluZyAodXNpbmcgZmllbGRzZXQgd2lkZ2V0IGxvb2spXG4gKi9cbmV4cG9ydCB0eXBlIEFYUER5bmFtaWNGb3JtTG9vayA9ICdmaWVsZHNldCcgfCAnY2FyZCcgfCAnZ3JvdXAnIHwgJ2NvbnRhaW5lcic7XG5cbi8qKlxuICogRm9ybSByZW5kZXJpbmcgbW9kZVxuICovXG5leHBvcnQgdHlwZSBBWFBEeW5hbWljRm9ybU1vZGUgPSAndmlldycgfCAnZWRpdCc7XG5cbi8qKlxuICogRm9ybSBsYXlvdXQgZGlyZWN0aW9uIGFuZCBmbG93XG4gKi9cbmV4cG9ydCB0eXBlIEFYUER5bmFtaWNGb3JtRGlyZWN0aW9uID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdncmlkJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBEeW5hbWljRm9ybUZpZWxkRGVmaW5pdGlvbiB7XG4gIHBhdGg6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwZXItZmllbGQgcmVuZGVyaW5nIG1vZGUuIFRha2VzIHByZWNlZGVuY2Ugb3ZlciBzZWN0aW9uIGFuZCBmb3JtIG1vZGVzLlxuICAgKi9cbiAgbW9kZT86IEFYUER5bmFtaWNGb3JtTW9kZTtcbiAgbGF5b3V0PzogQVhQR3JpZExheW91dE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRHluYW1pY0Zvcm1Hcm91cERlZmluaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcGFyYW1ldGVyczogQVhQRHluYW1pY0Zvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBlci1zZWN0aW9uIHJlbmRlcmluZyBtb2RlLiBUYWtlcyBwcmVjZWRlbmNlIG92ZXIgZm9ybSBtb2RlIGFuZCBpcyBvdmVycmlkZGVuIGJ5IGZpZWxkIG1vZGUuXG4gICAqL1xuICBtb2RlPzogQVhQRHluYW1pY0Zvcm1Nb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUER5bmFtaWNGb3JtRGVmaW5pdGlvbiB7XG4gIGdyb3VwczogQVhQRHluYW1pY0Zvcm1Hcm91cERlZmluaXRpb25bXTtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZvcm0tbGV2ZWwgcmVuZGVyaW5nIG1vZGVcbiAgICovXG4gIG1vZGU/OiBBWFBEeW5hbWljRm9ybU1vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlhbG9nUmVmIHtcbiAgLyoqXG4gICAqIE1hbnVhbGx5IGNsb3NlIHRoZSBkaWFsb2cgKG9wdGlvbmFsIC0gZGlhbG9nIGNsb3NlcyBhdXRvbWF0aWNhbGx5IGFmdGVyIHVzZXIgaW50ZXJhY3Rpb24pXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkO1xuICAvKipcbiAgICogR2V0IHRoZSBmb3JtIGRhdGEgZnJvbSB0aGUgZGlhbG9nXG4gICAqL1xuICBjb250ZXh0KCk6IGFueTtcbiAgLyoqXG4gICAqIEdldCB0aGUgYWN0aW9uIHRoYXQgd2FzIGNsaWNrZWQgYnkgdGhlIHVzZXJcbiAgICovXG4gIGFjdGlvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBTZXQgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIGRpYWxvZ1xuICAgKi9cbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKTogdm9pZDtcbn1cblxuLy8jcmVnaW9uIC0tLS0gICBXaWRnZXQgT3B0aW9ucyBJbnRlcmZhY2VzICAgLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIExheW91dFdpZGdldE9wdGlvbnMge1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlV2lkZ2V0T3B0aW9ucyBleHRlbmRzIExheW91dFdpZGdldE9wdGlvbnMge1xuICBwYXRoOiBzdHJpbmc7IC8vIFJlcXVpcmVkIGZvciBhbGwgdmFsdWUgd2lkZ2V0c1xuICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gIHZhbGlkYXRpb25zPzogQVhQVmFsaWRhdGlvblJ1bGVzO1xufVxuXG4vLyBXaWRnZXQgdHlwZSBvcHRpb25zIC0gb25seSBpbnRlcm5hbCB3aWRnZXQgYmVoYXZpb3IsIG5vIHN0eWxpbmcvbGF5b3V0XG5leHBvcnQgaW50ZXJmYWNlIFRleHRCb3hPcHRpb25zIGV4dGVuZHMgVmFsdWVXaWRnZXRPcHRpb25zIHtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBwcmVmaXg/OiBzdHJpbmc7XG4gIHN1ZmZpeD86IHN0cmluZztcbiAgY2xlYXJCdXR0b24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckJveE9wdGlvbnMgZXh0ZW5kcyBWYWx1ZVdpZGdldE9wdGlvbnMge1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgc3RlcD86IG51bWJlcjtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGZvcm1hdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RCb3hPcHRpb25zIGV4dGVuZHMgVmFsdWVXaWRnZXRPcHRpb25zIHtcbiAgZGF0YVNvdXJjZTogYW55W10gfCAoKCkgPT4gYW55W10pIHwgKCgpID0+IFByb21pc2U8YW55W10+KSB8IEFYRGF0YVNvdXJjZTxhbnk+O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICB0ZXh0RmllbGQ/OiBzdHJpbmc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIHNlYXJjaGFibGU/OiBib29sZWFuO1xuICBjbGVhckJ1dHRvbj86IGJvb2xlYW47XG4gIGFsbG93U2VhcmNoPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUJveE9wdGlvbnMgZXh0ZW5kcyBWYWx1ZVdpZGdldE9wdGlvbnMge1xuICB0eXBlPzogJ2RhdGUnIHwgJ3RpbWUnIHwgJ2RhdGV0aW1lJztcbiAgZm9ybWF0Pzogc3RyaW5nO1xuICBtaW4/OiBEYXRlIHwgc3RyaW5nO1xuICBtYXg/OiBEYXRlIHwgc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgY2xlYXJCdXR0b24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvZ2dsZVN3aXRjaE9wdGlvbnMgZXh0ZW5kcyBWYWx1ZVdpZGdldE9wdGlvbnMge1xuICBsYWJlbD86IHN0cmluZztcbiAgdHJ1ZVRleHQ/OiBzdHJpbmc7XG4gIGZhbHNlVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXJnZVRleHRCb3hPcHRpb25zIGV4dGVuZHMgVmFsdWVXaWRnZXRPcHRpb25zIHtcbiAgcm93cz86IG51bWJlcjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICByZXNpemFibGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yQm94T3B0aW9ucyBleHRlbmRzIFZhbHVlV2lkZ2V0T3B0aW9ucyB7XG4gIGZvcm1hdD86ICdoZXgnIHwgJ3JnYicgfCAnaHNsJztcbiAgc2hvd0FscGhhPzogYm9vbGVhbjtcbiAgc2hvd1BhbGV0dGU/OiBib29sZWFuO1xufVxuXG4vLyBDb250YWluZXItc3BlY2lmaWMgb3B0aW9ucyBiYXNlZCBvbiBhY3R1YWwgd2lkZ2V0IGNvbmZpZ3NcbmV4cG9ydCBpbnRlcmZhY2UgQVhQRmxleENvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBMYXlvdXRXaWRnZXRPcHRpb25zIHtcbiAgZmxleERpcmVjdGlvbj86ICdyb3cnIHwgJ2NvbHVtbicgfCAncm93LXJldmVyc2UnIHwgJ2NvbHVtbi1yZXZlcnNlJztcbiAgZmxleFdyYXA/OiAnbm93cmFwJyB8ICd3cmFwJyB8ICd3cmFwLXJldmVyc2UnO1xuICBqdXN0aWZ5Q29udGVudD86ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdzcGFjZS1iZXR3ZWVuJyB8ICdzcGFjZS1hcm91bmQnIHwgJ3NwYWNlLWV2ZW5seSc7XG4gIGFsaWduSXRlbXM/OiAnZmxleC1zdGFydCcgfCAnZmxleC1lbmQnIHwgJ2NlbnRlcicgfCAnYmFzZWxpbmUnIHwgJ3N0cmV0Y2gnO1xuICBnYXA/OiBzdHJpbmc7XG4gIHNwYWNpbmc/OiB7XG4gICAgcGFkZGluZz86IHN0cmluZztcbiAgICBtYXJnaW4/OiBzdHJpbmc7XG4gIH07XG4gIGJvcmRlcj86IHtcbiAgICByYWRpdXM/OiBzdHJpbmc7XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG4gIH07XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgZGlyZWN0aW9uPzogc3RyaW5nO1xuICBvdmVyZmxvdz86IHN0cmluZztcbiAgb3ZlcmZsb3dYPzogc3RyaW5nO1xuICBvdmVyZmxvd1k/OiBzdHJpbmc7XG4gIHdpZHRoPzogc3RyaW5nO1xuICBtaW5XaWR0aD86IHN0cmluZztcbiAgbWF4V2lkdGg/OiBzdHJpbmc7XG4gIGhlaWdodD86IHN0cmluZztcbiAgbWluSGVpZ2h0Pzogc3RyaW5nO1xuICBtYXhIZWlnaHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQR3JpZENvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBMYXlvdXRXaWRnZXRPcHRpb25zIHtcbiAgZ3JpZD86IHtcbiAgICBkZWZhdWx0Pzoge1xuICAgICAgY29sdW1ucz86IG51bWJlcjtcbiAgICAgIHJvd3M/OiBudW1iZXI7XG4gICAgICBnYXA/OiBzdHJpbmc7XG4gICAgICBqdXN0aWZ5SXRlbXM/OiBzdHJpbmc7XG4gICAgICBhbGlnbkl0ZW1zPzogc3RyaW5nO1xuICAgICAgYXV0b0Zsb3c/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbiAgc3BhY2luZz86IHtcbiAgICBwYWRkaW5nPzogc3RyaW5nO1xuICAgIG1hcmdpbj86IHN0cmluZztcbiAgfTtcbiAgYm9yZGVyPzoge1xuICAgIHJhZGl1cz86IHN0cmluZztcbiAgICB3aWR0aD86IHN0cmluZztcbiAgICBjb2xvcj86IHN0cmluZztcbiAgICBzdHlsZT86IHN0cmluZztcbiAgfTtcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiBzdHJpbmc7XG4gIG92ZXJmbG93Pzogc3RyaW5nO1xuICBvdmVyZmxvd1g/OiBzdHJpbmc7XG4gIG92ZXJmbG93WT86IHN0cmluZztcbiAgd2lkdGg/OiBzdHJpbmc7XG4gIG1pbldpZHRoPzogc3RyaW5nO1xuICBtYXhXaWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xuICBtaW5IZWlnaHQ/OiBzdHJpbmc7XG4gIG1heEhlaWdodD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBQYW5lbENvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBMYXlvdXRXaWRnZXRPcHRpb25zIHtcbiAgY2FwdGlvbj86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbiAgbG9vaz86ICdzb2xpZCcgfCAnZmlsbCcgfCAnb3V0bGluZScgfCAnZmxhdCcgfCAnbm9uZSc7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgc2hvd0hlYWRlcj86IGJvb2xlYW47XG4gIGNvbGxhcHNlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQUGFnZUNvbnRhaW5lck9wdGlvbnMgZXh0ZW5kcyBMYXlvdXRXaWRnZXRPcHRpb25zIHtcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICB0aGVtZT86IHsgaWQ6IHN0cmluZyB9O1xuICBoYXNIZWFkZXI/OiBib29sZWFuO1xuICBoYXNGb290ZXI/OiBib29sZWFuO1xuICBkaXJlY3Rpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQVGFic2V0Q29udGFpbmVyT3B0aW9ucyBleHRlbmRzIExheW91dFdpZGdldE9wdGlvbnMge1xuICBsb29rPzogJ3dpdGgtbGluZScgfCAnd2l0aC1saW5lLWNvbG9yJyB8ICdwaWxscycgfCAncGlsbHMtY29sb3InO1xuICBvcmllbnRhdGlvbj86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG4gIGFjdGl2ZUluZGV4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEZpZWxkc2V0Q29udGFpbmVyT3B0aW9ucyBleHRlbmRzIExheW91dFdpZGdldE9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbGxhcHNpYmxlPzogYm9vbGVhbjtcbiAgaXNPcGVuPzogYm9vbGVhbjtcbiAgbG9vaz86ICdmaWVsZHNldCcgfCAnY2FyZCcgfCAnZ3JvdXAnO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIHNob3dIZWFkZXI/OiBib29sZWFuO1xuICBjb2xzPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUEZvcm1GaWVsZE9wdGlvbnMgZXh0ZW5kcyBMYXlvdXRXaWRnZXRPcHRpb25zIHtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHNob3dMYWJlbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGlhbG9nQ29udGFpbmVyT3B0aW9ucyBleHRlbmRzIExheW91dFdpZGdldE9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgc2l6ZT86IEFYUG9wdXBTaXplVHlwZTtcbiAgY2xvc2VCdXR0b24/OiBib29sZWFuO1xuICBjb250ZXh0PzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpY2hUZXh0T3B0aW9ucyBleHRlbmRzIFZhbHVlV2lkZ2V0T3B0aW9ucyB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB0b29sYmFyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzd29yZEJveE9wdGlvbnMgZXh0ZW5kcyBWYWx1ZVdpZGdldE9wdGlvbnMge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgcmV2ZWFsVG9nZ2xlPzogYm9vbGVhbjtcbiAgbWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cEJveE9wdGlvbnMgZXh0ZW5kcyBWYWx1ZVdpZGdldE9wdGlvbnMge1xuICBkYXRhU291cmNlPzogYW55W10gfCAoKCkgPT4gYW55W10pIHwgKCgpID0+IFByb21pc2U8YW55W10+KTtcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcbiAgdGV4dEZpZWxkPzogc3RyaW5nO1xuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcbiAgZW50aXR5Pzogc3RyaW5nO1xuICBsb29rPzogc3RyaW5nO1xuICBjb2x1bW5zPzogYW55W107XG4gIGV4cG9zZT86IGFueVtdO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG4gIGFsbG93Q2xlYXI/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkxpc3RPcHRpb25zIGV4dGVuZHMgVmFsdWVXaWRnZXRPcHRpb25zIHtcbiAgZGF0YVNvdXJjZTogYW55W10gfCAoKCkgPT4gYW55W10pIHwgKCgpID0+IFByb21pc2U8YW55W10+KSB8IEFYRGF0YVNvdXJjZTxhbnk+O1xuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xuICB0ZXh0RmllbGQ/OiBzdHJpbmc7XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xufVxuXG4vLyBMaXN0IFdpZGdldCBUeXBlc1xuZXhwb3J0IGludGVyZmFjZSBBWFBMaXN0V2lkZ2V0Q29sdW1uIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIHdpZHRoPzogc3RyaW5nO1xuICB3aWRnZXQ/OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgb3B0aW9ucz86IGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBMaXN0V2lkZ2V0Um93Q29tbWFuZCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuIHwgc3RyaW5nO1xuICBjb21tYW5kPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUExpc3RXaWRnZXRPcHRpb25zIGV4dGVuZHMgTGF5b3V0V2lkZ2V0T3B0aW9ucyB7XG4gIGRhdGFTb3VyY2U/OiBhbnlbXSB8IEFYRGF0YVNvdXJjZTtcbiAgY29sdW1ucz86IEFYUExpc3RXaWRnZXRDb2x1bW5bXTtcblxuICAvLyBFdmVudCBDYWxsYmFja3NcbiAgb25Sb3dDbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25Sb3dEb3VibGVDbGljaz86IChyb3c6IGFueSkgPT4gdm9pZDtcbiAgb25TZWxlY3Rpb25DaGFuZ2U/OiAoc2VsZWN0ZWRSb3dzOiBhbnlbXSkgPT4gdm9pZDtcbiAgb25Sb3dDb21tYW5kPzogKGNvbW1hbmQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnlbXSkgPT4gdm9pZDtcblxuICAvLyBUYWJsZSBGZWF0dXJlc1xuICBwYWdpbmc/OiBib29sZWFuO1xuICBzaG93SGVhZGVyPzogYm9vbGVhbjtcbiAgc2hvd0Zvb3Rlcj86IGJvb2xlYW47XG4gIGZpeEhlYWRlcj86IGJvb2xlYW47XG4gIGZpeEZvb3Rlcj86IGJvb2xlYW47XG4gIGZldGNoRGF0YU1vZGU/OiAnYXV0bycgfCAnbWFudWFsJztcbiAgcGFyZW50RmllbGQ/OiBzdHJpbmc7XG4gIG1pbkhlaWdodD86IHN0cmluZyB8IG51bWJlcjtcblxuICAvLyBTZWxlY3Rpb24gJiBJbmRleFxuICBzaG93SW5kZXg/OiBib29sZWFuO1xuICBhbGxvd1NlbGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLy8gUm93IENvbW1hbmRzXG4gIHByaW1hcnlDb21tYW5kcz86IGFueVtdO1xuICBzZWNvbmRhcnlDb21tYW5kcz86IEFYUExpc3RXaWRnZXRSb3dDb21tYW5kW107XG5cbiAgLy8gTG9hZGluZyBTdGF0ZVxuICBsb2FkaW5nPzoge1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIGFuaW1hdGlvbj86IGJvb2xlYW47XG4gIH07XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIEluaGVyaXRhbmNlIENvbnRleHQgVHlwZXMgICAtLS0tXG5cbi8vIENvbnRleHQgZm9yIGluaGVyaXRpbmcgcHJvcGVydGllcyBmcm9tIHBhcmVudCBub2Rlc1xuZXhwb3J0IGludGVyZmFjZSBJbmhlcml0YW5jZUNvbnRleHQge1xuICBtb2RlPzogQVhQV2lkZ2V0UmVuZGVyTW9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuIHwgc3RyaW5nO1xuICByZWFkb25seT86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIGRpcmVjdGlvbj86ICdydGwnIHwgJ2x0cic7XG4gIHZpc2libGU/OiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG4vLyBIZWxwZXIgdHlwZSBmb3IgcmVzb2x2aW5nIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG5leHBvcnQgaW50ZXJmYWNlIEluaGVyaXRlZFByb3BlcnRpZXMge1xuICBtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlO1xuICBkaXNhYmxlZDogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGRpcmVjdGlvbjogJ3J0bCcgfCAnbHRyJyB8IHVuZGVmaW5lZDtcbiAgdmlzaWJsZTogYm9vbGVhbiB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQnVpbGRlciBTdGF0ZSBUeXBlcyAgIC0tLS1cblxuLy8gQmFzZSB3aWRnZXQgY29uZmlndXJhdGlvbiAtIG5vIHBhdGggbWFuYWdlbWVudCBoZXJlXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZ3VyYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbn1cblxuLy8gQnVpbGRlciBzdGF0ZSBpbnRlcmZhY2VzXG5leHBvcnQgdHlwZSBMYXlvdXRCdWlsZGVyU3RhdGUgPSBBWFBXaWRnZXROb2RlO1xuXG4vLyBXaWRnZXRCdWlsZGVyU3RhdGUgbWlycm9ycyBBWFBXaWRnZXROb2RlIGJ1dCBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVzIGBjaGlsZHJlbmAgZm9yIG1vc3Qgd2lkZ2V0c1xuZXhwb3J0IHR5cGUgV2lkZ2V0QnVpbGRlclN0YXRlID0gT21pdDxBWFBXaWRnZXROb2RlLCAnY2hpbGRyZW4nPiAmIHsgbGF5b3V0PzogQVhQR3JpZExheW91dE9wdGlvbnMgfTtcblxuLy8gRm9ybUZpZWxkQnVpbGRlclN0YXRlIGluY2x1ZGVzIGNoaWxkcmVuIHNpbmNlIGZvcm0gZmllbGRzIGNhbiBjb250YWluIHdpZGdldHNcbmV4cG9ydCB0eXBlIEZvcm1GaWVsZEJ1aWxkZXJTdGF0ZSA9IEFYUFdpZGdldE5vZGUgJiB7IGxheW91dD86IEFYUEdyaWRMYXlvdXRPcHRpb25zIH07XG5cbi8vIERpYWxvZ0J1aWxkZXJTdGF0ZSBpbmNsdWRlcyBkaWFsb2ctc3BlY2lmaWMgcHJvcGVydGllc1xuZXhwb3J0IHR5cGUgRGlhbG9nQnVpbGRlclN0YXRlID0gQVhQV2lkZ2V0Tm9kZSAmIHtcbiAgbGF5b3V0PzogQVhQR3JpZExheW91dE9wdGlvbnM7XG4gIGRpYWxvZ09wdGlvbnM/OiBBWFBEaWFsb2dDb250YWluZXJPcHRpb25zO1xuICBhY3Rpb25zPzoge1xuICAgIGZvb3Rlcj86IHtcbiAgICAgIHByZWZpeD86IEFYUEFjdGlvbk1lbnVJdGVtW107XG4gICAgICBzdWZmaXg/OiBBWFBBY3Rpb25NZW51SXRlbVtdO1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25CdWlsZGVyIHtcbiAgY2FuY2VsKHRleHQ/OiBzdHJpbmcpOiBJQWN0aW9uQnVpbGRlcjtcbiAgc3VibWl0KHRleHQ/OiBzdHJpbmcpOiBJQWN0aW9uQnVpbGRlcjtcbiAgY3VzdG9tKGFjdGlvbjogQVhQQWN0aW9uTWVudUl0ZW0pOiBJQWN0aW9uQnVpbGRlcjtcbn1cblxuLy8jZW5kcmVnaW9uXG5cbi8vI3JlZ2lvbiAtLS0tICAgQ29yZSBCdWlsZGVyIEludGVyZmFjZXMgICAtLS0tXG5cbi8vIE1haW4gbGF5b3V0IGJ1aWxkZXIgaW50ZXJmYWNlIC0gU2luZ2xlIFJlc3BvbnNpYmlsaXR5OiBMYXlvdXQgb3JjaGVzdHJhdGlvblxuZXhwb3J0IGludGVyZmFjZSBJTGF5b3V0QnVpbGRlciB7XG4gIC8vIFByZWRlZmluZWQgbGF5b3V0IGNvbnRhaW5lcnMgYXQgcm9vdCBsZXZlbCAtIG9ubHkgdGhlc2UgYXJlIGFsbG93ZWQgd2l0aCBzcGVjaWZpYyB0eXBlc1xuICBncmlkKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJR3JpZENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBJTGF5b3V0QnVpbGRlcjtcbiAgZmxleChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXI7XG4gIHBhbmVsKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJUGFuZWxDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXI7XG4gIHBhZ2UoZGVsZWdhdGU6IChjb250YWluZXI6IElQYWdlQ29udGFpbmVyQnVpbGRlcikgPT4gdm9pZCk6IElMYXlvdXRCdWlsZGVyO1xuICB0YWJzZXQoZGVsZWdhdGU6IChjb250YWluZXI6IElUYWJzZXRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXI7XG4gIGZpZWxkc2V0KGRlbGVnYXRlOiAoY29udGFpbmVyOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSUxheW91dEJ1aWxkZXI7XG4gIGRpYWxvZyhkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSURpYWxvZ0J1aWxkZXIpID0+IHZvaWQpOiBJRGlhbG9nQnVpbGRlcjtcblxuICAvLyBCdWlsZCBhbmQgcmVuZGVyXG4gIGJ1aWxkKCk6IEFYUFdpZGdldE5vZGU7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIFdpZGdldCBCdWlsZGVyIEludGVyZmFjZXMgICAtLS0tXG5cbi8vIEJhc2Ugd2lkZ2V0IGJ1aWxkZXIgaW50ZXJmYWNlIC0gU2luZ2xlIFJlc3BvbnNpYmlsaXR5OiBXaWRnZXQgY29uZmlndXJhdGlvblxuZXhwb3J0IGludGVyZmFjZSBJV2lkZ2V0QnVpbGRlciB7XG4gIG5hbWUobmFtZTogc3RyaW5nKTogSVdpZGdldEJ1aWxkZXI7XG4gIHBhdGgocGF0aDogc3RyaW5nKTogSVdpZGdldEJ1aWxkZXI7XG4gIHR5cGUodHlwZTogc3RyaW5nKTogSVdpZGdldEJ1aWxkZXI7XG4gIG9wdGlvbnMob3B0aW9uczogQVhQT3B0aW9uc0RhdGEpOiBJV2lkZ2V0QnVpbGRlcjtcblxuICAvLyBMYXlvdXRcbiAgbGF5b3V0KGNvbmZpZzogUGFydGlhbDxBWFBHcmlkTGF5b3V0T3B0aW9ucz4pOiBJV2lkZ2V0QnVpbGRlcjtcbiAgbGF5b3V0KGNvbFNwYW46IG51bWJlcik6IElXaWRnZXRCdWlsZGVyO1xuICBtb2RlKG1vZGU6IEFYUFdpZGdldFJlbmRlck1vZGUpOiBJV2lkZ2V0QnVpbGRlcjtcblxuICAvLyBTdGF0ZSAobWFuYWdlZCBieSBoaWdoZXItbGV2ZWwgc3lzdGVtcyBsaWtlIGR5bmFtaWMgZm9ybXMpXG4gIHZpc2libGUoY29uZGl0aW9uOiBib29sZWFuIHwgc3RyaW5nKTogSVdpZGdldEJ1aWxkZXI7XG4gIGRpc2FibGVkKGNvbmRpdGlvbjogYm9vbGVhbiB8IHN0cmluZyk6IElXaWRnZXRCdWlsZGVyO1xuICByZWFkb25seShjb25kaXRpb246IGJvb2xlYW4gfCBzdHJpbmcpOiBJV2lkZ2V0QnVpbGRlcjtcbiAgZGlyZWN0aW9uKGRpcmVjdGlvbjogJ3J0bCcgfCAnbHRyJyk6IElXaWRnZXRCdWlsZGVyO1xuXG4gIC8vIEluaGVyaXRhbmNlIGNvbnRleHQgbWV0aG9kc1xuICB3aXRoSW5oZXJpdGFuY2VDb250ZXh0KGNvbnRleHQ6IEluaGVyaXRhbmNlQ29udGV4dCk6IElXaWRnZXRCdWlsZGVyO1xuICBnZXRJbmhlcml0YW5jZUNvbnRleHQoKTogSW5oZXJpdGFuY2VDb250ZXh0O1xuXG4gIC8vIEJ1aWxkXG4gIGJ1aWxkKCk6IEFYUFdpZGdldE5vZGU7XG59XG5cbi8vI2VuZHJlZ2lvblxuXG4vLyNyZWdpb24gLS0tLSAgIENvbnRhaW5lciBCdWlsZGVyIEludGVyZmFjZXMgICAtLS0tXG5cbi8vIEJhc2UgY29udGFpbmVyIGJ1aWxkZXIgaW50ZXJmYWNlIC0gSW50ZXJmYWNlIFNlZ3JlZ2F0aW9uOiBDb21tb24gY29udGFpbmVyIG9wZXJhdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VDb250YWluZXJCdWlsZGVyPFRDb250YWluZXIgPSBhbnk+IHtcbiAgbmFtZShuYW1lOiBzdHJpbmcpOiBUQ29udGFpbmVyO1xuICBwYXRoKHBhdGg6IHN0cmluZyk6IFRDb250YWluZXI7XG4gIG1vZGUobW9kZTogQVhQV2lkZ2V0UmVuZGVyTW9kZSk6IFRDb250YWluZXI7XG4gIHZpc2libGUoY29uZGl0aW9uOiBib29sZWFuIHwgQVhQRXhwcmVzc2lvbik6IFRDb250YWluZXI7XG4gIGRpc2FibGVkKGNvbmRpdGlvbjogYm9vbGVhbiB8IEFYUEV4cHJlc3Npb24pOiBUQ29udGFpbmVyO1xuICByZWFkb25seShjb25kaXRpb246IGJvb2xlYW4gfCBBWFBFeHByZXNzaW9uKTogVENvbnRhaW5lcjtcbiAgZGlyZWN0aW9uKGRpcmVjdGlvbjogJ3J0bCcgfCAnbHRyJyk6IFRDb250YWluZXI7XG5cbiAgLy8gSW5oZXJpdGFuY2UgY29udGV4dCBtZXRob2RzXG4gIHdpdGhJbmhlcml0YW5jZUNvbnRleHQoY29udGV4dDogSW5oZXJpdGFuY2VDb250ZXh0KTogVENvbnRhaW5lcjtcbiAgZ2V0SW5oZXJpdGFuY2VDb250ZXh0KCk6IEluaGVyaXRhbmNlQ29udGV4dDtcblxuICBidWlsZCgpOiBBWFBXaWRnZXROb2RlO1xufVxuXG4vLyBMYXlvdXQtc3BlY2lmaWMgY29udGFpbmVyIG9wZXJhdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgSUxheW91dENvbnRhaW5lckJ1aWxkZXI8VENvbnRhaW5lciA9IGFueT4ge1xuICBsYXlvdXQoY29uZmlnOiBQYXJ0aWFsPEFYUEdyaWRMYXlvdXRPcHRpb25zPik6IFRDb250YWluZXI7XG4gIGxheW91dChjb2xTcGFuOiBudW1iZXIpOiBUQ29udGFpbmVyO1xufVxuXG4vLyBDaGlsZCBjb250YWluZXIgbWFuYWdlbWVudFxuZXhwb3J0IGludGVyZmFjZSBJQ2hpbGRDb250YWluZXJCdWlsZGVyPFRDb250YWluZXIgPSBhbnk+IHtcbiAgZ3JpZChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUdyaWRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lcjtcbiAgZmxleChkZWxlZ2F0ZTogKGNvbnRhaW5lcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lcjtcbiAgcGFuZWwoZGVsZWdhdGU6IChjb250YWluZXI6IElQYW5lbENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyO1xuICBwYWdlKGRlbGVnYXRlOiAoY29udGFpbmVyOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyO1xuICB0YWJzZXQoZGVsZWdhdGU6IChjb250YWluZXI6IElUYWJzZXRDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lcjtcbiAgZmllbGRzZXQoZGVsZWdhdGU6IChjb250YWluZXI6IElGaWVsZHNldENvbnRhaW5lckJ1aWxkZXIpID0+IHZvaWQpOiBUQ29udGFpbmVyO1xuICBmb3JtRmllbGQobGFiZWw6IHN0cmluZywgZGVsZWdhdGU/OiAoZmllbGQ6IElGb3JtRmllbGRCdWlsZGVyKSA9PiB2b2lkKTogVENvbnRhaW5lcjtcbn1cblxuLy8gV2lkZ2V0IGNyZWF0aW9uIG9wZXJhdGlvbnNcbmV4cG9ydCBpbnRlcmZhY2UgSVdpZGdldENvbnRhaW5lckJ1aWxkZXI8VENvbnRhaW5lciA9IGFueT4ge1xuICB0ZXh0Qm94KG9wdGlvbnM/OiBUZXh0Qm94T3B0aW9ucyk6IFRDb250YWluZXI7XG4gIGxhcmdlVGV4dEJveChvcHRpb25zPzogTGFyZ2VUZXh0Qm94T3B0aW9ucyk6IFRDb250YWluZXI7XG4gIHJpY2hUZXh0KG9wdGlvbnM/OiBSaWNoVGV4dE9wdGlvbnMpOiBUQ29udGFpbmVyO1xuICBwYXNzd29yZEJveChvcHRpb25zPzogUGFzc3dvcmRCb3hPcHRpb25zKTogVENvbnRhaW5lcjtcbiAgbnVtYmVyQm94KG9wdGlvbnM/OiBOdW1iZXJCb3hPcHRpb25zKTogVENvbnRhaW5lcjtcbiAgc2VsZWN0Qm94KG9wdGlvbnM6IFNlbGVjdEJveE9wdGlvbnMpOiBUQ29udGFpbmVyO1xuICBsb29rdXBCb3gob3B0aW9uczogTG9va3VwQm94T3B0aW9ucyk6IFRDb250YWluZXI7XG4gIHNlbGVjdGlvbkxpc3Qob3B0aW9uczogU2VsZWN0aW9uTGlzdE9wdGlvbnMpOiBUQ29udGFpbmVyO1xuICBkYXRlVGltZUJveChvcHRpb25zPzogRGF0ZVRpbWVCb3hPcHRpb25zKTogVENvbnRhaW5lcjtcbiAgdG9nZ2xlU3dpdGNoKG9wdGlvbnM/OiBUb2dnbGVTd2l0Y2hPcHRpb25zKTogVENvbnRhaW5lcjtcbiAgY29sb3JCb3gob3B0aW9ucz86IENvbG9yQm94T3B0aW9ucyk6IFRDb250YWluZXI7XG4gIGxpc3QoZGVsZWdhdGU6IChjb250YWluZXI6IElMaXN0V2lkZ2V0QnVpbGRlcikgPT4gdm9pZCk6IFRDb250YWluZXI7XG4gIGN1c3RvbVdpZGdldDxUPih0eXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBUKTogVENvbnRhaW5lcjtcbn1cblxuLy8gRmxleCBjb250YWluZXIgYnVpbGRlciAtIEludGVyZmFjZSBTZWdyZWdhdGlvbjogQ29tYmluZXMgYWxsIGNvbnRhaW5lciBpbnRlcmZhY2VzXG5leHBvcnQgaW50ZXJmYWNlIElGbGV4Q29udGFpbmVyQnVpbGRlclxuICBleHRlbmRzIElCYXNlQ29udGFpbmVyQnVpbGRlcjxJRmxleENvbnRhaW5lckJ1aWxkZXI+LFxuICAgIElMYXlvdXRDb250YWluZXJCdWlsZGVyPElGbGV4Q29udGFpbmVyQnVpbGRlcj4sXG4gICAgSUNoaWxkQ29udGFpbmVyQnVpbGRlcjxJRmxleENvbnRhaW5lckJ1aWxkZXI+LFxuICAgIElXaWRnZXRDb250YWluZXJCdWlsZGVyPElGbGV4Q29udGFpbmVyQnVpbGRlcj4ge1xuICAvLyBGbGV4LXNwZWNpZmljIG9wdGlvbnMgLSBib3RoIG9iamVjdCBhbmQgaW5kaXZpZHVhbCBtZXRob2RzXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQRmxleENvbnRhaW5lck9wdGlvbnMpOiBJRmxleENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldERpcmVjdGlvbihkaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbicgfCAncm93LXJldmVyc2UnIHwgJ2NvbHVtbi1yZXZlcnNlJyk6IElGbGV4Q29udGFpbmVyQnVpbGRlcjtcbiAgc2V0V3JhcCh3cmFwOiAnbm93cmFwJyB8ICd3cmFwJyB8ICd3cmFwLXJldmVyc2UnKTogSUZsZXhDb250YWluZXJCdWlsZGVyO1xuICBzZXRKdXN0aWZ5Q29udGVudChcbiAgICBqdXN0aWZ5OiAnZmxleC1zdGFydCcgfCAnZmxleC1lbmQnIHwgJ2NlbnRlcicgfCAnc3BhY2UtYmV0d2VlbicgfCAnc3BhY2UtYXJvdW5kJyB8ICdzcGFjZS1ldmVubHknLFxuICApOiBJRmxleENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEFsaWduSXRlbXMoYWxpZ246ICdmbGV4LXN0YXJ0JyB8ICdmbGV4LWVuZCcgfCAnY2VudGVyJyB8ICdiYXNlbGluZScgfCAnc3RyZXRjaCcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEdhcChnYXA6IHN0cmluZyk6IElGbGV4Q29udGFpbmVyQnVpbGRlcjtcbiAgc2V0QmFja2dyb3VuZENvbG9yKGNvbG9yOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldFBhZGRpbmcocGFkZGluZzogc3RyaW5nKTogSUZsZXhDb250YWluZXJCdWlsZGVyO1xuICBzZXRNYXJnaW4obWFyZ2luOiBzdHJpbmcpOiBJRmxleENvbnRhaW5lckJ1aWxkZXI7XG59XG5cbi8vIEdyaWQgY29udGFpbmVyIGJ1aWxkZXIgLSBJbnRlcmZhY2UgU2VncmVnYXRpb246IENvbWJpbmVzIGFsbCBjb250YWluZXIgaW50ZXJmYWNlc1xuZXhwb3J0IGludGVyZmFjZSBJR3JpZENvbnRhaW5lckJ1aWxkZXJcbiAgZXh0ZW5kcyBJQmFzZUNvbnRhaW5lckJ1aWxkZXI8SUdyaWRDb250YWluZXJCdWlsZGVyPixcbiAgICBJTGF5b3V0Q29udGFpbmVyQnVpbGRlcjxJR3JpZENvbnRhaW5lckJ1aWxkZXI+LFxuICAgIElDaGlsZENvbnRhaW5lckJ1aWxkZXI8SUdyaWRDb250YWluZXJCdWlsZGVyPixcbiAgICBJV2lkZ2V0Q29udGFpbmVyQnVpbGRlcjxJR3JpZENvbnRhaW5lckJ1aWxkZXI+IHtcbiAgLy8gR3JpZC1zcGVjaWZpYyBvcHRpb25zIC0gYm90aCBvYmplY3QgYW5kIGluZGl2aWR1YWwgbWV0aG9kc1xuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUEdyaWRDb250YWluZXJPcHRpb25zKTogSUdyaWRDb250YWluZXJCdWlsZGVyO1xuICBzZXRDb2x1bW5zKGNvbHVtbnM6IG51bWJlcik6IElHcmlkQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0Um93cyhyb3dzOiBudW1iZXIpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEdhcChnYXA6IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0SnVzdGlmeUl0ZW1zKGp1c3RpZnk6ICdzdGFydCcgfCAnZW5kJyB8ICdjZW50ZXInIHwgJ3N0cmV0Y2gnKTogSUdyaWRDb250YWluZXJCdWlsZGVyO1xuICBzZXRBbGlnbkl0ZW1zKGFsaWduOiAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyB8ICdzdHJldGNoJyk6IElHcmlkQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0QXV0b0Zsb3coZmxvdzogJ3JvdycgfCAnY29sdW1uJyB8ICdyb3cgZGVuc2UnIHwgJ2NvbHVtbiBkZW5zZScpOiBJR3JpZENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEJhY2tncm91bmRDb2xvcihjb2xvcjogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyO1xuICBzZXRQYWRkaW5nKHBhZGRpbmc6IHN0cmluZyk6IElHcmlkQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0TWFyZ2luKG1hcmdpbjogc3RyaW5nKTogSUdyaWRDb250YWluZXJCdWlsZGVyO1xufVxuXG4vLyBQYW5lbCBjb250YWluZXIgYnVpbGRlciAtIEludGVyZmFjZSBTZWdyZWdhdGlvbjogQ29tYmluZXMgYWxsIGNvbnRhaW5lciBpbnRlcmZhY2VzXG5leHBvcnQgaW50ZXJmYWNlIElQYW5lbENvbnRhaW5lckJ1aWxkZXJcbiAgZXh0ZW5kcyBJQmFzZUNvbnRhaW5lckJ1aWxkZXI8SVBhbmVsQ29udGFpbmVyQnVpbGRlcj4sXG4gICAgSUxheW91dENvbnRhaW5lckJ1aWxkZXI8SVBhbmVsQ29udGFpbmVyQnVpbGRlcj4sXG4gICAgSUNoaWxkQ29udGFpbmVyQnVpbGRlcjxJUGFuZWxDb250YWluZXJCdWlsZGVyPixcbiAgICBJV2lkZ2V0Q29udGFpbmVyQnVpbGRlcjxJUGFuZWxDb250YWluZXJCdWlsZGVyPiB7XG4gIC8vIFBhbmVsLXNwZWNpZmljIG9wdGlvbnNcbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBQYW5lbENvbnRhaW5lck9wdGlvbnMpOiBJUGFuZWxDb250YWluZXJCdWlsZGVyO1xuICBzZXRDYXB0aW9uKGNhcHRpb246IHN0cmluZyk6IElQYW5lbENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEljb24oaWNvbjogc3RyaW5nKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0TG9vayhsb29rOiAnc29saWQnIHwgJ2ZpbGwnIHwgJ291dGxpbmUnIHwgJ2ZsYXQnIHwgJ25vbmUnKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0U2hvd0hlYWRlcihzaG93OiBib29sZWFuKTogSVBhbmVsQ29udGFpbmVyQnVpbGRlcjtcbiAgc2V0Q29sbGFwc2VkKGNvbGxhcHNlZDogYm9vbGVhbik6IElQYW5lbENvbnRhaW5lckJ1aWxkZXI7XG59XG5cbi8vIFBhZ2UgY29udGFpbmVyIGJ1aWxkZXIgLSBJbnRlcmZhY2UgU2VncmVnYXRpb246IENvbWJpbmVzIGFsbCBjb250YWluZXIgaW50ZXJmYWNlc1xuZXhwb3J0IGludGVyZmFjZSBJUGFnZUNvbnRhaW5lckJ1aWxkZXJcbiAgZXh0ZW5kcyBJQmFzZUNvbnRhaW5lckJ1aWxkZXI8SVBhZ2VDb250YWluZXJCdWlsZGVyPixcbiAgICBJTGF5b3V0Q29udGFpbmVyQnVpbGRlcjxJUGFnZUNvbnRhaW5lckJ1aWxkZXI+LFxuICAgIElDaGlsZENvbnRhaW5lckJ1aWxkZXI8SVBhZ2VDb250YWluZXJCdWlsZGVyPixcbiAgICBJV2lkZ2V0Q29udGFpbmVyQnVpbGRlcjxJUGFnZUNvbnRhaW5lckJ1aWxkZXI+IHtcbiAgLy8gUGFnZS1zcGVjaWZpYyBvcHRpb25zXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQUGFnZUNvbnRhaW5lck9wdGlvbnMpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEJhY2tncm91bmRDb2xvcihjb2xvcjogc3RyaW5nKTogSVBhZ2VDb250YWluZXJCdWlsZGVyO1xuICBzZXRUaGVtZSh0aGVtZTogeyBpZDogc3RyaW5nIH0pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEhhc0hlYWRlcihoYXNIZWFkZXI6IGJvb2xlYW4pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEhhc0Zvb3RlcihoYXNGb290ZXI6IGJvb2xlYW4pOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXI7XG4gIHNldERpcmVjdGlvbihkaXJlY3Rpb246ICdydGwnIHwgJ2x0cicpOiBJUGFnZUNvbnRhaW5lckJ1aWxkZXI7XG59XG5cbi8vIFRhYnNldCBjb250YWluZXIgYnVpbGRlciAtIEludGVyZmFjZSBTZWdyZWdhdGlvbjogQ29tYmluZXMgYWxsIGNvbnRhaW5lciBpbnRlcmZhY2VzXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzZXRDb250YWluZXJCdWlsZGVyXG4gIGV4dGVuZHMgSUJhc2VDb250YWluZXJCdWlsZGVyPElUYWJzZXRDb250YWluZXJCdWlsZGVyPixcbiAgICBJTGF5b3V0Q29udGFpbmVyQnVpbGRlcjxJVGFic2V0Q29udGFpbmVyQnVpbGRlcj4sXG4gICAgSUNoaWxkQ29udGFpbmVyQnVpbGRlcjxJVGFic2V0Q29udGFpbmVyQnVpbGRlcj4sXG4gICAgSVdpZGdldENvbnRhaW5lckJ1aWxkZXI8SVRhYnNldENvbnRhaW5lckJ1aWxkZXI+IHtcbiAgLy8gVGFic2V0LXNwZWNpZmljIG9wdGlvbnNcbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBUYWJzZXRDb250YWluZXJPcHRpb25zKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldExvb2sobG9vazogJ3dpdGgtbGluZScgfCAnd2l0aC1saW5lLWNvbG9yJyB8ICdwaWxscycgfCAncGlsbHMtY29sb3InKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldE9yaWVudGF0aW9uKG9yaWVudGF0aW9uOiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnKTogSVRhYnNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEFjdGl2ZUluZGV4KGluZGV4OiBudW1iZXIpOiBJVGFic2V0Q29udGFpbmVyQnVpbGRlcjtcbn1cblxuLy8gRm9ybSBmaWVsZCBidWlsZGVyIC0gSW50ZXJmYWNlIFNlZ3JlZ2F0aW9uOiBDb21iaW5lcyBiYXNlIGFuZCB3aWRnZXQgaW50ZXJmYWNlc1xuLy8gRm9ybSBmaWVsZHMgY2FuIG9ubHkgY29udGFpbiBPTkUgd2lkZ2V0XG5leHBvcnQgaW50ZXJmYWNlIElGb3JtRmllbGRCdWlsZGVyXG4gIGV4dGVuZHMgSUJhc2VDb250YWluZXJCdWlsZGVyPElGb3JtRmllbGRCdWlsZGVyPixcbiAgICBJTGF5b3V0Q29udGFpbmVyQnVpbGRlcjxJRm9ybUZpZWxkQnVpbGRlcj4ge1xuICAvLyBGb3JtIGZpZWxkIHNwZWNpZmljIG9wdGlvbnNcbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBGb3JtRmllbGRPcHRpb25zKTogSUZvcm1GaWVsZEJ1aWxkZXI7XG4gIHNldExhYmVsKGxhYmVsOiBzdHJpbmcpOiBJRm9ybUZpZWxkQnVpbGRlcjtcbiAgc2V0U2hvd0xhYmVsKHNob3dMYWJlbDogYm9vbGVhbik6IElGb3JtRmllbGRCdWlsZGVyO1xuXG4gIC8vIFNpbmdsZSB3aWRnZXQgbWV0aG9kcyAocmVwbGFjZXMgSVdpZGdldENvbnRhaW5lckJ1aWxkZXIpXG4gIHRleHRCb3gob3B0aW9ucz86IE9taXQ8VGV4dEJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlcjtcbiAgbGFyZ2VUZXh0Qm94KG9wdGlvbnM/OiBPbWl0PExhcmdlVGV4dEJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlcjtcbiAgcmljaFRleHQob3B0aW9ucz86IE9taXQ8UmljaFRleHRPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXI7XG4gIHBhc3N3b3JkQm94KG9wdGlvbnM/OiBPbWl0PFBhc3N3b3JkQm94T3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyO1xuICBudW1iZXJCb3gob3B0aW9ucz86IE9taXQ8TnVtYmVyQm94T3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyO1xuICBzZWxlY3RCb3gob3B0aW9uczogT21pdDxTZWxlY3RCb3hPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXI7XG4gIGxvb2t1cEJveChvcHRpb25zOiBPbWl0PExvb2t1cEJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlcjtcbiAgc2VsZWN0aW9uTGlzdChvcHRpb25zOiBPbWl0PFNlbGVjdGlvbkxpc3RPcHRpb25zLCAncGF0aCc+KTogSUZvcm1GaWVsZEJ1aWxkZXI7XG4gIGRhdGVUaW1lQm94KG9wdGlvbnM/OiBPbWl0PERhdGVUaW1lQm94T3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyO1xuICB0b2dnbGVTd2l0Y2gob3B0aW9ucz86IE9taXQ8VG9nZ2xlU3dpdGNoT3B0aW9ucywgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyO1xuICBjb2xvckJveChvcHRpb25zPzogT21pdDxDb2xvckJveE9wdGlvbnMsICdwYXRoJz4pOiBJRm9ybUZpZWxkQnVpbGRlcjtcbiAgY3VzdG9tV2lkZ2V0PFQ+KHR5cGU6IHN0cmluZywgb3B0aW9ucz86IE9taXQ8VCwgJ3BhdGgnPik6IElGb3JtRmllbGRCdWlsZGVyO1xufVxuXG4vLyBGaWVsZHNldCBjb250YWluZXIgYnVpbGRlciAtIEludGVyZmFjZSBTZWdyZWdhdGlvbjogU3BlY2lhbGl6ZWQgZm9yIGZvcm0gZmllbGRzIG9ubHlcbmV4cG9ydCBpbnRlcmZhY2UgSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlclxuICBleHRlbmRzIElCYXNlQ29udGFpbmVyQnVpbGRlcjxJRmllbGRzZXRDb250YWluZXJCdWlsZGVyPixcbiAgICBJTGF5b3V0Q29udGFpbmVyQnVpbGRlcjxJRmllbGRzZXRDb250YWluZXJCdWlsZGVyPiB7XG4gIC8vIEZpZWxkc2V0LXNwZWNpZmljIG9wdGlvbnNcbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBBWFBGaWVsZHNldENvbnRhaW5lck9wdGlvbnMpOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyO1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcjtcbiAgc2V0RGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZyk6IElGaWVsZHNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldEljb24oaWNvbjogc3RyaW5nKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcjtcbiAgc2V0Q29sbGFwc2libGUoY29sbGFwc2libGU6IGJvb2xlYW4pOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyO1xuICBzZXRJc09wZW4oaXNPcGVuOiBib29sZWFuKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcjtcbiAgc2V0TG9vayhsb29rOiAnZmllbGRzZXQnIHwgJ2NhcmQnIHwgJ2dyb3VwJyk6IElGaWVsZHNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldFNob3dIZWFkZXIoc2hvd0hlYWRlcjogYm9vbGVhbik6IElGaWVsZHNldENvbnRhaW5lckJ1aWxkZXI7XG4gIHNldENvbHMoY29sczogbnVtYmVyKTogSUZpZWxkc2V0Q29udGFpbmVyQnVpbGRlcjtcblxuICAvLyBPbmx5IGZvcm0gZmllbGRzIGFyZSBhbGxvd2VkIGluIGZpZWxkc2V0XG4gIGZvcm1GaWVsZChsYWJlbDogc3RyaW5nLCBkZWxlZ2F0ZT86IChmaWVsZDogSUZvcm1GaWVsZEJ1aWxkZXIpID0+IHZvaWQpOiBJRmllbGRzZXRDb250YWluZXJCdWlsZGVyO1xufVxuXG4vLyBEaWFsb2cgY29udGFpbmVyIGJ1aWxkZXIgLSBJbnRlcmZhY2UgU2VncmVnYXRpb246IFNwZWNpYWxpemVkIGZvciBkaWFsb2cgZnVuY3Rpb25hbGl0eVxuZXhwb3J0IGludGVyZmFjZSBJRGlhbG9nQnVpbGRlciB7XG4gIC8vIERpYWxvZy1zcGVjaWZpYyBvcHRpb25zXG4gIHNldE9wdGlvbnMob3B0aW9uczogQVhQRGlhbG9nQ29udGFpbmVyT3B0aW9ucyk6IElEaWFsb2dCdWlsZGVyO1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nKTogSURpYWxvZ0J1aWxkZXI7XG4gIHNldE1lc3NhZ2UobWVzc2FnZT86IHN0cmluZyk6IElEaWFsb2dCdWlsZGVyO1xuICBzZXRTaXplKHNpemU6IEFYUG9wdXBTaXplVHlwZSk6IElEaWFsb2dCdWlsZGVyO1xuICBzZXRDbG9zZUJ1dHRvbihjbG9zZUJ1dHRvbjogYm9vbGVhbik6IElEaWFsb2dCdWlsZGVyO1xuICBzZXRDb250ZXh0KGNvbnRleHQ6IGFueSk6IElEaWFsb2dCdWlsZGVyO1xuXG4gIC8vIENvbnRlbnQgbWV0aG9kIC0gd3JhcHMgbGF5b3V0IGJ1aWxkZXIgbWV0aG9kc1xuICBjb250ZW50KGRlbGVnYXRlOiAobGF5b3V0QnVpbGRlcjogSUZsZXhDb250YWluZXJCdWlsZGVyKSA9PiB2b2lkKTogSURpYWxvZ0J1aWxkZXI7XG5cbiAgLy8gQWN0aW9ucyBtZXRob2RcbiAgc2V0QWN0aW9ucyhkZWxlZ2F0ZT86IChhY3Rpb25zOiBJQWN0aW9uQnVpbGRlcikgPT4gdm9pZCk6IElEaWFsb2dCdWlsZGVyO1xuXG4gIC8vIERpYWxvZy1zcGVjaWZpYyBtZXRob2RzXG4gIHNob3coKTogUHJvbWlzZTxBWFBEaWFsb2dSZWY+O1xufVxuXG4vLyBMaXN0IFdpZGdldCBCdWlsZGVyIC0gSW50ZXJmYWNlIFNlZ3JlZ2F0aW9uOiBDb21iaW5lcyBhbGwgY29udGFpbmVyIGludGVyZmFjZXNcbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RXaWRnZXRCdWlsZGVyXG4gIGV4dGVuZHMgSUJhc2VDb250YWluZXJCdWlsZGVyPElMaXN0V2lkZ2V0QnVpbGRlcj4sXG4gICAgSUxheW91dENvbnRhaW5lckJ1aWxkZXI8SUxpc3RXaWRnZXRCdWlsZGVyPixcbiAgICBJQ2hpbGRDb250YWluZXJCdWlsZGVyPElMaXN0V2lkZ2V0QnVpbGRlcj4sXG4gICAgSVdpZGdldENvbnRhaW5lckJ1aWxkZXI8SUxpc3RXaWRnZXRCdWlsZGVyPiB7XG4gIC8vIExpc3Qtc3BlY2lmaWMgb3B0aW9uc1xuICBzZXRPcHRpb25zKG9wdGlvbnM6IEFYUExpc3RXaWRnZXRPcHRpb25zKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXREYXRhU291cmNlKGRhdGFTb3VyY2U6IGFueVtdIHwgQVhEYXRhU291cmNlKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXRDb2x1bW5zKGNvbHVtbnM6IEFYUExpc3RXaWRnZXRDb2x1bW5bXSk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcblxuICAvLyBFdmVudCBoYW5kbGVyc1xuICBzZXRPblJvd0NsaWNrKGhhbmRsZXI6IChyb3c6IGFueSkgPT4gdm9pZCk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0T25Sb3dEb3VibGVDbGljayhoYW5kbGVyOiAocm93OiBhbnkpID0+IHZvaWQpOiBJTGlzdFdpZGdldEJ1aWxkZXI7XG4gIHNldE9uU2VsZWN0aW9uQ2hhbmdlKGhhbmRsZXI6IChzZWxlY3RlZFJvd3M6IGFueVtdKSA9PiB2b2lkKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXRPblJvd0NvbW1hbmQoaGFuZGxlcjogKGNvbW1hbmQ6IGFueSwgc2VsZWN0ZWRSb3dzOiBhbnlbXSkgPT4gdm9pZCk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcblxuICAvLyBUYWJsZSBmZWF0dXJlc1xuICBzZXRQYWdpbmcocGFnaW5nOiBib29sZWFuKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXRTaG93SGVhZGVyKHNob3c6IGJvb2xlYW4pOiBJTGlzdFdpZGdldEJ1aWxkZXI7XG4gIHNldFNob3dGb290ZXIoc2hvdzogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0Rml4SGVhZGVyKGZpeDogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0Rml4Rm9vdGVyKGZpeDogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0RmV0Y2hEYXRhTW9kZShtb2RlOiAnYXV0bycgfCAnbWFudWFsJyk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0UGFyZW50RmllbGQoZmllbGQ6IHN0cmluZyk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcbiAgc2V0TWluSGVpZ2h0KGhlaWdodDogc3RyaW5nIHwgbnVtYmVyKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuXG4gIC8vIFNlbGVjdGlvbiAmIEluZGV4XG4gIHNldFNob3dJbmRleChzaG93OiBib29sZWFuKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXRBbGxvd1NlbGVjdGlvbihhbGxvdzogYm9vbGVhbik6IElMaXN0V2lkZ2V0QnVpbGRlcjtcblxuICAvLyBDb21tYW5kc1xuICBzZXRQcmltYXJ5Q29tbWFuZHMoY29tbWFuZHM6IGFueVtdKTogSUxpc3RXaWRnZXRCdWlsZGVyO1xuICBzZXRTZWNvbmRhcnlDb21tYW5kcyhjb21tYW5kczogQVhQTGlzdFdpZGdldFJvd0NvbW1hbmRbXSk6IElMaXN0V2lkZ2V0QnVpbGRlcjtcblxuICAvLyBMb2FkaW5nXG4gIHNldExvYWRpbmcobG9hZGluZzogeyBlbmFibGVkPzogYm9vbGVhbjsgYW5pbWF0aW9uPzogYm9vbGVhbiB9KTogSUxpc3RXaWRnZXRCdWlsZGVyO1xufVxuXG4vLyNlbmRyZWdpb25cbiJdfQ==","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, signal } from '@angular/core';\nimport { AXPLayoutRendererComponent } from './layout-renderer.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/decorators\";\nimport * as i4 from \"@acorex/components/loading\";\nimport * as i5 from \"@acorex/core/translation\";\nexport class AXPDialogRendererComponent extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.result = new EventEmitter();\n this.context = signal({}, ...(ngDevMode ? [{ debugName: \"context\" }] : []));\n // This will be set by the popup service automatically - same as dynamic-dialog\n this.callBack = () => { };\n this.isDialogLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isDialogLoading\" }] : []));\n }\n ngOnInit() {\n // Initialize context with provided context\n this.context.set(this.config?.context || {});\n }\n handleContextChanged(event) {\n this.context.set(event);\n }\n handleContextInitiated(event) {\n this.context.set(event);\n }\n visibleFooterPrefixActions() {\n return this.config?.actions?.footer?.prefix || [];\n }\n visibleFooterSuffixActions() {\n return (this.config?.actions?.footer?.suffix || [\n { title: 'Cancel', color: 'secondary', command: { name: 'cancel' } },\n { title: 'Confirm', color: 'primary', command: { name: 'confirm' } },\n ]);\n }\n isFormLoading() {\n return this.isDialogLoading();\n }\n isSubmitting() {\n return this.isDialogLoading();\n }\n async executeAction(action) {\n const actionName = action.command?.name || action.title?.toLowerCase();\n // Store the action and context - same pattern as dynamic-dialog\n const result = {\n context: this.context(),\n action: actionName,\n };\n // Store result in component property\n this.dialogResult = result;\n // Store in popup data for DialogRef access\n if (this.data) {\n this.data.context = result.context;\n this.data.action = result.action;\n }\n // Call the callback with DialogRef - same pattern as dynamic-dialog\n this.callBack({\n close: (result) => {\n this.close(result);\n },\n context: () => {\n return this.context();\n },\n action: () => {\n return result.action;\n },\n setLoading: (loading) => {\n this.isDialogLoading.set(loading);\n },\n });\n }\n close(result) {\n if (result) {\n this.result.emit(result);\n }\n super.close(result);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPDialogRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: AXPDialogRendererComponent, isStandalone: true, selector: \"axp-dialog-renderer\", inputs: { config: \"config\" }, outputs: { result: \"result\" }, usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-p-4\">\n <axp-layout-renderer\n [layout]=\"config.definition\"\n [context]=\"context()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-layout-renderer>\n </div>\n\n <ax-footer>\n <ax-prefix>\n <ng-container *ngTemplateOutlet=\"footerPrefixActions\"></ng-container>\n </ax-prefix>\n <ax-suffix>\n <ng-container *ngTemplateOutlet=\"footerSuffixActions\"></ng-container>\n </ax-suffix>\n </ax-footer>\n\n <!-- Footer Prefix Actions -->\n <ng-template #footerPrefixActions>\n @for (action of visibleFooterPrefixActions(); track $index) {\n <ax-button\n [disabled]=\"action.disabled || isFormLoading()\"\n [text]=\"(action.title | translate | async)!\"\n [look]=\"'outline'\"\n [color]=\"action.color\"\n (onClick)=\"executeAction(action)\"\n >\n @if (isFormLoading() && action.command?.name != 'cancel') {\n <ax-loading></ax-loading>\n }\n <ax-prefix>\n <i class=\"{{ action.icon }}\"></i>\n </ax-prefix>\n </ax-button>\n }\n </ng-template>\n\n <!-- Footer Suffix Actions -->\n <ng-template #footerSuffixActions>\n @for (action of visibleFooterSuffixActions(); track $index) {\n <ax-button\n [disabled]=\"action.disabled || isSubmitting()\"\n [text]=\"(action.title | translate | async)!\"\n [look]=\"'solid'\"\n [color]=\"action.color\"\n (onClick)=\"executeAction(action)\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon icon=\"{{ action.icon }}\"></ax-icon>\n </ax-prefix>\n }\n </ax-button>\n }\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: AXPLayoutRendererComponent, selector: \"axp-layout-renderer\", inputs: [\"layout\", \"context\", \"look\", \"mode\"], outputs: [\"contextChange\", \"contextInitiated\", \"validityChange\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i3.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i3.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i4.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i5.AXTranslatorPipe, name: \"translate\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: AXPDialogRendererComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-dialog-renderer',\n standalone: true,\n imports: [\n CommonModule,\n AXPLayoutRendererComponent,\n AXButtonModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXTranslationModule,\n ],\n template: `\n <div class=\"ax-p-4\">\n <axp-layout-renderer\n [layout]=\"config.definition\"\n [context]=\"context()\"\n (contextChange)=\"handleContextChanged($event)\"\n (contextInitiated)=\"handleContextInitiated($event)\"\n >\n </axp-layout-renderer>\n </div>\n\n <ax-footer>\n <ax-prefix>\n <ng-container *ngTemplateOutlet=\"footerPrefixActions\"></ng-container>\n </ax-prefix>\n <ax-suffix>\n <ng-container *ngTemplateOutlet=\"footerSuffixActions\"></ng-container>\n </ax-suffix>\n </ax-footer>\n\n <!-- Footer Prefix Actions -->\n <ng-template #footerPrefixActions>\n @for (action of visibleFooterPrefixActions(); track $index) {\n <ax-button\n [disabled]=\"action.disabled || isFormLoading()\"\n [text]=\"(action.title | translate | async)!\"\n [look]=\"'outline'\"\n [color]=\"action.color\"\n (onClick)=\"executeAction(action)\"\n >\n @if (isFormLoading() && action.command?.name != 'cancel') {\n <ax-loading></ax-loading>\n }\n <ax-prefix>\n <i class=\"{{ action.icon }}\"></i>\n </ax-prefix>\n </ax-button>\n }\n </ng-template>\n\n <!-- Footer Suffix Actions -->\n <ng-template #footerSuffixActions>\n @for (action of visibleFooterSuffixActions(); track $index) {\n <ax-button\n [disabled]=\"action.disabled || isSubmitting()\"\n [text]=\"(action.title | translate | async)!\"\n [look]=\"'solid'\"\n [color]=\"action.color\"\n (onClick)=\"executeAction(action)\"\n >\n @if (action.icon) {\n <ax-prefix>\n <ax-icon icon=\"{{ action.icon }}\"></ax-icon>\n </ax-prefix>\n }\n </ax-button>\n }\n </ng-template>\n `,\n }]\n }], propDecorators: { config: [{\n type: Input\n }], result: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9kaWFsb2ctcmVuZGVyZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBMkZ6RSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsbUJBQW1CO0lBdkVuRTs7UUF5RVksV0FBTSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBSzVELFlBQU8sR0FBRyxNQUFNLENBQU0sRUFBRSxtREFBQyxDQUFDO1FBRTFCLCtFQUErRTtRQUMvRSxhQUFRLEdBQXNDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUcvQyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLDJEQUFDLENBQUM7S0E4RXpDO0lBNUVVLFFBQVE7UUFDZiwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLElB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Z0xBQzFCLGNBQWMsNlhBQ2QsaUJBQWlCLHNWQUNqQixlQUFlLDhLQUNmLG1CQUFtQjs7MkZBOERWLDBCQUEwQjtrQkF2RXRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRFQ7aUJBQ0Y7OEJBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nJztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFdpZGdldE5vZGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBEaWFsb2dSZWYgfSBmcm9tICcuL2xheW91dC1idWlsZGVyLnR5cGVzJztcbmltcG9ydCB7IEFYUExheW91dFJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtcmVuZGVyZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dSZW5kZXJlckNvbmZpZyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG1lc3NhZ2U/OiBzdHJpbmc7XG4gIGNvbnRleHQ6IGFueTtcbiAgZGVmaW5pdGlvbjogQVhQV2lkZ2V0Tm9kZTtcbiAgYWN0aW9ucz86IHtcbiAgICBmb290ZXI/OiB7XG4gICAgICBwcmVmaXg/OiBhbnlbXTtcbiAgICAgIHN1ZmZpeD86IGFueVtdO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nUmVuZGVyZXJSZXN1bHQge1xuICBjb250ZXh0OiBhbnk7XG4gIGFjdGlvbj86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWRpYWxvZy1yZW5kZXJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhQTGF5b3V0UmVuZGVyZXJDb21wb25lbnQsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVHJhbnNsYXRpb25Nb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LXAtNFwiPlxuICAgICAgPGF4cC1sYXlvdXQtcmVuZGVyZXJcbiAgICAgICAgW2xheW91dF09XCJjb25maWcuZGVmaW5pdGlvblwiXG4gICAgICAgIFtjb250ZXh0XT1cImNvbnRleHQoKVwiXG4gICAgICAgIChjb250ZXh0Q2hhbmdlKT1cImhhbmRsZUNvbnRleHRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAoY29udGV4dEluaXRpYXRlZCk9XCJoYW5kbGVDb250ZXh0SW5pdGlhdGVkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9heHAtbGF5b3V0LXJlbmRlcmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGF4LWZvb3Rlcj5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJQcmVmaXhBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2F4LXByZWZpeD5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJTdWZmaXhBY3Rpb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICA8L2F4LWZvb3Rlcj5cblxuICAgIDwhLS0gRm9vdGVyIFByZWZpeCBBY3Rpb25zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyUHJlZml4QWN0aW9ucz5cbiAgICAgIEBmb3IgKGFjdGlvbiBvZiB2aXNpYmxlRm9vdGVyUHJlZml4QWN0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWQgfHwgaXNGb3JtTG9hZGluZygpXCJcbiAgICAgICAgICBbdGV4dF09XCIoYWN0aW9uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgW2xvb2tdPVwiJ291dGxpbmUnXCJcbiAgICAgICAgICBbY29sb3JdPVwiYWN0aW9uLmNvbG9yXCJcbiAgICAgICAgICAob25DbGljayk9XCJleGVjdXRlQWN0aW9uKGFjdGlvbilcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmIChpc0Zvcm1Mb2FkaW5nKCkgJiYgYWN0aW9uLmNvbW1hbmQ/Lm5hbWUgIT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIDxheC1sb2FkaW5nPjwvYXgtbG9hZGluZz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwie3sgYWN0aW9uLmljb24gfX1cIj48L2k+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgfVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIEZvb3RlciBTdWZmaXggQWN0aW9ucyAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclN1ZmZpeEFjdGlvbnM+XG4gICAgICBAZm9yIChhY3Rpb24gb2YgdmlzaWJsZUZvb3RlclN1ZmZpeEFjdGlvbnMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkIHx8IGlzU3VibWl0dGluZygpXCJcbiAgICAgICAgICBbdGV4dF09XCIoYWN0aW9uLnRpdGxlIHwgdHJhbnNsYXRlIHwgYXN5bmMpIVwiXG4gICAgICAgICAgW2xvb2tdPVwiJ3NvbGlkJ1wiXG4gICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiZXhlY3V0ZUFjdGlvbihhY3Rpb24pXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoYWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgIDxheC1pY29uIGljb249XCJ7eyBhY3Rpb24uaWNvbiB9fVwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGlhbG9nUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgY29uZmlnITogRGlhbG9nUmVuZGVyZXJDb25maWc7XG4gIEBPdXRwdXQoKSByZXN1bHQgPSBuZXcgRXZlbnRFbWl0dGVyPERpYWxvZ1JlbmRlcmVyUmVzdWx0PigpO1xuXG4gIC8vIFN0b3JlIGRpYWxvZyByZXN1bHQgZm9yIG1hbnVhbCBjbG9zaW5nXG4gIHByaXZhdGUgZGlhbG9nUmVzdWx0PzogRGlhbG9nUmVuZGVyZXJSZXN1bHQ7XG5cbiAgY29udGV4dCA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICAvLyBUaGlzIHdpbGwgYmUgc2V0IGJ5IHRoZSBwb3B1cCBzZXJ2aWNlIGF1dG9tYXRpY2FsbHkgLSBzYW1lIGFzIGR5bmFtaWMtZGlhbG9nXG4gIGNhbGxCYWNrOiAoZGlhbG9nUmVmOiBBWFBEaWFsb2dSZWYpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgZGF0YTogYW55O1xuXG4gIHByaXZhdGUgaXNEaWFsb2dMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIGNvbnRleHQgd2l0aCBwcm92aWRlZCBjb250ZXh0XG4gICAgdGhpcy5jb250ZXh0LnNldCh0aGlzLmNvbmZpZz8uY29udGV4dCB8fCB7fSk7XG4gIH1cblxuICBoYW5kbGVDb250ZXh0Q2hhbmdlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0LnNldChldmVudCk7XG4gIH1cblxuICBoYW5kbGVDb250ZXh0SW5pdGlhdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNvbnRleHQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHZpc2libGVGb290ZXJQcmVmaXhBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uYWN0aW9ucz8uZm9vdGVyPy5wcmVmaXggfHwgW107XG4gIH1cblxuICB2aXNpYmxlRm9vdGVyU3VmZml4QWN0aW9ucygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jb25maWc/LmFjdGlvbnM/LmZvb3Rlcj8uc3VmZml4IHx8IFtcbiAgICAgICAgeyB0aXRsZTogJ0NhbmNlbCcsIGNvbG9yOiAnc2Vjb25kYXJ5JywgY29tbWFuZDogeyBuYW1lOiAnY2FuY2VsJyB9IH0sXG4gICAgICAgIHsgdGl0bGU6ICdDb25maXJtJywgY29sb3I6ICdwcmltYXJ5JywgY29tbWFuZDogeyBuYW1lOiAnY29uZmlybScgfSB9LFxuICAgICAgXVxuICAgICk7XG4gIH1cblxuICBpc0Zvcm1Mb2FkaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGlhbG9nTG9hZGluZygpO1xuICB9XG5cbiAgaXNTdWJtaXR0aW5nKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGlhbG9nTG9hZGluZygpO1xuICB9XG5cbiAgYXN5bmMgZXhlY3V0ZUFjdGlvbihhY3Rpb246IGFueSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBhY3Rpb24uY29tbWFuZD8ubmFtZSB8fCBhY3Rpb24udGl0bGU/LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBTdG9yZSB0aGUgYWN0aW9uIGFuZCBjb250ZXh0IC0gc2FtZSBwYXR0ZXJuIGFzIGR5bmFtaWMtZGlhbG9nXG4gICAgY29uc3QgcmVzdWx0OiBEaWFsb2dSZW5kZXJlclJlc3VsdCA9IHtcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCgpLFxuICAgICAgYWN0aW9uOiBhY3Rpb25OYW1lLFxuICAgIH07XG5cbiAgICAvLyBTdG9yZSByZXN1bHQgaW4gY29tcG9uZW50IHByb3BlcnR5XG4gICAgdGhpcy5kaWFsb2dSZXN1bHQgPSByZXN1bHQ7XG5cbiAgICAvLyBTdG9yZSBpbiBwb3B1cCBkYXRhIGZvciBEaWFsb2dSZWYgYWNjZXNzXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5kYXRhLmNvbnRleHQgPSByZXN1bHQuY29udGV4dDtcbiAgICAgIHRoaXMuZGF0YS5hY3Rpb24gPSByZXN1bHQuYWN0aW9uO1xuICAgIH1cblxuICAgIC8vIENhbGwgdGhlIGNhbGxiYWNrIHdpdGggRGlhbG9nUmVmIC0gc2FtZSBwYXR0ZXJuIGFzIGR5bmFtaWMtZGlhbG9nXG4gICAgdGhpcy5jYWxsQmFjayh7XG4gICAgICBjbG9zZTogKHJlc3VsdD86IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gICAgICB9LFxuICAgICAgY29udGV4dDogKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0KCk7XG4gICAgICB9LFxuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiByZXN1bHQuYWN0aW9uO1xuICAgICAgfSxcbiAgICAgIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuaXNEaWFsb2dMb2FkaW5nLnNldChsb2FkaW5nKTtcbiAgICAgIH0sXG4gICAgfSBhcyBBWFBEaWFsb2dSZWYpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY2xvc2UocmVzdWx0PzogRGlhbG9nUmVuZGVyZXJSZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICB0aGlzLnJlc3VsdC5lbWl0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgc3VwZXIuY2xvc2UocmVzdWx0KTtcbiAgfVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvYWNvcmV4LXBsYXRmb3JtLWxheW91dC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2"],"mappings":"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"}