zek 17.3.119 → 19.0.1

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 (187) hide show
  1. package/README.md +49 -10
  2. package/fesm2022/zek.mjs +856 -750
  3. package/fesm2022/zek.mjs.map +1 -1
  4. package/lib/components/base.component.d.ts +1 -1
  5. package/lib/components/core-ui.component.d.ts +1 -1
  6. package/lib/components/core.component.d.ts +1 -1
  7. package/lib/components/edit-base.component.d.ts +3 -3
  8. package/lib/components/list-base.component.d.ts +1 -1
  9. package/lib/modules/bb/bb-modal-base.d.ts +1 -1
  10. package/lib/modules/validators/directive.d.ts +1 -1
  11. package/package.json +3 -5
  12. package/esm2022/lib/components/args.mjs +0 -2
  13. package/esm2022/lib/components/base.component.mjs +0 -101
  14. package/esm2022/lib/components/core-ui.component.mjs +0 -193
  15. package/esm2022/lib/components/core.component.mjs +0 -46
  16. package/esm2022/lib/components/edit-base.component.mjs +0 -226
  17. package/esm2022/lib/components/index.mjs +0 -8
  18. package/esm2022/lib/components/list-base.component.mjs +0 -311
  19. package/esm2022/lib/components/types.mjs +0 -2
  20. package/esm2022/lib/directives/delayed-input.directive.mjs +0 -57
  21. package/esm2022/lib/directives/index.mjs +0 -2
  22. package/esm2022/lib/models/alert-type.mjs +0 -2
  23. package/esm2022/lib/models/api.mjs +0 -2
  24. package/esm2022/lib/models/approve.moodel.mjs +0 -2
  25. package/esm2022/lib/models/batch.model.mjs +0 -2
  26. package/esm2022/lib/models/captcha.model.mjs +0 -2
  27. package/esm2022/lib/models/ctor.mjs +0 -2
  28. package/esm2022/lib/models/edit-base.model.mjs +0 -3
  29. package/esm2022/lib/models/file.model.mjs +0 -2
  30. package/esm2022/lib/models/filter.model.mjs +0 -12
  31. package/esm2022/lib/models/gender.model.mjs +0 -6
  32. package/esm2022/lib/models/index.mjs +0 -22
  33. package/esm2022/lib/models/key-pair.model.mjs +0 -14
  34. package/esm2022/lib/models/list-base.model.mjs +0 -3
  35. package/esm2022/lib/models/login.model.mjs +0 -2
  36. package/esm2022/lib/models/modal-size.mjs +0 -2
  37. package/esm2022/lib/models/month.model.mjs +0 -16
  38. package/esm2022/lib/models/nav.model.mjs +0 -2
  39. package/esm2022/lib/models/pager.model.mjs +0 -33
  40. package/esm2022/lib/models/print.model.mjs +0 -6
  41. package/esm2022/lib/models/tree.mjs +0 -2
  42. package/esm2022/lib/models/tree.model.mjs +0 -7
  43. package/esm2022/lib/models/valid-event-args.model.mjs +0 -6
  44. package/esm2022/lib/modules/age/age.pipe.mjs +0 -22
  45. package/esm2022/lib/modules/age/index.mjs +0 -2
  46. package/esm2022/lib/modules/alert/alert/alert.mjs +0 -48
  47. package/esm2022/lib/modules/alert/index.mjs +0 -5
  48. package/esm2022/lib/modules/alert/toast/toast.mjs +0 -119
  49. package/esm2022/lib/modules/alert/validation/validation.mjs +0 -56
  50. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +0 -25
  51. package/esm2022/lib/modules/autocomplete/index.mjs +0 -2
  52. package/esm2022/lib/modules/bb/bb-modal-base.mjs +0 -74
  53. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  54. package/esm2022/lib/modules/bb/bb.component.mjs +0 -207
  55. package/esm2022/lib/modules/bb/bb.module.mjs +0 -37
  56. package/esm2022/lib/modules/bb/index.mjs +0 -5
  57. package/esm2022/lib/modules/callback/callback.pipe.mjs +0 -23
  58. package/esm2022/lib/modules/callback/index.mjs +0 -2
  59. package/esm2022/lib/modules/card/card/card.mjs +0 -48
  60. package/esm2022/lib/modules/card/index.mjs +0 -2
  61. package/esm2022/lib/modules/countdown/countdown.mjs +0 -103
  62. package/esm2022/lib/modules/countdown/index.mjs +0 -2
  63. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +0 -45
  64. package/esm2022/lib/modules/date-ago/index.mjs +0 -2
  65. package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  66. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +0 -31
  67. package/esm2022/lib/modules/datepicker/index.mjs +0 -3
  68. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.mjs +0 -94
  69. package/esm2022/lib/modules/edit-toolbar/index.mjs +0 -2
  70. package/esm2022/lib/modules/file/file-size.pipe.mjs +0 -50
  71. package/esm2022/lib/modules/file/index.mjs +0 -2
  72. package/esm2022/lib/modules/file-input/file-input.mjs +0 -79
  73. package/esm2022/lib/modules/file-input/index.mjs +0 -2
  74. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +0 -53
  75. package/esm2022/lib/modules/file-viewer/index.mjs +0 -2
  76. package/esm2022/lib/modules/google-login-button/google-login-button.mjs +0 -135
  77. package/esm2022/lib/modules/google-login-button/index.mjs +0 -3
  78. package/esm2022/lib/modules/google-login-button/loader.mjs +0 -10
  79. package/esm2022/lib/modules/google-login-button/module.mjs +0 -40
  80. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.mjs +0 -147
  81. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.mjs +0 -16
  82. package/esm2022/lib/modules/grid-toolbar/index.mjs +0 -3
  83. package/esm2022/lib/modules/index.mjs +0 -39
  84. package/esm2022/lib/modules/list-toolbar/index.mjs +0 -2
  85. package/esm2022/lib/modules/list-toolbar/list-toolbar.mjs +0 -112
  86. package/esm2022/lib/modules/loading/index.mjs +0 -4
  87. package/esm2022/lib/modules/loading/loading-interceptor.mjs +0 -59
  88. package/esm2022/lib/modules/loading/loading.mjs +0 -33
  89. package/esm2022/lib/modules/loading/loading.module.mjs +0 -32
  90. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -23
  91. package/esm2022/lib/modules/modal/index.mjs +0 -5
  92. package/esm2022/lib/modules/modal/modal/modal.component.mjs +0 -355
  93. package/esm2022/lib/modules/modal/modal.module.mjs +0 -62
  94. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  95. package/esm2022/lib/modules/numeric/index.mjs +0 -2
  96. package/esm2022/lib/modules/numeric/numeric.directive.mjs +0 -92
  97. package/esm2022/lib/modules/page-title/index.mjs +0 -2
  98. package/esm2022/lib/modules/page-title/page-title.component.mjs +0 -33
  99. package/esm2022/lib/modules/pager/index.mjs +0 -2
  100. package/esm2022/lib/modules/pager/pager/pager.mjs +0 -52
  101. package/esm2022/lib/modules/password/index.mjs +0 -2
  102. package/esm2022/lib/modules/password/password.mjs +0 -48
  103. package/esm2022/lib/modules/progress/index.mjs +0 -2
  104. package/esm2022/lib/modules/progress/progress.mjs +0 -97
  105. package/esm2022/lib/modules/radio/index.mjs +0 -2
  106. package/esm2022/lib/modules/radio/radio.mjs +0 -133
  107. package/esm2022/lib/modules/readonly/index.mjs +0 -2
  108. package/esm2022/lib/modules/readonly/readonly.directive.mjs +0 -29
  109. package/esm2022/lib/modules/recaptcha/index.mjs +0 -4
  110. package/esm2022/lib/modules/recaptcha/loader.mjs +0 -13
  111. package/esm2022/lib/modules/recaptcha/recaptcha.model.mjs +0 -2
  112. package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  113. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  114. package/esm2022/lib/modules/safe/index.mjs +0 -2
  115. package/esm2022/lib/modules/safe/safe.pipe.mjs +0 -40
  116. package/esm2022/lib/modules/select/index.mjs +0 -2
  117. package/esm2022/lib/modules/select/model.mjs +0 -4
  118. package/esm2022/lib/modules/select/select.mjs +0 -201
  119. package/esm2022/lib/modules/select2/index.mjs +0 -2
  120. package/esm2022/lib/modules/select2/select2.mjs +0 -172
  121. package/esm2022/lib/modules/select2-multiple/index.mjs +0 -2
  122. package/esm2022/lib/modules/select2-multiple/select2-multiple.mjs +0 -137
  123. package/esm2022/lib/modules/sort/index.mjs +0 -3
  124. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.mjs +0 -81
  125. package/esm2022/lib/modules/sort/sort.mjs +0 -120
  126. package/esm2022/lib/modules/tag/index.mjs +0 -2
  127. package/esm2022/lib/modules/tag/tag.mjs +0 -111
  128. package/esm2022/lib/modules/time/index.mjs +0 -4
  129. package/esm2022/lib/modules/time/time.module.mjs +0 -27
  130. package/esm2022/lib/modules/time/time.pipe.mjs +0 -40
  131. package/esm2022/lib/modules/time/timer-service.mjs +0 -89
  132. package/esm2022/lib/modules/tooltip/index.mjs +0 -2
  133. package/esm2022/lib/modules/tooltip/tooltip.mjs +0 -27
  134. package/esm2022/lib/modules/utc-to-local/index.mjs +0 -3
  135. package/esm2022/lib/modules/utc-to-local/local-to-utc.pipe.mjs +0 -39
  136. package/esm2022/lib/modules/utc-to-local/utc-to-local.pipe.mjs +0 -38
  137. package/esm2022/lib/modules/validator/field-validator.mjs +0 -17
  138. package/esm2022/lib/modules/validator/index.mjs +0 -2
  139. package/esm2022/lib/modules/validators/directive.mjs +0 -107
  140. package/esm2022/lib/modules/validators/index.mjs +0 -4
  141. package/esm2022/lib/modules/validators/module.mjs +0 -28
  142. package/esm2022/lib/modules/validators/validator.mjs +0 -119
  143. package/esm2022/lib/modules/wizard/index.mjs +0 -3
  144. package/esm2022/lib/modules/wizard/wizard/wizard.mjs +0 -66
  145. package/esm2022/lib/modules/wizard/wizard2/wizard2.mjs +0 -14
  146. package/esm2022/lib/services/alert.service.mjs +0 -74
  147. package/esm2022/lib/services/auth-guard.service.mjs +0 -13
  148. package/esm2022/lib/services/auth.service.mjs +0 -194
  149. package/esm2022/lib/services/base.service.mjs +0 -8
  150. package/esm2022/lib/services/cache-helper.mjs +0 -35
  151. package/esm2022/lib/services/crud.service.mjs +0 -48
  152. package/esm2022/lib/services/file.service.mjs +0 -32
  153. package/esm2022/lib/services/http-error-handler.service.mjs +0 -141
  154. package/esm2022/lib/services/index.mjs +0 -9
  155. package/esm2022/lib/services/web.api.mjs +0 -139
  156. package/esm2022/lib/tokens.mjs +0 -7
  157. package/esm2022/lib/utils/array-helper.mjs +0 -216
  158. package/esm2022/lib/utils/base64-helper.mjs +0 -18
  159. package/esm2022/lib/utils/bitwise-helper.mjs +0 -14
  160. package/esm2022/lib/utils/bootstrap.helper.mjs +0 -124
  161. package/esm2022/lib/utils/convert.mjs +0 -35
  162. package/esm2022/lib/utils/css-helper.mjs +0 -41
  163. package/esm2022/lib/utils/date-helper.mjs +0 -264
  164. package/esm2022/lib/utils/error-helper.mjs +0 -32
  165. package/esm2022/lib/utils/excel-helper.mjs +0 -13
  166. package/esm2022/lib/utils/file.helper.mjs +0 -75
  167. package/esm2022/lib/utils/filter-helper.mjs +0 -13
  168. package/esm2022/lib/utils/handler.mjs +0 -24
  169. package/esm2022/lib/utils/html-helper.mjs +0 -73
  170. package/esm2022/lib/utils/index.mjs +0 -28
  171. package/esm2022/lib/utils/interval-helper.mjs +0 -32
  172. package/esm2022/lib/utils/jwt-helper.mjs +0 -11
  173. package/esm2022/lib/utils/math-helper.mjs +0 -19
  174. package/esm2022/lib/utils/object-helper.mjs +0 -80
  175. package/esm2022/lib/utils/overlap-helper.mjs +0 -73
  176. package/esm2022/lib/utils/pager-helper.mjs +0 -63
  177. package/esm2022/lib/utils/random-helper.mjs +0 -16
  178. package/esm2022/lib/utils/storage-helper.mjs +0 -28
  179. package/esm2022/lib/utils/string-helper.mjs +0 -84
  180. package/esm2022/lib/utils/thenBy.mjs +0 -41
  181. package/esm2022/lib/utils/time-helper.mjs +0 -46
  182. package/esm2022/lib/utils/tmp-helper.mjs +0 -25
  183. package/esm2022/lib/utils/url-helper.mjs +0 -44
  184. package/esm2022/lib/utils/validation-helper.mjs +0 -10
  185. package/esm2022/lib/zek.module.mjs +0 -28
  186. package/esm2022/public-api.mjs +0 -12
  187. package/esm2022/zek.mjs +0 -5
@@ -1,216 +0,0 @@
1
- // import { KeyPair } from "../models/key-pair.model";
2
- // import { Tree } from "../models/tree.model";
3
- export class ArrayHelper {
4
- static insert(array, index, item) {
5
- array.splice(index, 0, item);
6
- }
7
- /**
8
- * Remove item from array
9
- * @param array
10
- * @param item item to remove
11
- */
12
- static remove(array, item) {
13
- const index = array.indexOf(item);
14
- if (index > -1) { // only splice array when item is found
15
- array.splice(index, 1); // 2nd parameter means remove one item only
16
- }
17
- }
18
- /**
19
- * Remove all items from array
20
- * @param array
21
- * @param item item to remove
22
- */
23
- static removeAll(array, item) {
24
- var i = 0;
25
- while (i < array.length) {
26
- if (array[i] === item) {
27
- array.splice(i, 1);
28
- }
29
- else {
30
- ++i;
31
- }
32
- }
33
- }
34
- static move(array, fromIndex, toIndex) {
35
- const item = array[fromIndex];
36
- array.splice(fromIndex, 1); //remove item frrom array
37
- array.splice(toIndex, 0, item); //insert item into array
38
- return array;
39
- }
40
- static contains(value, v) {
41
- for (let i = 0; i < value.length; i++) {
42
- if (value[i] === v)
43
- return true;
44
- }
45
- return false;
46
- }
47
- static isArray(value) {
48
- return Array.isArray(value) && value.length > 0;
49
- }
50
- // static distinct(value: any[]) {
51
- // var arr: any[] = [];
52
- // for (var i = 0; i < value.length; i++) {
53
- // let val = value[i];
54
- // if (!this.contains(arr, val)) {
55
- // arr.push(val);
56
- // }
57
- // }
58
- // return arr;
59
- // }
60
- static distinct(array) {
61
- const length = array.length;
62
- const result = [];
63
- const seen = new Set();
64
- for (let index = 0; index < length; index++) {
65
- const value = array[index];
66
- if (seen.has(value))
67
- continue;
68
- seen.add(value);
69
- result.push(value);
70
- }
71
- return result;
72
- }
73
- static filterByKey(filterValue, key, array) {
74
- if (typeof filterValue === 'undefined' || filterValue == null || (typeof key === 'string' && key.length === 0))
75
- return array;
76
- return array.filter(x => x !== undefined && x !== null && x[key] === filterValue);
77
- }
78
- static flatten(array, indent = 0) {
79
- let result = [];
80
- if (!Array.isArray(array)) {
81
- const flattenedItem = {
82
- ...array, // shallow copy the current item
83
- indent, // add the current indent level
84
- count: Array.isArray(array.children) ? array.children.length : 0 // set count based on children
85
- };
86
- delete flattenedItem.children;
87
- delete flattenedItem.childrenIds;
88
- result.push(flattenedItem);
89
- if (flattenedItem.count) {
90
- result.push(...this.flatten(array.children, indent + 1)); // Use spread operator for efficiency
91
- }
92
- return result;
93
- }
94
- else {
95
- for (const item of array) {
96
- result.push(...this.flatten(item, indent));
97
- }
98
- }
99
- return result;
100
- }
101
- /**
102
- * @deprecated use flattenDropDownList2
103
- */
104
- static flattenDropDownList(tree, indent = 0) {
105
- let result = [];
106
- // If the input is an array of trees, we process each one
107
- if (!Array.isArray(tree)) {
108
- // Add the current tree node to the result
109
- let item = {
110
- key: tree.key,
111
- value: '&emsp;'.repeat(indent) + tree.value,
112
- indent: indent,
113
- count: Array.isArray(tree.children) ? tree.children.length : 0
114
- };
115
- result.push(item);
116
- // If there are children, recursively flatten them
117
- if (Array.isArray(tree.children)) {
118
- result.push(...this.flattenDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency
119
- }
120
- }
121
- else {
122
- for (const item of tree) {
123
- result.push(...this.flattenDropDownList(item, indent));
124
- }
125
- }
126
- return result;
127
- }
128
- static flattenTreeNodeDropDownList(tree, indent = 0) {
129
- let result = [];
130
- // If the input is an array of trees, we process each one
131
- if (!Array.isArray(tree)) {
132
- // Add the current tree node to the result
133
- let item = {
134
- id: tree.id,
135
- name: '&emsp;'.repeat(indent) + tree.name,
136
- indent: indent,
137
- count: Array.isArray(tree.children) ? tree.children.length : 0
138
- };
139
- result.push(item);
140
- // If there are children, recursively flatten them
141
- if (Array.isArray(tree.children)) {
142
- result.push(...this.flattenTreeNodeDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency
143
- }
144
- }
145
- else {
146
- for (const item of tree) {
147
- result.push(...this.flattenTreeNodeDropDownList(item, indent));
148
- }
149
- }
150
- return result;
151
- }
152
- static enumToKeyPairBaseArray(value) {
153
- const keys = Object.keys(value);
154
- const slice = keys.length / 2;
155
- const result = [];
156
- // for (let i = 0; i < slice; i++) {
157
- // result.push({ key: +keys[i], value: keys[i + slice] } as T);
158
- // }
159
- for (let i = slice; i < keys.length; i++) {
160
- const name = keys[i];
161
- result.push({ key: +value[name], value: name });
162
- }
163
- return result;
164
- //return Array.from(keys.slice(keys.length / 2), x => { key:x, value:'aaa' } as Object);
165
- }
166
- static enumToKeyPairArray(value) {
167
- return this.enumToKeyPairBaseArray(value);
168
- }
169
- static enumToKeyPairExArray(value) {
170
- return this.enumToKeyPairBaseArray(value);
171
- }
172
- /**
173
- * Method to create a tree from a flat array of nodes
174
- * @param array
175
- * @param safe if tue and some nodes not have parent thand adds as a root node. if false than thoose nodes skipped.
176
- * @returns
177
- */
178
- static createTree(array, safe = true) {
179
- const tree = [];
180
- // Map to store nodes by their id for easy access
181
- const map = {};
182
- // Step 1: Loop over the array to build the nodes
183
- for (const item of array) {
184
- const node = {
185
- id: item.id,
186
- parentId: item.parentId ?? null,
187
- name: item.name ?? null,
188
- children: null
189
- };
190
- map[node.id] = node;
191
- }
192
- for (const item of array) {
193
- const node = map[item.id];
194
- // Step 2: Check if it's a root or child and assign to parent or tree
195
- if (typeof node.parentId === 'undefined' || node.parentId === null) {
196
- // Root node, add directly to the tree
197
- tree.push(node);
198
- }
199
- else {
200
- // Non-root node, find its parent and add to its children
201
- let parentNode = map[node.parentId];
202
- if (parentNode) {
203
- if (!Array.isArray(parentNode.children))
204
- parentNode.children = [];
205
- parentNode.children.push(node);
206
- }
207
- else if (safe) {
208
- //if save=true and parent node not exists, then we add as a root node
209
- tree.push(node);
210
- }
211
- }
212
- }
213
- return tree;
214
- }
215
- }
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvdXRpbHMvYXJyYXktaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCwrQ0FBK0M7QUFPL0MsTUFBTSxPQUFPLFdBQVc7SUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsS0FBYSxFQUFFLElBQVM7UUFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7WUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBWSxF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Q3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDSix5REFBeUQ7Z0JBQ3pELElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDbkMsVUFBVSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQzdCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2QscUVBQXFFO29CQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSBcIi4uL21vZGVscy9rZXktcGFpci5tb2RlbFwiO1xyXG4vLyBpbXBvcnQgeyBUcmVlIH0gZnJvbSBcIi4uL21vZGVscy90cmVlLm1vZGVsXCI7XHJcblxyXG5pbXBvcnQgeyBLZXlQYWlyLCBLZXlQYWlyRXgsIFRyZWUgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IElGbGF0dGVuVHJlZSwgSUZsYXR0ZW5UcmVlTm9kZSwgSU5vZGUsIElUcmVlTm9kZSB9IGZyb20gXCIuLi9tb2RlbHMvdHJlZVwiO1xyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQXJyYXlIZWxwZXIge1xyXG4gICAgc3RhdGljIGluc2VydChhcnJheTogYW55W10sIGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGl0ZW0gZnJvbSBhcnJheVxyXG4gICAgICogQHBhcmFtIGFycmF5IFxyXG4gICAgICogQHBhcmFtIGl0ZW0gaXRlbSB0byByZW1vdmVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlbW92ZShhcnJheTogYW55W10sIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkgeyAvLyBvbmx5IHNwbGljZSBhcnJheSB3aGVuIGl0ZW0gaXMgZm91bmRcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsgLy8gMm5kIHBhcmFtZXRlciBtZWFucyByZW1vdmUgb25lIGl0ZW0gb25seVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gYXJyYXlcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBpdGVtIGl0ZW0gdG8gcmVtb3ZlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZW1vdmVBbGwoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpIHtcclxuICAgICAgICB2YXIgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5W2ldID09PSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICArK2k7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBtb3ZlKGFycmF5OiBhbnlbXSwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gYXJyYXlbZnJvbUluZGV4XTtcclxuICAgICAgICBhcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKTsvL3JlbW92ZSBpdGVtIGZycm9tIGFycmF5XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKHRvSW5kZXgsIDAsIGl0ZW0pOy8vaW5zZXJ0IGl0ZW0gaW50byBhcnJheVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udGFpbnModmFsdWU6IGFueVtdLCB2OiBhbnkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtpXSA9PT0gdikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gICAgLy8gc3RhdGljIGRpc3RpbmN0KHZhbHVlOiBhbnlbXSkge1xyXG4gICAgLy8gICAgIHZhciBhcnI6IGFueVtdID0gW107XHJcbiAgICAvLyAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgICAgICBsZXQgdmFsID0gdmFsdWVbaV07XHJcbiAgICAvLyAgICAgICAgIGlmICghdGhpcy5jb250YWlucyhhcnIsIHZhbCkpIHtcclxuICAgIC8vICAgICAgICAgICAgIGFyci5wdXNoKHZhbCk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIGFycjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBzdGF0aWMgZGlzdGluY3QoYXJyYXk6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdXHJcbiAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFycmF5W2luZGV4XTtcclxuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZpbHRlckJ5S2V5KGZpbHRlclZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBhcnJheTogYW55W10pIHtcclxuICAgICAgICBpZiAodHlwZW9mIGZpbHRlclZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBmaWx0ZXJWYWx1ZSA9PSBudWxsIHx8ICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkubGVuZ3RoID09PSAwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xyXG5cclxuICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKHggPT4geCAhPT0gdW5kZWZpbmVkICYmIHggIT09IG51bGwgJiYgeFtrZXldID09PSBmaWx0ZXJWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBzdGF0aWMgZmxhdHRlbihhcnJheTogYW55LCBpbmRlbnQ6IG51bWJlciA9IDApIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkSXRlbSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmFycmF5LCAvLyBzaGFsbG93IGNvcHkgdGhlIGN1cnJlbnQgaXRlbVxyXG4gICAgICAgICAgICAgICAgaW5kZW50LCAvLyBhZGQgdGhlIGN1cnJlbnQgaW5kZW50IGxldmVsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogQXJyYXkuaXNBcnJheShhcnJheS5jaGlsZHJlbikgPyBhcnJheS5jaGlsZHJlbi5sZW5ndGggOiAwIC8vIHNldCBjb3VudCBiYXNlZCBvbiBjaGlsZHJlblxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgZGVsZXRlIGZsYXR0ZW5lZEl0ZW0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuZWRJdGVtLmNoaWxkcmVuSWRzO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChmbGF0dGVuZWRJdGVtKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmbGF0dGVuZWRJdGVtLmNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmZsYXR0ZW4oYXJyYXkuY2hpbGRyZW4sIGluZGVudCArIDEpKTsgLy8gVXNlIHNwcmVhZCBvcGVyYXRvciBmb3IgZWZmaWNpZW5jeVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmxhdHRlbihpdGVtLCBpbmRlbnQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQGRlcHJlY2F0ZWQgdXNlIGZsYXR0ZW5Ecm9wRG93bkxpc3QyXHJcbiAgICAqL1xyXG4gICAgc3RhdGljIGZsYXR0ZW5Ecm9wRG93bkxpc3QodHJlZTogVHJlZSB8IFRyZWVbXSwgaW5kZW50OiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdDogSUZsYXR0ZW5UcmVlW10gPSBbXTtcclxuICAgICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgb2YgdHJlZXMsIHdlIHByb2Nlc3MgZWFjaCBvbmVcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJlZSkpIHtcclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHRyZWUgbm9kZSB0byB0aGUgcmVzdWx0XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBJRmxhdHRlblRyZWUgPSB7XHJcbiAgICAgICAgICAgICAgICBrZXk6IHRyZWUua2V5LFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcmZW1zcDsnLnJlcGVhdChpbmRlbnQpICsgdHJlZS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluZGVudDogaW5kZW50LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IEFycmF5LmlzQXJyYXkodHJlZS5jaGlsZHJlbikgPyB0cmVlLmNoaWxkcmVuLmxlbmd0aCA6IDBcclxuICAgICAgICAgICAgfSBhcyBJRmxhdHRlblRyZWU7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gdGhlbVxyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuRHJvcERvd25MaXN0KHRyZWUuY2hpbGRyZW4sIGluZGVudCArIDEpKTsgLy8gVXNlIHNwcmVhZCBvcGVyYXRvciBmb3IgZWZmaWNpZW5jeVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmxhdHRlbkRyb3BEb3duTGlzdChpdGVtLCBpbmRlbnQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZmxhdHRlblRyZWVOb2RlRHJvcERvd25MaXN0KHRyZWU6IElUcmVlTm9kZSB8IElUcmVlTm9kZVtdLCBpbmRlbnQ6IG51bWJlciA9IDApIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBJRmxhdHRlblRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgb2YgdHJlZXMsIHdlIHByb2Nlc3MgZWFjaCBvbmVcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJlZSkpIHtcclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHRyZWUgbm9kZSB0byB0aGUgcmVzdWx0XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBJRmxhdHRlblRyZWVOb2RlID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRyZWUuaWQsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnJmVtc3A7Jy5yZXBlYXQoaW5kZW50KSArIHRyZWUubmFtZSxcclxuICAgICAgICAgICAgICAgIGluZGVudDogaW5kZW50LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IEFycmF5LmlzQXJyYXkodHJlZS5jaGlsZHJlbikgPyB0cmVlLmNoaWxkcmVuLmxlbmd0aCA6IDBcclxuICAgICAgICAgICAgfSBhcyBJRmxhdHRlblRyZWU7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gdGhlbVxyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVEcm9wRG93bkxpc3QodHJlZS5jaGlsZHJlbiwgaW5kZW50ICsgMSkpOyAvLyBVc2Ugc3ByZWFkIG9wZXJhdG9yIGZvciBlZmZpY2llbmN5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVEcm9wRG93bkxpc3QoaXRlbSwgaW5kZW50KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGVudW1Ub0tleVBhaXJCYXNlQXJyYXk8VCBleHRlbmRzIEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZTogYW55KTogVFtdIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHNsaWNlID0ga2V5cy5sZW5ndGggLyAyO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XHJcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZTsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgIHJlc3VsdC5wdXNoKHsga2V5OiAra2V5c1tpXSwgdmFsdWU6IGtleXNbaSArIHNsaWNlXSB9IGFzIFQpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gc2xpY2U7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGtleTogKyB2YWx1ZVtuYW1lXSwgdmFsdWU6IG5hbWUgfSBhcyBUKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAvL3JldHVybiBBcnJheS5mcm9tKGtleXMuc2xpY2Uoa2V5cy5sZW5ndGggLyAyKSwgeCA9PiB7IGtleTp4LCB2YWx1ZTonYWFhJyB9IGFzIE9iamVjdCk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckFycmF5KHZhbHVlOiBhbnkpOiBLZXlQYWlyPG51bWJlciwgc3RyaW5nPltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnVtVG9LZXlQYWlyQmFzZUFycmF5PEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckV4QXJyYXkodmFsdWU6IGFueSk6IEtleVBhaXJFeDxudW1iZXIsIHN0cmluZz5bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW51bVRvS2V5UGFpckJhc2VBcnJheTxLZXlQYWlyRXg8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRvIGNyZWF0ZSBhIHRyZWUgZnJvbSBhIGZsYXQgYXJyYXkgb2Ygbm9kZXNcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBzYWZlIGlmIHR1ZSBhbmQgc29tZSBub2RlcyBub3QgaGF2ZSBwYXJlbnQgdGhhbmQgYWRkcyBhcyBhIHJvb3Qgbm9kZS4gaWYgZmFsc2UgdGhhbiB0aG9vc2Ugbm9kZXMgc2tpcHBlZC5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlVHJlZShhcnJheTogSU5vZGVbXSwgc2FmZSA9IHRydWUpOiBJVHJlZU5vZGVbXSB7XHJcbiAgICAgICAgY29uc3QgdHJlZTogSVRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgICAgICAgLy8gTWFwIHRvIHN0b3JlIG5vZGVzIGJ5IHRoZWlyIGlkIGZvciBlYXN5IGFjY2Vzc1xyXG4gICAgICAgIGNvbnN0IG1hcDogeyBba2V5OiBudW1iZXJdOiBJVHJlZU5vZGUgfSA9IHt9O1xyXG5cclxuICAgICAgICAvLyBTdGVwIDE6IExvb3Agb3ZlciB0aGUgYXJyYXkgdG8gYnVpbGQgdGhlIG5vZGVzXHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGU6IElUcmVlTm9kZSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQgPz8gbnVsbCxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSA/PyBudWxsLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IG51bGxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbWFwW25vZGUuaWRdID0gbm9kZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbWFwW2l0ZW0uaWRdO1xyXG5cclxuICAgICAgICAgICAgLy8gU3RlcCAyOiBDaGVjayBpZiBpdCdzIGEgcm9vdCBvciBjaGlsZCBhbmQgYXNzaWduIHRvIHBhcmVudCBvciB0cmVlXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygbm9kZS5wYXJlbnRJZCA9PT0gJ3VuZGVmaW5lZCcgfHwgbm9kZS5wYXJlbnRJZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUm9vdCBub2RlLCBhZGQgZGlyZWN0bHkgdG8gdGhlIHRyZWVcclxuICAgICAgICAgICAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE5vbi1yb290IG5vZGUsIGZpbmQgaXRzIHBhcmVudCBhbmQgYWRkIHRvIGl0cyBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGUgPSBtYXBbbm9kZS5wYXJlbnRJZF07XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJlbnROb2RlLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2FmZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgc2F2ZT10cnVlIGFuZCBwYXJlbnQgbm9kZSBub3QgZXhpc3RzLCB0aGVuIHdlIGFkZCBhcyBhIHJvb3Qgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRyZWU7XHJcbiAgICB9XHJcblxyXG59Il19
@@ -1,18 +0,0 @@
1
- export class Base64Helper {
2
- static utf8ToBase64String(str) {
3
- return btoa(unescape(encodeURIComponent(str)));
4
- }
5
- static base64StringToUtf8(str) {
6
- return decodeURIComponent(escape(atob(str)));
7
- }
8
- static base64StringToBlob(str, type) {
9
- const byteString = atob(str);
10
- const int8Array = new Uint8Array(byteString.length);
11
- for (let i = 0; i < byteString.length; i++) {
12
- int8Array[i] = byteString.charCodeAt(i);
13
- }
14
- const blob = new Blob([int8Array], { type: type });
15
- return blob;
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2Jhc2U2NC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFlBQVk7SUFDckIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQVc7UUFDakMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQVc7UUFDakMsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQVcsRUFBRSxJQUFhO1FBQ2hELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCYXNlNjRIZWxwZXIge1xyXG4gICAgc3RhdGljIHV0ZjhUb0Jhc2U2NFN0cmluZyhzdHI6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdHIpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGJhc2U2NFN0cmluZ1RvVXRmOChzdHI6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGF0b2Ioc3RyKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBiYXNlNjRTdHJpbmdUb0Jsb2Ioc3RyOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBieXRlU3RyaW5nID0gYXRvYihzdHIpO1xyXG4gICAgICAgIGNvbnN0IGludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVTdHJpbmcubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaW50OEFycmF5W2ldID0gYnl0ZVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ludDhBcnJheV0sIHsgdHlwZTogdHlwZSB9KTtcclxuICAgICAgICByZXR1cm4gYmxvYjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,14 +0,0 @@
1
- export class BitwiseHelper {
2
- static hasFlag(flags, flagToCheck) {
3
- return (flags & flagToCheck) === flagToCheck;
4
- }
5
- static addFlags(flags, ...flagsToAdd) {
6
- if (!flagsToAdd)
7
- return flags;
8
- flagsToAdd.forEach(flag => {
9
- flags |= flag;
10
- });
11
- return flags;
12
- }
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0d2lzZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9iaXR3aXNlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWEsRUFBRSxXQUFnQjtRQUMxQyxPQUFPLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLFdBQVcsQ0FBQztJQUNqRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFhLEVBQUUsR0FBRyxVQUFpQjtRQUMvQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTlCLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEIsS0FBSyxJQUFJLElBQUksQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBCaXR3aXNlSGVscGVyIHtcclxuICAgIHN0YXRpYyBoYXNGbGFnKGZsYWdzOiBudW1iZXIsIGZsYWdUb0NoZWNrOiBhbnkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKGZsYWdzICYgZmxhZ1RvQ2hlY2spID09PSBmbGFnVG9DaGVjaztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYWRkRmxhZ3MoZmxhZ3M6IG51bWJlciwgLi4uZmxhZ3NUb0FkZDogYW55W10pOiBudW1iZXIge1xyXG4gICAgICAgIGlmICghZmxhZ3NUb0FkZCkgcmV0dXJuIGZsYWdzO1xyXG5cclxuICAgICAgICBmbGFnc1RvQWRkLmZvckVhY2goZmxhZyA9PiB7XHJcbiAgICAgICAgICAgIGZsYWdzIHw9IGZsYWc7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmbGFncztcclxuICAgIH1cclxufSJdfQ==
@@ -1,124 +0,0 @@
1
- export var ComponentType;
2
- (function (ComponentType) {
3
- ComponentType[ComponentType["Primary"] = 1] = "Primary";
4
- // Secondary,
5
- ComponentType[ComponentType["Success"] = 2] = "Success";
6
- ComponentType[ComponentType["Delete"] = 3] = "Delete";
7
- //Danger,
8
- ComponentType[ComponentType["Warning"] = 4] = "Warning";
9
- ComponentType[ComponentType["Info"] = 5] = "Info";
10
- // Light,
11
- // Dark,
12
- })(ComponentType || (ComponentType = {}));
13
- export var Color;
14
- (function (Color) {
15
- Color[Color["Primary"] = 1] = "Primary";
16
- Color[Color["Secondary"] = 2] = "Secondary";
17
- Color[Color["Success"] = 3] = "Success";
18
- Color[Color["Danger"] = 4] = "Danger";
19
- Color[Color["Warning"] = 5] = "Warning";
20
- Color[Color["Info"] = 6] = "Info";
21
- Color[Color["Dark"] = 8] = "Dark";
22
- })(Color || (Color = {}));
23
- export class BootstrapHelper {
24
- static cssColor(color) {
25
- switch (color) {
26
- case Color.Primary:
27
- return 'bg-primary text-white';
28
- case Color.Secondary:
29
- return 'bg-secondary text-white';
30
- case Color.Success:
31
- return 'bg-success text-white';
32
- case Color.Danger:
33
- return 'bg-danger text-white';
34
- case Color.Warning:
35
- return 'bg-warning text-dark';
36
- case Color.Info:
37
- return 'bg-info text-dark';
38
- case Color.Dark:
39
- return 'bg-dark text-white';
40
- default:
41
- return '';
42
- }
43
- }
44
- static cssIcon(type) {
45
- if (!type) {
46
- return null;
47
- }
48
- switch (type) {
49
- case ComponentType.Delete:
50
- return 'fa-solid fa-trash';
51
- // case ComponentType.Danger:
52
- case ComponentType.Warning:
53
- return 'fa-solid fa-triangle-exclamation';
54
- case ComponentType.Info:
55
- return 'fa-solid fa-circle-info';
56
- default:
57
- return 'fa-solid fa-check';
58
- }
59
- }
60
- static cssButton(type) {
61
- switch (type) {
62
- case ComponentType.Primary:
63
- // case ComponentType.Secondary:
64
- case ComponentType.Success:
65
- // case ComponentType.Danger:
66
- case ComponentType.Warning:
67
- case ComponentType.Info:
68
- // case ComponentType.Light:
69
- // case ComponentType.Dark:
70
- return `btn-${ComponentType[type].toLowerCase()}`;
71
- case ComponentType.Delete:
72
- return 'btn-danger';
73
- default:
74
- return 'btn-secondary';
75
- }
76
- }
77
- // static getAlertType(type?: string | null): AlertType | null {
78
- // if (!type) return null;
79
- // let v = StringHelper.firstUpper(type);
80
- // if (!v)
81
- // return null;
82
- // var enumValue = (<any>AlertType)[v];
83
- // if (!enumValue)
84
- // return null;
85
- // return enumValue;
86
- // }
87
- static cssAlert(type) {
88
- switch (type) {
89
- case 'primary':
90
- return 'alert-primary';
91
- case 'secondary':
92
- return 'alert-secondary';
93
- case 'success':
94
- return 'alert-success';
95
- case 'danger':
96
- return 'alert-danger';
97
- case 'warning':
98
- return 'alert-warning';
99
- case 'info':
100
- return 'alert-info';
101
- case 'light':
102
- return 'alert-light';
103
- case 'dark':
104
- return 'alert-dark';
105
- default:
106
- return 'alert-secondary';
107
- }
108
- }
109
- static cssAlertIcon(type) {
110
- switch (type) {
111
- case 'success':
112
- return 'fa-solid fa-circle-check';
113
- case 'danger':
114
- return 'fa-solid fa-circle-xmark';
115
- case 'warning':
116
- return 'fa-solid fa-circle-exclamation';
117
- case 'info':
118
- return 'fa-solid fa-circle-info';
119
- default:
120
- return '';
121
- }
122
- }
123
- }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2Jvb3RzdHJhcC5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksYUFVWDtBQVZELFdBQVksYUFBYTtJQUNyQix1REFBVyxDQUFBO0lBQ1gsYUFBYTtJQUNiLHVEQUFPLENBQUE7SUFDUCxxREFBTSxDQUFBO0lBQ04sU0FBUztJQUNULHVEQUFPLENBQUE7SUFDUCxpREFBSSxDQUFBO0lBQ0osU0FBUztJQUNULFFBQVE7QUFDWixDQUFDLEVBVlcsYUFBYSxLQUFiLGFBQWEsUUFVeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxLQVFYO0FBUkQsV0FBWSxLQUFLO0lBQ2IsdUNBQVcsQ0FBQTtJQUNYLDJDQUFhLENBQUE7SUFDYix1Q0FBVyxDQUFBO0lBQ1gscUNBQVUsQ0FBQTtJQUNWLHVDQUFXLENBQUE7SUFDWCxpQ0FBUSxDQUFBO0lBQ1IsaUNBQVEsQ0FBQTtBQUNaLENBQUMsRUFSVyxLQUFLLEtBQUwsS0FBSyxRQVFoQjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBb0I7UUFDaEMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNaLEtBQUssS0FBSyxDQUFDLE9BQU87Z0JBQ2QsT0FBTyx1QkFBdUIsQ0FBQTtZQUNsQyxLQUFLLEtBQUssQ0FBQyxTQUFTO2dCQUNoQixPQUFPLHlCQUF5QixDQUFDO1lBQ3JDLEtBQUssS0FBSyxDQUFDLE9BQU87Z0JBQ2QsT0FBTyx1QkFBdUIsQ0FBQztZQUNuQyxLQUFLLEtBQUssQ0FBQyxNQUFNO2dCQUNiLE9BQU8sc0JBQXNCLENBQUM7WUFDbEMsS0FBSyxLQUFLLENBQUMsT0FBTztnQkFDZCxPQUFPLHNCQUFzQixDQUFDO1lBQ2xDLEtBQUssS0FBSyxDQUFDLElBQUk7Z0JBQ1gsT0FBTyxtQkFBbUIsQ0FBQztZQUMvQixLQUFLLEtBQUssQ0FBQyxJQUFJO2dCQUNYLE9BQU8sb0JBQW9CLENBQUM7WUFDaEM7Z0JBQ0ksT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQW1CO1FBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyxhQUFhLENBQUMsTUFBTTtnQkFDckIsT0FBTyxtQkFBbUIsQ0FBQztZQUUvQiw2QkFBNkI7WUFDN0IsS0FBSyxhQUFhLENBQUMsT0FBTztnQkFDdEIsT0FBTyxrQ0FBa0MsQ0FBQztZQUU5QyxLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUNuQixPQUFPLHlCQUF5QixDQUFDO1lBRXJDO2dCQUNJLE9BQU8sbUJBQW1CLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQW1CO1FBQ2hDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLGFBQWEsQ0FBQyxPQUFPLENBQUM7WUFDM0IsZ0NBQWdDO1lBQ2hDLEtBQUssYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUMzQiw2QkFBNkI7WUFDN0IsS0FBSyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzNCLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQ25CLDRCQUE0QjtnQkFDNUIsMkJBQTJCO2dCQUMzQixPQUFPLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFFdEQsS0FBSyxhQUFhLENBQUMsTUFBTTtnQkFDckIsT0FBTyxZQUFZLENBQUM7WUFDeEI7Z0JBQ0ksT0FBTyxlQUFlLENBQUM7UUFDL0IsQ0FBQztJQUNMLENBQUM7SUFLRCxnRUFBZ0U7SUFDaEUsOEJBQThCO0lBRTlCLDZDQUE2QztJQUM3QyxjQUFjO0lBQ2QsdUJBQXVCO0lBRXZCLDJDQUEyQztJQUMzQyxzQkFBc0I7SUFDdEIsdUJBQXVCO0lBR3ZCLHdCQUF3QjtJQUN4QixJQUFJO0lBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUF1QjtRQUNuQyxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ1gsS0FBSyxTQUFTO2dCQUNWLE9BQU8sZUFBZSxDQUFDO1lBQzNCLEtBQUssV0FBVztnQkFDWixPQUFPLGlCQUFpQixDQUFDO1lBQzdCLEtBQUssU0FBUztnQkFDVixPQUFPLGVBQWUsQ0FBQztZQUMzQixLQUFLLFFBQVE7Z0JBQ1QsT0FBTyxjQUFjLENBQUM7WUFDMUIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sZUFBZSxDQUFDO1lBQzNCLEtBQUssTUFBTTtnQkFDUCxPQUFPLFlBQVksQ0FBQztZQUN4QixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxhQUFhLENBQUM7WUFDekIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sWUFBWSxDQUFDO1lBQ3hCO2dCQUNJLE9BQU8saUJBQWlCLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQXVCO1FBQ3ZDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLFNBQVM7Z0JBQ1YsT0FBTywwQkFBMEIsQ0FBQztZQUN0QyxLQUFLLFFBQVE7Z0JBQ1QsT0FBTywwQkFBMEIsQ0FBQztZQUN0QyxLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxnQ0FBZ0MsQ0FBQztZQUM1QyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyx5QkFBeUIsQ0FBQztZQUNyQztnQkFDSSxPQUFPLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxlcnRUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2FsZXJ0LXR5cGUnO1xyXG5cclxuZXhwb3J0IGVudW0gQ29tcG9uZW50VHlwZSB7XHJcbiAgICBQcmltYXJ5ID0gMSxcclxuICAgIC8vIFNlY29uZGFyeSxcclxuICAgIFN1Y2Nlc3MsXHJcbiAgICBEZWxldGUsXHJcbiAgICAvL0RhbmdlcixcclxuICAgIFdhcm5pbmcsXHJcbiAgICBJbmZvLFxyXG4gICAgLy8gTGlnaHQsXHJcbiAgICAvLyBEYXJrLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb2xvciB7XHJcbiAgICBQcmltYXJ5ID0gMSxcclxuICAgIFNlY29uZGFyeSA9IDIsXHJcbiAgICBTdWNjZXNzID0gMyxcclxuICAgIERhbmdlciA9IDQsXHJcbiAgICBXYXJuaW5nID0gNSxcclxuICAgIEluZm8gPSA2LFxyXG4gICAgRGFyayA9IDgsXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBCb290c3RyYXBIZWxwZXIge1xyXG4gICAgc3RhdGljIGNzc0NvbG9yKGNvbG9yPzogQ29sb3IgfCBudWxsKSB7XHJcbiAgICAgICAgc3dpdGNoIChjb2xvcikge1xyXG4gICAgICAgICAgICBjYXNlIENvbG9yLlByaW1hcnk6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLXByaW1hcnkgdGV4dC13aGl0ZSdcclxuICAgICAgICAgICAgY2FzZSBDb2xvci5TZWNvbmRhcnk6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLXNlY29uZGFyeSB0ZXh0LXdoaXRlJztcclxuICAgICAgICAgICAgY2FzZSBDb2xvci5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdiZy1zdWNjZXNzIHRleHQtd2hpdGUnO1xyXG4gICAgICAgICAgICBjYXNlIENvbG9yLkRhbmdlcjpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYmctZGFuZ2VyIHRleHQtd2hpdGUnO1xyXG4gICAgICAgICAgICBjYXNlIENvbG9yLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2JnLXdhcm5pbmcgdGV4dC1kYXJrJztcclxuICAgICAgICAgICAgY2FzZSBDb2xvci5JbmZvOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdiZy1pbmZvIHRleHQtZGFyayc7XHJcbiAgICAgICAgICAgIGNhc2UgQ29sb3IuRGFyazpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYmctZGFyayB0ZXh0LXdoaXRlJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgY3NzSWNvbih0eXBlOiBDb21wb25lbnRUeXBlKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKCF0eXBlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5EZWxldGU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLXRyYXNoJztcclxuXHJcbiAgICAgICAgICAgIC8vIGNhc2UgQ29tcG9uZW50VHlwZS5EYW5nZXI6XHJcbiAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5XYXJuaW5nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdmYS1zb2xpZCBmYS10cmlhbmdsZS1leGNsYW1hdGlvbic7XHJcblxyXG4gICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuSW5mbzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnZmEtc29saWQgZmEtY2lyY2xlLWluZm8nO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnZmEtc29saWQgZmEtY2hlY2snO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY3NzQnV0dG9uKHR5cGU6IENvbXBvbmVudFR5cGUpOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuUHJpbWFyeTpcclxuICAgICAgICAgICAgLy8gY2FzZSBDb21wb25lbnRUeXBlLlNlY29uZGFyeTpcclxuICAgICAgICAgICAgY2FzZSBDb21wb25lbnRUeXBlLlN1Y2Nlc3M6XHJcbiAgICAgICAgICAgIC8vIGNhc2UgQ29tcG9uZW50VHlwZS5EYW5nZXI6XHJcbiAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5XYXJuaW5nOlxyXG4gICAgICAgICAgICBjYXNlIENvbXBvbmVudFR5cGUuSW5mbzpcclxuICAgICAgICAgICAgICAgIC8vIGNhc2UgQ29tcG9uZW50VHlwZS5MaWdodDpcclxuICAgICAgICAgICAgICAgIC8vIGNhc2UgQ29tcG9uZW50VHlwZS5EYXJrOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGBidG4tJHtDb21wb25lbnRUeXBlW3R5cGVdLnRvTG93ZXJDYXNlKCl9YDtcclxuXHJcbiAgICAgICAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5EZWxldGU6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2J0bi1kYW5nZXInO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdidG4tc2Vjb25kYXJ5JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gc3RhdGljIGdldEFsZXJ0VHlwZSh0eXBlPzogc3RyaW5nIHwgbnVsbCk6IEFsZXJ0VHlwZSB8IG51bGwge1xyXG4gICAgLy8gICAgIGlmICghdHlwZSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gICAgIGxldCB2ID0gU3RyaW5nSGVscGVyLmZpcnN0VXBwZXIodHlwZSk7XHJcbiAgICAvLyAgICAgaWYgKCF2KVxyXG4gICAgLy8gICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyAgICAgdmFyIGVudW1WYWx1ZSA9ICg8YW55PkFsZXJ0VHlwZSlbdl07XHJcbiAgICAvLyAgICAgaWYgKCFlbnVtVmFsdWUpXHJcbiAgICAvLyAgICAgICAgIHJldHVybiBudWxsO1xyXG5cclxuXHJcbiAgICAvLyAgICAgcmV0dXJuIGVudW1WYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIHN0YXRpYyBjc3NBbGVydCh0eXBlPzogQWxlcnRUeXBlIHwgbnVsbCk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ByaW1hcnknOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydC1wcmltYXJ5JztcclxuICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQtc2Vjb25kYXJ5JztcclxuICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2FsZXJ0LXN1Y2Nlc3MnO1xyXG4gICAgICAgICAgICBjYXNlICdkYW5nZXInOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydC1kYW5nZXInO1xyXG4gICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQtd2FybmluZyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydC1pbmZvJztcclxuICAgICAgICAgICAgY2FzZSAnbGlnaHQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydC1saWdodCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RhcmsnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdhbGVydC1kYXJrJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnYWxlcnQtc2Vjb25kYXJ5JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgY3NzQWxlcnRJY29uKHR5cGU/OiBBbGVydFR5cGUgfCBudWxsKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnc3VjY2Vzcyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLWNpcmNsZS1jaGVjayc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Rhbmdlcic6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2ZhLXNvbGlkIGZhLWNpcmNsZS14bWFyayc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3dhcm5pbmcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdmYS1zb2xpZCBmYS1jaXJjbGUtZXhjbGFtYXRpb24nO1xyXG4gICAgICAgICAgICBjYXNlICdpbmZvJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnZmEtc29saWQgZmEtY2lyY2xlLWluZm8nO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,35 +0,0 @@
1
- export class Convert {
2
- static toBoolean(value) {
3
- if (typeof value !== 'undefined' && value !== null && value !== '') {
4
- switch (`${value}`.toUpperCase()) {
5
- case "TRUE":
6
- case "YES":
7
- case "1":
8
- case "ON":
9
- return true;
10
- default:
11
- return false;
12
- }
13
- }
14
- return false;
15
- }
16
- static toBooleanProperty(value) {
17
- return value != null && `${value}` !== 'false';
18
- }
19
- static parseNumber(value) {
20
- if (typeof value === 'undefined' || value == null || (typeof value === 'string' && value.length === 0))
21
- return null;
22
- const n = Number(value);
23
- return !isNaN(n) ? n : null;
24
- }
25
- static toNumber(value, defaultValue = 0) {
26
- return this.isNumber(value) ? Number(value) : defaultValue;
27
- }
28
- static isNumber(value) {
29
- // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,
30
- // and other non-number values as NaN, where Number just uses 0) but it considers the string
31
- // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.
32
- return !isNaN(parseFloat(value)) && !isNaN(Number(value));
33
- }
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2NvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLE9BQU87SUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLFFBQVEsR0FBRyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixLQUFLLE1BQU0sQ0FBQztnQkFDWixLQUFLLEtBQUssQ0FBQztnQkFDWCxLQUFLLEdBQUcsQ0FBQztnQkFDVCxLQUFLLElBQUk7b0JBQ0wsT0FBTyxJQUFJLENBQUM7Z0JBRWhCO29CQUNJLE9BQU8sS0FBSyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFVO1FBQy9CLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFVO1FBQ3pCLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNwSCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVSxFQUFFLFlBQVksR0FBRyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBVTtRQUN0QixpR0FBaUc7UUFDakcsNEZBQTRGO1FBQzVGLG9GQUFvRjtRQUNwRixPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FTSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDb252ZXJ0IHtcclxuICAgIHN0YXRpYyB0b0Jvb2xlYW4odmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSAnJykge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGAke3ZhbHVlfWAudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIlRSVUVcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJZRVNcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCIxXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiT05cIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyB0b0Jvb2xlYW5Qcm9wZXJ0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgYCR7dmFsdWV9YCAhPT0gJ2ZhbHNlJztcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgcGFyc2VOdW1iZXIodmFsdWU6IGFueSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09IG51bGwgfHwgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAwKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgY29uc3QgbiA9IE51bWJlcih2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuICFpc05hTihuKSA/IG4gOiBudWxsO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIHRvTnVtYmVyKHZhbHVlOiBhbnksIGRlZmF1bHRWYWx1ZSA9IDApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc051bWJlcih2YWx1ZSkgPyBOdW1iZXIodmFsdWUpIDogZGVmYXVsdFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gcGFyc2VGbG9hdCh2YWx1ZSkgaGFuZGxlcyBtb3N0IG9mIHRoZSBjYXNlcyB3ZSdyZSBpbnRlcmVzdGVkIGluIChpdCB0cmVhdHMgbnVsbCwgZW1wdHkgc3RyaW5nLFxyXG4gICAgICAgIC8vIGFuZCBvdGhlciBub24tbnVtYmVyIHZhbHVlcyBhcyBOYU4sIHdoZXJlIE51bWJlciBqdXN0IHVzZXMgMCkgYnV0IGl0IGNvbnNpZGVycyB0aGUgc3RyaW5nXHJcbiAgICAgICAgLy8gJzEyM2hlbGxvJyB0byBiZSBhIHZhbGlkIG51bWJlci4gVGhlcmVmb3JlIHdlIGFsc28gY2hlY2sgaWYgTnVtYmVyKHZhbHVlKSBpcyBOYU4uXHJcbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUZsb2F0KHZhbHVlIGFzIGFueSkpICYmICFpc05hTihOdW1iZXIodmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGF0aWMgdG9OdW1iZXIodmFsdWU6IGFueSl7XHJcbiAgICAvLyAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiArdmFsdWU7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICByZXR1cm4gMDtcclxuICAgIC8vIH1cclxufSJdfQ==
@@ -1,41 +0,0 @@
1
- import { ArrayHelper } from './array-helper';
2
- export class CssHelper {
3
- static addClass(clazz, addClasses) {
4
- if (!clazz || clazz === '' || clazz.length == 0) {
5
- return addClasses;
6
- }
7
- if (!addClasses || addClasses === '') {
8
- return clazz;
9
- }
10
- const arr = ArrayHelper.distinct(this.parseClassNames(clazz).concat(this.parseClassNames(addClasses)));
11
- return Array.isArray(clazz) ? arr : arr.join(' ');
12
- }
13
- static removeClass(clazz, removeClasses) {
14
- if (!clazz || clazz === '') {
15
- return clazz;
16
- }
17
- if (!removeClasses || removeClasses === '' || removeClasses.length === 0) {
18
- return clazz;
19
- }
20
- const arrClasses = this.parseClassNames(clazz);
21
- const arrRemove = this.parseClassNames(removeClasses);
22
- const arr = [];
23
- for (var i = 0; i < arrClasses.length; i++) {
24
- const val = arrClasses[i];
25
- if (!ArrayHelper.contains(arrRemove, val)) {
26
- arr.push(val);
27
- }
28
- }
29
- return Array.isArray(clazz) ? arr : arr.join(' ');
30
- }
31
- static parseClassNames(raw) {
32
- if (Array.isArray(raw)) {
33
- return raw;
34
- }
35
- if (typeof raw === 'string') {
36
- return raw.split(/\s+/);
37
- }
38
- return [];
39
- }
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvbGliL3V0aWxzL2Nzcy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQWlELEtBQVEsRUFBRSxVQUFxQztRQUMzRyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxPQUFPLFVBQWUsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbkMsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUdELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkcsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLENBQUM7SUFDaEUsQ0FBQztJQUdELE1BQU0sQ0FBQyxXQUFXLENBQWlELEtBQVEsRUFBRSxhQUF3QztRQUNqSCxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLEtBQUssRUFBRSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxNQUFNLEdBQUcsR0FBVSxFQUFFLENBQUM7UUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sQ0FBQztJQUNoRSxDQUFDO0lBR0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUE4QjtRQUNqRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLEdBQUcsQ0FBQTtRQUNkLENBQUM7UUFFRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzFCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDYixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnJheUhlbHBlciB9IGZyb20gJy4vYXJyYXktaGVscGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDc3NIZWxwZXIge1xyXG4gICAgc3RhdGljIGFkZENsYXNzPFQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQ+KGNsYXp6OiBULCBhZGRDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTogVCB7XHJcbiAgICAgICAgaWYgKCFjbGF6eiB8fCBjbGF6eiA9PT0gJycgfHwgY2xhenoubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGFkZENsYXNzZXMgYXMgVDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghYWRkQ2xhc3NlcyB8fCBhZGRDbGFzc2VzID09PSAnJykge1xyXG4gICAgICAgICAgICByZXR1cm4gY2xheno7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgY29uc3QgYXJyID0gQXJyYXlIZWxwZXIuZGlzdGluY3QodGhpcy5wYXJzZUNsYXNzTmFtZXMoY2xhenopLmNvbmNhdCh0aGlzLnBhcnNlQ2xhc3NOYW1lcyhhZGRDbGFzc2VzKSkpO1xyXG5cclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjbGF6eikgPyBhcnIgYXMgVCA6IGFyci5qb2luKCcgJykgYXMgVDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIHJlbW92ZUNsYXNzPFQgZXh0ZW5kcyBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQ+KGNsYXp6OiBULCByZW1vdmVDbGFzc2VzPzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKTogVCB7XHJcbiAgICAgICAgaWYgKCFjbGF6eiB8fCBjbGF6eiA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNsYXp6O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCFyZW1vdmVDbGFzc2VzIHx8IHJlbW92ZUNsYXNzZXMgPT09ICcnIHx8IHJlbW92ZUNsYXNzZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjbGF6ejtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFyckNsYXNzZXMgPSB0aGlzLnBhcnNlQ2xhc3NOYW1lcyhjbGF6eik7XHJcbiAgICAgICAgY29uc3QgYXJyUmVtb3ZlID0gdGhpcy5wYXJzZUNsYXNzTmFtZXMocmVtb3ZlQ2xhc3Nlcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGFycjogYW55W10gPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyckNsYXNzZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gYXJyQ2xhc3Nlc1tpXTtcclxuICAgICAgICAgICAgaWYgKCFBcnJheUhlbHBlci5jb250YWlucyhhcnJSZW1vdmUsIHZhbCkpIHtcclxuICAgICAgICAgICAgICAgIGFyci5wdXNoKHZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY2xhenopID8gYXJyIGFzIFQgOiBhcnIuam9pbignICcpIGFzIFQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBwYXJzZUNsYXNzTmFtZXMocmF3Pzogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmF3XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mIHJhdyA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJhdy5zcGxpdCgvXFxzKy8pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gW11cclxuICAgIH1cclxufSJdfQ==