mmhglobal-dynamicform 1.3.13 → 2.0.0-beta.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 (115) hide show
  1. package/esm2020/lib/animations/component-animations.mjs +12 -0
  2. package/esm2020/lib/components/buttonfieldbase.component.mjs +62 -0
  3. package/esm2020/lib/components/containerfieldbase.component.mjs +42 -0
  4. package/esm2020/lib/components/datalistingfieldbase.component.mjs +138 -0
  5. package/esm2020/lib/components/fieldbase.component.mjs +90 -0
  6. package/esm2020/lib/components/inputfieldbase.component.mjs +78 -0
  7. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +13 -11
  8. package/esm2020/lib/embed-components/input-field-addons/input-field-addons.component.mjs +69 -0
  9. package/esm2020/lib/input-error-message/input-error-message.component.mjs +33 -0
  10. package/esm2020/lib/kcard/kcard.component.mjs +84 -0
  11. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +53 -12
  12. package/esm2020/lib/pipe/htmlSanitize.pipe.mjs +18 -0
  13. package/esm2020/lib/services/component-error-handler.service.mjs +84 -0
  14. package/esm2020/lib/services/main.service.mjs +173 -73
  15. package/esm2020/lib/services/zcomponent.debug.service.mjs +17 -8
  16. package/esm2020/lib/services/zcomponent.service.mjs +133 -9
  17. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +15 -23
  18. package/esm2020/lib/uicontainer/uicontainer.component.mjs +2 -2
  19. package/esm2020/lib/uicontent/uicontent.component.mjs +21 -9
  20. package/esm2020/lib/uiheader/uiheader.component.mjs +61 -28
  21. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +3 -3
  22. package/esm2020/lib/uipage/uipage.component.mjs +41 -26
  23. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +2 -2
  24. package/esm2020/lib/zbullet/zbullet.component.mjs +3 -2
  25. package/esm2020/lib/zbuttons/zbuttons.component.mjs +45 -91
  26. package/esm2020/lib/zcard/zcard.component.mjs +13 -60
  27. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +14 -159
  28. package/esm2020/lib/zchip/zchip.component.mjs +34 -64
  29. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +4 -3
  30. package/esm2020/lib/zdaterange/zdaterange.component.mjs +3 -3
  31. package/esm2020/lib/zdatetime/zdatetime.component.mjs +22 -74
  32. package/esm2020/lib/zdiv/zdiv.component.mjs +63 -40
  33. package/esm2020/lib/zdiv/zdiv.pipe.mjs +2 -2
  34. package/esm2020/lib/zform/zform.component.mjs +9 -7
  35. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +5 -3
  36. package/esm2020/lib/zgauge/zgauge.component.mjs +34 -70
  37. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +32 -30
  38. package/esm2020/lib/zgrid/zgrid.component.mjs +246 -135
  39. package/esm2020/lib/zimg/zimg.component.mjs +44 -108
  40. package/esm2020/lib/zinput-container/zinput-container.component.mjs +63 -0
  41. package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +120 -0
  42. package/esm2020/lib/zkcard/zkcard.component.mjs +2 -2
  43. package/esm2020/lib/zlabel/zlabel.component.mjs +18 -94
  44. package/esm2020/lib/zmfb/zmfb.component.mjs +70 -91
  45. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +15 -11
  46. package/esm2020/lib/zmodal/zmodal.component.mjs +14 -10
  47. package/esm2020/lib/znumeric/znumeric.component.mjs +18 -94
  48. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +35 -87
  49. package/esm2020/lib/zprogressbar/zprogressbar.component.mjs +59 -0
  50. package/esm2020/lib/zreport/zreport.component.mjs +25 -27
  51. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +39 -194
  52. package/esm2020/lib/ztab/ztab.component.mjs +17 -45
  53. package/esm2020/lib/ztab/ztab.pipe.mjs +6 -4
  54. package/esm2020/lib/ztext/ztext.component.mjs +20 -180
  55. package/esm2020/lib/ztextarea/ztextarea.component.mjs +23 -101
  56. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -2
  57. package/esm2020/lib/ztree/ztree.component.mjs +25 -41
  58. package/esm2020/lib/ztreelist/ztreelist.component.mjs +104 -143
  59. package/esm2020/lib/zudf/zudf.component.mjs +12 -8
  60. package/esm2020/lib/zupload/zupload.component.mjs +18 -39
  61. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +45 -77
  62. package/esm2020/public-api.mjs +15 -2
  63. package/fesm2015/mmhglobal-dynamicform.mjs +4529 -4392
  64. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
  65. package/fesm2020/mmhglobal-dynamicform.mjs +4496 -4367
  66. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
  67. package/lib/animations/component-animations.d.ts +1 -0
  68. package/lib/components/buttonfieldbase.component.d.ts +18 -0
  69. package/lib/components/containerfieldbase.component.d.ts +19 -0
  70. package/lib/components/datalistingfieldbase.component.d.ts +30 -0
  71. package/lib/components/fieldbase.component.d.ts +30 -0
  72. package/lib/components/inputfieldbase.component.d.ts +19 -0
  73. package/lib/embed-components/input-field-addons/input-field-addons.component.d.ts +16 -0
  74. package/lib/input-error-message/input-error-message.component.d.ts +15 -0
  75. package/lib/kcard/kcard.component.d.ts +21 -0
  76. package/lib/mmhglobal-dynamicform.module.d.ts +40 -32
  77. package/lib/pipe/htmlSanitize.pipe.d.ts +10 -0
  78. package/lib/services/component-error-handler.service.d.ts +14 -0
  79. package/lib/services/main.service.d.ts +23 -5
  80. package/lib/services/zcomponent.debug.service.d.ts +4 -1
  81. package/lib/services/zcomponent.service.d.ts +20 -4
  82. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +4 -3
  83. package/lib/uicontent/uicontent.component.d.ts +6 -2
  84. package/lib/uiheader/uiheader.component.d.ts +13 -9
  85. package/lib/zbuttons/zbuttons.component.d.ts +11 -20
  86. package/lib/zcard/zcard.component.d.ts +6 -20
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +6 -36
  88. package/lib/zchip/zchip.component.d.ts +7 -16
  89. package/lib/zdatetime/zdatetime.component.d.ts +6 -14
  90. package/lib/zdiv/zdiv.component.d.ts +11 -18
  91. package/lib/zformcontrol/zformcontrol.component.d.ts +2 -1
  92. package/lib/zgauge/zgauge.component.d.ts +11 -14
  93. package/lib/zgrid/zgrid.binding.directive.d.ts +4 -2
  94. package/lib/zgrid/zgrid.component.d.ts +26 -27
  95. package/lib/zimg/zimg.component.d.ts +12 -31
  96. package/lib/zinput-container/zinput-container.component.d.ts +26 -0
  97. package/lib/zinput-container/zinput-container.pipe.d.ts +20 -0
  98. package/lib/zlabel/zlabel.component.d.ts +6 -25
  99. package/lib/zmfb/zmfb.component.d.ts +12 -20
  100. package/lib/zmodal/zmodal-mobile.component.d.ts +4 -1
  101. package/lib/zmodal/zmodal.component.d.ts +4 -1
  102. package/lib/znumeric/znumeric.component.d.ts +7 -29
  103. package/lib/zpostselectinput/zpostselectinput.component.d.ts +9 -19
  104. package/lib/zprogressbar/zprogressbar.component.d.ts +28 -0
  105. package/lib/zreport/zreport.component.d.ts +8 -11
  106. package/lib/zselectmultiple/zselectmultiple.component.d.ts +10 -35
  107. package/lib/ztab/ztab.component.d.ts +6 -19
  108. package/lib/ztext/ztext.component.d.ts +7 -35
  109. package/lib/ztextarea/ztextarea.component.d.ts +9 -27
  110. package/lib/ztree/ztree.component.d.ts +6 -12
  111. package/lib/ztreelist/ztreelist.component.d.ts +17 -27
  112. package/lib/zupload/zupload.component.d.ts +6 -13
  113. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +6 -20
  114. package/package.json +1 -1
  115. package/public-api.d.ts +14 -1
@@ -1,47 +1,21 @@
1
1
  /********** Angular **********/
2
- import { Component, Input } from "@angular/core";
3
- import { Validators } from '@angular/forms';
2
+ import { Component } from "@angular/core";
4
3
  /********** Ionic **********/
5
4
  /********** Plugin **********/
6
5
  /********** Component & Service **********/
7
- import { ZComponentProperties, ZComponentHelper } from 'mmhglobal-zcore';
6
+ import { ZComponentHelper } from 'mmhglobal-zcore';
7
+ import { InputFieldBase } from "../components/inputfieldbase.component";
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "@ionic/angular";
10
- import * as i2 from "@fortawesome/angular-fontawesome";
11
- import * as i3 from "@progress/kendo-angular-label";
12
- import * as i4 from "@progress/kendo-angular-inputs";
13
- import * as i5 from "../uivalidationmessage/uivalidationmessage.component";
14
- import * as i6 from "@angular/common";
15
- import * as i7 from "@angular/forms";
16
- import * as i8 from "@progress/kendo-angular-tooltip";
17
- import * as i9 from "@progress/kendo-angular-buttons";
18
- export class ZtextComponent {
19
- constructor() {
20
- this.componentProperties = new ZComponentProperties();
21
- this.showTooltipsInfoIcon = false;
22
- this.showTooltipsInfoBySide = false;
23
- this.tooltipsInfo = null;
24
- this.tooltipsDisplayText = null;
25
- this.clearButtonIcon = "time-circle";
26
- this.setEnable = (status) => {
27
- const fc = this.group.form.controls[this.data.Value];
28
- status ? fc.enable() : fc.disable();
29
- this.componentProperties.isReadOnly = !status;
30
- };
31
- this.setVisible = (status) => {
32
- this.componentProperties.isVisible = status;
33
- this.data.Visible = status;
34
- };
35
- this.setRequire = (status) => {
36
- this.componentProperties.isRequired = status;
37
- ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
38
- };
39
- }
9
+ import * as i1 from "../services/zcomponent.service";
10
+ import * as i2 from "@ionic/angular";
11
+ import * as i3 from "@progress/kendo-angular-inputs";
12
+ import * as i4 from "@angular/forms";
13
+ import * as i5 from "@angular/common";
14
+ import * as i6 from "@progress/kendo-angular-buttons";
15
+ export class ZtextComponent extends InputFieldBase {
16
+ constructor(compService) { super(compService); }
40
17
  ngOnInit() {
41
- // this.fControl = this.form.controls[this.data.Value]; //.get(this.data.Value);
42
- // this.fControl = this.form.get(this.data.Value) as FormControl;
43
- ZComponentHelper.setComponentProperties(this);
44
- ZComponentHelper.registerComponent(this);
18
+ super.setupInnerField();
45
19
  this.adornmentList = this.data.AdornmentList;
46
20
  if (this.data.OnClick && !this.data.ReadOnly) {
47
21
  this.componentProperties.isReadOnly = true;
@@ -49,18 +23,9 @@ export class ZtextComponent {
49
23
  if (!this.componentProperties.isReadOnly) {
50
24
  this.showClearButton = this.data.ClearButton;
51
25
  }
52
- this.tooltipsInfo = this.data.TooltipsInfo;
53
- if (this.tooltipsInfo) {
54
- if ((this.tooltipsInfo.Icon != null || this.tooltipsInfo.Icon != undefined) && !this.isMobileScreen()) {
55
- this.showTooltipsInfoIcon = true;
56
- this.setTooltipsInfoIcon();
57
- }
58
- if (this.tooltipsInfo.SideBySide) {
59
- this.showTooltipsInfoBySide = true;
60
- }
61
- this.setTooltipsDisplayText();
62
- }
63
- // Handle Clickable Icons
26
+ this.setupClickableIconList();
27
+ }
28
+ setupClickableIconList() {
64
29
  this.iconList = this.data.ClickableIcons;
65
30
  if (this.iconList) {
66
31
  if (this.iconList.length > 0) {
@@ -137,70 +102,6 @@ export class ZtextComponent {
137
102
  return "text";
138
103
  }
139
104
  }
140
- getReadOnlyValue() {
141
- const readOnlyValue = ZComponentHelper.getGroupEvalValue.call(this, this.data.ReadOnly);
142
- if (typeof readOnlyValue === 'function') {
143
- return readOnlyValue();
144
- }
145
- return readOnlyValue;
146
- }
147
- isMobileScreen() {
148
- const v = ZComponentHelper.isMobileScreen();
149
- return v;
150
- }
151
- getIon_InvalidClass(form, data) {
152
- return ZComponentHelper.getIon_InvalidClass(form, data);
153
- }
154
- getStyle(RightAlign) {
155
- let ngStyle = "";
156
- if (RightAlign) {
157
- ngStyle += "right";
158
- }
159
- else {
160
- ngStyle += "left";
161
- }
162
- return ngStyle;
163
- }
164
- setTextboxClass() {
165
- if (this.data.OnClick && !this.data.ReadOnly) {
166
- return "notmobile-textbox-onfocus";
167
- }
168
- return "notmobile-textbox";
169
- }
170
- /********** Textbox Event **********/
171
- textboxOnClick() {
172
- //console.log('TextBox is focused: ', event);
173
- this.group.subject.next({
174
- type: "ztext-OnClick",
175
- target: this.data.OnClick,
176
- event,
177
- data: { value: event['OnClick'], field: this.data }
178
- });
179
- }
180
- onChange(event) {
181
- // console.log('ztext.component - onChange: ', event.target.value);
182
- ZComponentHelper.setComponentModelValue(this.data, event.target.value, this.group);
183
- this.group.subject.next({
184
- type: "onChange",
185
- target: this.data.OnChange,
186
- event,
187
- data: { value: event.data, field: this.data }
188
- });
189
- }
190
- /********** Icon Button **********/
191
- onIconClick(clickAction) {
192
- this.onNavigateTo(clickAction);
193
- }
194
- onNavigateTo(clickAction) {
195
- const n = ZComponentHelper.getGroupEvalValue.call(this, clickAction);
196
- if (n) {
197
- this.group.subject.next({
198
- type: 'ztext-onNavigateTo',
199
- target: clickAction,
200
- data: this.group.zModel[this.data.Value]
201
- });
202
- }
203
- }
204
105
  /********** Adornment **********/
205
106
  getAdornmentBackgroundColor(adornment) {
206
107
  if (adornment.BackgroundColor) {
@@ -226,72 +127,11 @@ export class ZtextComponent {
226
127
  readOnlyOnClear() {
227
128
  ZComponentHelper.setModelValue(this.data.Value, null, this.group);
228
129
  }
229
- /********** TooltipsInfo **********/
230
- setTooltipsInfoClass() {
231
- if (this.tooltipsInfo && !this.showTooltipsInfoIcon && this.showTooltipsInfoBySide) {
232
- return 'tooltipsinfo-text';
233
- }
234
- return 'tooltipsinfo-text-wide';
235
- }
236
- setTooltipsInfoColor() {
237
- if (this.tooltipsInfo) {
238
- if (this.tooltipsInfo.TextColor) {
239
- return this.tooltipsInfo.TextColor;
240
- }
241
- }
242
- return "#acacac"; // default grey
243
- }
244
- setTooltipsInfoIcon(displayIcon) {
245
- if (this.showTooltipsInfoIcon) {
246
- if (this.tooltipsInfo.Icon != '') {
247
- if (displayIcon) {
248
- this.tooltipsDisplayIcon = displayIcon;
249
- }
250
- else {
251
- this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;
252
- }
253
- }
254
- else {
255
- this.tooltipsDisplayIcon = 'question-circle';
256
- }
257
- }
258
- }
259
- setTooltipsDisplayText(displayText) {
260
- if (this.tooltipsInfo) {
261
- if (displayText) {
262
- this.tooltipsDisplayText = displayText;
263
- }
264
- else {
265
- this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;
266
- }
267
- }
268
- else {
269
- this.tooltipsDisplayText = '<Display text error>';
270
- }
271
- }
272
- setTooltipsInfoSideBySide() {
273
- if (this.tooltipsInfo) {
274
- if (this.showTooltipsInfoBySide && !this.showTooltipsInfoIcon && this.adornmentList.length < 1) {
275
- return 'ion-row divtextbox tooltipsinfo-right';
276
- }
277
- }
278
- return 'ion-row divtextbox';
279
- }
280
130
  }
281
- ZtextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZtextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
282
- ZtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZtextComponent, selector: "app-ztext", inputs: { data: "data", group: "group", form: "form", iconList: "iconList", adornmentList: "adornmentList" }, ngImport: i0, template: "<ion-item [formGroup]=\"form\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n <!-- add icon for tooltips -->\r\n <span kendoTooltip\r\n *ngIf=\"data.TooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"tooltipsDisplayText\">\r\n <fa-icon [icon]=\"tooltipsDisplayIcon\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <!-- mobile tooltipsinfo below label-->\r\n <kendo-label *ngIf=\"data.TooltipsInfo && !showTooltipsInfoIcon && !showTooltipsInfoBySide && isMobileScreen()\"\r\n [text]=\"tooltipsDisplayText\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n <!-- <ion-input [name]=\"data.Name\" [required]=\"data.IsRequired\" [placeholder]=\"data.PlaceHolder\" [type]=\"mapInputType(data.Type)\"\r\n [(ngModel)]=\"group.zModel[data.Value]\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"mapInputMode(data.Type)\"></ion-input> -->\r\n <div [class]=\"setTooltipsInfoSideBySide()\">\r\n <div style=\"flex: 1;\">\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n clearOnEdit\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngStyle]=\"{'text-align': getStyle(data.RightAlign ? true : false)}\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n (click)='textboxOnClick()'\r\n (ionChange)=\"onChange($event)\">\r\n </ion-input>\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [clearButton]=\"showClearButton\"\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n [ngStyle]=\"{'text-align': getStyle(data.RightAlign ? true : false)}\"\r\n (input)=\"onChange($event)\"\r\n (click)=\"textboxOnClick()\"\r\n [class]=\"setTextboxClass()\">\r\n\r\n <ng-template kendoTextBoxSuffixTemplate\r\n *ngIf=\"adornmentList\">\r\n <!-- For Validation feature -->\r\n <!--<app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon\"></app-uivalidationmessage>-->\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n look=\"clear\"\r\n icon=\"close-circle\"\r\n class=\"textbox-clearbutton\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\"\r\n class=\"textbox-separator\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n </div>\r\n <!-- For Validation feature pending change to inner textbox -->\r\n <app-uivalidationmessage *ngIf=\"!isMobileScreen()\"\r\n [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\" ></app-uivalidationmessage>\r\n\r\n <!-- For Mobile Validation feature -->\r\n <app-uivalidationmessage *ngIf=\"isMobileScreen()\"\r\n [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon-mobile\"></app-uivalidationmessage>\r\n\r\n <!-- mobile section for Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"isMobileScreen()\"\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"\r\n class=\"adornments-icon-mobile\"></button>\r\n </div>\r\n\r\n <!-- Icon button feature -->\r\n <div *ngFor=\"let item of iconList\">\r\n <div kendoTooltip\r\n class=\"icon-button\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n\r\n <span *ngIf=\"!!item \"\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.Tooltip\"\r\n style=\"margin-top: 10px;\">\r\n\r\n <fa-icon [icon]=\"item.Icon\"\r\n [ngStyle]=\"{'padding': '4px 6px', 'color': (item.Color ? item.Color : 'black')}\"></fa-icon>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && ((showTooltipsInfoBySide && isMobileScreen()) || !isMobileScreen())\"\r\n [text]=\"tooltipsDisplayText\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n </div>\r\n</ion-item>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:100%}.k-textbox{color:var(--z-text-color)}.notmobile-textbox{margin:7px 0 0;width:100%}.notmobile-textbox-onfocus{margin:7px 0 0;width:100%;color:var(--z-text-color)!important;background-color:#fff!important}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}.tooltipsinfo-text{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin-top:6px;margin-left:5px;width:50%}.tooltipsinfo-text-wide{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin-top:6px;width:100%;padding-bottom:5px}.tooltipsinfo-right{display:grid;grid-template-columns:3fr 1fr 2fr;grid-gap:0px}.tooltipsinfo-icon{padding-left:10px;color:#3880ff}\n"], components: [{ type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i3.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional"], exportAs: ["kendoLabel"] }, { type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i4.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "size", "rounded", "fillMode", "tabIndex", "successIcon", "errorIcon", "clearButtonIcon", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i4.InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator" }, { type: i5.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "showAfter", "callout", "closable", "offset", "tooltipTemplate", "showOn", "titleTemplate", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle"], exportAs: ["kendoTooltip"] }, { type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i7.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i4.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]" }, { type: i9.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "role", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "shape", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
131
+ ZtextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZtextComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
132
+ ZtextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZtextComponent, selector: "app-ztext", usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-input *ngIf=\"isMobileScreen()\" [id]=\"data.Value\" [formControlName]=\"data.Value\" [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\" clearOnEdit [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style.text-align]=\"data.RightAlign ? 'right' : 'left'\" [inputmode]=\"mapInputMode(data.Type)\"\r\n [style]=\"componentProperties.style.style1\" (click)='onClick($event)'\r\n (ionChange)=\"onChange($event, $event.target.value)\" class=\"e1tag-style1\">\r\n </ion-input>\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\" class=\"input-field e1tag-style1\" [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\" [style]=\"componentProperties.style.style1\" [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\" [clearButton]=\"showClearButton\" [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style.text-align]=\"data.RightAlign ? 'right' : 'left'\" (input)=\"onChange($event, $event.target.value)\"\r\n (click)=\"onClick($event, $event.target.value)\">\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton *ngIf=\"data.OnClick\" look=\"clear\" icon=\"close-circle\" class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" (click)=\"readOnlyOnClear()\"></button>\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n </kendo-textbox-separator>\r\n <button kendoButton [look]=\"adornmentLook(adornment)\" [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"], components: [{ type: i2.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "size", "spellcheck", "step", "type", "value"] }, { type: i3.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "size", "rounded", "fillMode", "tabIndex", "successIcon", "errorIcon", "clearButtonIcon", "placeholder", "maxlength"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { type: i3.InputSeparatorComponent, selector: "kendo-input-separator, kendo-textbox-separator" }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i3.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]" }, { type: i6.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "role", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "shape", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
283
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZtextComponent, decorators: [{
284
134
  type: Component,
285
- args: [{ selector: "app-ztext", template: "<ion-item [formGroup]=\"form\"\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n [ngClass]=\"getIon_InvalidClass(form, data)\">\r\n <ion-label [attr.for]=\"data.Value\"\r\n *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n <!-- add icon for tooltips -->\r\n <span kendoTooltip\r\n *ngIf=\"data.TooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"tooltipsDisplayText\">\r\n <fa-icon [icon]=\"tooltipsDisplayIcon\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <!-- mobile tooltipsinfo below label-->\r\n <kendo-label *ngIf=\"data.TooltipsInfo && !showTooltipsInfoIcon && !showTooltipsInfoBySide && isMobileScreen()\"\r\n [text]=\"tooltipsDisplayText\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n <!-- <ion-input [name]=\"data.Name\" [required]=\"data.IsRequired\" [placeholder]=\"data.PlaceHolder\" [type]=\"mapInputType(data.Type)\"\r\n [(ngModel)]=\"group.zModel[data.Value]\" [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"data.ReadOnly\" [inputmode]=\"mapInputMode(data.Type)\"></ion-input> -->\r\n <div [class]=\"setTooltipsInfoSideBySide()\">\r\n <div style=\"flex: 1;\">\r\n <ion-input *ngIf=\"isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n clearOnEdit\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngStyle]=\"{'text-align': getStyle(data.RightAlign ? true : false)}\"\r\n [inputmode]=\"mapInputMode(data.Type)\"\r\n (click)='textboxOnClick()'\r\n (ionChange)=\"onChange($event)\">\r\n </ion-input>\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\"\r\n [clearButton]=\"showClearButton\"\r\n [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [ngClass]=\"{'disabled' : (!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)}\"\r\n [ngStyle]=\"{'text-align': getStyle(data.RightAlign ? true : false)}\"\r\n (input)=\"onChange($event)\"\r\n (click)=\"textboxOnClick()\"\r\n [class]=\"setTextboxClass()\">\r\n\r\n <ng-template kendoTextBoxSuffixTemplate\r\n *ngIf=\"adornmentList\">\r\n <!-- For Validation feature -->\r\n <!--<app-uivalidationmessage [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon\"></app-uivalidationmessage>-->\r\n <button kendoButton\r\n *ngIf=\"data.OnClick\"\r\n look=\"clear\"\r\n icon=\"close-circle\"\r\n class=\"textbox-clearbutton\"\r\n (click)=\"readOnlyOnClear()\"></button>\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\"\r\n class=\"textbox-separator\"></kendo-textbox-separator>\r\n <button kendoButton\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n </div>\r\n <!-- For Validation feature pending change to inner textbox -->\r\n <app-uivalidationmessage *ngIf=\"!isMobileScreen()\"\r\n [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\" ></app-uivalidationmessage>\r\n\r\n <!-- For Mobile Validation feature -->\r\n <app-uivalidationmessage *ngIf=\"isMobileScreen()\"\r\n [group]=\"group\"\r\n [data]=\"data\"\r\n [form]=\"form\"\r\n class=\"validation-icon-mobile\"></app-uivalidationmessage>\r\n\r\n <!-- mobile section for Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\">\r\n <button kendoButton\r\n *ngIf=\"isMobileScreen()\"\r\n [look]=\"adornmentLook(adornment)\"\r\n [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"\r\n class=\"adornments-icon-mobile\"></button>\r\n </div>\r\n\r\n <!-- Icon button feature -->\r\n <div *ngFor=\"let item of iconList\">\r\n <div kendoTooltip\r\n class=\"icon-button\"\r\n showOn=\"hover\"\r\n [tooltipWidth]=\"item.Width\"\r\n [position]=\"item.Position\">\r\n\r\n <span *ngIf=\"!!item \"\r\n (click)=\"onIconClick(item.Click)\"\r\n [title]=\"item.Tooltip\"\r\n style=\"margin-top: 10px;\">\r\n\r\n <fa-icon [icon]=\"item.Icon\"\r\n [ngStyle]=\"{'padding': '4px 6px', 'color': (item.Color ? item.Color : 'black')}\"></fa-icon>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- side by side and desktop tooltipsinfo -->\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon && ((showTooltipsInfoBySide && isMobileScreen()) || !isMobileScreen())\"\r\n [text]=\"tooltipsDisplayText\"\r\n [class]=\"setTooltipsInfoClass()\"\r\n [style.color]=\"setTooltipsInfoColor()\"></kendo-label>\r\n </div>\r\n</ion-item>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:100%}.k-textbox{color:var(--z-text-color)}.notmobile-textbox{margin:7px 0 0;width:100%}.notmobile-textbox-onfocus{margin:7px 0 0;width:100%;color:var(--z-text-color)!important;background-color:#fff!important}.validation-icon{margin-top:0;margin-right:5px}.validation-icon-mobile{margin-top:5px;margin-right:5px}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}.tooltipsinfo-text{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin-top:6px;margin-left:5px;width:50%}.tooltipsinfo-text-wide{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin-top:6px;width:100%;padding-bottom:5px}.tooltipsinfo-right{display:grid;grid-template-columns:3fr 1fr 2fr;grid-gap:0px}.tooltipsinfo-icon{padding-left:10px;color:#3880ff}\n"] }]
286
- }], ctorParameters: function () { return []; }, propDecorators: { data: [{
287
- type: Input
288
- }], group: [{
289
- type: Input
290
- }], form: [{
291
- type: Input
292
- }], iconList: [{
293
- type: Input
294
- }], adornmentList: [{
295
- type: Input
296
- }] } });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ1csb0JBQW9CLEVBQ3hCLGdCQUFnQixFQUM3QixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7OztBQVF6QixNQUFNLE9BQU8sY0FBYztJQWdCekI7UUFUQSx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFDMUMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUN4QyxpQkFBWSxHQUEyQixJQUFJLENBQUM7UUFDNUMsd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBR25DLG9CQUFlLEdBQVcsYUFBYSxDQUFDO1FBNEh4QyxjQUFTLEdBQUcsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BD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RTtnQkFDOUYsT0FBTyx1Q0FBdUMsQ0FBQzthQUNoRDtTQUNGO1FBQ0QsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDOzs0R0E1U1UsY0FBYztnR0FBZCxjQUFjLCtKQ3BCM0IsNjlOQW1JQTs0RkQvR2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXOzBFQUtaLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQge1xyXG4gIFpHcm91cCwgWkZpZWxkLCBaQ29tcG9uZW50UHJvcGVydGllcyxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsIENsaWNrYWJsZUljb25zLCBBZG9ybm1lbnRQcm9wZXJ0aWVzLCBUb29sdGlwc0luZm9Qcm9wZXJ0aWVzXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenRleHRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3p0ZXh0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3p0ZXh0LmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBadGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGljb25MaXN0OiBDbGlja2FibGVJY29uc1tdO1xyXG4gIEBJbnB1dCgpIGFkb3JubWVudExpc3Q6IGFueVtdO1xyXG5cclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHVibGljIHNob3dUb29sdGlwc0luZm9JY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dUb29sdGlwc0luZm9CeVNpZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdG9vbHRpcHNJbmZvOiBUb29sdGlwc0luZm9Qcm9wZXJ0aWVzID0gbnVsbDtcclxuICBwdWJsaWMgdG9vbHRpcHNEaXNwbGF5VGV4dDogc3RyaW5nID0gbnVsbDtcclxuICBwdWJsaWMgdG9vbHRpcHNEaXNwbGF5SWNvbjogYW55O1xyXG4gIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGFueTtcclxuICBwdWJsaWMgY2xlYXJCdXR0b25JY29uOiBzdHJpbmcgPSBcInRpbWUtY2lyY2xlXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gdGhpcy5mQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdOyAgLy8uZ2V0KHRoaXMuZGF0YS5WYWx1ZSk7XHJcbiAgICAvLyB0aGlzLmZDb250cm9sID0gdGhpcy5mb3JtLmdldCh0aGlzLmRhdGEuVmFsdWUpIGFzIEZvcm1Db250cm9sO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLmFkb3JubWVudExpc3QgPSB0aGlzLmRhdGEuQWRvcm5tZW50TGlzdDtcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhLk9uQ2xpY2sgJiYgIXRoaXMuZGF0YS5SZWFkT25seSkge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSkge1xyXG4gICAgICB0aGlzLnNob3dDbGVhckJ1dHRvbiA9IHRoaXMuZGF0YS5DbGVhckJ1dHRvbjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnRvb2x0aXBzSW5mbyA9IHRoaXMuZGF0YS5Ub29sdGlwc0luZm87XHJcbiAgICBpZiAodGhpcy50b29sdGlwc0luZm8pIHtcclxuICAgICAgaWYgKCh0aGlzLnRvb2x0aXBzSW5mby5JY29uICE9IG51bGwgfHwgdGhpcy50b29sdGlwc0luZm8uSWNvbiAhPSB1bmRlZmluZWQpICYmICF0aGlzLmlzTW9iaWxlU2NyZWVuKCkpIHtcclxuICAgICAgICB0aGlzLnNob3dUb29sdGlwc0luZm9JY29uID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFRvb2x0aXBzSW5mb0ljb24oKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50b29sdGlwc0luZm8uU2lkZUJ5U2lkZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1Rvb2x0aXBzSW5mb0J5U2lkZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRUb29sdGlwc0Rpc3BsYXlUZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIENsaWNrYWJsZSBJY29uc1xyXG4gICAgdGhpcy5pY29uTGlzdCA9IHRoaXMuZGF0YS5DbGlja2FibGVJY29ucztcclxuICAgIGlmICh0aGlzLmljb25MaXN0KSB7XHJcbiAgICAgIGlmICh0aGlzLmljb25MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmljb25MaXN0LmZvckVhY2goKGk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGkuVG9vbHRpcCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGkuVG9vbHRpcCA9IFwiXCI7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoaS5Ub29sdGlwLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgaS5Ub29sdGlwID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGkuVG9vbHRpcCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIERlZmF1bHQgcG9zaXRpb24gdG9wLiByaWdodCB8IGJvdHRvbSB8IHRvcCB8IGxlZnRcclxuICAgICAgICAgIGlmIChpLlBvc2l0aW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Qb3NpdGlvbiA9IFwidG9wXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1hcElucHV0VHlwZShmaWVsZFR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIFwiZGF0ZVwiOlxyXG4gICAgICAgIHJldHVybiBcImRhdGVcIjtcclxuICAgICAgY2FzZSBcInp0ZXh0XCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgICBjYXNlIFwibnVtYmVyXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgIGNhc2UgXCJjdXJyZW5jeVwiOlxyXG4gICAgICAgIHJldHVybiBcIm51bWJlclwiO1xyXG4gICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICByZXR1cm4gXCJlbWFpbFwiO1xyXG4gICAgICBjYXNlIFwicGFzc3dvcmRcIjpcclxuICAgICAgICByZXR1cm4gXCJwYXNzd29yZFwiO1xyXG4gICAgICBjYXNlIFwic2VhcmNoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwic2VhcmNoXCI7XHJcbiAgICAgIGNhc2UgXCJ0ZWxcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZWxcIjtcclxuICAgICAgY2FzZSBcInRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJ0aW1lXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGltZVwiO1xyXG4gICAgICBjYXNlIFwidXJsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidXJsXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwSW5wdXRNb2RlKGZpZWxkVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiO1xyXG4gICAgICBjYXNlIFwienRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gXCJkZWNpbWFsXCI7XHJcbiAgICAgIGNhc2UgXCJjdXJyZW5jeVwiOlxyXG4gICAgICAgIHJldHVybiBcImRlY2ltYWxcIjtcclxuICAgICAgY2FzZSBcImVtYWlsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZW1haWxcIjtcclxuICAgICAgY2FzZSBcInBhc3N3b3JkXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgICBjYXNlIFwic2VhcmNoXCI6XHJcbiAgICAgICAgcmV0dXJuIFwic2VhcmNoXCI7XHJcbiAgICAgIGNhc2UgXCJ0ZWxcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZWxcIjtcclxuICAgICAgY2FzZSBcInRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJ0aW1lXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibm9uZVwiO1xyXG4gICAgICBjYXNlIFwidXJsXCI6XHJcbiAgICAgICAgcmV0dXJuIFwidXJsXCI7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIFwidGV4dFwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZE9ubHlWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHJlYWRPbmx5VmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgdGhpcy5kYXRhLlJlYWRPbmx5KTtcclxuICAgIGlmICh0eXBlb2YgcmVhZE9ubHlWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4gcmVhZE9ubHlWYWx1ZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlYWRPbmx5VmFsdWU7XHJcbiAgfVxyXG5cclxuICBpc01vYmlsZVNjcmVlbigpIHtcclxuICAgIGNvbnN0IHYgPSBaQ29tcG9uZW50SGVscGVyLmlzTW9iaWxlU2NyZWVuKCk7XHJcbiAgICByZXR1cm4gdjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRFbmFibGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICBjb25zdCBmYyA9IHRoaXMuZ3JvdXAuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgc3RhdHVzID8gZmMuZW5hYmxlKCkgOiBmYy5kaXNhYmxlKCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9ICFzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSZXF1aXJlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQgPSBzdGF0dXM7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNoYW5nZVZhbGlkYXRvcihzdGF0dXMsIHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5WYWx1ZSwgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG4gIGdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybTogRm9ybUdyb3VwLCBkYXRhOiBaRmllbGQpIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmdldElvbl9JbnZhbGlkQ2xhc3MoZm9ybSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3R5bGUoUmlnaHRBbGlnbjogYm9vbGVhbikge1xyXG4gICAgbGV0IG5nU3R5bGUgPSBcIlwiO1xyXG4gICAgaWYgKFJpZ2h0QWxpZ24pIHtcclxuICAgICAgbmdTdHlsZSArPSBcInJpZ2h0XCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZ1N0eWxlICs9IFwibGVmdFwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5nU3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VGV4dGJveENsYXNzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkNsaWNrICYmICF0aGlzLmRhdGEuUmVhZE9ubHkpIHtcclxuICAgICAgcmV0dXJuIFwibm90bW9iaWxlLXRleHRib3gtb25mb2N1c1wiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwibm90bW9iaWxlLXRleHRib3hcIjtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqIFRleHRib3ggRXZlbnQgKioqKioqKioqKi9cclxuICBwdWJsaWMgdGV4dGJveE9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICAvL2NvbnNvbGUubG9nKCdUZXh0Qm94IGlzIGZvY3VzZWQ6ICcsIGV2ZW50KTtcclxuICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgdHlwZTogXCJ6dGV4dC1PbkNsaWNrXCIsXHJcbiAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2xpY2ssXHJcbiAgICAgIGV2ZW50LFxyXG4gICAgICBkYXRhOiB7IHZhbHVlOiBldmVudFsnT25DbGljayddLCBmaWVsZDogdGhpcy5kYXRhIH1cclxuICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCd6dGV4dC5jb21wb25lbnQgLSBvbkNoYW5nZTogJywgZXZlbnQudGFyZ2V0LnZhbHVlKTsgXHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudE1vZGVsVmFsdWUodGhpcy5kYXRhLCBldmVudC50YXJnZXQudmFsdWUsIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICB0eXBlOiBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICBldmVudCxcclxuICAgICAgZGF0YTogeyB2YWx1ZTogZXZlbnQuZGF0YSwgZmllbGQ6IHRoaXMuZGF0YSB9XHJcbiAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgfVxyXG5cclxuICAvKioqKioqKioqKiBJY29uIEJ1dHRvbiAqKioqKioqKioqL1xyXG4gIG9uSWNvbkNsaWNrKGNsaWNrQWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub25OYXZpZ2F0ZVRvKGNsaWNrQWN0aW9uKTtcclxuICB9XHJcblxyXG4gIG9uTmF2aWdhdGVUbyhjbGlja0FjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBuID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHRoaXMsIGNsaWNrQWN0aW9uKTtcclxuICAgIGlmIChuKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgICB0eXBlOiAnenRleHQtb25OYXZpZ2F0ZVRvJyxcclxuICAgICAgICB0YXJnZXQ6IGNsaWNrQWN0aW9uLFxyXG4gICAgICAgIGRhdGE6IHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV1cclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qKioqKioqKioqIEFkb3JubWVudCAqKioqKioqKioqL1xyXG4gIHB1YmxpYyBnZXRBZG9ybm1lbnRCYWNrZ3JvdW5kQ29sb3IoYWRvcm5tZW50OiBBZG9ybm1lbnRQcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoYWRvcm5tZW50LkJhY2tncm91bmRDb2xvcikge1xyXG4gICAgICByZXR1cm4gYWRvcm5tZW50LkJhY2tncm91bmRDb2xvciArIFwiIWltcG9ydGFudFwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcInRyYW5zcGFyZW50ICFpbXBvcnRhbnRcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZG9ybm1lbnRMb29rKGFkb3JubWVudDogQWRvcm5tZW50UHJvcGVydGllcykge1xyXG4gICAgaWYgKGFkb3JubWVudC5BZG9ybm1lbnRMb29rKSB7XHJcbiAgICAgIHJldHVybiBhZG9ybm1lbnQuQWRvcm5tZW50TG9vaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJ2NsZWFyJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQWRvcm5tZW50Q2xpY2soYWRvcm5tZW50OiBBZG9ybm1lbnRQcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoYWRvcm5tZW50Lk9uQ2xpY2spIHtcclxuICAgICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgIHR5cGU6ICd6dGV4dC1hZG9ybm1lbnQnLFxyXG4gICAgICAgIHRhcmdldDogYWRvcm5tZW50Lk9uQ2xpY2ssXHJcbiAgICAgICAgZGF0YTogYWRvcm5tZW50XHJcbiAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWFkT25seU9uQ2xlYXIoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBudWxsLCB0aGlzLmdyb3VwKTtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqIFRvb2x0aXBzSW5mbyAqKioqKioqKioqL1xyXG4gIHB1YmxpYyBzZXRUb29sdGlwc0luZm9DbGFzcygpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mbyAmJiAhdGhpcy5zaG93VG9vbHRpcHNJbmZvSWNvbiAmJiB0aGlzLnNob3dUb29sdGlwc0luZm9CeVNpZGUpIHtcclxuICAgICAgcmV0dXJuICd0b29sdGlwc2luZm8tdGV4dCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3Rvb2x0aXBzaW5mby10ZXh0LXdpZGUnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRvb2x0aXBzSW5mb0NvbG9yKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcHNJbmZvKSB7XHJcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mby5UZXh0Q29sb3IpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwc0luZm8uVGV4dENvbG9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiI2FjYWNhY1wiOyAvLyBkZWZhdWx0IGdyZXlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRUb29sdGlwc0luZm9JY29uKGRpc3BsYXlJY29uPzogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zaG93VG9vbHRpcHNJbmZvSWNvbikge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwc0luZm8uSWNvbiAhPSAnJykge1xyXG4gICAgICAgIGlmIChkaXNwbGF5SWNvbikge1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gZGlzcGxheUljb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gdGhpcy50b29sdGlwc0luZm8uSWNvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gJ3F1ZXN0aW9uLWNpcmNsZSdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRvb2x0aXBzRGlzcGxheVRleHQoZGlzcGxheVRleHQ/OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mbykge1xyXG4gICAgICBpZiAoZGlzcGxheVRleHQpIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXBzRGlzcGxheVRleHQgPSBkaXNwbGF5VGV4dDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXBzRGlzcGxheVRleHQgPSB0aGlzLnRvb2x0aXBzSW5mby5EaXNwbGF5VGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHNEaXNwbGF5VGV4dCA9ICc8RGlzcGxheSB0ZXh0IGVycm9yPic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9vbHRpcHNJbmZvU2lkZUJ5U2lkZSgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mbykge1xyXG4gICAgICBpZiAodGhpcy5zaG93VG9vbHRpcHNJbmZvQnlTaWRlICYmICF0aGlzLnNob3dUb29sdGlwc0luZm9JY29uICYmIHRoaXMuYWRvcm5tZW50TGlzdC5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgcmV0dXJuICdpb24tcm93IGRpdnRleHRib3ggdG9vbHRpcHNpbmZvLXJpZ2h0JztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuICdpb24tcm93IGRpdnRleHRib3gnO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGlvbi1pdGVtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXHJcbiAgICAgICAgICAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJnZXRJb25fSW52YWxpZENsYXNzKGZvcm0sIGRhdGEpXCI+XHJcbiAgPGlvbi1sYWJlbCBbYXR0ci5mb3JdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAqbmdJZj1cImRhdGEuU2hvd0xhYmVsID09PSB1bmRlZmluZWQgfHwgZGF0YS5TaG93TGFiZWxcIlxyXG4gICAgICAgICAgICAgW3Bvc2l0aW9uXT1cImRhdGEuTGFiZWxQb3NpdGlvbiA/IGRhdGEuTGFiZWxQb3NpdGlvbiA6ICdzdGFja2VkJ1wiPlxyXG4gICAge3tkYXRhLkxhYmVsfX1cclxuICAgIDxpb24tdGV4dCAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkKVwiIGNvbG9yPVwiZGFuZ2VyXCI+KjwvaW9uLXRleHQ+XHJcbiAgICA8IS0tIGFkZCBpY29uIGZvciB0b29sdGlwcyAtLT5cclxuICAgIDxzcGFuIGtlbmRvVG9vbHRpcFxyXG4gICAgICAgICAgKm5nSWY9XCJkYXRhLlRvb2x0aXBzSW5mbyAmJiBzaG93VG9vbHRpcHNJbmZvSWNvblwiXHJcbiAgICAgICAgICBbdGl0bGVdPVwidG9vbHRpcHNEaXNwbGF5VGV4dFwiPlxyXG4gICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b29sdGlwc0Rpc3BsYXlJY29uXCJcclxuICAgICAgICAgICAgICAgY2xhc3M9XCJ0b29sdGlwc2luZm8taWNvblwiPlxyXG4gICAgICA8L2ZhLWljb24+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9pb24tbGFiZWw+XHJcbiAgPCEtLSBtb2JpbGUgdG9vbHRpcHNpbmZvIGJlbG93IGxhYmVsLS0+XHJcbiAgPGtlbmRvLWxhYmVsICpuZ0lmPVwiZGF0YS5Ub29sdGlwc0luZm8gJiYgIXNob3dUb29sdGlwc0luZm9JY29uICYmICFzaG93VG9vbHRpcHNJbmZvQnlTaWRlICYmIGlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICBbdGV4dF09XCJ0b29sdGlwc0Rpc3BsYXlUZXh0XCJcclxuICAgICAgICAgICAgICAgW2NsYXNzXT1cInNldFRvb2x0aXBzSW5mb0NsYXNzKClcIlxyXG4gICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2V0VG9vbHRpcHNJbmZvQ29sb3IoKVwiPjwva2VuZG8tbGFiZWw+XHJcbiAgPCEtLSA8aW9uLWlucHV0IFtuYW1lXT1cImRhdGEuTmFtZVwiIFtyZXF1aXJlZF09XCJkYXRhLklzUmVxdWlyZWRcIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFt0eXBlXT1cIm1hcElucHV0VHlwZShkYXRhLlR5cGUpXCJcclxuICAgIFsobmdNb2RlbCldPVwiZ3JvdXAuek1vZGVsW2RhdGEuVmFsdWVdXCIgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgW3JlYWRvbmx5XT1cImRhdGEuUmVhZE9ubHlcIiBbaW5wdXRtb2RlXT1cIm1hcElucHV0TW9kZShkYXRhLlR5cGUpXCI+PC9pb24taW5wdXQ+IC0tPlxyXG4gIDxkaXYgW2NsYXNzXT1cInNldFRvb2x0aXBzSW5mb1NpZGVCeVNpZGUoKVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImZsZXg6IDE7XCI+XHJcbiAgICAgIDxpb24taW5wdXQgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCJcclxuICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICBbdHlwZV09XCJtYXBJbnB1dFR5cGUoZGF0YS5UeXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgIGNsZWFyT25FZGl0XHJcbiAgICAgICAgICAgICAgICAgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCJkYXRhLk1heExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3RleHQtYWxpZ24nOiBnZXRTdHlsZShkYXRhLlJpZ2h0QWxpZ24gPyB0cnVlIDogZmFsc2UpfVwiXHJcbiAgICAgICAgICAgICAgICAgW2lucHV0bW9kZV09XCJtYXBJbnB1dE1vZGUoZGF0YS5UeXBlKVwiXHJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT0ndGV4dGJveE9uQ2xpY2soKSdcclxuICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC9pb24taW5wdXQ+XHJcbiAgICAgIDxrZW5kby10ZXh0Ym94ICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIm1hcElucHV0VHlwZShkYXRhLlR5cGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwic2hvd0NsZWFyQnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgW21pbmxlbmd0aF09XCJkYXRhLk1pbkxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCcgOiAoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd0ZXh0LWFsaWduJzogZ2V0U3R5bGUoZGF0YS5SaWdodEFsaWduID8gdHJ1ZSA6IGZhbHNlKX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0ZXh0Ym94T25DbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInNldFRleHRib3hDbGFzcygpXCI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1RleHRCb3hTdWZmaXhUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFkb3JubWVudExpc3RcIj5cclxuICAgICAgICAgIDwhLS0gRm9yIFZhbGlkYXRpb24gZmVhdHVyZSAtLT5cclxuICAgICAgICAgIDwhLS08YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2UgW2dyb3VwXT1cImdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRpb24taWNvblwiPjwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+LS0+XHJcbiAgICAgICAgICA8YnV0dG9uIGtlbmRvQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0YS5PbkNsaWNrXCJcclxuICAgICAgICAgICAgICAgICAgbG9vaz1cImNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgaWNvbj1cImNsb3NlLWNpcmNsZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dGJveC1jbGVhcmJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWFkT25seU9uQ2xlYXIoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgPCEtLSBGb3IgQWRvcm5tZW50cyBmZWF0dXJlIC0tPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWRvcm5tZW50IG9mIGFkb3JubWVudExpc3RcIj5cclxuICAgICAgICAgICAgPGtlbmRvLXRleHRib3gtc2VwYXJhdG9yICpuZ0lmPVwiIWFkb3JubWVudC5IaWRlU2VwZXJhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dGJveC1zZXBhcmF0b3JcIj48L2tlbmRvLXRleHRib3gtc2VwYXJhdG9yPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGtlbmRvQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2xvb2tdPVwiYWRvcm5tZW50TG9vayhhZG9ybm1lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJhZG9ybm1lbnQuSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRvcm5tZW50Q2xpY2soYWRvcm5tZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWRvcm5tZW50QmFja2dyb3VuZENvbG9yKGFkb3JubWVudClcIj48L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwva2VuZG8tdGV4dGJveD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBGb3IgVmFsaWRhdGlvbiBmZWF0dXJlIHBlbmRpbmcgY2hhbmdlIHRvIGlubmVyIHRleHRib3ggIC0tPlxyXG4gICAgPGFwcC11aXZhbGlkYXRpb25tZXNzYWdlICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVwiID48L2FwcC11aXZhbGlkYXRpb25tZXNzYWdlPlxyXG5cclxuICAgIDwhLS0gRm9yIE1vYmlsZSBWYWxpZGF0aW9uIGZlYXR1cmUgLS0+XHJcbiAgICA8YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2UgKm5nSWY9XCJpc01vYmlsZVNjcmVlbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGlvbi1pY29uLW1vYmlsZVwiPjwvYXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2U+XHJcblxyXG4gICAgPCEtLSBtb2JpbGUgc2VjdGlvbiBmb3IgQWRvcm5tZW50cyBmZWF0dXJlIC0tPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYWRvcm5tZW50IG9mIGFkb3JubWVudExpc3RcIj5cclxuICAgICAgPGJ1dHRvbiBrZW5kb0J1dHRvblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiXHJcbiAgICAgICAgICAgICAgW2xvb2tdPVwiYWRvcm5tZW50TG9vayhhZG9ybm1lbnQpXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJhZG9ybm1lbnQuSWNvblwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWRvcm5tZW50Q2xpY2soYWRvcm5tZW50KVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWRvcm5tZW50QmFja2dyb3VuZENvbG9yKGFkb3JubWVudClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYWRvcm5tZW50cy1pY29uLW1vYmlsZVwiPjwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBJY29uIGJ1dHRvbiBmZWF0dXJlIC0tPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpY29uTGlzdFwiPlxyXG4gICAgICA8ZGl2IGtlbmRvVG9vbHRpcFxyXG4gICAgICAgICAgIGNsYXNzPVwiaWNvbi1idXR0b25cIlxyXG4gICAgICAgICAgIHNob3dPbj1cImhvdmVyXCJcclxuICAgICAgICAgICBbdG9vbHRpcFdpZHRoXT1cIml0ZW0uV2lkdGhcIlxyXG4gICAgICAgICAgIFtwb3NpdGlvbl09XCJpdGVtLlBvc2l0aW9uXCI+XHJcblxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiISFpdGVtIFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSWNvbkNsaWNrKGl0ZW0uQ2xpY2spXCJcclxuICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbS5Ub29sdGlwXCJcclxuICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XHJcblxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiaXRlbS5JY29uXCJcclxuICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsncGFkZGluZyc6ICc0cHggNnB4JywgJ2NvbG9yJzogKGl0ZW0uQ29sb3IgPyBpdGVtLkNvbG9yIDogJ2JsYWNrJyl9XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gc2lkZSBieSBzaWRlIGFuZCBkZXNrdG9wIHRvb2x0aXBzaW5mbyAtLT5cclxuICAgIDxrZW5kby1sYWJlbCAqbmdJZj1cInRvb2x0aXBzSW5mbyAmJiAhc2hvd1Rvb2x0aXBzSW5mb0ljb24gJiYgKChzaG93VG9vbHRpcHNJbmZvQnlTaWRlICYmIGlzTW9iaWxlU2NyZWVuKCkpIHx8ICFpc01vYmlsZVNjcmVlbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgW3RleHRdPVwidG9vbHRpcHNEaXNwbGF5VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInNldFRvb2x0aXBzSW5mb0NsYXNzKClcIlxyXG4gICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJzZXRUb29sdGlwc0luZm9Db2xvcigpXCI+PC9rZW5kby1sYWJlbD5cclxuICA8L2Rpdj5cclxuPC9pb24taXRlbT5cclxuIl19
135
+ args: [{ selector: "app-ztext", template: "<div [formGroup]=\"form\" class=\"ztext-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n <ion-input *ngIf=\"isMobileScreen()\" [id]=\"data.Value\" [formControlName]=\"data.Value\" [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\" clearOnEdit [minlength]=\"data.MinLength\" [maxlength]=\"data.MaxLength\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style.text-align]=\"data.RightAlign ? 'right' : 'left'\" [inputmode]=\"mapInputMode(data.Type)\"\r\n [style]=\"componentProperties.style.style1\" (click)='onClick($event)'\r\n (ionChange)=\"onChange($event, $event.target.value)\" class=\"e1tag-style1\">\r\n </ion-input>\r\n <kendo-textbox *ngIf=\"!isMobileScreen()\" class=\"input-field e1tag-style1\" [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\" [style]=\"componentProperties.style.style1\" [type]=\"mapInputType(data.Type)\"\r\n [placeholder]=\"data.PlaceHolder\" [clearButton]=\"showClearButton\" [minlength]=\"data.MinLength\"\r\n [maxlength]=\"data.MaxLength\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style.text-align]=\"data.RightAlign ? 'right' : 'left'\" (input)=\"onChange($event, $event.target.value)\"\r\n (click)=\"onClick($event, $event.target.value)\">\r\n <ng-template kendoTextBoxSuffixTemplate *ngIf=\"adornmentList\">\r\n <button kendoButton *ngIf=\"data.OnClick\" look=\"clear\" icon=\"close-circle\" class=\"textbox-clearbutton e1tag-style2\"\r\n [style]=\"componentProperties.style.style2\" (click)=\"readOnlyOnClear()\"></button>\r\n <!-- For Adornments feature -->\r\n <div *ngFor=\"let adornment of adornmentList\" [style]=\"componentProperties.style.style3\" class=\"e1tag-style3\">\r\n <kendo-textbox-separator *ngIf=\"!adornment.HideSeperator\" class=\"textbox-separator e1tag-style4\"\r\n [style]=\"componentProperties.style.style4\">\r\n </kendo-textbox-separator>\r\n <button kendoButton [look]=\"adornmentLook(adornment)\" [icon]=\"adornment.Icon\"\r\n (click)=\"onAdornmentClick(adornment)\" class=\"e1tag-style5\" [style]=\"componentProperties.style.style5\"\r\n [style.background-color]=\"getAdornmentBackgroundColor(adornment)\"></button>\r\n </div>\r\n </ng-template>\r\n </kendo-textbox>\r\n</div>\r\n", styles: [".item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}.divtextbox{justify-content:space-between;width:99%}.k-textbox{color:var(--z-text-color)}.textbox-separator{margin-top:0}.textbox-clearbutton{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;outline:0;cursor:pointer;opacity:.5}.textbox-clearbutton:hover{opacity:100!important}.icon-button{text-align:center;padding-top:10px}.adornments-icon-mobile{margin-bottom:0;margin-left:5px;width:28px;height:28px}\n"] }]
136
+ }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenRleHQvenRleHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUU5QiwyQ0FBMkM7QUFDM0MsT0FBTyxFQUFjLGdCQUFnQixFQUE4RCxNQUFNLGlCQUFpQixDQUFDO0FBQzNILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLGNBQWUsU0FBUSxjQUFjO0lBS2hELFlBQVksV0FBOEIsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRWxFLFFBQVE7UUFDTixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUU3QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRTtZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQzlDO1FBRUQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7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QUFhLEVBQUU7WUFDM0IsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFDO1NBQ2hDO1FBRUQsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFNBQThCO1FBQ3BELElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE1BQU0sRUFBRSxTQUFTLENBQUMsT0FBTztnQkFDekIsSUFBSSxFQUFFLFNBQVM7YUFDUyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDOzs0R0FuSVUsY0FBYztnR0FBZCxjQUFjLHdFQ2pCM0IsNG1GQStCQTs0RkRkYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LCBDbGlja2FibGVJY29ucywgQWRvcm5tZW50UHJvcGVydGllcyB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IElucHV0RmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXp0ZXh0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96dGV4dC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96dGV4dC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWnRleHRDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcbiAgcHVibGljIGljb25MaXN0OiBDbGlja2FibGVJY29uc1tdO1xyXG4gIHB1YmxpYyBhZG9ybm1lbnRMaXN0OiBhbnlbXTtcclxuICBwdWJsaWMgc2hvd0NsZWFyQnV0dG9uOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSkgeyBzdXBlcihjb21wU2VydmljZSkgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLnNldHVwSW5uZXJGaWVsZCgpO1xyXG4gICAgdGhpcy5hZG9ybm1lbnRMaXN0ID0gdGhpcy5kYXRhLkFkb3JubWVudExpc3Q7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkNsaWNrICYmICF0aGlzLmRhdGEuUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5zaG93Q2xlYXJCdXR0b24gPSB0aGlzLmRhdGEuQ2xlYXJCdXR0b247XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXR1cENsaWNrYWJsZUljb25MaXN0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwQ2xpY2thYmxlSWNvbkxpc3QoKSB7XHJcbiAgICB0aGlzLmljb25MaXN0ID0gdGhpcy5kYXRhLkNsaWNrYWJsZUljb25zO1xyXG4gICAgaWYgKHRoaXMuaWNvbkxpc3QpIHtcclxuICAgICAgaWYgKHRoaXMuaWNvbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaWNvbkxpc3QuZm9yRWFjaCgoaTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoaS5Ub29sdGlwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaS5Ub29sdGlwID0gXCJcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpLlRvb2x0aXAuaW5kZXhPZihcImdyb3VwLlwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICBpLlRvb2x0aXAgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwodGhpcywgaS5Ub29sdGlwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gRGVmYXVsdCBwb3NpdGlvbiB0b3AuIHJpZ2h0IHwgYm90dG9tIHwgdG9wIHwgbGVmdFxyXG4gICAgICAgICAgaWYgKGkuUG9zaXRpb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpLlBvc2l0aW9uID0gXCJ0b3BcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbWFwSW5wdXRUeXBlKGZpZWxkVHlwZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgXCJkYXRlXCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xyXG4gICAgICBjYXNlIFwienRleHRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJudW1iZXJcIjpcclxuICAgICAgICByZXR1cm4gXCJudW1iZXJcIjtcclxuICAgICAgY2FzZSBcImN1cnJlbmN5XCI6XHJcbiAgICAgICAgcmV0dXJuIFwibnVtYmVyXCI7XHJcbiAgICAgIGNhc2UgXCJlbWFpbFwiOlxyXG4gICAgICAgIHJldHVybiBcImVtYWlsXCI7XHJcbiAgICAgIGNhc2UgXCJwYXNzd29yZFwiOlxyXG4gICAgICAgIHJldHVybiBcInBhc3N3b3JkXCI7XHJcbiAgICAgIGNhc2UgXCJzZWFyY2hcIjpcclxuICAgICAgICByZXR1cm4gXCJzZWFyY2hcIjtcclxuICAgICAgY2FzZSBcInRlbFwiOlxyXG4gICAgICAgIHJldHVybiBcInRlbFwiO1xyXG4gICAgICBjYXNlIFwidGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICByZXR1cm4gXCJ0aW1lXCI7XHJcbiAgICAgIGNhc2UgXCJ1cmxcIjpcclxuICAgICAgICByZXR1cm4gXCJ1cmxcIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtYXBJbnB1dE1vZGUoZmllbGRUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChmaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBcImRhdGVcIjpcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7XHJcbiAgICAgIGNhc2UgXCJ6dGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcIm51bWJlclwiOlxyXG4gICAgICAgIHJldHVybiBcImRlY2ltYWxcIjtcclxuICAgICAgY2FzZSBcImN1cnJlbmN5XCI6XHJcbiAgICAgICAgcmV0dXJuIFwiZGVjaW1hbFwiO1xyXG4gICAgICBjYXNlIFwiZW1haWxcIjpcclxuICAgICAgICByZXR1cm4gXCJlbWFpbFwiO1xyXG4gICAgICBjYXNlIFwicGFzc3dvcmRcIjpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICAgIGNhc2UgXCJzZWFyY2hcIjpcclxuICAgICAgICByZXR1cm4gXCJzZWFyY2hcIjtcclxuICAgICAgY2FzZSBcInRlbFwiOlxyXG4gICAgICAgIHJldHVybiBcInRlbFwiO1xyXG4gICAgICBjYXNlIFwidGV4dFwiOlxyXG4gICAgICAgIHJldHVybiBcInRleHRcIjtcclxuICAgICAgY2FzZSBcInRpbWVcIjpcclxuICAgICAgICByZXR1cm4gXCJub25lXCI7XHJcbiAgICAgIGNhc2UgXCJ1cmxcIjpcclxuICAgICAgICByZXR1cm4gXCJ1cmxcIjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gXCJ0ZXh0XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqKioqKioqKiogQWRvcm5tZW50ICoqKioqKioqKiovXHJcbiAgcHVibGljIGdldEFkb3JubWVudEJhY2tncm91bmRDb2xvcihhZG9ybm1lbnQ6IEFkb3JubWVudFByb3BlcnRpZXMpIHtcclxuICAgIGlmIChhZG9ybm1lbnQuQmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIHJldHVybiBhZG9ybm1lbnQuQmFja2dyb3VuZENvbG9yICsgXCIhaW1wb3J0YW50XCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwidHJhbnNwYXJlbnQgIWltcG9ydGFudFwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkb3JubWVudExvb2soYWRvcm5tZW50OiBBZG9ybm1lbnRQcm9wZXJ0aWVzKSB7XHJcbiAgICBpZiAoYWRvcm5tZW50LkFkb3JubWVudExvb2spIHtcclxuICAgICAgcmV0dXJuIGFkb3JubWVudC5BZG9ybm1lbnRMb29rO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnY2xlYXInXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25BZG9ybm1lbnRDbGljayhhZG9ybm1lbnQ6IEFkb3JubWVudFByb3BlcnRpZXMpIHtcclxuICAgIGlmIChhZG9ybm1lbnQuT25DbGljaykge1xyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogJ3p0ZXh0LWFkb3JubWVudCcsXHJcbiAgICAgICAgdGFyZ2V0OiBhZG9ybm1lbnQuT25DbGljayxcclxuICAgICAgICBkYXRhOiBhZG9ybm1lbnRcclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlYWRPbmx5T25DbGVhcigpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0TW9kZWxWYWx1ZSh0aGlzLmRhdGEuVmFsdWUsIG51bGwsIHRoaXMuZ3JvdXApO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwienRleHQtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuICA8aW9uLWlucHV0ICpuZ0lmPVwiaXNNb2JpbGVTY3JlZW4oKVwiIFtpZF09XCJkYXRhLlZhbHVlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCIgW3R5cGVdPVwibWFwSW5wdXRUeXBlKGRhdGEuVHlwZSlcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBjbGVhck9uRWRpdCBbbWlubGVuZ3RoXT1cImRhdGEuTWluTGVuZ3RoXCIgW21heGxlbmd0aF09XCJkYXRhLk1heExlbmd0aFwiXHJcbiAgICBbYXR0ci5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiZGF0YS5SaWdodEFsaWduID8gJ3JpZ2h0JyA6ICdsZWZ0J1wiIFtpbnB1dG1vZGVdPVwibWFwSW5wdXRNb2RlKGRhdGEuVHlwZSlcIlxyXG4gICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCIgKGNsaWNrKT0nb25DbGljaygkZXZlbnQpJ1xyXG4gICAgKGlvbkNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQsICRldmVudC50YXJnZXQudmFsdWUpXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTFcIj5cclxuICA8L2lvbi1pbnB1dD5cclxuICA8a2VuZG8tdGV4dGJveCAqbmdJZj1cIiFpc01vYmlsZVNjcmVlbigpXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIiBbdHlwZV09XCJtYXBJbnB1dFR5cGUoZGF0YS5UeXBlKVwiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtjbGVhckJ1dHRvbl09XCJzaG93Q2xlYXJCdXR0b25cIiBbbWlubGVuZ3RoXT1cImRhdGEuTWluTGVuZ3RoXCJcclxuICAgIFttYXhsZW5ndGhdPVwiZGF0YS5NYXhMZW5ndGhcIlxyXG4gICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgIFtzdHlsZS50ZXh0LWFsaWduXT1cImRhdGEuUmlnaHRBbGlnbiA/ICdyaWdodCcgOiAnbGVmdCdcIiAoaW5wdXQpPVwib25DaGFuZ2UoJGV2ZW50LCAkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXHJcbiAgICAoY2xpY2spPVwib25DbGljaygkZXZlbnQsICRldmVudC50YXJnZXQudmFsdWUpXCI+XHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9UZXh0Qm94U3VmZml4VGVtcGxhdGUgKm5nSWY9XCJhZG9ybm1lbnRMaXN0XCI+XHJcbiAgICAgIDxidXR0b24ga2VuZG9CdXR0b24gKm5nSWY9XCJkYXRhLk9uQ2xpY2tcIiBsb29rPVwiY2xlYXJcIiBpY29uPVwiY2xvc2UtY2lyY2xlXCIgY2xhc3M9XCJ0ZXh0Ym94LWNsZWFyYnV0dG9uIGUxdGFnLXN0eWxlMlwiXHJcbiAgICAgICAgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUyXCIgKGNsaWNrKT1cInJlYWRPbmx5T25DbGVhcigpXCI+PC9idXR0b24+XHJcbiAgICAgIDwhLS0gRm9yIEFkb3JubWVudHMgZmVhdHVyZSAtLT5cclxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYWRvcm5tZW50IG9mIGFkb3JubWVudExpc3RcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTNcIiBjbGFzcz1cImUxdGFnLXN0eWxlM1wiPlxyXG4gICAgICAgIDxrZW5kby10ZXh0Ym94LXNlcGFyYXRvciAqbmdJZj1cIiFhZG9ybm1lbnQuSGlkZVNlcGVyYXRvclwiIGNsYXNzPVwidGV4dGJveC1zZXBhcmF0b3IgZTF0YWctc3R5bGU0XCJcclxuICAgICAgICAgIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlNFwiPlxyXG4gICAgICAgIDwva2VuZG8tdGV4dGJveC1zZXBhcmF0b3I+XHJcbiAgICAgICAgPGJ1dHRvbiBrZW5kb0J1dHRvbiBbbG9va109XCJhZG9ybm1lbnRMb29rKGFkb3JubWVudClcIiBbaWNvbl09XCJhZG9ybm1lbnQuSWNvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25BZG9ybm1lbnRDbGljayhhZG9ybm1lbnQpXCIgY2xhc3M9XCJlMXRhZy1zdHlsZTVcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTVcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiZ2V0QWRvcm5tZW50QmFja2dyb3VuZENvbG9yKGFkb3JubWVudClcIj48L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwva2VuZG8tdGV4dGJveD5cclxuPC9kaXY+XHJcbiJdfQ==