mmhglobal-dynamicform 2.0.0-beta.47 → 2.0.0-beta.48

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.
package/README.md CHANGED
@@ -3,6 +3,9 @@
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.13.
4
4
 
5
5
  ## Changelog
6
+ `2.48beta`<br/>
7
+ [zdate] - Added feature to get/set datetime by ignoring user's browser timezone (IsIgnoreTimeZone).<br/>
8
+
6
9
  `2.47beta`<br/>
7
10
  [zguage] - rollback some code used in v1 for crm.<br/>
8
11
  [zcard] - added setData used in v1.<br/>
@@ -10,6 +10,8 @@ export class ZComponentService {
10
10
  this.translateService = translateService;
11
11
  this.zcoreService = zcoreService;
12
12
  this.DEFAULT_ISEDIT = true;
13
+ //#region DateTime Conversion
14
+ this.timePickerDateType = ['zuidatetime', 'ztime', 'zuitime'];
13
15
  this.environment = this.zcoreService.getEnvironment();
14
16
  }
15
17
  isSkipComponentType(componentType) {
@@ -203,6 +205,27 @@ export class ZComponentService {
203
205
  }
204
206
  return obsList;
205
207
  }
208
+ localizeDateTimeByIgnoringTimeZone(value, data) {
209
+ if (this.timePickerDateType.includes(data.Type)) {
210
+ const userTimeZoneOffSet = this.convertOffsetMinToHour((new Date(value).getTimezoneOffset()));
211
+ const datetimeWithoutTimeZone = this.removeTimeZoneAndConvertToISOString(value);
212
+ return new Date(`${datetimeWithoutTimeZone.split('.000Z')[0]}${userTimeZoneOffSet}`);
213
+ }
214
+ else {
215
+ const dateOnly = value.includes('T') ? value.split('T')[0] : value;
216
+ return new Date(dateOnly + " " + new Date(dateOnly).toLocaleTimeString());
217
+ }
218
+ }
219
+ removeTimeZoneAndConvertToISOString(value) {
220
+ const result = value.split('+')[0];
221
+ return new Date(result.endsWith('Z') ? result : `${result}Z`).toISOString();
222
+ }
223
+ convertOffsetMinToHour(num) {
224
+ num = -num;
225
+ const prefix = num.toString().startsWith('-') ? '-' : '+';
226
+ const result = `${(Math.abs(num) / 60).toString().padStart(2, '0')}:00`;
227
+ return `${prefix}${result}`;
228
+ }
206
229
  }
207
230
  ZComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZComponentService, deps: [{ token: i1.ComponentObjectService }, { token: i2.TranslationService }, { token: i2.ZCoreService }], target: i0.ɵɵFactoryTarget.Injectable });
208
231
  ZComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZComponentService, providedIn: 'root' });
@@ -212,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
212
235
  providedIn: 'root'
213
236
  }]
214
237
  }], ctorParameters: function () { return [{ type: i1.ComponentObjectService }, { type: i2.TranslationService }, { type: i2.ZCoreService }]; } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTFGckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxhQUFhLENBQ2xCLHdCQUFrRCxFQUNsRCxZQUFtQyxFQUNuQyxLQUFVLEVBQ1YsS0FBVSxFQUNWLElBQWUsRUFDZixjQUFtQjtRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBYztRQUNkLElBQUk7UUFFSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixNQUFNLGFBQWEsR0FB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LEVBQUU7WUFDOUQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2pILEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQztTQUNIO2FBQ0k7WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDN0csR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FDSixDQUFBO1NBQ0Y7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzsrR0FoUVUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbWJlZGRlZFZpZXdSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRQcm9wZXJ0aWVzLCBaQ29yZVNlcnZpY2UsIFpGaWVsZCwgWkdyb3VwLCBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG4vLyBpbXBvcnQgeyBDb21wb25lbnRPYmplY3RTZXJ2aWNlIH0gZnJvbSAncHJvamVjdHMvbW1oZ2xvYmFsLW1pZGRsZXdhcmUvc3JjL3B1YmxpYy1hcGknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRPYmplY3RTZXJ2aWNlIH0gZnJvbSAnbW1oZ2xvYmFsLW1pZGRsZXdhcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEZpZWxkRWxlbWVudERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZmllbGRlbGVtZW50LmRpcmVjdGl2ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaQ29tcG9uZW50U2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBlbnZpcm9ubWVudDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29tcG9uZW50T2JqZWN0U2VydmljZTogQ29tcG9uZW50T2JqZWN0U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2tpcENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5pc1NraXBDb21wb25lbnRUeXBlKGNvbXBvbmVudFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWRDb21wb25lbnQoXHJcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIGZpZWxkRWxlbWVudDogRmllbGRFbGVtZW50RGlyZWN0aXZlLFxyXG4gICAgZmllbGQ6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBmb3JtOiBGb3JtR3JvdXAsXHJcbiAgICBjb250YWluZXJGaWVsZDogYW55XHJcbiAgKSB7XHJcbiAgICAvLyBpZihmaWVsZC5OYW1lID09PSAnRm9ybURldGFpbENvbnRhY3RHcmlkJykge1xyXG4gICAgLy8gICBkZWJ1Z2dlcjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1NraXBDb21wb25lbnRUeXBlKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29tcG9uZW50RmFjdG9yeTtcclxuICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KGZpZWxkLlR5cGUpO1xyXG4gICAgaWYgKGNvbXBvbmVudE5hbWUpIHtcclxuICAgICAgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcclxuICAgICAgICBjb21wb25lbnROYW1lXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoXCJ1bmtub3duXCIpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGZpZWxkRWxlbWVudC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xyXG4gICAgaWYgKCFmb3JtKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignRm9ybUdyb3VwIGlzIGVtcHR5IScpO1xyXG4gICAgICBkZWJ1Z2dlcjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5kYXRhID0gZmllbGQ7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmdyb3VwID0gZ3JvdXA7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmZvcm0gPSBmb3JtO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5jb250YWluZXJGaWVsZCA9IGNvbnRhaW5lckZpZWxkO1xyXG4gICAgLy8gKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5vdXRwdXRFdmVudC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IGdyb3VwLm91dHB1dEV2ZW50KGV2ZW50KSk7XHJcbiAgfVxyXG5cclxuICBhcHBlbmRDb21wb25lbnRUb0R5bmFtaWNGb3JtKFxyXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBpbmplY3RvcjogYW55LFxyXG4gICAgYXBwUmVmOiBhbnksXHJcbiAgICBmaWVsZDogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGNvbnRhaW5lcklkOiBzdHJpbmdcclxuICApIHtcclxuICAgIGlmICh0aGlzLmlzU2tpcENvbXBvbmVudFR5cGUoZmllbGQuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21wb25lbnRSZWY7XHJcbiAgICBjb25zdCBjb21wb25lbnROYW1lID0gdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChmaWVsZC5UeXBlKTtcclxuICAgIC8vIDEuIENyZWF0ZSBhIGNvbXBvbmVudCByZWZlcmVuY2UgZnJvbSB0aGUgY29tcG9uZW50XHJcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50TmFtZSlcclxuICAgICAgICAuY3JlYXRlKGluamVjdG9yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxyXG4gICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KFwidW5rbm93blwiKSlcclxuICAgICAgICAuY3JlYXRlKGluamVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAyLiBBdHRhY2ggY29tcG9uZW50IHRvIHRoZSBhcHBSZWYgc28gdGhhdCBpdCdzIGluc2lkZSB0aGUgbmcgY29tcG9uZW50IHRyZWVcclxuICAgIGFwcFJlZi5hdHRhY2hWaWV3KGNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XHJcblxyXG4gICAgLy8gMy4gR2V0IERPTSBlbGVtZW50IGZyb20gY29tcG9uZW50XHJcbiAgICBjb25zdCBkb21FbGVtID0gKGNvbXBvbmVudFJlZi5ob3N0VmlldyBhcyBFbWJlZGRlZFZpZXdSZWY8YW55PilcclxuICAgICAgLnJvb3ROb2Rlc1swXSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAvLyA0LiBBcHBlbmQgRE9NIGVsZW1lbnQgdG8gdGhlIGJvZHlcclxuICAgIGNvbnN0IGR5bmFtaWNGb3JtSG9zdDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNcIiArIGNvbnRhaW5lcklkKTtcclxuICAgIGR5bmFtaWNGb3JtSG9zdC5hcHBlbmRDaGlsZChkb21FbGVtKTtcclxuXHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmRhdGEgPSBmaWVsZDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZ3JvdXAgPSBncm91cDtcclxuICAgIHJldHVybiBjb21wb25lbnRSZWY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IERFRkFVTFRfSVNFRElUID0gdHJ1ZTtcclxuICBwdWJsaWMgc2V0RWRpdE1vZGUobWU6IGFueSkge1xyXG4gICAgbGV0IGVkaXRNb2RlID0geyB2YWx1ZTogdGhpcy5ERUZBVUxUX0lTRURJVCwgaW5pdFZhbHVlOiB0aGlzLkRFRkFVTFRfSVNFRElUIH07XHJcblxyXG4gICAgaWYgKG1lICYmIG1lLmRhdGEgJiYgbWUuZGF0YS5FZGl0TW9kZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHR5cGVvZiBtZS5kYXRhLkVkaXRNb2RlICE9IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBjb25zdCBncnBFZGl0TW9kZVZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGEuRWRpdE1vZGUsIG1lLmdyb3VwKTtcclxuICAgICAgICBlZGl0TW9kZSA9IHsgdmFsdWU6IGdycEVkaXRNb2RlVmFsdWUsIGluaXRWYWx1ZTogZ3JwRWRpdE1vZGVWYWx1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVkaXRNb2RlID0gbWUuZGF0YS5FZGl0TW9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobWUgJiYgbWUuY29udGFpbmVyRmllbGQgJiYgbWUuY29udGFpbmVyRmllbGRbYF9FZGl0TW9kZWBdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBlZGl0TW9kZSA9IG1lLmNvbnRhaW5lckZpZWxkW2BfRWRpdE1vZGVgXTtcclxuICAgIH1cclxuICAgIG1lLmRhdGFbYF9FZGl0TW9kZWBdID0gZWRpdE1vZGU7XHJcbiAgICBtZS5kYXRhW2BfRWRpdE1vZGVgXS52YWx1ZSA9IGVkaXRNb2RlLmluaXRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb21wb25lbnRBZGRpdGlvbmFsUHJvcGVydGllcyhtZTogYW55KSB7XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLnRpdGxlID0gbWUuZGF0YSAmJiBtZS5kYXRhLlRpdGxlICYmIG1lLmRhdGEuVGl0bGUuaW5jbHVkZXMoXCJncm91cC5cIikgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwobWUsIG1lLmRhdGEuVGl0bGUpIDogbWUuZGF0YS5UaXRsZTtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuaWNvbiA9IG1lLmRhdGEgJiYgbWUuZGF0YS5JY29uICYmIG1lLmRhdGEuSWNvbi5pbmNsdWRlcyhcImdyb3VwLlwiKSA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChtZSwgbWUuZGF0YS5JY29uKSA6IG1lLmRhdGEuSWNvbjtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMubGFiZWwgPSBtZS5kYXRhICYmIG1lLmRhdGEuTGFiZWwgJiYgbWUuZGF0YS5MYWJlbC5pbmNsdWRlcyhcImdyb3VwLlwiKSA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChtZSwgbWUuZGF0YS5MYWJlbCkgOiBtZS5kYXRhLkxhYmVsO1xyXG4gICAgaWYgKG1lLmdyb3VwLmZpZWxkcyAmJiBtZS5ncm91cC5maWVsZHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaWVsZCA9IFpDb21wb25lbnRIZWxwZXIuZ2V0RmllbGRGcm9tRmllbGRzQnlWYWx1ZShtZS5ncm91cC5maWVsZHMsIG1lLmRhdGEuVmFsdWUpO1xyXG4gICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICBmaWVsZFtgY29tcG9uZW50UHJvcGVydGllc2BdID0gbWUuY29tcG9uZW50UHJvcGVydGllcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbXBTdHlsZXNCeUluZGV4KG1lOiBhbnkpIHtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1lLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUpKSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IGtleS5yZXBsYWNlKCdzdHlsZScsICcnKTtcclxuICAgICAgdGhpcy5zZXRTdHlsZUJ5SW5kZXgobWUsIGluZCwgWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGFbYFN0eWxlJHtpbmR9YF0sIG1lLmdyb3VwKSB8fCBcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlKSkge1xyXG4gICAgICBjb25zdCBpbmQgPSBrZXkucmVwbGFjZSgnc3R5bGUnLCAnJyk7XHJcbiAgICAgIHRoaXMuc2V0Q29udGFpbmVyU3R5bGVCeUluZGV4KG1lLCBpbmQsIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShtZS5kYXRhW2BDb250YWluZXJTdHlsZSR7aW5kfWBdLCBtZS5ncm91cCkgfHwgXCJcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U3R5bGVCeUluZGV4KG1lOiBhbnksIGluZDogc3RyaW5nLCBzdHlsZTogc3RyaW5nKSB7XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlW2BzdHlsZSR7aW5kfWBdID0gc3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29udGFpbmVyU3R5bGVCeUluZGV4KG1lOiBhbnksIGluZDogc3RyaW5nLCBzdHlsZTogc3RyaW5nKSB7XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmNvbnRhaW5lclN0eWxlW2BzdHlsZSR7aW5kfWBdID0gc3R5bGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29udmVydFN0eWxlU3RyaW5nVG9PYmplY3Qoc3R5bGVTdHJpbmc6IHN0cmluZyk6IGFueSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBzdHlsZUFyciA9IHN0eWxlU3RyaW5nLnNwbGl0KFwiO1wiKS5maWx0ZXIoeCA9PiB4KTtcclxuICAgICAgY29uc3Qgc3R5bGVPYmogPSB7fTtcclxuICAgICAgZm9yIChjb25zdCBzdHlsZSBvZiBzdHlsZUFycikge1xyXG4gICAgICAgIGNvbnN0IGt2cCA9IHN0eWxlLnNwbGl0KFwiOlwiKTtcclxuICAgICAgICBzdHlsZU9ialtrdnBbMF0udHJpbSgpXSA9IGt2cFsxXS50cmltKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzdHlsZU9iajtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnIpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlVG9vbEJhckl0ZW1zKGl0ZW1zOiBBcnJheTxhbnk+LCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoaXRlbXMsIFwidGV4dFwiLCB7IGVsZW1lbnROYW1lOiAnZ2VuZXJhbCcsIGdyb3VwIH0pKTtcclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUdyaWRDb2x1bW5IZWFkZXIoY29sdW1uczogQXJyYXk8YW55PiwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGNvbHVtbnMsIFwidGl0bGVcIiwgeyBlbGVtZW50TmFtZTogJ21lbnUnLCBncm91cCB9KSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVCdXR0b25Db21wb25lbnQoYnV0dG9uczogQXJyYXk8YW55PiwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChidXR0b25zLCBcInRleHRcIiwgeyBlbGVtZW50TmFtZTogZ3JvdXAuZmllbGROYW1lLCBncm91cCB9KSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVDb21wb25lbnRGaWVsZChkYXRhOiBaRmllbGQsIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG5cclxuICAgIGNvbnN0IHByb3BMaXN0ID0gW1wiTGFiZWxcIiwgXCJQbGFjZUhvbGRlclwiLCBcIlRpdGxlXCJdOyAvLyBUb29sVGlwXHJcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcExpc3QpIHtcclxuICAgICAgaWYgKGRhdGFbcHJvcF0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzID0gdGhpcy50cmFuc2xhdGVDb21wQnlQcm9wZXJ0eShkYXRhLCBwcm9wLCBncm91cC5maWVsZE5hbWUsIGdyb3VwKTtcclxuICAgICAgICBpZiAob2JzKSB7XHJcbiAgICAgICAgICBvYnNMaXN0ID0gb2JzTGlzdC5jb25jYXQob2JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUNvbXBvbmVudFByb3BlcnRpZXMoY29tcG9uZW50UHJvcGVydGllczogWkNvbXBvbmVudFByb3BlcnRpZXMsIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG5cclxuICAgIGNvbnN0IHByb3BMaXN0ID0gW1wibGFiZWxcIiwgXCJ0aXRsZVwiXTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wTGlzdCkge1xyXG4gICAgICBpZiAoY29tcG9uZW50UHJvcGVydGllc1twcm9wXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLnRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGNvbXBvbmVudFByb3BlcnRpZXMsIHByb3AsIGdyb3VwLmZpZWxkTmFtZSwgZ3JvdXApO1xyXG4gICAgICAgIGlmIChvYnMpIHtcclxuICAgICAgICAgIG9ic0xpc3QgPSBvYnNMaXN0LmNvbmNhdChvYnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGRhdGE6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGdyb3VwOiBaR3JvdXApOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+IHtcclxuICAgIGlmIChkYXRhW3Byb3BOYW1lXSA9PSB1bmRlZmluZWQgfHwgZGF0YVtwcm9wTmFtZV0gPT0gXCJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW3Byb3BOYW1lXSkgJiYgZGF0YVtwcm9wTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChkYXRhW3Byb3BOYW1lXSwgbnVsbCwgeyBlbGVtZW50TmFtZTogZmllbGROYW1lLCBncm91cCB9KS5waXBlKFxyXG4gICAgICAgIHRhcChyZXNwID0+IHtcclxuICAgICAgICAgIGRhdGFbcHJvcE5hbWVdID0gcmVzcDtcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVTaW5nbGVJdGVtKGRhdGEsIHByb3BOYW1lLCB7IGVsZW1lbnROYW1lOiBmaWVsZE5hbWUsIGdyb3VwIH0pLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSByZXNwO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9ic0xpc3Q7XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQWdLdkMsNkJBQTZCO1FBQ1osdUJBQWtCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBM1B4RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGFBQXFCO1FBQzlDLE9BQU8sZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVNLGFBQWEsQ0FDbEIsd0JBQWtELEVBQ2xELFlBQW1DLEVBQ25DLEtBQVUsRUFDVixLQUFVLEVBQ1YsSUFBZSxFQUNmLGNBQW1CO1FBRW5CLCtDQUErQztRQUMvQyxjQUFjO1FBQ2QsSUFBSTtRQUVKLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJ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RUFBRSxDQUFDO0lBQzlCLENBQUM7OytHQTNSVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEVtYmVkZGVkVmlld1JlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpDb3JlU2VydmljZSwgWkZpZWxkLCBaR3JvdXAsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbi8vIGltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy9tbWhnbG9iYWwtbWlkZGxld2FyZS9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtbWlkZGxld2FyZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRmllbGRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9maWVsZGVsZW1lbnQuZGlyZWN0aXZlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFpDb21wb25lbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGVudmlyb25tZW50O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRPYmplY3RTZXJ2aWNlOiBDb21wb25lbnRPYmplY3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTa2lwQ29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmlzU2tpcENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZENvbXBvbmVudChcclxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgZmllbGRFbGVtZW50OiBGaWVsZEVsZW1lbnREaXJlY3RpdmUsXHJcbiAgICBmaWVsZDogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGZvcm06IEZvcm1Hcm91cCxcclxuICAgIGNvbnRhaW5lckZpZWxkOiBhbnlcclxuICApIHtcclxuICAgIC8vIGlmKGZpZWxkLk5hbWUgPT09ICdGb3JtRGV0YWlsQ29udGFjdEdyaWQnKSB7XHJcbiAgICAvLyAgIGRlYnVnZ2VyO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU2tpcENvbXBvbmVudFR5cGUoZmllbGQuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21wb25lbnRGYWN0b3J5O1xyXG4gICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoZmllbGQuVHlwZSk7XHJcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICAgIGNvbXBvbmVudE5hbWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChcInVua25vd25cIilcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZmllbGRFbGVtZW50LnZpZXdDb250YWluZXJSZWY7XHJcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICBpZiAoIWZvcm0pIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGb3JtR3JvdXAgaXMgZW1wdHkhJyk7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmRhdGEgPSBmaWVsZDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZ3JvdXAgPSBncm91cDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZm9ybSA9IGZvcm07XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmNvbnRhaW5lckZpZWxkID0gY29udGFpbmVyRmllbGQ7XHJcbiAgICAvLyAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLm91dHB1dEV2ZW50LnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gZ3JvdXAub3V0cHV0RXZlbnQoZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIGFwcGVuZENvbXBvbmVudFRvRHluYW1pY0Zvcm0oXHJcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIGluamVjdG9yOiBhbnksXHJcbiAgICBhcHBSZWY6IGFueSxcclxuICAgIGZpZWxkOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgY29udGFpbmVySWQ6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuaXNTa2lwQ29tcG9uZW50VHlwZShmaWVsZC5UeXBlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBvbmVudFJlZjtcclxuICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KGZpZWxkLlR5cGUpO1xyXG4gICAgLy8gMS4gQ3JlYXRlIGEgY29tcG9uZW50IHJlZmVyZW5jZSBmcm9tIHRoZSBjb21wb25lbnRcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxyXG4gICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnROYW1lKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoXCJ1bmtub3duXCIpKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIEF0dGFjaCBjb21wb25lbnQgdG8gdGhlIGFwcFJlZiBzbyB0aGF0IGl0J3MgaW5zaWRlIHRoZSBuZyBjb21wb25lbnQgdHJlZVxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAvLyAzLiBHZXQgRE9NIGVsZW1lbnQgZnJvbSBjb21wb25lbnRcclxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxyXG4gICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8vIDQuIEFwcGVuZCBET00gZWxlbWVudCB0byB0aGUgYm9keVxyXG4gICAgY29uc3QgZHluYW1pY0Zvcm1Ib3N0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI1wiICsgY29udGFpbmVySWQpO1xyXG4gICAgZHluYW1pY0Zvcm1Ib3N0LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xyXG5cclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZGF0YSA9IGZpZWxkO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5ncm91cCA9IGdyb3VwO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9JU0VESVQgPSB0cnVlO1xyXG4gIHB1YmxpYyBzZXRFZGl0TW9kZShtZTogYW55KSB7XHJcbiAgICBsZXQgZWRpdE1vZGUgPSB7IHZhbHVlOiB0aGlzLkRFRkFVTFRfSVNFRElULCBpbml0VmFsdWU6IHRoaXMuREVGQVVMVF9JU0VESVQgfTtcclxuXHJcbiAgICBpZiAobWUgJiYgbWUuZGF0YSAmJiBtZS5kYXRhLkVkaXRNb2RlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodHlwZW9mIG1lLmRhdGEuRWRpdE1vZGUgIT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGNvbnN0IGdycEVkaXRNb2RlVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YS5FZGl0TW9kZSwgbWUuZ3JvdXApO1xyXG4gICAgICAgIGVkaXRNb2RlID0geyB2YWx1ZTogZ3JwRWRpdE1vZGVWYWx1ZSwgaW5pdFZhbHVlOiBncnBFZGl0TW9kZVZhbHVlIH07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZWRpdE1vZGUgPSBtZS5kYXRhLkVkaXRNb2RlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChtZSAmJiBtZS5jb250YWluZXJGaWVsZCAmJiBtZS5jb250YWluZXJGaWVsZFtgX0VkaXRNb2RlYF0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGVkaXRNb2RlID0gbWUuY29udGFpbmVyRmllbGRbYF9FZGl0TW9kZWBdO1xyXG4gICAgfVxyXG4gICAgbWUuZGF0YVtgX0VkaXRNb2RlYF0gPSBlZGl0TW9kZTtcclxuICAgIG1lLmRhdGFbYF9FZGl0TW9kZWBdLnZhbHVlID0gZWRpdE1vZGUuaW5pdFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbXBvbmVudEFkZGl0aW9uYWxQcm9wZXJ0aWVzKG1lOiBhbnkpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMudGl0bGUgPSBtZS5kYXRhICYmIG1lLmRhdGEuVGl0bGUgJiYgbWUuZGF0YS5UaXRsZS5pbmNsdWRlcyhcImdyb3VwLlwiKSA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChtZSwgbWUuZGF0YS5UaXRsZSkgOiBtZS5kYXRhLlRpdGxlO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5pY29uID0gbWUuZGF0YSAmJiBtZS5kYXRhLkljb24gJiYgbWUuZGF0YS5JY29uLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkljb24pIDogbWUuZGF0YS5JY29uO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5sYWJlbCA9IG1lLmRhdGEgJiYgbWUuZGF0YS5MYWJlbCAmJiBtZS5kYXRhLkxhYmVsLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkxhYmVsKSA6IG1lLmRhdGEuTGFiZWw7XHJcbiAgICBpZiAobWUuZ3JvdXAuZmllbGRzICYmIG1lLmdyb3VwLmZpZWxkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gWkNvbXBvbmVudEhlbHBlci5nZXRGaWVsZEZyb21GaWVsZHNCeVZhbHVlKG1lLmdyb3VwLmZpZWxkcywgbWUuZGF0YS5WYWx1ZSk7XHJcbiAgICAgIGlmIChmaWVsZCkge1xyXG4gICAgICAgIGZpZWxkW2Bjb21wb25lbnRQcm9wZXJ0aWVzYF0gPSBtZS5jb21wb25lbnRQcm9wZXJ0aWVzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29tcFN0eWxlc0J5SW5kZXgobWU6IGFueSkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWUuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZSkpIHtcclxuICAgICAgY29uc3QgaW5kID0ga2V5LnJlcGxhY2UoJ3N0eWxlJywgJycpO1xyXG4gICAgICB0aGlzLnNldFN0eWxlQnlJbmRleChtZSwgaW5kLCBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YVtgU3R5bGUke2luZH1gXSwgbWUuZ3JvdXApIHx8IFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUpKSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IGtleS5yZXBsYWNlKCdzdHlsZScsICcnKTtcclxuICAgICAgdGhpcy5zZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWUsIGluZCwgWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGFbYENvbnRhaW5lclN0eWxlJHtpbmR9YF0sIG1lLmdyb3VwKSB8fCBcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0U3R5bGVTdHJpbmdUb09iamVjdChzdHlsZVN0cmluZzogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0eWxlQXJyID0gc3R5bGVTdHJpbmcuc3BsaXQoXCI7XCIpLmZpbHRlcih4ID0+IHgpO1xyXG4gICAgICBjb25zdCBzdHlsZU9iaiA9IHt9O1xyXG4gICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIHN0eWxlQXJyKSB7XHJcbiAgICAgICAgY29uc3Qga3ZwID0gc3R5bGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgIHN0eWxlT2JqW2t2cFswXS50cmltKCldID0ga3ZwWzFdLnRyaW0oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0eWxlT2JqO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVUb29sQmFySXRlbXMoaXRlbXM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChpdGVtcywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6ICdnZW5lcmFsJywgZ3JvdXAgfSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlR3JpZENvbHVtbkhlYWRlcihjb2x1bW5zOiBBcnJheTxhbnk+LCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoY29sdW1ucywgXCJ0aXRsZVwiLCB7IGVsZW1lbnROYW1lOiAnbWVudScsIGdyb3VwIH0pKTtcclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUJ1dHRvbkNvbXBvbmVudChidXR0b25zOiBBcnJheTxhbnk+LCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGJ1dHRvbnMsIFwidGV4dFwiLCB7IGVsZW1lbnROYW1lOiBncm91cC5maWVsZE5hbWUsIGdyb3VwIH0pKTtcclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUNvbXBvbmVudEZpZWxkKGRhdGE6IFpGaWVsZCwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcblxyXG4gICAgY29uc3QgcHJvcExpc3QgPSBbXCJMYWJlbFwiLCBcIlBsYWNlSG9sZGVyXCIsIFwiVGl0bGVcIl07IC8vIFRvb2xUaXBcclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wTGlzdCkge1xyXG4gICAgICBpZiAoZGF0YVtwcm9wXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLnRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGRhdGEsIHByb3AsIGdyb3VwLmZpZWxkTmFtZSwgZ3JvdXApO1xyXG4gICAgICAgIGlmIChvYnMpIHtcclxuICAgICAgICAgIG9ic0xpc3QgPSBvYnNMaXN0LmNvbmNhdChvYnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQ29tcG9uZW50UHJvcGVydGllcyhjb21wb25lbnRQcm9wZXJ0aWVzOiBaQ29tcG9uZW50UHJvcGVydGllcywgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcblxyXG4gICAgY29uc3QgcHJvcExpc3QgPSBbXCJsYWJlbFwiLCBcInRpdGxlXCJdO1xyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BMaXN0KSB7XHJcbiAgICAgIGlmIChjb21wb25lbnRQcm9wZXJ0aWVzW3Byb3BdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMudHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoY29tcG9uZW50UHJvcGVydGllcywgcHJvcCwgZ3JvdXAuZmllbGROYW1lLCBncm91cCk7XHJcbiAgICAgICAgaWYgKG9icykge1xyXG4gICAgICAgICAgb2JzTGlzdCA9IG9ic0xpc3QuY29uY2F0KG9icyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YTogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZ3JvdXA6IFpHcm91cCk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4ge1xyXG4gICAgaWYgKGRhdGFbcHJvcE5hbWVdID09IHVuZGVmaW5lZCB8fCBkYXRhW3Byb3BOYW1lXSA9PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbcHJvcE5hbWVdKSAmJiBkYXRhW3Byb3BOYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGRhdGFbcHJvcE5hbWVdLCBudWxsLCB7IGVsZW1lbnROYW1lOiBmaWVsZE5hbWUsIGdyb3VwIH0pLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSByZXNwO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZVNpbmdsZUl0ZW0oZGF0YSwgcHJvcE5hbWUsIHsgZWxlbWVudE5hbWU6IGZpZWxkTmFtZSwgZ3JvdXAgfSkucGlwZShcclxuICAgICAgICB0YXAocmVzcCA9PiB7XHJcbiAgICAgICAgICBkYXRhW3Byb3BOYW1lXSA9IHJlc3A7XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzTGlzdDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBEYXRlVGltZSBDb252ZXJzaW9uXHJcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lUGlja2VyRGF0ZVR5cGUgPSBbJ3p1aWRhdGV0aW1lJywgJ3p0aW1lJywgJ3p1aXRpbWUnXTtcclxuICBwdWJsaWMgbG9jYWxpemVEYXRlVGltZUJ5SWdub3JpbmdUaW1lWm9uZSh2YWx1ZTogc3RyaW5nLCBkYXRhOiBaRmllbGQpOiBEYXRlIHtcclxuICAgIGlmICh0aGlzLnRpbWVQaWNrZXJEYXRlVHlwZS5pbmNsdWRlcyhkYXRhLlR5cGUpKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJUaW1lWm9uZU9mZlNldCA9IHRoaXMuY29udmVydE9mZnNldE1pblRvSG91cigobmV3IERhdGUodmFsdWUpLmdldFRpbWV6b25lT2Zmc2V0KCkpKTtcclxuICAgICAgY29uc3QgZGF0ZXRpbWVXaXRob3V0VGltZVpvbmUgPSB0aGlzLnJlbW92ZVRpbWVab25lQW5kQ29udmVydFRvSVNPU3RyaW5nKHZhbHVlKTtcclxuXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShgJHtkYXRldGltZVdpdGhvdXRUaW1lWm9uZS5zcGxpdCgnLjAwMFonKVswXX0ke3VzZXJUaW1lWm9uZU9mZlNldH1gKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBkYXRlT25seSA9IHZhbHVlLmluY2x1ZGVzKCdUJykgPyB2YWx1ZS5zcGxpdCgnVCcpWzBdIDogdmFsdWU7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlT25seSArIFwiIFwiICsgbmV3IERhdGUoZGF0ZU9ubHkpLnRvTG9jYWxlVGltZVN0cmluZygpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlVGltZVpvbmVBbmRDb252ZXJ0VG9JU09TdHJpbmcodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZXN1bHQgPSB2YWx1ZS5zcGxpdCgnKycpWzBdO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKHJlc3VsdC5lbmRzV2l0aCgnWicpID8gcmVzdWx0IDogYCR7cmVzdWx0fVpgKS50b0lTT1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0T2Zmc2V0TWluVG9Ib3VyKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIG51bSA9IC1udW07XHJcbiAgICBjb25zdCBwcmVmaXggPSBudW0udG9TdHJpbmcoKS5zdGFydHNXaXRoKCctJykgPyAnLScgOiAnKyc7XHJcbiAgICBjb25zdCByZXN1bHQgPSBgJHsoTWF0aC5hYnMobnVtKSAvIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OjAwYDtcclxuICAgIHJldHVybiBgJHtwcmVmaXh9JHtyZXN1bHR9YDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uXHJcbn1cclxuIl19
@@ -1,16 +1,22 @@
1
1
  import { Pipe } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "../services/zcomponent.service";
3
4
  export class DateParserFilter {
4
- transform(items) {
5
+ constructor(compService) {
6
+ this.compService = compService;
7
+ }
8
+ transform(value, data) {
5
9
  // debugger;
6
- if (!items) {
7
- return items;
10
+ if (!value) {
11
+ return value;
8
12
  }
9
13
  // filter items array, items which match and return true will be
10
14
  // kept, false will be filtered out
11
15
  try {
12
- const d = new Date(items);
13
- return d;
16
+ if (data.IsIgnoreTimeZone) {
17
+ return this.compService.localizeDateTimeByIgnoringTimeZone(value, data);
18
+ }
19
+ return new Date(value);
14
20
  }
15
21
  catch (error) {
16
22
  console.log("DateParserFilter error: ", error);
@@ -18,7 +24,7 @@ export class DateParserFilter {
18
24
  }
19
25
  }
20
26
  }
21
- DateParserFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateParserFilter, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
27
+ DateParserFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateParserFilter, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Pipe });
22
28
  DateParserFilter.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateParserFilter, name: "dateParser" });
23
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateParserFilter, decorators: [{
24
30
  type: Pipe,
@@ -26,5 +32,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
26
32
  name: "dateParser",
27
33
  pure: true,
28
34
  }]
29
- }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVBhcnNlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL2RhdGVQYXJzZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFNcEQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixTQUFTLENBQUMsS0FBVTtRQUNsQixZQUFZO1FBQ1osSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxnRUFBZ0U7UUFDaEUsbUNBQW1DO1FBQ25DLElBQUk7WUFDRixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixPQUFPLENBQUMsQ0FBQztTQUNWO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzs4R0FmVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUo1QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6IFwiZGF0ZVBhcnNlclwiLFxyXG4gIHB1cmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRlUGFyc2VyRmlsdGVyIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgdHJhbnNmb3JtKGl0ZW1zOiBhbnkpOiBhbnkge1xyXG4gICAgLy8gZGVidWdnZXI7XHJcbiAgICBpZiAoIWl0ZW1zKSB7XHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH1cclxuICAgIC8vIGZpbHRlciBpdGVtcyBhcnJheSwgaXRlbXMgd2hpY2ggbWF0Y2ggYW5kIHJldHVybiB0cnVlIHdpbGwgYmVcclxuICAgIC8vIGtlcHQsIGZhbHNlIHdpbGwgYmUgZmlsdGVyZWQgb3V0XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUoaXRlbXMpO1xyXG4gICAgICByZXR1cm4gZDtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiRGF0ZVBhcnNlckZpbHRlciBlcnJvcjogXCIsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
35
+ }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZVBhcnNlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL2RhdGVQYXJzZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBUXBELE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFBb0IsV0FBOEI7UUFBOUIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO0lBQUksQ0FBQztJQUV2RCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVk7UUFDaEMsWUFBWTtRQUNaLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsZ0VBQWdFO1FBQ2hFLG1DQUFtQztRQUNuQyxJQUFJO1lBQ0YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQ0FBa0MsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDekU7WUFFRCxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hCO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDOzs4R0FyQlUsZ0JBQWdCOzRHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsSUFBSSxFQUFFLElBQUk7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgWkZpZWxkIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiBcImRhdGVQYXJzZXJcIixcclxuICBwdXJlOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0ZVBhcnNlckZpbHRlciBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBTZXJ2aWNlOiBaQ29tcG9uZW50U2VydmljZSkgeyB9XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkYXRhOiBaRmllbGQpOiBhbnkge1xyXG4gICAgLy8gZGVidWdnZXI7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuICAgIC8vIGZpbHRlciBpdGVtcyBhcnJheSwgaXRlbXMgd2hpY2ggbWF0Y2ggYW5kIHJldHVybiB0cnVlIHdpbGwgYmVcclxuICAgIC8vIGtlcHQsIGZhbHNlIHdpbGwgYmUgZmlsdGVyZWQgb3V0XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoZGF0YS5Jc0lnbm9yZVRpbWVab25lKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcFNlcnZpY2UubG9jYWxpemVEYXRlVGltZUJ5SWdub3JpbmdUaW1lWm9uZSh2YWx1ZSwgZGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIkRhdGVQYXJzZXJGaWx0ZXIgZXJyb3I6IFwiLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -48,15 +48,7 @@ export class ZdatetimeComponent extends InputFieldBase {
48
48
  }
49
49
  onChange(value) {
50
50
  const formControl = this.form.controls[this.data.Value];
51
- let val = value;
52
- if (val != undefined) {
53
- if (!['zuidatetime', 'ztime', 'zuitime'].includes(this.data.Type)) {
54
- val = new Date((value instanceof Date ? value : new Date(value)).toLocaleDateString()).toISOString();
55
- }
56
- else {
57
- val = (value instanceof Date ? value : new Date(value)).toISOString();
58
- }
59
- }
51
+ const val = this.convertDateTimeValueToString(value);
60
52
  if (formControl) {
61
53
  formControl.setValue(val);
62
54
  formControl.markAsTouched();
@@ -74,11 +66,31 @@ export class ZdatetimeComponent extends InputFieldBase {
74
66
  const stepValueGroupValue = ZComponentHelper.getGroupValue(this.data.StepValue, this.group);
75
67
  this.stepValue = stepValueGroupValue || this.data.StepValue;
76
68
  }
69
+ convertDateTimeValueToString(value) {
70
+ if (value == undefined) {
71
+ return undefined;
72
+ }
73
+ if (this.data.IsIgnoreTimeZone) {
74
+ const valueDate = value;
75
+ const timezoneOffSet = new Date(value).getTimezoneOffset();
76
+ valueDate.setMinutes(valueDate.getMinutes() + (-timezoneOffSet));
77
+ return valueDate.toISOString();
78
+ }
79
+ if (!['zuidatetime', 'ztime', 'zuitime'].includes(this.data.Type)) {
80
+ return new Date(this.parseAnyValueToDate(value).toLocaleDateString()).toISOString();
81
+ }
82
+ else {
83
+ return this.parseAnyValueToDate(value).toISOString();
84
+ }
85
+ }
86
+ parseAnyValueToDate(value) {
87
+ return new Date(value instanceof Date ? value : new Date(value));
88
+ }
77
89
  }
78
90
  ZdatetimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdatetimeComponent, deps: [{ token: i1.ZComponentService }], target: i0.ɵɵFactoryTarget.Component });
79
- ZdatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdatetimeComponent, selector: "app-zdatetime", usesInheritance: true, ngImport: i0, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"data | dateFormatIonic\" [pickerFormat]=\"data | dateFormatIonic\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\" [min]=\"minDate | dateMinMaxIonic\" [max]=\"maxDate | dateMinMaxIonic\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"\r\n (ionChange)=\"onChange($event.detail.value)\">\r\n </ion-datetime>\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngSwitch]=\"data.Type\">\r\n <kendo-datepicker *ngSwitchCase=\"'zshortdate'\" [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" [activeView]=\"'year'\"\r\n [bottomView]=\"'year'\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\"\r\n [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-timepicker>\r\n <kendo-datepicker *ngSwitchDefault [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [".gridInlineEdit{--background: transparent}.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)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"], components: [{ type: i2.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "name", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "value", "yearValues"] }, { type: i3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i3.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "defaultTab", "size", "rounded", "fillMode"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i3.TimePickerComponent, selector: "kendo-timepicker", inputs: ["disabled", "readonly", "readOnlyInput", "format", "formatPlaceholder", "placeholder", "min", "max", "incompleteDateValidation", "cancelButton", "nowButton", "steps", "popupSettings", "tabindex", "tabIndex", "title", "rangeValidation", "value", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-timepicker"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "dateFormatIonic": i6.DateIonicFormatParser, "dateMinMaxIonic": i7.DateIonicMinMaxParser, "dateParser": i8.DateParserFilter, "dateFormatKendo": i9.DateKendoFormatParser } });
91
+ ZdatetimeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ZdatetimeComponent, selector: "app-zdatetime", usesInheritance: true, ngImport: i0, template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"data | dateFormatIonic\" [pickerFormat]=\"data | dateFormatIonic\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\" [min]=\"minDate | dateMinMaxIonic\" [max]=\"maxDate | dateMinMaxIonic\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"\r\n (ionChange)=\"onChange($event.detail.value)\">\r\n </ion-datetime>\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngSwitch]=\"data.Type\">\r\n <kendo-datepicker *ngSwitchCase=\"'zshortdate'\" [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser : data\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" [activeView]=\"'year'\"\r\n [bottomView]=\"'year'\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\"\r\n [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-timepicker>\r\n <kendo-datepicker *ngSwitchDefault [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser : data\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [".gridInlineEdit{--background: transparent}.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)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"], components: [{ type: i2.IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "name", "presentation", "readonly", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "value", "yearValues"] }, { type: i3.DatePickerComponent, selector: "kendo-datepicker", inputs: ["cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate", "activeView", "bottomView", "topView", "calendarType", "animateCalendarNavigation", "disabled", "readonly", "readOnlyInput", "popupSettings", "navigation", "min", "max", "incompleteDateValidation", "focusedDate", "value", "format", "twoDigitYearMax", "formatPlaceholder", "placeholder", "tabindex", "tabIndex", "disabledDates", "title", "rangeValidation", "disabledDatesValidation", "weekNumber", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-datepicker"] }, { type: i3.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "title", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "defaultTab", "size", "rounded", "fillMode"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i3.TimePickerComponent, selector: "kendo-timepicker", inputs: ["disabled", "readonly", "readOnlyInput", "format", "formatPlaceholder", "placeholder", "min", "max", "incompleteDateValidation", "cancelButton", "nowButton", "steps", "popupSettings", "tabindex", "tabIndex", "title", "rangeValidation", "value", "size", "rounded", "fillMode"], outputs: ["valueChange", "focus", "blur", "open", "close"], exportAs: ["kendo-timepicker"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectValueAccessor, selector: "ion-range, ion-select, ion-radio-group, ion-segment, ion-datetime" }, { type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }], pipes: { "dateFormatIonic": i6.DateIonicFormatParser, "dateMinMaxIonic": i7.DateIonicMinMaxParser, "dateParser": i8.DateParserFilter, "dateFormatKendo": i9.DateKendoFormatParser } });
80
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZdatetimeComponent, decorators: [{
81
93
  type: Component,
82
- args: [{ selector: "app-zdatetime", template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"data | dateFormatIonic\" [pickerFormat]=\"data | dateFormatIonic\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\" [min]=\"minDate | dateMinMaxIonic\" [max]=\"maxDate | dateMinMaxIonic\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"\r\n (ionChange)=\"onChange($event.detail.value)\">\r\n </ion-datetime>\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngSwitch]=\"data.Type\">\r\n <kendo-datepicker *ngSwitchCase=\"'zshortdate'\" [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" [activeView]=\"'year'\"\r\n [bottomView]=\"'year'\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\"\r\n [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-timepicker>\r\n <kendo-datepicker *ngSwitchDefault [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [".gridInlineEdit{--background: transparent}.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)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"] }]
94
+ args: [{ selector: "app-zdatetime", template: "<div class=\"zdate-container e1tag-style\" [style]=\"componentProperties.style.style\">\r\n\r\n <ion-datetime *ngIf=\"isMobileScreen()\" style=\"padding: 8px 0px;\"\r\n [required]=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n [placeholder]=\"data.PlaceHolder\" [id]=\"data.Value\" [displayFormat]=\"data | dateFormatIonic\" [pickerFormat]=\"data | dateFormatIonic\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [formControlName]=\"data.Value\" [min]=\"minDate | dateMinMaxIonic\" [max]=\"maxDate | dateMinMaxIonic\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [style]=\"componentProperties.style.style1\" class=\"e1tag-style1\"\r\n (ionChange)=\"onChange($event.detail.value)\">\r\n </ion-datetime>\r\n <div class=\"dateTimeDesktopContainer\" *ngIf=\"!isMobileScreen()\" [ngSwitch]=\"data.Type\">\r\n <kendo-datepicker *ngSwitchCase=\"'zshortdate'\" [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser : data\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" [activeView]=\"'year'\"\r\n [bottomView]=\"'year'\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n <kendo-datetimepicker *ngSwitchCase=\"'zuidatetime'\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datetimepicker>\r\n <kendo-timepicker *ngSwitchCase=\"['ztime','zuitime'].includes(data.Type) ? data.Type : ''\" [id]=\"data.Value\"\r\n [value]=\"form.get(data.Value).value | dateParser : data\" (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\"\r\n class=\"input-field e1tag-style1\"\r\n [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-timepicker>\r\n <kendo-datepicker *ngSwitchDefault [id]=\"data.Value\" [value]=\"form.get(data.Value).value | dateParser : data\"\r\n (valueChange)=\"onChange($event)\" [min]=\"minDate\" [max]=\"maxDate\" class=\"input-field e1tag-style1\" [steps]=\"stepValue\"\r\n [class.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n [format]=\"data | dateFormatKendo\" [placeholder]=\"data.PlaceHolder\" [style]=\"componentProperties.style.style1\">\r\n </kendo-datepicker>\r\n </div>\r\n</div>\r\n\r\n\r\n", styles: [".gridInlineEdit{--background: transparent}.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)}.k-datepicker{color:var(--z-text-color)}:host ::ng-deep kendo-dateinput{font-size:var(--content-font-size)}:host ::ng-deep kendo-dateinput .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker .k-picker-wrap .k-dateinput .k-dateinput-wrap{margin:auto}:host ::ng-deep kendo-datetimepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datetimepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-datepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-datepicker.disabled .k-dateinput .k-dateinput-wrap,:host ::ng-deep kendo-timepicker.disabled .k-picker-wrap,:host ::ng-deep kendo-timepicker.disabled .k-dateinput .k-dateinput-wrap{background:transparent!important}:host ::ng-deep kendo-datetimepicker:focus-within,:host ::ng-deep kendo-datepicker:focus-within,:host ::ng-deep kendo-timepicker:focus-within{box-shadow:0 0 3px 1px var(--ion-color-primary)}\n"] }]
83
95
  }], ctorParameters: function () { return [{ type: i1.ZComponentService }]; } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRhdGV0aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pkYXRldGltZS96ZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL3pkYXRldGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsMkNBQTJDO0FBQzNDLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFLcEQsWUFBWSxXQUE4QjtRQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUh6RCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGNBQVMsR0FBRyxJQUFJLENBQUM7UUF3Q2pCLGlCQUFZLEdBQUcsQ0FBQyxPQUFZLEVBQUUsT0FBWSxFQUFPLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENB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LGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IElucHV0RmllbGRCYXNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvaW5wdXRmaWVsZGJhc2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFpDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3pjb21wb25lbnQuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpkYXRldGltZVwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vemRhdGV0aW1lLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3pkYXRldGltZS5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpkYXRldGltZUNvbXBvbmVudCBleHRlbmRzIElucHV0RmllbGRCYXNlIGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIG1pbkRhdGUgPSBudWxsO1xyXG4gIHB1YmxpYyBtYXhEYXRlID0gbnVsbDtcclxuICBwdWJsaWMgc3RlcFZhbHVlID0gbnVsbDtcclxuICBjb25zdHJ1Y3Rvcihjb21wU2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UpIHsgc3VwZXIoY29tcFNlcnZpY2UpIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5zZXR1cElubmVyRmllbGQoKTtcclxuICAgIHRoaXMuc2V0TWluQW5kTWF4RGF0ZVJhbmdlKCk7XHJcbiAgICB0aGlzLnNldFN0ZXBWYWx1ZSgpO1xyXG4gICAgLy8gaWYgKHRoaXMuZ3JvdXAuek1vZGVsW3RoaXMuZGF0YS5WYWx1ZV0pIHtcclxuICAgIC8vICAgdGhpcy5kYXRlVmFsdWUgPSBuZXcgRGF0ZSh0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIGdldERhdGVWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV0udmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9sID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBsZXQgdmFsID0gdmFsdWU7XHJcbiAgICBpZiAodmFsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoIVsnenVpZGF0ZXRpbWUnLCAnenRpbWUnLCAnenVpdGltZSddLmluY2x1ZGVzKHRoaXMuZGF0YS5UeXBlKSkge1xyXG4gICAgICAgIHZhbCA9IG5ldyBEYXRlKCh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKHZhbHVlKSkudG9Mb2NhbGVEYXRlU3RyaW5nKCkpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdmFsID0gKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUodmFsdWUpKS50b0lTT1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZvcm1Db250cm9sKSB7XHJcbiAgICAgIGZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICAgIGZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLm9uQ2hhbmdlKG51bGwsIHZhbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2V0RGF0ZVJhbmdlID0gKE1pbkRhdGU6IGFueSwgTWF4RGF0ZTogYW55KTogYW55ID0+IHtcclxuICAgIGlmICghaXNOYU4oRGF0ZS5wYXJzZShNaW5EYXRlKSkpIHtcclxuICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUoTWluRGF0ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzTmFOKERhdGUucGFyc2UoTWF4RGF0ZSkpKSB7XHJcbiAgICAgIHRoaXMubWF4RGF0ZSA9IG5ldyBEYXRlKE1heERhdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRNaW5BbmRNYXhEYXRlUmFuZ2UoKSB7XHJcbiAgICBjb25zdCBtaW5EYXRlR3JvdXBWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGEuTWluRGF0ZSBhcyBhbnksIHRoaXMuZ3JvdXApO1xyXG4gICAgY29uc3QgbWluRGF0ZVZhbHVlID0gbWluRGF0ZUdyb3VwVmFsdWUgfHwgdGhpcy5kYXRhLk1pbkRhdGU7XHJcblxyXG4gICAgY29uc3QgbWF4RGF0ZUdyb3VwVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLk1heERhdGUgYXMgYW55LCB0aGlzLmdyb3VwKTtcclxuICAgIGNvbnN0IG1heERhdGVWYWx1ZSA9IG1heERhdGVHcm91cFZhbHVlIHx8IHRoaXMuZGF0YS5NYXhEYXRlO1xyXG4gICAgdGhpcy5TZXREYXRlUmFuZ2UobWluRGF0ZVZhbHVlLCBtYXhEYXRlVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRTdGVwVmFsdWUoKSB7XHJcbiAgICBjb25zdCBzdGVwVmFsdWVHcm91cFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKHRoaXMuZGF0YS5TdGVwVmFsdWUgYXMgYW55LCB0aGlzLmdyb3VwKTtcclxuICAgIHRoaXMuc3RlcFZhbHVlID0gc3RlcFZhbHVlR3JvdXBWYWx1ZSB8fCB0aGlzLmRhdGEuU3RlcFZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiemRhdGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuXHJcbiAgPGlvbi1kYXRldGltZSAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIiBzdHlsZT1cInBhZGRpbmc6IDhweCAwcHg7XCJcclxuICAgIFtyZXF1aXJlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtkaXNwbGF5Rm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0SW9uaWNcIiBbcGlja2VyRm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0SW9uaWNcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbbWluXT1cIm1pbkRhdGUgfCBkYXRlTWluTWF4SW9uaWNcIiBbbWF4XT1cIm1heERhdGUgfCBkYXRlTWluTWF4SW9uaWNcIlxyXG4gICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIiBjbGFzcz1cImUxdGFnLXN0eWxlMVwiXHJcbiAgICAoaW9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC5kZXRhaWwudmFsdWUpXCI+XHJcbiAgPC9pb24tZGF0ZXRpbWU+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGVUaW1lRGVza3RvcENvbnRhaW5lclwiICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIiBbbmdTd2l0Y2hdPVwiZGF0YS5UeXBlXCI+XHJcbiAgICA8a2VuZG8tZGF0ZXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ3pzaG9ydGRhdGUnXCIgW2lkXT1cImRhdGEuVmFsdWVcIiBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyXCJcclxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiBbbWluXT1cIm1pbkRhdGVcIiBbbWF4XT1cIm1heERhdGVcIiBbYWN0aXZlVmlld109XCIneWVhcidcIlxyXG4gICAgICBbYm90dG9tVmlld109XCIneWVhcidcIiBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiIFtzdGVwc109XCJzdGVwVmFsdWVcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgIFtmb3JtYXRdPVwiZGF0YSB8IGRhdGVGb3JtYXRLZW5kb1wiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8L2tlbmRvLWRhdGVwaWNrZXI+XHJcbiAgICA8a2VuZG8tZGF0ZXRpbWVwaWNrZXIgKm5nU3dpdGNoQ2FzZT1cIid6dWlkYXRldGltZSdcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIiAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFttaW5dPVwibWluRGF0ZVwiIFttYXhdPVwibWF4RGF0ZVwiXHJcbiAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCIgW3N0ZXBzXT1cInN0ZXBWYWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgW2Zvcm1hdF09XCJkYXRhIHwgZGF0ZUZvcm1hdEtlbmRvXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDwva2VuZG8tZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICA8a2VuZG8tdGltZXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiWyd6dGltZScsJ3p1aXRpbWUnXS5pbmNsdWRlcyhkYXRhLlR5cGUpID8gZGF0YS5UeXBlIDogJydcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgIFt2YWx1ZV09XCJmb3JtLmdldChkYXRhLlZhbHVlKS52YWx1ZSB8IGRhdGVQYXJzZXJcIiAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFttaW5dPVwibWluRGF0ZVwiIFttYXhdPVwibWF4RGF0ZVwiXHJcbiAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgW3N0ZXBzXT1cInN0ZXBWYWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgW2Zvcm1hdF09XCJkYXRhIHwgZGF0ZUZvcm1hdEtlbmRvXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDwva2VuZG8tdGltZXBpY2tlcj5cclxuICAgIDxrZW5kby1kYXRlcGlja2VyICpuZ1N3aXRjaERlZmF1bHQgW2lkXT1cImRhdGEuVmFsdWVcIiBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyXCJcclxuICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIiBbbWluXT1cIm1pbkRhdGVcIiBbbWF4XT1cIm1heERhdGVcIiBjbGFzcz1cImlucHV0LWZpZWxkIGUxdGFnLXN0eWxlMVwiIFtzdGVwc109XCJzdGVwVmFsdWVcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgIFtmb3JtYXRdPVwiZGF0YSB8IGRhdGVGb3JtYXRLZW5kb1wiIFtwbGFjZWhvbGRlcl09XCJkYXRhLlBsYWNlSG9sZGVyXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGUxXCI+XHJcbiAgICA8L2tlbmRvLWRhdGVwaWNrZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemRhdGV0aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pkYXRldGltZS96ZGF0ZXRpbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemRhdGV0aW1lL3pkYXRldGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCw2QkFBNkI7QUFFN0IsMkNBQTJDO0FBQzNDLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFReEUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGNBQWM7SUFLcEQsWUFBWSxXQUE4QjtRQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUh6RCxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFnQ2pCLGlCQUFZLEdBQUcsQ0FBQyxPQUFZLEVBQUUsT0FBWSxFQUFPLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENB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QUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyRjthQUNJO1lBQ0gsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsS0FBSztRQUMvQixPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDOztnSEFqRlUsa0JBQWtCO29HQUFsQixrQkFBa0IsNEVDZi9CLHNoSUE0Q0E7NEZEN0JhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5pbXBvcnQgeyBJbnB1dEZpZWxkQmFzZSB9IGZyb20gXCIuLi9jb21wb25lbnRzL2lucHV0ZmllbGRiYXNlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50U2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy96Y29tcG9uZW50LnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16ZGF0ZXRpbWVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pkYXRldGltZS5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96ZGF0ZXRpbWUuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaZGF0ZXRpbWVDb21wb25lbnQgZXh0ZW5kcyBJbnB1dEZpZWxkQmFzZSBpbXBsZW1lbnRzIFpDb21wb25lbnQsIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBtaW5EYXRlID0gbnVsbDtcclxuICBwdWJsaWMgbWF4RGF0ZSA9IG51bGw7XHJcbiAgcHVibGljIHN0ZXBWYWx1ZSA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IoY29tcFNlcnZpY2U6IFpDb21wb25lbnRTZXJ2aWNlKSB7IHN1cGVyKGNvbXBTZXJ2aWNlKSB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgc3VwZXIuc2V0dXBJbm5lckZpZWxkKCk7XHJcbiAgICB0aGlzLnNldE1pbkFuZE1heERhdGVSYW5nZSgpO1xyXG4gICAgdGhpcy5zZXRTdGVwVmFsdWUoKTtcclxuICAgIC8vIGlmICh0aGlzLmdyb3VwLnpNb2RlbFt0aGlzLmRhdGEuVmFsdWVdKSB7XHJcbiAgICAvLyAgIHRoaXMuZGF0ZVZhbHVlID0gbmV3IERhdGUodGhpcy5ncm91cC56TW9kZWxbdGhpcy5kYXRhLlZhbHVlXSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRlVmFsdWUoKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdLnZhbHVlO1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLmRhdGEuVmFsdWVdO1xyXG4gICAgY29uc3QgdmFsID0gdGhpcy5jb252ZXJ0RGF0ZVRpbWVWYWx1ZVRvU3RyaW5nKHZhbHVlKTtcclxuXHJcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcclxuICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsKTtcclxuICAgICAgZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIub25DaGFuZ2UobnVsbCwgdmFsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZXREYXRlUmFuZ2UgPSAoTWluRGF0ZTogYW55LCBNYXhEYXRlOiBhbnkpOiBhbnkgPT4ge1xyXG4gICAgaWYgKCFpc05hTihEYXRlLnBhcnNlKE1pbkRhdGUpKSkge1xyXG4gICAgICB0aGlzLm1pbkRhdGUgPSBuZXcgRGF0ZShNaW5EYXRlKTtcclxuICAgIH1cclxuICAgIGlmICghaXNOYU4oRGF0ZS5wYXJzZShNYXhEYXRlKSkpIHtcclxuICAgICAgdGhpcy5tYXhEYXRlID0gbmV3IERhdGUoTWF4RGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE1pbkFuZE1heERhdGVSYW5nZSgpIHtcclxuICAgIGNvbnN0IG1pbkRhdGVHcm91cFZhbHVlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKHRoaXMuZGF0YS5NaW5EYXRlIGFzIGFueSwgdGhpcy5ncm91cCk7XHJcbiAgICBjb25zdCBtaW5EYXRlVmFsdWUgPSBtaW5EYXRlR3JvdXBWYWx1ZSB8fCB0aGlzLmRhdGEuTWluRGF0ZTtcclxuXHJcbiAgICBjb25zdCBtYXhEYXRlR3JvdXBWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZSh0aGlzLmRhdGEuTWF4RGF0ZSBhcyBhbnksIHRoaXMuZ3JvdXApO1xyXG4gICAgY29uc3QgbWF4RGF0ZVZhbHVlID0gbWF4RGF0ZUdyb3VwVmFsdWUgfHwgdGhpcy5kYXRhLk1heERhdGU7XHJcbiAgICB0aGlzLlNldERhdGVSYW5nZShtaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0ZXBWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHN0ZXBWYWx1ZUdyb3VwVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUodGhpcy5kYXRhLlN0ZXBWYWx1ZSBhcyBhbnksIHRoaXMuZ3JvdXApO1xyXG4gICAgdGhpcy5zdGVwVmFsdWUgPSBzdGVwVmFsdWVHcm91cFZhbHVlIHx8IHRoaXMuZGF0YS5TdGVwVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnREYXRlVGltZVZhbHVlVG9TdHJpbmcodmFsdWU6IGFueSk6IGFueSB7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5Jc0lnbm9yZVRpbWVab25lKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlRGF0ZSA9IHZhbHVlIGFzIERhdGU7XHJcbiAgICAgIGNvbnN0IHRpbWV6b25lT2ZmU2V0ID0gbmV3IERhdGUodmFsdWUpLmdldFRpbWV6b25lT2Zmc2V0KCk7XHJcbiAgICAgIHZhbHVlRGF0ZS5zZXRNaW51dGVzKHZhbHVlRGF0ZS5nZXRNaW51dGVzKCkgKyAoLXRpbWV6b25lT2ZmU2V0KSk7XHJcbiAgICAgIHJldHVybiB2YWx1ZURhdGUudG9JU09TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIVsnenVpZGF0ZXRpbWUnLCAnenRpbWUnLCAnenVpdGltZSddLmluY2x1ZGVzKHRoaXMuZGF0YS5UeXBlKSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodGhpcy5wYXJzZUFueVZhbHVlVG9EYXRlKHZhbHVlKS50b0xvY2FsZURhdGVTdHJpbmcoKSkudG9JU09TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUFueVZhbHVlVG9EYXRlKHZhbHVlKS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZUFueVZhbHVlVG9EYXRlKHZhbHVlKTogRGF0ZSB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSh2YWx1ZSkpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiemRhdGUtY29udGFpbmVyIGUxdGFnLXN0eWxlXCIgW3N0eWxlXT1cImNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGUuc3R5bGVcIj5cclxuXHJcbiAgPGlvbi1kYXRldGltZSAqbmdJZj1cImlzTW9iaWxlU2NyZWVuKClcIiBzdHlsZT1cInBhZGRpbmc6IDhweCAwcHg7XCJcclxuICAgIFtyZXF1aXJlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbaWRdPVwiZGF0YS5WYWx1ZVwiIFtkaXNwbGF5Rm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0SW9uaWNcIiBbcGlja2VyRm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0SW9uaWNcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIiBbbWluXT1cIm1pbkRhdGUgfCBkYXRlTWluTWF4SW9uaWNcIiBbbWF4XT1cIm1heERhdGUgfCBkYXRlTWluTWF4SW9uaWNcIlxyXG4gICAgW3JlYWRvbmx5XT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIiBjbGFzcz1cImUxdGFnLXN0eWxlMVwiXHJcbiAgICAoaW9uQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudC5kZXRhaWwudmFsdWUpXCI+XHJcbiAgPC9pb24tZGF0ZXRpbWU+XHJcbiAgPGRpdiBjbGFzcz1cImRhdGVUaW1lRGVza3RvcENvbnRhaW5lclwiICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKClcIiBbbmdTd2l0Y2hdPVwiZGF0YS5UeXBlXCI+XHJcbiAgICA8a2VuZG8tZGF0ZXBpY2tlciAqbmdTd2l0Y2hDYXNlPVwiJ3pzaG9ydGRhdGUnXCIgW2lkXT1cImRhdGEuVmFsdWVcIiBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyIDogZGF0YVwiXHJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCIgW2FjdGl2ZVZpZXddPVwiJ3llYXInXCJcclxuICAgICAgW2JvdHRvbVZpZXddPVwiJ3llYXInXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIiBbc3RlcHNdPVwic3RlcFZhbHVlXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbZm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0S2VuZG9cIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gICAgPC9rZW5kby1kYXRlcGlja2VyPlxyXG4gICAgPGtlbmRvLWRhdGV0aW1lcGlja2VyICpuZ1N3aXRjaENhc2U9XCInenVpZGF0ZXRpbWUnXCIgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyIDogZGF0YVwiICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCJcclxuICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIiBbc3RlcHNdPVwic3RlcFZhbHVlXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbZm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0S2VuZG9cIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gICAgPC9rZW5kby1kYXRldGltZXBpY2tlcj5cclxuICAgIDxrZW5kby10aW1lcGlja2VyICpuZ1N3aXRjaENhc2U9XCJbJ3p0aW1lJywnenVpdGltZSddLmluY2x1ZGVzKGRhdGEuVHlwZSkgPyBkYXRhLlR5cGUgOiAnJ1wiIFtpZF09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgW3ZhbHVlXT1cImZvcm0uZ2V0KGRhdGEuVmFsdWUpLnZhbHVlIHwgZGF0ZVBhcnNlciA6IGRhdGFcIiAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIFttaW5dPVwibWluRGF0ZVwiIFttYXhdPVwibWF4RGF0ZVwiXHJcbiAgICAgIGNsYXNzPVwiaW5wdXQtZmllbGQgZTF0YWctc3R5bGUxXCJcclxuICAgICAgW3N0ZXBzXT1cInN0ZXBWYWx1ZVwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbcmVhZG9ubHldPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkpXCJcclxuICAgICAgW2Zvcm1hdF09XCJkYXRhIHwgZGF0ZUZvcm1hdEtlbmRvXCIgW3BsYWNlaG9sZGVyXT1cImRhdGEuUGxhY2VIb2xkZXJcIiBbc3R5bGVdPVwiY29tcG9uZW50UHJvcGVydGllcy5zdHlsZS5zdHlsZTFcIj5cclxuICAgIDwva2VuZG8tdGltZXBpY2tlcj5cclxuICAgIDxrZW5kby1kYXRlcGlja2VyICpuZ1N3aXRjaERlZmF1bHQgW2lkXT1cImRhdGEuVmFsdWVcIiBbdmFsdWVdPVwiZm9ybS5nZXQoZGF0YS5WYWx1ZSkudmFsdWUgfCBkYXRlUGFyc2VyIDogZGF0YVwiXHJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCIgW21pbl09XCJtaW5EYXRlXCIgW21heF09XCJtYXhEYXRlXCIgY2xhc3M9XCJpbnB1dC1maWVsZCBlMXRhZy1zdHlsZTFcIiBbc3RlcHNdPVwic3RlcFZhbHVlXCJcclxuICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICBbZm9ybWF0XT1cImRhdGEgfCBkYXRlRm9ybWF0S2VuZG9cIiBbcGxhY2Vob2xkZXJdPVwiZGF0YS5QbGFjZUhvbGRlclwiIFtzdHlsZV09XCJjb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlLnN0eWxlMVwiPlxyXG4gICAgPC9rZW5kby1kYXRlcGlja2VyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=
@@ -5,23 +5,25 @@ import { of } from "rxjs";
5
5
  import { map } from "rxjs/operators";
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "mmhglobal-zcore";
8
+ import * as i2 from "../services/zcomponent.service";
8
9
  export class ZInputParser {
9
- constructor(resourceApiService, cacheService, webApiService) {
10
+ constructor(resourceApiService, cacheService, webApiService, compService) {
10
11
  this.resourceApiService = resourceApiService;
11
12
  this.cacheService = cacheService;
12
13
  this.webApiService = webApiService;
14
+ this.compService = compService;
13
15
  this.zdate_type = ['zdate', 'ztime', 'zdatetime', 'zshortdate', 'zuidatetime', 'zuitime'];
14
16
  this.zcheckbox_type = ['checkbox'];
15
17
  this.zselect_type = ['zuiselectmultiple', 'zuiselectmultiple_button', 'select'];
16
18
  this.nullValueDefaultDisplayText = "-";
17
19
  }
18
20
  transform(value, data, group) {
19
- const defaultNullValue = data.NullValueDisplayText != undefined ? data.NullValueDisplayText : this.nullValueDefaultDisplayText;
21
+ this.nullValueDefaultDisplayText = data.NullValueDisplayText != undefined ? data.NullValueDisplayText : '-';
20
22
  if (!value) {
21
- return of(defaultNullValue);
23
+ return of(this.nullValueDefaultDisplayText);
22
24
  }
23
25
  if (this.zdate_type.includes(data.Type)) {
24
- return of(formatDate(value, this.getDateTimeFormat(data.Type), 'en_US') || defaultNullValue);
26
+ return of(this.transformTimeValue(value, data));
25
27
  }
26
28
  else if (this.zcheckbox_type.includes(data.Type)) {
27
29
  return of(value ? "Yes" : "No");
@@ -34,15 +36,22 @@ export class ZInputParser {
34
36
  const optionData = res.dataSet || res || [];
35
37
  const optionValue = optionData ? optionData.find(o => o[selectField.itemValueField] == value) : null;
36
38
  if (optionValue) {
37
- return this.getItemTemplate(optionValue, data, group, selectField.itemValueField, selectField.itemTextField) || defaultNullValue;
39
+ return this.getItemTemplate(optionValue, data, group, selectField.itemValueField, selectField.itemTextField) || this.nullValueDefaultDisplayText;
38
40
  }
39
41
  else {
40
- return defaultNullValue;
42
+ return this.nullValueDefaultDisplayText;
41
43
  }
42
44
  }));
43
45
  }
44
46
  return of(value);
45
47
  }
48
+ transformTimeValue(value, data) {
49
+ let val = value;
50
+ if (data.IsIgnoreTimeZone) {
51
+ val = this.compService.localizeDateTimeByIgnoringTimeZone(value, data);
52
+ }
53
+ return formatDate(val, this.getDateTimeFormat(data.Type), 'en_US') || this.nullValueDefaultDisplayText;
54
+ }
46
55
  // To refactor
47
56
  getDateTimeFormat(dateType) {
48
57
  if (dateType === "ztime") {
@@ -110,7 +119,7 @@ export class ZInputParser {
110
119
  }
111
120
  }
112
121
  }
113
- ZInputParser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZInputParser, deps: [{ token: i1.ResourceApiService }, { token: i1.CacheService }, { token: i1.WebApiService }], target: i0.ɵɵFactoryTarget.Pipe });
122
+ ZInputParser.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZInputParser, deps: [{ token: i1.ResourceApiService }, { token: i1.CacheService }, { token: i1.WebApiService }, { token: i2.ZComponentService }], target: i0.ɵɵFactoryTarget.Pipe });
114
123
  ZInputParser.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZInputParser, name: "inputText" });
115
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ZInputParser, decorators: [{
116
125
  type: Pipe,
@@ -118,5 +127,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
118
127
  name: "inputText",
119
128
  pure: true,
120
129
  }]
121
- }], ctorParameters: function () { return [{ type: i1.ResourceApiService }, { type: i1.CacheService }, { type: i1.WebApiService }]; } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlucHV0LWNvbnRhaW5lci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemlucHV0LWNvbnRhaW5lci96aW5wdXQtY29udGFpbmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBbUQsZ0JBQWdCLEVBQVUsTUFBTSxFQUFpQyxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pLLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNckMsTUFBTSxPQUFPLFlBQVk7SUFNdkIsWUFBb0Isa0JBQXNDLEVBQVUsWUFBMEIsRUFBVSxhQUE0QjtRQUFoSCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUxuSCxlQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLG1CQUFjLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0UsZ0NBQTJCLEdBQUcsR0FBRyxDQUFDO0lBRXFGLENBQUM7SUFFekksU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUMvQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDO1FBQy9ILElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUM7U0FDOUY7YUFDSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7YUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM5QyxNQUFNLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzRixnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzdFLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNSLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNyRyxJQUFJLFdBQVcsRUFBRTtvQkFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksZ0JBQWdCLENBQUM7aUJBQ2xJO3FCQUNJO29CQUNILE9BQU8sZ0JBQWdCLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNQO1FBRUQsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGNBQWM7SUFDTixpQkFBaUIsQ0FBQyxRQUFnQjtRQUN4QyxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDeEIsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFDSSxJQUFJLFFBQVEsS0FBSyxhQUFhLEVBQUU7WUFDbkMsT0FBTyxvQkFBb0IsQ0FBQztTQUM3QjthQUNJLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMvQixPQUFPLFVBQVUsQ0FBQztTQUNuQjthQUNJLElBQUksUUFBUSxLQUFLLFlBQVksRUFBRTtZQUNsQyxPQUFPLFVBQVUsQ0FBQztTQUNuQjtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBWSxFQUFFLEtBQWEsRUFBRSxXQUFnQjtRQUM3RCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7WUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDL0MsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3BDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN6QyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFFeEMsT0FBTyxnQkFBZ0IsQ0FBQyxjQUFjLENBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQ2YsV0FBVyxFQUNYLEtBQUssRUFDTCxXQUFXLEVBQ1gsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsS0FBSyxDQUNOLENBQUM7U0FDSDthQUNJO1lBQ0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGFBQWE7UUFDN0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDbEYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQzNFLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDdkQsYUFBYSxHQUFHLFVBQVUsQ0FBQztTQUM1QjtRQUVELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMvQztRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNoRDtRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRU8sZUFBZSxDQUNyQixJQUFTLEVBQ1QsSUFBUyxFQUNULEtBQVUsRUFDVixjQUFzQixFQUN0QixhQUFxQjtRQUVyQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVyRyxPQUFPLGVBQWUsQ0FBQztnQkFDckIsSUFBSTtnQkFDSixJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsY0FBYztnQkFDZCxhQUFhO2FBQ21CLENBQUMsQ0FBQztTQUNyQzthQUFNLElBQUksYUFBYSxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQzs7MEdBOUhVLFlBQVk7d0dBQVosWUFBWTs0RkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgV2ViQXBpU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JvdXAsIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtcyB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiBcImlucHV0VGV4dFwiLFxyXG4gIHB1cmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaSW5wdXRQYXJzZXIgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IHpkYXRlX3R5cGUgPSBbJ3pkYXRlJywgJ3p0aW1lJywgJ3pkYXRldGltZScsICd6c2hvcnRkYXRlJywgJ3p1aWRhdGV0aW1lJywgJ3p1aXRpbWUnXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHpjaGVja2JveF90eXBlID0gWydjaGVja2JveCddO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgenNlbGVjdF90eXBlID0gWyd6dWlzZWxlY3RtdWx0aXBsZScsICd6dWlzZWxlY3RtdWx0aXBsZV9idXR0b24nLCAnc2VsZWN0J107XHJcbiAgcHJpdmF0ZSByZWFkb25seSBudWxsVmFsdWVEZWZhdWx0RGlzcGxheVRleHQgPSBcIi1cIjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNvdXJjZUFwaVNlcnZpY2U6IFJlc291cmNlQXBpU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHJpdmF0ZSB3ZWJBcGlTZXJ2aWNlOiBXZWJBcGlTZXJ2aWNlKSB7IH1cclxuXHJcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRhdGE6IFpGaWVsZCwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBjb25zdCBkZWZhdWx0TnVsbFZhbHVlID0gZGF0YS5OdWxsVmFsdWVEaXNwbGF5VGV4dCAhPSB1bmRlZmluZWQgPyBkYXRhLk51bGxWYWx1ZURpc3BsYXlUZXh0IDogdGhpcy5udWxsVmFsdWVEZWZhdWx0RGlzcGxheVRleHQ7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBvZihkZWZhdWx0TnVsbFZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy56ZGF0ZV90eXBlLmluY2x1ZGVzKGRhdGEuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuIG9mKGZvcm1hdERhdGUodmFsdWUsIHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXQoZGF0YS5UeXBlKSwgJ2VuX1VTJykgfHwgZGVmYXVsdE51bGxWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnpjaGVja2JveF90eXBlLmluY2x1ZGVzKGRhdGEuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuIG9mKHZhbHVlID8gXCJZZXNcIiA6IFwiTm9cIik7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLnpzZWxlY3RfdHlwZS5pbmNsdWRlcyhkYXRhLlR5cGUpKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdEZpZWxkID0geyBkYXRhOiB7fSwgaXRlbURhdGFGaWVsZDogJycsIGl0ZW1UZXh0RmllbGQ6ICcnLCBpdGVtVmFsdWVGaWVsZDogJycgfTtcclxuICAgICAgWkNvbXBvbmVudEhlbHBlci5zZXRTZWxlY3RNdWx0aXBsZVRleHRWYWx1ZShkYXRhLlNlbGVjdE9wdGlvbnMsIHNlbGVjdEZpZWxkKTtcclxuICAgICAgZ3JvdXAuX2RlYnVnID0gZ3JvdXAuX2RlYnVnIHx8IG5ldyBaR3JvdXAoKTtcclxuICAgICAgcmV0dXJuIHRoaXMubG9hZFpEYXRhKGRhdGEsIGdyb3VwLCBzZWxlY3RGaWVsZCkucGlwZShcclxuICAgICAgICBtYXAocmVzID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvbkRhdGEgPSByZXMuZGF0YVNldCB8fCByZXMgfHwgW107XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25WYWx1ZSA9IG9wdGlvbkRhdGEgPyBvcHRpb25EYXRhLmZpbmQobyA9PiBvW3NlbGVjdEZpZWxkLml0ZW1WYWx1ZUZpZWxkXSA9PSB2YWx1ZSkgOiBudWxsO1xyXG4gICAgICAgICAgaWYgKG9wdGlvblZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEl0ZW1UZW1wbGF0ZShvcHRpb25WYWx1ZSwgZGF0YSwgZ3JvdXAsIHNlbGVjdEZpZWxkLml0ZW1WYWx1ZUZpZWxkLCBzZWxlY3RGaWVsZC5pdGVtVGV4dEZpZWxkKSB8fCBkZWZhdWx0TnVsbFZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TnVsbFZhbHVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2YodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gVG8gcmVmYWN0b3JcclxuICBwcml2YXRlIGdldERhdGVUaW1lRm9ybWF0KGRhdGVUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGRhdGVUeXBlID09PSBcInp0aW1lXCIpIHtcclxuICAgICAgcmV0dXJuIFwiaGg6bW1cIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGVUeXBlID09PSBcInp1aWRhdGV0aW1lXCIpIHtcclxuICAgICAgcmV0dXJuIFwiZGQtTU1NLXl5eXkgaDptbSBhXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChkYXRlVHlwZSA9PT0gXCJ6dWl0aW1lXCIpIHtcclxuICAgICAgcmV0dXJuIFwiaGg6bW06c3NcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGVUeXBlID09PSBcInpzaG9ydGRhdGVcIikge1xyXG4gICAgICByZXR1cm4gXCJNTU0teXl5eVwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFwiZGQtTU1NLXl5eXlcIjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFpEYXRhKGRhdGE6IFpGaWVsZCwgZ3JvdXA6IFpHcm91cCwgc2VsZWN0RmllbGQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoZGF0YS5PcHRpb25SZXNvdXJjZVVSTCkge1xyXG4gICAgICBjb25zdCByZXNvdXJjZVVybCA9IHRoaXMucmVzb3VyY2VBcGlTZXJ2aWNlLmdldFVSTChcclxuICAgICAgICBkYXRhLk9wdGlvblJlc291cmNlVVJMXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBjb25zdCBmaWx0ZXJQYXJhbSA9IG5ldyBaU2VsZWN0UG9zdEFwaVBhcmFtcygpO1xyXG4gICAgICBmaWx0ZXJQYXJhbS5zb3J0cyA9IGRhdGEuT3B0aW9uU29ydDtcclxuICAgICAgZmlsdGVyUGFyYW0uY29sdW1ucyA9IGRhdGEuT3B0aW9uQ29sdW1ucztcclxuICAgICAgZmlsdGVyUGFyYW0uZmlsdGVycyA9IGRhdGEuT3B0aW9uRmlsdGVyO1xyXG5cclxuICAgICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuZ2V0RGF0YU9wdGlvbnMoXHJcbiAgICAgICAgZGF0YS5PcHRpb25OYW1lLFxyXG4gICAgICAgIGZpbHRlclBhcmFtLFxyXG4gICAgICAgIGdyb3VwLFxyXG4gICAgICAgIHJlc291cmNlVXJsLFxyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLFxyXG4gICAgICAgIHRoaXMud2ViQXBpU2VydmljZSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBvZih0aGlzLmdldEl0ZW1zRGF0YShkYXRhLCBncm91cCwgc2VsZWN0RmllbGQuaXRlbURhdGFGaWVsZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJdGVtc0RhdGEoZGF0YSwgZ3JvdXAsIGl0ZW1EYXRhRmllbGQpIHtcclxuICAgIGNvbnN0IG9wdGlvbk5hbWUgPSBkYXRhLk9wdGlvbk5hbWUgfHwgaXRlbURhdGFGaWVsZCB8fCAnZ3JvdXAuekRhdGEuJyArIGRhdGEuTmFtZTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEuU2VsZWN0T3B0aW9ucykgJiYgIWdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSkge1xyXG4gICAgICBncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gPSBkYXRhLlNlbGVjdE9wdGlvbnM7XHJcbiAgICAgIGl0ZW1EYXRhRmllbGQgPSBvcHRpb25OYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ3pEYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiBncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLnpEYXRhLicpKSB7XHJcbiAgICAgIHJldHVybiBncm91cC56RGF0YVtvcHRpb25OYW1lLnNsaWNlKDEyKV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZS5zdGFydHNXaXRoKCdncm91cC4nKSkge1xyXG4gICAgICByZXR1cm4gZ3JvdXBbb3B0aW9uTmFtZS5zbGljZSg2KV0gfHwgW107XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9uTmFtZSkge1xyXG4gICAgICByZXR1cm4gZ3JvdXBbb3B0aW9uTmFtZV0gfHwgW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEl0ZW1UZW1wbGF0ZShcclxuICAgIGl0ZW06IGFueSxcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBpdGVtVmFsdWVGaWVsZDogc3RyaW5nLFxyXG4gICAgaXRlbVRleHRGaWVsZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoZGF0YS5JdGVtVGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZ2V0VGVtcGxhdGVGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKHsgZ3JvdXA6IGdyb3VwIH0sIGRhdGEuSXRlbVRlbXBsYXRlKTtcclxuXHJcbiAgICAgIHJldHVybiBnZXRUZW1wbGF0ZUZ1bmMoe1xyXG4gICAgICAgIGl0ZW0sXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBncm91cCxcclxuICAgICAgICBpdGVtVmFsdWVGaWVsZCxcclxuICAgICAgICBpdGVtVGV4dEZpZWxkXHJcbiAgICAgIH0gYXMgWlNlbGVjdE11bHRpcGxlVGVtcGxhdGVQYXJhbXMpO1xyXG4gICAgfSBlbHNlIGlmIChpdGVtVGV4dEZpZWxkKSB7XHJcbiAgICAgIHJldHVybiBpdGVtW2l0ZW1UZXh0RmllbGRdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaXRlbSkuam9pbihcIiwgXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
130
+ }], ctorParameters: function () { return [{ type: i1.ResourceApiService }, { type: i1.CacheService }, { type: i1.WebApiService }, { type: i2.ZComponentService }]; } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemlucHV0LWNvbnRhaW5lci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemlucHV0LWNvbnRhaW5lci96aW5wdXQtY29udGFpbmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBbUQsZ0JBQWdCLEVBQVUsTUFBTSxFQUFpQyxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pLLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT3JDLE1BQU0sT0FBTyxZQUFZO0lBTXZCLFlBQW9CLGtCQUFzQyxFQUFVLFlBQTBCLEVBQVUsYUFBNEIsRUFBVSxXQUE4QjtRQUF4Six1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUwzSixlQUFVLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JGLG1CQUFjLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLENBQUMsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEYsZ0NBQTJCLEdBQUcsR0FBRyxDQUFDO0lBRXNJLENBQUM7SUFFakwsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUMvQyxJQUFJLENBQUMs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QWUsQ0FBQztnQkFDckIsSUFBSTtnQkFDSixJQUFJO2dCQUNKLEtBQUs7Z0JBQ0wsY0FBYztnQkFDZCxhQUFhO2FBQ21CLENBQUMsQ0FBQztTQUNyQzthQUFNLElBQUksYUFBYSxFQUFFO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzVCO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQzs7MEdBdElVLFlBQVk7d0dBQVosWUFBWTs0RkFBWixZQUFZO2tCQUp4QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsSUFBSTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UsIFJlc291cmNlQXBpU2VydmljZSwgV2ViQXBpU2VydmljZSwgWkNvbXBvbmVudEhlbHBlciwgWkZpZWxkLCBaR3JvdXAsIFpTZWxlY3RNdWx0aXBsZVRlbXBsYXRlUGFyYW1zLCBaU2VsZWN0UG9zdEFwaVBhcmFtcyB9IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgWkNvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlXCI7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogXCJpbnB1dFRleHRcIixcclxuICBwdXJlOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWklucHV0UGFyc2VyIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB6ZGF0ZV90eXBlID0gWyd6ZGF0ZScsICd6dGltZScsICd6ZGF0ZXRpbWUnLCAnenNob3J0ZGF0ZScsICd6dWlkYXRldGltZScsICd6dWl0aW1lJ107XHJcbiAgcHJpdmF0ZSByZWFkb25seSB6Y2hlY2tib3hfdHlwZSA9IFsnY2hlY2tib3gnXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHpzZWxlY3RfdHlwZSA9IFsnenVpc2VsZWN0bXVsdGlwbGUnLCAnenVpc2VsZWN0bXVsdGlwbGVfYnV0dG9uJywgJ3NlbGVjdCddO1xyXG4gIHByaXZhdGUgbnVsbFZhbHVlRGVmYXVsdERpc3BsYXlUZXh0ID0gXCItXCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSwgcHJpdmF0ZSBjb21wU2VydmljZTogWkNvbXBvbmVudFNlcnZpY2UpIHsgfVxyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIHRoaXMubnVsbFZhbHVlRGVmYXVsdERpc3BsYXlUZXh0ID0gZGF0YS5OdWxsVmFsdWVEaXNwbGF5VGV4dCAhPSB1bmRlZmluZWQgPyBkYXRhLk51bGxWYWx1ZURpc3BsYXlUZXh0IDogJy0nO1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gb2YodGhpcy5udWxsVmFsdWVEZWZhdWx0RGlzcGxheVRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnpkYXRlX3R5cGUuaW5jbHVkZXMoZGF0YS5UeXBlKSkge1xyXG4gICAgICByZXR1cm4gb2YodGhpcy50cmFuc2Zvcm1UaW1lVmFsdWUodmFsdWUsIGRhdGEpKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuemNoZWNrYm94X3R5cGUuaW5jbHVkZXMoZGF0YS5UeXBlKSkge1xyXG4gICAgICByZXR1cm4gb2YodmFsdWUgPyBcIlllc1wiIDogXCJOb1wiKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMuenNlbGVjdF90eXBlLmluY2x1ZGVzKGRhdGEuVHlwZSkpIHtcclxuICAgICAgY29uc3Qgc2VsZWN0RmllbGQgPSB7IGRhdGE6IHt9LCBpdGVtRGF0YUZpZWxkOiAnJywgaXRlbVRleHRGaWVsZDogJycsIGl0ZW1WYWx1ZUZpZWxkOiAnJyB9O1xyXG4gICAgICBaQ29tcG9uZW50SGVscGVyLnNldFNlbGVjdE11bHRpcGxlVGV4dFZhbHVlKGRhdGEuU2VsZWN0T3B0aW9ucywgc2VsZWN0RmllbGQpO1xyXG4gICAgICBncm91cC5fZGVidWcgPSBncm91cC5fZGVidWcgfHwgbmV3IFpHcm91cCgpO1xyXG4gICAgICByZXR1cm4gdGhpcy5sb2FkWkRhdGEoZGF0YSwgZ3JvdXAsIHNlbGVjdEZpZWxkKS5waXBlKFxyXG4gICAgICAgIG1hcChyZXMgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb3B0aW9uRGF0YSA9IHJlcy5kYXRhU2V0IHx8IHJlcyB8fCBbXTtcclxuICAgICAgICAgIGNvbnN0IG9wdGlvblZhbHVlID0gb3B0aW9uRGF0YSA/IG9wdGlvbkRhdGEuZmluZChvID0+IG9bc2VsZWN0RmllbGQuaXRlbVZhbHVlRmllbGRdID09IHZhbHVlKSA6IG51bGw7XHJcbiAgICAgICAgICBpZiAob3B0aW9uVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SXRlbVRlbXBsYXRlKG9wdGlvblZhbHVlLCBkYXRhLCBncm91cCwgc2VsZWN0RmllbGQuaXRlbVZhbHVlRmllbGQsIHNlbGVjdEZpZWxkLml0ZW1UZXh0RmllbGQpIHx8IHRoaXMubnVsbFZhbHVlRGVmYXVsdERpc3BsYXlUZXh0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm51bGxWYWx1ZURlZmF1bHREaXNwbGF5VGV4dDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9mKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtVGltZVZhbHVlKHZhbHVlOiBhbnksIGRhdGE6IFpGaWVsZCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdmFsID0gdmFsdWU7XHJcbiAgICBpZiAoZGF0YS5Jc0lnbm9yZVRpbWVab25lKSB7XHJcbiAgICAgIHZhbCA9IHRoaXMuY29tcFNlcnZpY2UubG9jYWxpemVEYXRlVGltZUJ5SWdub3JpbmdUaW1lWm9uZSh2YWx1ZSwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ybWF0RGF0ZSh2YWwsIHRoaXMuZ2V0RGF0ZVRpbWVGb3JtYXQoZGF0YS5UeXBlKSwgJ2VuX1VTJykgfHwgdGhpcy5udWxsVmFsdWVEZWZhdWx0RGlzcGxheVRleHQ7XHJcbiAgfVxyXG5cclxuICAvLyBUbyByZWZhY3RvclxyXG4gIHByaXZhdGUgZ2V0RGF0ZVRpbWVGb3JtYXQoZGF0ZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoZGF0ZVR5cGUgPT09IFwienRpbWVcIikge1xyXG4gICAgICByZXR1cm4gXCJoaDptbVwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0ZVR5cGUgPT09IFwienVpZGF0ZXRpbWVcIikge1xyXG4gICAgICByZXR1cm4gXCJkZC1NTU0teXl5eSBoOm1tIGFcIjtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGRhdGVUeXBlID09PSBcInp1aXRpbWVcIikge1xyXG4gICAgICByZXR1cm4gXCJoaDptbTpzc1wiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZGF0ZVR5cGUgPT09IFwienNob3J0ZGF0ZVwiKSB7XHJcbiAgICAgIHJldHVybiBcIk1NTS15eXl5XCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gXCJkZC1NTU0teXl5eVwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkWkRhdGEoZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwLCBzZWxlY3RGaWVsZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChkYXRhLk9wdGlvblJlc291cmNlVVJMKSB7XHJcbiAgICAgIGNvbnN0IHJlc291cmNlVXJsID0gdGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKFxyXG4gICAgICAgIGRhdGEuT3B0aW9uUmVzb3VyY2VVUkxcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGNvbnN0IGZpbHRlclBhcmFtID0gbmV3IFpTZWxlY3RQb3N0QXBpUGFyYW1zKCk7XHJcbiAgICAgIGZpbHRlclBhcmFtLnNvcnRzID0gZGF0YS5PcHRpb25Tb3J0O1xyXG4gICAgICBmaWx0ZXJQYXJhbS5jb2x1bW5zID0gZGF0YS5PcHRpb25Db2x1bW5zO1xyXG4gICAgICBmaWx0ZXJQYXJhbS5maWx0ZXJzID0gZGF0YS5PcHRpb25GaWx0ZXI7XHJcblxyXG4gICAgICByZXR1cm4gWkNvbXBvbmVudEhlbHBlci5nZXREYXRhT3B0aW9ucyhcclxuICAgICAgICBkYXRhLk9wdGlvbk5hbWUsXHJcbiAgICAgICAgZmlsdGVyUGFyYW0sXHJcbiAgICAgICAgZ3JvdXAsXHJcbiAgICAgICAgcmVzb3VyY2VVcmwsXHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UsXHJcbiAgICAgICAgdGhpcy53ZWJBcGlTZXJ2aWNlLFxyXG4gICAgICAgIGZhbHNlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG9mKHRoaXMuZ2V0SXRlbXNEYXRhKGRhdGEsIGdyb3VwLCBzZWxlY3RGaWVsZC5pdGVtRGF0YUZpZWxkKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEl0ZW1zRGF0YShkYXRhLCBncm91cCwgaXRlbURhdGFGaWVsZCkge1xyXG4gICAgY29uc3Qgb3B0aW9uTmFtZSA9IGRhdGEuT3B0aW9uTmFtZSB8fCBpdGVtRGF0YUZpZWxkIHx8ICdncm91cC56RGF0YS4nICsgZGF0YS5OYW1lO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YS5TZWxlY3RPcHRpb25zKSAmJiAhZ3JvdXAuekRhdGFbb3B0aW9uTmFtZS5zbGljZSgxMildKSB7XHJcbiAgICAgIGdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSA9IGRhdGEuU2VsZWN0T3B0aW9ucztcclxuICAgICAgaXRlbURhdGFGaWVsZCA9IG9wdGlvbk5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbk5hbWUuc3RhcnRzV2l0aCgnekRhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoNildIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbk5hbWUuc3RhcnRzV2l0aCgnZ3JvdXAuekRhdGEuJykpIHtcclxuICAgICAgcmV0dXJuIGdyb3VwLnpEYXRhW29wdGlvbk5hbWUuc2xpY2UoMTIpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lLnN0YXJ0c1dpdGgoJ2dyb3VwLicpKSB7XHJcbiAgICAgIHJldHVybiBncm91cFtvcHRpb25OYW1lLnNsaWNlKDYpXSB8fCBbXTtcclxuICAgIH1cclxuICAgIGlmIChvcHRpb25OYW1lKSB7XHJcbiAgICAgIHJldHVybiBncm91cFtvcHRpb25OYW1lXSB8fCBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SXRlbVRlbXBsYXRlKFxyXG4gICAgaXRlbTogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGl0ZW1WYWx1ZUZpZWxkOiBzdHJpbmcsXHJcbiAgICBpdGVtVGV4dEZpZWxkOiBzdHJpbmdcclxuICApIHtcclxuICAgIGlmIChkYXRhLkl0ZW1UZW1wbGF0ZSkge1xyXG4gICAgICBjb25zdCBnZXRUZW1wbGF0ZUZ1bmMgPSBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwoeyBncm91cDogZ3JvdXAgfSwgZGF0YS5JdGVtVGVtcGxhdGUpO1xyXG5cclxuICAgICAgcmV0dXJuIGdldFRlbXBsYXRlRnVuYyh7XHJcbiAgICAgICAgaXRlbSxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGdyb3VwLFxyXG4gICAgICAgIGl0ZW1WYWx1ZUZpZWxkLFxyXG4gICAgICAgIGl0ZW1UZXh0RmllbGRcclxuICAgICAgfSBhcyBaU2VsZWN0TXVsdGlwbGVUZW1wbGF0ZVBhcmFtcyk7XHJcbiAgICB9IGVsc2UgaWYgKGl0ZW1UZXh0RmllbGQpIHtcclxuICAgICAgcmV0dXJuIGl0ZW1baXRlbVRleHRGaWVsZF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhpdGVtKS5qb2luKFwiLCBcIik7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==