brainloper-ui 14.0.42 → 14.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/esm2020/brainloper-ui.mjs +4 -4
  2. package/esm2020/public_api.mjs +55 -55
  3. package/esm2020/src/app/modules/brainloper-ui/brainloper-ui.module.mjs +309 -309
  4. package/esm2020/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.mjs +28 -28
  5. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.mjs +22 -22
  6. package/esm2020/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.mjs +82 -82
  7. package/esm2020/src/app/modules/brainloper-ui/components/carousel/carousel.component.mjs +36 -36
  8. package/esm2020/src/app/modules/brainloper-ui/components/combos/combos.component.mjs +175 -175
  9. package/esm2020/src/app/modules/brainloper-ui/components/data-table/data-table.component.mjs +728 -732
  10. package/esm2020/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.mjs +117 -117
  11. package/esm2020/src/app/modules/brainloper-ui/components/file-input/file-input.component.mjs +185 -185
  12. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.mjs +1 -1
  13. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.mjs +1 -1
  14. package/esm2020/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.mjs +1 -1
  15. package/esm2020/src/app/modules/brainloper-ui/components/filters/filters.component.mjs +221 -221
  16. package/esm2020/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.mjs +79 -79
  17. package/esm2020/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.mjs +80 -80
  18. package/esm2020/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.mjs +107 -107
  19. package/esm2020/src/app/modules/directives/carousel-item.directive.mjs +17 -17
  20. package/esm2020/src/app/modules/interfaces/buttons/button-icon.mjs +1 -1
  21. package/esm2020/src/app/modules/interfaces/buttons/button-lavel-edit.mjs +1 -1
  22. package/esm2020/src/app/modules/interfaces/combos/combos-configuration.mjs +1 -1
  23. package/esm2020/src/app/modules/interfaces/data-table/params.mjs +1 -1
  24. package/esm2020/src/app/modules/interfaces/data-table/rules.mjs +1 -1
  25. package/esm2020/src/app/modules/interfaces/data-table/table-columns.mjs +1 -1
  26. package/esm2020/src/app/modules/interfaces/data-table/table-configuration.mjs +1 -1
  27. package/esm2020/src/app/modules/interfaces/enum/enumActions.mjs +7 -7
  28. package/esm2020/src/app/modules/interfaces/enum/enumRules.mjs +7 -7
  29. package/esm2020/src/app/modules/interfaces/file-forms-service/file-forms-params.mjs +1 -1
  30. package/esm2020/src/app/modules/interfaces/file-forms-service/file-input-params.mjs +1 -1
  31. package/esm2020/src/app/modules/interfaces/filters/header-filters.mjs +1 -1
  32. package/esm2020/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.mjs +7 -7
  33. package/esm2020/src/app/modules/interfaces/report/template-pdf-ot.mjs +1 -1
  34. package/esm2020/src/app/modules/interfaces/report/template-pfd-fo.mjs +1 -1
  35. package/esm2020/src/app/modules/services/crypto.service.mjs +36 -36
  36. package/esm2020/src/app/modules/services/export-data.service.mjs +165 -165
  37. package/esm2020/src/app/modules/services/file-forms.service.mjs +23 -23
  38. package/esm2020/src/app/modules/services/functions.service.mjs +53 -53
  39. package/esm2020/src/app/modules/services/generate-pdf.service.mjs +57 -57
  40. package/esm2020/src/app/modules/services/http.service.mjs +96 -96
  41. package/esm2020/src/app/modules/services/loading/loading.component.mjs +27 -27
  42. package/esm2020/src/app/modules/services/local-storage.service.mjs +114 -114
  43. package/esm2020/src/app/modules/services/message.service.mjs +199 -199
  44. package/esm2020/src/app/modules/services/screen-size-util.mjs +5 -5
  45. package/esm2020/src/app/modules/services/session.service.mjs +41 -41
  46. package/fesm2015/brainloper-ui.mjs +2809 -2813
  47. package/fesm2015/brainloper-ui.mjs.map +1 -1
  48. package/fesm2020/brainloper-ui.mjs +2769 -2773
  49. package/fesm2020/brainloper-ui.mjs.map +1 -1
  50. package/index.d.ts +5 -5
  51. package/package.json +1 -1
  52. package/public_api.d.ts +55 -55
  53. package/src/app/modules/brainloper-ui/brainloper-ui.module.d.ts +74 -74
  54. package/src/app/modules/brainloper-ui/components/bread-crumb/bread-crumb.component.d.ts +13 -13
  55. package/src/app/modules/brainloper-ui/components/buttons/button-icon/button-icon.component.d.ts +10 -10
  56. package/src/app/modules/brainloper-ui/components/buttons/button-label/button-label.component.d.ts +24 -24
  57. package/src/app/modules/brainloper-ui/components/carousel/carousel.component.d.ts +15 -15
  58. package/src/app/modules/brainloper-ui/components/combos/combos.component.d.ts +46 -46
  59. package/src/app/modules/brainloper-ui/components/data-table/data-table.component.d.ts +125 -125
  60. package/src/app/modules/brainloper-ui/components/data-table/table-modal/table-modal.component.d.ts +21 -21
  61. package/src/app/modules/brainloper-ui/components/file-input/file-input.component.d.ts +42 -42
  62. package/src/app/modules/brainloper-ui/components/file-input/imagenes/doc.d.ts +2 -2
  63. package/src/app/modules/brainloper-ui/components/file-input/imagenes/fondoTransparente.d.ts +2 -2
  64. package/src/app/modules/brainloper-ui/components/file-input/imagenes/pdf.d.ts +2 -2
  65. package/src/app/modules/brainloper-ui/components/filters/filters.component.d.ts +30 -30
  66. package/src/app/modules/brainloper-ui/components/report/generate-pdf/generate-pdf.component.d.ts +35 -35
  67. package/src/app/modules/brainloper-ui/components/report/template-fuel/template-fuel.component.d.ts +36 -36
  68. package/src/app/modules/brainloper-ui/components/select-filter/select-filter.component.d.ts +26 -26
  69. package/src/app/modules/directives/carousel-item.directive.d.ts +9 -9
  70. package/src/app/modules/interfaces/buttons/button-icon.d.ts +9 -9
  71. package/src/app/modules/interfaces/buttons/button-lavel-edit.d.ts +6 -6
  72. package/src/app/modules/interfaces/combos/combos-configuration.d.ts +13 -13
  73. package/src/app/modules/interfaces/data-table/params.d.ts +7 -7
  74. package/src/app/modules/interfaces/data-table/rules.d.ts +8 -8
  75. package/src/app/modules/interfaces/data-table/table-columns.d.ts +25 -25
  76. package/src/app/modules/interfaces/data-table/table-configuration.d.ts +26 -26
  77. package/src/app/modules/interfaces/enum/enumActions.d.ts +6 -6
  78. package/src/app/modules/interfaces/enum/enumRules.d.ts +6 -6
  79. package/src/app/modules/interfaces/file-forms-service/file-forms-params.d.ts +4 -4
  80. package/src/app/modules/interfaces/file-forms-service/file-input-params.d.ts +13 -13
  81. package/src/app/modules/interfaces/filters/header-filters.d.ts +13 -13
  82. package/src/app/modules/interfaces/menu-break-crumb/menu-break-crumb.d.ts +10 -10
  83. package/src/app/modules/interfaces/report/template-pdf-ot.d.ts +19 -19
  84. package/src/app/modules/interfaces/report/template-pfd-fo.d.ts +20 -20
  85. package/src/app/modules/services/crypto.service.d.ts +10 -10
  86. package/src/app/modules/services/export-data.service.d.ts +18 -18
  87. package/src/app/modules/services/file-forms.service.d.ts +7 -7
  88. package/src/app/modules/services/functions.service.d.ts +13 -13
  89. package/src/app/modules/services/generate-pdf.service.d.ts +12 -12
  90. package/src/app/modules/services/http.service.d.ts +22 -22
  91. package/src/app/modules/services/loading/loading.component.d.ts +15 -15
  92. package/src/app/modules/services/local-storage.service.d.ts +49 -49
  93. package/src/app/modules/services/message.service.d.ts +23 -23
  94. package/src/app/modules/services/screen-size-util.d.ts +3 -3
  95. package/src/app/modules/services/session.service.d.ts +14 -14
@@ -1,115 +1,115 @@
1
- import { compress, decompress } from 'lz-string';
2
- import { Injectable } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class LocalStorageService {
5
- constructor() {
6
- this.prefix = 'bl-f';
7
- this.store = window.localStorage;
8
- this.prefix += '.';
9
- }
10
- /**
11
- * set key in local storage
12
- * @param key key
13
- * @param value value
14
- */
15
- set(key, value) {
16
- key = this.prefix + key;
17
- this.store.setItem(key, compress(JSON.stringify(value))); // compress data
18
- return true;
19
- }
20
- /**
21
- * get key in local storage
22
- * @param key key
23
- * @returns value as object
24
- */
25
- get(key) {
26
- key = this.prefix + key;
27
- const datacompressed = this.store.getItem(key);
28
- if (!datacompressed) {
29
- return null;
30
- }
31
- const item = decompress(datacompressed); // decompress
32
- return JSON.parse(item);
33
- }
34
- /**
35
- * remove a key
36
- * @param key key to remove
37
- * @returns boolean
38
- */
39
- remove(key) {
40
- key = this.prefix + key;
41
- this.store.removeItem(key);
42
- return true;
43
- }
44
- /**
45
- * clear all
46
- * @returns boolean
47
- */
48
- clear() {
49
- this.store.clear();
50
- return true;
51
- }
52
- /**
53
- * get all keys present in local storage
54
- * @returns array of keys
55
- */
56
- getAllKeys() {
57
- let keys = [];
58
- for (let index = 0; index < this.store.length; index++) {
59
- const key = this.store.key(index);
60
- if (key.indexOf(this.prefix) === 0) {
61
- keys.push(key.substr(this.prefix.length));
62
- }
63
- }
64
- return keys;
65
- }
66
- /**
67
- * set key with expire time
68
- * @param key key
69
- * @param value value
70
- * @returns true if set correctly
71
- */
72
- setWhitExpiry(key, value) {
73
- const now = new Date();
74
- const ttl = 3600 * 1000;
75
- const item = {
76
- value: value,
77
- expiry: now.getTime() + ttl,
78
- };
79
- key = this.prefix + key;
80
- this.store.setItem(key, compress(JSON.stringify(item))); // compress data
81
- return true;
82
- }
83
- /**
84
- * return key with expire time
85
- * @param key key
86
- * @returns return object with data or null if key expired
87
- */
88
- getWithExpiry(key) {
89
- key = this.prefix + key;
90
- const datacompressed = this.store.getItem(key);
91
- if (!datacompressed) {
92
- return null;
93
- }
94
- const itemStr = decompress(datacompressed); // decompress
95
- const item = JSON.parse(itemStr);
96
- const now = new Date();
97
- if (!item) {
98
- return null;
99
- }
100
- if (now.getTime() > item.expiry) {
101
- this.store.removeItem(key);
102
- return null;
103
- }
104
- return item.value;
105
- }
106
- }
107
- LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
- LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
110
- type: Injectable,
111
- args: [{
112
- providedIn: 'root',
113
- }]
114
- }], ctorParameters: function () { return []; } });
1
+ import { compress, decompress } from 'lz-string';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class LocalStorageService {
5
+ constructor() {
6
+ this.prefix = 'bl-f';
7
+ this.store = window.localStorage;
8
+ this.prefix += '.';
9
+ }
10
+ /**
11
+ * set key in local storage
12
+ * @param key key
13
+ * @param value value
14
+ */
15
+ set(key, value) {
16
+ key = this.prefix + key;
17
+ this.store.setItem(key, compress(JSON.stringify(value))); // compress data
18
+ return true;
19
+ }
20
+ /**
21
+ * get key in local storage
22
+ * @param key key
23
+ * @returns value as object
24
+ */
25
+ get(key) {
26
+ key = this.prefix + key;
27
+ const datacompressed = this.store.getItem(key);
28
+ if (!datacompressed) {
29
+ return null;
30
+ }
31
+ const item = decompress(datacompressed); // decompress
32
+ return JSON.parse(item);
33
+ }
34
+ /**
35
+ * remove a key
36
+ * @param key key to remove
37
+ * @returns boolean
38
+ */
39
+ remove(key) {
40
+ key = this.prefix + key;
41
+ this.store.removeItem(key);
42
+ return true;
43
+ }
44
+ /**
45
+ * clear all
46
+ * @returns boolean
47
+ */
48
+ clear() {
49
+ this.store.clear();
50
+ return true;
51
+ }
52
+ /**
53
+ * get all keys present in local storage
54
+ * @returns array of keys
55
+ */
56
+ getAllKeys() {
57
+ let keys = [];
58
+ for (let index = 0; index < this.store.length; index++) {
59
+ const key = this.store.key(index);
60
+ if (key.indexOf(this.prefix) === 0) {
61
+ keys.push(key.substr(this.prefix.length));
62
+ }
63
+ }
64
+ return keys;
65
+ }
66
+ /**
67
+ * set key with expire time
68
+ * @param key key
69
+ * @param value value
70
+ * @returns true if set correctly
71
+ */
72
+ setWhitExpiry(key, value) {
73
+ const now = new Date();
74
+ const ttl = 3600 * 1000;
75
+ const item = {
76
+ value: value,
77
+ expiry: now.getTime() + ttl,
78
+ };
79
+ key = this.prefix + key;
80
+ this.store.setItem(key, compress(JSON.stringify(item))); // compress data
81
+ return true;
82
+ }
83
+ /**
84
+ * return key with expire time
85
+ * @param key key
86
+ * @returns return object with data or null if key expired
87
+ */
88
+ getWithExpiry(key) {
89
+ key = this.prefix + key;
90
+ const datacompressed = this.store.getItem(key);
91
+ if (!datacompressed) {
92
+ return null;
93
+ }
94
+ const itemStr = decompress(datacompressed); // decompress
95
+ const item = JSON.parse(itemStr);
96
+ const now = new Date();
97
+ if (!item) {
98
+ return null;
99
+ }
100
+ if (now.getTime() > item.expiry) {
101
+ this.store.removeItem(key);
102
+ return null;
103
+ }
104
+ return item.value;
105
+ }
106
+ }
107
+ LocalStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
+ LocalStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: LocalStorageService, decorators: [{
110
+ type: Injectable,
111
+ args: [{
112
+ providedIn: 'root',
113
+ }]
114
+ }], ctorParameters: function () { return []; } });
115
115
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCO1FBRlEsV0FBTSxHQUFXLE1BQU0sQ0FBQztRQUN4QixVQUFLLEdBQVEsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUV2QyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBSSxHQUFXLEVBQUUsS0FBUTtRQUMxQixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFQTs7OztPQUlHO0lBQ0osR0FBRyxDQUFJLEdBQVc7UUFDaEIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQVcsQ0FBQyxDQUFDLGFBQWE7UUFDaEUsT0FBTyxJQUFJLENB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bXBvcnQgeyBjb21wcmVzcywgZGVjb21wcmVzcyB9IGZyb20gJ2x6LXN0cmluZyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwcmVmaXg6IHN0cmluZyA9ICdibC1mJztcbiAgcHJpdmF0ZSBzdG9yZTogYW55ID0gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wcmVmaXggKz0gJy4nO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCBrZXkgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5ICBrZXlcbiAgICogQHBhcmFtIHZhbHVlICB2YWx1ZVxuICAgKi9cbiAgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCkgOiBib29sZWFue1xuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xuICAgIHRoaXMuc3RvcmUuc2V0SXRlbShrZXksIGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkpOyAvLyBjb21wcmVzcyBkYXRhXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAgLyoqXG4gICAgKiBnZXQga2V5IGluIGxvY2FsIHN0b3JhZ2VcbiAgICAqIEBwYXJhbSBrZXkgIGtleVxuICAgICogQHJldHVybnMgIHZhbHVlIGFzIG9iamVjdFxuICAgICovXG4gIGdldDxUPihrZXk6IHN0cmluZykgOiBUIHwgbnVsbCB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIWRhdGFjb21wcmVzc2VkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaXRlbSA9IGRlY29tcHJlc3MoZGF0YWNvbXByZXNzZWQpIGFzIHN0cmluZzsgLy8gZGVjb21wcmVzc1xuICAgIHJldHVybiBKU09OLnBhcnNlKGl0ZW0pIGFzIFQ7XG4gIH1cbiAgLyoqXG4gICAqIHJlbW92ZSBhIGtleVxuICAgKiBAcGFyYW0ga2V5IGtleSB0byByZW1vdmVcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgcmVtb3ZlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgdGhpcy5zdG9yZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAgIC8qKlxuICAgKiBjbGVhciBhbGxcbiAgICogQHJldHVybnMgYm9vbGVhblxuICAgKi9cbiAgY2xlYXIoKTpib29sZWFue1xuICAgIHRoaXMuc3RvcmUuY2xlYXIoKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhbGwga2V5cyBwcmVzZW50IGluIGxvY2FsIHN0b3JhZ2VcbiAgICogQHJldHVybnMgIGFycmF5IG9mIGtleXNcbiAgICovXG4gIGdldEFsbEtleXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgbGV0IGtleXMgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zdG9yZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc3RvcmUua2V5KGluZGV4KTtcbiAgICAgIGlmIChrZXkuaW5kZXhPZih0aGlzLnByZWZpeCkgPT09IDApIHtcbiAgICAgICAga2V5cy5wdXNoKGtleS5zdWJzdHIodGhpcy5wcmVmaXgubGVuZ3RoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXlzO1xuICB9XG5cbiAgLyoqXG4gICAqIHNldCBrZXkgd2l0aCBleHBpcmUgdGltZVxuICAgKiBAcGFyYW0ga2V5IGtleVxuICAgKiBAcGFyYW0gdmFsdWUgIHZhbHVlXG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2V0IGNvcnJlY3RseVxuICAgKi9cbiAgc2V0V2hpdEV4cGlyeTxUPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHR0bCA9IDM2MDAgKiAxMDAwO1xuICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBleHBpcnk6IG5vdy5nZXRUaW1lKCkgKyB0dGwsXG4gICAgfTtcblxuICAgIGtleSA9IHRoaXMucHJlZml4ICsga2V5O1xuICAgIHRoaXMuc3RvcmUuc2V0SXRlbShrZXksIGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KGl0ZW0pKSk7IC8vIGNvbXByZXNzIGRhdGFcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuIC8qKlxuICAqIHJldHVybiBrZXkgd2l0aCBleHBpcmUgdGltZVxuICAqIEBwYXJhbSBrZXkga2V5XG4gICogQHJldHVybnMgcmV0dXJuIG9iamVjdCB3aXRoIGRhdGEgb3IgbnVsbCBpZiBrZXkgZXhwaXJlZFxuICAqL1xuXG4gIGdldFdpdGhFeHBpcnk8VD4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAga2V5ID0gdGhpcy5wcmVmaXggKyBrZXk7XG4gICAgY29uc3QgZGF0YWNvbXByZXNzZWQgPSB0aGlzLnN0b3JlLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIWRhdGFjb21wcmVzc2VkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgaXRlbVN0ciA9IGRlY29tcHJlc3MoZGF0YWNvbXByZXNzZWQpIGFzIHN0cmluZzsgLy8gZGVjb21wcmVzc1xuXG4gICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoaXRlbVN0cik7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAobm93LmdldFRpbWUoKSA+IGl0ZW0uZXhwaXJ5KSB7XG4gICAgICB0aGlzLnN0b3JlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbS52YWx1ZSBhcyBUO1xuICB9XG59XG4iXX0=