tnp-helpers 19.0.0 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/fesm2022/tnp-helpers.mjs +58 -38
  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/client/fesm2022/tnp-helpers.mjs +58 -38
  10. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  11. package/client/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  12. package/client/lib/base/classes/base-git.d.ts +1 -1
  13. package/client/lib/base/classes/base-node-modules.d.ts +1 -1
  14. package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  15. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  16. package/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  17. package/lib/base/classes/base-cli-worker/base-cli-worker.js +54 -1
  18. package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -1
  19. package/lib/base/classes/base-global-command-line.backend.d.ts +2 -0
  20. package/lib/base/classes/base-global-command-line.backend.js +36 -1
  21. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  22. package/lib/base/classes/base-node-modules.d.ts +1 -1
  23. package/lib/base/classes/base-project-resolver.js.map +1 -1
  24. package/lib/base/classes/base-project.d.ts +1 -1
  25. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  26. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  27. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +2 -2
  28. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  29. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  30. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +3 -33
  31. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  32. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
  33. package/lib/helpers/for-backend/helpers-git.backend.d.ts +2 -0
  34. package/lib/helpers/for-backend/helpers-git.backend.js +34 -23
  35. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  36. package/lib/helpers/for-browser/angular.helper.js +2 -2
  37. package/lib/old/base-component.js +2 -2
  38. package/lib/old/base-formly-component.js +2 -2
  39. package/lib/old/dual-component-ctrl.js +2 -2
  40. package/package.json +5 -5
  41. package/tmp-environment.json +3 -3
  42. package/websql/fesm2022/tnp-helpers.mjs +58 -38
  43. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  44. package/websql/lib/base/classes/base-cli-worker/base-cli-worker.d.ts +13 -3
  45. package/websql/lib/base/classes/base-git.d.ts +1 -1
  46. package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
  47. package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  48. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +3 -7
  49. package/browser/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  50. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  51. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  52. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  53. package/browser/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  54. package/browser/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  55. package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  56. package/browser/esm2022/lib/base/classes/base-db.mjs +0 -31
  57. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  58. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  59. package/browser/esm2022/lib/base/classes/base-git.mjs +0 -1175
  60. package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  61. package/browser/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  62. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  63. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  64. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  65. package/browser/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  66. package/browser/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  67. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  68. package/browser/esm2022/lib/base/classes/base-project.mjs +0 -922
  69. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  70. package/browser/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  71. package/browser/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  72. package/browser/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  73. package/browser/esm2022/lib/base/classes/index.mjs +0 -24
  74. package/browser/esm2022/lib/base/commit-data.mjs +0 -633
  75. package/browser/esm2022/lib/base/config-database.mjs +0 -46
  76. package/browser/esm2022/lib/base/core-project.mjs +0 -115
  77. package/browser/esm2022/lib/base/index.mjs +0 -10
  78. package/browser/esm2022/lib/base/linked-project.mjs +0 -90
  79. package/browser/esm2022/lib/base/project-database.mjs +0 -18
  80. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  81. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  82. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  83. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  84. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  85. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  86. package/browser/esm2022/lib/base/translate.mjs +0 -566
  87. package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  88. package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  89. package/browser/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  90. package/browser/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  91. package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  92. package/browser/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  93. package/browser/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  94. package/browser/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  95. package/browser/esm2022/lib/helpers/helpers.mjs +0 -428
  96. package/browser/esm2022/lib/index.mjs +0 -13
  97. package/browser/esm2022/lib/models.mjs +0 -175
  98. package/browser/esm2022/lib/utils.mjs +0 -952
  99. package/browser/esm2022/lib/validators/validators-git.mjs +0 -12
  100. package/browser/esm2022/lib/validators/validators-network.mjs +0 -18
  101. package/browser/esm2022/lib/validators/validators.mjs +0 -10
  102. package/browser/esm2022/migrations/1736198527297_init.mjs +0 -41
  103. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  104. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  105. package/browser/esm2022/migrations/index.mjs +0 -5
  106. package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  107. package/browser/esm2022/public-api.mjs +0 -2
  108. package/browser/esm2022/tnp-helpers.mjs +0 -5
  109. package/client/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  110. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  111. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  112. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  113. package/client/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  114. package/client/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  115. package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  116. package/client/esm2022/lib/base/classes/base-db.mjs +0 -31
  117. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  118. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  119. package/client/esm2022/lib/base/classes/base-git.mjs +0 -1175
  120. package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  121. package/client/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  122. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  123. package/client/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  124. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  125. package/client/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  126. package/client/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  127. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  128. package/client/esm2022/lib/base/classes/base-project.mjs +0 -922
  129. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  130. package/client/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  131. package/client/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  132. package/client/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  133. package/client/esm2022/lib/base/classes/index.mjs +0 -24
  134. package/client/esm2022/lib/base/commit-data.mjs +0 -633
  135. package/client/esm2022/lib/base/config-database.mjs +0 -46
  136. package/client/esm2022/lib/base/core-project.mjs +0 -115
  137. package/client/esm2022/lib/base/index.mjs +0 -10
  138. package/client/esm2022/lib/base/linked-project.mjs +0 -90
  139. package/client/esm2022/lib/base/project-database.mjs +0 -18
  140. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  141. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  142. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  143. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  144. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  145. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  146. package/client/esm2022/lib/base/translate.mjs +0 -566
  147. package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  148. package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  149. package/client/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  150. package/client/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  151. package/client/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  152. package/client/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  153. package/client/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  154. package/client/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  155. package/client/esm2022/lib/helpers/helpers.mjs +0 -428
  156. package/client/esm2022/lib/index.mjs +0 -13
  157. package/client/esm2022/lib/models.mjs +0 -175
  158. package/client/esm2022/lib/utils.mjs +0 -952
  159. package/client/esm2022/lib/validators/validators-git.mjs +0 -12
  160. package/client/esm2022/lib/validators/validators-network.mjs +0 -18
  161. package/client/esm2022/lib/validators/validators.mjs +0 -10
  162. package/client/esm2022/migrations/1736198527297_init.mjs +0 -41
  163. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  164. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  165. package/client/esm2022/migrations/index.mjs +0 -5
  166. package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  167. package/client/esm2022/public-api.mjs +0 -2
  168. package/client/esm2022/tnp-helpers.mjs +0 -5
  169. package/websql/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  170. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-config.mjs +0 -37
  171. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-controller.mjs +0 -125
  172. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.mjs +0 -133
  173. package/websql/esm2022/lib/base/classes/base-cli-worker/base-cli-worker.mjs +0 -404
  174. package/websql/esm2022/lib/base/classes/base-cli-worker/index.mjs +0 -7
  175. package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  176. package/websql/esm2022/lib/base/classes/base-db.mjs +0 -31
  177. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  178. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  179. package/websql/esm2022/lib/base/classes/base-git.mjs +0 -1175
  180. package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  181. package/websql/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  182. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  183. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  184. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  185. package/websql/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  186. package/websql/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  187. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +0 -272
  188. package/websql/esm2022/lib/base/classes/base-project.mjs +0 -891
  189. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  190. package/websql/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  191. package/websql/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  192. package/websql/esm2022/lib/base/classes/base-vscode.mjs +0 -531
  193. package/websql/esm2022/lib/base/classes/index.mjs +0 -24
  194. package/websql/esm2022/lib/base/commit-data.mjs +0 -633
  195. package/websql/esm2022/lib/base/config-database.mjs +0 -46
  196. package/websql/esm2022/lib/base/core-project.mjs +0 -115
  197. package/websql/esm2022/lib/base/index.mjs +0 -10
  198. package/websql/esm2022/lib/base/linked-project.mjs +0 -90
  199. package/websql/esm2022/lib/base/project-database.mjs +0 -18
  200. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  201. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  202. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -56
  203. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  204. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.mjs +0 -261
  205. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -45
  206. package/websql/esm2022/lib/base/translate.mjs +0 -566
  207. package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  208. package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  209. package/websql/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  210. package/websql/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  211. package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  212. package/websql/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  213. package/websql/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  214. package/websql/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  215. package/websql/esm2022/lib/helpers/helpers.mjs +0 -428
  216. package/websql/esm2022/lib/index.mjs +0 -13
  217. package/websql/esm2022/lib/models.mjs +0 -175
  218. package/websql/esm2022/lib/utils.mjs +0 -952
  219. package/websql/esm2022/lib/validators/validators-git.mjs +0 -12
  220. package/websql/esm2022/lib/validators/validators-network.mjs +0 -18
  221. package/websql/esm2022/lib/validators/validators.mjs +0 -10
  222. package/websql/esm2022/migrations/1736198527297_init.mjs +0 -41
  223. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  224. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  225. package/websql/esm2022/migrations/index.mjs +0 -5
  226. package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  227. package/websql/esm2022/public-api.mjs +0 -2
  228. package/websql/esm2022/tnp-helpers.mjs +0 -5
@@ -1,633 +0,0 @@
1
- import { _, /* */ /* */ } from 'tnp-core/browser'; /* */
2
- const openSourceProvidersIssuePrefix = [
3
- 'GH',
4
- ];
5
- const regexTeamsID = /[A-Z0-9]+\#/;
6
- const regexCommitModuleInArgs = /\[[a-z|\-|\,]+\]/;
7
- const regexCommitModuleInBranch = /\-\-[a-z|\-|\_]+\-\-/;
8
- export class CommitData {
9
- constructor() {
10
- this.useFeatureBranchForTestBranch = false;
11
- }
12
- static cleanHttpFromCommitMessage(commitMsg) {
13
- if (!commitMsg) {
14
- return commitMsg;
15
- }
16
- commitMsg = commitMsg.replace('https://', '');
17
- commitMsg = commitMsg.replace('http://', '');
18
- return commitMsg;
19
- }
20
- static getTeamsIdFrom(commitMsg) {
21
- let teamID = _.first(commitMsg.match(regexTeamsID));
22
- if (teamID) {
23
- commitMsg = commitMsg.replace(teamID, '');
24
- }
25
- return {
26
- commitMsgOrBranchName: commitMsg,
27
- teamID,
28
- };
29
- }
30
- static getModuleNameFrom(commitMsg) {
31
- let commitModuleName = _.first(commitMsg.match(regexCommitModuleInArgs));
32
- if (commitModuleName) {
33
- commitMsg = commitMsg.replace(commitModuleName, '');
34
- }
35
- commitModuleName = commitModuleName?.replace(/\[/g, '').replace(/\]/g, '');
36
- return {
37
- commitMsg,
38
- commitModuleName,
39
- };
40
- }
41
- /**
42
- *
43
- * @returns jiras (from oldest to newset)
44
- */
45
- static extractAndOrderJiraNumbers(commitOrBranchName) {
46
- /* */
47
- /* */
48
- /* */
49
- /* */
50
- /* */
51
- /* */
52
- /* */
53
- /* */
54
- /* */
55
- /* */
56
- /* */
57
- /* */
58
- /* */
59
- /* */
60
- /* */
61
- /* */
62
- /* */
63
- /* */
64
- /* */
65
- /* */
66
- /* */
67
- /* */
68
- /* */
69
- /* */
70
- /* */
71
- /* */
72
- return (void 0);
73
- }
74
- /**
75
- *
76
- * @returns jiras (from oldest to newset)
77
- */
78
- static extractAndOrderIssuesFromOtherProjects(
79
- /**
80
- * example:
81
- * commit: proper git commands tnp/GH-9 darekf77/tnp-helpers/GH-10
82
- * feature/__tnp-GH-9____darekf77_tnp-helpers-GH10__-proper-git-commands
83
- */
84
- commitOrBranchName, currentOrigin) {
85
- /* */
86
- /* */
87
- /* */
88
- /* */
89
- /* */
90
- /* */
91
- /* */
92
- /* */
93
- /* */
94
- /* */
95
- /* */
96
- /* */
97
- /* */
98
- /* */
99
- /* */
100
- /* */
101
- /* */
102
- /* */
103
- /* */
104
- /* */
105
- /* */
106
- /* */
107
- /* */
108
- /* */
109
- /* */
110
- /* */
111
- /* */
112
- /* */
113
- /* */
114
- /* */
115
- /* */
116
- /* */
117
- /* */
118
- /* */
119
- /* */
120
- /* */
121
- /* */
122
- /* */
123
- /* */
124
- /* */
125
- /* */
126
- /* */
127
- /* */
128
- /* */
129
- /* */
130
- /* */
131
- /* */
132
- /* */
133
- /* */
134
- /* */
135
- /* */
136
- /* */
137
- /* */
138
- /* */
139
- /* */
140
- /* */
141
- /* */
142
- /* */
143
- /* */
144
- /* */
145
- /* */
146
- /* */
147
- /* */
148
- /* */
149
- /* */
150
- /* */
151
- /* */
152
- /* */
153
- /* */
154
- /* */
155
- /* */
156
- /* */
157
- /* */
158
- /* */
159
- /* */
160
- /* */
161
- /* */
162
- /* */
163
- return (void 0);
164
- }
165
- static cleanMessageFromJiraNumTeamIdEtc(message, optinos) {
166
- message = message || '';
167
- let { teamID, commitModuleName, jiraNumbers, issuesFromOtherProjects } = optinos || {};
168
- teamID = teamID || this.getTeamsIdFrom(message).teamID || '';
169
- commitModuleName =
170
- commitModuleName ||
171
- this.getModuleNameFrom(message).commitModuleName ||
172
- '';
173
- jiraNumbers = jiraNumbers || this.extractAndOrderJiraNumbers(message) || [];
174
- issuesFromOtherProjects =
175
- issuesFromOtherProjects ||
176
- this.extractAndOrderIssuesFromOtherProjects(message) ||
177
- [];
178
- if (!!teamID.trim()) {
179
- message = message.replace(teamID.toLowerCase().replace('-', ' '), ' ');
180
- message = message.replace(teamID.toUpperCase().replace('-', ' '), ' ');
181
- }
182
- for (const issueFromOtherProj of issuesFromOtherProjects || []) {
183
- message = message.replace(`__${issueFromOtherProj.replace(/\//g, '_').replace(/\-/g, ' ')}__`, ' ');
184
- message = message.replace(issueFromOtherProj, ' ');
185
- message = message.replace(issueFromOtherProj.toLowerCase().replace('-', ' '), ' ');
186
- message = message.replace(issueFromOtherProj.toUpperCase().replace('-', ' '), ' ');
187
- message = message.replace(issueFromOtherProj.toLowerCase(), ' ');
188
- message = message.replace(regexCommitModuleInArgs, ' ');
189
- message = message.replace(regexCommitModuleInBranch, ' ');
190
- message = message.replace(/\ \ /g, ' ');
191
- }
192
- for (const jira of jiraNumbers || []) {
193
- message = message.replace(jira.toLowerCase().replace('-', ' '), ' ');
194
- message = message.replace(jira.toUpperCase().replace('-', ' '), ' ');
195
- message = message.replace(jira, ' ');
196
- message = message.replace(jira.toLowerCase(), ' ');
197
- message = message.replace(regexCommitModuleInArgs, ' ');
198
- message = message.replace(regexCommitModuleInBranch, ' ');
199
- message = message.replace(/\ \ /g, ' ');
200
- }
201
- if (!!teamID.trim()) {
202
- message = message.replace(/\_/g, ' ');
203
- }
204
- if (!!commitModuleName.trim()) {
205
- const cleanedModuleName = commitModuleName
206
- .replace(/\-/g, ' ')
207
- .replace(/\,/g, '_');
208
- message = message.replace(cleanedModuleName, ' ');
209
- }
210
- return message
211
- .replace(/\ \ /g, ' ')
212
- .replace(/\ \ /g, ' ')
213
- .replace(/\ \ /g, ' ');
214
- }
215
- static getModuleNameFromBranch(branchName) {
216
- let commitModuleName = _.first(branchName.match(regexCommitModuleInBranch));
217
- if (commitModuleName) {
218
- branchName = branchName.replace(commitModuleName, '');
219
- commitModuleName = commitModuleName
220
- ?.replace(/^\-\-/, '')
221
- ?.replace(/\-\-$/, '');
222
- if (commitModuleName.startsWith('-')) {
223
- commitModuleName = commitModuleName.replace(/^\-/, '');
224
- }
225
- }
226
- commitModuleName = commitModuleName
227
- ?.replace(/^\-\-/, '')
228
- ?.replace(/\-\-$/, '')
229
- .replace(/\_/, ',');
230
- return { commitModuleName };
231
- }
232
- static async getFromArgs(args, options) {
233
- /* */
234
- /* */
235
- /* */
236
- /* */
237
- /* */
238
- /* */
239
- /* */
240
- /* */
241
- /* */
242
- /* */
243
- /* */
244
- /* */
245
- /* */
246
- /* */
247
- /* */
248
- /* */
249
- /* */
250
- /* */
251
- /* */
252
- /* */
253
- /* */
254
- /* */
255
- /* */
256
- /* */
257
- /* */
258
- /* */
259
- /* */
260
- /* */
261
- /* */
262
- /* */
263
- /* */
264
- /* */
265
- /* */
266
- /* */
267
- /* */
268
- /* */
269
- /* */
270
- /* */
271
- /* */
272
- /* */
273
- /* */
274
- /* */
275
- /* */
276
- /* */
277
- /* */
278
- /* */
279
- /* */
280
- /* */
281
- /* */
282
- /* */
283
- /* */
284
- /* */
285
- /* */
286
- /* */
287
- /* */
288
- /* */
289
- /* */
290
- /* */
291
- /* */
292
- /* */
293
- /* */
294
- /* */
295
- /* */
296
- /* */
297
- /* */
298
- /* */
299
- return (void 0);
300
- }
301
- static async getFromBranch(currentBranchName, options) {
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
- /* */
368
- /* */
369
- /* */
370
- /* */
371
- /* */
372
- /* */
373
- /* */
374
- /* */
375
- /* */
376
- /* */
377
- /* */
378
- /* */
379
- /* */
380
- /* */
381
- /* */
382
- /* */
383
- /* */
384
- /* */
385
- /* */
386
- /* */
387
- /* */
388
- /* */
389
- /* */
390
- /* */
391
- /* */
392
- /* */
393
- /* */
394
- /* */
395
- /* */
396
- /* */
397
- /* */
398
- /* */
399
- /* */
400
- /* */
401
- /* */
402
- /* */
403
- /* */
404
- /* */
405
- /* */
406
- /* */
407
- /* */
408
- /* */
409
- /* */
410
- /* */
411
- /* */
412
- /* */
413
- return (void 0);
414
- }
415
- static from(options) {
416
- options = (options ? options : {});
417
- const opt = _.merge(new CommitData(), _.cloneDeep(options));
418
- return opt;
419
- }
420
- clearMessage(message) {
421
- return CommitData.cleanMessageFromJiraNumTeamIdEtc(message, {
422
- teamID: this.teamID,
423
- commitModuleName: this.commitModuleName,
424
- jiraNumbers: this.jiraNumbers,
425
- issuesFromOtherProjects: this.issuesFromOtherProjects,
426
- });
427
- }
428
- /**
429
- * pure message what was done (without jira or prefixes)
430
- * => is included in this.commitMessage
431
- */
432
- get message() {
433
- return this.clearMessage(this._message);
434
- }
435
- set message(message) {
436
- this._message = this.clearMessage(message);
437
- }
438
- get branchPrefix() {
439
- /* */
440
- /* */
441
- /* */
442
- /* */
443
- /* */
444
- /* */
445
- /* */
446
- /* */
447
- /* */
448
- /* */
449
- return (void 0);
450
- }
451
- /**
452
- * ex. taon/GH-12 darekf77/tnp-helpers/GH-4
453
- */
454
- get issuesFromOtherProjects() {
455
- return this.__issuesFromOtherProjects;
456
- }
457
- set issuesFromOtherProjects(value) {
458
- this.__issuesFromOtherProjects = value;
459
- }
460
- get commitMessage() {
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
- /* */
489
- /* */
490
- /* */
491
- /* */
492
- /* */
493
- /* */
494
- /* */
495
- /* */
496
- /* */
497
- /* */
498
- /* */
499
- /* */
500
- /* */
501
- /* */
502
- /* */
503
- /* */
504
- /* */
505
- /* */
506
- /* */
507
- /* */
508
- /* */
509
- /* */
510
- /* */
511
- /* */
512
- /* */
513
- /* */
514
- /* */
515
- /* */
516
- /* */
517
- /* */
518
- /* */
519
- /* */
520
- /* */
521
- /* */
522
- /* */
523
- /* */
524
- /* */
525
- /* */
526
- /* */
527
- /* */
528
- /* */
529
- /* */
530
- /* */
531
- /* */
532
- /* */
533
- /* */
534
- /* */
535
- /* */
536
- /* */
537
- /* */
538
- /* */
539
- /* */
540
- /* */
541
- /* */
542
- /* */
543
- /* */
544
- /* */
545
- /* */
546
- /* */
547
- /* */
548
- /* */
549
- /* */
550
- /* */
551
- /* */
552
- /* */
553
- /* */
554
- /* */
555
- /* */
556
- /* */
557
- /* */
558
- /* */
559
- /* */
560
- /* */
561
- /* */
562
- /* */
563
- /* */
564
- /* */
565
- /* */
566
- /* */
567
- /* */
568
- /* */
569
- /* */
570
- /* */
571
- /* */
572
- /* */
573
- /* */
574
- /* */
575
- return (void 0);
576
- }
577
- get branchName() {
578
- /* */
579
- /* */
580
- /* */
581
- /* */
582
- /* */
583
- /* */
584
- /* */
585
- /* */
586
- /* */
587
- /* */
588
- /* */
589
- /* */
590
- /* */
591
- /* */
592
- /* */
593
- /* */
594
- /* */
595
- /* */
596
- /* */
597
- /* */
598
- /* */
599
- /* */
600
- /* */
601
- /* */
602
- /* */
603
- /* */
604
- /* */
605
- /* */
606
- /* */
607
- /* */
608
- /* */
609
- /* */
610
- /* */
611
- /* */
612
- /* */
613
- /* */
614
- /* */
615
- /* */
616
- /* */
617
- /* */
618
- /* */
619
- /* */
620
- /* */
621
- /* */
622
- /* */
623
- return (void 0);
624
- }
625
- get isActionCommit() {
626
- /* */
627
- /* */
628
- return (void 0);
629
- }
630
- }
631
- ;
632
- ({}); // @--end-of-file-for-module=tnp-helpers lib/base/commit-data.ts
633
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0LWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvY29tbWl0LWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFLLE1BQU0sa0JBQWtCLENBQUMsQ0FBQSxLQUFLO0FBVzVELE1BQU0sOEJBQThCLEdBQUc7SUFDckMsSUFBSTtDQU1MLENBQUM7QUF3QkYsTUFBTSxZQUFZLEdBQVcsYUFBYSxDQUFDO0FBRTNDLE1BQU0sdUJBQXVCLEdBQVcsa0JBQWtCLENBQUM7QUFDM0QsTUFBTSx5QkFBeUIsR0FBVyxzQkFBc0IsQ0FBQztBQUVqRSxNQUFNLE9BQU8sVUFBVTtJQUF2QjtRQW1qQkUsa0NBQTZCLEdBQVksS0FBSyxDQUFDO0lBb09qRCxDQUFDO0lBbnhCUyxNQUFNLENBQUMsMEJBQTBCLENBQUMsU0FBaUI7UUFDekQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM5QyxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0MsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUlPLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBaUI7UUFDN0MsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTztZQUNMLHFCQUFxQixFQUFFLFNBQVM7WUFDaEMsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDO0lBSU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ2hELElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELGdCQUFnQixHQUFHLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzRSxPQUFPO1lBQ0wsU0FBUztZQUNULGdCQUFnQjtTQUNqQixDQUFDO0lBQ0osQ0FBQztJQUlEOzs7T0FHRztJQUNILE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxrQkFBMEI7UUFDOUQsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHNDQUFzQztJQUMzQzs7OztPQUlHO0lBQ0gsa0JBQTBCLEVBQzFCLGFBQXNCO1FBRTFCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxNQUFNLENBQUMsZ0NBQWdDLENBQ3JDLE9BQWUsRUFDZixPQUtDO1FBRUQsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsR0FDcEUsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUM3RCxnQkFBZ0I7WUFDZCxnQkFBZ0I7Z0JBQ2hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0I7Z0JBQ2hELEVBQUUsQ0FBQztRQUNMLFdBQVcsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1RSx1QkFBdUI7WUFDckIsdUJBQXVCO2dCQUN2QixJQUFJLENBQUMsc0NBQXNDLENBQUMsT0FBTyxDQUFDO2dCQUNwRCxFQUFFLENBQUM7UUFFTCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNwQixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2RSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBSUQsS0FBSyxNQUFNLGtCQUFrQixJQUFJLHVCQUF1QixJQUFJLEVBQUUsRUFBRSxDQUFDO1lBRy9ELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUN2QixLQUFLLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxFQUNuRSxHQUFHLENBQ0osQ0FBQztZQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUN2QixrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUNsRCxHQUFHLENBQ0osQ0FBQztZQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUN2QixrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUNsRCxHQUFHLENBQ0osQ0FBQztZQUNGLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2pFLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzFELE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxXQUFXLElBQUksRUFBRSxFQUFFLENBQUM7WUFDckMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNuRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4RCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUM5QixNQUFNLGlCQUFpQixHQUFHLGdCQUFnQjtpQkFDdkMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7aUJBQ25CLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFdkIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE9BQU8sT0FBTzthQUNYLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUtPLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxVQUFrQjtRQUN2RCxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELGdCQUFnQixHQUFHLGdCQUFnQjtnQkFDakMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDdEIsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLElBQUksZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDekQsQ0FBQztRQUNILENBQUM7UUFDRCxnQkFBZ0IsR0FBRyxnQkFBZ0I7WUFDakMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN0QixFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUlELE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUN0QixJQUFjLEVBQ2QsT0FXQztRQUVMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FDeEIsaUJBQXlCLEVBQ3pCLE9BV0M7UUFFTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSU0sTUFBTSxDQUFDLElBQUksQ0FDaEIsT0FTQztRQUVELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQVEsQ0FBQztRQUUxQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQThCTyxZQUFZLENBQUMsT0FBZTtRQUNsQyxPQUFPLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxPQUFPLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLHVCQUF1QixFQUFFLElBQUksQ0FBQyx1QkFBdUI7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUlEOzs7T0FHRztJQUNILElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE9BQU87UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFNRCxJQUFJLFlBQVk7UUFDbEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRDs7T0FFRztJQUNILElBQUksdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLHVCQUF1QixDQUFDLEtBQWU7UUFDekMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQWtCekMsQ0FBQztJQU1ELElBQUksYUFBYTtRQUNuQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsSUFBSSxVQUFVO1FBQ2hCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxJQUFJLGNBQWM7UUFDcEIsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdFQUFnRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7ICAgXywgLyogKi8gLyogKi8gICAgfSBmcm9tICd0bnAtY29yZS9icm93c2VyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IHBhdGggfSBmcm9tICd0bnAtY29yZS9icm93c2VyJztcblxuXG5cbmNvbnN0IG9wZW5Tb3VyY2VQcm92aWRlcnNJc3N1ZVByZWZpeCA9IFtcbiAgJ0dIJyxcblxuXG5cblxuXG5dO1xuXG5cblxuZXhwb3J0IHR5cGUgQ29tbW9uQ29tbWl0TXNnQnJhbmNoID1cbiAgfCAncmVmYWN0b3InXG4gIHwgJ2Nob3JlJ1xuICB8ICdzdHlsZSdcbiAgfCAnZG9jcydcbiAgfCAndGVzdCdcbiAgfCAnY2knXG4gIHwgJ2J1aWxkJ1xuICB8ICdyZWxlYXNlJztcblxuXG5cbmV4cG9ydCB0eXBlIFR5cGVPZkNvbW1pdCA9XG4gIHwgJ2ZlYXR1cmUnXG4gIHwgJ2J1Z2ZpeCdcbiAgfCAncGVyZm9ybWFuY2UnXG4gIHwgQ29tbW9uQ29tbWl0TXNnQnJhbmNoO1xuXG5cbmV4cG9ydCB0eXBlIFR5cGVPZk1zZ1ByZWZpeCA9ICdmZWF0JyB8ICdmaXgnIHwgJ3BlcmYnIHwgQ29tbW9uQ29tbWl0TXNnQnJhbmNoO1xuY29uc3QgcmVnZXhUZWFtc0lEOiBSZWdFeHAgPSAvW0EtWjAtOV0rXFwjLztcblxuY29uc3QgcmVnZXhDb21taXRNb2R1bGVJbkFyZ3M6IFJlZ0V4cCA9IC9cXFtbYS16fFxcLXxcXCxdK1xcXS87XG5jb25zdCByZWdleENvbW1pdE1vZHVsZUluQnJhbmNoOiBSZWdFeHAgPSAvXFwtXFwtW2EtenxcXC18XFxfXStcXC1cXC0vO1xuXG5leHBvcnQgY2xhc3MgQ29tbWl0RGF0YSB7XG5cblxuXG4gIHByaXZhdGUgc3RhdGljIGNsZWFuSHR0cEZyb21Db21taXRNZXNzYWdlKGNvbW1pdE1zZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbW1pdE1zZykge1xuICAgICAgcmV0dXJuIGNvbW1pdE1zZztcbiAgICB9XG4gICAgY29tbWl0TXNnID0gY29tbWl0TXNnLnJlcGxhY2UoJ2h0dHBzOi8vJywgJycpO1xuICAgIGNvbW1pdE1zZyA9IGNvbW1pdE1zZy5yZXBsYWNlKCdodHRwOi8vJywgJycpO1xuICAgIHJldHVybiBjb21taXRNc2c7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0VGVhbXNJZEZyb20oY29tbWl0TXNnOiBzdHJpbmcpIHtcbiAgICBsZXQgdGVhbUlEID0gXy5maXJzdChjb21taXRNc2cubWF0Y2gocmVnZXhUZWFtc0lEKSk7XG4gICAgaWYgKHRlYW1JRCkge1xuICAgICAgY29tbWl0TXNnID0gY29tbWl0TXNnLnJlcGxhY2UodGVhbUlELCAnJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBjb21taXRNc2dPckJyYW5jaE5hbWU6IGNvbW1pdE1zZyxcbiAgICAgIHRlYW1JRCxcbiAgICB9O1xuICB9XG5cblxuXG4gIHByaXZhdGUgc3RhdGljIGdldE1vZHVsZU5hbWVGcm9tKGNvbW1pdE1zZzogc3RyaW5nKSB7XG4gICAgbGV0IGNvbW1pdE1vZHVsZU5hbWUgPSBfLmZpcnN0KGNvbW1pdE1zZy5tYXRjaChyZWdleENvbW1pdE1vZHVsZUluQXJncykpO1xuICAgIGlmIChjb21taXRNb2R1bGVOYW1lKSB7XG4gICAgICBjb21taXRNc2cgPSBjb21taXRNc2cucmVwbGFjZShjb21taXRNb2R1bGVOYW1lLCAnJyk7XG4gICAgfVxuICAgIGNvbW1pdE1vZHVsZU5hbWUgPSBjb21taXRNb2R1bGVOYW1lPy5yZXBsYWNlKC9cXFsvZywgJycpLnJlcGxhY2UoL1xcXS9nLCAnJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1pdE1zZyxcbiAgICAgIGNvbW1pdE1vZHVsZU5hbWUsXG4gICAgfTtcbiAgfVxuXG5cblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgamlyYXMgKGZyb20gb2xkZXN0IHRvIG5ld3NldClcbiAgICovXG4gIHN0YXRpYyBleHRyYWN0QW5kT3JkZXJKaXJhTnVtYmVycyhjb21taXRPckJyYW5jaE5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICpcbiAgICogQHJldHVybnMgamlyYXMgKGZyb20gb2xkZXN0IHRvIG5ld3NldClcbiAgICovXG4gIHN0YXRpYyBleHRyYWN0QW5kT3JkZXJJc3N1ZXNGcm9tT3RoZXJQcm9qZWN0cyhcbiAgICAvKipcbiAgICAgKiBleGFtcGxlOlxuICAgICAqIGNvbW1pdDogcHJvcGVyIGdpdCBjb21tYW5kcyB0bnAvR0gtOSBkYXJla2Y3Ny90bnAtaGVscGVycy9HSC0xMFxuICAgICAqIGZlYXR1cmUvX190bnAtR0gtOV9fX19kYXJla2Y3N190bnAtaGVscGVycy1HSDEwX18tcHJvcGVyLWdpdC1jb21tYW5kc1xuICAgICAqL1xuICAgIGNvbW1pdE9yQnJhbmNoTmFtZTogc3RyaW5nLFxuICAgIGN1cnJlbnRPcmlnaW4/OiBzdHJpbmcsXG4gICk6IHN0cmluZ1tdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgc3RhdGljIGNsZWFuTWVzc2FnZUZyb21KaXJhTnVtVGVhbUlkRXRjKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBvcHRpbm9zPzoge1xuICAgICAgdGVhbUlEOiBzdHJpbmc7XG4gICAgICBjb21taXRNb2R1bGVOYW1lOiBzdHJpbmc7XG4gICAgICBqaXJhTnVtYmVyczogc3RyaW5nW107XG4gICAgICBpc3N1ZXNGcm9tT3RoZXJQcm9qZWN0czogc3RyaW5nW107XG4gICAgfSxcbiAgKTogc3RyaW5nIHtcbiAgICBtZXNzYWdlID0gbWVzc2FnZSB8fCAnJztcbiAgICBsZXQgeyB0ZWFtSUQsIGNvbW1pdE1vZHVsZU5hbWUsIGppcmFOdW1iZXJzLCBpc3N1ZXNGcm9tT3RoZXJQcm9qZWN0cyB9ID1cbiAgICAgIG9wdGlub3MgfHwge307XG4gICAgdGVhbUlEID0gdGVhbUlEIHx8IHRoaXMuZ2V0VGVhbXNJZEZyb20obWVzc2FnZSkudGVhbUlEIHx8ICcnO1xuICAgIGNvbW1pdE1vZHVsZU5hbWUgPVxuICAgICAgY29tbWl0TW9kdWxlTmFtZSB8fFxuICAgICAgdGhpcy5nZXRNb2R1bGVOYW1lRnJvbShtZXNzYWdlKS5jb21taXRNb2R1bGVOYW1lIHx8XG4gICAgICAnJztcbiAgICBqaXJhTnVtYmVycyA9IGppcmFOdW1iZXJzIHx8IHRoaXMuZXh0cmFjdEFuZE9yZGVySmlyYU51bWJlcnMobWVzc2FnZSkgfHwgW107XG4gICAgaXNzdWVzRnJvbU90aGVyUHJvamVjdHMgPVxuICAgICAgaXNzdWVzRnJvbU90aGVyUHJvamVjdHMgfHxcbiAgICAgIHRoaXMuZXh0cmFjdEFuZE9yZGVySXNzdWVzRnJvbU90aGVyUHJvamVjdHMobWVzc2FnZSkgfHxcbiAgICAgIFtdO1xuXG4gICAgaWYgKCEhdGVhbUlELnRyaW0oKSkge1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSh0ZWFtSUQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCctJywgJyAnKSwgJyAnKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UodGVhbUlELnRvVXBwZXJDYXNlKCkucmVwbGFjZSgnLScsICcgJyksICcgJyk7XG4gICAgfVxuXG5cblxuICAgIGZvciAoY29uc3QgaXNzdWVGcm9tT3RoZXJQcm9qIG9mIGlzc3Vlc0Zyb21PdGhlclByb2plY3RzIHx8IFtdKSB7XG5cblxuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShcbiAgICAgICAgYF9fJHtpc3N1ZUZyb21PdGhlclByb2oucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvXFwtL2csICcgJyl9X19gLFxuICAgICAgICAnICcsXG4gICAgICApO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShpc3N1ZUZyb21PdGhlclByb2osICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKFxuICAgICAgICBpc3N1ZUZyb21PdGhlclByb2oudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCctJywgJyAnKSxcbiAgICAgICAgJyAnLFxuICAgICAgKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoXG4gICAgICAgIGlzc3VlRnJvbU90aGVyUHJvai50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoJy0nLCAnICcpLFxuICAgICAgICAnICcsXG4gICAgICApO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShpc3N1ZUZyb21PdGhlclByb2oudG9Mb3dlckNhc2UoKSwgJyAnKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UocmVnZXhDb21taXRNb2R1bGVJbkFyZ3MsICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKHJlZ2V4Q29tbWl0TW9kdWxlSW5CcmFuY2gsICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCBcXCAvZywgJyAnKTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGppcmEgb2YgamlyYU51bWJlcnMgfHwgW10pIHtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoamlyYS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoJy0nLCAnICcpLCAnICcpO1xuICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZShqaXJhLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgnLScsICcgJyksICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKGppcmEsICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKGppcmEudG9Mb3dlckNhc2UoKSwgJyAnKTtcbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UocmVnZXhDb21taXRNb2R1bGVJbkFyZ3MsICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKHJlZ2V4Q29tbWl0TW9kdWxlSW5CcmFuY2gsICcgJyk7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXCBcXCAvZywgJyAnKTtcbiAgICB9XG5cbiAgICBpZiAoISF0ZWFtSUQudHJpbSgpKSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9cXF8vZywgJyAnKTtcbiAgICB9XG5cbiAgICBpZiAoISFjb21taXRNb2R1bGVOYW1lLnRyaW0oKSkge1xuICAgICAgY29uc3QgY2xlYW5lZE1vZHVsZU5hbWUgPSBjb21taXRNb2R1bGVOYW1lXG4gICAgICAgIC5yZXBsYWNlKC9cXC0vZywgJyAnKVxuICAgICAgICAucmVwbGFjZSgvXFwsL2csICdfJyk7XG5cbiAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoY2xlYW5lZE1vZHVsZU5hbWUsICcgJyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlXG4gICAgICAucmVwbGFjZSgvXFwgXFwgL2csICcgJylcbiAgICAgIC5yZXBsYWNlKC9cXCBcXCAvZywgJyAnKVxuICAgICAgLnJlcGxhY2UoL1xcIFxcIC9nLCAnICcpO1xuICB9XG5cblxuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9kdWxlTmFtZUZyb21CcmFuY2goYnJhbmNoTmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IGNvbW1pdE1vZHVsZU5hbWUgPSBfLmZpcnN0KGJyYW5jaE5hbWUubWF0Y2gocmVnZXhDb21taXRNb2R1bGVJbkJyYW5jaCkpO1xuICAgIGlmIChjb21taXRNb2R1bGVOYW1lKSB7XG4gICAgICBicmFuY2hOYW1lID0gYnJhbmNoTmFtZS5yZXBsYWNlKGNvbW1pdE1vZHVsZU5hbWUsICcnKTtcbiAgICAgIGNvbW1pdE1vZHVsZU5hbWUgPSBjb21taXRNb2R1bGVOYW1lXG4gICAgICAgID8ucmVwbGFjZSgvXlxcLVxcLS8sICcnKVxuICAgICAgICA/LnJlcGxhY2UoL1xcLVxcLSQvLCAnJyk7XG4gICAgICBpZiAoY29tbWl0TW9kdWxlTmFtZS5zdGFydHNXaXRoKCctJykpIHtcbiAgICAgICAgY29tbWl0TW9kdWxlTmFtZSA9IGNvbW1pdE1vZHVsZU5hbWUucmVwbGFjZSgvXlxcLS8sICcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29tbWl0TW9kdWxlTmFtZSA9IGNvbW1pdE1vZHVsZU5hbWVcbiAgICAgID8ucmVwbGFjZSgvXlxcLVxcLS8sICcnKVxuICAgICAgPy5yZXBsYWNlKC9cXC1cXC0kLywgJycpXG4gICAgICAucmVwbGFjZSgvXFxfLywgJywnKTtcblxuICAgIHJldHVybiB7IGNvbW1pdE1vZHVsZU5hbWUgfTtcbiAgfVxuXG5cblxuICBzdGF0aWMgYXN5bmMgZ2V0RnJvbUFyZ3MoXG4gICAgYXJnczogc3RyaW5nW10sXG4gICAgb3B0aW9uczoge1xuICAgICAgdHlwZU9mQ29tbWl0OiBUeXBlT2ZDb21taXQ7XG4gICAgICAvKipcbiAgICAgICAqIG9ubHkgbmVlZGVkIHdoZW4gcHVzaCBnaXRodWJcbiAgICAgICAqIGFuZCBJIGZvcmdvdCB0byBhZGQgbXkgdXNlcm5hbWUgYmVmb3JlIGlzc3VlXG4gICAgICAgKiB0YW9uIHBmaXggcHJvcGVyIGlucHV0IG15LXJlcG8jMzQ0XG4gICAgICAgKiB0aGF0IHNob3VsZCBiZVxuICAgICAgICogdGFvbiBwZml4IHByb3BlciBpbnB1dCBteS11c2VybmFtZS9teS1yZXBvIzM0NFxuICAgICAgICovXG4gICAgICBjdXJyZW50T3JpZ2luPzogc3RyaW5nO1xuICAgICAgamlyYUlzc3Vlc0FyZU91dHNpZGVCcmFja2V0cz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogUHJvbWlzZTxDb21taXREYXRhPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHN0YXRpYyBhc3luYyBnZXRGcm9tQnJhbmNoKFxuICAgIGN1cnJlbnRCcmFuY2hOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHJlbGVhc2VXb3Jkcz86IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBvbmx5IG5lZWRlZCB3aGVuIHB1c2ggZ2l0aHViXG4gICAgICAgKiBhbmQgSSBmb3Jnb3QgdG8gYWRkIG15IHVzZXJuYW1lIGJlZm9yZSBpc3N1ZVxuICAgICAgICogdGFvbiBwZml4IHByb3BlciBpbnB1dCBteS1yZXBvIzM0NFxuICAgICAgICogdGhhdCBzaG91bGQgYmVcbiAgICAgICAqIHRhb24gcGZpeCBwcm9wZXIgaW5wdXQgbXktdXNlcm5hbWUvbXktcmVwbyMzNDRcbiAgICAgICAqL1xuICAgICAgY3VycmVudE9yaWdpbj86IHN0cmluZztcbiAgICAgIGppcmFJc3N1ZXNBcmVPdXRzaWRlQnJhY2tldHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IFByb21pc2U8Q29tbWl0RGF0YT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgc3RhdGljIGZyb20oXG4gICAgb3B0aW9uczogUGljazxcbiAgICAgIENvbW1pdERhdGEsXG4gICAgICB8ICdtZXNzYWdlJ1xuICAgICAgfCAnamlyYU51bWJlcnMnXG4gICAgICB8ICd0eXBlT2ZDb21taXQnXG4gICAgICB8ICdjb21taXRNb2R1bGVOYW1lJ1xuICAgICAgfCAndGVhbUlEJ1xuICAgICAgfCAnaXNzdWVzRnJvbU90aGVyUHJvamVjdHMnXG4gICAgICB8ICdqaXJhSXNzdWVzQXJlT3V0c2lkZUJyYWNrZXRzJ1xuICAgID4sXG4gICk6IENvbW1pdERhdGEge1xuICAgIG9wdGlvbnMgPSAob3B0aW9ucyA/IG9wdGlvbnMgOiB7fSkgYXMgYW55O1xuXG4gICAgY29uc3Qgb3B0ID0gXy5tZXJnZShuZXcgQ29tbWl0RGF0YSgpLCBfLmNsb25lRGVlcChvcHRpb25zKSk7XG4gICAgcmV0dXJuIG9wdDtcbiAgfVxuXG5cblxuXG5cbiAgcHJpdmF0ZSBfbWVzc2FnZTogc3RyaW5nO1xuICB0eXBlT2ZDb21taXQ6IFR5cGVPZkNvbW1pdDtcbiAgLyoqXG4gICAqIGV4LiBKSVJBLTIxMzIgb3IgTVlKSVJBUkVGSVgtMjM0MjM0XG4gICAqL1xuICBqaXJhTnVtYmVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIGlmIHRydWUgdGhlbiBqaXJhIGlzc3VlcyBhcmUgb3V0c2lkZSBicmFja2V0c1xuICAgKiBmZWF0OiBwcm9wZXIgZ2l0IGNvbW1hbmRzIEpJUkEtMTIzNFxuICAgKlxuICAgKiBieSBkZWZhdWx0IGlzIGZhbHNlXG4gICAqIGZlYXQoSklSQS0xMjM0KTogcHJvcGVyIGdpdCBjb21tYW5kc1xuICAgKi9cbiAgamlyYUlzc3Vlc0FyZU91dHNpZGVCcmFja2V0czogYm9vbGVhbjtcblxuICAvKipcbiAgICogd2hlbiBzZXQgLT4gamlyYUlzc3Vlc0FyZU91dHNpZGVCcmFja2V0cyBpcyB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21taXRNb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRlYW1JRDogc3RyaW5nO1xuXG5cblxuICBwcml2YXRlIGNsZWFyTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDb21taXREYXRhLmNsZWFuTWVzc2FnZUZyb21KaXJhTnVtVGVhbUlkRXRjKG1lc3NhZ2UsIHtcbiAgICAgIHRlYW1JRDogdGhpcy50ZWFtSUQsXG4gICAgICBjb21taXRNb2R1bGVOYW1lOiB0aGlzLmNvbW1pdE1vZHVsZU5hbWUsXG4gICAgICBqaXJhTnVtYmVyczogdGhpcy5qaXJhTnVtYmVycyxcbiAgICAgIGlzc3Vlc0Zyb21PdGhlclByb2plY3RzOiB0aGlzLmlzc3Vlc0Zyb21PdGhlclByb2plY3RzLFxuICAgIH0pO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBwdXJlIG1lc3NhZ2Ugd2hhdCB3YXMgZG9uZSAod2l0aG91dCBqaXJhIG9yIHByZWZpeGVzKVxuICAgKiA9PiBpcyBpbmNsdWRlZCBpbiB0aGlzLmNvbW1pdE1lc3NhZ2VcbiAgICovXG4gIGdldCBtZXNzYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmNsZWFyTWVzc2FnZSh0aGlzLl9tZXNzYWdlKTtcbiAgfVxuICBzZXQgbWVzc2FnZShtZXNzYWdlKSB7XG4gICAgdGhpcy5fbWVzc2FnZSA9IHRoaXMuY2xlYXJNZXNzYWdlKG1lc3NhZ2UpO1xuICB9XG5cblxuICB1c2VGZWF0dXJlQnJhbmNoRm9yVGVzdEJyYW5jaDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cbiAgZ2V0IGJyYW5jaFByZWZpeCgpOiBUeXBlT2ZNc2dQcmVmaXgge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGV4LiB0YW9uL0dILTEyICBkYXJla2Y3Ny90bnAtaGVscGVycy9HSC00XG4gICAqL1xuICBnZXQgaXNzdWVzRnJvbU90aGVyUHJvamVjdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9faXNzdWVzRnJvbU90aGVyUHJvamVjdHM7XG4gIH1cblxuICBzZXQgaXNzdWVzRnJvbU90aGVyUHJvamVjdHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fX2lzc3Vlc0Zyb21PdGhlclByb2plY3RzID0gdmFsdWU7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICB9XG5cbiAgcHJpdmF0ZSBfX2lzc3Vlc0Zyb21PdGhlclByb2plY3RzOiBzdHJpbmdbXTtcblxuXG5cbiAgZ2V0IGNvbW1pdE1lc3NhZ2UoKTogc3RyaW5nIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2V0IGJyYW5jaE5hbWUoKTogc3RyaW5nIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgZ2V0IGlzQWN0aW9uQ29tbWl0KCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlL2NvbW1pdC1kYXRhLnRzIl19