@dealpos-npm/ng-dealpos-library 2.0.1 → 2.0.3

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.
@@ -1,12 +1,21 @@
1
1
  export declare class Constants {
2
+ static emailRegex: RegExp;
3
+ static phoneNumberRegex: RegExp;
2
4
  static GuidEmpty: string;
3
5
  static DecimalMinValue: string;
4
6
  static InputLockTimeSpan: number;
5
7
  static MinDate: string;
6
8
  static MinTime: string;
7
9
  static StringFormat(msg: string, ...args: string[]): string;
10
+ static isMobileDevice: boolean;
8
11
  static IsNotEmpty(value: any): boolean;
9
12
  static IsEmpty(value: any): boolean;
13
+ /**
14
+ * Checks if a string is a valid GUID.
15
+ * @param guid - The string to be checked.
16
+ * @returns True if the string is a valid GUID, false otherwise.
17
+ */
18
+ static isGuid(guid: string): boolean;
10
19
  static containsOnlySpaces(str: string): boolean;
11
20
  static FilterByID(array: any[], id: any): any;
12
21
  static Months: {
@@ -54,6 +63,18 @@ export declare class Constants {
54
63
  */
55
64
  static formatNumber(total: number): string;
56
65
  static isToDay(date: Date): boolean;
66
+ /**
67
+ * set date time to latest time day
68
+ * @param date
69
+ * @returns
70
+ */
71
+ static setToLatestTime(date: Date): Date;
72
+ /**
73
+ * set date time to first time day
74
+ * @param date
75
+ * @returns
76
+ */
77
+ static setToFirstTime(date: Date): Date;
57
78
  static compare(a: number | string, b: number | string, isAsc: boolean): number;
58
79
  /**
59
80
  * generate serial as note with format ['serial'*Quantity]
@@ -80,6 +101,27 @@ export declare class Constants {
80
101
  lastDay: Date;
81
102
  };
82
103
  static setDateTime(time: string, date: Date): Date;
104
+ static isMaskingField(value?: string): boolean;
105
+ static generateMaskingField(configMaskingField?: string[]): {};
106
+ /**
107
+ * Check if JS API function is supported in a current browser
108
+ * @param api ex: structuredClone
109
+ */
110
+ static checkJSApiSupported(api: string): boolean;
111
+ /**
112
+ * copy of all elements of the original object.
113
+ * Changes made to the original object will not be reflected in the copy
114
+ * @param object
115
+ * @param type
116
+ */
117
+ static cloneObject(object: any): any;
118
+ /**
119
+ * format title for from filter to showing in title
120
+ * @param startDate
121
+ * @param endDate
122
+ * @returns
123
+ */
124
+ static formatTitleFromDate(startDate: Date, endDate: Date): string | null;
83
125
  }
84
126
  export declare function getImageInfo(src: string): Promise<unknown>;
85
127
  export declare class LocalDataKey {
@@ -1,4 +1,6 @@
1
1
  export class Constants {
2
+ static { this.emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; }
3
+ static { this.phoneNumberRegex = /^\d+$/; }
2
4
  static { this.GuidEmpty = "00000000-0000-0000-0000-000000000000"; }
3
5
  static { this.DecimalMinValue = "-7.922816251426434e+28"; }
4
6
  static { this.InputLockTimeSpan = 500; }
@@ -10,6 +12,7 @@ export class Constants {
10
12
  }
11
13
  return msg;
12
14
  }
15
+ static { this.isMobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)); }
13
16
  static IsNotEmpty(value) {
14
17
  if (value != "" &&
15
18
  !Constants.containsOnlySpaces(value) &&
@@ -34,6 +37,19 @@ export class Constants {
34
37
  return false;
35
38
  }
36
39
  }
40
+ /**
41
+ * Checks if a string is a valid GUID.
42
+ * @param guid - The string to be checked.
43
+ * @returns True if the string is a valid GUID, false otherwise.
44
+ */
45
+ static isGuid(guid) {
46
+ const regexExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi;
47
+ let isGuid = false;
48
+ if (guid) {
49
+ isGuid = regexExp.test(guid);
50
+ }
51
+ return isGuid;
52
+ }
37
53
  // check whether string only contains blank space
38
54
  static containsOnlySpaces(str) {
39
55
  return /^\s*$/.test(str);
@@ -186,6 +202,26 @@ export class Constants {
186
202
  }
187
203
  return false;
188
204
  }
205
+ /**
206
+ * set date time to latest time day
207
+ * @param date
208
+ * @returns
209
+ */
210
+ static setToLatestTime(date) {
211
+ const dateLastTime = new Date(date);
212
+ dateLastTime.setHours(23, 59, 59);
213
+ return dateLastTime;
214
+ }
215
+ /**
216
+ * set date time to first time day
217
+ * @param date
218
+ * @returns
219
+ */
220
+ static setToFirstTime(date) {
221
+ const dateFirstTime = new Date(date);
222
+ dateFirstTime.setHours(0, 0, 0);
223
+ return dateFirstTime;
224
+ }
189
225
  static compare(a, b, isAsc) {
190
226
  return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
191
227
  }
@@ -249,6 +285,72 @@ export class Constants {
249
285
  newDate.setMinutes(parseInt(times[1]));
250
286
  return newDate;
251
287
  }
288
+ static isMaskingField(value = "") {
289
+ const hasQuestionMark = value.includes("?");
290
+ return hasQuestionMark;
291
+ }
292
+ static generateMaskingField(configMaskingField = []) {
293
+ let maskingFields = {};
294
+ configMaskingField
295
+ .forEach((field, i) => {
296
+ field = field.split(' ')?.join('');
297
+ maskingFields = { ...maskingFields, [field]: true };
298
+ });
299
+ return maskingFields;
300
+ }
301
+ /**
302
+ * Check if JS API function is supported in a current browser
303
+ * @param api ex: structuredClone
304
+ */
305
+ static checkJSApiSupported(api) {
306
+ let isSupported;
307
+ if (api in window) {
308
+ isSupported = true;
309
+ }
310
+ else {
311
+ isSupported = false;
312
+ }
313
+ return isSupported;
314
+ }
315
+ /**
316
+ * copy of all elements of the original object.
317
+ * Changes made to the original object will not be reflected in the copy
318
+ * @param object
319
+ * @param type
320
+ */
321
+ static cloneObject(object) {
322
+ let newObject;
323
+ if (this.checkJSApiSupported('structuredClone')) {
324
+ newObject = structuredClone(object);
325
+ }
326
+ else {
327
+ newObject = JSON.parse(JSON.stringify(object));
328
+ }
329
+ return newObject;
330
+ }
331
+ /**
332
+ * format title for from filter to showing in title
333
+ * @param startDate
334
+ * @param endDate
335
+ * @returns
336
+ */
337
+ static formatTitleFromDate(startDate, endDate) {
338
+ let format = null;
339
+ const startDateObj = new Date(startDate);
340
+ const endDateObj = new Date(endDate);
341
+ if (startDateObj.getDate() != endDateObj.getDate()) {
342
+ format = "d";
343
+ }
344
+ // set format only days on same month
345
+ if (startDateObj.getMonth() != endDateObj.getMonth()) {
346
+ format = "d MMM";
347
+ }
348
+ // set full format when different year
349
+ if (startDateObj.getFullYear() != endDateObj.getFullYear()) {
350
+ format = "d MMM yyyy";
351
+ }
352
+ return format;
353
+ }
252
354
  }
253
355
  export function getImageInfo(src) {
254
356
  return new Promise((resolve, reject) => {
@@ -322,4 +424,4 @@ export class LocalDataKey {
322
424
  static { this.ForecastData = "Inventory/Daystozero"; }
323
425
  static { this.ForecastLoader = "InventoryLoader/Daystozero"; }
324
426
  }
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L2NvbnN0YW50cy9zcmMvQ29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO2FBQ1gsY0FBUyxHQUFHLHNDQUFzQyxDQUFDO2FBQ25ELG9CQUFlLEdBQUcsd0JBQXdCLENBQUM7YUFDM0Msc0JBQWlCLEdBQUcsR0FBRyxDQUFDO2FBQ3hCLFlBQU8sR0FBRyxxQkFBcUIsQ0FBQzthQUNoQyxZQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBYztRQUM5QyxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBVTtRQUN4QixJQUNJLEtBQUssSUFBSSxFQUFFO1lBQ1gsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1lBQ3BDLEtBQUssSUFBSSxTQUFTLENBQUMsU0FBUztZQUM1QixLQUFLLElBQUksU0FBUztZQUNsQixLQUFLLElBQUksSUFBSSxFQUNmLENBQUM7WUFDQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFVO1FBQ3JCLElBQ0ksS0FBSyxJQUFJ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LGdDQUFnQyxDQUFDO2FBQzVELHFCQUFnQixHQUFHLDZCQUE2QixDQUFDO0lBRXhELFlBQVk7YUFDTCxpQkFBWSxHQUFHLHNCQUFzQixDQUFDO2FBQ3RDLG1CQUFjLEdBQUcsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcclxuICAgIHN0YXRpYyBHdWlkRW1wdHkgPSBcIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiO1xyXG4gICAgc3RhdGljIERlY2ltYWxNaW5WYWx1ZSA9IFwiLTcuOTIyODE2MjUxNDI2NDM0ZSsyOFwiO1xyXG4gICAgc3RhdGljIElucHV0TG9ja1RpbWVTcGFuID0gNTAwO1xyXG4gICAgc3RhdGljIE1pbkRhdGUgPSBcIjAwMDEtMDEtMDFUMDA6MDA6MDBcIjtcclxuICAgIHN0YXRpYyBNaW5UaW1lID0gXCIwMDowMDowMFwiO1xyXG4gICAgc3RhdGljIFN0cmluZ0Zvcm1hdChtc2c6IHN0cmluZywgLi4uYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGZvciAobGV0IF9pID0gMDsgX2kgPCBhcmdzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICBtc2cgPSBtc2cucmVwbGFjZShgeyR7X2l9fWAsIGFyZ3NbX2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1zZztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgSXNOb3RFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBcIlwiICYmXHJcbiAgICAgICAgICAgICFDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBDb25zdGFudHMuR3VpZEVtcHR5ICYmXHJcbiAgICAgICAgICAgIHZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBudWxsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIElzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgPT0gXCJcIiB8fFxyXG4gICAgICAgICAgICBDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSBDb25zdGFudHMuR3VpZEVtcHR5XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY2hlY2sgd2hldGhlciBzdHJpbmcgb25seSBjb250YWlucyBibGFuayBzcGFjZVxyXG4gICAgc3RhdGljIGNvbnRhaW5zT25seVNwYWNlcyhzdHI6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiAvXlxccyokLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEZpbHRlckJ5SUQoYXJyYXk6IGFueVtdLCBpZDogYW55KTogYW55IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gYXJyYXkuZmlsdGVyKCh4KSA9PiB4LklEID09IGlkKTtcclxuICAgICAgICAgICAgaWYgKGxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RbMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChleCkgeyB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIE1vbnRoczogeyBJRDogbnVtYmVyLCBMYWJlbDogc3RyaW5nIH1bXSA9IFtcclxuICAgICAgICB7IElEOiAxLCBMYWJlbDogXCJKYW51YXJ5XCIgfSxcclxuICAgICAgICB7IElEOiAyLCBMYWJlbDogXCJGZWJydWFyeVwiIH0sXHJcbiAgICAgICAgeyBJRDogMywgTGFiZWw6IFwiTWFyY2hcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDQsIExhYmVsOiBcIkFwcmlsXCIgfSxcclxuICAgICAgICB7IElEOiA1LCBMYWJlbDogXCJNYXlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDYsIExhYmVsOiBcIkp1bmVcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDcsIExhYmVsOiBcIkp1bHlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDgsIExhYmVsOiBcIkF1Z3VzdFwiIH0sXHJcbiAgICAgICAgeyBJRDogOSwgTGFiZWw6IFwiU2VwdGVtYmVyXCIgfSxcclxuICAgICAgICB7IElEOiAxMCwgTGFiZWw6IFwiT2N0b2JlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTEsIExhYmVsOiBcIk5vdmVtYmVyXCIgfSxcclxuICAgICAgICB7IElEOiAxMiwgTGFiZWw6IFwiRGVjZW1iZXJcIiB9LFxyXG4gICAgXTtcclxuXHJcbiAgICBzdGF0aWMgR2VuZXJhdGVZZWFycyhjdXJyWWVhcjogYW55LCBsZW5ndGg6IGFueSwgSXNQcmV2aW91czogYW55KTogYW55W10ge1xyXG4gICAgICAgIGxldCBtdWx0aXBsaWVyID0gLTE7XHJcbiAgICAgICAgaWYgKGxlbmd0aCA9PSB1bmRlZmluZWQgfHwgbGVuZ3RoID09IG51bGwpIGxlbmd0aCA9IDExO1xyXG4gICAgICAgIGlmIChJc1ByZXZpb3VzID09IHVuZGVmaW5lZCB8fCBJc1ByZXZpb3VzID09IG51bGwgfHwgIUlzUHJldmlvdXMpXHJcbiAgICAgICAgICAgIG11bHRpcGxpZXIgPSAxO1xyXG5cclxuICAgICAgICBjb25zdCB5ZWFycyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgeWVhcnMucHVzaChjdXJyWWVhciArIGkgKiBtdWx0aXBsaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHllYXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVmYWN0b3IgZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSBkYXRlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBEYXRlT25seShkYXRlPzogRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZShkYXRlKS50b0RhdGVTdHJpbmcoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGphdmFzY3JpcHQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBpbiBkYXlzXHJcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIFxyXG4gICAgICogQHBhcmFtIGVuZERhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBkaWZmZXJlbnRJbkRheXMoXHJcbiAgICAgICAgc3RhcnREYXRlOiBEYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IERhdGVcclxuICAgICk6IG51bWJlciB7XHJcbiAgICAgICAgLy8gVG8gY2FsY3VsYXRlIHRoZSB0aW1lIGRpZmZlcmVuY2Ugb2YgdHdvIGRhdGVzXHJcbiAgICAgICAgbGV0IERpZmZlcmVuY2VfSW5fVGltZSA9IGVuZERhdGUuZ2V0VGltZSgpIC0gc3RhcnREYXRlLmdldFRpbWUoKTtcclxuXHJcbiAgICAgICAgLy8gVG8gY2FsY3VsYXRlIHRoZSBuby4gb2YgZGF5cyBiZXR3ZWVuIHR3byBkYXRlc1xyXG4gICAgICAgIGxldCBEaWZmZXJlbmNlX0luX0RheXMgPSBNYXRoLmZsb29yKFxyXG4gICAgICAgICAgICBEaWZmZXJlbmNlX0luX1RpbWUgLyAoMTAwMCAqIDM2MDAgKiAyNClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4gRGlmZmVyZW5jZV9Jbl9EYXlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGphdmFzY3JpcHQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRlcyBpbiBtaW51dGVzXHJcbiAgICAgKiBAcGFyYW0gZHQxIFxyXG4gICAgICogQHBhcmFtIGR0MiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG1pbnV0ZXNEaWZmKGR0MTogRGF0ZSwgZHQyOiBEYXRlKSB7XHJcblxyXG4gICAgICAgIGxldCBkaWZmTWluID0gKGR0Mi5nZXRUaW1lKCkgLSBkdDEuZ2V0VGltZSgpKSAvIDYwMDAwO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZk1pbik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gaG91cnMgamF2YXNjcmlwdFxyXG4gICAgICogQHBhcmFtIGR0MSBcclxuICAgICAqIEBwYXJhbSBkdDIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBob3Vyc0RpZmYoZHQxOiBEYXRlLCBkdDI6IERhdGUpIHtcclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIHRpbWUgZGlmZmVyZW5jZSBvZiB0d28gZGF0ZXMgSmF2YVNjcmlwdFxyXG4gICAgICAgIGxldCBkaWZmVGltZSA9IChkdDIuZ2V0VGltZSgpIC0gZHQxLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGRheXMgYmV0d2VlbiBob3VycyBkYXRlcyBqYXZhc2NyaXB0XHJcbiAgICAgICAgbGV0IGhvdXJzRGlmZiA9IGRpZmZUaW1lIC8gKDEwMDAgKiAzNjAwKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoaG91cnNEaWZmLnRvRml4ZWQoMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlIFVuaXF1ZSBJZGVudGlmaWVyIGluIHRoZSBDbGllbnQgU2lkZSBlcXVpdmFsZW50IHRvIEMjIE5ld0d1aWQoKVxyXG4gICAgICogQHJldHVybnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBHdWlkX05ld0d1aWQoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgZHQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICBsZXQgdXVpZCA9IFwieHh4eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4XCIucmVwbGFjZShcclxuICAgICAgICAgICAgL1t4eV0vZyxcclxuICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgICAgIHZhciByID0gKGR0ICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcclxuICAgICAgICAgICAgICAgIGR0ID0gTWF0aC5mbG9vcihkdCAvIDE2KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoYyA9PSBcInhcIiA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHV1aWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwYXJzZUp3dCh0b2tlbjogc3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGJhc2U2NFVybCA9IHRva2VuLnNwbGl0KFwiLlwiKVsxXTtcclxuICAgICAgICB2YXIgYmFzZTY0ID0gYmFzZTY0VXJsLnJlcGxhY2UoLy0vZywgXCIrXCIpLnJlcGxhY2UoL18vZywgXCIvXCIpO1xyXG4gICAgICAgIHZhciBqc29uUGF5bG9hZCA9IGRlY29kZVVSSUNvbXBvbmVudChcclxuICAgICAgICAgICAgYXRvYihiYXNlNjQpXHJcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCJcIilcclxuICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCIlXCIgKyAoXCIwMFwiICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5qb2luKFwiXCIpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblBheWxvYWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbnVtYmVyT25seShldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNoYXJDb2RlID0gKGV2ZW50LndoaWNoKSA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcclxuICAgICAgICBpZiAoY2hhckNvZGUgPiAzMSAmJiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZm9ybWF0IG51bWJlciB0byB1bml0XHJcbiAgICAgKiBAcGFyYW0gdG90YWwgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBmb3JtYXROdW1iZXIodG90YWw6IG51bWJlcikge1xyXG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgbGV0IHVuaXQgPSBcIlwiO1xyXG4gICAgICAgIGxldCBhYnNOdW1iZXIgPSBNYXRoLmFicyh0b3RhbCk7XHJcbiAgICAgICAgaWYgKGFic051bWJlciA+IDk5OSAmJiBhYnNOdW1iZXIgPCAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIktcIjtcclxuICAgICAgICAgICAgdmFsdWUgPSAoYWJzTnVtYmVyIC8gMTAwMCkudG9GaXhlZCgwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFic051bWJlciA+PSAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHVuaXQgPSBcIk1cIjtcclxuICAgICAgICAgICAgdmFsdWUgPSAoYWJzTnVtYmVyIC8gMTAwMDAwMCkudG9GaXhlZCgwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGFic051bWJlciA8IDkwMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGFic051bWJlci50b1N0cmluZygpOyAvL1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodG90YWwgPCAwKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gXCItXCIgKyB2YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIikgKyB1bml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNUb0RheShkYXRlOiBEYXRlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgbm93LnNldEhvdXJzKDAsIDAsIDAsIDApO1xyXG4gICAgICAgICAgICByZXR1cm4gbm93LmdldFRpbWUoKSA9PSBkYXRlLmdldFRpbWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjb21wYXJlKGE6IG51bWJlciB8IHN0cmluZywgYjogbnVtYmVyIHwgc3RyaW5nLCBpc0FzYzogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIChhIDwgYiA/IC0xIDogMSkgKiAoaXNBc2MgPyAxIDogLTEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2VuZXJhdGUgc2VyaWFsIGFzIG5vdGUgd2l0aCBmb3JtYXQgWydzZXJpYWwnKlF1YW50aXR5XVxyXG4gICAgICogZXg6IFswMEFTMzIqNiwgMDA4OUFdXHJcbiAgICAgKiBAcGFyYW0gc2VyaWFscyBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlU2VyaWFsYXNOb3RlKHNlcmlhbHM6IGFueVtdID0gW10pIHtcclxuICAgICAgICBsZXQgc2VyaWFsTm90ZTogc3RyaW5nID0gJyc7XHJcbiAgICAgICAgaWYgKHNlcmlhbHMgJiYgc2VyaWFscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBzZXJpYWxBU1N0cmluZyA9IHNlcmlhbHMubWFwKChzZXJpYWwsIGkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtpID4gMCA/IFwiIFwiIDogXCJcIn0ke3NlcmlhbC5OdW1iZXJ9JHsoc2VyaWFsLlF1YW50aXR5ID4gMSB8fCBzZXJpYWwuUXVhbnRpdHkgPCAwKSA/IFwiKlwiICsgc2VyaWFsLlF1YW50aXR5IDogXCJcIn1gO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgc2VyaWFsTm90ZSA9IGBbJHtzZXJpYWxBU1N0cmluZ31dYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlcmlhbE5vdGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXRlc0luUmFuZ2Uoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogRGF0ZVtdIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3RhcnREYXRlLmdldFRpbWUoKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGVzID0gW107XHJcblxyXG4gICAgICAgIHdoaWxlIChkYXRlIDw9IGVuZERhdGUpIHtcclxuICAgICAgICAgICAgZGF0ZXMucHVzaChuZXcgRGF0ZShkYXRlKSk7XHJcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGRhdGVzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcGFyYW0gZGF5c0JlZm9yZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERheXNCZWZvcmUoZGF0ZTogRGF0ZSwgZGF5c0JlZm9yZTogbnVtYmVyKTogRGF0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSAtIGRheXNCZWZvcmUpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2V0IGZpcnN0IGFuZCBsYXN0IGRheSBieSBtb250aCBhbmQgeWVhclxyXG4gICAgICogQHBhcmFtIG1vbnRoIFxyXG4gICAgICogQHBhcmFtIHllYXIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRSYW5nZURhdGUobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgZGF0ZS5zZXRNb250aChtb250aCk7XHJcbiAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcih5ZWFyKTtcclxuICAgICAgICBsZXQgZmlyc3REYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSAtIDEsIDEpO1xyXG4gICAgICAgIGxldCBsYXN0RGF5ID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDApO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpcnN0RGF5OiBmaXJzdERheSxcclxuICAgICAgICAgICAgbGFzdERheTogbGFzdERheVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHNldERhdGVUaW1lKHRpbWU6IHN0cmluZywgZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGxldCBuZXdEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICBuZXdEYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aW1lcyA9IHRpbWUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgIG5ld0RhdGUuc2V0SG91cnMocGFyc2VJbnQodGltZXNbMF0pKTtcclxuICAgICAgICBuZXdEYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQodGltZXNbMV0pKTtcclxuICAgICAgICByZXR1cm4gbmV3RGF0ZTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlSW5mbyhzcmM6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWFnZS5zcmMgPSBzcmM7XHJcbiAgICAgICAgaW1hZ2VcclxuICAgICAgICAgICAgLmRlY29kZSgpXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGltZzogc3JjLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1hZ2UuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBJbWFnZSBsb2FkIGVycm9yIGZvciAke3NyY31gKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIExvY2FsRGF0YUtleSB7XHJcbiAgICBzdGF0aWMgT2ZmbGluZVF1ZXJ5TW9kZSA9IFwiT2ZmbGluZVF1ZXJ5TW9kZVwiO1xyXG4gICAgc3RhdGljIFBPU1N0b3JhZ2UgPSBcIlBPU1N0b3JhZ2VcIjtcclxuICAgIHN0YXRpYyBQcm9kdWN0cyA9IFwiUHJvZHVjdHNcIjtcclxuICAgIHN0YXRpYyBDdXN0b21lcnMgPSBcIkN1c3RvbWVyc1wiO1xyXG4gICAgc3RhdGljIE91dGxldFByaWNlcyA9IFwiT3V0bGV0UHJpY2VzXCI7XHJcbiAgICBzdGF0aWMgT3V0bGV0ID0gXCJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXJrcyA9IFwiUGFya3NcIjtcclxuICAgIHN0YXRpYyBPcmRlcnMgPSBcIk9yZGVyc1wiO1xyXG4gICAgc3RhdGljIEZhaWxlZE9yZGVycyA9IFwiRmFpbGVkT3JkZXJzXCI7XHJcbiAgICBzdGF0aWMgQ29tcGxldGVkT3JkZXJzID0gXCJDb21wbGV0ZWRPcmRlcnNcIjtcclxuICAgIHN0YXRpYyBOZXdDdXN0b21lcnMgPSBcIk5ld0N1c3RvbWVyc1wiO1xyXG5cclxuICAgIHN0YXRpYyBHZXRSZXdhcmRCeVByb21vdGlvbklEID0gXCIvQVBJL1BPUy9HZXRSZXdhcmRCeVByb21vdGlvbklEXCI7XHJcbiAgICBzdGF0aWMgR2V0TGlzdFByb21vdGlvbiA9IFwiL0FQSS9QT1MvUHJvbW90aW9uXCI7XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlR29wYXlRckNvZGUgPSBcIi9BUEkvUE9TL0dlbmVyYXRlR29QYXlRckNvZGVcIjtcclxuICAgIHN0YXRpYyBHZW5lcmF0ZUVtcGF0S2FsaVFyQ29kZSA9IFwiL0FQSS9QT1MvR2VuZXJhdGVFbXBhdEthbGlRckNvZGVcIjtcclxuXHJcbiAgICBzdGF0aWMgVmVyaWZ5UGF5bWVudCA9IFwiL0FQSS9QYXltZW50Tm90aWZpY2F0aW9uL1ZlcmlmeVBheW1lbnRcIjtcclxuICAgIHN0YXRpYyBQYXlXaXRoT3ZvID0gXCIvQVBJL1BPUy9QYXlXaXRoT3ZvXCI7XHJcblxyXG4gICAgc3RhdGljIEludm9pY2VBNCA9IFwiL0FQSS9QcmludC9JbnZvaWNlXCI7XHJcbiAgICBzdGF0aWMgVXBsb2FkQ3N2ID0gXCIvQVBJL1BPUy9VcGxvYWRDc3ZcIjtcclxuICAgIHN0YXRpYyBVcGxvYWRDc3ZCdXkgPSBcIi9BUEkvQnV5L1VwbG9hZENzdlwiO1xyXG5cclxuICAgIHN0YXRpYyBHZW5lcmF0ZUNvbW1pc3Npb24gPSBcIi9BUEkvVHJhbnNhY3Rpb24vR2V0Q29tbWlzc2lvblwiO1xyXG5cclxuICAgIHN0YXRpYyBJbnZvaWNlSW5mbyA9IFwiL2FwaS9JbnZvaWNlL0ludm9pY2VJbmZvXCI7XHJcbiAgICBzdGF0aWMgR2VuZXJhdGVMaW5rID0gXCIvQVBJL1BheU5vdy9HZW5lcmF0ZUxpbmtcIjtcclxuXHJcbiAgICAvL0J1eVxyXG4gICAgc3RhdGljIExvYWRGb3JtQnV5ID0gXCIvQVBJL0J1eTIvTG9hZFwiO1xyXG4gICAgc3RhdGljIEJ1eUdldE91dGxldEluZm8gPSBcIi9BUEkvQnV5Mi9HZXRPdXRsZXRJbmZvXCI7XHJcbiAgICBzdGF0aWMgQnV5R2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvQnV5L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgQnV5R2V0RGF0YUJ5SUQgPSBcIi9BUEkvQnV5Mi9HZXREYXRhQnlJRFwiO1xyXG4gICAgc3RhdGljIEdldFF1aWNrS2V5ID0gXCIvQVBJL2NhdGFsb2cvcHJvZHVjdC9HZXRRdWlja0tleVwiO1xyXG4gICAgc3RhdGljIEdldFByaW50VGVtcGxhdGVJRCA9IFwiL0FQSS9CdXkvR2V0UHJpbnRUZW1wbGF0ZUlEXCI7XHJcbiAgICBzdGF0aWMgR2V0VmFyaWFudFN0b2NrQnlJRCA9IFwiL0FQSS9jYXRhbG9nL3ZhcmlhbnQvR2V0SW52ZW50b3J5QnlWYXJpYW50SURcIjtcclxuICAgIHN0YXRpYyBHZXRTdXBwbGllckludm9pY2UgPSBcIi9BUEkvQnV5L0dldFN1cHBsaWVySW52b2ljZVJldHVyXCI7XHJcbiAgICBzdGF0aWMgR2V0U3VwcGxpZXJEVE8gPSBcIi9BUEkvQ29udGFjdC9HZXRTdXBwbGllckRUT1wiO1xyXG5cclxuICAgIC8vREVMSVZFUllcclxuICAgIHN0YXRpYyBMb2FkRm9ybURlbGl2ZXJ5ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXJMb2FkZXIvTG9hZEZvcm1cIjtcclxuICAgIHN0YXRpYyBEZWxpdmVyeUdlbmVyYXRlTnVtYmVyID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBVcGRhdGVDb3VyaWVyTGlzdCA9IFwiL0FQSS9UcmFuc2Zlck9yZGVyL1VwZGF0ZUNvdXJpZXJMaXN0XCI7XHJcbiAgICBzdGF0aWMgU3VibWl0T3V0bGV0RGVsaXZlcnkgPSBcIi9BUEkvVHJhbnNmZXJPcmRlci9TdWJtaXRPcmRlclwiO1xyXG4gICAgc3RhdGljIENsZWFyT3V0bGV0ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvQ2xlYXJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXltZW50TGlzdFNvcnRpbmcgPSBcIi9BUEkvU2V0dXAvU29ydFBheW1lbnRNZXRob2RcIlxyXG4gICAgc3RhdGljIFRheExpc3RTb3J0aW5nID0gXCIvQVBJL1NldHVwL1NvcnRUYXhcIlxyXG5cclxuICAgIC8vIEVTVElNQVRFXHJcbiAgICBzdGF0aWMgTG9hZEZvcm1Fc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEVzdGltYXRlR2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvRXN0aW1hdGUvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBTdWJtaXRFc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9TdWJtaXRPcmRlclwiO1xyXG5cclxuICAgIC8vIEFESlVTVE1FTlRcclxuICAgIHN0YXRpYyBMb2FkRm9ybUFkanVzdG1lbnQgPSBcIi9BUEkvQWRqdXN0bWVudC9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEFkanVzdG1lbnRHZW5lcmF0ZU51bWJlciA9IFwiL0FQSS9BZGp1c3RtZW50L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgU3VibWl0QWRqdXN0bWVudCA9IFwiL0FQSS9BZGp1c3RtZW50L1N1Ym1pdE9yZGVyXCI7XHJcblxyXG4gICAgLy8gSU5WRU5UT1JZXHJcbiAgICBzdGF0aWMgRm9yZWNhc3REYXRhID0gXCJJbnZlbnRvcnkvRGF5c3RvemVyb1wiO1xyXG4gICAgc3RhdGljIEZvcmVjYXN0TG9hZGVyID0gXCJJbnZlbnRvcnlMb2FkZXIvRGF5c3RvemVyb1wiO1xyXG59XHJcbiJdfQ==
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L2NvbnN0YW50cy9zcmMvQ29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxTQUFTO2FBQ1gsZUFBVSxHQUFHLGtEQUFrRCxDQUFBO2FBQy9ELHFCQUFnQixHQUFHLE9BQU8sQ0FBQTthQUMxQixjQUFTLEdBQUcsc0NBQXNDLENBQUM7YUFDbkQsb0JBQWUsR0FBRyx3QkFBd0IsQ0FBQzthQUMzQyxzQkFBaUIsR0FBRyxHQUFHLENBQUM7YUFDeEIsWUFBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ2hDLFlBQU8sR0FBRyxVQUFVLENBQUM7SUFDNUIsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFjO1FBQzlDLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDdEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO2FBQ00sbUJBQWMsR0FBRyxDQUFDLGdFQUFnRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUVySCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQVU7UUFDeEIsSUFDSSxLQUFLLElBQUksRUFBRTtZQUNYLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLElBQUksU0FBUyxDQUFDLFNBQVM7WUFDNUIsS0FBSyxJQUFJLFNBQVM7WUFDbEIsS0FBSyxJQUFJLElBQUksRUFDZixDQUFDO1lB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bUIsR0FBRyw4Q0FBOEMsQ0FBQzthQUNyRSx1QkFBa0IsR0FBRyxrQ0FBa0MsQ0FBQzthQUN4RCxtQkFBYyxHQUFHLDZCQUE2QixDQUFDO0lBRXRELFVBQVU7YUFDSCxxQkFBZ0IsR0FBRyxtQ0FBbUMsQ0FBQzthQUN2RCwyQkFBc0IsR0FBRyxtQ0FBbUMsQ0FBQzthQUM3RCxzQkFBaUIsR0FBRyxzQ0FBc0MsQ0FBQzthQUMzRCx5QkFBb0IsR0FBRyxnQ0FBZ0MsQ0FBQzthQUN4RCxnQkFBVyxHQUFHLGdDQUFnQyxDQUFDO2FBQy9DLHVCQUFrQixHQUFHLDhCQUE4QixDQUFBO2FBQ25ELG1CQUFjLEdBQUcsb0JBQW9CLENBQUE7SUFFNUMsV0FBVzthQUNKLHFCQUFnQixHQUFHLHdCQUF3QixDQUFDO2FBQzVDLDJCQUFzQixHQUFHLDhCQUE4QixDQUFDO2FBQ3hELG1CQUFjLEdBQUcsMkJBQTJCLENBQUM7SUFFcEQsYUFBYTthQUNOLHVCQUFrQixHQUFHLDBCQUEwQixDQUFDO2FBQ2hELDZCQUF3QixHQUFHLGdDQUFnQyxDQUFDO2FBQzVELHFCQUFnQixHQUFHLDZCQUE2QixDQUFDO0lBRXhELFlBQVk7YUFDTCxpQkFBWSxHQUFHLHNCQUFzQixDQUFDO2FBQ3RDLG1CQUFjLEdBQUcsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcclxuICAgIHN0YXRpYyBlbWFpbFJlZ2V4ID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvXHJcbiAgICBzdGF0aWMgcGhvbmVOdW1iZXJSZWdleCA9IC9eXFxkKyQvXHJcbiAgICBzdGF0aWMgR3VpZEVtcHR5ID0gXCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIjtcclxuICAgIHN0YXRpYyBEZWNpbWFsTWluVmFsdWUgPSBcIi03LjkyMjgxNjI1MTQyNjQzNGUrMjhcIjtcclxuICAgIHN0YXRpYyBJbnB1dExvY2tUaW1lU3BhbiA9IDUwMDtcclxuICAgIHN0YXRpYyBNaW5EYXRlID0gXCIwMDAxLTAxLTAxVDAwOjAwOjAwXCI7XHJcbiAgICBzdGF0aWMgTWluVGltZSA9IFwiMDA6MDA6MDBcIjtcclxuICAgIHN0YXRpYyBTdHJpbmdGb3JtYXQobXNnOiBzdHJpbmcsIC4uLmFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICBmb3IgKGxldCBfaSA9IDA7IF9pIDwgYXJncy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgbXNnID0gbXNnLnJlcGxhY2UoYHske19pfX1gLCBhcmdzW19pXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgaXNNb2JpbGVEZXZpY2UgPSAoL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKTtcclxuXHJcbiAgICBzdGF0aWMgSXNOb3RFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBcIlwiICYmXHJcbiAgICAgICAgICAgICFDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBDb25zdGFudHMuR3VpZEVtcHR5ICYmXHJcbiAgICAgICAgICAgIHZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICB2YWx1ZSAhPSBudWxsXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIElzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdmFsdWUgPT0gXCJcIiB8fFxyXG4gICAgICAgICAgICBDb25zdGFudHMuY29udGFpbnNPbmx5U3BhY2VzKHZhbHVlKSB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgdmFsdWUgPT0gbnVsbCB8fFxyXG4gICAgICAgICAgICB2YWx1ZSA9PSBDb25zdGFudHMuR3VpZEVtcHR5XHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIEdVSUQuXHJcbiAgICAgKiBAcGFyYW0gZ3VpZCAtIFRoZSBzdHJpbmcgdG8gYmUgY2hlY2tlZC5cclxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIEdVSUQsIGZhbHNlIG90aGVyd2lzZS5cclxuICAgICAqL1xyXG4gICAgc3RhdGljIGlzR3VpZChndWlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleEV4cCA9IC9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC9naTtcclxuICAgICAgICBsZXQgaXNHdWlkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGd1aWQpIHtcclxuICAgICAgICAgICAgaXNHdWlkID0gcmVnZXhFeHAudGVzdChndWlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGlzR3VpZDtcclxuICAgIH1cclxuICAgIC8vIGNoZWNrIHdoZXRoZXIgc3RyaW5nIG9ubHkgY29udGFpbnMgYmxhbmsgc3BhY2VcclxuICAgIHN0YXRpYyBjb250YWluc09ubHlTcGFjZXMoc3RyOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gL15cXHMqJC8udGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBGaWx0ZXJCeUlEKGFycmF5OiBhbnlbXSwgaWQ6IGFueSk6IGFueSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGFycmF5LmZpbHRlcigoeCkgPT4geC5JRCA9PSBpZCk7XHJcbiAgICAgICAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0WzBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXgpIHsgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBNb250aHM6IHsgSUQ6IG51bWJlciwgTGFiZWw6IHN0cmluZyB9W10gPSBbXHJcbiAgICAgICAgeyBJRDogMSwgTGFiZWw6IFwiSmFudWFyeVwiIH0sXHJcbiAgICAgICAgeyBJRDogMiwgTGFiZWw6IFwiRmVicnVhcnlcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDMsIExhYmVsOiBcIk1hcmNoXCIgfSxcclxuICAgICAgICB7IElEOiA0LCBMYWJlbDogXCJBcHJpbFwiIH0sXHJcbiAgICAgICAgeyBJRDogNSwgTGFiZWw6IFwiTWF5XCIgfSxcclxuICAgICAgICB7IElEOiA2LCBMYWJlbDogXCJKdW5lXCIgfSxcclxuICAgICAgICB7IElEOiA3LCBMYWJlbDogXCJKdWx5XCIgfSxcclxuICAgICAgICB7IElEOiA4LCBMYWJlbDogXCJBdWd1c3RcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDksIExhYmVsOiBcIlNlcHRlbWJlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTAsIExhYmVsOiBcIk9jdG9iZXJcIiB9LFxyXG4gICAgICAgIHsgSUQ6IDExLCBMYWJlbDogXCJOb3ZlbWJlclwiIH0sXHJcbiAgICAgICAgeyBJRDogMTIsIExhYmVsOiBcIkRlY2VtYmVyXCIgfSxcclxuICAgIF07XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlWWVhcnMoY3VyclllYXI6IGFueSwgbGVuZ3RoOiBhbnksIElzUHJldmlvdXM6IGFueSk6IGFueVtdIHtcclxuICAgICAgICBsZXQgbXVsdGlwbGllciA9IC0xO1xyXG4gICAgICAgIGlmIChsZW5ndGggPT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA9PSBudWxsKSBsZW5ndGggPSAxMTtcclxuICAgICAgICBpZiAoSXNQcmV2aW91cyA9PSB1bmRlZmluZWQgfHwgSXNQcmV2aW91cyA9PSBudWxsIHx8ICFJc1ByZXZpb3VzKVxyXG4gICAgICAgICAgICBtdWx0aXBsaWVyID0gMTtcclxuXHJcbiAgICAgICAgY29uc3QgeWVhcnMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHllYXJzLnB1c2goY3VyclllYXIgKyBpICogbXVsdGlwbGllcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB5ZWFycztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlZmFjdG9yIGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0gZGF0ZVxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgRGF0ZU9ubHkoZGF0ZT86IERhdGUpOiBEYXRlIHtcclxuICAgICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUobmV3IERhdGUoZGF0ZSkudG9EYXRlU3RyaW5nKCkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBqYXZhc2NyaXB0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gZGF5c1xyXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBcclxuICAgICAqIEBwYXJhbSBlbmREYXRlIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZGlmZmVyZW50SW5EYXlzKFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogRGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBEYXRlXHJcbiAgICApOiBudW1iZXIge1xyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSB0aGUgdGltZSBkaWZmZXJlbmNlIG9mIHR3byBkYXRlc1xyXG4gICAgICAgIGxldCBEaWZmZXJlbmNlX0luX1RpbWUgPSBlbmREYXRlLmdldFRpbWUoKSAtIHN0YXJ0RGF0ZS5nZXRUaW1lKCk7XHJcblxyXG4gICAgICAgIC8vIFRvIGNhbGN1bGF0ZSB0aGUgbm8uIG9mIGRheXMgYmV0d2VlbiB0d28gZGF0ZXNcclxuICAgICAgICBsZXQgRGlmZmVyZW5jZV9Jbl9EYXlzID0gTWF0aC5mbG9vcihcclxuICAgICAgICAgICAgRGlmZmVyZW5jZV9Jbl9UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIERpZmZlcmVuY2VfSW5fRGF5cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBqYXZhc2NyaXB0IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXMgaW4gbWludXRlc1xyXG4gICAgICogQHBhcmFtIGR0MSBcclxuICAgICAqIEBwYXJhbSBkdDIgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBtaW51dGVzRGlmZihkdDE6IERhdGUsIGR0MjogRGF0ZSkge1xyXG5cclxuICAgICAgICBsZXQgZGlmZk1pbiA9IChkdDIuZ2V0VGltZSgpIC0gZHQxLmdldFRpbWUoKSkgLyA2MDAwMDtcclxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKGRpZmZNaW4pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsY3VsYXRlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzIGluIGhvdXJzIGphdmFzY3JpcHRcclxuICAgICAqIEBwYXJhbSBkdDEgXHJcbiAgICAgKiBAcGFyYW0gZHQyIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgaG91cnNEaWZmKGR0MTogRGF0ZSwgZHQyOiBEYXRlKSB7XHJcbiAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSB0aW1lIGRpZmZlcmVuY2Ugb2YgdHdvIGRhdGVzIEphdmFTY3JpcHRcclxuICAgICAgICBsZXQgZGlmZlRpbWUgPSAoZHQyLmdldFRpbWUoKSAtIGR0MS5nZXRUaW1lKCkpO1xyXG5cclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBkYXlzIGJldHdlZW4gaG91cnMgZGF0ZXMgamF2YXNjcmlwdFxyXG4gICAgICAgIGxldCBob3Vyc0RpZmYgPSBkaWZmVGltZSAvICgxMDAwICogMzYwMCk7XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGhvdXJzRGlmZi50b0ZpeGVkKDEpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBVbmlxdWUgSWRlbnRpZmllciBpbiB0aGUgQ2xpZW50IFNpZGUgZXF1aXZhbGVudCB0byBDIyBOZXdHdWlkKClcclxuICAgICAqIEByZXR1cm5zXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgR3VpZF9OZXdHdWlkKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgbGV0IHV1aWQgPSBcInh4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eFwiLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIC9beHldL2csXHJcbiAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgciA9IChkdCArIE1hdGgucmFuZG9tKCkgKiAxNikgJSAxNiB8IDA7XHJcbiAgICAgICAgICAgICAgICBkdCA9IE1hdGguZmxvb3IoZHQgLyAxNik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGMgPT0gXCJ4XCIgPyByIDogKHIgJiAweDMpIHwgMHg4KS50b1N0cmluZygxNik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB1dWlkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcGFyc2VKd3QodG9rZW46IHN0cmluZykge1xyXG4gICAgICAgIHZhciBiYXNlNjRVcmwgPSB0b2tlbi5zcGxpdChcIi5cIilbMV07XHJcbiAgICAgICAgdmFyIGJhc2U2NCA9IGJhc2U2NFVybC5yZXBsYWNlKC8tL2csIFwiK1wiKS5yZXBsYWNlKC9fL2csIFwiL1wiKTtcclxuICAgICAgICB2YXIganNvblBheWxvYWQgPSBkZWNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgICAgIGF0b2IoYmFzZTY0KVxyXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiXCIpXHJcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiJVwiICsgKFwiMDBcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuam9pbihcIlwiKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGpzb25QYXlsb2FkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlck9ubHkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBjaGFyQ29kZSA9IChldmVudC53aGljaCkgPyBldmVudC53aGljaCA6IGV2ZW50LmtleUNvZGU7XHJcbiAgICAgICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGZvcm1hdCBudW1iZXIgdG8gdW5pdFxyXG4gICAgICogQHBhcmFtIHRvdGFsIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyKHRvdGFsOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGxldCB1bml0ID0gXCJcIjtcclxuICAgICAgICBsZXQgYWJzTnVtYmVyID0gTWF0aC5hYnModG90YWwpO1xyXG4gICAgICAgIGlmIChhYnNOdW1iZXIgPiA5OTkgJiYgYWJzTnVtYmVyIDwgMTAwMDAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gXCJLXCI7XHJcbiAgICAgICAgICAgIHZhbHVlID0gKGFic051bWJlciAvIDEwMDApLnRvRml4ZWQoMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhYnNOdW1iZXIgPj0gMTAwMDAwMCkge1xyXG4gICAgICAgICAgICB1bml0ID0gXCJNXCI7XHJcbiAgICAgICAgICAgIHZhbHVlID0gKGFic051bWJlciAvIDEwMDAwMDApLnRvRml4ZWQoMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChhYnNOdW1iZXIgPCA5MDApIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBhYnNOdW1iZXIudG9TdHJpbmcoKTsgLy9cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvdGFsIDwgMCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IFwiLVwiICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpICsgdW5pdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzVG9EYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIG5vdy5zZXRIb3VycygwLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5vdy5nZXRUaW1lKCkgPT0gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXQgZGF0ZSB0aW1lIHRvIGxhdGVzdCB0aW1lIGRheVxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRUb0xhdGVzdFRpbWUoZGF0ZTogRGF0ZSk6IERhdGUge1xyXG4gICAgICAgIGNvbnN0IGRhdGVMYXN0VGltZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIGRhdGVMYXN0VGltZS5zZXRIb3VycygyMywgNTksIDU5KTtcclxuICAgICAgICByZXR1cm4gZGF0ZUxhc3RUaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2V0IGRhdGUgdGltZSB0byBmaXJzdCB0aW1lIGRheVxyXG4gICAgICogQHBhcmFtIGRhdGUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRUb0ZpcnN0VGltZShkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZUZpcnN0VGltZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIGRhdGVGaXJzdFRpbWUuc2V0SG91cnMoMCwgMCwgMCk7XHJcbiAgICAgICAgcmV0dXJuIGRhdGVGaXJzdFRpbWU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmUoYTogbnVtYmVyIHwgc3RyaW5nLCBiOiBudW1iZXIgfCBzdHJpbmcsIGlzQXNjOiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gKGEgPCBiID8gLTEgOiAxKSAqIChpc0FzYyA/IDEgOiAtMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZW5lcmF0ZSBzZXJpYWwgYXMgbm90ZSB3aXRoIGZvcm1hdCBbJ3NlcmlhbCcqUXVhbnRpdHldXHJcbiAgICAgKiBleDogWzAwQVMzMio2LCAwMDg5QV1cclxuICAgICAqIEBwYXJhbSBzZXJpYWxzIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVTZXJpYWxhc05vdGUoc2VyaWFsczogYW55W10gPSBbXSkge1xyXG4gICAgICAgIGxldCBzZXJpYWxOb3RlOiBzdHJpbmcgPSAnJztcclxuICAgICAgICBpZiAoc2VyaWFscyAmJiBzZXJpYWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IHNlcmlhbEFTU3RyaW5nID0gc2VyaWFscy5tYXAoKHNlcmlhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2kgPiAwID8gXCIgXCIgOiBcIlwifSR7c2VyaWFsLk51bWJlcn0keyhzZXJpYWwuUXVhbnRpdHkgPiAxIHx8IHNlcmlhbC5RdWFudGl0eSA8IDApID8gXCIqXCIgKyBzZXJpYWwuUXVhbnRpdHkgOiBcIlwifWA7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzZXJpYWxOb3RlID0gYFske3NlcmlhbEFTU3RyaW5nfV1gO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc2VyaWFsTm90ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldERhdGVzSW5SYW5nZShzdGFydERhdGU6IERhdGUsIGVuZERhdGU6IERhdGUpOiBEYXRlW10ge1xyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUuZ2V0VGltZSgpKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0ZXMgPSBbXTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGRhdGUgPD0gZW5kRGF0ZSkge1xyXG4gICAgICAgICAgICBkYXRlcy5wdXNoKG5ldyBEYXRlKGRhdGUpKTtcclxuICAgICAgICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGF0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0gZGF0ZSBcclxuICAgICAqIEBwYXJhbSBkYXlzQmVmb3JlIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGF5c0JlZm9yZShkYXRlOiBEYXRlLCBkYXlzQmVmb3JlOiBudW1iZXIpOiBEYXRlIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpIC0gZGF5c0JlZm9yZSkpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZXQgZmlyc3QgYW5kIGxhc3QgZGF5IGJ5IG1vbnRoIGFuZCB5ZWFyXHJcbiAgICAgKiBAcGFyYW0gbW9udGggXHJcbiAgICAgKiBAcGFyYW0geWVhciBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJhbmdlRGF0ZShtb250aDogbnVtYmVyLCB5ZWFyOiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkYXRlLnNldE1vbnRoKG1vbnRoKTtcclxuICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIpO1xyXG4gICAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpIC0gMSwgMSk7XHJcbiAgICAgICAgbGV0IGxhc3REYXkgPSBuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgMCk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlyc3REYXk6IGZpcnN0RGF5LFxyXG4gICAgICAgICAgICBsYXN0RGF5OiBsYXN0RGF5XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0RGF0ZVRpbWUodGltZTogc3RyaW5nLCBkYXRlOiBEYXRlKTogRGF0ZSB7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGlmIChkYXRlKSB7XHJcbiAgICAgICAgICAgIG5ld0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRpbWVzID0gdGltZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgbmV3RGF0ZS5zZXRIb3VycyhwYXJzZUludCh0aW1lc1swXSkpO1xyXG4gICAgICAgIG5ld0RhdGUuc2V0TWludXRlcyhwYXJzZUludCh0aW1lc1sxXSkpO1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyBpc01hc2tpbmdGaWVsZCh2YWx1ZSA9IFwiXCIpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBoYXNRdWVzdGlvbk1hcmsgPSAodmFsdWUgYXMgc3RyaW5nKS5pbmNsdWRlcyhcIj9cIik7XHJcbiAgICAgICAgcmV0dXJuIGhhc1F1ZXN0aW9uTWFyaztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdlbmVyYXRlTWFza2luZ0ZpZWxkKGNvbmZpZ01hc2tpbmdGaWVsZDogc3RyaW5nW10gPSBbXSkge1xyXG4gICAgICAgIGxldCBtYXNraW5nRmllbGRzID0ge307XHJcbiAgICAgICAgY29uZmlnTWFza2luZ0ZpZWxkXHJcbiAgICAgICAgICAgIC5mb3JFYWNoKChmaWVsZCwgaSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgZmllbGQgPSBmaWVsZC5zcGxpdCgnICcpPy5qb2luKCcnKTtcclxuICAgICAgICAgICAgICAgIG1hc2tpbmdGaWVsZHMgPSB7IC4uLm1hc2tpbmdGaWVsZHMsIFtmaWVsZF06IHRydWUgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbWFza2luZ0ZpZWxkcztcclxuICAgIH1cclxuICAgIC8qKlxyXG4gKiBDaGVjayBpZiBKUyBBUEkgZnVuY3Rpb24gaXMgc3VwcG9ydGVkIGluIGEgY3VycmVudCBicm93c2VyXHJcbiAqIEBwYXJhbSBhcGkgZXg6IHN0cnVjdHVyZWRDbG9uZVxyXG4gKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgY2hlY2tKU0FwaVN1cHBvcnRlZChhcGk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBpc1N1cHBvcnRlZDogYm9vbGVhbjtcclxuICAgICAgICBpZiAoYXBpIGluIHdpbmRvdykge1xyXG4gICAgICAgICAgICBpc1N1cHBvcnRlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpc1N1cHBvcnRlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXNTdXBwb3J0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb3B5IG9mIGFsbCBlbGVtZW50cyBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0LiBcclxuICAgICAqIENoYW5nZXMgbWFkZSB0byB0aGUgb3JpZ2luYWwgb2JqZWN0IHdpbGwgbm90IGJlIHJlZmxlY3RlZCBpbiB0aGUgY29weVxyXG4gICAgICogQHBhcmFtIG9iamVjdCBcclxuICAgICAqIEBwYXJhbSB0eXBlIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNsb25lT2JqZWN0KG9iamVjdDogYW55KTogYW55IHtcclxuICAgICAgICBsZXQgbmV3T2JqZWN0OiBhbnk7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tKU0FwaVN1cHBvcnRlZCgnc3RydWN0dXJlZENsb25lJykpIHtcclxuICAgICAgICAgICAgbmV3T2JqZWN0ID0gc3RydWN0dXJlZENsb25lKG9iamVjdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBuZXdPYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iamVjdCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3T2JqZWN0O1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAqIGZvcm1hdCB0aXRsZSBmb3IgZnJvbSBmaWx0ZXIgdG8gc2hvd2luZyBpbiB0aXRsZVxyXG4gKiBAcGFyYW0gc3RhcnREYXRlXHJcbiAqIEBwYXJhbSBlbmREYXRlXHJcbiAqIEByZXR1cm5zXHJcbiAqL1xyXG4gICAgc3RhdGljIGZvcm1hdFRpdGxlRnJvbURhdGUoc3RhcnREYXRlOiBEYXRlLCBlbmREYXRlOiBEYXRlKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgbGV0IGZvcm1hdCA9IG51bGw7XHJcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlT2JqID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgICAgICBjb25zdCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcblxyXG4gICAgICAgIGlmIChzdGFydERhdGVPYmouZ2V0RGF0ZSgpICE9IGVuZERhdGVPYmouZ2V0RGF0ZSgpKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdCA9IFwiZFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IGZvcm1hdCBvbmx5IGRheXMgb24gc2FtZSBtb250aFxyXG4gICAgICAgIGlmIChzdGFydERhdGVPYmouZ2V0TW9udGgoKSAhPSBlbmREYXRlT2JqLmdldE1vbnRoKCkpIHtcclxuICAgICAgICAgICAgZm9ybWF0ID0gXCJkIE1NTVwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IGZ1bGwgZm9ybWF0IHdoZW4gZGlmZmVyZW50IHllYXJcclxuICAgICAgICBpZiAoc3RhcnREYXRlT2JqLmdldEZ1bGxZZWFyKCkgIT0gZW5kRGF0ZU9iai5nZXRGdWxsWWVhcigpKSB7XHJcbiAgICAgICAgICAgIGZvcm1hdCA9IFwiZCBNTU0geXl5eVwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlSW5mbyhzcmM6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWFnZS5zcmMgPSBzcmM7XHJcbiAgICAgICAgaW1hZ2VcclxuICAgICAgICAgICAgLmRlY29kZSgpXHJcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGltZzogc3JjLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaW1hZ2UuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBJbWFnZSBsb2FkIGVycm9yIGZvciAke3NyY31gKSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIExvY2FsRGF0YUtleSB7XHJcbiAgICBzdGF0aWMgT2ZmbGluZVF1ZXJ5TW9kZSA9IFwiT2ZmbGluZVF1ZXJ5TW9kZVwiO1xyXG4gICAgc3RhdGljIFBPU1N0b3JhZ2UgPSBcIlBPU1N0b3JhZ2VcIjtcclxuICAgIHN0YXRpYyBQcm9kdWN0cyA9IFwiUHJvZHVjdHNcIjtcclxuICAgIHN0YXRpYyBDdXN0b21lcnMgPSBcIkN1c3RvbWVyc1wiO1xyXG4gICAgc3RhdGljIE91dGxldFByaWNlcyA9IFwiT3V0bGV0UHJpY2VzXCI7XHJcbiAgICBzdGF0aWMgT3V0bGV0ID0gXCJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXJrcyA9IFwiUGFya3NcIjtcclxuICAgIHN0YXRpYyBPcmRlcnMgPSBcIk9yZGVyc1wiO1xyXG4gICAgc3RhdGljIEZhaWxlZE9yZGVycyA9IFwiRmFpbGVkT3JkZXJzXCI7XHJcbiAgICBzdGF0aWMgQ29tcGxldGVkT3JkZXJzID0gXCJDb21wbGV0ZWRPcmRlcnNcIjtcclxuICAgIHN0YXRpYyBOZXdDdXN0b21lcnMgPSBcIk5ld0N1c3RvbWVyc1wiO1xyXG5cclxuICAgIHN0YXRpYyBHZXRSZXdhcmRCeVByb21vdGlvbklEID0gXCIvQVBJL1BPUy9HZXRSZXdhcmRCeVByb21vdGlvbklEXCI7XHJcbiAgICBzdGF0aWMgR2V0TGlzdFByb21vdGlvbiA9IFwiL0FQSS9QT1MvUHJvbW90aW9uXCI7XHJcblxyXG4gICAgc3RhdGljIEdlbmVyYXRlR29wYXlRckNvZGUgPSBcIi9BUEkvUE9TL0dlbmVyYXRlR29QYXlRckNvZGVcIjtcclxuICAgIHN0YXRpYyBHZW5lcmF0ZUVtcGF0S2FsaVFyQ29kZSA9IFwiL0FQSS9QT1MvR2VuZXJhdGVFbXBhdEthbGlRckNvZGVcIjtcclxuXHJcbiAgICBzdGF0aWMgVmVyaWZ5UGF5bWVudCA9IFwiL0FQSS9QYXltZW50Tm90aWZpY2F0aW9uL1ZlcmlmeVBheW1lbnRcIjtcclxuICAgIHN0YXRpYyBQYXlXaXRoT3ZvID0gXCIvQVBJL1BPUy9QYXlXaXRoT3ZvXCI7XHJcblxyXG4gICAgc3RhdGljIEludm9pY2VBNCA9IFwiL0FQSS9QcmludC9JbnZvaWNlXCI7XHJcbiAgICBzdGF0aWMgVXBsb2FkQ3N2ID0gXCIvQVBJL1BPUy9VcGxvYWRDc3ZcIjtcclxuICAgIHN0YXRpYyBVcGxvYWRDc3ZCdXkgPSBcIi9BUEkvQnV5L1VwbG9hZENzdlwiO1xyXG5cclxuICAgIHN0YXRpYyBHZW5lcmF0ZUNvbW1pc3Npb24gPSBcIi9BUEkvVHJhbnNhY3Rpb24vR2V0Q29tbWlzc2lvblwiO1xyXG5cclxuICAgIHN0YXRpYyBJbnZvaWNlSW5mbyA9IFwiL2FwaS9JbnZvaWNlL0ludm9pY2VJbmZvXCI7XHJcbiAgICBzdGF0aWMgR2VuZXJhdGVMaW5rID0gXCIvQVBJL1BheU5vdy9HZW5lcmF0ZUxpbmtcIjtcclxuXHJcbiAgICAvL0J1eVxyXG4gICAgc3RhdGljIExvYWRGb3JtQnV5ID0gXCIvQVBJL0J1eTIvTG9hZFwiO1xyXG4gICAgc3RhdGljIEJ1eUdldE91dGxldEluZm8gPSBcIi9BUEkvQnV5Mi9HZXRPdXRsZXRJbmZvXCI7XHJcbiAgICBzdGF0aWMgQnV5R2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvQnV5L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgQnV5R2V0RGF0YUJ5SUQgPSBcIi9BUEkvQnV5Mi9HZXREYXRhQnlJRFwiO1xyXG4gICAgc3RhdGljIEdldFF1aWNrS2V5ID0gXCIvQVBJL2NhdGFsb2cvcHJvZHVjdC9HZXRRdWlja0tleVwiO1xyXG4gICAgc3RhdGljIEdldFByaW50VGVtcGxhdGVJRCA9IFwiL0FQSS9CdXkvR2V0UHJpbnRUZW1wbGF0ZUlEXCI7XHJcbiAgICBzdGF0aWMgR2V0VmFyaWFudFN0b2NrQnlJRCA9IFwiL0FQSS9jYXRhbG9nL3ZhcmlhbnQvR2V0SW52ZW50b3J5QnlWYXJpYW50SURcIjtcclxuICAgIHN0YXRpYyBHZXRTdXBwbGllckludm9pY2UgPSBcIi9BUEkvQnV5L0dldFN1cHBsaWVySW52b2ljZVJldHVyXCI7XHJcbiAgICBzdGF0aWMgR2V0U3VwcGxpZXJEVE8gPSBcIi9BUEkvQ29udGFjdC9HZXRTdXBwbGllckRUT1wiO1xyXG5cclxuICAgIC8vREVMSVZFUllcclxuICAgIHN0YXRpYyBMb2FkRm9ybURlbGl2ZXJ5ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXJMb2FkZXIvTG9hZEZvcm1cIjtcclxuICAgIHN0YXRpYyBEZWxpdmVyeUdlbmVyYXRlTnVtYmVyID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBVcGRhdGVDb3VyaWVyTGlzdCA9IFwiL0FQSS9UcmFuc2Zlck9yZGVyL1VwZGF0ZUNvdXJpZXJMaXN0XCI7XHJcbiAgICBzdGF0aWMgU3VibWl0T3V0bGV0RGVsaXZlcnkgPSBcIi9BUEkvVHJhbnNmZXJPcmRlci9TdWJtaXRPcmRlclwiO1xyXG4gICAgc3RhdGljIENsZWFyT3V0bGV0ID0gXCIvQVBJL1RyYW5zZmVyT3JkZXIvQ2xlYXJPdXRsZXRcIjtcclxuICAgIHN0YXRpYyBQYXltZW50TGlzdFNvcnRpbmcgPSBcIi9BUEkvU2V0dXAvU29ydFBheW1lbnRNZXRob2RcIlxyXG4gICAgc3RhdGljIFRheExpc3RTb3J0aW5nID0gXCIvQVBJL1NldHVwL1NvcnRUYXhcIlxyXG5cclxuICAgIC8vIEVTVElNQVRFXHJcbiAgICBzdGF0aWMgTG9hZEZvcm1Fc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEVzdGltYXRlR2VuZXJhdGVOdW1iZXIgPSBcIi9BUEkvRXN0aW1hdGUvR2VuZXJhdGVOdW1iZXJcIjtcclxuICAgIHN0YXRpYyBTdWJtaXRFc3RpbWF0ZSA9IFwiL0FQSS9Fc3RpbWF0ZS9TdWJtaXRPcmRlclwiO1xyXG5cclxuICAgIC8vIEFESlVTVE1FTlRcclxuICAgIHN0YXRpYyBMb2FkRm9ybUFkanVzdG1lbnQgPSBcIi9BUEkvQWRqdXN0bWVudC9Mb2FkRm9ybVwiO1xyXG4gICAgc3RhdGljIEFkanVzdG1lbnRHZW5lcmF0ZU51bWJlciA9IFwiL0FQSS9BZGp1c3RtZW50L0dlbmVyYXRlTnVtYmVyXCI7XHJcbiAgICBzdGF0aWMgU3VibWl0QWRqdXN0bWVudCA9IFwiL0FQSS9BZGp1c3RtZW50L1N1Ym1pdE9yZGVyXCI7XHJcblxyXG4gICAgLy8gSU5WRU5UT1JZXHJcbiAgICBzdGF0aWMgRm9yZWNhc3REYXRhID0gXCJJbnZlbnRvcnkvRGF5c3RvemVyb1wiO1xyXG4gICAgc3RhdGljIEZvcmVjYXN0TG9hZGVyID0gXCJJbnZlbnRvcnlMb2FkZXIvRGF5c3RvemVyb1wiO1xyXG59XHJcbiJdfQ==
@@ -1,4 +1,6 @@
1
1
  class Constants {
2
+ static { this.emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; }
3
+ static { this.phoneNumberRegex = /^\d+$/; }
2
4
  static { this.GuidEmpty = "00000000-0000-0000-0000-000000000000"; }
3
5
  static { this.DecimalMinValue = "-7.922816251426434e+28"; }
4
6
  static { this.InputLockTimeSpan = 500; }
@@ -10,6 +12,7 @@ class Constants {
10
12
  }
11
13
  return msg;
12
14
  }
15
+ static { this.isMobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)); }
13
16
  static IsNotEmpty(value) {
14
17
  if (value != "" &&
15
18
  !Constants.containsOnlySpaces(value) &&
@@ -34,6 +37,19 @@ class Constants {
34
37
  return false;
35
38
  }
36
39
  }
40
+ /**
41
+ * Checks if a string is a valid GUID.
42
+ * @param guid - The string to be checked.
43
+ * @returns True if the string is a valid GUID, false otherwise.
44
+ */
45
+ static isGuid(guid) {
46
+ const regexExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi;
47
+ let isGuid = false;
48
+ if (guid) {
49
+ isGuid = regexExp.test(guid);
50
+ }
51
+ return isGuid;
52
+ }
37
53
  // check whether string only contains blank space
38
54
  static containsOnlySpaces(str) {
39
55
  return /^\s*$/.test(str);
@@ -186,6 +202,26 @@ class Constants {
186
202
  }
187
203
  return false;
188
204
  }
205
+ /**
206
+ * set date time to latest time day
207
+ * @param date
208
+ * @returns
209
+ */
210
+ static setToLatestTime(date) {
211
+ const dateLastTime = new Date(date);
212
+ dateLastTime.setHours(23, 59, 59);
213
+ return dateLastTime;
214
+ }
215
+ /**
216
+ * set date time to first time day
217
+ * @param date
218
+ * @returns
219
+ */
220
+ static setToFirstTime(date) {
221
+ const dateFirstTime = new Date(date);
222
+ dateFirstTime.setHours(0, 0, 0);
223
+ return dateFirstTime;
224
+ }
189
225
  static compare(a, b, isAsc) {
190
226
  return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
191
227
  }
@@ -249,6 +285,72 @@ class Constants {
249
285
  newDate.setMinutes(parseInt(times[1]));
250
286
  return newDate;
251
287
  }
288
+ static isMaskingField(value = "") {
289
+ const hasQuestionMark = value.includes("?");
290
+ return hasQuestionMark;
291
+ }
292
+ static generateMaskingField(configMaskingField = []) {
293
+ let maskingFields = {};
294
+ configMaskingField
295
+ .forEach((field, i) => {
296
+ field = field.split(' ')?.join('');
297
+ maskingFields = { ...maskingFields, [field]: true };
298
+ });
299
+ return maskingFields;
300
+ }
301
+ /**
302
+ * Check if JS API function is supported in a current browser
303
+ * @param api ex: structuredClone
304
+ */
305
+ static checkJSApiSupported(api) {
306
+ let isSupported;
307
+ if (api in window) {
308
+ isSupported = true;
309
+ }
310
+ else {
311
+ isSupported = false;
312
+ }
313
+ return isSupported;
314
+ }
315
+ /**
316
+ * copy of all elements of the original object.
317
+ * Changes made to the original object will not be reflected in the copy
318
+ * @param object
319
+ * @param type
320
+ */
321
+ static cloneObject(object) {
322
+ let newObject;
323
+ if (this.checkJSApiSupported('structuredClone')) {
324
+ newObject = structuredClone(object);
325
+ }
326
+ else {
327
+ newObject = JSON.parse(JSON.stringify(object));
328
+ }
329
+ return newObject;
330
+ }
331
+ /**
332
+ * format title for from filter to showing in title
333
+ * @param startDate
334
+ * @param endDate
335
+ * @returns
336
+ */
337
+ static formatTitleFromDate(startDate, endDate) {
338
+ let format = null;
339
+ const startDateObj = new Date(startDate);
340
+ const endDateObj = new Date(endDate);
341
+ if (startDateObj.getDate() != endDateObj.getDate()) {
342
+ format = "d";
343
+ }
344
+ // set format only days on same month
345
+ if (startDateObj.getMonth() != endDateObj.getMonth()) {
346
+ format = "d MMM";
347
+ }
348
+ // set full format when different year
349
+ if (startDateObj.getFullYear() != endDateObj.getFullYear()) {
350
+ format = "d MMM yyyy";
351
+ }
352
+ return format;
353
+ }
252
354
  }
253
355
  function getImageInfo(src) {
254
356
  return new Promise((resolve, reject) => {
@@ -1 +1 @@
1
- {"version":3,"file":"dealpos-npm-ng-dealpos-library-constants.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/constants/src/Constants.ts","../../../projects/dealpos-npm/ng-dealpos-library/constants/dealpos-npm-ng-dealpos-library-constants.ts"],"sourcesContent":["export class Constants {\r\n static GuidEmpty = \"00000000-0000-0000-0000-000000000000\";\r\n static DecimalMinValue = \"-7.922816251426434e+28\";\r\n static InputLockTimeSpan = 500;\r\n static MinDate = \"0001-01-01T00:00:00\";\r\n static MinTime = \"00:00:00\";\r\n static StringFormat(msg: string, ...args: string[]): string {\r\n for (let _i = 0; _i < args.length; _i++) {\r\n msg = msg.replace(`{${_i}}`, args[_i]);\r\n }\r\n return msg;\r\n }\r\n\r\n static IsNotEmpty(value: any): boolean {\r\n if (\r\n value != \"\" &&\r\n !Constants.containsOnlySpaces(value) &&\r\n value != Constants.GuidEmpty &&\r\n value != undefined &&\r\n value != null\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n static IsEmpty(value: any): boolean {\r\n if (\r\n value == \"\" ||\r\n Constants.containsOnlySpaces(value) ||\r\n value == undefined ||\r\n value == null ||\r\n value == Constants.GuidEmpty\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n // check whether string only contains blank space\r\n static containsOnlySpaces(str: string) {\r\n return /^\\s*$/.test(str);\r\n }\r\n\r\n static FilterByID(array: any[], id: any): any {\r\n try {\r\n const list = array.filter((x) => x.ID == id);\r\n if (list.length > 0) {\r\n return list[0];\r\n }\r\n } catch (ex) { }\r\n return null;\r\n }\r\n\r\n static Months: { ID: number, Label: string }[] = [\r\n { ID: 1, Label: \"January\" },\r\n { ID: 2, Label: \"February\" },\r\n { ID: 3, Label: \"March\" },\r\n { ID: 4, Label: \"April\" },\r\n { ID: 5, Label: \"May\" },\r\n { ID: 6, Label: \"June\" },\r\n { ID: 7, Label: \"July\" },\r\n { ID: 8, Label: \"August\" },\r\n { ID: 9, Label: \"September\" },\r\n { ID: 10, Label: \"October\" },\r\n { ID: 11, Label: \"November\" },\r\n { ID: 12, Label: \"December\" },\r\n ];\r\n\r\n static GenerateYears(currYear: any, length: any, IsPrevious: any): any[] {\r\n let multiplier = -1;\r\n if (length == undefined || length == null) length = 11;\r\n if (IsPrevious == undefined || IsPrevious == null || !IsPrevious)\r\n multiplier = 1;\r\n\r\n const years = [];\r\n for (let i = 0; i < length; i++) {\r\n years.push(currYear + i * multiplier);\r\n }\r\n return years;\r\n }\r\n\r\n /**\r\n * Refactor function\r\n * @param date\r\n */\r\n static DateOnly(date?: Date): Date {\r\n if (date) {\r\n return new Date(new Date(date).toDateString());\r\n } else {\r\n return new Date(new Date().toDateString());\r\n }\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in days\r\n * @param startDate \r\n * @param endDate \r\n * @returns \r\n */\r\n public static differentInDays(\r\n startDate: Date,\r\n endDate: Date\r\n ): number {\r\n // To calculate the time difference of two dates\r\n let Difference_In_Time = endDate.getTime() - startDate.getTime();\r\n\r\n // To calculate the no. of days between two dates\r\n let Difference_In_Days = Math.floor(\r\n Difference_In_Time / (1000 * 3600 * 24)\r\n );\r\n\r\n return Difference_In_Days;\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in minutes\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static minutesDiff(dt1: Date, dt2: Date) {\r\n\r\n let diffMin = (dt2.getTime() - dt1.getTime()) / 60000;\r\n return Math.ceil(diffMin);\r\n }\r\n\r\n /**\r\n * Calculate the difference between two dates in hours javascript\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static hoursDiff(dt1: Date, dt2: Date) {\r\n // calculate the time difference of two dates JavaScript\r\n let diffTime = (dt2.getTime() - dt1.getTime());\r\n\r\n // calculate the number of days between hours dates javascript\r\n let hoursDiff = diffTime / (1000 * 3600);\r\n\r\n return parseFloat(hoursDiff.toFixed(1));\r\n }\r\n\r\n /**\r\n * Create Unique Identifier in the Client Side equivalent to C# NewGuid()\r\n * @returns\r\n */\r\n public static Guid_NewGuid(): string {\r\n let dt = new Date().getTime();\r\n let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\r\n /[xy]/g,\r\n function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n }\r\n );\r\n return uuid;\r\n }\r\n\r\n public static parseJwt(token: string) {\r\n var base64Url = token.split(\".\")[1];\r\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n var jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n }\r\n\r\n public static numberOnly(event: KeyboardEvent): boolean {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * format number to unit\r\n * @param total \r\n * @returns \r\n */\r\n public static formatNumber(total: number) {\r\n let value: string = '';\r\n let unit = \"\";\r\n let absNumber = Math.abs(total);\r\n if (absNumber > 999 && absNumber < 1000000) {\r\n unit = \"K\";\r\n value = (absNumber / 1000).toFixed(0);\r\n } else if (absNumber >= 1000000) {\r\n unit = \"M\";\r\n value = (absNumber / 1000000).toFixed(0);\r\n } else if (absNumber < 900) {\r\n value = absNumber.toString(); //\r\n }\r\n if (total < 0) {\r\n value = \"-\" + value;\r\n }\r\n\r\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + unit;\r\n }\r\n\r\n public static isToDay(date: Date): boolean {\r\n if (date) {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n return now.getTime() == date.getTime();\r\n }\r\n return false\r\n }\r\n\r\n public static compare(a: number | string, b: number | string, isAsc: boolean): number {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * generate serial as note with format ['serial'*Quantity]\r\n * ex: [00AS32*6, 0089A]\r\n * @param serials \r\n * @returns \r\n */\r\n public static generateSerialasNote(serials: any[] = []) {\r\n let serialNote: string = '';\r\n if (serials && serials.length > 0) {\r\n let serialASString = serials.map((serial, i) => {\r\n return `${i > 0 ? \" \" : \"\"}${serial.Number}${(serial.Quantity > 1 || serial.Quantity < 0) ? \"*\" + serial.Quantity : \"\"}`;\r\n });\r\n serialNote = `[${serialASString}]`;\r\n }\r\n return serialNote;\r\n }\r\n\r\n public static getDatesInRange(startDate: Date, endDate: Date): Date[] {\r\n const date = new Date(startDate.getTime());\r\n\r\n const dates = [];\r\n\r\n while (date <= endDate) {\r\n dates.push(new Date(date));\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n /**\r\n * @param date \r\n * @param daysBefore \r\n * @returns \r\n */\r\n public static getDaysBefore(date: Date, daysBefore: number): Date {\r\n return new Date(date.setDate(new Date().getDate() - daysBefore))\r\n }\r\n\r\n /**\r\n * get first and last day by month and year\r\n * @param month \r\n * @param year \r\n * @returns \r\n */\r\n public static getRangeDate(month: number, year: number) {\r\n const date = new Date();\r\n date.setMonth(month);\r\n date.setFullYear(year);\r\n let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);\r\n let lastDay = new Date(date.getFullYear(), date.getMonth(), 0);\r\n return {\r\n firstDay: firstDay,\r\n lastDay: lastDay\r\n }\r\n }\r\n\r\n public static setDateTime(time: string, date: Date): Date {\r\n let newDate = new Date();\r\n if (date) {\r\n newDate = new Date(date);\r\n }\r\n let times = time.split(\":\");\r\n newDate.setHours(parseInt(times[0]));\r\n newDate.setMinutes(parseInt(times[1]));\r\n return newDate;\r\n }\r\n}\r\n\r\nexport function getImageInfo(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let image = new Image();\r\n image.src = src;\r\n image\r\n .decode()\r\n .then(() => {\r\n resolve({\r\n img: src,\r\n height: image.height,\r\n width: image.width\r\n });\r\n })\r\n .catch(() => {\r\n reject(new Error(`Image load error for ${src}`));\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nexport class LocalDataKey {\r\n static OfflineQueryMode = \"OfflineQueryMode\";\r\n static POSStorage = \"POSStorage\";\r\n static Products = \"Products\";\r\n static Customers = \"Customers\";\r\n static OutletPrices = \"OutletPrices\";\r\n static Outlet = \"Outlet\";\r\n static Parks = \"Parks\";\r\n static Orders = \"Orders\";\r\n static FailedOrders = \"FailedOrders\";\r\n static CompletedOrders = \"CompletedOrders\";\r\n static NewCustomers = \"NewCustomers\";\r\n\r\n static GetRewardByPromotionID = \"/API/POS/GetRewardByPromotionID\";\r\n static GetListPromotion = \"/API/POS/Promotion\";\r\n\r\n static GenerateGopayQrCode = \"/API/POS/GenerateGoPayQrCode\";\r\n static GenerateEmpatKaliQrCode = \"/API/POS/GenerateEmpatKaliQrCode\";\r\n\r\n static VerifyPayment = \"/API/PaymentNotification/VerifyPayment\";\r\n static PayWithOvo = \"/API/POS/PayWithOvo\";\r\n\r\n static InvoiceA4 = \"/API/Print/Invoice\";\r\n static UploadCsv = \"/API/POS/UploadCsv\";\r\n static UploadCsvBuy = \"/API/Buy/UploadCsv\";\r\n\r\n static GenerateCommission = \"/API/Transaction/GetCommission\";\r\n\r\n static InvoiceInfo = \"/api/Invoice/InvoiceInfo\";\r\n static GenerateLink = \"/API/PayNow/GenerateLink\";\r\n\r\n //Buy\r\n static LoadFormBuy = \"/API/Buy2/Load\";\r\n static BuyGetOutletInfo = \"/API/Buy2/GetOutletInfo\";\r\n static BuyGenerateNumber = \"/API/Buy/GenerateNumber\";\r\n static BuyGetDataByID = \"/API/Buy2/GetDataByID\";\r\n static GetQuickKey = \"/API/catalog/product/GetQuickKey\";\r\n static GetPrintTemplateID = \"/API/Buy/GetPrintTemplateID\";\r\n static GetVariantStockByID = \"/API/catalog/variant/GetInventoryByVariantID\";\r\n static GetSupplierInvoice = \"/API/Buy/GetSupplierInvoiceRetur\";\r\n static GetSupplierDTO = \"/API/Contact/GetSupplierDTO\";\r\n\r\n //DELIVERY\r\n static LoadFormDelivery = \"/API/TransferOrderLoader/LoadForm\";\r\n static DeliveryGenerateNumber = \"/API/TransferOrder/GenerateNumber\";\r\n static UpdateCourierList = \"/API/TransferOrder/UpdateCourierList\";\r\n static SubmitOutletDelivery = \"/API/TransferOrder/SubmitOrder\";\r\n static ClearOutlet = \"/API/TransferOrder/ClearOutlet\";\r\n static PaymentListSorting = \"/API/Setup/SortPaymentMethod\"\r\n static TaxListSorting = \"/API/Setup/SortTax\"\r\n\r\n // ESTIMATE\r\n static LoadFormEstimate = \"/API/Estimate/LoadForm\";\r\n static EstimateGenerateNumber = \"/API/Estimate/GenerateNumber\";\r\n static SubmitEstimate = \"/API/Estimate/SubmitOrder\";\r\n\r\n // ADJUSTMENT\r\n static LoadFormAdjustment = \"/API/Adjustment/LoadForm\";\r\n static AdjustmentGenerateNumber = \"/API/Adjustment/GenerateNumber\";\r\n static SubmitAdjustment = \"/API/Adjustment/SubmitOrder\";\r\n\r\n // INVENTORY\r\n static ForecastData = \"Inventory/Daystozero\";\r\n static ForecastLoader = \"InventoryLoader/Daystozero\";\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dealpos-npm-ng-dealpos-library-constants.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/constants/src/Constants.ts","../../../projects/dealpos-npm/ng-dealpos-library/constants/dealpos-npm-ng-dealpos-library-constants.ts"],"sourcesContent":["export class Constants {\r\n static emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n static phoneNumberRegex = /^\\d+$/\r\n static GuidEmpty = \"00000000-0000-0000-0000-000000000000\";\r\n static DecimalMinValue = \"-7.922816251426434e+28\";\r\n static InputLockTimeSpan = 500;\r\n static MinDate = \"0001-01-01T00:00:00\";\r\n static MinTime = \"00:00:00\";\r\n static StringFormat(msg: string, ...args: string[]): string {\r\n for (let _i = 0; _i < args.length; _i++) {\r\n msg = msg.replace(`{${_i}}`, args[_i]);\r\n }\r\n return msg;\r\n }\r\n static isMobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));\r\n\r\n static IsNotEmpty(value: any): boolean {\r\n if (\r\n value != \"\" &&\r\n !Constants.containsOnlySpaces(value) &&\r\n value != Constants.GuidEmpty &&\r\n value != undefined &&\r\n value != null\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n static IsEmpty(value: any): boolean {\r\n if (\r\n value == \"\" ||\r\n Constants.containsOnlySpaces(value) ||\r\n value == undefined ||\r\n value == null ||\r\n value == Constants.GuidEmpty\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Checks if a string is a valid GUID.\r\n * @param guid - The string to be checked.\r\n * @returns True if the string is a valid GUID, false otherwise.\r\n */\r\n static isGuid(guid: string): boolean {\r\n const regexExp = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\r\n let isGuid = false;\r\n if (guid) {\r\n isGuid = regexExp.test(guid);\r\n }\r\n return isGuid;\r\n }\r\n // check whether string only contains blank space\r\n static containsOnlySpaces(str: string) {\r\n return /^\\s*$/.test(str);\r\n }\r\n\r\n static FilterByID(array: any[], id: any): any {\r\n try {\r\n const list = array.filter((x) => x.ID == id);\r\n if (list.length > 0) {\r\n return list[0];\r\n }\r\n } catch (ex) { }\r\n return null;\r\n }\r\n\r\n static Months: { ID: number, Label: string }[] = [\r\n { ID: 1, Label: \"January\" },\r\n { ID: 2, Label: \"February\" },\r\n { ID: 3, Label: \"March\" },\r\n { ID: 4, Label: \"April\" },\r\n { ID: 5, Label: \"May\" },\r\n { ID: 6, Label: \"June\" },\r\n { ID: 7, Label: \"July\" },\r\n { ID: 8, Label: \"August\" },\r\n { ID: 9, Label: \"September\" },\r\n { ID: 10, Label: \"October\" },\r\n { ID: 11, Label: \"November\" },\r\n { ID: 12, Label: \"December\" },\r\n ];\r\n\r\n static GenerateYears(currYear: any, length: any, IsPrevious: any): any[] {\r\n let multiplier = -1;\r\n if (length == undefined || length == null) length = 11;\r\n if (IsPrevious == undefined || IsPrevious == null || !IsPrevious)\r\n multiplier = 1;\r\n\r\n const years = [];\r\n for (let i = 0; i < length; i++) {\r\n years.push(currYear + i * multiplier);\r\n }\r\n return years;\r\n }\r\n\r\n /**\r\n * Refactor function\r\n * @param date\r\n */\r\n static DateOnly(date?: Date): Date {\r\n if (date) {\r\n return new Date(new Date(date).toDateString());\r\n } else {\r\n return new Date(new Date().toDateString());\r\n }\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in days\r\n * @param startDate \r\n * @param endDate \r\n * @returns \r\n */\r\n public static differentInDays(\r\n startDate: Date,\r\n endDate: Date\r\n ): number {\r\n // To calculate the time difference of two dates\r\n let Difference_In_Time = endDate.getTime() - startDate.getTime();\r\n\r\n // To calculate the no. of days between two dates\r\n let Difference_In_Days = Math.floor(\r\n Difference_In_Time / (1000 * 3600 * 24)\r\n );\r\n\r\n return Difference_In_Days;\r\n }\r\n\r\n /**\r\n * javascript difference between two dates in minutes\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static minutesDiff(dt1: Date, dt2: Date) {\r\n\r\n let diffMin = (dt2.getTime() - dt1.getTime()) / 60000;\r\n return Math.ceil(diffMin);\r\n }\r\n\r\n /**\r\n * Calculate the difference between two dates in hours javascript\r\n * @param dt1 \r\n * @param dt2 \r\n * @returns \r\n */\r\n public static hoursDiff(dt1: Date, dt2: Date) {\r\n // calculate the time difference of two dates JavaScript\r\n let diffTime = (dt2.getTime() - dt1.getTime());\r\n\r\n // calculate the number of days between hours dates javascript\r\n let hoursDiff = diffTime / (1000 * 3600);\r\n\r\n return parseFloat(hoursDiff.toFixed(1));\r\n }\r\n\r\n /**\r\n * Create Unique Identifier in the Client Side equivalent to C# NewGuid()\r\n * @returns\r\n */\r\n public static Guid_NewGuid(): string {\r\n let dt = new Date().getTime();\r\n let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\r\n /[xy]/g,\r\n function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n }\r\n );\r\n return uuid;\r\n }\r\n\r\n public static parseJwt(token: string) {\r\n var base64Url = token.split(\".\")[1];\r\n var base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n var jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split(\"\")\r\n .map(function (c) {\r\n return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join(\"\")\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n }\r\n\r\n public static numberOnly(event: KeyboardEvent): boolean {\r\n const charCode = (event.which) ? event.which : event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * format number to unit\r\n * @param total \r\n * @returns \r\n */\r\n public static formatNumber(total: number) {\r\n let value: string = '';\r\n let unit = \"\";\r\n let absNumber = Math.abs(total);\r\n if (absNumber > 999 && absNumber < 1000000) {\r\n unit = \"K\";\r\n value = (absNumber / 1000).toFixed(0);\r\n } else if (absNumber >= 1000000) {\r\n unit = \"M\";\r\n value = (absNumber / 1000000).toFixed(0);\r\n } else if (absNumber < 900) {\r\n value = absNumber.toString(); //\r\n }\r\n if (total < 0) {\r\n value = \"-\" + value;\r\n }\r\n\r\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\") + unit;\r\n }\r\n\r\n public static isToDay(date: Date): boolean {\r\n if (date) {\r\n const now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n return now.getTime() == date.getTime();\r\n }\r\n return false\r\n }\r\n /**\r\n * set date time to latest time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToLatestTime(date: Date): Date {\r\n const dateLastTime = new Date(date);\r\n dateLastTime.setHours(23, 59, 59);\r\n return dateLastTime;\r\n }\r\n\r\n /**\r\n * set date time to first time day\r\n * @param date \r\n * @returns \r\n */\r\n public static setToFirstTime(date: Date): Date {\r\n const dateFirstTime = new Date(date);\r\n dateFirstTime.setHours(0, 0, 0);\r\n return dateFirstTime;\r\n }\r\n public static compare(a: number | string, b: number | string, isAsc: boolean): number {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n /**\r\n * generate serial as note with format ['serial'*Quantity]\r\n * ex: [00AS32*6, 0089A]\r\n * @param serials \r\n * @returns \r\n */\r\n public static generateSerialasNote(serials: any[] = []) {\r\n let serialNote: string = '';\r\n if (serials && serials.length > 0) {\r\n let serialASString = serials.map((serial, i) => {\r\n return `${i > 0 ? \" \" : \"\"}${serial.Number}${(serial.Quantity > 1 || serial.Quantity < 0) ? \"*\" + serial.Quantity : \"\"}`;\r\n });\r\n serialNote = `[${serialASString}]`;\r\n }\r\n return serialNote;\r\n }\r\n\r\n public static getDatesInRange(startDate: Date, endDate: Date): Date[] {\r\n const date = new Date(startDate.getTime());\r\n\r\n const dates = [];\r\n\r\n while (date <= endDate) {\r\n dates.push(new Date(date));\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n /**\r\n * @param date \r\n * @param daysBefore \r\n * @returns \r\n */\r\n public static getDaysBefore(date: Date, daysBefore: number): Date {\r\n return new Date(date.setDate(new Date().getDate() - daysBefore))\r\n }\r\n\r\n /**\r\n * get first and last day by month and year\r\n * @param month \r\n * @param year \r\n * @returns \r\n */\r\n public static getRangeDate(month: number, year: number) {\r\n const date = new Date();\r\n date.setMonth(month);\r\n date.setFullYear(year);\r\n let firstDay = new Date(date.getFullYear(), date.getMonth() - 1, 1);\r\n let lastDay = new Date(date.getFullYear(), date.getMonth(), 0);\r\n return {\r\n firstDay: firstDay,\r\n lastDay: lastDay\r\n }\r\n }\r\n\r\n public static setDateTime(time: string, date: Date): Date {\r\n let newDate = new Date();\r\n if (date) {\r\n newDate = new Date(date);\r\n }\r\n let times = time.split(\":\");\r\n newDate.setHours(parseInt(times[0]));\r\n newDate.setMinutes(parseInt(times[1]));\r\n return newDate;\r\n }\r\n public static isMaskingField(value = \"\"): boolean {\r\n const hasQuestionMark = (value as string).includes(\"?\");\r\n return hasQuestionMark;\r\n }\r\n\r\n public static generateMaskingField(configMaskingField: string[] = []) {\r\n let maskingFields = {};\r\n configMaskingField\r\n .forEach((field, i) => {\r\n field = field.split(' ')?.join('');\r\n maskingFields = { ...maskingFields, [field]: true }\r\n });\r\n return maskingFields;\r\n }\r\n /**\r\n * Check if JS API function is supported in a current browser\r\n * @param api ex: structuredClone\r\n */\r\n public static checkJSApiSupported(api: string): boolean {\r\n let isSupported: boolean;\r\n if (api in window) {\r\n isSupported = true;\r\n }\r\n else {\r\n isSupported = false;\r\n }\r\n return isSupported;\r\n }\r\n\r\n /**\r\n * copy of all elements of the original object. \r\n * Changes made to the original object will not be reflected in the copy\r\n * @param object \r\n * @param type \r\n */\r\n public static cloneObject(object: any): any {\r\n let newObject: any;\r\n if (this.checkJSApiSupported('structuredClone')) {\r\n newObject = structuredClone(object);\r\n }\r\n else {\r\n newObject = JSON.parse(JSON.stringify(object));\r\n }\r\n return newObject;\r\n }\r\n /**\r\n * format title for from filter to showing in title\r\n * @param startDate\r\n * @param endDate\r\n * @returns\r\n */\r\n static formatTitleFromDate(startDate: Date, endDate: Date): string | null {\r\n let format = null;\r\n const startDateObj = new Date(startDate);\r\n const endDateObj = new Date(endDate);\r\n\r\n if (startDateObj.getDate() != endDateObj.getDate()) {\r\n format = \"d\";\r\n }\r\n\r\n // set format only days on same month\r\n if (startDateObj.getMonth() != endDateObj.getMonth()) {\r\n format = \"d MMM\";\r\n }\r\n\r\n // set full format when different year\r\n if (startDateObj.getFullYear() != endDateObj.getFullYear()) {\r\n format = \"d MMM yyyy\";\r\n }\r\n\r\n return format;\r\n }\r\n}\r\n\r\nexport function getImageInfo(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let image = new Image();\r\n image.src = src;\r\n image\r\n .decode()\r\n .then(() => {\r\n resolve({\r\n img: src,\r\n height: image.height,\r\n width: image.width\r\n });\r\n })\r\n .catch(() => {\r\n reject(new Error(`Image load error for ${src}`));\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\nexport class LocalDataKey {\r\n static OfflineQueryMode = \"OfflineQueryMode\";\r\n static POSStorage = \"POSStorage\";\r\n static Products = \"Products\";\r\n static Customers = \"Customers\";\r\n static OutletPrices = \"OutletPrices\";\r\n static Outlet = \"Outlet\";\r\n static Parks = \"Parks\";\r\n static Orders = \"Orders\";\r\n static FailedOrders = \"FailedOrders\";\r\n static CompletedOrders = \"CompletedOrders\";\r\n static NewCustomers = \"NewCustomers\";\r\n\r\n static GetRewardByPromotionID = \"/API/POS/GetRewardByPromotionID\";\r\n static GetListPromotion = \"/API/POS/Promotion\";\r\n\r\n static GenerateGopayQrCode = \"/API/POS/GenerateGoPayQrCode\";\r\n static GenerateEmpatKaliQrCode = \"/API/POS/GenerateEmpatKaliQrCode\";\r\n\r\n static VerifyPayment = \"/API/PaymentNotification/VerifyPayment\";\r\n static PayWithOvo = \"/API/POS/PayWithOvo\";\r\n\r\n static InvoiceA4 = \"/API/Print/Invoice\";\r\n static UploadCsv = \"/API/POS/UploadCsv\";\r\n static UploadCsvBuy = \"/API/Buy/UploadCsv\";\r\n\r\n static GenerateCommission = \"/API/Transaction/GetCommission\";\r\n\r\n static InvoiceInfo = \"/api/Invoice/InvoiceInfo\";\r\n static GenerateLink = \"/API/PayNow/GenerateLink\";\r\n\r\n //Buy\r\n static LoadFormBuy = \"/API/Buy2/Load\";\r\n static BuyGetOutletInfo = \"/API/Buy2/GetOutletInfo\";\r\n static BuyGenerateNumber = \"/API/Buy/GenerateNumber\";\r\n static BuyGetDataByID = \"/API/Buy2/GetDataByID\";\r\n static GetQuickKey = \"/API/catalog/product/GetQuickKey\";\r\n static GetPrintTemplateID = \"/API/Buy/GetPrintTemplateID\";\r\n static GetVariantStockByID = \"/API/catalog/variant/GetInventoryByVariantID\";\r\n static GetSupplierInvoice = \"/API/Buy/GetSupplierInvoiceRetur\";\r\n static GetSupplierDTO = \"/API/Contact/GetSupplierDTO\";\r\n\r\n //DELIVERY\r\n static LoadFormDelivery = \"/API/TransferOrderLoader/LoadForm\";\r\n static DeliveryGenerateNumber = \"/API/TransferOrder/GenerateNumber\";\r\n static UpdateCourierList = \"/API/TransferOrder/UpdateCourierList\";\r\n static SubmitOutletDelivery = \"/API/TransferOrder/SubmitOrder\";\r\n static ClearOutlet = \"/API/TransferOrder/ClearOutlet\";\r\n static PaymentListSorting = \"/API/Setup/SortPaymentMethod\"\r\n static TaxListSorting = \"/API/Setup/SortTax\"\r\n\r\n // ESTIMATE\r\n static LoadFormEstimate = \"/API/Estimate/LoadForm\";\r\n static EstimateGenerateNumber = \"/API/Estimate/GenerateNumber\";\r\n static SubmitEstimate = \"/API/Estimate/SubmitOrder\";\r\n\r\n // ADJUSTMENT\r\n static LoadFormAdjustment = \"/API/Adjustment/LoadForm\";\r\n static AdjustmentGenerateNumber = \"/API/Adjustment/GenerateNumber\";\r\n static SubmitAdjustment = \"/API/Adjustment/SubmitOrder\";\r\n\r\n // INVENTORY\r\n static ForecastData = \"Inventory/Daystozero\";\r\n static ForecastLoader = \"InventoryLoader/Daystozero\";\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dealpos-npm/ng-dealpos-library",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.4",
6
6
  "@angular/core": "^17.3.4",
@@ -74,18 +74,18 @@
74
74
  "esm": "./esm2022/components/radio-options/dealpos-npm-ng-dealpos-library-components-radio-options.mjs",
75
75
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-radio-options.mjs"
76
76
  },
77
- "./components/tinymce-editor": {
78
- "types": "./components/tinymce-editor/index.d.ts",
79
- "esm2022": "./esm2022/components/tinymce-editor/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs",
80
- "esm": "./esm2022/components/tinymce-editor/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs",
81
- "default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs"
82
- },
83
77
  "./components/toastr": {
84
78
  "types": "./components/toastr/index.d.ts",
85
79
  "esm2022": "./esm2022/components/toastr/dealpos-npm-ng-dealpos-library-components-toastr.mjs",
86
80
  "esm": "./esm2022/components/toastr/dealpos-npm-ng-dealpos-library-components-toastr.mjs",
87
81
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-toastr.mjs"
88
82
  },
83
+ "./components/tinymce-editor": {
84
+ "types": "./components/tinymce-editor/index.d.ts",
85
+ "esm2022": "./esm2022/components/tinymce-editor/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs",
86
+ "esm": "./esm2022/components/tinymce-editor/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs",
87
+ "default": "./fesm2022/dealpos-npm-ng-dealpos-library-components-tinymce-editor.mjs"
88
+ },
89
89
  "./directives/autonumeric": {
90
90
  "types": "./directives/autonumeric/index.d.ts",
91
91
  "esm2022": "./esm2022/directives/autonumeric/dealpos-npm-ng-dealpos-library-directives-autonumeric.mjs",