tnp-helpers 19.0.0 → 19.0.2

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 (246) hide show
  1. package/assets/shared/shared_folder_info.txt +3 -3
  2. package/browser/fesm2022/tnp-helpers.mjs +74 -39
  3. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  4. package/browser/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  5. package/browser/lib/base/classes/base-git.d.ts +1 -1
  6. package/browser/lib/base/classes/base-node-modules.d.ts +1 -1
  7. package/browser/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  8. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  9. package/browser/lib/build-info._auto-generated_.d.ts +3 -0
  10. package/browser/lib/helpers/helpers.d.ts +4 -1
  11. package/client/fesm2022/tnp-helpers.mjs +74 -39
  12. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  13. package/client/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  14. package/client/lib/base/classes/base-git.d.ts +1 -1
  15. package/client/lib/base/classes/base-node-modules.d.ts +1 -1
  16. package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  17. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  18. package/client/lib/build-info._auto-generated_.d.ts +3 -0
  19. package/client/lib/helpers/helpers.d.ts +4 -1
  20. package/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  21. package/lib/base/classes/base-cli-worker/base-cli-worker.js +54 -1
  22. package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
  23. package/lib/base/classes/base-global-command-line.backend.d.ts +2 -0
  24. package/lib/base/classes/base-global-command-line.backend.js +36 -1
  25. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  26. package/lib/base/classes/base-node-modules.d.ts +1 -1
  27. package/lib/base/classes/base-project-resolver.js +4 -2
  28. package/lib/base/classes/base-project-resolver.js.map +1 -1
  29. package/lib/base/classes/base-project.d.ts +1 -1
  30. package/lib/base/classes/base-vscode.js +3 -0
  31. package/lib/base/classes/base-vscode.js.map +1 -1
  32. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  33. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  34. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +2 -2
  35. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  36. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  37. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +3 -33
  38. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  39. package/lib/build-info._auto-generated_.d.ts +1 -0
  40. package/lib/build-info._auto-generated_.js +4 -1
  41. package/lib/build-info._auto-generated_.js.map +1 -1
  42. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
  43. package/lib/helpers/for-backend/helpers-git.backend.d.ts +2 -0
  44. package/lib/helpers/for-backend/helpers-git.backend.js +34 -23
  45. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  46. package/lib/helpers/for-browser/angular.helper.js +2 -2
  47. package/lib/helpers/helpers.d.ts +4 -1
  48. package/lib/helpers/helpers.js +18 -15
  49. package/lib/helpers/helpers.js.map +1 -1
  50. package/lib/index._auto-generated_.js +2 -2
  51. package/lib/index._auto-generated_.js.map +1 -1
  52. package/lib/old/base-component.js +2 -2
  53. package/lib/old/base-formly-component.js +2 -2
  54. package/lib/old/dual-component-ctrl.js +2 -2
  55. package/package.json +5 -5
  56. package/src.d.ts +3 -3
  57. package/tmp-environment.json +5 -4
  58. package/websql/fesm2022/tnp-helpers.mjs +74 -40
  59. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  60. package/websql/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  61. package/websql/lib/base/classes/base-git.d.ts +1 -1
  62. package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
  63. package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  64. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  65. package/websql/lib/build-info._auto-generated_.d.ts +3 -0
  66. package/websql/lib/helpers/helpers.d.ts +4 -1
  67. package/browser/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  68. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  69. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  70. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  71. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  72. package/browser/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  73. package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  74. package/browser/esm2022/lib/base/classes/base-db.mjs +0 -31
  75. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  76. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  77. package/browser/esm2022/lib/base/classes/base-git.mjs +0 -1175
  78. package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  79. package/browser/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  80. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  81. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  82. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  83. package/browser/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  84. package/browser/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  85. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  86. package/browser/esm2022/lib/base/classes/base-project.mjs +0 -922
  87. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  88. package/browser/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  89. package/browser/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  90. package/browser/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  91. package/browser/esm2022/lib/base/classes/index.mjs +0 -24
  92. package/browser/esm2022/lib/base/commit-data.mjs +0 -633
  93. package/browser/esm2022/lib/base/config-database.mjs +0 -46
  94. package/browser/esm2022/lib/base/core-project.mjs +0 -115
  95. package/browser/esm2022/lib/base/index.mjs +0 -10
  96. package/browser/esm2022/lib/base/linked-project.mjs +0 -90
  97. package/browser/esm2022/lib/base/project-database.mjs +0 -18
  98. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  99. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  100. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  101. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  102. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  103. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  104. package/browser/esm2022/lib/base/translate.mjs +0 -566
  105. package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  106. package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  107. package/browser/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  108. package/browser/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  109. package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  110. package/browser/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  111. package/browser/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  112. package/browser/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  113. package/browser/esm2022/lib/helpers/helpers.mjs +0 -428
  114. package/browser/esm2022/lib/index.mjs +0 -13
  115. package/browser/esm2022/lib/models.mjs +0 -175
  116. package/browser/esm2022/lib/utils.mjs +0 -952
  117. package/browser/esm2022/lib/validators/validators-git.mjs +0 -12
  118. package/browser/esm2022/lib/validators/validators-network.mjs +0 -18
  119. package/browser/esm2022/lib/validators/validators.mjs +0 -10
  120. package/browser/esm2022/migrations/1736198527297_init.mjs +0 -41
  121. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  122. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  123. package/browser/esm2022/migrations/index.mjs +0 -5
  124. package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  125. package/browser/esm2022/public-api.mjs +0 -2
  126. package/browser/esm2022/tnp-helpers.mjs +0 -5
  127. package/client/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  128. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  129. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  130. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  131. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  132. package/client/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  133. package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  134. package/client/esm2022/lib/base/classes/base-db.mjs +0 -31
  135. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  136. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  137. package/client/esm2022/lib/base/classes/base-git.mjs +0 -1175
  138. package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  139. package/client/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  140. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  141. package/client/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  142. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  143. package/client/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  144. package/client/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  145. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  146. package/client/esm2022/lib/base/classes/base-project.mjs +0 -922
  147. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  148. package/client/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  149. package/client/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  150. package/client/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  151. package/client/esm2022/lib/base/classes/index.mjs +0 -24
  152. package/client/esm2022/lib/base/commit-data.mjs +0 -633
  153. package/client/esm2022/lib/base/config-database.mjs +0 -46
  154. package/client/esm2022/lib/base/core-project.mjs +0 -115
  155. package/client/esm2022/lib/base/index.mjs +0 -10
  156. package/client/esm2022/lib/base/linked-project.mjs +0 -90
  157. package/client/esm2022/lib/base/project-database.mjs +0 -18
  158. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  159. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  160. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  161. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  162. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  163. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  164. package/client/esm2022/lib/base/translate.mjs +0 -566
  165. package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  166. package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  167. package/client/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  168. package/client/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  169. package/client/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  170. package/client/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  171. package/client/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  172. package/client/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  173. package/client/esm2022/lib/helpers/helpers.mjs +0 -428
  174. package/client/esm2022/lib/index.mjs +0 -13
  175. package/client/esm2022/lib/models.mjs +0 -175
  176. package/client/esm2022/lib/utils.mjs +0 -952
  177. package/client/esm2022/lib/validators/validators-git.mjs +0 -12
  178. package/client/esm2022/lib/validators/validators-network.mjs +0 -18
  179. package/client/esm2022/lib/validators/validators.mjs +0 -10
  180. package/client/esm2022/migrations/1736198527297_init.mjs +0 -41
  181. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  182. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  183. package/client/esm2022/migrations/index.mjs +0 -5
  184. package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  185. package/client/esm2022/public-api.mjs +0 -2
  186. package/client/esm2022/tnp-helpers.mjs +0 -5
  187. package/websql/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  188. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  189. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  190. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  191. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  192. package/websql/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  193. package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  194. package/websql/esm2022/lib/base/classes/base-db.mjs +0 -31
  195. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  196. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  197. package/websql/esm2022/lib/base/classes/base-git.mjs +0 -1175
  198. package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  199. package/websql/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  200. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  201. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  202. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  203. package/websql/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  204. package/websql/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  205. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +0 -272
  206. package/websql/esm2022/lib/base/classes/base-project.mjs +0 -891
  207. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  208. package/websql/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  209. package/websql/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  210. package/websql/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  211. package/websql/esm2022/lib/base/classes/index.mjs +0 -24
  212. package/websql/esm2022/lib/base/commit-data.mjs +0 -633
  213. package/websql/esm2022/lib/base/config-database.mjs +0 -46
  214. package/websql/esm2022/lib/base/core-project.mjs +0 -115
  215. package/websql/esm2022/lib/base/index.mjs +0 -10
  216. package/websql/esm2022/lib/base/linked-project.mjs +0 -90
  217. package/websql/esm2022/lib/base/project-database.mjs +0 -18
  218. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  219. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  220. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -56
  221. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  222. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  223. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  224. package/websql/esm2022/lib/base/translate.mjs +0 -566
  225. package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  226. package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  227. package/websql/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  228. package/websql/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  229. package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  230. package/websql/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  231. package/websql/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  232. package/websql/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  233. package/websql/esm2022/lib/helpers/helpers.mjs +0 -428
  234. package/websql/esm2022/lib/index.mjs +0 -13
  235. package/websql/esm2022/lib/models.mjs +0 -175
  236. package/websql/esm2022/lib/utils.mjs +0 -952
  237. package/websql/esm2022/lib/validators/validators-git.mjs +0 -12
  238. package/websql/esm2022/lib/validators/validators-network.mjs +0 -18
  239. package/websql/esm2022/lib/validators/validators.mjs +0 -10
  240. package/websql/esm2022/migrations/1736198527297_init.mjs +0 -41
  241. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  242. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  243. package/websql/esm2022/migrations/index.mjs +0 -5
  244. package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  245. package/websql/esm2022/public-api.mjs +0 -2
  246. package/websql/esm2022/tnp-helpers.mjs +0 -5
@@ -1,566 +0,0 @@
1
- const iso = {
2
- aar: 'aa',
3
- abk: 'ab',
4
- afr: 'af',
5
- aka: 'ak',
6
- alb: 'sq',
7
- amh: 'am',
8
- ara: 'ar',
9
- arg: 'an',
10
- arm: 'hy',
11
- asm: 'as',
12
- ava: 'av',
13
- ave: 'ae',
14
- aym: 'ay',
15
- aze: 'az',
16
- bak: 'ba',
17
- bam: 'bm',
18
- baq: 'eu',
19
- bel: 'be',
20
- ben: 'bn',
21
- bih: 'bh',
22
- bis: 'bi',
23
- bos: 'bs',
24
- bre: 'br',
25
- bul: 'bg',
26
- bur: 'my',
27
- cat: 'ca',
28
- cha: 'ch',
29
- che: 'ce',
30
- chi: 'zh',
31
- chu: 'cu',
32
- chv: 'cv',
33
- cor: 'kw',
34
- cos: 'co',
35
- cre: 'cr',
36
- cze: 'cs',
37
- dan: 'da',
38
- div: 'dv',
39
- dut: 'nl',
40
- dzo: 'dz',
41
- eng: 'en',
42
- epo: 'eo',
43
- est: 'et',
44
- ewe: 'ee',
45
- fao: 'fo',
46
- fij: 'fj',
47
- fin: 'fi',
48
- fre: 'fr',
49
- fry: 'fy',
50
- ful: 'ff',
51
- geo: 'ka',
52
- ger: 'de',
53
- gla: 'gd',
54
- gle: 'ga',
55
- glg: 'gl',
56
- glv: 'gv',
57
- gre: 'el',
58
- grn: 'gn',
59
- guj: 'gu',
60
- hat: 'ht',
61
- hau: 'ha',
62
- heb: 'he',
63
- her: 'hz',
64
- hin: 'hi',
65
- hmo: 'ho',
66
- hrv: 'hr',
67
- hun: 'hu',
68
- ibo: 'ig',
69
- ice: 'is',
70
- ido: 'io',
71
- iii: 'ii',
72
- iku: 'iu',
73
- ile: 'ie',
74
- ina: 'ia',
75
- ind: 'id',
76
- ipk: 'ik',
77
- ita: 'it',
78
- jav: 'jv',
79
- jpn: 'ja',
80
- kal: 'kl',
81
- kan: 'kn',
82
- kas: 'ks',
83
- kau: 'kr',
84
- kaz: 'kk',
85
- khm: 'km',
86
- kik: 'ki',
87
- kin: 'rw',
88
- kir: 'ky',
89
- kom: 'kv',
90
- kon: 'kg',
91
- kor: 'ko',
92
- kua: 'kj',
93
- kur: 'ku',
94
- lao: 'lo',
95
- lat: 'la',
96
- lav: 'lv',
97
- lim: 'li',
98
- lin: 'ln',
99
- lit: 'lt',
100
- ltz: 'lb',
101
- lub: 'lu',
102
- lug: 'lg',
103
- mac: 'mk',
104
- mah: 'mh',
105
- mal: 'ml',
106
- mao: 'mi',
107
- mar: 'mr',
108
- may: 'ms',
109
- mlg: 'mg',
110
- mlt: 'mt',
111
- mon: 'mn',
112
- nau: 'na',
113
- nav: 'nv',
114
- nbl: 'nr',
115
- nde: 'nd',
116
- ndo: 'ng',
117
- nep: 'ne',
118
- nno: 'nn',
119
- nob: 'nb',
120
- nor: 'no',
121
- nya: 'ny',
122
- oci: 'oc',
123
- oji: 'oj',
124
- ori: 'or',
125
- orm: 'om',
126
- oss: 'os',
127
- pan: 'pa',
128
- per: 'fa',
129
- pli: 'pi',
130
- pol: 'pl',
131
- por: 'pt',
132
- pus: 'ps',
133
- que: 'qu',
134
- roh: 'rm',
135
- rum: 'ro',
136
- run: 'rn',
137
- rus: 'ru',
138
- sag: 'sg',
139
- san: 'sa',
140
- sin: 'si',
141
- slo: 'sk',
142
- slv: 'sl',
143
- sme: 'se',
144
- smo: 'sm',
145
- sna: 'sn',
146
- snd: 'sd',
147
- som: 'so',
148
- sot: 'st',
149
- spa: 'es',
150
- srd: 'sc',
151
- srp: 'sr',
152
- ssw: 'ss',
153
- sun: 'su',
154
- swa: 'sw',
155
- swe: 'sv',
156
- tah: 'ty',
157
- tam: 'ta',
158
- tat: 'tt',
159
- tel: 'te',
160
- tgk: 'tg',
161
- tgl: 'tl',
162
- tha: 'th',
163
- tib: 'bo',
164
- tir: 'ti',
165
- ton: 'to',
166
- tsn: 'tn',
167
- tso: 'ts',
168
- tuk: 'tk',
169
- tur: 'tr',
170
- twi: 'tw',
171
- uig: 'ug',
172
- ukr: 'uk',
173
- urd: 'ur',
174
- uzb: 'uz',
175
- ven: 've',
176
- vie: 'vi',
177
- vol: 'vo',
178
- wel: 'cy',
179
- wln: 'wa',
180
- wol: 'wo',
181
- xho: 'xh',
182
- yid: 'yi',
183
- yor: 'yo',
184
- zha: 'za',
185
- zul: 'zu',
186
- }, names = {
187
- afar: 'aa',
188
- abkhazian: 'ab',
189
- afrikaans: 'af',
190
- akan: 'ak',
191
- albanian: 'sq',
192
- amharic: 'am',
193
- arabic: 'ar',
194
- aragonese: 'an',
195
- armenian: 'hy',
196
- assamese: 'as',
197
- avaric: 'av',
198
- avestan: 'ae',
199
- aymara: 'ay',
200
- azerbaijani: 'az',
201
- bashkir: 'ba',
202
- bambara: 'bm',
203
- basque: 'eu',
204
- belarusian: 'be',
205
- bengali: 'bn',
206
- 'bihari languages': 'bh',
207
- bislama: 'bi',
208
- tibetan: 'bo',
209
- bosnian: 'bs',
210
- breton: 'br',
211
- bulgarian: 'bg',
212
- burmese: 'my',
213
- catalan: 'ca',
214
- valencian: 'ca',
215
- czech: 'cs',
216
- chamorro: 'ch',
217
- chechen: 'ce',
218
- chinese: 'zh',
219
- 'church slavic': 'cu',
220
- 'old slavonic': 'cu',
221
- 'church slavonic': 'cu',
222
- 'old bulgarian': 'cu',
223
- 'old church slavonic': 'cu',
224
- chuvash: 'cv',
225
- cornish: 'kw',
226
- corsican: 'co',
227
- cree: 'cr',
228
- welsh: 'cy',
229
- danish: 'da',
230
- german: 'de',
231
- divehi: 'dv',
232
- dhivehi: 'dv',
233
- maldivian: 'dv',
234
- dutch: 'nl',
235
- flemish: 'nl',
236
- dzongkha: 'dz',
237
- greek: 'el',
238
- english: 'en',
239
- esperanto: 'eo',
240
- estonian: 'et',
241
- ewe: 'ee',
242
- faroese: 'fo',
243
- persian: 'fa',
244
- fijian: 'fj',
245
- finnish: 'fi',
246
- french: 'fr',
247
- 'western frisian': 'fy',
248
- fulah: 'ff',
249
- georgian: 'ka',
250
- gaelic: 'gd',
251
- 'scottish gaelic': 'gd',
252
- irish: 'ga',
253
- galician: 'gl',
254
- manx: 'gv',
255
- guarani: 'gn',
256
- gujarati: 'gu',
257
- haitian: 'ht',
258
- 'haitian creole': 'ht',
259
- hausa: 'ha',
260
- hebrew: 'he',
261
- herero: 'hz',
262
- hindi: 'hi',
263
- 'hiri motu': 'ho',
264
- croatian: 'hr',
265
- hungarian: 'hu',
266
- igbo: 'ig',
267
- icelandic: 'is',
268
- ido: 'io',
269
- 'sichuan yi': 'ii',
270
- nuosu: 'ii',
271
- inuktitut: 'iu',
272
- interlingue: 'ie',
273
- occidental: 'ie',
274
- interlingua: 'ia',
275
- indonesian: 'id',
276
- inupiaq: 'ik',
277
- italian: 'it',
278
- javanese: 'jv',
279
- japanese: 'ja',
280
- kalaallisut: 'kl',
281
- greenlandic: 'kl',
282
- kannada: 'kn',
283
- kashmiri: 'ks',
284
- kanuri: 'kr',
285
- kazakh: 'kk',
286
- 'central khmer': 'km',
287
- kikuyu: 'ki',
288
- gikuyu: 'ki',
289
- kinyarwanda: 'rw',
290
- kirghiz: 'ky',
291
- kyrgyz: 'ky',
292
- komi: 'kv',
293
- kongo: 'kg',
294
- korean: 'ko',
295
- kuanyama: 'kj',
296
- kwanyama: 'kj',
297
- kurdish: 'ku',
298
- lao: 'lo',
299
- latin: 'la',
300
- latvian: 'lv',
301
- limburgan: 'li',
302
- limburger: 'li',
303
- limburgish: 'li',
304
- lingala: 'ln',
305
- lithuanian: 'lt',
306
- luxembourgish: 'lb',
307
- letzeburgesch: 'lb',
308
- 'luba-katanga': 'lu',
309
- ganda: 'lg',
310
- macedonian: 'mk',
311
- marshallese: 'mh',
312
- malayalam: 'ml',
313
- maori: 'mi',
314
- marathi: 'mr',
315
- malay: 'ms',
316
- malagasy: 'mg',
317
- maltese: 'mt',
318
- mongolian: 'mn',
319
- nauru: 'na',
320
- navajo: 'nv',
321
- navaho: 'nv',
322
- 'ndebele, south': 'nr',
323
- 'south ndebele': 'nr',
324
- 'ndebele, north': 'nd',
325
- 'north ndebele': 'nd',
326
- ndonga: 'ng',
327
- nepali: 'ne',
328
- 'norwegian nynorsk': 'nn',
329
- 'nynorsk, norwegian': 'nn',
330
- 'norwegian bokmål': 'nb',
331
- 'bokmål, norwegian': 'nb',
332
- norwegian: 'no',
333
- chichewa: 'ny',
334
- chewa: 'ny',
335
- nyanja: 'ny',
336
- occitan: 'oc',
337
- ojibwa: 'oj',
338
- oriya: 'or',
339
- oromo: 'om',
340
- ossetian: 'os',
341
- ossetic: 'os',
342
- panjabi: 'pa',
343
- punjabi: 'pa',
344
- pali: 'pi',
345
- polish: 'pl',
346
- portuguese: 'pt',
347
- pushto: 'ps',
348
- pashto: 'ps',
349
- quechua: 'qu',
350
- romansh: 'rm',
351
- romanian: 'ro',
352
- moldavian: 'ro',
353
- moldovan: 'ro',
354
- rundi: 'rn',
355
- russian: 'ru',
356
- sango: 'sg',
357
- sanskrit: 'sa',
358
- sinhala: 'si',
359
- sinhalese: 'si',
360
- slovak: 'sk',
361
- slovenian: 'sl',
362
- 'northern sami': 'se',
363
- samoan: 'sm',
364
- shona: 'sn',
365
- sindhi: 'sd',
366
- somali: 'so',
367
- 'sotho, southern': 'st',
368
- spanish: 'es',
369
- castilian: 'es',
370
- sardinian: 'sc',
371
- serbian: 'sr',
372
- swati: 'ss',
373
- sundanese: 'su',
374
- swahili: 'sw',
375
- swedish: 'sv',
376
- tahitian: 'ty',
377
- tamil: 'ta',
378
- tatar: 'tt',
379
- telugu: 'te',
380
- tajik: 'tg',
381
- tagalog: 'tl',
382
- thai: 'th',
383
- tigrinya: 'ti',
384
- tonga: 'to',
385
- tswana: 'tn',
386
- tsonga: 'ts',
387
- turkmen: 'tk',
388
- turkish: 'tr',
389
- twi: 'tw',
390
- uighur: 'ug',
391
- uyghur: 'ug',
392
- ukrainian: 'uk',
393
- urdu: 'ur',
394
- uzbek: 'uz',
395
- venda: 've',
396
- vietnamese: 'vi',
397
- volapük: 'vo',
398
- walloon: 'wa',
399
- wolof: 'wo',
400
- xhosa: 'xh',
401
- yiddish: 'yi',
402
- yoruba: 'yo',
403
- zhuang: 'za',
404
- chuang: 'za',
405
- zulu: 'zu',
406
- };
407
- // @ts-ignore
408
- const isoKeys = Object.values(iso).sort();
409
- var languages = e => {
410
- if ('string' != typeof e)
411
- throw new Error('The "language" must be a string, received ' + typeof e);
412
- if (e.length > 100)
413
- throw new Error(`The "language" is too long at ${e.length} characters`);
414
- if (((e = e.toLowerCase()), (e = names[e] || iso[e] || e), !isoKeys.includes(e)))
415
- throw new Error(`The language "${e}" is not part of the ISO 639-1`);
416
- return e;
417
- };
418
- function Cache() {
419
- var e = Object.create(null);
420
- function a(a) {
421
- delete e[a];
422
- }
423
- (this.set = function (n, i, r) {
424
- if (void 0 !== r && ('number' != typeof r || isNaN(r) || r <= 0))
425
- throw new Error('Cache timeout must be a positive number');
426
- var t = e[n];
427
- t && clearTimeout(t.timeout);
428
- var o = { value: i, expire: r + Date.now() };
429
- return (
430
- // @ts-ignore
431
- isNaN(o.expire) || (o.timeout = setTimeout(() => a(n), r)), (e[n] = o), i);
432
- }),
433
- (this.del = function (n) {
434
- var i = !0, r = e[n];
435
- return (r
436
- ? (clearTimeout(r.timeout),
437
- !isNaN(r.expire) && r.expire < Date.now() && (i = !1))
438
- : (i = !1),
439
- i && a(n),
440
- i);
441
- }),
442
- (this.clear = function () {
443
- for (var a in e)
444
- clearTimeout(e[a].timeout);
445
- e = Object.create(null);
446
- }),
447
- (this.get = function (a) {
448
- var n = e[a];
449
- if (void 0 !== n) {
450
- if (isNaN(n.expire) || n.expire >= Date.now())
451
- return n.value;
452
- delete e[a];
453
- }
454
- return null;
455
- });
456
- }
457
- const exp$1 = new Cache();
458
- exp$1.Cache = Cache;
459
- const base = 'https://translate.googleapis.com/translate_a/single';
460
- var google = {
461
- fetch: ({ key: e, from: a, to: n, text: i }) => [
462
- `${base}?client=gtx&sl=${a}&tl=${n}&dt=t&q=${encodeURI(i)}`,
463
- ],
464
- parse: e => e.json().then(e => {
465
- if (!(e = e && e[0] && e[0][0] && e[0].map(e => e[0]).join('')))
466
- throw new Error('Translation not found');
467
- return e;
468
- }),
469
- }, yandex = {
470
- needkey: !0,
471
- fetch: ({ key: e, from: a, to: n, text: i }) => [
472
- `https://translate.yandex.net/api/v1.5/tr.json/translate?key=${e}&lang=${a}-${n}&text=${encodeURIComponent(i)}`,
473
- { method: 'POST', body: '' },
474
- ],
475
- parse: e => e.json().then(e => {
476
- if (200 !== e.code)
477
- throw new Error(e.message);
478
- return e.text[0];
479
- }),
480
- };
481
- const libreUrl = 'https://libretranslate.com/translate';
482
- var libre = {
483
- needkey: !1,
484
- fetch: ({ url: e = libreUrl, key: a, from: n, to: i, text: r }) => [
485
- e,
486
- {
487
- method: 'POST',
488
- body: JSON.stringify({ q: r, source: n, target: i, api_key: a }),
489
- headers: { 'Content-Type': 'application/json' },
490
- },
491
- ],
492
- parse: e => e.json().then(e => {
493
- if (!e)
494
- throw new Error('No response found');
495
- if (e.error)
496
- throw new Error(e.error);
497
- if (!e.translatedText)
498
- throw new Error('No response found');
499
- return e.translatedText;
500
- }),
501
- }, deepl = {
502
- needkey: !0,
503
- fetch: ({ key: e, from: a, to: n, text: i }) => [
504
- `https://api${/:fx$/.test(e) ? '-free' : ''}.deepl.com/v2/translate?auth_key=${e}&source_lang=${a}&target_lang=${n}&text=${(i = encodeURIComponent(i))}`,
505
- { method: 'POST', body: '' },
506
- ],
507
- parse: async (e) => {
508
- if (!e.ok) {
509
- if (403 === e.status)
510
- throw new Error('Auth Error, please review the key for DeepL');
511
- throw new Error(`Error ${e.status}`);
512
- }
513
- return e.json().then(e => e.translations[0].text);
514
- },
515
- }, engines = { google: google, yandex: yandex, libre: libre, deepl: deepl };
516
- const Translate = function (e = {}) {
517
- // @ts-ignore
518
- if (!(this instanceof Translate))
519
- return new Translate(e);
520
- const a = {
521
- from: 'en',
522
- to: 'en',
523
- cache: void 0,
524
- languages: languages,
525
- engines: engines,
526
- engine: 'google',
527
- keys: {},
528
- }, n = async (e, a = {}) => {
529
- 'string' == typeof a && (a = { to: a }), // @ts-ignore
530
- (a.text = e), // @ts-ignore
531
- (a.from = languages(a.from || n.from)), // @ts-ignore
532
- (a.to = languages(a.to || n.to)), // @ts-ignore
533
- (a.cache = a.cache || n.cache), // @ts-ignore
534
- (a.engines = a.engines || {}), // @ts-ignore
535
- (a.engine = a.engine || n.engine), // @ts-ignore
536
- (a.url = a.url || n.url), // @ts-ignore
537
- (a.id = a.id || `${a.url}:${a.from}:${a.to}:${a.engine}:${a.text}`), // @ts-ignore
538
- (a.keys = a.keys || n.keys || {}); // @ts-ignore
539
- for (let e in n.keys)
540
- a.keys[e] = a.keys[e] || n.keys[e]; // @ts-ignore
541
- a.key = a.key || n.key || a.keys[a.engine]; // @ts-ignore
542
- const i = a.engines[a.engine] || n.engines[a.engine], // @ts-ignore
543
- r = exp$1.get(a.id);
544
- if (r)
545
- return Promise.resolve(r); // @ts-ignore
546
- if (a.to === a.from)
547
- return Promise.resolve(a.text); // @ts-ignore
548
- if (i.needkey && !a.key)
549
- // @ts-ignore
550
- throw new Error(// @ts-ignore
551
- `The engine "${a.engine}" needs a key, please provide it`);
552
- const t = i.fetch(a); // @ts-ignore
553
- return fetch(...t)
554
- .then(i.parse) // @ts-ignore
555
- .then(e => exp$1.set(a.id, e, a.cache));
556
- };
557
- for (let i in a)
558
- n[i] = void 0 === e[i] ? a[i] : e[i];
559
- return n;
560
- }, // @ts-ignore
561
- exp = new Translate();
562
- exp.Translate = Translate;
563
- export const translate = exp;
564
- ;
565
- ({}); // @--end-of-file-for-module=tnp-helpers lib/base/translate.ts
566
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS90cmFuc2xhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxHQUFHLEdBQUc7SUFDUixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0lBQ1QsR0FBRyxFQUFFLElBQUk7SUFDVCxHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFB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O1lBQzVDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhO1lBQ2hELENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxhQUFhO1lBQ2xGLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2xELEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUk7WUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDdkUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ3pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQWE7UUFDakUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDL0MsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJO1lBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDbEUsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDckIsYUFBYTtZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUUsYUFBYTtZQUM1QixlQUFlLENBQUMsQ0FBQyxNQUFNLGtDQUFrQyxDQUMxRCxDQUFDO1FBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDbkMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWE7YUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7SUFDSixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUcsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0FBQ3hCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxHQUdkLENBQUM7QUFFWCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDhEQUE4RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCBpc28gPSB7XG4gICAgYWFyOiAnYWEnLFxuICAgIGFiazogJ2FiJyxcbiAgICBhZnI6ICdhZicsXG4gICAgYWthOiAnYWsnLFxuICAgIGFsYjogJ3NxJyxcbiAgICBhbWg6ICdhbScsXG4gICAgYXJhOiAnYXInLFxuICAgIGFyZzogJ2FuJyxcbiAgICBhcm06ICdoeScsXG4gICAgYXNtOiAnYXMnLFxuICAgIGF2YTogJ2F2JyxcbiAgICBhdmU6ICdhZScsXG4gICAgYXltOiAnYXknLFxuICAgIGF6ZTogJ2F6JyxcbiAgICBiYWs6ICdiYScsXG4gICAgYmFtOiAnYm0nLFxuICAgIGJhcTogJ2V1JyxcbiAgICBiZWw6ICdiZScsXG4gICAgYmVuOiAnYm4nLFxuICAgIGJpaDogJ2JoJyxcbiAgICBiaXM6ICdiaScsXG4gICAgYm9zOiAnYnMnLFxuICAgIGJyZTogJ2JyJyxcbiAgICBidWw6ICdiZycsXG4gICAgYnVyOiAnbXknLFxuICAgIGNhdDogJ2NhJyxcbiAgICBjaGE6ICdjaCcsXG4gICAgY2hlOiAnY2UnLFxuICAgIGNoaTogJ3poJyxcbiAgICBjaHU6ICdjdScsXG4gICAgY2h2OiAnY3YnLFxuICAgIGNvcjogJ2t3JyxcbiAgICBjb3M6ICdjbycsXG4gICAgY3JlOiAnY3InLFxuICAgIGN6ZTogJ2NzJyxcbiAgICBkYW46ICdkYScsXG4gICAgZGl2OiAnZHYnLFxuICAgIGR1dDogJ25sJyxcbiAgICBkem86ICdkeicsXG4gICAgZW5nOiAnZW4nLFxuICAgIGVwbzogJ2VvJyxcbiAgICBlc3Q6ICdldCcsXG4gICAgZXdlOiAnZWUnLFxuICAgIGZhbzogJ2ZvJyxcbiAgICBmaWo6ICdmaicsXG4gICAgZmluOiAnZmknLFxuICAgIGZyZTogJ2ZyJyxcbiAgICBmcnk6ICdmeScsXG4gICAgZnVsOiAnZmYnLFxuICAgIGdlbzogJ2thJyxcbiAgICBnZXI6ICdkZScsXG4gICAgZ2xhOiAnZ2QnLFxuICAgIGdsZTogJ2dhJyxcbiAgICBnbGc6ICdnbCcsXG4gICAgZ2x2OiAnZ3YnLFxuICAgIGdyZTogJ2VsJyxcbiAgICBncm46ICdnbicsXG4gICAgZ3VqOiAnZ3UnLFxuICAgIGhhdDogJ2h0JyxcbiAgICBoYXU6ICdoYScsXG4gICAgaGViOiAnaGUnLFxuICAgIGhlcjogJ2h6JyxcbiAgICBoaW46ICdoaScsXG4gICAgaG1vOiAnaG8nLFxuICAgIGhydjogJ2hyJyxcbiAgICBodW46ICdodScsXG4gICAgaWJvOiAnaWcnLFxuICAgIGljZTogJ2lzJyxcbiAgICBpZG86ICdpbycsXG4gICAgaWlpOiAnaWknLFxuICAgIGlrdTogJ2l1JyxcbiAgICBpbGU6ICdpZScsXG4gICAgaW5hOiAnaWEnLFxuICAgIGluZDogJ2lkJyxcbiAgICBpcGs6ICdpaycsXG4gICAgaXRhOiAnaXQnLFxuICAgIGphdjogJ2p2JyxcbiAgICBqcG46ICdqYScsXG4gICAga2FsOiAna2wnLFxuICAgIGthbjogJ2tuJyxcbiAgICBrYXM6ICdrcycsXG4gICAga2F1OiAna3InLFxuICAgIGthejogJ2trJyxcbiAgICBraG06ICdrbScsXG4gICAga2lrOiAna2knLFxuICAgIGtpbjogJ3J3JyxcbiAgICBraXI6ICdreScsXG4gICAga29tOiAna3YnLFxuICAgIGtvbjogJ2tnJyxcbiAgICBrb3I6ICdrbycsXG4gICAga3VhOiAna2onLFxuICAgIGt1cjogJ2t1JyxcbiAgICBsYW86ICdsbycsXG4gICAgbGF0OiAnbGEnLFxuICAgIGxhdjogJ2x2JyxcbiAgICBsaW06ICdsaScsXG4gICAgbGluOiAnbG4nLFxuICAgIGxpdDogJ2x0JyxcbiAgICBsdHo6ICdsYicsXG4gICAgbHViOiAnbHUnLFxuICAgIGx1ZzogJ2xnJyxcbiAgICBtYWM6ICdtaycsXG4gICAgbWFoOiAnbWgnLFxuICAgIG1hbDogJ21sJyxcbiAgICBtYW86ICdtaScsXG4gICAgbWFyOiAnbXInLFxuICAgIG1heTogJ21zJyxcbiAgICBtbGc6ICdtZycsXG4gICAgbWx0OiAnbXQnLFxuICAgIG1vbjogJ21uJyxcbiAgICBuYXU6ICduYScsXG4gICAgbmF2OiAnbnYnLFxuICAgIG5ibDogJ25yJyxcbiAgICBuZGU6ICduZCcsXG4gICAgbmRvOiAnbmcnLFxuICAgIG5lcDogJ25lJyxcbiAgICBubm86ICdubicsXG4gICAgbm9iOiAnbmInLFxuICAgIG5vcjogJ25vJyxcbiAgICBueWE6ICdueScsXG4gICAgb2NpOiAnb2MnLFxuICAgIG9qaTogJ29qJyxcbiAgICBvcmk6ICdvcicsXG4gICAgb3JtOiAnb20nLFxuICAgIG9zczogJ29zJyxcbiAgICBwYW46ICdwYScsXG4gICAgcGVyOiAnZmEnLFxuICAgIHBsaTogJ3BpJyxcbiAgICBwb2w6ICdwbCcsXG4gICAgcG9yOiAncHQnLFxuICAgIHB1czogJ3BzJyxcbiAgICBxdWU6ICdxdScsXG4gICAgcm9oOiAncm0nLFxuICAgIHJ1bTogJ3JvJyxcbiAgICBydW46ICdybicsXG4gICAgcnVzOiAncnUnLFxuICAgIHNhZzogJ3NnJyxcbiAgICBzYW46ICdzYScsXG4gICAgc2luOiAnc2knLFxuICAgIHNsbzogJ3NrJyxcbiAgICBzbHY6ICdzbCcsXG4gICAgc21lOiAnc2UnLFxuICAgIHNtbzogJ3NtJyxcbiAgICBzbmE6ICdzbicsXG4gICAgc25kOiAnc2QnLFxuICAgIHNvbTogJ3NvJyxcbiAgICBzb3Q6ICdzdCcsXG4gICAgc3BhOiAnZXMnLFxuICAgIHNyZDogJ3NjJyxcbiAgICBzcnA6ICdzcicsXG4gICAgc3N3OiAnc3MnLFxuICAgIHN1bjogJ3N1JyxcbiAgICBzd2E6ICdzdycsXG4gICAgc3dlOiAnc3YnLFxuICAgIHRhaDogJ3R5JyxcbiAgICB0YW06ICd0YScsXG4gICAgdGF0OiAndHQnLFxuICAgIHRlbDogJ3RlJyxcbiAgICB0Z2s6ICd0ZycsXG4gICAgdGdsOiAndGwnLFxuICAgIHRoYTogJ3RoJyxcbiAgICB0aWI6ICdibycsXG4gICAgdGlyOiAndGknLFxuICAgIHRvbjogJ3RvJyxcbiAgICB0c246ICd0bicsXG4gICAgdHNvOiAndHMnLFxuICAgIHR1azogJ3RrJyxcbiAgICB0dXI6ICd0cicsXG4gICAgdHdpOiAndHcnLFxuICAgIHVpZzogJ3VnJyxcbiAgICB1a3I6ICd1aycsXG4gICAgdXJkOiAndXInLFxuICAgIHV6YjogJ3V6JyxcbiAgICB2ZW46ICd2ZScsXG4gICAgdmllOiAndmknLFxuICAgIHZvbDogJ3ZvJyxcbiAgICB3ZWw6ICdjeScsXG4gICAgd2xuOiAnd2EnLFxuICAgIHdvbDogJ3dvJyxcbiAgICB4aG86ICd4aCcsXG4gICAgeWlkOiAneWknLFxuICAgIHlvcjogJ3lvJyxcbiAgICB6aGE6ICd6YScsXG4gICAgenVsOiAnenUnLFxuICB9LFxuICBuYW1lcyA9IHtcbiAgICBhZmFyOiAnYWEnLFxuICAgIGFia2hhemlhbjogJ2FiJyxcbiAgICBhZnJpa2FhbnM6ICdhZicsXG4gICAgYWthbjogJ2FrJyxcbiAgICBhbGJhbmlhbjogJ3NxJyxcbiAgICBhbWhhcmljOiAnYW0nLFxuICAgIGFyYWJpYzogJ2FyJyxcbiAgICBhcmFnb25lc2U6ICdhbicsXG4gICAgYXJtZW5pYW46ICdoeScsXG4gICAgYXNzYW1lc2U6ICdhcycsXG4gICAgYXZhcmljOiAnYXYnLFxuICAgIGF2ZXN0YW46ICdhZScsXG4gICAgYXltYXJhOiAnYXknLFxuICAgIGF6ZXJiYWlqYW5pOiAnYXonLFxuICAgIGJhc2hraXI6ICdiYScsXG4gICAgYmFtYmFyYTogJ2JtJyxcbiAgICBiYXNxdWU6ICdldScsXG4gICAgYmVsYXJ1c2lhbjogJ2JlJyxcbiAgICBiZW5nYWxpOiAnYm4nLFxuICAgICdiaWhhcmkgbGFuZ3VhZ2VzJzogJ2JoJyxcbiAgICBiaXNsYW1hOiAnYmknLFxuICAgIHRpYmV0YW46ICdibycsXG4gICAgYm9zbmlhbjogJ2JzJyxcbiAgICBicmV0b246ICdicicsXG4gICAgYnVsZ2FyaWFuOiAnYmcnLFxuICAgIGJ1cm1lc2U6ICdteScsXG4gICAgY2F0YWxhbjogJ2NhJyxcbiAgICB2YWxlbmNpYW46ICdjYScsXG4gICAgY3plY2g6ICdjcycsXG4gICAgY2hhbW9ycm86ICdjaCcsXG4gICAgY2hlY2hlbjogJ2NlJyxcbiAgICBjaGluZXNlOiAnemgnLFxuICAgICdjaHVyY2ggc2xhdmljJzogJ2N1JyxcbiAgICAnb2xkIHNsYXZvbmljJzogJ2N1JyxcbiAgICAnY2h1cmNoIHNsYXZvbmljJzogJ2N1JyxcbiAgICAnb2xkIGJ1bGdhcmlhbic6ICdjdScsXG4gICAgJ29sZCBjaHVyY2ggc2xhdm9uaWMnOiAnY3UnLFxuICAgIGNodXZhc2g6ICdjdicsXG4gICAgY29ybmlzaDogJ2t3JyxcbiAgICBjb3JzaWNhbjogJ2NvJyxcbiAgICBjcmVlOiAnY3InLFxuICAgIHdlbHNoOiAnY3knLFxuICAgIGRhbmlzaDogJ2RhJyxcbiAgICBnZXJtYW46ICdkZScsXG4gICAgZGl2ZWhpOiAnZHYnLFxuICAgIGRoaXZlaGk6ICdkdicsXG4gICAgbWFsZGl2aWFuOiAnZHYnLFxuICAgIGR1dGNoOiAnbmwnLFxuICAgIGZsZW1pc2g6ICdubCcsXG4gICAgZHpvbmdraGE6ICdkeicsXG4gICAgZ3JlZWs6ICdlbCcsXG4gICAgZW5nbGlzaDogJ2VuJyxcbiAgICBlc3BlcmFudG86ICdlbycsXG4gICAgZXN0b25pYW46ICdldCcsXG4gICAgZXdlOiAnZWUnLFxuICAgIGZhcm9lc2U6ICdmbycsXG4gICAgcGVyc2lhbjogJ2ZhJyxcbiAgICBmaWppYW46ICdmaicsXG4gICAgZmlubmlzaDogJ2ZpJyxcbiAgICBmcmVuY2g6ICdmcicsXG4gICAgJ3dlc3Rlcm4gZnJpc2lhbic6ICdmeScsXG4gICAgZnVsYWg6ICdmZicsXG4gICAgZ2VvcmdpYW46ICdrYScsXG4gICAgZ2FlbGljOiAnZ2QnLFxuICAgICdzY290dGlzaCBnYWVsaWMnOiAnZ2QnLFxuICAgIGlyaXNoOiAnZ2EnLFxuICAgIGdhbGljaWFuOiAnZ2wnLFxuICAgIG1hbng6ICdndicsXG4gICAgZ3VhcmFuaTogJ2duJyxcbiAgICBndWphcmF0aTogJ2d1JyxcbiAgICBoYWl0aWFuOiAnaHQnLFxuICAgICdoYWl0aWFuIGNyZW9sZSc6ICdodCcsXG4gICAgaGF1c2E6ICdoYScsXG4gICAgaGVicmV3OiAnaGUnLFxuICAgIGhlcmVybzogJ2h6JyxcbiAgICBoaW5kaTogJ2hpJyxcbiAgICAnaGlyaSBtb3R1JzogJ2hvJyxcbiAgICBjcm9hdGlhbjogJ2hyJyxcbiAgICBodW5nYXJpYW46ICdodScsXG4gICAgaWdibzogJ2lnJyxcbiAgICBpY2VsYW5kaWM6ICdpcycsXG4gICAgaWRvOiAnaW8nLFxuICAgICdzaWNodWFuIHlpJzogJ2lpJyxcbiAgICBudW9zdTogJ2lpJyxcbiAgICBpbnVrdGl0dXQ6ICdpdScsXG4gICAgaW50ZXJsaW5ndWU6ICdpZScsXG4gICAgb2NjaWRlbnRhbDogJ2llJyxcbiAgICBpbnRlcmxpbmd1YTogJ2lhJyxcbiAgICBpbmRvbmVzaWFuOiAnaWQnLFxuICAgIGludXBpYXE6ICdpaycsXG4gICAgaXRhbGlhbjogJ2l0JyxcbiAgICBqYXZhbmVzZTogJ2p2JyxcbiAgICBqYXBhbmVzZTogJ2phJyxcbiAgICBrYWxhYWxsaXN1dDogJ2tsJyxcbiAgICBncmVlbmxhbmRpYzogJ2tsJyxcbiAgICBrYW5uYWRhOiAna24nLFxuICAgIGthc2htaXJpOiAna3MnLFxuICAgIGthbnVyaTogJ2tyJyxcbiAgICBrYXpha2g6ICdraycsXG4gICAgJ2NlbnRyYWwga2htZXInOiAna20nLFxuICAgIGtpa3V5dTogJ2tpJyxcbiAgICBnaWt1eXU6ICdraScsXG4gICAga2lueWFyd2FuZGE6ICdydycsXG4gICAga2lyZ2hpejogJ2t5JyxcbiAgICBreXJneXo6ICdreScsXG4gICAga29taTogJ2t2JyxcbiAgICBrb25nbzogJ2tnJyxcbiAgICBrb3JlYW46ICdrbycsXG4gICAga3VhbnlhbWE6ICdraicsXG4gICAga3dhbnlhbWE6ICdraicsXG4gICAga3VyZGlzaDogJ2t1JyxcbiAgICBsYW86ICdsbycsXG4gICAgbGF0aW46ICdsYScsXG4gICAgbGF0dmlhbjogJ2x2JyxcbiAgICBsaW1idXJnYW46ICdsaScsXG4gICAgbGltYnVyZ2VyOiAnbGknLFxuICAgIGxpbWJ1cmdpc2g6ICdsaScsXG4gICAgbGluZ2FsYTogJ2xuJyxcbiAgICBsaXRodWFuaWFuOiAnbHQnLFxuICAgIGx1eGVtYm91cmdpc2g6ICdsYicsXG4gICAgbGV0emVidXJnZXNjaDogJ2xiJyxcbiAgICAnbHViYS1rYXRhbmdhJzogJ2x1JyxcbiAgICBnYW5kYTogJ2xnJyxcbiAgICBtYWNlZG9uaWFuOiAnbWsnLFxuICAgIG1hcnNoYWxsZXNlOiAnbWgnLFxuICAgIG1hbGF5YWxhbTogJ21sJyxcbiAgICBtYW9yaTogJ21pJyxcbiAgICBtYXJhdGhpOiAnbXInLFxuICAgIG1hbGF5OiAnbXMnLFxuICAgIG1hbGFnYXN5OiAnbWcnLFxuICAgIG1hbHRlc2U6ICdtdCcsXG4gICAgbW9uZ29saWFuOiAnbW4nLFxuICAgIG5hdXJ1OiAnbmEnLFxuICAgIG5hdmFqbzogJ252JyxcbiAgICBuYXZhaG86ICdudicsXG4gICAgJ25kZWJlbGUsIHNvdXRoJzogJ25yJyxcbiAgICAnc291dGggbmRlYmVsZSc6ICducicsXG4gICAgJ25kZWJlbGUsIG5vcnRoJzogJ25kJyxcbiAgICAnbm9ydGggbmRlYmVsZSc6ICduZCcsXG4gICAgbmRvbmdhOiAnbmcnLFxuICAgIG5lcGFsaTogJ25lJyxcbiAgICAnbm9yd2VnaWFuIG55bm9yc2snOiAnbm4nLFxuICAgICdueW5vcnNrLCBub3J3ZWdpYW4nOiAnbm4nLFxuICAgICdub3J3ZWdpYW4gYm9rbcOlbCc6ICduYicsXG4gICAgJ2Jva23DpWwsIG5vcndlZ2lhbic6ICduYicsXG4gICAgbm9yd2VnaWFuOiAnbm8nLFxuICAgIGNoaWNoZXdhOiAnbnknLFxuICAgIGNoZXdhOiAnbnknLFxuICAgIG55YW5qYTogJ255JyxcbiAgICBvY2NpdGFuOiAnb2MnLFxuICAgIG9qaWJ3YTogJ29qJyxcbiAgICBvcml5YTogJ29yJyxcbiAgICBvcm9tbzogJ29tJyxcbiAgICBvc3NldGlhbjogJ29zJyxcbiAgICBvc3NldGljOiAnb3MnLFxuICAgIHBhbmphYmk6ICdwYScsXG4gICAgcHVuamFiaTogJ3BhJyxcbiAgICBwYWxpOiAncGknLFxuICAgIHBvbGlzaDogJ3BsJyxcbiAgICBwb3J0dWd1ZXNlOiAncHQnLFxuICAgIHB1c2h0bzogJ3BzJyxcbiAgICBwYXNodG86ICdwcycsXG4gICAgcXVlY2h1YTogJ3F1JyxcbiAgICByb21hbnNoOiAncm0nLFxuICAgIHJvbWFuaWFuOiAncm8nLFxuICAgIG1vbGRhdmlhbjogJ3JvJyxcbiAgICBtb2xkb3ZhbjogJ3JvJyxcbiAgICBydW5kaTogJ3JuJyxcbiAgICBydXNzaWFuOiAncnUnLFxuICAgIHNhbmdvOiAnc2cnLFxuICAgIHNhbnNrcml0OiAnc2EnLFxuICAgIHNpbmhhbGE6ICdzaScsXG4gICAgc2luaGFsZXNlOiAnc2knLFxuICAgIHNsb3ZhazogJ3NrJyxcbiAgICBzbG92ZW5pYW46ICdzbCcsXG4gICAgJ25vcnRoZXJuIHNhbWknOiAnc2UnLFxuICAgIHNhbW9hbjogJ3NtJyxcbiAgICBzaG9uYTogJ3NuJyxcbiAgICBzaW5kaGk6ICdzZCcsXG4gICAgc29tYWxpOiAnc28nLFxuICAgICdzb3Robywgc291dGhlcm4nOiAnc3QnLFxuICAgIHNwYW5pc2g6ICdlcycsXG4gICAgY2FzdGlsaWFuOiAnZXMnLFxuICAgIHNhcmRpbmlhbjogJ3NjJyxcbiAgICBzZXJiaWFuOiAnc3InLFxuICAgIHN3YXRpOiAnc3MnLFxuICAgIHN1bmRhbmVzZTogJ3N1JyxcbiAgICBzd2FoaWxpOiAnc3cnLFxuICAgIHN3ZWRpc2g6ICdzdicsXG4gICAgdGFoaXRpYW46ICd0eScsXG4gICAgdGFtaWw6ICd0YScsXG4gICAgdGF0YXI6ICd0dCcsXG4gICAgdGVsdWd1OiAndGUnLFxuICAgIHRhamlrOiAndGcnLFxuICAgIHRhZ2Fsb2c6ICd0bCcsXG4gICAgdGhhaTogJ3RoJyxcbiAgICB0aWdyaW55YTogJ3RpJyxcbiAgICB0b25nYTogJ3RvJyxcbiAgICB0c3dhbmE6ICd0bicsXG4gICAgdHNvbmdhOiAndHMnLFxuICAgIHR1cmttZW46ICd0aycsXG4gICAgdHVya2lzaDogJ3RyJyxcbiAgICB0d2k6ICd0dycsXG4gICAgdWlnaHVyOiAndWcnLFxuICAgIHV5Z2h1cjogJ3VnJyxcbiAgICB1a3JhaW5pYW46ICd1aycsXG4gICAgdXJkdTogJ3VyJyxcbiAgICB1emJlazogJ3V6JyxcbiAgICB2ZW5kYTogJ3ZlJyxcbiAgICB2aWV0bmFtZXNlOiAndmknLFxuICAgIHZvbGFww7xrOiAndm8nLFxuICAgIHdhbGxvb246ICd3YScsXG4gICAgd29sb2Y6ICd3bycsXG4gICAgeGhvc2E6ICd4aCcsXG4gICAgeWlkZGlzaDogJ3lpJyxcbiAgICB5b3J1YmE6ICd5bycsXG4gICAgemh1YW5nOiAnemEnLFxuICAgIGNodWFuZzogJ3phJyxcbiAgICB6dWx1OiAnenUnLFxuICB9IGFzIGNvbnN0O1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgaXNvS2V5cyA9IE9iamVjdC52YWx1ZXMoaXNvKS5zb3J0KCk7XG52YXIgbGFuZ3VhZ2VzID0gZSA9PiB7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBcImxhbmd1YWdlXCIgbXVzdCBiZSBhIHN0cmluZywgcmVjZWl2ZWQgJyArIHR5cGVvZiBlKTtcbiAgaWYgKGUubGVuZ3RoID4gMTAwKVxuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIFwibGFuZ3VhZ2VcIiBpcyB0b28gbG9uZyBhdCAke2UubGVuZ3RofSBjaGFyYWN0ZXJzYCk7XG4gIGlmIChcbiAgICAoKGUgPSBlLnRvTG93ZXJDYXNlKCkpLCAoZSA9IG5hbWVzW2VdIHx8IGlzb1tlXSB8fCBlKSwgIWlzb0tleXMuaW5jbHVkZXMoZSkpXG4gIClcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBsYW5ndWFnZSBcIiR7ZX1cIiBpcyBub3QgcGFydCBvZiB0aGUgSVNPIDYzOS0xYCk7XG4gIHJldHVybiBlO1xufTtcblxuZnVuY3Rpb24gQ2FjaGUoKSB7XG4gIHZhciBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZnVuY3Rpb24gYShhKSB7XG4gICAgZGVsZXRlIGVbYV07XG4gIH1cbiAgKHRoaXMuc2V0ID0gZnVuY3Rpb24gKG4sIGksIHIpIHtcbiAgICBpZiAodm9pZCAwICE9PSByICYmICgnbnVtYmVyJyAhPSB0eXBlb2YgciB8fCBpc05hTihyKSB8fCByIDw9IDApKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYWNoZSB0aW1lb3V0IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB2YXIgdCA9IGVbbl07XG4gICAgdCAmJiBjbGVhclRpbWVvdXQodC50aW1lb3V0KTtcbiAgICB2YXIgbyA9IHsgdmFsdWU6IGksIGV4cGlyZTogciArIERhdGUubm93KCkgfTtcbiAgICByZXR1cm4gKFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaXNOYU4oby5leHBpcmUpIHx8IChvLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGEobiksIHIpKSwgKGVbbl0gPSBvKSwgaVxuICAgICk7XG4gIH0pLFxuICAgICh0aGlzLmRlbCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICB2YXIgaSA9ICEwLFxuICAgICAgICByID0gZVtuXTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHJcbiAgICAgICAgICA/IChjbGVhclRpbWVvdXQoci50aW1lb3V0KSxcbiAgICAgICAgICAgICFpc05hTihyLmV4cGlyZSkgJiYgci5leHBpcmUgPCBEYXRlLm5vdygpICYmIChpID0gITEpKVxuICAgICAgICAgIDogKGkgPSAhMSksXG4gICAgICAgIGkgJiYgYShuKSxcbiAgICAgICAgaVxuICAgICAgKTtcbiAgICB9KSxcbiAgICAodGhpcy5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIGEgaW4gZSkgY2xlYXJUaW1lb3V0KGVbYV0udGltZW91dCk7XG4gICAgICBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB9KSxcbiAgICAodGhpcy5nZXQgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgdmFyIG4gPSBlW2FdO1xuICAgICAgaWYgKHZvaWQgMCAhPT0gbikge1xuICAgICAgICBpZiAoaXNOYU4obi5leHBpcmUpIHx8IG4uZXhwaXJlID49IERhdGUubm93KCkpIHJldHVybiBuLnZhbHVlO1xuICAgICAgICBkZWxldGUgZVthXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufVxuY29uc3QgZXhwJDEgPSBuZXcgQ2FjaGUoKTtcbmV4cCQxLkNhY2hlID0gQ2FjaGU7XG5jb25zdCBiYXNlID0gJ2h0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL3RyYW5zbGF0ZV9hL3NpbmdsZSc7XG52YXIgZ29vZ2xlID0ge1xuICAgIGZldGNoOiAoeyBrZXk6IGUsIGZyb206IGEsIHRvOiBuLCB0ZXh0OiBpIH0pID0+IFtcbiAgICAgIGAke2Jhc2V9P2NsaWVudD1ndHgmc2w9JHthfSZ0bD0ke259JmR0PXQmcT0ke2VuY29kZVVSSShpKX1gLFxuICAgIF0sXG4gICAgcGFyc2U6IGUgPT5cbiAgICAgIGUuanNvbigpLnRoZW4oZSA9PiB7XG4gICAgICAgIGlmICghKGUgPSBlICYmIGVbMF0gJiYgZVswXVswXSAmJiBlWzBdLm1hcChlID0+IGVbMF0pLmpvaW4oJycpKSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zbGF0aW9uIG5vdCBmb3VuZCcpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pLFxuICB9LFxuICB5YW5kZXggPSB7XG4gICAgbmVlZGtleTogITAsXG4gICAgZmV0Y2g6ICh7IGtleTogZSwgZnJvbTogYSwgdG86IG4sIHRleHQ6IGkgfSkgPT4gW1xuICAgICAgYGh0dHBzOi8vdHJhbnNsYXRlLnlhbmRleC5uZXQvYXBpL3YxLjUvdHIuanNvbi90cmFuc2xhdGU/a2V5PSR7ZX0mbGFuZz0ke2F9LSR7bn0mdGV4dD0ke2VuY29kZVVSSUNvbXBvbmVudChpKX1gLFxuICAgICAgeyBtZXRob2Q6ICdQT1NUJywgYm9keTogJycgfSxcbiAgICBdLFxuICAgIHBhcnNlOiBlID0+XG4gICAgICBlLmpzb24oKS50aGVuKGUgPT4ge1xuICAgICAgICBpZiAoMjAwICE9PSBlLmNvZGUpIHRocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gZS50ZXh0WzBdO1xuICAgICAgfSksXG4gIH07XG5jb25zdCBsaWJyZVVybCA9ICdodHRwczovL2xpYnJldHJhbnNsYXRlLmNvbS90cmFuc2xhdGUnO1xudmFyIGxpYnJlID0ge1xuICAgIG5lZWRrZXk6ICExLFxuICAgIGZldGNoOiAoeyB1cmw6IGUgPSBsaWJyZVVybCwga2V5OiBhLCBmcm9tOiBuLCB0bzogaSwgdGV4dDogciB9KSA9PiBbXG4gICAgICBlLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxOiByLCBzb3VyY2U6IG4sIHRhcmdldDogaSwgYXBpX2tleTogYSB9KSxcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICB9LFxuICAgIF0sXG4gICAgcGFyc2U6IGUgPT5cbiAgICAgIGUuanNvbigpLnRoZW4oZSA9PiB7XG4gICAgICAgIGlmICghZSkgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb25zZSBmb3VuZCcpO1xuICAgICAgICBpZiAoZS5lcnJvcikgdGhyb3cgbmV3IEVycm9yKGUuZXJyb3IpO1xuICAgICAgICBpZiAoIWUudHJhbnNsYXRlZFRleHQpIHRocm93IG5ldyBFcnJvcignTm8gcmVzcG9uc2UgZm91bmQnKTtcbiAgICAgICAgcmV0dXJuIGUudHJhbnNsYXRlZFRleHQ7XG4gICAgICB9KSxcbiAgfSxcbiAgZGVlcGwgPSB7XG4gICAgbmVlZGtleTogITAsXG4gICAgZmV0Y2g6ICh7IGtleTogZSwgZnJvbTogYSwgdG86IG4sIHRleHQ6IGkgfSkgPT4gW1xuICAgICAgYGh0dHBzOi8vYXBpJHsvOmZ4JC8udGVzdChlKSA/ICctZnJlZScgOiAnJ30uZGVlcGwuY29tL3YyL3RyYW5zbGF0ZT9hdXRoX2tleT0ke2V9JnNvdXJjZV9sYW5nPSR7YX0mdGFyZ2V0X2xhbmc9JHtufSZ0ZXh0PSR7KGkgPSBlbmNvZGVVUklDb21wb25lbnQoaSkpfWAsXG4gICAgICB7IG1ldGhvZDogJ1BPU1QnLCBib2R5OiAnJyB9LFxuICAgIF0sXG4gICAgcGFyc2U6IGFzeW5jIGUgPT4ge1xuICAgICAgaWYgKCFlLm9rKSB7XG4gICAgICAgIGlmICg0MDMgPT09IGUuc3RhdHVzKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXV0aCBFcnJvciwgcGxlYXNlIHJldmlldyB0aGUga2V5IGZvciBEZWVwTCcpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yICR7ZS5zdGF0dXN9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZS5qc29uKCkudGhlbihlID0+IGUudHJhbnNsYXRpb25zWzBdLnRleHQpO1xuICAgIH0sXG4gIH0sXG4gIGVuZ2luZXMgPSB7IGdvb2dsZTogZ29vZ2xlLCB5YW5kZXg6IHlhbmRleCwgbGlicmU6IGxpYnJlLCBkZWVwbDogZGVlcGwgfTtcbmNvbnN0IFRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChlID0ge30pIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zbGF0ZSkpIHJldHVybiBuZXcgVHJhbnNsYXRlKGUpO1xuICAgIGNvbnN0IGEgPSB7XG4gICAgICAgIGZyb206ICdlbicsXG4gICAgICAgIHRvOiAnZW4nLFxuICAgICAgICBjYWNoZTogdm9pZCAwLFxuICAgICAgICBsYW5ndWFnZXM6IGxhbmd1YWdlcyxcbiAgICAgICAgZW5naW5lczogZW5naW5lcyxcbiAgICAgICAgZW5naW5lOiAnZ29vZ2xlJyxcbiAgICAgICAga2V5czoge30sXG4gICAgICB9LFxuICAgICAgbiA9IGFzeW5jIChlLCBhID0ge30pID0+IHtcbiAgICAgICAgJ3N0cmluZycgPT0gdHlwZW9mIGEgJiYgKGEgPSB7IHRvOiBhIH0pLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEudGV4dCA9IGUpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuZnJvbSA9IGxhbmd1YWdlcyhhLmZyb20gfHwgbi5mcm9tKSksIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAoYS50byA9IGxhbmd1YWdlcyhhLnRvIHx8IG4udG8pKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmNhY2hlID0gYS5jYWNoZSB8fCBuLmNhY2hlKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmVuZ2luZXMgPSBhLmVuZ2luZXMgfHwge30pLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuZW5naW5lID0gYS5lbmdpbmUgfHwgbi5lbmdpbmUpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEudXJsID0gYS51cmwgfHwgbi51cmwpLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgKGEuaWQgPSBhLmlkIHx8IGAke2EudXJsfToke2EuZnJvbX06JHthLnRvfToke2EuZW5naW5lfToke2EudGV4dH1gKSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIChhLmtleXMgPSBhLmtleXMgfHwgbi5rZXlzIHx8IHt9KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBmb3IgKGxldCBlIGluIG4ua2V5cykgYS5rZXlzW2VdID0gYS5rZXlzW2VdIHx8IG4ua2V5c1tlXTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhLmtleSA9IGEua2V5IHx8IG4ua2V5IHx8IGEua2V5c1thLmVuZ2luZV07IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgaSA9IGEuZW5naW5lc1thLmVuZ2luZV0gfHwgbi5lbmdpbmVzW2EuZW5naW5lXSwgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHIgPSBleHAkMS5nZXQoYS5pZCk7XG4gICAgICAgIGlmIChyKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChhLnRvID09PSBhLmZyb20pIHJldHVybiBQcm9taXNlLnJlc29sdmUoYS50ZXh0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaS5uZWVka2V5ICYmICFhLmtleSlcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBgVGhlIGVuZ2luZSBcIiR7YS5lbmdpbmV9XCIgbmVlZHMgYSBrZXksIHBsZWFzZSBwcm92aWRlIGl0YCxcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCB0ID0gaS5mZXRjaChhKTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gZmV0Y2goLi4udClcbiAgICAgICAgICAudGhlbihpLnBhcnNlKSAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgLnRoZW4oZSA9PiBleHAkMS5zZXQoYS5pZCwgZSwgYS5jYWNoZSkpO1xuICAgICAgfTtcbiAgICBmb3IgKGxldCBpIGluIGEpIG5baV0gPSB2b2lkIDAgPT09IGVbaV0gPyBhW2ldIDogZVtpXTtcbiAgICByZXR1cm4gbjtcbiAgfSwgLy8gQHRzLWlnbm9yZVxuICBleHAgPSBuZXcgVHJhbnNsYXRlKCk7XG5leHAuVHJhbnNsYXRlID0gVHJhbnNsYXRlO1xuZXhwb3J0IHR5cGUgTGFuZ1R5cGUgPSAodHlwZW9mIG5hbWVzKVtrZXlvZiB0eXBlb2YgbmFtZXNdO1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0ZSA9IGV4cCBhcyAoXG4gIHRleHRUb1RyYW5zbGF0ZTogc3RyaW5nLFxuICBvcHRpb25zOiB7IHRvOiBMYW5nVHlwZTsgZnJvbTogTGFuZ1R5cGUgfSxcbikgPT4gc3RyaW5nO1xuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvdHJhbnNsYXRlLnRzIl19