tnp-helpers 13.1.39 → 16.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 (174) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2022/lib/base-component.mjs +51 -0
  4. package/browser/esm2022/lib/base-formly-component.mjs +114 -0
  5. package/browser/esm2022/lib/helpers-browser.mjs +48 -0
  6. package/browser/esm2022/lib/helpers.mjs +286 -0
  7. package/{websql/esm2020 → browser/esm2022}/lib/long-press.directive.mjs +8 -7
  8. package/browser/esm2022/lib/project.mjs +431 -0
  9. package/browser/esm2022/lib/resize-service.mjs +23 -0
  10. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs +39 -35
  11. package/{client/fesm2020 → browser/fesm2022}/tnp-helpers.mjs.map +1 -1
  12. package/browser/lib/base-component.d.ts +1 -1
  13. package/browser/lib/base-formly-component.d.ts +1 -1
  14. package/browser/lib/condition-wait.d.ts +1 -1
  15. package/browser/lib/long-press.directive.d.ts +1 -1
  16. package/browser/lib/project.d.ts +2 -2
  17. package/browser/package.json +6 -12
  18. package/client/README.md +24 -24
  19. package/client/esm2022/lib/base-component.mjs +51 -0
  20. package/client/esm2022/lib/base-formly-component.mjs +114 -0
  21. package/client/esm2022/lib/helpers-browser.mjs +48 -0
  22. package/client/esm2022/lib/helpers.mjs +286 -0
  23. package/client/esm2022/lib/long-press.directive.mjs +114 -0
  24. package/client/esm2022/lib/project.mjs +431 -0
  25. package/client/esm2022/lib/resize-service.mjs +23 -0
  26. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs +39 -35
  27. package/{browser/fesm2020 → client/fesm2022}/tnp-helpers.mjs.map +1 -1
  28. package/client/lib/base-component.d.ts +1 -1
  29. package/client/lib/base-formly-component.d.ts +1 -1
  30. package/client/lib/condition-wait.d.ts +1 -1
  31. package/client/lib/long-press.directive.d.ts +1 -1
  32. package/client/lib/project.d.ts +2 -2
  33. package/client/package.json +84 -82
  34. package/index.js.map +1 -1
  35. package/lib/angular.helper.js +3 -3
  36. package/lib/angular.helper.js.map +1 -1
  37. package/lib/base-component.js +3 -3
  38. package/lib/base-component.js.map +1 -1
  39. package/lib/base-formly-component.js +3 -3
  40. package/lib/base-formly-component.js.map +1 -1
  41. package/lib/condition-wait.d.ts +1 -1
  42. package/lib/condition-wait.js.map +1 -1
  43. package/lib/constants.js.map +1 -1
  44. package/lib/dual-component-ctrl.js +3 -3
  45. package/lib/dual-component-ctrl.js.map +1 -1
  46. package/lib/firedev-models.js.map +1 -1
  47. package/lib/git-project.js.map +1 -1
  48. package/lib/helpers-array-obj.js.map +1 -1
  49. package/lib/helpers-browser.js +1 -2
  50. package/lib/helpers-browser.js.map +1 -1
  51. package/lib/helpers-cli-tool.backend.js.map +1 -1
  52. package/lib/helpers-console-gui.js.map +1 -1
  53. package/lib/helpers-dependencies.backend.js.map +1 -1
  54. package/lib/helpers-environment.js.map +1 -1
  55. package/lib/helpers-file-folders.backend.js.map +1 -1
  56. package/lib/helpers-git.backend.js +20 -1
  57. package/lib/helpers-git.backend.js.map +1 -1
  58. package/lib/helpers-json5.backend.js.map +1 -1
  59. package/lib/helpers-morphi-framework.backend.js.map +1 -1
  60. package/lib/helpers-network.backend.js.map +1 -1
  61. package/lib/helpers-npm.backend.js.map +1 -1
  62. package/lib/helpers-numbers.js.map +1 -1
  63. package/lib/helpers-path.backend.js.map +1 -1
  64. package/lib/helpers-process.backend.js.map +1 -1
  65. package/lib/helpers-strings-regexes.js.map +1 -1
  66. package/lib/helpers-strings.js.map +1 -1
  67. package/lib/helpers-system-terminal.backend.js.map +1 -1
  68. package/lib/helpers-vscode.backend.js.map +1 -1
  69. package/lib/helpers.js.map +1 -1
  70. package/lib/index.js.map +1 -1
  71. package/lib/long-press.directive.js +1 -2
  72. package/lib/long-press.directive.js.map +1 -1
  73. package/lib/merge-helpers.backend.d.ts +1 -1
  74. package/lib/merge-helpers.backend.js.map +1 -1
  75. package/lib/project.d.ts +2 -2
  76. package/lib/project.js +4 -3
  77. package/lib/project.js.map +1 -1
  78. package/lib/resize-service.js +1 -2
  79. package/lib/resize-service.js.map +1 -1
  80. package/lib/ts-code/index.js.map +1 -1
  81. package/lib/ts-code/ts-code-extractor.d.ts +1 -1
  82. package/lib/ts-code/ts-code-extractor.js.map +1 -1
  83. package/lib/ts-code/ts-code-modifier.backend.js.map +1 -1
  84. package/package.json +5 -5
  85. package/package.json_devDependencies.json +222 -222
  86. package/package.json_tnp.json5 +49 -49
  87. package/tmp-environment.json +89 -87
  88. package/websql/README.md +24 -24
  89. package/websql/esm2022/lib/base-component.mjs +51 -0
  90. package/websql/esm2022/lib/base-formly-component.mjs +114 -0
  91. package/websql/esm2022/lib/helpers-browser.mjs +48 -0
  92. package/websql/esm2022/lib/helpers.mjs +286 -0
  93. package/websql/esm2022/lib/long-press.directive.mjs +114 -0
  94. package/websql/esm2022/lib/project.mjs +431 -0
  95. package/websql/esm2022/lib/resize-service.mjs +23 -0
  96. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs +39 -35
  97. package/websql/{fesm2020 → fesm2022}/tnp-helpers.mjs.map +1 -1
  98. package/websql/lib/base-component.d.ts +1 -1
  99. package/websql/lib/base-formly-component.d.ts +1 -1
  100. package/websql/lib/condition-wait.d.ts +1 -1
  101. package/websql/lib/long-press.directive.d.ts +1 -1
  102. package/websql/lib/project.d.ts +2 -2
  103. package/websql/package.json +6 -12
  104. package/browser/esm2020/lib/base-component.mjs +0 -50
  105. package/browser/esm2020/lib/base-formly-component.mjs +0 -113
  106. package/browser/esm2020/lib/helpers-browser.mjs +0 -47
  107. package/browser/esm2020/lib/helpers.mjs +0 -286
  108. package/browser/esm2020/lib/long-press.directive.mjs +0 -113
  109. package/browser/esm2020/lib/project.mjs +0 -430
  110. package/browser/esm2020/lib/resize-service.mjs +0 -22
  111. package/browser/fesm2015/tnp-helpers.mjs +0 -1741
  112. package/browser/fesm2015/tnp-helpers.mjs.map +0 -1
  113. package/client/esm2020/lib/base-component.mjs +0 -50
  114. package/client/esm2020/lib/base-formly-component.mjs +0 -113
  115. package/client/esm2020/lib/helpers-browser.mjs +0 -47
  116. package/client/esm2020/lib/helpers.mjs +0 -286
  117. package/client/esm2020/lib/long-press.directive.mjs +0 -113
  118. package/client/esm2020/lib/project.mjs +0 -430
  119. package/client/esm2020/lib/resize-service.mjs +0 -22
  120. package/client/fesm2015/tnp-helpers.mjs +0 -1741
  121. package/client/fesm2015/tnp-helpers.mjs.map +0 -1
  122. package/websql/esm2020/lib/base-component.mjs +0 -50
  123. package/websql/esm2020/lib/base-formly-component.mjs +0 -113
  124. package/websql/esm2020/lib/helpers-browser.mjs +0 -47
  125. package/websql/esm2020/lib/helpers.mjs +0 -286
  126. package/websql/esm2020/lib/project.mjs +0 -430
  127. package/websql/esm2020/lib/resize-service.mjs +0 -22
  128. package/websql/fesm2015/tnp-helpers.mjs +0 -1741
  129. package/websql/fesm2015/tnp-helpers.mjs.map +0 -1
  130. /package/browser/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  131. /package/browser/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  132. /package/browser/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  133. /package/browser/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  134. /package/browser/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  135. /package/browser/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  136. /package/browser/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  137. /package/browser/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  138. /package/browser/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  139. /package/browser/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  140. /package/browser/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  141. /package/browser/{esm2020 → esm2022}/lib/index.mjs +0 -0
  142. /package/browser/{esm2020 → esm2022}/public-api.mjs +0 -0
  143. /package/browser/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  144. /package/browser/{tnp-helpers.d.ts → index.d.ts} +0 -0
  145. /package/client/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  146. /package/client/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  147. /package/client/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  148. /package/client/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  149. /package/client/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  150. /package/client/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  151. /package/client/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  152. /package/client/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  153. /package/client/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  154. /package/client/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  155. /package/client/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  156. /package/client/{esm2020 → esm2022}/lib/index.mjs +0 -0
  157. /package/client/{esm2020 → esm2022}/public-api.mjs +0 -0
  158. /package/client/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  159. /package/client/{tnp-helpers.d.ts → index.d.ts} +0 -0
  160. /package/websql/{esm2020 → esm2022}/lib/angular.helper.mjs +0 -0
  161. /package/websql/{esm2020 → esm2022}/lib/condition-wait.mjs +0 -0
  162. /package/websql/{esm2020 → esm2022}/lib/constants.mjs +0 -0
  163. /package/websql/{esm2020 → esm2022}/lib/dual-component-ctrl.mjs +0 -0
  164. /package/websql/{esm2020 → esm2022}/lib/firedev-models.mjs +0 -0
  165. /package/websql/{esm2020 → esm2022}/lib/helpers-array-obj.mjs +0 -0
  166. /package/websql/{esm2020 → esm2022}/lib/helpers-console-gui.mjs +0 -0
  167. /package/websql/{esm2020 → esm2022}/lib/helpers-environment.mjs +0 -0
  168. /package/websql/{esm2020 → esm2022}/lib/helpers-numbers.mjs +0 -0
  169. /package/websql/{esm2020 → esm2022}/lib/helpers-strings-regexes.mjs +0 -0
  170. /package/websql/{esm2020 → esm2022}/lib/helpers-strings.mjs +0 -0
  171. /package/websql/{esm2020 → esm2022}/lib/index.mjs +0 -0
  172. /package/websql/{esm2020 → esm2022}/public-api.mjs +0 -0
  173. /package/websql/{esm2020 → esm2022}/tnp-helpers.mjs +0 -0
  174. /package/websql/{tnp-helpers.d.ts → index.d.ts} +0 -0
@@ -1,286 +0,0 @@
1
- import { _ } from 'tnp-core/websql';
2
- import { HelpersArrayObj } from './helpers-array-obj';
3
- import { HelpersStringsRegexes } from './helpers-strings-regexes';
4
- import { HelpersEnvironment } from './helpers-environment';
5
- import { HelpersStrings } from './helpers-strings';
6
- import { HelpersConsoleGui } from './helpers-console-gui';
7
- import { conditionWait } from './condition-wait';
8
- import { Helpers } from './index';
9
- import { CLASS } from 'typescript-class-helpers/websql';
10
- import { Morphi } from 'morphi/websql';
11
- import { CoreHelpers } from 'tnp-core/websql';
12
- import { HelpersNumber } from './helpers-numbers';
13
- import { HelpersBrowaser } from './helpers-browser';
14
- import { NgHelpers } from './angular.helper';
15
- export function applyMixins(derivedCtor, baseCtors) {
16
- baseCtors.forEach(baseCtor => {
17
- Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
18
- Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype, name));
19
- });
20
- });
21
- }
22
- // @ts-ignore
23
- export class HelpersTnp extends CoreHelpers {
24
- constructor(
25
- /* */
26
- /* */
27
- /* */
28
- /* */
29
- /* */
30
- /* */
31
- /* */
32
- /* */
33
- /* */
34
- /* */
35
- /* */
36
- /* */
37
- /* */
38
- arrays = new HelpersArrayObj(), strings = new HelpersStrings(), numbers = new HelpersNumber(), consoleGui = new HelpersConsoleGui(), browser = HelpersBrowaser.instance, ng = NgHelpers) {
39
- super();
40
- this.arrays = arrays;
41
- this.strings = strings;
42
- this.numbers = numbers;
43
- this.consoleGui = consoleGui;
44
- this.browser = browser;
45
- this.ng = ng;
46
- this.conditionWait = conditionWait;
47
- /* */
48
- /* */
49
- /* */
50
- /* */
51
- /* */
52
- /* */
53
- /* */
54
- /* */
55
- /* */
56
- /* */
57
- /* */
58
- /* */
59
- /* */
60
- /* */
61
- /* */
62
- /* */
63
- /* */
64
- /* */
65
- /* */
66
- /* */
67
- /* */
68
- /* */
69
- /* */
70
- /* */
71
- /* */
72
- /* */
73
- /* */
74
- /* */
75
- /* */
76
- /* */
77
- /* */
78
- /* */
79
- /* */
80
- /* */
81
- /* */
82
- /* */
83
- /* */
84
- /* */
85
- /* */
86
- /* */
87
- /* */
88
- /* */
89
- /* */
90
- /* */
91
- /* */
92
- /* */
93
- /* */
94
- /* */
95
- /* */
96
- /* */
97
- /* */
98
- /* */
99
- /* */
100
- /* */
101
- /* */
102
- /* */
103
- /* */
104
- /* */
105
- /* */
106
- /* */
107
- /* */
108
- /* */
109
- /* */
110
- /* */
111
- /* */
112
- /* */
113
- /* */
114
- /* */
115
- /* */
116
- /* */
117
- /* */
118
- /* */
119
- /* */
120
- /* */
121
- /* */
122
- /* */
123
- /* */
124
- /* */
125
- this.applyMixins = applyMixins;
126
- }
127
- static get Instance() {
128
- if (!HelpersTnp._instance) {
129
- HelpersTnp._instance = new HelpersTnp();
130
- }
131
- return HelpersTnp._instance;
132
- }
133
- CLIWRAP(f, name) {
134
- CLASS.setName(f, name);
135
- return f;
136
- }
137
- /* */
138
- /* */
139
- /* */
140
- /* */
141
- /* */
142
- /* */
143
- /* */
144
- /* */
145
- /* */
146
- /* */
147
- /* */
148
- /* */
149
- /* */
150
- /* */
151
- /* */
152
- /* */
153
- /* */
154
- /* */
155
- /* */
156
- /* */
157
- /* */
158
- /* */
159
- /* */
160
- /* */
161
- /* */
162
- /* */
163
- /* */
164
- /* */
165
- /* */
166
- /* */
167
- /* */
168
- /* */
169
- /* */
170
- /* */
171
- /* */
172
- /* */
173
- /* */
174
- /* */
175
- async isElevated() {
176
- /* */
177
- /* */
178
- /* */
179
- /* */
180
- }
181
- /* */
182
- /* */
183
- /* */
184
- /* */
185
- /* */
186
- /* */
187
- /* */
188
- /* */
189
- /* */
190
- /* */
191
- /* */
192
- /* */
193
- /* */
194
- /* */
195
- /* */
196
- /* */
197
- /* */
198
- /* */
199
- /* */
200
- /* */
201
- /* */
202
- /* */
203
- /* */
204
- /* */
205
- async mesureExectionInMs(description, functionToExecute, ...functionArguments) {
206
- var start = new Date();
207
- await Helpers.runSyncOrAsync(functionToExecute, ...functionArguments);
208
- //@ts-ignore
209
- var end = new Date() - start;
210
- if (Morphi.IsBrowser) {
211
- Helpers.info(`Execution time: ${end.toString()}ms for "${description}"`);
212
- }
213
- /* */
214
- /* */
215
- return end;
216
- }
217
- mesureExectionInMsSync(description, functionToExecute) {
218
- var start = new Date();
219
- functionToExecute();
220
- //@ts-ignore
221
- var end = new Date() - start;
222
- if (Morphi.IsBrowser) {
223
- Helpers.log(`Execution time: ${end.toString()}ms for "${description}"`);
224
- }
225
- /* */
226
- /* */
227
- return end;
228
- }
229
- waitForCondition(conditionFn, howOfftenCheckInMs = 1000) {
230
- return new Promise(async (resolve, reject) => {
231
- const result = await Helpers.runSyncOrAsync(conditionFn);
232
- if (result) {
233
- resolve(void 0);
234
- }
235
- else {
236
- setTimeout(() => {
237
- Helpers.waitForCondition(conditionFn, howOfftenCheckInMs).then(() => {
238
- resolve(void 0);
239
- });
240
- }, howOfftenCheckInMs);
241
- }
242
- });
243
- }
244
- getBrowserVerPath(moduleName, websql = false) {
245
- /* */
246
- /* */
247
- /* */
248
- /* */
249
- /* */
250
- }
251
- getMethodName(obj, method) {
252
- var methodName = null;
253
- Object.getOwnPropertyNames(obj).forEach(prop => {
254
- if (obj[prop] === method) {
255
- methodName = prop;
256
- }
257
- });
258
- if (methodName !== null) {
259
- return methodName;
260
- }
261
- var proto = Object.getPrototypeOf(obj);
262
- if (proto) {
263
- return Helpers.getMethodName(proto, method);
264
- }
265
- return null;
266
- }
267
- fixWebpackEnv(env) {
268
- _.forIn(env, (v, k) => {
269
- const value = v;
270
- if (value === 'true')
271
- env[k] = true;
272
- if (value === 'false')
273
- env[k] = false;
274
- });
275
- }
276
- }
277
- applyMixins(HelpersTnp, [
278
- HelpersStringsRegexes,
279
- HelpersEnvironment,
280
- /* */
281
- /* */
282
- /* */
283
- ]);
284
- ;
285
- ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers.ts
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUF3QmpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTdDLE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBZ0IsRUFBRSxTQUFnQjtJQUM1RCxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENB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S0FBSyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQW9GRjtBQWFELFdBQVcsQ0FBQyxVQUFVLEVBQUU7SUFDdEIscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNwQixLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7Q0FFSixDQUFDLENBQUM7QUFFRixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHVEQUF1RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVyc0FycmF5T2JqIH0gZnJvbSAnLi9oZWxwZXJzLWFycmF5LW9iaic7XG5pbXBvcnQgeyBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMgfSBmcm9tICcuL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzJztcbmltcG9ydCB7IEhlbHBlcnNFbnZpcm9ubWVudCB9IGZyb20gJy4vaGVscGVycy1lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIZWxwZXJzU3RyaW5ncyB9IGZyb20gJy4vaGVscGVycy1zdHJpbmdzJztcbmltcG9ydCB7IEhlbHBlcnNDb25zb2xlR3VpIH0gZnJvbSAnLi9oZWxwZXJzLWNvbnNvbGUtZ3VpJztcbmltcG9ydCB7IGNvbmRpdGlvbldhaXQgfSBmcm9tICcuL2NvbmRpdGlvbi13YWl0JztcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgY29uZmlnLCBDb25maWdNb2RlbHMgfSBmcm9tICd0bnAtY29uZmlnL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy93ZWJzcWwnO1xuaW1wb3J0IHsgTW9ycGhpIH0gZnJvbSAnbW9ycGhpL3dlYnNxbCc7XG5pbXBvcnQgeyBDb3JlSGVscGVycyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzTnVtYmVyIH0gZnJvbSAnLi9oZWxwZXJzLW51bWJlcnMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzQnJvd2FzZXIgfSBmcm9tICcuL2hlbHBlcnMtYnJvd3Nlcic7XG5cbmltcG9ydCB7IE5nSGVscGVycyB9IGZyb20gJy4vYW5ndWxhci5oZWxwZXInO1xuXG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TWl4aW5zKGRlcml2ZWRDdG9yOiBhbnksIGJhc2VDdG9yczogYW55W10pIHtcbiAgYmFzZUN0b3JzLmZvckVhY2goYmFzZUN0b3IgPT4ge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJhc2VDdG9yLnByb3RvdHlwZSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShkZXJpdmVkQ3Rvci5wcm90b3R5cGUsIG5hbWUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYmFzZUN0b3IucHJvdG90eXBlLCBuYW1lKSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgSGVscGVyc1RucCBleHRlbmRzIENvcmVIZWxwZXJzIHtcblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEhlbHBlcnNUbnAgJiBDb3JlSGVscGVycztcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKSB7XG4gICAgaWYgKCFIZWxwZXJzVG5wLl9pbnN0YW5jZSkge1xuICAgICAgSGVscGVyc1RucC5faW5zdGFuY2UgPSBuZXcgSGVscGVyc1RucCgpO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyc1RucC5faW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcHVibGljIGFycmF5cyA9IG5ldyBIZWxwZXJzQXJyYXlPYmooKSxcbiAgICBwdWJsaWMgc3RyaW5ncyA9IG5ldyBIZWxwZXJzU3RyaW5ncygpLFxuICAgIHB1YmxpYyBudW1iZXJzID0gbmV3IEhlbHBlcnNOdW1iZXIoKSxcbiAgICBwdWJsaWMgY29uc29sZUd1aSA9IG5ldyBIZWxwZXJzQ29uc29sZUd1aSgpLFxuXG4gICAgcHVibGljIGJyb3dzZXIgPSBIZWxwZXJzQnJvd2FzZXIuaW5zdGFuY2UsXG4gICAgcHVibGljIG5nID0gTmdIZWxwZXJzXG5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIENMSVdSQVAoZjogRnVuY3Rpb24sIG5hbWU6IHN0cmluZykge1xuICAgIENMQVNTLnNldE5hbWUoZiwgbmFtZSk7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gIGFzeW5jIGlzRWxldmF0ZWQoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICBhc3luYyBtZXN1cmVFeGVjdGlvbkluTXMoXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBmdW5jdGlvblRvRXhlY3V0ZTogRnVuY3Rpb24sXG4gICAgLi4uZnVuY3Rpb25Bcmd1bWVudHM6IGFueVtdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpXG4gICAgYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyhmdW5jdGlvblRvRXhlY3V0ZSwgLi4uZnVuY3Rpb25Bcmd1bWVudHMpO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnRcbiAgICBpZiAoTW9ycGhpLklzQnJvd3Nlcikge1xuICAgICAgSGVscGVycy5pbmZvKGBFeGVjdXRpb24gdGltZTogJHtlbmQudG9TdHJpbmcoKX1tcyBmb3IgXCIke2Rlc2NyaXB0aW9ufVwiYCk7XG4gICAgfVxuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuICBtZXN1cmVFeGVjdGlvbkluTXNTeW5jKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6ICgpID0+IHZvaWQpOiBudW1iZXIge1xuICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKClcbiAgICBmdW5jdGlvblRvRXhlY3V0ZSgpO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnRcbiAgICBpZiAoTW9ycGhpLklzQnJvd3Nlcikge1xuICAgICAgSGVscGVycy5sb2coYEV4ZWN1dGlvbiB0aW1lOiAke2VuZC50b1N0cmluZygpfW1zIGZvciBcIiR7ZGVzY3JpcHRpb259XCJgKTtcbiAgICB9XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIGVuZDtcbiAgfVxuXG4gIGNvbmRpdGlvbldhaXQgPSBjb25kaXRpb25XYWl0O1xuXG4gIHdhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uRm46IChhbnkpID0+IGJvb2xlYW4sIGhvd09mZnRlbkNoZWNrSW5NcyA9IDEwMDApIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKGNvbmRpdGlvbkZuKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmVzb2x2ZSh2b2lkIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBIZWxwZXJzLndhaXRGb3JDb25kaXRpb24oY29uZGl0aW9uRm4sIGhvd09mZnRlbkNoZWNrSW5NcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSwgaG93T2ZmdGVuQ2hlY2tJbk1zKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZ2V0QnJvd3NlclZlclBhdGgobW9kdWxlTmFtZT86IHN0cmluZywgd2Vic3FsOiBib29sZWFuID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGdldE1ldGhvZE5hbWUob2JqLCBtZXRob2QpOiBzdHJpbmcge1xuICAgIHZhciBtZXRob2ROYW1lID0gbnVsbDtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICBpZiAob2JqW3Byb3BdID09PSBtZXRob2QpIHtcbiAgICAgICAgbWV0aG9kTmFtZSA9IHByb3A7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobWV0aG9kTmFtZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG1ldGhvZE5hbWU7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG4gICAgaWYgKHByb3RvKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5nZXRNZXRob2ROYW1lKHByb3RvLCBtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGZpeFdlYnBhY2tFbnYoZW52OiBPYmplY3QpIHtcbiAgICBfLmZvckluKGVudiwgKHYsIGspID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB2IGFzIGFueTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSBlbnZba10gPSB0cnVlO1xuICAgICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSBlbnZba10gPSBmYWxzZTtcbiAgICB9KVxuICB9XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbiAgXG4gIHB1YmxpYyBhcHBseU1peGlucyA9IGFwcGx5TWl4aW5zO1xufVxuXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlcnNUbnAgZXh0ZW5kc1xuICBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMsXG4gIEhlbHBlcnNFbnZpcm9ubWVudFxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG57IH1cblxuYXBwbHlNaXhpbnMoSGVscGVyc1RucCwgW1xuICBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMsXG4gIEhlbHBlcnNFbnZpcm9ubWVudCxcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5dKTtcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9oZWxwZXJzLnRzIl19