mmhglobal-dynamicform 1.2.3 → 1.3.2

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 (198) hide show
  1. package/README.md +14 -2
  2. package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
  3. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
  4. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
  5. package/esm2020/lib/services/main.service.mjs +752 -0
  6. package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
  7. package/esm2020/lib/services/zcomponent.service.mjs +81 -0
  8. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
  9. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
  10. package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
  11. package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
  12. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
  13. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
  14. package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
  15. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
  16. package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
  17. package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
  18. package/esm2020/lib/zcard/zcard.component.mjs +72 -0
  19. package/esm2020/lib/zchart/zchart.component.mjs +201 -0
  20. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
  21. package/esm2020/lib/zchip/zchip.component.mjs +121 -0
  22. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
  23. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
  24. package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
  25. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
  26. package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
  27. package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
  28. package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
  29. package/esm2020/lib/zform/zform.component.mjs +147 -0
  30. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
  31. package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
  32. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
  33. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
  34. package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
  35. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
  36. package/esm2020/lib/zimg/zimg.component.mjs +121 -0
  37. package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
  38. package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
  39. package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
  40. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
  41. package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
  42. package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
  43. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
  44. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
  45. package/esm2020/lib/zreport/zreport.component.mjs +105 -0
  46. package/esm2020/lib/zreport/zreport.config.mjs +117 -0
  47. package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
  48. package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
  49. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
  50. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
  51. package/esm2020/lib/ztab/ztab.component.mjs +187 -0
  52. package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
  53. package/esm2020/lib/ztext/ztext.component.mjs +297 -0
  54. package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
  55. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
  56. package/esm2020/lib/ztree/ztree.component.mjs +380 -0
  57. package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
  58. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
  59. package/esm2020/lib/zudf/zudf.component.mjs +205 -0
  60. package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
  61. package/esm2020/lib/zupload/zupload.component.mjs +359 -0
  62. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
  63. package/esm2020/mmhglobal-dynamicform.mjs +5 -0
  64. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  65. package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
  66. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
  67. package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
  68. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
  69. package/lib/directives/fieldelement.directive.d.ts +3 -0
  70. package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
  71. package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
  72. package/lib/services/main.service.d.ts +3 -0
  73. package/lib/services/zcomponent.debug.service.d.ts +8 -5
  74. package/lib/services/zcomponent.service.d.ts +7 -2
  75. package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
  76. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
  77. package/lib/uicontent/uicontent.component.d.ts +3 -0
  78. package/lib/uiheader/uiheader.component.d.ts +3 -0
  79. package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
  80. package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
  81. package/lib/uipage/uipage.component.d.ts +3 -0
  82. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
  83. package/lib/zbullet/zbullet.component.d.ts +3 -0
  84. package/lib/zbuttons/zbuttons.component.d.ts +3 -0
  85. package/lib/zcard/zcard.component.d.ts +3 -0
  86. package/lib/zchart/zchart.component.d.ts +3 -0
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
  88. package/lib/zchip/zchip.component.d.ts +3 -0
  89. package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
  90. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
  91. package/lib/zdaterange/zdaterange.component.d.ts +3 -0
  92. package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
  93. package/lib/zdatetime/zdatetime.component.d.ts +3 -0
  94. package/lib/zdiv/zdiv.component.d.ts +3 -0
  95. package/lib/zdiv/zdiv.pipe.d.ts +3 -0
  96. package/lib/zform/zform.component.d.ts +3 -0
  97. package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
  98. package/lib/zgauge/zgauge.component.d.ts +3 -0
  99. package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
  100. package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
  101. package/lib/zgrid/zgrid.component.d.ts +4 -1
  102. package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
  103. package/lib/zimg/zimg.component.d.ts +3 -0
  104. package/lib/zkcard/zkcard.component.d.ts +3 -0
  105. package/lib/zlabel/zlabel.component.d.ts +3 -0
  106. package/lib/zmfb/zmfb.component.d.ts +3 -0
  107. package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
  108. package/lib/zmodal/zmodal.component.d.ts +3 -0
  109. package/lib/znumeric/znumeric.component.d.ts +3 -0
  110. package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
  111. package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
  112. package/lib/zreport/zreport.component.d.ts +3 -0
  113. package/lib/zreport/zreport.config.d.ts +3 -0
  114. package/lib/zscheduler/zscheduler.component.d.ts +3 -0
  115. package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
  116. package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
  117. package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
  118. package/lib/ztab/ztab.component.d.ts +3 -0
  119. package/lib/ztab/ztab.pipe.d.ts +3 -0
  120. package/lib/ztext/ztext.component.d.ts +3 -0
  121. package/lib/ztextarea/ztextarea.component.d.ts +3 -0
  122. package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
  123. package/lib/ztree/ztree.component.d.ts +3 -0
  124. package/lib/ztreelist/ztreelist.component.d.ts +3 -0
  125. package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
  126. package/lib/zudf/zudf.component.d.ts +3 -0
  127. package/lib/zunknown/zunknown.component.d.ts +3 -0
  128. package/lib/zupload/zupload.component.d.ts +3 -0
  129. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
  130. package/mmhglobal-dynamicform.d.ts +1 -2
  131. package/package.json +20 -11
  132. package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
  133. package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
  134. package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
  135. package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
  136. package/esm2015/lib/directives/fieldelement.directive.js +0 -15
  137. package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
  138. package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
  139. package/esm2015/lib/services/main.service.js +0 -766
  140. package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
  141. package/esm2015/lib/services/zcomponent.service.js +0 -167
  142. package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
  143. package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
  144. package/esm2015/lib/uicontent/uicontent.component.js +0 -41
  145. package/esm2015/lib/uiheader/uiheader.component.js +0 -65
  146. package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
  147. package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
  148. package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
  149. package/esm2015/lib/zbullet/zbullet.component.js +0 -71
  150. package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
  151. package/esm2015/lib/zcard/zcard.component.js +0 -68
  152. package/esm2015/lib/zchart/zchart.component.js +0 -199
  153. package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
  154. package/esm2015/lib/zchip/zchip.component.js +0 -117
  155. package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
  156. package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
  157. package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
  158. package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
  159. package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
  160. package/esm2015/lib/zdiv/zdiv.component.js +0 -48
  161. package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
  162. package/esm2015/lib/zform/zform.component.js +0 -148
  163. package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
  164. package/esm2015/lib/zgauge/zgauge.component.js +0 -146
  165. package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
  166. package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
  167. package/esm2015/lib/zgrid/zgrid.component.js +0 -834
  168. package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
  169. package/esm2015/lib/zimg/zimg.component.js +0 -123
  170. package/esm2015/lib/zkcard/zkcard.component.js +0 -372
  171. package/esm2015/lib/zlabel/zlabel.component.js +0 -59
  172. package/esm2015/lib/zmfb/zmfb.component.js +0 -215
  173. package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
  174. package/esm2015/lib/zmodal/zmodal.component.js +0 -130
  175. package/esm2015/lib/znumeric/znumeric.component.js +0 -114
  176. package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
  177. package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
  178. package/esm2015/lib/zreport/zreport.component.js +0 -104
  179. package/esm2015/lib/zreport/zreport.config.js +0 -115
  180. package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
  181. package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
  182. package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
  183. package/esm2015/lib/ztab/ztab.component.js +0 -180
  184. package/esm2015/lib/ztab/ztab.pipe.js +0 -22
  185. package/esm2015/lib/ztext/ztext.component.js +0 -286
  186. package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
  187. package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
  188. package/esm2015/lib/ztree/ztree.component.js +0 -374
  189. package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
  190. package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
  191. package/esm2015/lib/zudf/zudf.component.js +0 -206
  192. package/esm2015/lib/zunknown/zunknown.component.js +0 -20
  193. package/esm2015/lib/zupload/zupload.component.js +0 -358
  194. package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
  195. package/esm2015/mmhglobal-dynamicform.js +0 -7
  196. package/fesm2015/mmhglobal-dynamicform.js +0 -10729
  197. package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
  198. package/mmhglobal-dynamicform.metadata.json +0 -1
@@ -0,0 +1,50 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from "@angular/core";
3
+ import { Validators } from "@angular/forms";
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ /********** Component & Service **********/
7
+ import { ZComponentHelper, ZComponentProperties, } from 'mmhglobal-zcore';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "mmhglobal-zcore";
10
+ import * as i2 from "../zformcontrol/zformcontrol.component";
11
+ import * as i3 from "@angular/common";
12
+ import * as i4 from "./zdiv.pipe";
13
+ export class ZdivComponent {
14
+ constructor(authService) {
15
+ this.authService = authService;
16
+ this.componentProperties = new ZComponentProperties();
17
+ this.setEnable = (status) => {
18
+ this.componentProperties.isReadOnly = !status;
19
+ };
20
+ this.setVisible = (status) => {
21
+ this.componentProperties.isVisible = status;
22
+ this.data.Visible = status;
23
+ };
24
+ this.setRequire = (status) => {
25
+ this.componentProperties.isRequired = status;
26
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
27
+ };
28
+ }
29
+ ngOnInit() {
30
+ ZComponentHelper.setComponentProperties(this);
31
+ ZComponentHelper.registerComponent(this);
32
+ ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.data, this.authService);
33
+ }
34
+ ComponentIsVisible(field) {
35
+ return ZComponentHelper.ComponentIsVisible(field, this.group);
36
+ }
37
+ }
38
+ ZdivComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZdivComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
39
+ ZdivComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZdivComponent, selector: "app-zdiv", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <app-zformcontrol \r\n [ngClass]=\"group[field.isVisibleField] ? field.DivClass : \r\n ((field.Visible === true) ? field.DivClass : 'flex-hide')\" \r\n *ngFor=\"let field of data.Value | divzlayout: data.zlayout\" [field]=\"field\"\r\n [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n</div>", styles: [""], components: [{ type: i2.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "divzlayout": i4.DivzLayout } });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZdivComponent, decorators: [{
41
+ type: Component,
42
+ args: [{ selector: 'app-zdiv', template: "<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" class=\"ion-row\">\r\n <app-zformcontrol \r\n [ngClass]=\"group[field.isVisibleField] ? field.DivClass : \r\n ((field.Visible === true) ? field.DivClass : 'flex-hide')\" \r\n *ngFor=\"let field of data.Value | divzlayout: data.zlayout\" [field]=\"field\"\r\n [group]=\"group\" [form]=\"form\" id=\"{{field.Type}}-{{field.Name}}\">\r\n </app-zformcontrol>\r\n</div>", styles: [""] }]
43
+ }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { data: [{
44
+ type: Input
45
+ }], group: [{
46
+ type: Input
47
+ }], form: [{
48
+ type: Input
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRpdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96ZGl2L3pkaXYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRpdi96ZGl2LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNPLGdCQUFnQixFQUNaLG9CQUFvQixHQUNyQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFRekIsTUFBTSxPQUFPLGFBQWE7SUFPeEIsWUFDVSxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUhsQyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFpQjFDLGNBQVMsR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEQsQ0FBQyxDQUFBO1FBRU0sZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQzdCLENBQUMsQ0FBQTtRQUVNLGVBQVUsR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1lBQzdDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZILENBQUMsQ0FBQTtJQXpCRyxDQUFDO0lBRUwsUUFBUTtRQUNOLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRSxDQUFDOzswR0FwQlUsYUFBYTs4RkFBYixhQUFhLHdHQ3BCMUIsaWdCQU9NOzJGRGFPLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsVUFBVTtrR0FLWCxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsXHJcbiAgWkZpZWxkLCBaR3JvdXAsIFpDb21wb25lbnRQcm9wZXJ0aWVzLCBBdXRoU2VydmljZSxcclxufSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXpkaXYnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96ZGl2LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96ZGl2LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZGl2Q29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbXBvbmVudFByb3BlcnRpZXMgPSBuZXcgWkNvbXBvbmVudFByb3BlcnRpZXMoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0RmllbGRzRGl2Q2xhc3ModGhpcy5ncm91cC5fcHJvamVjdE5hbWUsIHRoaXMuZ3JvdXAuZmllbGROYW1lLCB0aGlzLmRhdGEsIHRoaXMuYXV0aFNlcnZpY2UpO1xyXG4gIH1cclxuXHJcblxyXG4gIENvbXBvbmVudElzVmlzaWJsZShmaWVsZDogWkZpZWxkKTogYW55IHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLkNvbXBvbmVudElzVmlzaWJsZShmaWVsZCwgdGhpcy5ncm91cCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5jaGFuZ2VWYWxpZGF0b3Ioc3RhdHVzLCB0aGlzLmdyb3VwLCB0aGlzLmRhdGEuVmFsdWUsIHRoaXMuY29tcG9uZW50UHJvcGVydGllcywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCIgY2xhc3M9XCJpb24tcm93XCI+XHJcbiAgPGFwcC16Zm9ybWNvbnRyb2wgXHJcbiAgICBbbmdDbGFzc109XCJncm91cFtmaWVsZC5pc1Zpc2libGVGaWVsZF0gPyBmaWVsZC5EaXZDbGFzcyA6IFxyXG4gICAgICAoKGZpZWxkLlZpc2libGUgPT09IHRydWUpID8gIGZpZWxkLkRpdkNsYXNzIDogJ2ZsZXgtaGlkZScpXCIgXHJcbiAgICAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZGF0YS5WYWx1ZSB8IGRpdnpsYXlvdXQ6IGRhdGEuemxheW91dFwiIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIiBbZm9ybV09XCJmb3JtXCIgaWQ9XCJ7e2ZpZWxkLlR5cGV9fS17e2ZpZWxkLk5hbWV9fVwiPlxyXG4gIDwvYXBwLXpmb3JtY29udHJvbD5cclxuPC9kaXY+Il19
@@ -0,0 +1,31 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DivzLayout {
4
+ transform(items, zlayout) {
5
+ if (!items || !zlayout) {
6
+ return items;
7
+ }
8
+ // if got zlayout, in div: 2 = 2 col per row; 3 = 1 col per row;
9
+ if (zlayout == "2") {
10
+ Object.values(items).forEach(value => {
11
+ value['DivClass'] = "col-sm-6";
12
+ });
13
+ }
14
+ else if (zlayout == '3') {
15
+ Object.values(items).forEach(value => {
16
+ value['DivClass'] = "col-sm-12";
17
+ });
18
+ }
19
+ return items;
20
+ }
21
+ }
22
+ DivzLayout.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: DivzLayout, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
23
+ DivzLayout.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: DivzLayout, name: "divzlayout" });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: DivzLayout, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: 'divzlayout',
28
+ pure: true
29
+ }]
30
+ }] });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRpdi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRpdi96ZGl2LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsT0FBZTtRQUNuQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3RCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxpRUFBaUU7UUFDakUsSUFBSSxPQUFPLElBQUksR0FBRyxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSSxJQUFJLE9BQU8sSUFBSSxHQUFHLEVBQUU7WUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ25DLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7dUdBbkJVLFVBQVU7cUdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZGl2emxheW91dCcsXHJcbiAgcHVyZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGl2ekxheW91dCBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybShpdGVtczogYW55LCB6bGF5b3V0OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgaWYgKCFpdGVtcyB8fCAhemxheW91dCkge1xyXG4gICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgZ290IHpsYXlvdXQsIGluIGRpdjogMiA9IDIgY29sIHBlciByb3c7IDMgPSAxIGNvbCBwZXIgcm93OyBcclxuICAgIGlmICh6bGF5b3V0ID09IFwiMlwiKSB7XHJcbiAgICAgIE9iamVjdC52YWx1ZXMoaXRlbXMpLmZvckVhY2godmFsdWUgPT4ge1xyXG4gICAgICAgIHZhbHVlWydEaXZDbGFzcyddID0gXCJjb2wtc20tNlwiO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHpsYXlvdXQgPT0gJzMnKSB7XHJcbiAgICAgIE9iamVjdC52YWx1ZXMoaXRlbXMpLmZvckVhY2godmFsdWUgPT4ge1xyXG4gICAgICAgIHZhbHVlWydEaXZDbGFzcyddID0gXCJjb2wtc20tMTJcIjtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH1cclxufSJdfQ==
@@ -0,0 +1,147 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from "@angular/core";
3
+ import { FormGroup, FormControl } from "@angular/forms";
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ import { of } from 'rxjs';
7
+ import { switchMap, delay } from 'rxjs/operators';
8
+ import { ZComponentHelper } from 'mmhglobal-zcore';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "mmhglobal-zcore";
11
+ import * as i2 from "../services/zcomponent.debug.service";
12
+ import * as i3 from "@ionic/angular";
13
+ import * as i4 from "../zformcontrol/zformcontrol.component";
14
+ import * as i5 from "@angular/common";
15
+ import * as i6 from "@angular/forms";
16
+ export class ZformComponent {
17
+ // @ViewChild('frm', {static: true}) form: NgForm;
18
+ constructor(authService, fieldService, debugService
19
+ // private modalService: ModalService,
20
+ // private router: Router
21
+ ) {
22
+ this.authService = authService;
23
+ this.fieldService = fieldService;
24
+ this.debugService = debugService;
25
+ this.isLoading = true;
26
+ this.fieldIndex = [];
27
+ }
28
+ ngOnInit() {
29
+ if (!this.fieldName) {
30
+ this.onInitNormal();
31
+ // this.form = this.toFormGroup(this.group.fields);
32
+ // this.group.form = this.form;
33
+ // this.fields = this.group.fields;
34
+ this.isLoading = false;
35
+ }
36
+ else {
37
+ this.fieldService.getFormFieldCode(this.fieldName, 'FormField', this, 'fields').pipe(switchMap(fieldElements => {
38
+ if (this.fieldName === 'debug') {
39
+ return this.debugService.onStartDebugger(fieldElements, this);
40
+ }
41
+ else {
42
+ this.group.fields = fieldElements;
43
+ this.onInitNormal();
44
+ }
45
+ }), switchMap(() => {
46
+ this.isLoading = false;
47
+ if (this.group._isDebugging && this.group._debug.isLoading) {
48
+ this.group._debug.isLoading = false;
49
+ }
50
+ return of([]);
51
+ }), delay(500))
52
+ .subscribe(() => {
53
+ this.debugService.LoadGridData();
54
+ this.debugService.loadWorkflowData();
55
+ });
56
+ }
57
+ }
58
+ ngOnDestroy() {
59
+ if (this.subscription) { // for debugger subscription
60
+ this.subscription.unsubscribe();
61
+ }
62
+ }
63
+ getGroup() {
64
+ if (this.fieldName !== 'debug') {
65
+ return this.group;
66
+ }
67
+ else {
68
+ return this.group._debug;
69
+ }
70
+ }
71
+ onInitNormal() {
72
+ this.form = this.toFormGroup(this.group.fields);
73
+ this.group.form = this.form;
74
+ this.fields = this.group.fields;
75
+ ZComponentHelper.setFieldsDivClass(this.group._projectName, this.group.fieldName, this.fields, this.authService);
76
+ }
77
+ ComponentIsVisible(field) {
78
+ return ZComponentHelper.ComponentIsVisible(field, this.group);
79
+ }
80
+ toFormGroup(fieldElements) {
81
+ const formControls = {};
82
+ this.getFormControls(fieldElements, formControls);
83
+ const newFormGroup = new FormGroup(formControls);
84
+ return newFormGroup;
85
+ }
86
+ addToFieldIndex(field) {
87
+ if (!field.Name) {
88
+ console.error('Field Name undefined: ', field);
89
+ }
90
+ if (field.Name && !this.fieldIndex.includes(field.Name)) {
91
+ this.fieldIndex.push(field.Name);
92
+ }
93
+ else {
94
+ console.error('Field Name Duplication: ' + field.Name + '; ', field);
95
+ }
96
+ }
97
+ getFormControls(fieldArray, formControls) {
98
+ fieldArray.forEach(field => {
99
+ this.addToFieldIndex(field);
100
+ if (typeof field.Value === "string" && field.Value.indexOf(".") !== -1) {
101
+ if (['zgrid', 'ztree', 'zimg', 'textareajson'].indexOf(field.Type) === -1) {
102
+ console.warn("FormControl - invalid field value", field.Value);
103
+ }
104
+ }
105
+ else {
106
+ if (Array.isArray(field.Value)) {
107
+ this.getFormControls(field.Value, formControls);
108
+ }
109
+ else {
110
+ const isFormControl = ZComponentHelper.isFormControl(field);
111
+ const isVisible = ZComponentHelper.isVisibleFormControl(this, field);
112
+ const isRequired = ZComponentHelper.isRequiredFormControl(this, field);
113
+ if (isFormControl === true) {
114
+ const validators = ZComponentHelper.getValidators(field, isVisible, isRequired);
115
+ formControls[field.Value] = new FormControl(this.group.zModel[field.Value], validators);
116
+ if (ZComponentHelper.hasCCField(field.Type)) {
117
+ const ccValidators = ZComponentHelper.getCCValidators(field, isVisible, isRequired);
118
+ formControls[field.CCValue] = new FormControl(this.group.zModel[field.CCValue], ccValidators);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ });
124
+ }
125
+ getReadOnlyValue(field) {
126
+ const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, field.ReadOnly);
127
+ if (typeof readOnlyValue === 'function') {
128
+ return readOnlyValue();
129
+ }
130
+ return readOnlyValue;
131
+ }
132
+ trackByFn(index, item) {
133
+ //return item['Type'] + '-' + item['Name'];
134
+ return index;
135
+ }
136
+ }
137
+ ZformComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZformComponent, deps: [{ token: i1.AuthService }, { token: i1.FieldService }, { token: i2.ZComponentDebugService }], target: i0.ɵɵFactoryTarget.Component });
138
+ ZformComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZformComponent, selector: "app-zform", inputs: { group: "group", fieldName: "fieldName" }, ngImport: i0, template: "<div class=\"e1-form\">\r\n <!--<div class=\"k-overlay\" *ngIf=\"isLoading\"></div>-->\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n <ion-grid>\r\n <ion-row id=\"dynamic-form-host\" class=\"ion-align-items-start\">\r\n <app-zformcontrol *ngFor=\"let field of fields; trackBy: trackByFn\"\r\n [ngClass]=\"group[field['isVisibleField']] ? field.DivClass :\r\n ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n [field]=\"field\"\r\n [group]=\"getGroup()\"\r\n [form]=\"form\"\r\n id=\"{{field.Type}}-{{field.Name}}\"></app-zformcontrol>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n</div>\r\n", styles: ["#dynamic-form-host app-zformcontrol{overflow-x:auto;overflow-y:hidden}\n"], components: [{ type: i3.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i3.IonRow, selector: "ion-row" }, { type: i4.ZformcontrolComponent, selector: "app-zformcontrol", inputs: ["field", "group", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
139
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZformComponent, decorators: [{
140
+ type: Component,
141
+ args: [{ selector: "app-zform", template: "<div class=\"e1-form\">\r\n <!--<div class=\"k-overlay\" *ngIf=\"isLoading\"></div>-->\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngIf=\"!isLoading\">\r\n <ion-grid>\r\n <ion-row id=\"dynamic-form-host\" class=\"ion-align-items-start\">\r\n <app-zformcontrol *ngFor=\"let field of fields; trackBy: trackByFn\"\r\n [ngClass]=\"group[field['isVisibleField']] ? field.DivClass :\r\n ((field.Visible === true) ? field.DivClass : 'flex-hide')\"\r\n [field]=\"field\"\r\n [group]=\"getGroup()\"\r\n [form]=\"form\"\r\n id=\"{{field.Type}}-{{field.Name}}\"></app-zformcontrol>\r\n </ion-row>\r\n </ion-grid>\r\n </form>\r\n</div>\r\n", styles: ["#dynamic-form-host app-zformcontrol{overflow-x:auto;overflow-y:hidden}\n"] }]
142
+ }], ctorParameters: function () { return [{ type: i1.AuthService }, { type: i1.FieldService }, { type: i2.ZComponentDebugService }]; }, propDecorators: { group: [{
143
+ type: Input
144
+ }], fieldName: [{
145
+ type: Input
146
+ }] } });
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm0vemZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWxELE9BQU8sRUFBNkIsZ0JBQWdCLEVBQWtCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBUTlGLE1BQU0sT0FBTyxjQUFjO0lBUXpCLGtEQUFrRDtJQUVsRCxZQUNVLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFlBQW9DO0lBQzVDLHNDQUFzQztJQUN0Qyx5QkFBeUI7O1FBSmpCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQVI5QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGVBQVUsR0FBRyxFQUFFLENBQUM7SUFTWixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixtREFBbUQ7WUFDbkQsK0JBQStCO1lBQy9C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QUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYSxFQUFFLElBQUk7UUFDM0IsMkNBQTJDO1FBQzNDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7MkdBN0lVLGNBQWM7K0ZBQWQsY0FBYyxxR0NwQjNCLCt5QkFnQkE7MkZESWEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO2tLQUtaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvckZuIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlLCBGaWVsZFNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpHcm91cCwgWkZpZWxkIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtemZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pmb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pmb3JtLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZpZWxkTmFtZTogc3RyaW5nO1xyXG4gIGZvcm06IEZvcm1Hcm91cDtcclxuICBmaWVsZHM6IEFycmF5PFpGaWVsZD47XHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBmaWVsZEluZGV4ID0gW107XHJcbiAgLy8gQFZpZXdDaGlsZCgnZnJtJywge3N0YXRpYzogdHJ1ZX0pIGZvcm06IE5nRm9ybTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgZmllbGRTZXJ2aWNlOiBGaWVsZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRlYnVnU2VydmljZTogWkNvbXBvbmVudERlYnVnU2VydmljZVxyXG4gICAgLy8gcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZE5hbWUpIHtcclxuICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgLy8gdGhpcy5mb3JtID0gdGhpcy50b0Zvcm1Hcm91cCh0aGlzLmdyb3VwLmZpZWxkcyk7XHJcbiAgICAgIC8vIHRoaXMuZ3JvdXAuZm9ybSA9IHRoaXMuZm9ybTtcclxuICAgICAgLy8gdGhpcy5maWVsZHMgPSB0aGlzLmdyb3VwLmZpZWxkcztcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRTZXJ2aWNlLmdldEZvcm1GaWVsZENvZGUodGhpcy5maWVsZE5hbWUsICdGb3JtRmllbGQnLCB0aGlzLCAnZmllbGRzJykucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoZmllbGRFbGVtZW50cyA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5maWVsZE5hbWUgPT09ICdkZWJ1ZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVidWdTZXJ2aWNlLm9uU3RhcnREZWJ1Z2dlcihmaWVsZEVsZW1lbnRzLCB0aGlzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuZmllbGRzID0gZmllbGRFbGVtZW50cztcclxuICAgICAgICAgICAgdGhpcy5vbkluaXROb3JtYWwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmdyb3VwLl9pc0RlYnVnZ2luZyAmJiB0aGlzLmdyb3VwLl9kZWJ1Zy5pc0xvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC5fZGVidWcuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGRlbGF5KDUwMCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRlYnVnU2VydmljZS5Mb2FkR3JpZERhdGEoKTtcclxuICAgICAgICAgIHRoaXMuZGVidWdTZXJ2aWNlLmxvYWRXb3JrZmxvd0RhdGEoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7ICAvLyBmb3IgZGVidWdnZXIgc3Vic2NyaXB0aW9uXHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHcm91cCgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkTmFtZSAhPT0gJ2RlYnVnJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5ncm91cDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwLl9kZWJ1ZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Jbml0Tm9ybWFsKCkge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy50b0Zvcm1Hcm91cCh0aGlzLmdyb3VwLmZpZWxkcyk7XHJcbiAgICB0aGlzLmdyb3VwLmZvcm0gPSB0aGlzLmZvcm07XHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZ3JvdXAuZmllbGRzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRGaWVsZHNEaXZDbGFzcyh0aGlzLmdyb3VwLl9wcm9qZWN0TmFtZSwgdGhpcy5ncm91cC5maWVsZE5hbWUsIHRoaXMuZmllbGRzLCB0aGlzLmF1dGhTZXJ2aWNlKTtcclxuICB9XHJcblxyXG5cclxuICBDb21wb25lbnRJc1Zpc2libGUoZmllbGQ6IFpGaWVsZCk6IGFueSB7XHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5Db21wb25lbnRJc1Zpc2libGUoZmllbGQsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0Zvcm1Hcm91cChmaWVsZEVsZW1lbnRzOiBBcnJheTxaRmllbGQ+KSB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbHM6IHsgW2tleTogc3RyaW5nXTogRm9ybUNvbnRyb2wgfSA9IHt9O1xyXG4gICAgdGhpcy5nZXRGb3JtQ29udHJvbHMoZmllbGRFbGVtZW50cywgZm9ybUNvbnRyb2xzKTtcclxuICAgIGNvbnN0IG5ld0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoZm9ybUNvbnRyb2xzKTtcclxuICAgIHJldHVybiBuZXdGb3JtR3JvdXA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFRvRmllbGRJbmRleChmaWVsZDogWkZpZWxkKSB7XHJcbiAgICBpZiAoIWZpZWxkLk5hbWUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRmllbGQgTmFtZSB1bmRlZmluZWQ6ICcsIGZpZWxkKTtcclxuICAgIH1cclxuICAgIGlmIChmaWVsZC5OYW1lICYmICF0aGlzLmZpZWxkSW5kZXguaW5jbHVkZXMoZmllbGQuTmFtZSkpIHtcclxuICAgICAgdGhpcy5maWVsZEluZGV4LnB1c2goZmllbGQuTmFtZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGaWVsZCBOYW1lIER1cGxpY2F0aW9uOiAnICsgZmllbGQuTmFtZSArICc7ICAnLCBmaWVsZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtQ29udHJvbHMoXHJcbiAgICBmaWVsZEFycmF5OiBBcnJheTxaRmllbGQ+LFxyXG4gICAgZm9ybUNvbnRyb2xzOiB7IFtrZXk6IHN0cmluZ106IEZvcm1Db250cm9sIH1cclxuICApIHtcclxuICAgIGZpZWxkQXJyYXkuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIHRoaXMuYWRkVG9GaWVsZEluZGV4KGZpZWxkKTtcclxuICAgICAgaWYgKHR5cGVvZiBmaWVsZC5WYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBmaWVsZC5WYWx1ZS5pbmRleE9mKFwiLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICBpZiAoWyd6Z3JpZCcsICd6dHJlZScsICd6aW1nJywgJ3RleHRhcmVhanNvbiddLmluZGV4T2YoZmllbGQuVHlwZSkgPT09IC0xKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJGb3JtQ29udHJvbCAtIGludmFsaWQgZmllbGQgdmFsdWVcIiwgZmllbGQuVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5WYWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xzKGZpZWxkLlZhbHVlLCBmb3JtQ29udHJvbHMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gWkNvbXBvbmVudEhlbHBlci5pc0Zvcm1Db250cm9sKGZpZWxkKTtcclxuICAgICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9IFpDb21wb25lbnRIZWxwZXIuaXNWaXNpYmxlRm9ybUNvbnRyb2wodGhpcywgZmllbGQpO1xyXG4gICAgICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IFpDb21wb25lbnRIZWxwZXIuaXNSZXF1aXJlZEZvcm1Db250cm9sKHRoaXMsIGZpZWxkKTtcclxuICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldFZhbGlkYXRvcnMoZmllbGQsIGlzVmlzaWJsZSwgaXNSZXF1aXJlZCk7XHJcbiAgICAgICAgICAgIGZvcm1Db250cm9sc1tmaWVsZC5WYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdLCB2YWxpZGF0b3JzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChaQ29tcG9uZW50SGVscGVyLmhhc0NDRmllbGQoZmllbGQuVHlwZSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjY1ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBaQ29tcG9uZW50SGVscGVyLmdldENDVmFsaWRhdG9ycyhmaWVsZCwgaXNWaXNpYmxlLCBpc1JlcXVpcmVkKTtcclxuICAgICAgICAgICAgICBmb3JtQ29udHJvbHNbZmllbGQuQ0NWYWx1ZV0gPSBuZXcgRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5DQ1ZhbHVlXSxcclxuICAgICAgICAgICAgICAgIGNjVmFsaWRhdG9yc1xyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSZWFkT25seVZhbHVlKGZpZWxkOiBaRmllbGQpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmVhZE9ubHkpO1xyXG4gICAgaWYgKHR5cGVvZiByZWFkT25seVZhbHVlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIHJldHVybiByZWFkT25seVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtKTogbnVtYmVyIHtcclxuICAgIC8vcmV0dXJuIGl0ZW1bJ1R5cGUnXSArICctJyArIGl0ZW1bJ05hbWUnXTtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0VmFsdWUoZmllbGQ6IFpGaWVsZCkge1xyXG4gIC8vICAgaWYgKGZpZWxkLlR5cGUuaW5kZXhPZignZGF0ZScpICE9PSAtMSkge1xyXG4gIC8vICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5ncm91cC56TW9kZWxbZmllbGQuVmFsdWVdKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmdyb3VwLnpNb2RlbFtmaWVsZC5WYWx1ZV07XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlMS1mb3JtXCI+XHJcbiAgPCEtLTxkaXYgY2xhc3M9XCJrLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPjwvZGl2Pi0tPlxyXG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiICpuZ0lmPVwiIWlzTG9hZGluZ1wiPlxyXG4gICAgPGlvbi1ncmlkPlxyXG4gICAgICA8aW9uLXJvdyBpZD1cImR5bmFtaWMtZm9ybS1ob3N0XCIgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtc3RhcnRcIj5cclxuICAgICAgICA8YXBwLXpmb3JtY29udHJvbCAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwW2ZpZWxkWydpc1Zpc2libGVGaWVsZCddXSA/IGZpZWxkLkRpdkNsYXNzIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZpZWxkLlZpc2libGUgPT09IHRydWUpID8gIGZpZWxkLkRpdkNsYXNzIDogJ2ZsZXgtaGlkZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJnZXRHcm91cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7ZmllbGQuVHlwZX19LXt7ZmllbGQuTmFtZX19XCI+PC9hcHAtemZvcm1jb250cm9sPlxyXG4gICAgICA8L2lvbi1yb3c+XHJcbiAgICA8L2lvbi1ncmlkPlxyXG4gIDwvZm9ybT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,49 @@
1
+ /********** Angular **********/
2
+ import { Component, Input, ViewChild } from "@angular/core";
3
+ /********** Ionic **********/
4
+ /********** Plugin **********/
5
+ /********** Component & Service **********/
6
+ import { FieldElementDirective } from "../directives/fieldelement.directive";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../services/zcomponent.service";
9
+ import * as i2 from "../directives/fieldelement.directive";
10
+ export class ZformcontrolComponent {
11
+ constructor(componentFactoryResolver, zcomponentService
12
+ // private appRef: ApplicationRef,
13
+ // private injector: Injector,
14
+ ) {
15
+ this.componentFactoryResolver = componentFactoryResolver;
16
+ this.zcomponentService = zcomponentService;
17
+ }
18
+ ngOnInit() {
19
+ this.zcomponentService.loadComponent(this.componentFactoryResolver, this.fieldElement, this.field, this.group, this.form);
20
+ // this.componentRef = ZComponentHelper.appendComponentToDynamicForm(
21
+ // this.componentFactoryResolver,
22
+ // this.injector,
23
+ // this.appRef,
24
+ // this.field,
25
+ // this.group,
26
+ // this.containerid
27
+ // );
28
+ }
29
+ ngOnDestroy() {
30
+ // this.appRef.detachView(this.componentRef.hostView);
31
+ // this.componentRef.destroy();
32
+ }
33
+ }
34
+ ZformcontrolComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZformcontrolComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
35
+ ZformcontrolComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZformcontrolComponent, selector: "app-zformcontrol", inputs: { field: "field", group: "group", form: "form" }, viewQueries: [{ propertyName: "fieldElement", first: true, predicate: FieldElementDirective, descendants: true, static: true }], ngImport: i0, template: "<!-- <ion-col size=12 sizeSm=\"12\" sizeMd=\"6\" sizeLg=\"4\" sizeXl=\"3\" fieldelement></ion-col> -->\r\n<span fieldelement></span>", styles: [""], directives: [{ type: i2.FieldElementDirective, selector: "[fieldelement]" }] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZformcontrolComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: "app-zformcontrol", template: "<!-- <ion-col size=12 sizeSm=\"12\" sizeMd=\"6\" sizeLg=\"4\" sizeXl=\"3\" fieldelement></ion-col> -->\r\n<span fieldelement></span>", styles: [""] }]
39
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1.ZComponentService }]; }, propDecorators: { field: [{
40
+ type: Input
41
+ }], group: [{
42
+ type: Input
43
+ }], form: [{
44
+ type: Input
45
+ }], fieldElement: [{
46
+ type: ViewChild,
47
+ args: [FieldElementDirective, { static: true }]
48
+ }] } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemZvcm1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pmb3JtY29udHJvbC96Zm9ybWNvbnRyb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemZvcm1jb250cm9sL3pmb3JtY29udHJvbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLFNBQVMsRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFHekcsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7QUFVN0UsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxZQUNVLHdCQUFrRCxFQUNsRCxpQkFBb0M7SUFDNUMsa0NBQWtDO0lBQ2xDLDhCQUE4Qjs7UUFIdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBRzNDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFILHFFQUFxRTtRQUNyRSxtQ0FBbUM7UUFDbkMsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLHFCQUFxQjtRQUNyQixLQUFLO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxzREFBc0Q7UUFDdEQsK0JBQStCO0lBQ2pDLENBQUM7O2tIQS9CVSxxQkFBcUI7c0dBQXJCLHFCQUFxQixnS0FNckIscUJBQXFCLDhEQ3pCbEMsc0lBQzBCOzJGRGtCYixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOytJQU1uQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFOEMsWUFBWTtzQkFBL0QsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBWaWV3Q2hpbGQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgRmllbGRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSBcIi4uL2RpcmVjdGl2ZXMvZmllbGRlbGVtZW50LmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFpGaWVsZCwgWkdyb3VwIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Zm9ybWNvbnRyb2xcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pmb3JtY29udHJvbC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Zm9ybWNvbnRyb2wuY29tcG9uZW50LnNjc3NcIl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFpmb3JtY29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGQ6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuICAvLyBASW5wdXQoKSBjb250YWluZXJpZDogc3RyaW5nO1xyXG4gIEBWaWV3Q2hpbGQoRmllbGRFbGVtZW50RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmaWVsZEVsZW1lbnQ6IEZpZWxkRWxlbWVudERpcmVjdGl2ZTtcclxuICBjb21wb25lbnRSZWY6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSB6Y29tcG9uZW50U2VydmljZTogWkNvbXBvbmVudFNlcnZpY2VcclxuICAgIC8vIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgIC8vIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnpjb21wb25lbnRTZXJ2aWNlLmxvYWRDb21wb25lbnQodGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIHRoaXMuZmllbGRFbGVtZW50LCB0aGlzLmZpZWxkLCB0aGlzLmdyb3VwLCB0aGlzLmZvcm0pO1xyXG4gICAgLy8gdGhpcy5jb21wb25lbnRSZWYgPSBaQ29tcG9uZW50SGVscGVyLmFwcGVuZENvbXBvbmVudFRvRHluYW1pY0Zvcm0oXHJcbiAgICAvLyAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgLy8gICB0aGlzLmluamVjdG9yLFxyXG4gICAgLy8gICB0aGlzLmFwcFJlZixcclxuICAgIC8vICAgdGhpcy5maWVsZCxcclxuICAgIC8vICAgdGhpcy5ncm91cCxcclxuICAgIC8vICAgdGhpcy5jb250YWluZXJpZFxyXG4gICAgLy8gKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5hcHBSZWYuZGV0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcbiAgICAvLyB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGlvbi1jb2wgc2l6ZT0xMiBzaXplU209XCIxMlwiIHNpemVNZD1cIjZcIiBzaXplTGc9XCI0XCIgc2l6ZVhsPVwiM1wiIGZpZWxkZWxlbWVudD48L2lvbi1jb2w+IC0tPlxyXG48c3BhbiBmaWVsZGVsZW1lbnQ+PC9zcGFuPiJdfQ==
@@ -0,0 +1,148 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from "@angular/core";
3
+ /********** Ionic **********/
4
+ /********** Plugin **********/
5
+ /********** Component & Service **********/
6
+ import { ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@progress/kendo-angular-gauges";
9
+ import * as i2 from "@angular/common";
10
+ export class ZgaugeComponent {
11
+ // fieldElement01 = [{
12
+ // Name: 'gauge01',
13
+ // Type: 'zgauge',
14
+ // Value: 'group.gauge01Value',
15
+ // title: 'group.gauge01Title',
16
+ // majorTicks: 'group.gauge01MajorTicks',
17
+ // minorTicks: 'group.gauge01MinorTicks',
18
+ // minValue:'group.gauge01MinValue',
19
+ // maxValue:'group.gauge01MaxValue',
20
+ // Max: 100,
21
+ // Color: 'group.gauge01Color',
22
+ // DivClass: "col-md-12 col-md-6",
23
+ // Visible: true,
24
+ // transitions:false,
25
+ // reverse:false,
26
+ // startAngle: 'group.gauge01StartAngle',
27
+ // endAngle: 'group.gauge01EndAngle',
28
+ // rangePlaceholderColor:'#e6e5e5',
29
+ // labelsColor:'#0000ff',
30
+ // rangeFrom:0,
31
+ // rangeTo:50,
32
+ // rangeColor:'#ff6358',
33
+ // rangeLineCap:'round',
34
+ // showLabels: true,
35
+ // rangeSize:10,
36
+ // }];
37
+ constructor() {
38
+ this.isLoading = true;
39
+ this.componentProperties = new ZComponentProperties();
40
+ this.value = 0;
41
+ this.title = "";
42
+ this.color = [];
43
+ this.majorTicks = [{ visible: true, color: '#0000ff' }];
44
+ this.minorTicks = [{ visible: true, color: '#0000ff' }];
45
+ this.startAngle = 0;
46
+ this.endAngle = 180;
47
+ this.minValue = 0;
48
+ this.maxValue = 200;
49
+ this.options = {
50
+ value: this.value,
51
+ title: this.title,
52
+ scaleMax: 50,
53
+ colors: this.color,
54
+ transitions: false,
55
+ majorTicks: this.majorTicks,
56
+ minorTicks: this.minorTicks,
57
+ minValue: this.minValue,
58
+ maxValue: this.maxValue,
59
+ reverse: false,
60
+ startAngle: this.startAngle,
61
+ endAngle: this.endAngle,
62
+ rangePlaceholderColor: '#e6e5e5',
63
+ labelsColor: '#0000ff',
64
+ rangeFrom: 0,
65
+ rangeTo: 100,
66
+ rangeColor: '#ff6358',
67
+ rangeLineCap: 'round',
68
+ showLabels: true,
69
+ rangeSize: 10,
70
+ };
71
+ }
72
+ ngOnInit() {
73
+ ZComponentHelper.setComponentProperties(this);
74
+ ZComponentHelper.registerComponent(this);
75
+ if (this.data.Options) {
76
+ const optionType = typeof (this.data.Options);
77
+ if (optionType === 'object') {
78
+ Object.assign(this.options, this.data.Options);
79
+ }
80
+ else if (optionType === 'string') {
81
+ const optionValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.Options);
82
+ if (typeof (optionValue) === 'object') {
83
+ Object.assign(this.options, optionValue);
84
+ }
85
+ }
86
+ }
87
+ this.getFieldDeclarationForSetup(this.data, this.options);
88
+ this.isLoading = false;
89
+ }
90
+ getFieldDeclarationForSetup(field, options) {
91
+ options.value = ZComponentHelper.getGroupEvalValue.call(this, field.Value) || options.value;
92
+ options.title = ZComponentHelper.getGroupEvalValue.call(this, field.Title) || options.title;
93
+ options.scaleMax = field.Max || options.scaleMax;
94
+ options.minValue = ZComponentHelper.getGroupEvalValue.call(this, field.MinValue) || options.minValue;
95
+ options.maxValue = ZComponentHelper.getGroupEvalValue.call(this, field.MaxValue) || options.maxValue;
96
+ options.colors = ZComponentHelper.getGroupEvalValue.call(this, field.Color) || options.colors;
97
+ options.transitions = field.Transitions || options.transitions;
98
+ options.majorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MajorTicks) || options.majorTicks;
99
+ options.showLabels = field.ShowLabels || options.showLabels;
100
+ options.style = field.Style || options.style;
101
+ options.minorTicks = ZComponentHelper.getGroupEvalValue.call(this, field.MinorTicks) || options.minorTicks;
102
+ options.reverse = field.Reverse || options.reverse;
103
+ options.startAngle = ZComponentHelper.getGroupEvalValue.call(this, field.StartAngle) || options.startAngle;
104
+ options.endAngle = ZComponentHelper.getGroupEvalValue.call(this, field.EndAngle) || options.endAngle;
105
+ options.rangePlaceholderColor = field.RangePlaceholderColor || options.rangePlaceholderColor;
106
+ options.rangeFrom = ZComponentHelper.getGroupEvalValue.call(this, field.RangeFrom) || options.rangeFrom;
107
+ options.rangeTo = ZComponentHelper.getGroupEvalValue.call(this, field.RangeTo) || options.rangeTo;
108
+ options.rangeColor = field.RangeColor || options.rangeColor;
109
+ options.rangeLineCap = field.RangeLineCap || options.rangeLineCap;
110
+ options.rangeSize = field.RangeSize || options.rangeSize;
111
+ options.GaugeAlignment = ZComponentHelper.getGroupEvalValue.call(this, field.GaugeAlignment) || options.GaugeAlignment;
112
+ options.paddingValue = options.value.toString() === 'NaN' ? options.GaugeAlignment : '0%';
113
+ }
114
+ alignment() {
115
+ const alignmentStyle = {
116
+ "padding-right": this.options["paddingValue"]
117
+ };
118
+ return alignmentStyle;
119
+ }
120
+ setEnable(status) {
121
+ // const fc = this.group.form.controls[this.data.Value];
122
+ // status ? fc.enable() : fc.disable();
123
+ this.componentProperties.isReadOnly = !status;
124
+ }
125
+ setVisible(status) {
126
+ this.componentProperties.isVisible = status;
127
+ this.data.Visible = status;
128
+ }
129
+ setRequire(status) {
130
+ this.componentProperties.isRequired = status;
131
+ }
132
+ setData(gData) {
133
+ this.getFieldDeclarationForSetup(this.data, this.options);
134
+ }
135
+ }
136
+ ZgaugeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZgaugeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
+ ZgaugeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZgaugeComponent, selector: "app-zgauge", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" style=\"margin-top:50px;width:90% ;height:100%; min-width: 330px;\">\r\n <kendo-arcgauge-scale\r\n [majorTicks]=\"{ visible: true, color: '#0000ff' }\"\r\n [minorTicks]=\"{ visible: true, color: '#0000ff' }\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"0\"\r\n [endAngle]=\"180\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n", styles: [""], components: [{ type: i1.ArcGaugeComponent, selector: "kendo-arcgauge", inputs: ["value", "color", "colors", "opacity", "scale"], exportAs: ["kendoArcGauge"] }, { type: i1.ArcScaleComponent, selector: "kendo-arcgauge-scale", inputs: ["labels", "rangeDistance", "rangeLineCap", "startAngle", "endAngle"] }, { type: i1.ArcLabelsComponent, selector: "kendo-arcgauge-scale-labels" }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i1.ArcCenterTemplateDirective, selector: "[kendoArcGaugeCenterTemplate]" }] });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZgaugeComponent, decorators: [{
139
+ type: Component,
140
+ args: [{ selector: 'app-zgauge', template: "<div *ngIf=\"!isLoading && (!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\" style=\"text-align: center;\">\r\n <div id=\"marketShareContainer\" class=\"ion-row\" class=\"col-xs-12 stats-graph\">\r\n <h6 style=\"color: gray;\">{{ options.title }}</h6>\r\n </div>\r\n <div [ngStyle]='alignment()'>\r\n <kendo-arcgauge [value]=\"options.value\" [transitions]=\"options.transitions\" [colors]=\"options.colors\" style=\"margin-top:50px;width:90% ;height:100%; min-width: 330px;\">\r\n <kendo-arcgauge-scale\r\n [majorTicks]=\"{ visible: true, color: '#0000ff' }\"\r\n [minorTicks]=\"{ visible: true, color: '#0000ff' }\"\r\n [reverse]=\"options.reverse\"\r\n [startAngle]=\"0\"\r\n [endAngle]=\"180\"\r\n [min]=\"options.minValue\"\r\n [max]=\"options.maxValue\"\r\n [rangePlaceholderColor]=\"options.rangePlaceholderColor\"\r\n [rangeSize]=\"options.rangeSize\"\r\n [rangeLineCap]=\"options.rangeLineCap\">\r\n <kendo-arcgauge-scale-labels format=\"l\" [color]=\"options.labelsColor\" [visible]=\"options.showLabels\">\r\n </kendo-arcgauge-scale-labels>\r\n </kendo-arcgauge-scale>\r\n <ng-template kendoArcGaugeCenterTemplate let-value=\"value\" let-color=\"color\">\r\n <span [style.color]=\"color\">{{ value }}</span>\r\n </ng-template>\r\n </kendo-arcgauge>\r\n </div>\r\n</div>\r\n", styles: [""] }]
141
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
142
+ type: Input
143
+ }], group: [{
144
+ type: Input
145
+ }], form: [{
146
+ type: Input
147
+ }] } });
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemdhdWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pnYXVnZS96Z2F1Z2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemdhdWdlL3pnYXVnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNPLGdCQUFnQixFQUNaLG9CQUFvQixFQUNyQyxNQUFNLGlCQUFpQixDQUFDOzs7O0FBUXpCLE1BQU0sT0FBTyxlQUFlO0lBd0MxQix1QkFBdUI7SUFDdkIscUJBQXFCO0lBQ3JCLG9CQUFvQjtJQUNwQixpQ0FBaUM7SUFDakMsaUNBQWlDO0lBQ2pDLDJDQUEyQztJQUMzQyw0Q0FBNEM7SUFDNUMsc0NBQXNDO0lBQ3RDLHFDQUFxQztJQUNyQyxjQUFjO0lBQ2QsaUNBQWlDO0lBQ2pDLG9DQUFvQztJQUNwQyxtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQiwyQ0FBMkM7SUFDM0Msd0NBQXdDO0lBQ3hDLHFDQUFxQztJQUNyQywyQkFBMkI7SUFDM0IsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDbEIsTUFBTTtJQUVOO1FBOURBLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsd0JBQW1CLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsRUFBRSxDQUFD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QUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxjQUFjLEdBQUc7WUFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQzlDLENBQUM7UUFFRixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRU0sU0FBUyxDQUFDLE1BQWU7UUFDOUIsd0RBQXdEO1FBQ3hELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ2hELENBQUM7SUFFTSxVQUFVLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQy9DLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7NEdBM0lVLGVBQWU7Z0dBQWYsZUFBZSwwR0NwQjVCLG0vQ0EwQkE7MkZETmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzBFQUtiLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFxyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsXHJcbiAgWkZpZWxkLCBaR3JvdXAsIFpDb21wb25lbnRQcm9wZXJ0aWVzXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16Z2F1Z2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi96Z2F1Z2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3pnYXVnZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWmdhdWdlQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGlzTG9hZGluZyA9IHRydWU7XHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gIHByaXZhdGUgdmFsdWUgPSAwO1xyXG4gIHByaXZhdGUgdGl0bGUgPSBcIlwiO1xyXG4gIHByaXZhdGUgY29sb3IgPSBbXTtcclxuICBwcml2YXRlIG1ham9yVGlja3MgPSBbeyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH1dO1xyXG4gIHByaXZhdGUgbWlub3JUaWNrcyA9IFt7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfV07XHJcbiAgcHJpdmF0ZSBzdGFydEFuZ2xlID0gMDtcclxuICBwcml2YXRlIGVuZEFuZ2xlID0gMTgwO1xyXG4gIHByaXZhdGUgbWluVmFsdWUgPSAwO1xyXG4gIHByaXZhdGUgbWF4VmFsdWUgPSAyMDA7XHJcblxyXG4gIG9wdGlvbnMgPSB7XHJcbiAgICB2YWx1ZTogdGhpcy52YWx1ZSxcclxuICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxyXG4gICAgc2NhbGVNYXg6IDUwLFxyXG4gICAgY29sb3JzOiB0aGlzLmNvbG9yLFxyXG4gICAgdHJhbnNpdGlvbnM6IGZhbHNlLFxyXG4gICAgbWFqb3JUaWNrczogdGhpcy5tYWpvclRpY2tzLFxyXG4gICAgbWlub3JUaWNrczogdGhpcy5taW5vclRpY2tzLFxyXG4gICAgbWluVmFsdWU6IHRoaXMubWluVmFsdWUsXHJcbiAgICBtYXhWYWx1ZTogdGhpcy5tYXhWYWx1ZSxcclxuICAgIHJldmVyc2U6IGZhbHNlLFxyXG4gICAgc3RhcnRBbmdsZTogdGhpcy5zdGFydEFuZ2xlLFxyXG4gICAgZW5kQW5nbGU6IHRoaXMuZW5kQW5nbGUsXHJcbiAgICByYW5nZVBsYWNlaG9sZGVyQ29sb3I6ICcjZTZlNWU1JyxcclxuICAgIGxhYmVsc0NvbG9yOiAnIzAwMDBmZicsXHJcbiAgICByYW5nZUZyb206IDAsXHJcbiAgICByYW5nZVRvOiAxMDAsXHJcbiAgICByYW5nZUNvbG9yOiAnI2ZmNjM1OCcsXHJcbiAgICByYW5nZUxpbmVDYXA6ICdyb3VuZCcsXHJcbiAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgcmFuZ2VTaXplOiAxMCxcclxuICB9O1xyXG5cclxuICAvLyAgZmllbGRFbGVtZW50MDEgPSBbe1xyXG4gIC8vICAgTmFtZTogJ2dhdWdlMDEnLFxyXG4gIC8vICAgVHlwZTogJ3pnYXVnZScsXHJcbiAgLy8gICBWYWx1ZTogJ2dyb3VwLmdhdWdlMDFWYWx1ZScsXHJcbiAgLy8gICB0aXRsZTogJ2dyb3VwLmdhdWdlMDFUaXRsZScsXHJcbiAgLy8gICBtYWpvclRpY2tzOiAnZ3JvdXAuZ2F1Z2UwMU1ham9yVGlja3MnLFxyXG4gIC8vICAgbWlub3JUaWNrczogICdncm91cC5nYXVnZTAxTWlub3JUaWNrcycsXHJcbiAgLy8gICBtaW5WYWx1ZTonZ3JvdXAuZ2F1Z2UwMU1pblZhbHVlJyxcclxuICAvLyAgbWF4VmFsdWU6J2dyb3VwLmdhdWdlMDFNYXhWYWx1ZScsXHJcbiAgLy8gICBNYXg6IDEwMCxcclxuICAvLyAgIENvbG9yOiAnZ3JvdXAuZ2F1Z2UwMUNvbG9yJyxcclxuICAvLyAgIERpdkNsYXNzOiBcImNvbC1tZC0xMiBjb2wtbWQtNlwiLFxyXG4gIC8vICAgVmlzaWJsZTogdHJ1ZSxcclxuICAvLyAgIHRyYW5zaXRpb25zOmZhbHNlLFxyXG4gIC8vICAgcmV2ZXJzZTpmYWxzZSxcclxuICAvLyAgIHN0YXJ0QW5nbGU6ICdncm91cC5nYXVnZTAxU3RhcnRBbmdsZScsXHJcbiAgLy8gICBlbmRBbmdsZTogICdncm91cC5nYXVnZTAxRW5kQW5nbGUnLFxyXG4gIC8vICAgcmFuZ2VQbGFjZWhvbGRlckNvbG9yOicjZTZlNWU1JyxcclxuICAvLyAgIGxhYmVsc0NvbG9yOicjMDAwMGZmJyxcclxuICAvLyAgIHJhbmdlRnJvbTowLFxyXG4gIC8vICAgcmFuZ2VUbzo1MCxcclxuICAvLyAgIHJhbmdlQ29sb3I6JyNmZjYzNTgnLFxyXG4gIC8vICAgcmFuZ2VMaW5lQ2FwOidyb3VuZCcsXHJcbiAgLy8gICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gIC8vICAgcmFuZ2VTaXplOjEwLFxyXG4gIC8vIH1dO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5PcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvblR5cGUgPSB0eXBlb2YgKHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgaWYgKG9wdGlvblR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdGlvbnMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgfSBlbHNlIGlmIChvcHRpb25UeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHRoaXMuZGF0YS5PcHRpb25zKTtcclxuICAgICAgICBpZiAodHlwZW9mIChvcHRpb25WYWx1ZSkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW9ucywgb3B0aW9uVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpZWxkRGVjbGFyYXRpb25Gb3JTZXR1cChmaWVsZDogWkZpZWxkLCBvcHRpb25zOiBhbnkpIHtcclxuICAgIG9wdGlvbnMudmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuVmFsdWUpIHx8IG9wdGlvbnMudmFsdWU7XHJcbiAgICBvcHRpb25zLnRpdGxlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlRpdGxlKSB8fCBvcHRpb25zLnRpdGxlO1xyXG4gICAgb3B0aW9ucy5zY2FsZU1heCA9IGZpZWxkLk1heCB8fCBvcHRpb25zLnNjYWxlTWF4O1xyXG4gICAgb3B0aW9ucy5taW5WYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5NaW5WYWx1ZSkgfHwgb3B0aW9ucy5taW5WYWx1ZTtcclxuICAgIG9wdGlvbnMubWF4VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuTWF4VmFsdWUpIHx8IG9wdGlvbnMubWF4VmFsdWU7XHJcbiAgICBvcHRpb25zLmNvbG9ycyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5Db2xvcikgfHwgb3B0aW9ucy5jb2xvcnM7XHJcbiAgICBvcHRpb25zLnRyYW5zaXRpb25zID0gZmllbGQuVHJhbnNpdGlvbnMgfHwgb3B0aW9ucy50cmFuc2l0aW9ucztcclxuICAgIG9wdGlvbnMubWFqb3JUaWNrcyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5NYWpvclRpY2tzKSB8fCBvcHRpb25zLm1ham9yVGlja3M7XHJcbiAgICBvcHRpb25zLnNob3dMYWJlbHMgPSBmaWVsZC5TaG93TGFiZWxzIHx8IG9wdGlvbnMuc2hvd0xhYmVscztcclxuICAgIG9wdGlvbnMuc3R5bGUgPSBmaWVsZC5TdHlsZSB8fCBvcHRpb25zLnN0eWxlO1xyXG4gICAgb3B0aW9ucy5taW5vclRpY2tzID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLk1pbm9yVGlja3MpIHx8IG9wdGlvbnMubWlub3JUaWNrcztcclxuICAgIG9wdGlvbnMucmV2ZXJzZSA9IGZpZWxkLlJldmVyc2UgfHwgb3B0aW9ucy5yZXZlcnNlO1xyXG4gICAgb3B0aW9ucy5zdGFydEFuZ2xlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlN0YXJ0QW5nbGUpIHx8IG9wdGlvbnMuc3RhcnRBbmdsZTtcclxuICAgIG9wdGlvbnMuZW5kQW5nbGUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuRW5kQW5nbGUpIHx8IG9wdGlvbnMuZW5kQW5nbGU7XHJcbiAgICBvcHRpb25zLnJhbmdlUGxhY2Vob2xkZXJDb2xvciA9IGZpZWxkLlJhbmdlUGxhY2Vob2xkZXJDb2xvciB8fCBvcHRpb25zLnJhbmdlUGxhY2Vob2xkZXJDb2xvcjtcclxuICAgIG9wdGlvbnMucmFuZ2VGcm9tID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGZpZWxkLlJhbmdlRnJvbSkgfHwgb3B0aW9ucy5yYW5nZUZyb207XHJcbiAgICBvcHRpb25zLnJhbmdlVG8gPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgZmllbGQuUmFuZ2VUbykgfHwgb3B0aW9ucy5yYW5nZVRvO1xyXG4gICAgb3B0aW9ucy5yYW5nZUNvbG9yID0gZmllbGQuUmFuZ2VDb2xvciB8fCBvcHRpb25zLnJhbmdlQ29sb3I7XHJcbiAgICBvcHRpb25zLnJhbmdlTGluZUNhcCA9IGZpZWxkLlJhbmdlTGluZUNhcCB8fCBvcHRpb25zLnJhbmdlTGluZUNhcDtcclxuICAgIG9wdGlvbnMucmFuZ2VTaXplID0gZmllbGQuUmFuZ2VTaXplIHx8IG9wdGlvbnMucmFuZ2VTaXplO1xyXG4gICAgb3B0aW9ucy5HYXVnZUFsaWdubWVudCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCBmaWVsZC5HYXVnZUFsaWdubWVudCkgfHwgb3B0aW9ucy5HYXVnZUFsaWdubWVudDtcclxuICAgIG9wdGlvbnMucGFkZGluZ1ZhbHVlID0gb3B0aW9ucy52YWx1ZS50b1N0cmluZygpID09PSAnTmFOJyA/IG9wdGlvbnMuR2F1Z2VBbGlnbm1lbnQgOiAnMCUnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ25tZW50KCkge1xyXG4gICAgY29uc3QgYWxpZ25tZW50U3R5bGUgPSB7XHJcbiAgICAgIFwicGFkZGluZy1yaWdodFwiOiB0aGlzLm9wdGlvbnNbXCJwYWRkaW5nVmFsdWVcIl1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFsaWdubWVudFN0eWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZShzdGF0dXM6IGJvb2xlYW4pIHtcclxuICAgIC8vIGNvbnN0IGZjID0gdGhpcy5ncm91cC5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICAvLyBzdGF0dXMgPyBmYy5lbmFibGUoKSA6IGZjLmRpc2FibGUoKTtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWaXNpYmxlKHN0YXR1czogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSA9IHN0YXR1cztcclxuICAgIHRoaXMuZGF0YS5WaXNpYmxlID0gc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlcXVpcmUoc3RhdHVzOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZCA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREYXRhKGdEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZ2V0RmllbGREZWNsYXJhdGlvbkZvclNldHVwKHRoaXMuZGF0YSwgdGhpcy5vcHRpb25zKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUpXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XHJcbiAgPGRpdiBpZD1cIm1hcmtldFNoYXJlQ29udGFpbmVyXCIgY2xhc3M9XCJpb24tcm93XCIgY2xhc3M9XCJjb2wteHMtMTIgc3RhdHMtZ3JhcGhcIj5cclxuICAgIDxoNiBzdHlsZT1cImNvbG9yOiBncmF5O1wiPnt7IG9wdGlvbnMudGl0bGUgfX08L2g2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nU3R5bGVdPSdhbGlnbm1lbnQoKSc+XHJcbiAgICA8a2VuZG8tYXJjZ2F1Z2UgW3ZhbHVlXT1cIm9wdGlvbnMudmFsdWVcIiBbdHJhbnNpdGlvbnNdPVwib3B0aW9ucy50cmFuc2l0aW9uc1wiIFtjb2xvcnNdPVwib3B0aW9ucy5jb2xvcnNcIiBzdHlsZT1cIm1hcmdpbi10b3A6NTBweDt3aWR0aDo5MCUgO2hlaWdodDoxMDAlOyBtaW4td2lkdGg6IDMzMHB4O1wiPlxyXG4gICAgICA8a2VuZG8tYXJjZ2F1Z2Utc2NhbGVcclxuICAgICAgICAgICAgW21ham9yVGlja3NdPVwieyB2aXNpYmxlOiB0cnVlLCBjb2xvcjogJyMwMDAwZmYnIH1cIlxyXG4gICAgICAgICAgICBbbWlub3JUaWNrc109XCJ7IHZpc2libGU6IHRydWUsIGNvbG9yOiAnIzAwMDBmZicgfVwiXHJcbiAgICAgICAgICAgIFtyZXZlcnNlXT1cIm9wdGlvbnMucmV2ZXJzZVwiXHJcbiAgICAgICAgICAgIFtzdGFydEFuZ2xlXT1cIjBcIlxyXG4gICAgICAgICAgICBbZW5kQW5nbGVdPVwiMTgwXCJcclxuICAgICAgICAgICAgW21pbl09XCJvcHRpb25zLm1pblZhbHVlXCJcclxuICAgICAgICAgICAgW21heF09XCJvcHRpb25zLm1heFZhbHVlXCJcclxuICAgICAgICAgICAgW3JhbmdlUGxhY2Vob2xkZXJDb2xvcl09XCJvcHRpb25zLnJhbmdlUGxhY2Vob2xkZXJDb2xvclwiXHJcbiAgICAgICAgICAgIFtyYW5nZVNpemVdPVwib3B0aW9ucy5yYW5nZVNpemVcIlxyXG4gICAgICAgICAgICBbcmFuZ2VMaW5lQ2FwXT1cIm9wdGlvbnMucmFuZ2VMaW5lQ2FwXCI+XHJcbiAgICAgICAgICAgIDxrZW5kby1hcmNnYXVnZS1zY2FsZS1sYWJlbHMgZm9ybWF0PVwibFwiIFtjb2xvcl09XCJvcHRpb25zLmxhYmVsc0NvbG9yXCIgW3Zpc2libGVdPVwib3B0aW9ucy5zaG93TGFiZWxzXCI+XHJcbiAgICAgICAgICAgIDwva2VuZG8tYXJjZ2F1Z2Utc2NhbGUtbGFiZWxzPlxyXG4gICAgICA8L2tlbmRvLWFyY2dhdWdlLXNjYWxlPlxyXG4gICAgICA8bmctdGVtcGxhdGUga2VuZG9BcmNHYXVnZUNlbnRlclRlbXBsYXRlIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LWNvbG9yPVwiY29sb3JcIj5cclxuICAgICAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj57eyB2YWx1ZSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2tlbmRvLWFyY2dhdWdlPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19