tnp-helpers 18.0.23 → 18.0.25

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 (317) 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/classes/base-git.mjs +4 -1
  4. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +5 -83
  5. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +15 -1
  6. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +22 -1
  7. package/browser/esm2022/lib/base/classes/base-vscode.mjs +1 -10
  8. package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +1008 -0
  9. package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +493 -0
  10. package/browser/esm2022/lib/helpers/helpers.mjs +12 -5
  11. package/browser/fesm2022/tnp-helpers.mjs +1554 -95
  12. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  13. package/browser/lib/base/classes/base-node-modules.d.ts +7 -2
  14. package/browser/lib/base/classes/base-quick-fixes.d.ts +7 -0
  15. package/browser/lib/base/classes/base-vscode.d.ts +1 -1
  16. package/browser/lib/helpers/for-backend/helpers-file-folders.d.ts +105 -0
  17. package/browser/lib/helpers/for-backend/helpers-process.d.ts +88 -0
  18. package/browser/lib/helpers/helpers.d.ts +3 -1
  19. package/cli.d.ts +6 -0
  20. package/client/README.md +24 -24
  21. package/client/esm2022/lib/base/classes/base-git.mjs +4 -1
  22. package/client/esm2022/lib/base/classes/base-node-modules.mjs +5 -83
  23. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +15 -1
  24. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +22 -1
  25. package/client/esm2022/lib/base/classes/base-vscode.mjs +1 -10
  26. package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +1008 -0
  27. package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +493 -0
  28. package/client/esm2022/lib/helpers/helpers.mjs +12 -5
  29. package/client/fesm2022/tnp-helpers.mjs +1554 -95
  30. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  31. package/client/lib/base/classes/base-node-modules.d.ts +7 -2
  32. package/client/lib/base/classes/base-quick-fixes.d.ts +7 -0
  33. package/client/lib/base/classes/base-vscode.d.ts +1 -1
  34. package/client/lib/helpers/for-backend/helpers-file-folders.d.ts +105 -0
  35. package/client/lib/helpers/for-backend/helpers-process.d.ts +88 -0
  36. package/client/lib/helpers/helpers.d.ts +3 -1
  37. package/env.d.ts +3 -0
  38. package/environments/angular-node-app/env.angular-node-app.__.d.ts +3 -0
  39. package/environments/angular-node-app/env.angular-node-app.prod.d.ts +3 -0
  40. package/environments/docs-webapp/env.docs-webapp.__.d.ts +3 -0
  41. package/environments/electron-app/env.electron-app.__.d.ts +3 -0
  42. package/environments/electron-app/env.electron-app.prod.d.ts +3 -0
  43. package/environments/mobile-app/env.mobile-app.__.d.ts +3 -0
  44. package/environments/mobile-app/env.mobile-app.prod.d.ts +3 -0
  45. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.__.d.ts +3 -0
  46. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.prod.d.ts +3 -0
  47. package/environments/vscode-plugin/env.vscode-plugin.__.d.ts +6 -0
  48. package/environments/vscode-plugin/env.vscode-plugin.prod.d.ts +4 -0
  49. package/global-typings.d.ts +41 -0
  50. package/index.js.map +1 -1
  51. package/lib/base/classes/base-bower-json.js.map +1 -1
  52. package/lib/base/classes/base-cli-worker-config.js.map +1 -1
  53. package/lib/base/classes/base-cli-worker-controller.js.map +1 -1
  54. package/lib/base/classes/base-cli-worker.js.map +1 -1
  55. package/lib/base/classes/base-command-line-feature.backend.js.map +1 -1
  56. package/lib/base/classes/base-compiler-for-project.js.map +1 -1
  57. package/lib/base/classes/base-db.js.map +1 -1
  58. package/lib/base/classes/base-debounce-compiler-for-project.js.map +1 -1
  59. package/lib/base/classes/base-detached-service.js.map +1 -1
  60. package/lib/base/classes/base-feature-for-project.js.map +1 -1
  61. package/lib/base/classes/base-git.js +1 -1
  62. package/lib/base/classes/base-git.js.map +1 -1
  63. package/lib/base/classes/base-github-pages.d.ts +14 -0
  64. package/lib/base/classes/base-global-command-line.backend.d.ts +3 -4
  65. package/lib/base/classes/base-global-command-line.backend.js +62 -54
  66. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  67. package/lib/base/classes/base-ignore-hide.js.map +1 -1
  68. package/lib/base/classes/base-json-file-reader.js.map +1 -1
  69. package/lib/base/classes/base-library-build.js.map +1 -1
  70. package/lib/base/classes/base-linked-projects.js.map +1 -1
  71. package/lib/base/classes/base-node-modules.d.ts +7 -2
  72. package/lib/base/classes/base-node-modules.js +109 -137
  73. package/lib/base/classes/base-node-modules.js.map +1 -1
  74. package/lib/base/classes/base-npm-helpers.js +17 -7
  75. package/lib/base/classes/base-npm-helpers.js.map +1 -1
  76. package/lib/base/classes/base-package-json.js.map +1 -1
  77. package/lib/base/classes/base-powershell.d.ts +57 -0
  78. package/lib/base/classes/base-powershell.js +83 -0
  79. package/lib/base/classes/base-powershell.js.map +1 -0
  80. package/lib/base/classes/base-process-manager.js.map +1 -1
  81. package/lib/base/classes/base-project-resolver.js.map +1 -1
  82. package/lib/base/classes/base-project.js.map +1 -1
  83. package/lib/base/classes/base-quick-fixes.d.ts +7 -0
  84. package/lib/base/classes/base-quick-fixes.js +21 -0
  85. package/lib/base/classes/base-quick-fixes.js.map +1 -1
  86. package/lib/base/classes/base-release-process.js.map +1 -1
  87. package/lib/base/classes/base-start-config.backend.js.map +1 -1
  88. package/lib/base/classes/base-static-pages.js.map +1 -1
  89. package/lib/base/classes/base-vscode.d.ts +1 -1
  90. package/lib/base/classes/base-vscode.js +1 -3
  91. package/lib/base/classes/base-vscode.js.map +1 -1
  92. package/lib/base/classes/index.js.map +1 -1
  93. package/lib/base/commit-data.js.map +1 -1
  94. package/lib/base/config-database.js.map +1 -1
  95. package/lib/base/core-project.js.map +1 -1
  96. package/lib/base/gh-temp-code.js.map +1 -1
  97. package/lib/base/index-rebuilder.backend.js.map +1 -1
  98. package/lib/base/index.js.map +1 -1
  99. package/lib/base/linked-project.js.map +1 -1
  100. package/lib/base/project-database.js.map +1 -1
  101. package/lib/base/tcp-udp-ports/index.js.map +1 -1
  102. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  103. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js.map +1 -1
  104. package/lib/base/tcp-udp-ports/ports.controller.js.map +1 -1
  105. package/lib/base/tcp-udp-ports/ports.entity.js.map +1 -1
  106. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  107. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  108. package/lib/base/translate.js.map +1 -1
  109. package/lib/build-info._auto-generated_.js.map +1 -1
  110. package/lib/constants.d.ts +77 -0
  111. package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
  112. package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
  113. package/lib/helpers/for-backend/helpers-dependencies.backend.js.map +1 -1
  114. package/lib/helpers/for-backend/helpers-file-folders.backend.js +63 -3
  115. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +1 -1
  116. package/lib/helpers/for-backend/helpers-file-folders.d.ts +104 -0
  117. package/lib/helpers/for-backend/helpers-file-folders.js +956 -0
  118. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -0
  119. package/lib/helpers/for-backend/helpers-git.backend.d.ts +1 -1
  120. package/lib/helpers/for-backend/helpers-git.backend.js +14 -4
  121. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  122. package/lib/helpers/for-backend/helpers-network.backend.js.map +1 -1
  123. package/lib/helpers/for-backend/helpers-npm.backend.js.map +1 -1
  124. package/lib/helpers/for-backend/helpers-path.backend.js.map +1 -1
  125. package/lib/helpers/for-backend/helpers-process.backend.d.ts +1 -1
  126. package/lib/helpers/for-backend/helpers-process.backend.js +49 -9
  127. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
  128. package/lib/helpers/for-backend/helpers-process.d.ts +87 -0
  129. package/lib/helpers/for-backend/helpers-process.js +496 -0
  130. package/lib/helpers/for-backend/helpers-process.js.map +1 -0
  131. package/lib/helpers/for-backend/helpers-system-terminal.backend.js.map +1 -1
  132. package/lib/helpers/for-backend/helpers-vscode.backend.js.map +1 -1
  133. package/lib/helpers/for-backend/ts-code/index.d.ts +1 -0
  134. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.d.ts +29 -0
  135. package/lib/helpers/for-browser/angular.helper.js +2 -2
  136. package/lib/helpers/for-browser/angular.helper.js.map +1 -1
  137. package/lib/helpers/for-browser/helpers-browser.js.map +1 -1
  138. package/lib/helpers/helpers-array-obj.js.map +1 -1
  139. package/lib/helpers/helpers-json5.backend.js.map +1 -1
  140. package/lib/helpers/helpers-numbers.js.map +1 -1
  141. package/lib/helpers/helpers-strings-regexes.js.map +1 -1
  142. package/lib/helpers/helpers-strings.js.map +1 -1
  143. package/lib/helpers/helpers.d.ts +2 -2
  144. package/lib/helpers/helpers.js +12 -8
  145. package/lib/helpers/helpers.js.map +1 -1
  146. package/lib/helpers.d.ts +0 -0
  147. package/lib/index._auto-generated_.js.map +1 -1
  148. package/lib/index.js.map +1 -1
  149. package/lib/lowdb/adapters/Memory.js.map +1 -1
  150. package/lib/lowdb/adapters/browser/LocalStorage.js.map +1 -1
  151. package/lib/lowdb/adapters/browser/SessionStorage.js.map +1 -1
  152. package/lib/lowdb/adapters/browser/WebStorage.js.map +1 -1
  153. package/lib/lowdb/adapters/node/DataFile.js.map +1 -1
  154. package/lib/lowdb/adapters/node/JSONFile.js.map +1 -1
  155. package/lib/lowdb/adapters/node/TextFile.js.map +1 -1
  156. package/lib/lowdb/adapters/node/steno.js.map +1 -1
  157. package/lib/lowdb/browser.js.map +1 -1
  158. package/lib/lowdb/core/Low.js.map +1 -1
  159. package/lib/lowdb/examples/browser.js.map +1 -1
  160. package/lib/lowdb/examples/cli.js.map +1 -1
  161. package/lib/lowdb/examples/in-memory.js.map +1 -1
  162. package/lib/lowdb/examples/server.js.map +1 -1
  163. package/lib/lowdb/index.js.map +1 -1
  164. package/lib/lowdb/node.js.map +1 -1
  165. package/lib/lowdb/presets/browser.js.map +1 -1
  166. package/lib/lowdb/presets/node.js.map +1 -1
  167. package/lib/models.js.map +1 -1
  168. package/lib/old/base-component.js +2 -2
  169. package/lib/old/base-component.js.map +1 -1
  170. package/lib/old/base-formly-component.js +2 -2
  171. package/lib/old/base-formly-component.js.map +1 -1
  172. package/lib/old/condition-wait.js.map +1 -1
  173. package/lib/old/dual-component-ctrl.js +2 -2
  174. package/lib/old/dual-component-ctrl.js.map +1 -1
  175. package/lib/old/execute-command.js.map +1 -1
  176. package/lib/old/helpers.js.map +1 -1
  177. package/lib/old/models.js.map +1 -1
  178. package/lib/options.d.ts +252 -0
  179. package/lib/project/abstract/artifacts/__helpers__/artifacts-helpers.d.ts +28 -0
  180. package/lib/project/abstract/artifacts/__helpers__/branding.d.ts +13 -0
  181. package/lib/project/abstract/artifacts/__helpers__/environment-config/environment-config.d.ts +26 -0
  182. package/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.d.ts +53 -0
  183. package/lib/project/abstract/artifacts/angular-node-app/index.d.ts +1 -0
  184. package/lib/project/abstract/artifacts/angular-node-app/tools/assets-list-file-generator.d.ts +19 -0
  185. package/lib/project/abstract/artifacts/angular-node-app/tools/assets-manager.d.ts +5 -0
  186. package/lib/project/abstract/artifacts/angular-node-app/tools/basename-manager.d.ts +17 -0
  187. package/lib/project/abstract/artifacts/angular-node-app/tools/docs-app-build-config.d.ts +21 -0
  188. package/lib/project/abstract/artifacts/angular-node-app/tools/inside-struct-angular13-app.d.ts +6 -0
  189. package/lib/project/abstract/artifacts/angular-node-app/tools/migrations-helper.d.ts +18 -0
  190. package/lib/project/abstract/artifacts/artifacts-manager.d.ts +39 -0
  191. package/lib/project/abstract/artifacts/base-artifact.d.ts +52 -0
  192. package/lib/project/abstract/artifacts/docs-webapp/artifact-docs-webapp.d.ts +27 -0
  193. package/lib/project/abstract/artifacts/docs-webapp/docs.d.ts +55 -0
  194. package/lib/project/abstract/artifacts/docs-webapp/index.d.ts +1 -0
  195. package/lib/project/abstract/artifacts/electron-app/artifact-electron-app.d.ts +22 -0
  196. package/lib/project/abstract/artifacts/electron-app/index.d.ts +1 -0
  197. package/lib/project/abstract/artifacts/mobile-app/artifact-mobile-app.d.ts +16 -0
  198. package/lib/project/abstract/artifacts/mobile-app/index.d.ts +1 -0
  199. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/artifact-npm-lib-and-cli-tool.d.ts +82 -0
  200. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/index.d.ts +1 -0
  201. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/browser-code-cut.d.ts +102 -0
  202. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/code-cut.d.ts +41 -0
  203. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/code-split-process.enum.d.ts +44 -0
  204. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/cut-fn.d.ts +1 -0
  205. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/file-split-process.d.ts +14 -0
  206. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-backend.d.ts +60 -0
  207. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-browser.d.ts +41 -0
  208. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/incremental-build-process.d.ts +23 -0
  209. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/base-copy-manager.d.ts +85 -0
  210. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-helpers.d.ts +12 -0
  211. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-organization.d.ts +0 -0
  212. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-standalone.d.ts +77 -0
  213. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager.d.ts +7 -0
  214. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/mjs-fesm-module-spliter.d.ts +46 -0
  215. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/source-maping-url.d.ts +11 -0
  216. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/typescript-dts-fixer.d.ts +25 -0
  217. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/files-recreator.d.ts +133 -0
  218. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/files-templates.d.ts +8 -0
  219. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/index.d.ts +2 -0
  220. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/index-autogen-provider.d.ts +15 -0
  221. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-struct-angular13-lib.d.ts +6 -0
  222. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/inside-struct.d.ts +44 -0
  223. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/inside-structures.d.ts +17 -0
  224. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/base-inside-struct.d.ts +12 -0
  225. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/inside-struct-constants.d.ts +2 -0
  226. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/inside-struct-helpers.d.ts +12 -0
  227. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/image-loader.d.ts +1 -0
  228. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-default.d.ts +1 -0
  229. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-ellipsis.d.ts +1 -0
  230. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-facebook.d.ts +1 -0
  231. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-grid.d.ts +1 -0
  232. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-heart.d.ts +1 -0
  233. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-ripple.d.ts +1 -0
  234. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loaders.d.ts +2 -0
  235. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/lib-project/lib-project-base.d.ts +9 -0
  236. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/lib-project/lib-project-standalone.d.ts +9 -0
  237. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/singular-build.d.ts +0 -0
  238. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/cypress-test-runner.d.ts +7 -0
  239. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/index.d.ts +3 -0
  240. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/jest-test-runner.d.ts +8 -0
  241. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/mocha-test-runner.d.ts +7 -0
  242. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/webpack-backend-compilation.d.ts +0 -0
  243. package/lib/project/abstract/artifacts/vscode-plugin/artifact-vscode-plugin.d.ts +33 -0
  244. package/lib/project/abstract/artifacts/vscode-plugin/index.d.ts +1 -0
  245. package/lib/project/abstract/framework.d.ts +61 -0
  246. package/lib/project/abstract/git.d.ts +26 -0
  247. package/lib/project/abstract/library-build.d.ts +9 -0
  248. package/lib/project/abstract/linked-projects.d.ts +4 -0
  249. package/lib/project/abstract/linter.d.ts +9 -0
  250. package/lib/project/abstract/node-modules.d.ts +35 -0
  251. package/lib/project/abstract/npm-helpers.d.ts +22 -0
  252. package/lib/project/abstract/package-json.d.ts +14 -0
  253. package/lib/project/abstract/packages-recognition.d.ts +16 -0
  254. package/lib/project/abstract/project-resolve.d.ts +37 -0
  255. package/lib/project/abstract/project.d.ts +63 -0
  256. package/lib/project/abstract/quick-fixes.d.ts +18 -0
  257. package/lib/project/abstract/release-process/index.d.ts +1 -0
  258. package/lib/project/abstract/release-process/release-config.d.ts +0 -0
  259. package/lib/project/abstract/release-process/release-process.d.ts +26 -0
  260. package/lib/project/abstract/taon-worker/taon-build.controller.d.ts +5 -0
  261. package/lib/project/abstract/taon-worker/taon-build.entity.d.ts +8 -0
  262. package/lib/project/abstract/taon-worker/taon-env.entity.d.ts +10 -0
  263. package/lib/project/abstract/taon-worker/taon-project.entity.d.ts +8 -0
  264. package/lib/project/abstract/taon-worker/taon.context.d.ts +56 -0
  265. package/lib/project/abstract/taon-worker/taon.controller.d.ts +7 -0
  266. package/lib/project/abstract/taon-worker/taon.worker.d.ts +40 -0
  267. package/lib/project/abstract/taonJson.d.ts +49 -0
  268. package/lib/project/abstract/vscode.d.ts +80 -0
  269. package/lib/project/cli/base-cli.d.ts +8 -0
  270. package/lib/project/cli/cli-BRANDING.d.ts +23 -0
  271. package/lib/project/cli/cli-BUILD.d.ts +4 -0
  272. package/lib/project/cli/cli-DOCS.d.ts +4 -0
  273. package/lib/project/cli/cli-INIT.d.ts +13 -0
  274. package/lib/project/cli/cli-LINK.d.ts +23 -0
  275. package/lib/project/cli/cli-MIGRATION.d.ts +4 -0
  276. package/lib/project/cli/cli-NEW.d.ts +15 -0
  277. package/lib/project/cli/cli-OPEN.d.ts +15 -0
  278. package/lib/project/cli/cli-RELEASE.d.ts +4 -0
  279. package/lib/project/cli/cli-TEST.d.ts +23 -0
  280. package/lib/project/cli/cli-VERSION.d.ts +16 -0
  281. package/lib/project/cli/cli-VSCODE.d.ts +17 -0
  282. package/lib/project/cli/cli-_GLOBAL_.d.ts +85 -0
  283. package/lib/project/cli/index.d.ts +29 -0
  284. package/lib/project/index.d.ts +0 -0
  285. package/lib/templates.d.ts +1 -0
  286. package/lib/utils.js.map +1 -1
  287. package/lib/validators/validators-firedev.js.map +1 -1
  288. package/lib/validators/validators-git.js.map +1 -1
  289. package/lib/validators/validators-network.js.map +1 -1
  290. package/lib/validators/validators.js.map +1 -1
  291. package/migrations/1736198527297_init.js.map +1 -1
  292. package/migrations/1736199486472_addingNotAssignablePorts.js.map +1 -1
  293. package/migrations/1736454437350_addFreePorts.js.map +1 -1
  294. package/migrations/1737301724542_addingSampleData.d.ts +14 -0
  295. package/migrations/index.js.map +1 -1
  296. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  297. package/package.json +1 -1
  298. package/start.backend.d.ts +2 -0
  299. package/taon.jsonc +33 -33
  300. package/tmp-environment.json +24 -3
  301. package/websql/README.md +24 -24
  302. package/websql/esm2022/lib/base/classes/base-git.mjs +4 -1
  303. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +5 -83
  304. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +15 -1
  305. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +22 -1
  306. package/websql/esm2022/lib/base/classes/base-vscode.mjs +1 -10
  307. package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +1008 -0
  308. package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +493 -0
  309. package/websql/esm2022/lib/helpers/helpers.mjs +12 -5
  310. package/websql/fesm2022/tnp-helpers.mjs +1554 -95
  311. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  312. package/websql/lib/base/classes/base-node-modules.d.ts +7 -2
  313. package/websql/lib/base/classes/base-quick-fixes.d.ts +7 -0
  314. package/websql/lib/base/classes/base-vscode.d.ts +1 -1
  315. package/websql/lib/helpers/for-backend/helpers-file-folders.d.ts +105 -0
  316. package/websql/lib/helpers/for-backend/helpers-process.d.ts +88 -0
  317. package/websql/lib/helpers/helpers.d.ts +3 -1
@@ -0,0 +1,493 @@
1
+ import { Level } from 'ng2-logger/browser';
2
+ export class HelpersProcess {
3
+ async restartApplicationItself(nameOfApp) {
4
+ /* */
5
+ /* */
6
+ /* */
7
+ /* */
8
+ /* */
9
+ /* */
10
+ /* */
11
+ /* */
12
+ /* */
13
+ /* */
14
+ /* */
15
+ /* */
16
+ /* */
17
+ /* */
18
+ return (void 0);
19
+ }
20
+ osIsMacOs(versino) {
21
+ /* */
22
+ /* */
23
+ /* */
24
+ /* */
25
+ /* */
26
+ /* */
27
+ /* */
28
+ /* */
29
+ return (void 0);
30
+ }
31
+ generatedFileWrap(content) {
32
+ /* */
33
+ /* */
34
+ /* */
35
+ /* */
36
+ /* */
37
+ return (void 0);
38
+ }
39
+ async changeCwdWrapper(dir, functionToExecure, logLevel = Level.__NOTHING) {
40
+ /* */
41
+ /* */
42
+ /* */
43
+ /* */
44
+ /* */
45
+ /* */
46
+ /* */
47
+ return (void 0);
48
+ }
49
+ changeCwd(dir) {
50
+ /* */
51
+ /* */
52
+ /* */
53
+ /* */
54
+ /* */
55
+ return (void 0);
56
+ }
57
+ /**
58
+ * // TODO refactor this
59
+ * @deprecated
60
+ */
61
+ goToDir(dir = '..') {
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
+ return (void 0);
89
+ }
90
+ async pressKeyOrWait(message = 'Press enter try again', printWaitMessages = 0) {
91
+ /* */
92
+ /* */
93
+ /* */
94
+ /* */
95
+ /* */
96
+ /* */
97
+ /* */
98
+ /* */
99
+ /* */
100
+ /* */
101
+ /* */
102
+ /* */
103
+ /* */
104
+ return (void 0);
105
+ }
106
+ /**
107
+ * @deprecated use UtilsTerminal.pressAnyKey
108
+ */
109
+ pressKeyAndContinue(message = 'Press enter to continue..') {
110
+ /* */
111
+ /* */
112
+ return (void 0);
113
+ }
114
+ /**
115
+ * @deprecated use UtilsTerminal.multiselect
116
+ */
117
+ async list(question, choices) {
118
+ /* */
119
+ /* */
120
+ /* */
121
+ /* */
122
+ /* */
123
+ /* */
124
+ /* */
125
+ /* */
126
+ /* */
127
+ /* */
128
+ /* */
129
+ /* */
130
+ /* */
131
+ /* */
132
+ /* */
133
+ /* */
134
+ /* */
135
+ /* */
136
+ /* */
137
+ /* */
138
+ /* */
139
+ /* */
140
+ return (void 0);
141
+ }
142
+ /**
143
+ * @deprecated use UtilsTerminal.multiselect
144
+ */
145
+ async multipleChoicesAsk(question, choices, autocomplete = false, selected) {
146
+ /* */
147
+ /* */
148
+ /* */
149
+ /* */
150
+ /* */
151
+ /* */
152
+ /* */
153
+ return (void 0);
154
+ }
155
+ /**
156
+ * @deprecated use UtilsTerminal.input
157
+ */
158
+ async input(options) {
159
+ /* */
160
+ /* */
161
+ return (void 0);
162
+ }
163
+ /**
164
+ * @deprecated use UtilsTerminal.multiselect
165
+ * TODO wierd problem when pressing key like "i"
166
+ */
167
+ async selectChoicesAsk(question, choices) {
168
+ /* */
169
+ /* */
170
+ /* */
171
+ /* */
172
+ /* */
173
+ /* */
174
+ /* */
175
+ /* */
176
+ /* */
177
+ /* */
178
+ /* */
179
+ /* */
180
+ /* */
181
+ /* */
182
+ /* */
183
+ /* */
184
+ /* */
185
+ /* */
186
+ /* */
187
+ /* */
188
+ /* */
189
+ /* */
190
+ /* */
191
+ /* */
192
+ /* */
193
+ /* */
194
+ /* */
195
+ /* */
196
+ /* */
197
+ /* */
198
+ /* */
199
+ return (void 0);
200
+ }
201
+ async autocompleteAsk(question, choices, pageSize = 10) {
202
+ /* */
203
+ /* */
204
+ /* */
205
+ /* */
206
+ /* */
207
+ /* */
208
+ /* */
209
+ /* */
210
+ /* */
211
+ /* */
212
+ /* */
213
+ /* */
214
+ /* */
215
+ /* */
216
+ /* */
217
+ /* */
218
+ /* */
219
+ /* */
220
+ /* */
221
+ /* */
222
+ /* */
223
+ /* */
224
+ /* */
225
+ /* */
226
+ /* */
227
+ /* */
228
+ /* */
229
+ /* */
230
+ /* */
231
+ /* */
232
+ /* */
233
+ /* */
234
+ /* */
235
+ return (void 0);
236
+ }
237
+ getWorkingDirOfProcess(PID) {
238
+ /* */
239
+ /* */
240
+ /* */
241
+ /* */
242
+ /* */
243
+ /* */
244
+ /* */
245
+ /* */
246
+ /* */
247
+ /* */
248
+ return (void 0);
249
+ }
250
+ outputToVScode(data, disableEncode = false) {
251
+ /* */
252
+ /* */
253
+ /* */
254
+ /* */
255
+ /* */
256
+ /* */
257
+ /* */
258
+ /* */
259
+ /* */
260
+ return (void 0);
261
+ }
262
+ async actionWrapper(fn, taskName = 'Task') {
263
+ /* */
264
+ /* */
265
+ /* */
266
+ /* */
267
+ /* */
268
+ /* */
269
+ /* */
270
+ /* */
271
+ /* */
272
+ return (void 0);
273
+ }
274
+ terminalLine() {
275
+ /* */
276
+ /* */
277
+ return (void 0);
278
+ }
279
+ /**
280
+ * THIS DEOS NOT WORK !
281
+ * ! TOOD FIX THIS
282
+ */
283
+ async killAllNodeExceptCurrentProcess() {
284
+ /* */
285
+ /* */
286
+ /* */
287
+ /* */
288
+ /* */
289
+ /* */
290
+ /* */
291
+ /* */
292
+ /* */
293
+ /* */
294
+ /* */
295
+ /* */
296
+ /* */
297
+ /* */
298
+ /* */
299
+ /* */
300
+ /* */
301
+ /* */
302
+ /* */
303
+ /* */
304
+ /* */
305
+ /* */
306
+ /* */
307
+ /* */
308
+ /* */
309
+ /* */
310
+ /* */
311
+ /* */
312
+ /* */
313
+ /* */
314
+ /* */
315
+ /* */
316
+ /* */
317
+ /* */
318
+ /* */
319
+ /* */
320
+ /* */
321
+ /* */
322
+ /* */
323
+ /* */
324
+ /* */
325
+ /* */
326
+ /* */
327
+ /* */
328
+ /* */
329
+ /* */
330
+ /* */
331
+ /* */
332
+ /* */
333
+ /* */
334
+ /* */
335
+ /* */
336
+ /* */
337
+ /* */
338
+ /* */
339
+ /* */
340
+ /* */
341
+ /* */
342
+ /* */
343
+ /* */
344
+ /* */
345
+ /* */
346
+ /* */
347
+ /* */
348
+ /* */
349
+ /* */
350
+ /* */
351
+ /* */
352
+ /* */
353
+ /* */
354
+ /* */
355
+ /* */
356
+ /* */
357
+ /* */
358
+ /* */
359
+ /* */
360
+ /* */
361
+ /* */
362
+ /* */
363
+ /* */
364
+ /* */
365
+ /* */
366
+ /* */
367
+ return (void 0);
368
+ }
369
+ killAllNode() {
370
+ /* */
371
+ /* */
372
+ /* */
373
+ /* */
374
+ /* */
375
+ /* */
376
+ /* */
377
+ /* */
378
+ /* */
379
+ /* */
380
+ /* */
381
+ /* */
382
+ /* */
383
+ /* */
384
+ /* */
385
+ /* */
386
+ /* */
387
+ /* */
388
+ /* */
389
+ return (void 0);
390
+ }
391
+ formatPath(pathToFileOrFolder) {
392
+ /* */
393
+ /* */
394
+ /* */
395
+ /* */
396
+ /* */
397
+ /* */
398
+ /* */
399
+ /* */
400
+ /* */
401
+ /* */
402
+ /* */
403
+ /* */
404
+ /* */
405
+ /* */
406
+ /* */
407
+ /* */
408
+ /* */
409
+ /* */
410
+ /* */
411
+ /* */
412
+ /* */
413
+ /* */
414
+ /* */
415
+ /* */
416
+ /* */
417
+ /* */
418
+ /* */
419
+ /* */
420
+ /* */
421
+ /* */
422
+ /* */
423
+ /* */
424
+ /* */
425
+ /* */
426
+ /* */
427
+ /* */
428
+ /* */
429
+ /* */
430
+ /* */
431
+ return (void 0);
432
+ }
433
+ /**
434
+ * @deprecated
435
+ */
436
+ prepareWatchCommand(cmd) {
437
+ /* */
438
+ /* */
439
+ return (void 0);
440
+ }
441
+ /**
442
+ * @deprecated
443
+ */
444
+ getStringFrom(command, descriptionOfCommand) {
445
+ /* */
446
+ /* */
447
+ /* */
448
+ /* */
449
+ /* */
450
+ /* */
451
+ /* */
452
+ /* */
453
+ /* */
454
+ /* */
455
+ return (void 0);
456
+ }
457
+ async waitForMessegeInStdout(proc, message) {
458
+ /* */
459
+ /* */
460
+ /* */
461
+ /* */
462
+ /* */
463
+ /* */
464
+ /* */
465
+ /* */
466
+ /* */
467
+ /* */
468
+ /* */
469
+ /* */
470
+ /* */
471
+ /* */
472
+ /* */
473
+ /* */
474
+ /* */
475
+ /* */
476
+ /* */
477
+ /* */
478
+ /* */
479
+ /* */
480
+ /* */
481
+ /* */
482
+ /* */
483
+ /* */
484
+ /* */
485
+ /* */
486
+ /* */
487
+ /* */
488
+ return (void 0);
489
+ }
490
+ }
491
+ ;
492
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/for-backend/helpers-process.ts
493
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1wcm9jZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3QvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi9oZWxwZXJzL2Zvci1iYWNrZW5kL2hlbHBlcnMtcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFvQmhELE1BQU0sT0FBTyxjQUFjO0lBRXpCLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxTQUFpQjtRQUNsRCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxTQUFTLENBQUMsT0FBK0I7UUFDM0MsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsaUJBQWlCLENBQUMsT0FBZTtRQUNuQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEdBQVcsRUFDWCxpQkFBMkIsRUFDM0IsV0FBa0IsS0FBSyxDQUFDLFNBQVM7UUFFckMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0ws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SztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELFdBQVc7UUFDYixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELFVBQVUsQ0FBQyxrQkFBMEI7UUFDdkMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsR0FBRztRQUN6QixLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxPQUFlLEVBQUUsb0JBQTZCO1FBQzlELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQWtCLEVBQUUsT0FBZTtRQUNsRSxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1GQUFtRiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IGV4ZWMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB0eXBlIHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCAqIGFzIHNwYXduIGZyb20gJ2Nyb3NzLXNwYXduJztcbmltcG9ydCAqIGFzIGRhdGVmb3JtYXQgZnJvbSAnZGF0ZWZvcm1hdCc7XG5pbXBvcnQgKiBhcyBmdXp6eSBmcm9tICdmdXp6eSc7XG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5pbXBvcnQgeyAgIF8sICAgb3MsICAgcGF0aCwgICBmc2UsICAgY2hpbGRfcHJvY2VzcywgICBma2lsbCwgICBjcm9zc1BsYXRmb3JtUGF0aCwgICBjaGFsaywgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IENMSSwgVXRpbHNQcm9jZXNzLCBVdGlsc1Rlcm1pbmFsIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyJztcblxuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4uLy4uL2luZGV4JztcbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuLi8uLi9pbmRleCc7XG5cblxuXG5leHBvcnQgY2xhc3MgSGVscGVyc1Byb2Nlc3Mge1xuXG4gIGFzeW5jIHJlc3RhcnRBcHBsaWNhdGlvbkl0c2VsZihuYW1lT2ZBcHA6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIG9zSXNNYWNPcyh2ZXJzaW5vOiAnYmlnLXN1cicgfCAnY2F0YWxpbmEnKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2VuZXJhdGVkRmlsZVdyYXAoY29udGVudDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgY2hhbmdlQ3dkV3JhcHBlcihcbiAgICBkaXI6IHN0cmluZyxcbiAgICBmdW5jdGlvblRvRXhlY3VyZTogRnVuY3Rpb24sXG4gICAgbG9nTGV2ZWw6IExldmVsID0gTGV2ZWwuX19OT1RISU5HLFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGNoYW5nZUN3ZChkaXI/OiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogLy8gVE9ETyByZWZhY3RvciB0aGlzXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBnb1RvRGlyKGRpciA9ICcuLicpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBwcmVzc0tleU9yV2FpdChcbiAgICBtZXNzYWdlID0gJ1ByZXNzIGVudGVyIHRyeSBhZ2FpbicsXG4gICAgcHJpbnRXYWl0TWVzc2FnZXMgPSAwLFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2UgVXRpbHNUZXJtaW5hbC5wcmVzc0FueUtleVxuICAgKi9cbiAgcHJlc3NLZXlBbmRDb250aW51ZShtZXNzYWdlID0gJ1ByZXNzIGVudGVyIHRvIGNvbnRpbnVlLi4nKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLm11bHRpc2VsZWN0XG4gICAqL1xuICBhc3luYyBsaXN0PFQgPSBzdHJpbmc+KFxuICAgIHF1ZXN0aW9uOiBzdHJpbmcsXG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfSxcbiAgKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFV0aWxzVGVybWluYWwubXVsdGlzZWxlY3RcbiAgICovXG4gIGFzeW5jIG11bHRpcGxlQ2hvaWNlc0FzayhcbiAgICBxdWVzdGlvbjogc3RyaW5nLFxuICAgIGNob2ljZXM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgICBhdXRvY29tcGxldGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBzZWxlY3RlZD86IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSxcbiAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLmlucHV0XG4gICAqL1xuICBhc3luYyBpbnB1dChvcHRpb25zOiB7XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG5cbiAgICB2YWxpZGF0ZT86ICh2YWx1ZTogc3RyaW5nKSA9PiBib29sZWFuO1xuICB9KTogUHJvbWlzZTxzdHJpbmc+IHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIFV0aWxzVGVybWluYWwubXVsdGlzZWxlY3RcbiAgICogVE9ETyB3aWVyZCBwcm9ibGVtIHdoZW4gcHJlc3Npbmcga2V5IGxpa2UgXCJpXCJcbiAgICovXG4gIGFzeW5jIHNlbGVjdENob2ljZXNBc2s8VCA9IHN0cmluZz4oXG4gICAgcXVlc3Rpb246IHN0cmluZyxcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9LFxuICApOiBQcm9taXNlPFQ+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIGF1dG9jb21wbGV0ZUFzazxUID0gc3RyaW5nPihcbiAgICBxdWVzdGlvbjogc3RyaW5nLFxuICAgIGNob2ljZXM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogVCB9W10sXG4gICAgcGFnZVNpemUgPSAxMCxcbiAgKTogUHJvbWlzZTxUPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldFdvcmtpbmdEaXJPZlByb2Nlc3MoUElEOiBudW1iZXIpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIG91dHB1dFRvVlNjb2RlKFxuICAgIGRhdGE6IHsgbGFiZWw6IHN0cmluZzsgb3B0aW9uOiBzdHJpbmcgfVtdIHwgc3RyaW5nLFxuICAgIGRpc2FibGVFbmNvZGUgPSBmYWxzZSxcbiAgKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIGFjdGlvbldyYXBwZXIoZm46ICgpID0+IHZvaWQsIHRhc2tOYW1lOiBzdHJpbmcgPSAnVGFzaycpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgdGVybWluYWxMaW5lKCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUSElTIERFT1MgTk9UIFdPUksgIVxuICAgKiAhIFRPT0QgRklYIFRISVNcbiAgICovXG4gIGFzeW5jIGtpbGxBbGxOb2RlRXhjZXB0Q3VycmVudFByb2Nlc3MoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAga2lsbEFsbE5vZGUoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBmb3JtYXRQYXRoKHBhdGhUb0ZpbGVPckZvbGRlcjogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHJlcGFyZVdhdGNoQ29tbWFuZChjbWQpIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGdldFN0cmluZ0Zyb20oY29tbWFuZDogc3RyaW5nLCBkZXNjcmlwdGlvbk9mQ29tbWFuZD86IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgd2FpdEZvck1lc3NlZ2VJblN0ZG91dChwcm9jOiBDaGlsZFByb2Nlc3MsIG1lc3NhZ2U6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvaGVscGVycy9mb3ItYmFja2VuZC9oZWxwZXJzLXByb2Nlc3MudHMiXX0=
@@ -2,6 +2,8 @@ import { _ } from 'tnp-core/browser';
2
2
  import { HelpersArrayObj } from './helpers-array-obj';
3
3
  import { HelpersStringsRegexes } from './helpers-strings-regexes';
4
4
  import { HelpersStrings } from './helpers-strings';
5
+ import { HelpersProcess } from './for-backend/helpers-process';
6
+ import { HelpersFileFolders } from './for-backend/helpers-file-folders';
5
7
  import { Helpers, Validators } from '../index';
6
8
  import { CLASS } from 'typescript-class-helpers/browser';
7
9
  import { CoreHelpers } from 'tnp-core/browser';
@@ -137,6 +139,13 @@ export class HelpersTaon extends CoreHelpers {
137
139
  /* */
138
140
  /* */
139
141
  /* */
142
+ /* */
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ /* */
148
+ /* */
140
149
  return (void 0);
141
150
  }
142
151
  /**
@@ -411,11 +420,9 @@ export class HelpersTaon extends CoreHelpers {
411
420
  }
412
421
  applyMixins(HelpersTaon, [
413
422
  HelpersStringsRegexes,
414
- /* */
415
- /* */
416
- /* */
423
+ HelpersProcess,
424
+ HelpersFileFolders,
417
425
  ]);
418
- /* eslint-enable prettier/prettier */
419
426
  ;
420
427
  ({}); // @--end-of-file-for-module=tnp-helpers lib/helpers/helpers.ts
421
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxDQUFDLEVBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBc0JuRCxPQUFPLEVBQUUsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs5RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxXQUFnQixFQUFFLFNBQWdCO0lBQzVELFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDM0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDNUQsTUFBTSxDQUFDLGNBQWMsQ0FDbkIsV0FBVyxDQUFDLFNBQVMsRUFDckIsSUFBSSxFQUNKLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFHRCxNQUFNLE9BQU8sV0FBWSxTQUFRLFdBQVc7SUFHbkMsTUFBTSxLQUFLLFFBQVE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQixXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDNUMsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBSUQ7SUFDRixLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUVNLFNBQVMsSUFBSSxlQUFlLEVBQUUsRUFDOUIsVUFBVSxJQUFJLGNBQWMsRUFBRSxFQUM5QixVQUFVLElBQUksYUFBYSxFQUFFLEVBRTdCLFVBQVUsY0FBYyxDQUFDLFFBQVEsRUFDakMsS0FBSyxjQUFjO1FBRzFCLEtBQUssRUFBRSxDQUFDO1FBUkQsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7UUFFN0IsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDakMsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUF5YnJCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBSWpDLGNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUl6QyxzQkFBaUIsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQztJQTdibEQsQ0FBQztJQUlELE9BQU8sQ0FBQyxDQUFXLEVBQUUsSUFBWTtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFJRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQ1AsWUFBb0IsRUFDcEIsY0FBc0IsRUFDdEIsT0FXQztRQUVMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFVLEtBQVksRUFBRSxjQUF3QjtRQUMzRCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBV0QsUUFBUSxDQUFDLFVBQWlDLEVBQUUsV0FBVyxHQUFHLEtBQUs7UUFDN0QsSUFBSSxHQUFRLENBQUM7UUFDYixJQUFJLFVBQVUsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUM5QixHQUFHLEdBQUcsVUFBVSxDQUFDO1FBQ25CLENBQUM7YUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsb0JBQW9CLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQzthQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLG9CQUFvQixNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7YUFBTSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUEsQ0FBQztZQUNsQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQztvQkFDSCxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixNQUFNLE1BQU0sR0FBRyxVQUFvQixDQUFDO2dCQUNwQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ1gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLFVBQVUsRUFBRSxDQUM1RCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFJRCxLQUFLLENBQUMseUJBQWlDO1FBQ3pDLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELEtBQUssQ0FBQyxVQUFVO1FBQ2xCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFLRCxtQkFBbUI7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELEtBQUssQ0FBQyxrQkFBa0IsQ0FDdEIsV0FBbUIsRUFDbkIsaUJBQTJCLEVBQzNCLEdBQUcsaUJBQXdCO1FBRTNCLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDO1lBQzNCLFVBQVUsRUFBRSxpQkFBaUI7WUFDN0IsYUFBYSxFQUFFLGlCQUFpQjtTQUNqQyxDQUFDLENBQUM7UUFDSCxZQUFZO1FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFJRCxzQkFBc0IsQ0FDcEIsV0FBbUIsRUFDbkIsaUJBQTZCO1FBRTdCLElBQUksS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixZQUFZO1FBQ1osSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxXQUE2QixFQUFFLGtCQUFrQixHQUFHLElBQUk7UUFDdkUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0JBQ2xFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUNsQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSUQsYUFBYSxDQUFDLFdBQVcsRUFBRSxNQUFNO1FBQy9CLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztRQUN0QixNQUFNLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUNqQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9DLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFJRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sS0FBSyxHQUFXLENBQVEsQ0FBQztZQUMvQixJQUFJLEtBQUssS0FBSyxNQUFNO2dCQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDcEMsSUFBSSxLQUFLLEtBQUssT0FBTztnQkFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLG9CQUFvQixDQUN4QixXQUFrQixFQUNsQixTQUdrQixFQUNsQixPQUlDO1FBRUwsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7SUFFSCxDQUFDO0lBSUQsZ0JBQWdCLENBQUMsSUFBb0M7UUFDdkQsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBY0Y7QUFnQkQsV0FBVyxDQUFDLFdBQVcsRUFBRTtJQUN2QixxQkFBcUI7SUFDdkIsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0NBRUosQ0FBQyxDQUFDO0FBR0gscUNBQXFDO0FBRXBDLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0RBQStEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuaW1wb3J0IHsgXywgcGF0aCB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVyc0FycmF5T2JqIH0gZnJvbSAnLi9oZWxwZXJzLWFycmF5LW9iaic7XG5pbXBvcnQgeyBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMgfSBmcm9tICcuL2hlbHBlcnMtc3RyaW5ncy1yZWdleGVzJztcbmltcG9ydCB7IEhlbHBlcnNTdHJpbmdzIH0gZnJvbSAnLi9oZWxwZXJzLXN0cmluZ3MnO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVycywgVXRpbHNRdWlja0ZpeGVzLCBWYWxpZGF0b3JzIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5pbXBvcnQgeyBDb3JlSGVscGVycywgQ29yZU1vZGVscyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgSGVscGVyc051bWJlciB9IGZyb20gJy4vaGVscGVycy1udW1iZXJzJztcblxuaW1wb3J0IHsgSGVscGVyc0Jyb3dzZXIgfSBmcm9tICcuL2Zvci1icm93c2VyL2hlbHBlcnMtYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzQW5ndWxhciB9IGZyb20gJy4vZm9yLWJyb3dzZXIvYW5ndWxhci5oZWxwZXInO1xuXG5cblxuXG4vKipcbiAqIE1peGluZyBmb3IgbXVsdGljbGFzcyBpbmhlcml0YW5jZVxuICpcbiAqIEhvdyB0byB1c2UgSXQ6XG4gKlxuICogY2xhc3MgV29sdmVyaW5lIHt9XG4gKiBjbGFzcyBKZWFuIHt9XG4gKiBleHBvcnQgY2xhc3MgQ2hpbGQge31cbiAqIGV4cG9ydCBpbnRlcmZhY2UgTXlDaGlsZCBpbXBsZW1lbnRzIFdvbHZlcmluZSwgSmVhbiB7fVxuICogYXBwbHlNaXhpbmcoQ2hpbGQsW1dvbHZlcmluZSwgSmVhbl0pO1xuICpcbiAqIEBwYXJhbSBkZXJpdmVkQ3RvciBUYXJnZXQgQ2xhc3NcbiAqIEBwYXJhbSBiYXNlQ3RvcnMgQmFzZSBDbGFzc2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseU1peGlucyhkZXJpdmVkQ3RvcjogYW55LCBiYXNlQ3RvcnM6IGFueVtdKSB7XG4gIGJhc2VDdG9ycy5mb3JFYWNoKGJhc2VDdG9yID0+IHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiYXNlQ3Rvci5wcm90b3R5cGUpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoXG4gICAgICAgIGRlcml2ZWRDdG9yLnByb3RvdHlwZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihiYXNlQ3Rvci5wcm90b3R5cGUsIG5hbWUpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cblxuZXhwb3J0IGNsYXNzIEhlbHBlcnNUYW9uIGV4dGVuZHMgQ29yZUhlbHBlcnMge1xuXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogSGVscGVyc1Rhb24gJiBDb3JlSGVscGVycztcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogSGVscGVyc1Rhb24ge1xuICAgIGlmICghSGVscGVyc1Rhb24uX2luc3RhbmNlKSB7XG4gICAgICBIZWxwZXJzVGFvbi5faW5zdGFuY2UgPSBuZXcgSGVscGVyc1Rhb24oKTtcbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlcnNUYW9uLl9pbnN0YW5jZTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHB1YmxpYyBhcnJheXMgPSBuZXcgSGVscGVyc0FycmF5T2JqKCksXG4gICAgcHVibGljIHN0cmluZ3MgPSBuZXcgSGVscGVyc1N0cmluZ3MoKSxcbiAgICBwdWJsaWMgbnVtYmVycyA9IG5ldyBIZWxwZXJzTnVtYmVyKCksXG5cbiAgICBwdWJsaWMgYnJvd3NlciA9IEhlbHBlcnNCcm93c2VyLmluc3RhbmNlLFxuICAgIHB1YmxpYyBuZyA9IEhlbHBlcnNBbmd1bGFyLFxuXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuXG5cbiAgQ0xJV1JBUChmOiBGdW5jdGlvbiwgbmFtZTogc3RyaW5nKSB7XG4gICAgQ0xBU1Muc2V0TmFtZShmLCBuYW1lKTtcbiAgICByZXR1cm4gZjtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQnVuZGxlIGZpbGUgd2l0aCBub2RlX21vZHVsZXMgaW50byBvbmUgZmlsZVxuICAgKi9cbiAgYXN5bmMgbmNjKFxuICAgIHBhdGhUb0pzRmlsZTogc3RyaW5nLFxuICAgIG91dHB1dEZpbGVQYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIC8qKlxuICAgICAgICogISBiZWZvcmVXcml0ZSBuZWVkcyB0byByZXR1cm4gb3V0cHV0XG4gICAgICAgKi9cbiAgICAgIGJlZm9yZVdyaXRlPzogKG9wdGlvbnM6IHtcbiAgICAgICAgb3V0cHV0Pzogc3RyaW5nO1xuICAgICAgICBjb3B5VG9EZXN0aW5hdGlvbj86IChmaWxlT3JGb2xkZXJBYnNQYXRoOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgICB9KSA9PiBzdHJpbmc7XG4gICAgICBhZGRpdGlvbmFsRXh0ZXJuYWxzPzogc3RyaW5nW107XG4gICAgICBza2lwUmVtb3ZpbmdFbGVjdHJvbj86IGJvb2xlYW47XG4gICAgICBza2lwRml4aW5nU1FMbGl0ZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiB1c2UgVXRpbHMudW5pcUFycmF5IGZyb20gdG5wLWNvcmVcbiAgICovXG4gIHVuaXFBcnJheTxUID0gYW55PihhcnJheTogYW55W10sIHVuaXF1ZVByb3BlcnR5Pzoga2V5b2YgVCk6IFRbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cbiAgdXJsUGFyc2UocG9ydE9ySG9zdDogbnVtYmVyIHwgc3RyaW5nIHwgVVJMLCBmb3JjZURvbWFpbiA9IGZhbHNlKSB7XG4gICAgbGV0IHVybDogVVJMO1xuICAgIGlmIChwb3J0T3JIb3N0IGluc3RhbmNlb2YgVVJMKSB7XG4gICAgICB1cmwgPSBwb3J0T3JIb3N0O1xuICAgIH0gZWxzZSBpZiAoXy5pc051bWJlcihwb3J0T3JIb3N0KSkge1xuICAgICAgdXJsID0gbmV3IFVSTChgaHR0cDovL2xvY2FsaG9zdDoke3BvcnRPckhvc3R9YCk7XG4gICAgfSBlbHNlIGlmICghXy5pc05hTihOdW1iZXIocG9ydE9ySG9zdCkpKSB7XG4gICAgICB1cmwgPSBuZXcgVVJMKGBodHRwOi8vbG9jYWxob3N0OiR7TnVtYmVyKHBvcnRPckhvc3QpfWApO1xuICAgIH0gZWxzZSBpZiAoXy5pc1N0cmluZyhwb3J0T3JIb3N0KSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdXJsID0gbmV3IFVSTChwb3J0T3JIb3N0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgaWYgKFZhbGlkYXRvcnMubmV0d29yay5pc1ZhbGlkSXAocG9ydE9ySG9zdCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB1cmwgPSBuZXcgVVJMKGBodHRwOi8vJHtwb3J0T3JIb3N0fWApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIEhlbHBlcnMud2FybihgTm90IGFibGUgdG8gZ2V0IHBvcnQgZnJvbSAke3BvcnRPckhvc3R9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3JjZURvbWFpbikge1xuICAgICAgICBjb25zdCBkb21haW4gPSBwb3J0T3JIb3N0IGFzIHN0cmluZztcbiAgICAgICAgdXJsID0gbmV3IFVSTChcbiAgICAgICAgICBkb21haW4uc3RhcnRzV2l0aCgnaHR0cCcpID8gZG9tYWluIDogYGh0dHA6Ly8ke3BvcnRPckhvc3R9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG5cblxuICBzbGFzaChwYXRoRnJvbVdpbmRvd3NPclVuaXhUeXBlOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBpc0VsZXZhdGVkKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIGZpeCB0aGlzIG1ldGhvZHNcbiAgICovXG4gIGFzeW5jIGxvY2FsSXBBZGRyZXNzKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cblxuICBhbGxMb2NhbElwQWRkcmVzc2VzKCk6IFVSTFtdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgbWVzdXJlRXhlY3Rpb25Jbk1zKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6IEZ1bmN0aW9uLFxuICAgIC4uLmZ1bmN0aW9uQXJndW1lbnRzOiBhbnlbXVxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyh7XG4gICAgICBmdW5jdGlvbkZuOiBmdW5jdGlvblRvRXhlY3V0ZSxcbiAgICAgIGFycmF5T2ZQYXJhbXM6IGZ1bmN0aW9uQXJndW1lbnRzLFxuICAgIH0pO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnQ7XG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBIZWxwZXJzLmluZm8oYEV4ZWN1dGlvbiB0aW1lOiAke2VuZC50b1N0cmluZygpfW1zIGZvciBcIiR7ZGVzY3JpcHRpb259XCJgKTtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZW5kO1xuICB9XG5cblxuXG4gIG1lc3VyZUV4ZWN0aW9uSW5Nc1N5bmMoXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBmdW5jdGlvblRvRXhlY3V0ZTogKCkgPT4gdm9pZCxcbiAgKTogbnVtYmVyIHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgIGZ1bmN0aW9uVG9FeGVjdXRlKCk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkgLSBzdGFydDtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMuaW5mbyhgRXhlY3V0aW9uIHRpbWU6ICR7ZW5kLnRvU3RyaW5nKCl9bXMgZm9yIFwiJHtkZXNjcmlwdGlvbn1cImApO1xuICAgIH1cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuXG5cbiAgd2FpdEZvckNvbmRpdGlvbihjb25kaXRpb25GbjogKGFueSkgPT4gYm9vbGVhbiwgaG93T2ZmdGVuQ2hlY2tJbk1zID0gMTAwMCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKHsgZnVuY3Rpb25GbjogY29uZGl0aW9uRm4gfSk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJlc29sdmUodm9pZCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIEhlbHBlcnMud2FpdEZvckNvbmRpdGlvbihjb25kaXRpb25GbiwgaG93T2ZmdGVuQ2hlY2tJbk1zKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUodm9pZCAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgaG93T2ZmdGVuQ2hlY2tJbk1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cblxuICBnZXRNZXRob2ROYW1lKGNsYXNzT2JqZWN0LCBtZXRob2QpOiBzdHJpbmcge1xuICAgIHZhciBtZXRob2ROYW1lID0gbnVsbDtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjbGFzc09iamVjdCkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGlmIChjbGFzc09iamVjdFtwcm9wXSA9PT0gbWV0aG9kKSB7XG4gICAgICAgIG1ldGhvZE5hbWUgPSBwcm9wO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG1ldGhvZE5hbWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtZXRob2ROYW1lO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGFzc09iamVjdCk7XG4gICAgaWYgKHByb3RvKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5nZXRNZXRob2ROYW1lKHByb3RvLCBtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGZpeFdlYnBhY2tFbnYoZW52OiBPYmplY3QpIHtcbiAgICBfLmZvckluKGVudiwgKHYsIGspID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB2IGFzIGFueTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSBlbnZba10gPSB0cnVlO1xuICAgICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSBlbnZba10gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGFzeW5jIHdvcmtlckNhbGN1bGF0ZUFycmF5KFxuICAgIGRhdGFUb1NwbGl0OiBhbnlbXSxcbiAgICBvcGVyYXRpb246IChcbiAgICAgIGRhdGFDaHVuazogYW55W10sXG4gICAgICB3b3JrZXJOdW1iZXI/OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBtYXhlc0Zvcldvcmtlcz86IHsgW3dvcmtlck1heGVzOiBudW1iZXJdOiBudW1iZXIgfTtcbiAgICAgIHdvcmtlckxpbWl0PzogbnVtYmVyO1xuICAgICAgZ2xvYmFscz86IGFueTtcbiAgICB9LFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBjaGVja0Vudmlyb25tZW50KGRlcHM/OiBDb3JlTW9kZWxzLkdsb2JhbERlcGVuZGVuY2llcykge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHB1YmxpYyBhcHBseU1peGlucyA9IGFwcGx5TWl4aW5zO1xuXG5cblxuICBpc1ZhbGlkSXAgPSBWYWxpZGF0b3JzLm5ldHdvcmsuaXNWYWxpZElwO1xuXG5cblxuICBpc1ZhbGlkR2l0UmVwdVVybCA9IFZhbGlkYXRvcnMuZ2l0LmlzVmFsaWRSZXBvVXJsO1xuXG59XG5cblxuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cblxuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXJzVGFvbiBleHRlbmRzXG4gIEhlbHBlcnNTdHJpbmdzUmVnZXhlc1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG57IH1cblxuXG5hcHBseU1peGlucyhIZWxwZXJzVGFvbiwgW1xuICBIZWxwZXJzU3RyaW5nc1JlZ2V4ZXMsXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXSk7XG5cblxuLyogZXNsaW50LWVuYWJsZSBwcmV0dGllci9wcmV0dGllciAqL1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2hlbHBlcnMvaGVscGVycy50cyJdfQ==
428
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvaGVscGVycy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxDQUFDLEVBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQXFCeEUsT0FBTyxFQUFFLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFLOUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBZ0IsRUFBRSxTQUFnQjtJQUM1RCxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVELE1BQU0sQ0FBQyxjQUFjLENBQ25CLFdBQVcsQ0FBQyxTQUFTLEVBQ3JCLElBQUksRUFDSixNQUFNLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR25DLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUlEO0lBQ0YsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFFTSxTQUFTLElBQUksZUFBZSxFQUFFLEVBQzlCLFVBQVUsSUFBSSxjQUFjLEVBQUUsRUFDOUIsVUFBVSxJQUFJLGFBQWEsRUFBRSxFQUU3QixVQUFVLGNBQWMsQ0FBQyxRQUFRLEVBQ2pDLEtBQUssY0FBYztRQUcxQixLQUFLLEVBQUUsQ0FBQztRQVJELFdBQU0sR0FBTixNQUFNLENBQXdCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBRTdCLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWlCO1FBZ2NyQixnQkFBVyxHQUFHLFdBQVcsQ0FBQztRQUlqQyxjQUFTLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFJekMsc0JBQWlCLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFwY2xELENBQUM7SUFJRCxPQUFPLENBQUMsQ0FBVyxFQUFFLElBQVk7UUFDL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBSUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUNQLFlBQW9CLEVBQ3BCLGNBQXNCLEVBQ3RCLE9BV0M7UUFFTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtB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Q0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztJQUVILENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxJQUFvQztRQUN2RCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FjRjtBQVFELFdBQVcsQ0FBQyxXQUFXLEVBQUU7SUFDdkIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxrQkFBa0I7Q0FDbkIsQ0FBQyxDQUFDO0FBSUYsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywrREFBK0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBfLCBwYXRoIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzQXJyYXlPYmogfSBmcm9tICcuL2hlbHBlcnMtYXJyYXktb2JqJztcbmltcG9ydCB7IEhlbHBlcnNTdHJpbmdzUmVnZXhlcyB9IGZyb20gJy4vaGVscGVycy1zdHJpbmdzLXJlZ2V4ZXMnO1xuaW1wb3J0IHsgSGVscGVyc1N0cmluZ3MgfSBmcm9tICcuL2hlbHBlcnMtc3RyaW5ncyc7XG5pbXBvcnQgeyBIZWxwZXJzUHJvY2VzcyB9IGZyb20gJy4vZm9yLWJhY2tlbmQvaGVscGVycy1wcm9jZXNzJztcbmltcG9ydCB7IEhlbHBlcnNGaWxlRm9sZGVycyB9IGZyb20gJy4vZm9yLWJhY2tlbmQvaGVscGVycy1maWxlLWZvbGRlcnMnO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzLCBVdGlsc1F1aWNrRml4ZXMsIFZhbGlkYXRvcnMgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgeyBDTEFTUyB9IGZyb20gJ3R5cGVzY3JpcHQtY2xhc3MtaGVscGVycy9icm93c2VyJztcbmltcG9ydCB7IENvcmVIZWxwZXJzLCBDb3JlTW9kZWxzIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgeyBIZWxwZXJzTnVtYmVyIH0gZnJvbSAnLi9oZWxwZXJzLW51bWJlcnMnO1xuXG5pbXBvcnQgeyBIZWxwZXJzQnJvd3NlciB9IGZyb20gJy4vZm9yLWJyb3dzZXIvaGVscGVycy1icm93c2VyJztcbmltcG9ydCB7IEhlbHBlcnNBbmd1bGFyIH0gZnJvbSAnLi9mb3ItYnJvd3Nlci9hbmd1bGFyLmhlbHBlcic7XG5cblxuXG5cbi8qKlxuICogTWl4aW5nIGZvciBtdWx0aWNsYXNzIGluaGVyaXRhbmNlXG4gKlxuICogSG93IHRvIHVzZSBJdDpcbiAqXG4gKiBjbGFzcyBXb2x2ZXJpbmUge31cbiAqIGNsYXNzIEplYW4ge31cbiAqIGV4cG9ydCBjbGFzcyBDaGlsZCB7fVxuICogZXhwb3J0IGludGVyZmFjZSBNeUNoaWxkIGltcGxlbWVudHMgV29sdmVyaW5lLCBKZWFuIHt9XG4gKiBhcHBseU1peGluZyhDaGlsZCxbV29sdmVyaW5lLCBKZWFuXSk7XG4gKlxuICogQHBhcmFtIGRlcml2ZWRDdG9yIFRhcmdldCBDbGFzc1xuICogQHBhcmFtIGJhc2VDdG9ycyBCYXNlIENsYXNzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5TWl4aW5zKGRlcml2ZWRDdG9yOiBhbnksIGJhc2VDdG9yczogYW55W10pIHtcbiAgYmFzZUN0b3JzLmZvckVhY2goYmFzZUN0b3IgPT4ge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJhc2VDdG9yLnByb3RvdHlwZSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShcbiAgICAgICAgZGVyaXZlZEN0b3IucHJvdG90eXBlLFxuICAgICAgICBuYW1lLFxuICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGJhc2VDdG9yLnByb3RvdHlwZSwgbmFtZSksXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn1cblxuXG5leHBvcnQgY2xhc3MgSGVscGVyc1Rhb24gZXh0ZW5kcyBDb3JlSGVscGVycyB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBIZWxwZXJzVGFvbiAmIENvcmVIZWxwZXJzO1xuICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBIZWxwZXJzVGFvbiB7XG4gICAgaWYgKCFIZWxwZXJzVGFvbi5faW5zdGFuY2UpIHtcbiAgICAgIEhlbHBlcnNUYW9uLl9pbnN0YW5jZSA9IG5ldyBIZWxwZXJzVGFvbigpO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyc1Rhb24uX2luc3RhbmNlO1xuICB9XG5cblxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcHVibGljIGFycmF5cyA9IG5ldyBIZWxwZXJzQXJyYXlPYmooKSxcbiAgICBwdWJsaWMgc3RyaW5ncyA9IG5ldyBIZWxwZXJzU3RyaW5ncygpLFxuICAgIHB1YmxpYyBudW1iZXJzID0gbmV3IEhlbHBlcnNOdW1iZXIoKSxcblxuICAgIHB1YmxpYyBicm93c2VyID0gSGVscGVyc0Jyb3dzZXIuaW5zdGFuY2UsXG4gICAgcHVibGljIG5nID0gSGVscGVyc0FuZ3VsYXIsXG5cbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG5cblxuICBDTElXUkFQKGY6IEZ1bmN0aW9uLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBDTEFTUy5zZXROYW1lKGYsIG5hbWUpO1xuICAgIHJldHVybiBmO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBCdW5kbGUgZmlsZSB3aXRoIG5vZGVfbW9kdWxlcyBpbnRvIG9uZSBmaWxlXG4gICAqL1xuICBhc3luYyBuY2MoXG4gICAgcGF0aFRvSnNGaWxlOiBzdHJpbmcsXG4gICAgb3V0cHV0RmlsZVBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgLyoqXG4gICAgICAgKiAhIGJlZm9yZVdyaXRlIG5lZWRzIHRvIHJldHVybiBvdXRwdXRcbiAgICAgICAqL1xuICAgICAgYmVmb3JlV3JpdGU/OiAob3B0aW9uczoge1xuICAgICAgICBvdXRwdXQ/OiBzdHJpbmc7XG4gICAgICAgIGNvcHlUb0Rlc3RpbmF0aW9uPzogKGZpbGVPckZvbGRlckFic1BhdGg6IHN0cmluZykgPT4gdm9pZDtcbiAgICAgIH0pID0+IHN0cmluZztcbiAgICAgIGFkZGl0aW9uYWxFeHRlcm5hbHM/OiBzdHJpbmdbXTtcbiAgICAgIHNraXBSZW1vdmluZ0VsZWN0cm9uPzogYm9vbGVhbjtcbiAgICAgIHNraXBGaXhpbmdTUUxsaXRlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKiB1c2UgVXRpbHMudW5pcUFycmF5IGZyb20gdG5wLWNvcmVcbiAgICovXG4gIHVuaXFBcnJheTxUID0gYW55PihhcnJheTogYW55W10sIHVuaXF1ZVByb3BlcnR5Pzoga2V5b2YgVCk6IFRbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG5cblxuXG5cblxuXG5cbiAgdXJsUGFyc2UocG9ydE9ySG9zdDogbnVtYmVyIHwgc3RyaW5nIHwgVVJMLCBmb3JjZURvbWFpbiA9IGZhbHNlKSB7XG4gICAgbGV0IHVybDogVVJMO1xuICAgIGlmIChwb3J0T3JIb3N0IGluc3RhbmNlb2YgVVJMKSB7XG4gICAgICB1cmwgPSBwb3J0T3JIb3N0O1xuICAgIH0gZWxzZSBpZiAoXy5pc051bWJlcihwb3J0T3JIb3N0KSkge1xuICAgICAgdXJsID0gbmV3IFVSTChgaHR0cDovL2xvY2FsaG9zdDoke3BvcnRPckhvc3R9YCk7XG4gICAgfSBlbHNlIGlmICghXy5pc05hTihOdW1iZXIocG9ydE9ySG9zdCkpKSB7XG4gICAgICB1cmwgPSBuZXcgVVJMKGBodHRwOi8vbG9jYWxob3N0OiR7TnVtYmVyKHBvcnRPckhvc3QpfWApO1xuICAgIH0gZWxzZSBpZiAoXy5pc1N0cmluZyhwb3J0T3JIb3N0KSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdXJsID0gbmV3IFVSTChwb3J0T3JIb3N0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fVxuICAgICAgaWYgKFZhbGlkYXRvcnMubmV0d29yay5pc1ZhbGlkSXAocG9ydE9ySG9zdCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB1cmwgPSBuZXcgVVJMKGBodHRwOi8vJHtwb3J0T3JIb3N0fWApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIEhlbHBlcnMud2FybihgTm90IGFibGUgdG8gZ2V0IHBvcnQgZnJvbSAke3BvcnRPckhvc3R9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3JjZURvbWFpbikge1xuICAgICAgICBjb25zdCBkb21haW4gPSBwb3J0T3JIb3N0IGFzIHN0cmluZztcbiAgICAgICAgdXJsID0gbmV3IFVSTChcbiAgICAgICAgICBkb21haW4uc3RhcnRzV2l0aCgnaHR0cCcpID8gZG9tYWluIDogYGh0dHA6Ly8ke3BvcnRPckhvc3R9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG5cblxuICBzbGFzaChwYXRoRnJvbVdpbmRvd3NPclVuaXhUeXBlOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBpc0VsZXZhdGVkKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIGZpeCB0aGlzIG1ldGhvZHNcbiAgICovXG4gIGFzeW5jIGxvY2FsSXBBZGRyZXNzKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cblxuICBhbGxMb2NhbElwQWRkcmVzc2VzKCk6IFVSTFtdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgbWVzdXJlRXhlY3Rpb25Jbk1zKFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgZnVuY3Rpb25Ub0V4ZWN1dGU6IEZ1bmN0aW9uLFxuICAgIC4uLmZ1bmN0aW9uQXJndW1lbnRzOiBhbnlbXVxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHZhciBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgYXdhaXQgSGVscGVycy5ydW5TeW5jT3JBc3luYyh7XG4gICAgICBmdW5jdGlvbkZuOiBmdW5jdGlvblRvRXhlY3V0ZSxcbiAgICAgIGFycmF5T2ZQYXJhbXM6IGZ1bmN0aW9uQXJndW1lbnRzLFxuICAgIH0pO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHZhciBlbmQgPSBuZXcgRGF0ZSgpIC0gc3RhcnQ7XG4gICAgaWYgKEhlbHBlcnMuaXNCcm93c2VyKSB7XG4gICAgICBIZWxwZXJzLmluZm8oYEV4ZWN1dGlvbiB0aW1lOiAke2VuZC50b1N0cmluZygpfW1zIGZvciBcIiR7ZGVzY3JpcHRpb259XCJgKTtcbiAgICB9XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZW5kO1xuICB9XG5cblxuXG4gIG1lc3VyZUV4ZWN0aW9uSW5Nc1N5bmMoXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBmdW5jdGlvblRvRXhlY3V0ZTogKCkgPT4gdm9pZCxcbiAgKTogbnVtYmVyIHtcbiAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpO1xuICAgIGZ1bmN0aW9uVG9FeGVjdXRlKCk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgdmFyIGVuZCA9IG5ldyBEYXRlKCkgLSBzdGFydDtcbiAgICBpZiAoSGVscGVycy5pc0Jyb3dzZXIpIHtcbiAgICAgIEhlbHBlcnMuaW5mbyhgRXhlY3V0aW9uIHRpbWU6ICR7ZW5kLnRvU3RyaW5nKCl9bXMgZm9yIFwiJHtkZXNjcmlwdGlvbn1cImApO1xuICAgIH1cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBlbmQ7XG4gIH1cblxuXG5cbiAgd2FpdEZvckNvbmRpdGlvbihjb25kaXRpb25GbjogKGFueSkgPT4gYm9vbGVhbiwgaG93T2ZmdGVuQ2hlY2tJbk1zID0gMTAwMCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKHsgZnVuY3Rpb25GbjogY29uZGl0aW9uRm4gfSk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJlc29sdmUodm9pZCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIEhlbHBlcnMud2FpdEZvckNvbmRpdGlvbihjb25kaXRpb25GbiwgaG93T2ZmdGVuQ2hlY2tJbk1zKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUodm9pZCAwKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgaG93T2ZmdGVuQ2hlY2tJbk1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cblxuICBnZXRNZXRob2ROYW1lKGNsYXNzT2JqZWN0LCBtZXRob2QpOiBzdHJpbmcge1xuICAgIHZhciBtZXRob2ROYW1lID0gbnVsbDtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjbGFzc09iamVjdCkuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGlmIChjbGFzc09iamVjdFtwcm9wXSA9PT0gbWV0aG9kKSB7XG4gICAgICAgIG1ldGhvZE5hbWUgPSBwcm9wO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG1ldGhvZE5hbWUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBtZXRob2ROYW1lO1xuICAgIH1cblxuICAgIHZhciBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGFzc09iamVjdCk7XG4gICAgaWYgKHByb3RvKSB7XG4gICAgICByZXR1cm4gSGVscGVycy5nZXRNZXRob2ROYW1lKHByb3RvLCBtZXRob2QpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGZpeFdlYnBhY2tFbnYoZW52OiBPYmplY3QpIHtcbiAgICBfLmZvckluKGVudiwgKHYsIGspID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlOiBzdHJpbmcgPSB2IGFzIGFueTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSBlbnZba10gPSB0cnVlO1xuICAgICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSBlbnZba10gPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGFzeW5jIHdvcmtlckNhbGN1bGF0ZUFycmF5KFxuICAgIGRhdGFUb1NwbGl0OiBhbnlbXSxcbiAgICBvcGVyYXRpb246IChcbiAgICAgIGRhdGFDaHVuazogYW55W10sXG4gICAgICB3b3JrZXJOdW1iZXI/OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBtYXhlc0Zvcldvcmtlcz86IHsgW3dvcmtlck1heGVzOiBudW1iZXJdOiBudW1iZXIgfTtcbiAgICAgIHdvcmtlckxpbWl0PzogbnVtYmVyO1xuICAgICAgZ2xvYmFscz86IGFueTtcbiAgICB9LFxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBjaGVja0Vudmlyb25tZW50KGRlcHM/OiBDb3JlTW9kZWxzLkdsb2JhbERlcGVuZGVuY2llcykge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHB1YmxpYyBhcHBseU1peGlucyA9IGFwcGx5TWl4aW5zO1xuXG5cblxuICBpc1ZhbGlkSXAgPSBWYWxpZGF0b3JzLm5ldHdvcmsuaXNWYWxpZElwO1xuXG5cblxuICBpc1ZhbGlkR2l0UmVwdVVybCA9IFZhbGlkYXRvcnMuZ2l0LmlzVmFsaWRSZXBvVXJsO1xuXG59XG5cblxuZXhwb3J0IGludGVyZmFjZSBIZWxwZXJzVGFvblxuICBleHRlbmRzIEhlbHBlcnNTdHJpbmdzUmVnZXhlcyxcbiAgICBIZWxwZXJzUHJvY2VzcyxcbiAgICBIZWxwZXJzRmlsZUZvbGRlcnMge31cblxuYXBwbHlNaXhpbnMoSGVscGVyc1Rhb24sIFtcbiAgSGVscGVyc1N0cmluZ3NSZWdleGVzLFxuICBIZWxwZXJzUHJvY2VzcyxcbiAgSGVscGVyc0ZpbGVGb2xkZXJzLFxuXSk7XG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2hlbHBlcnMvaGVscGVycy50cyJdfQ==