@tasenor/common-node 1.9.16

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 (326) hide show
  1. package/.eslintrc.js +4 -0
  2. package/LICENSE +21 -0
  3. package/dist/tasenor-common-node/src/cli.d.ts +81 -0
  4. package/dist/tasenor-common-node/src/cli.js +242 -0
  5. package/dist/tasenor-common-node/src/cli.js.map +1 -0
  6. package/dist/tasenor-common-node/src/commands/account.d.ts +12 -0
  7. package/dist/tasenor-common-node/src/commands/account.js +58 -0
  8. package/dist/tasenor-common-node/src/commands/account.js.map +1 -0
  9. package/dist/tasenor-common-node/src/commands/balance.d.ts +11 -0
  10. package/dist/tasenor-common-node/src/commands/balance.js +117 -0
  11. package/dist/tasenor-common-node/src/commands/balance.js.map +1 -0
  12. package/dist/tasenor-common-node/src/commands/db.d.ts +14 -0
  13. package/dist/tasenor-common-node/src/commands/db.js +69 -0
  14. package/dist/tasenor-common-node/src/commands/db.js.map +1 -0
  15. package/dist/tasenor-common-node/src/commands/entry.d.ts +13 -0
  16. package/dist/tasenor-common-node/src/commands/entry.js +106 -0
  17. package/dist/tasenor-common-node/src/commands/entry.js.map +1 -0
  18. package/dist/tasenor-common-node/src/commands/import.d.ts +17 -0
  19. package/dist/tasenor-common-node/src/commands/import.js +140 -0
  20. package/dist/tasenor-common-node/src/commands/import.js.map +1 -0
  21. package/dist/tasenor-common-node/src/commands/importer.d.ts +13 -0
  22. package/dist/tasenor-common-node/src/commands/importer.js +71 -0
  23. package/dist/tasenor-common-node/src/commands/importer.js.map +1 -0
  24. package/dist/tasenor-common-node/src/commands/index.d.ts +191 -0
  25. package/dist/tasenor-common-node/src/commands/index.js +482 -0
  26. package/dist/tasenor-common-node/src/commands/index.js.map +1 -0
  27. package/dist/tasenor-common-node/src/commands/period.d.ts +12 -0
  28. package/dist/tasenor-common-node/src/commands/period.js +48 -0
  29. package/dist/tasenor-common-node/src/commands/period.js.map +1 -0
  30. package/dist/tasenor-common-node/src/commands/plugin.d.ts +15 -0
  31. package/dist/tasenor-common-node/src/commands/plugin.js +78 -0
  32. package/dist/tasenor-common-node/src/commands/plugin.js.map +1 -0
  33. package/dist/tasenor-common-node/src/commands/report.d.ts +11 -0
  34. package/dist/tasenor-common-node/src/commands/report.js +96 -0
  35. package/dist/tasenor-common-node/src/commands/report.js.map +1 -0
  36. package/dist/tasenor-common-node/src/commands/settings.d.ts +10 -0
  37. package/dist/tasenor-common-node/src/commands/settings.js +64 -0
  38. package/dist/tasenor-common-node/src/commands/settings.js.map +1 -0
  39. package/dist/tasenor-common-node/src/commands/stock.d.ts +8 -0
  40. package/dist/tasenor-common-node/src/commands/stock.js +73 -0
  41. package/dist/tasenor-common-node/src/commands/stock.js.map +1 -0
  42. package/dist/tasenor-common-node/src/commands/tag.d.ts +13 -0
  43. package/dist/tasenor-common-node/src/commands/tag.js +89 -0
  44. package/dist/tasenor-common-node/src/commands/tag.js.map +1 -0
  45. package/dist/tasenor-common-node/src/commands/tx.d.ts +12 -0
  46. package/dist/tasenor-common-node/src/commands/tx.js +81 -0
  47. package/dist/tasenor-common-node/src/commands/tx.js.map +1 -0
  48. package/dist/tasenor-common-node/src/commands/user.d.ts +12 -0
  49. package/dist/tasenor-common-node/src/commands/user.js +52 -0
  50. package/dist/tasenor-common-node/src/commands/user.js.map +1 -0
  51. package/dist/tasenor-common-node/src/database/BookkeeperImporter.d.ts +77 -0
  52. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js +343 -0
  53. package/dist/tasenor-common-node/src/database/BookkeeperImporter.js.map +1 -0
  54. package/dist/tasenor-common-node/src/database/DB.d.ts +51 -0
  55. package/dist/tasenor-common-node/src/database/DB.js +354 -0
  56. package/dist/tasenor-common-node/src/database/DB.js.map +1 -0
  57. package/dist/tasenor-common-node/src/database/index.d.ts +7 -0
  58. package/dist/tasenor-common-node/src/database/index.js +8 -0
  59. package/dist/tasenor-common-node/src/database/index.js.map +1 -0
  60. package/dist/tasenor-common-node/src/doccer.d.ts +29 -0
  61. package/dist/tasenor-common-node/src/doccer.js +30 -0
  62. package/dist/tasenor-common-node/src/doccer.js.map +1 -0
  63. package/dist/tasenor-common-node/src/error.d.ts +30 -0
  64. package/dist/tasenor-common-node/src/error.js +35 -0
  65. package/dist/tasenor-common-node/src/error.js.map +1 -0
  66. package/dist/tasenor-common-node/src/export/Exporter.d.ts +69 -0
  67. package/dist/tasenor-common-node/src/export/Exporter.js +123 -0
  68. package/dist/tasenor-common-node/src/export/Exporter.js.map +1 -0
  69. package/dist/tasenor-common-node/src/export/TasenorExporter.d.ts +55 -0
  70. package/dist/tasenor-common-node/src/export/TasenorExporter.js +135 -0
  71. package/dist/tasenor-common-node/src/export/TasenorExporter.js.map +1 -0
  72. package/dist/tasenor-common-node/src/export/TilitinExporter.d.ts +71 -0
  73. package/dist/tasenor-common-node/src/export/TilitinExporter.js +290 -0
  74. package/dist/tasenor-common-node/src/export/TilitinExporter.js.map +1 -0
  75. package/dist/tasenor-common-node/src/export/index.d.ts +8 -0
  76. package/dist/tasenor-common-node/src/export/index.js +9 -0
  77. package/dist/tasenor-common-node/src/export/index.js.map +1 -0
  78. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.d.ts +104 -0
  79. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js +354 -0
  80. package/dist/tasenor-common-node/src/import/TextFileProcessHandler.js.map +1 -0
  81. package/dist/tasenor-common-node/src/import/TransactionImportConnector.d.ts +38 -0
  82. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js +27 -0
  83. package/dist/tasenor-common-node/src/import/TransactionImportConnector.js.map +1 -0
  84. package/dist/tasenor-common-node/src/import/TransactionImportHandler.d.ts +173 -0
  85. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js +733 -0
  86. package/dist/tasenor-common-node/src/import/TransactionImportHandler.js.map +1 -0
  87. package/dist/tasenor-common-node/src/import/TransactionRules.d.ts +238 -0
  88. package/dist/tasenor-common-node/src/import/TransactionRules.js +522 -0
  89. package/dist/tasenor-common-node/src/import/TransactionRules.js.map +1 -0
  90. package/dist/tasenor-common-node/src/import/TransactionUI.d.ts +181 -0
  91. package/dist/tasenor-common-node/src/import/TransactionUI.js +482 -0
  92. package/dist/tasenor-common-node/src/import/TransactionUI.js.map +1 -0
  93. package/dist/tasenor-common-node/src/import/TransferAnalyzer.d.ts +324 -0
  94. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js +1379 -0
  95. package/dist/tasenor-common-node/src/import/TransferAnalyzer.js.map +1 -0
  96. package/dist/tasenor-common-node/src/import/index.d.ts +11 -0
  97. package/dist/tasenor-common-node/src/import/index.js +12 -0
  98. package/dist/tasenor-common-node/src/import/index.js.map +1 -0
  99. package/dist/tasenor-common-node/src/index.d.ts +12 -0
  100. package/dist/tasenor-common-node/src/index.js +13 -0
  101. package/dist/tasenor-common-node/src/index.js.map +1 -0
  102. package/dist/tasenor-common-node/src/net/crypto.d.ts +33 -0
  103. package/dist/tasenor-common-node/src/net/crypto.js +63 -0
  104. package/dist/tasenor-common-node/src/net/crypto.js.map +1 -0
  105. package/dist/tasenor-common-node/src/net/git.d.ts +49 -0
  106. package/dist/tasenor-common-node/src/net/git.js +137 -0
  107. package/dist/tasenor-common-node/src/net/git.js.map +1 -0
  108. package/dist/tasenor-common-node/src/net/index.d.ts +10 -0
  109. package/dist/tasenor-common-node/src/net/index.js +11 -0
  110. package/dist/tasenor-common-node/src/net/index.js.map +1 -0
  111. package/dist/tasenor-common-node/src/net/middleware.d.ts +61 -0
  112. package/dist/tasenor-common-node/src/net/middleware.js +220 -0
  113. package/dist/tasenor-common-node/src/net/middleware.js.map +1 -0
  114. package/dist/tasenor-common-node/src/net/tokens.d.ts +50 -0
  115. package/dist/tasenor-common-node/src/net/tokens.js +141 -0
  116. package/dist/tasenor-common-node/src/net/tokens.js.map +1 -0
  117. package/dist/tasenor-common-node/src/net/vault.d.ts +67 -0
  118. package/dist/tasenor-common-node/src/net/vault.js +145 -0
  119. package/dist/tasenor-common-node/src/net/vault.js.map +1 -0
  120. package/dist/tasenor-common-node/src/plugins/BackendPlugin.d.ts +91 -0
  121. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js +165 -0
  122. package/dist/tasenor-common-node/src/plugins/BackendPlugin.js.map +1 -0
  123. package/dist/tasenor-common-node/src/plugins/DataPlugin.d.ts +13 -0
  124. package/dist/tasenor-common-node/src/plugins/DataPlugin.js +26 -0
  125. package/dist/tasenor-common-node/src/plugins/DataPlugin.js.map +1 -0
  126. package/dist/tasenor-common-node/src/plugins/ImportPlugin.d.ts +188 -0
  127. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js +204 -0
  128. package/dist/tasenor-common-node/src/plugins/ImportPlugin.js.map +1 -0
  129. package/dist/tasenor-common-node/src/plugins/ReportPlugin.d.ts +132 -0
  130. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js +393 -0
  131. package/dist/tasenor-common-node/src/plugins/ReportPlugin.js.map +1 -0
  132. package/dist/tasenor-common-node/src/plugins/SchemePlugin.d.ts +34 -0
  133. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js +47 -0
  134. package/dist/tasenor-common-node/src/plugins/SchemePlugin.js.map +1 -0
  135. package/dist/tasenor-common-node/src/plugins/ServicePlugin.d.ts +80 -0
  136. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js +168 -0
  137. package/dist/tasenor-common-node/src/plugins/ServicePlugin.js.map +1 -0
  138. package/dist/tasenor-common-node/src/plugins/ToolPlugin.d.ts +27 -0
  139. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js +37 -0
  140. package/dist/tasenor-common-node/src/plugins/ToolPlugin.js.map +1 -0
  141. package/dist/tasenor-common-node/src/plugins/index.d.ts +13 -0
  142. package/dist/tasenor-common-node/src/plugins/index.js +14 -0
  143. package/dist/tasenor-common-node/src/plugins/index.js.map +1 -0
  144. package/dist/tasenor-common-node/src/plugins/plugins.d.ts +101 -0
  145. package/dist/tasenor-common-node/src/plugins/plugins.js +292 -0
  146. package/dist/tasenor-common-node/src/plugins/plugins.js.map +1 -0
  147. package/dist/tasenor-common-node/src/process/Process.d.ts +108 -0
  148. package/dist/tasenor-common-node/src/process/Process.js +335 -0
  149. package/dist/tasenor-common-node/src/process/Process.js.map +1 -0
  150. package/dist/tasenor-common-node/src/process/ProcessConnector.d.ts +24 -0
  151. package/dist/tasenor-common-node/src/process/ProcessConnector.js +28 -0
  152. package/dist/tasenor-common-node/src/process/ProcessConnector.js.map +1 -0
  153. package/dist/tasenor-common-node/src/process/ProcessFile.d.ts +69 -0
  154. package/dist/tasenor-common-node/src/process/ProcessFile.js +145 -0
  155. package/dist/tasenor-common-node/src/process/ProcessFile.js.map +1 -0
  156. package/dist/tasenor-common-node/src/process/ProcessHandler.d.ts +60 -0
  157. package/dist/tasenor-common-node/src/process/ProcessHandler.js +73 -0
  158. package/dist/tasenor-common-node/src/process/ProcessHandler.js.map +1 -0
  159. package/dist/tasenor-common-node/src/process/ProcessStep.d.ts +52 -0
  160. package/dist/tasenor-common-node/src/process/ProcessStep.js +78 -0
  161. package/dist/tasenor-common-node/src/process/ProcessStep.js.map +1 -0
  162. package/dist/tasenor-common-node/src/process/ProcessingSystem.d.ts +60 -0
  163. package/dist/tasenor-common-node/src/process/ProcessingSystem.js +182 -0
  164. package/dist/tasenor-common-node/src/process/ProcessingSystem.js.map +1 -0
  165. package/dist/tasenor-common-node/src/process/index.d.ts +11 -0
  166. package/dist/tasenor-common-node/src/process/index.js +12 -0
  167. package/dist/tasenor-common-node/src/process/index.js.map +1 -0
  168. package/dist/tasenor-common-node/src/reports/conversions.d.ts +8 -0
  169. package/dist/tasenor-common-node/src/reports/conversions.js +47 -0
  170. package/dist/tasenor-common-node/src/reports/conversions.js.map +1 -0
  171. package/dist/tasenor-common-node/src/reports/index.d.ts +6 -0
  172. package/dist/tasenor-common-node/src/reports/index.js +7 -0
  173. package/dist/tasenor-common-node/src/reports/index.js.map +1 -0
  174. package/dist/tasenor-common-node/src/server/ISPDemoServer.d.ts +43 -0
  175. package/dist/tasenor-common-node/src/server/ISPDemoServer.js +112 -0
  176. package/dist/tasenor-common-node/src/server/ISPDemoServer.js.map +1 -0
  177. package/dist/tasenor-common-node/src/server/api.d.ts +15 -0
  178. package/dist/tasenor-common-node/src/server/api.js +27 -0
  179. package/dist/tasenor-common-node/src/server/api.js.map +1 -0
  180. package/dist/tasenor-common-node/src/server/index.d.ts +7 -0
  181. package/dist/tasenor-common-node/src/server/index.js +8 -0
  182. package/dist/tasenor-common-node/src/server/index.js.map +1 -0
  183. package/dist/tasenor-common-node/src/server/router.d.ts +5 -0
  184. package/dist/tasenor-common-node/src/server/router.js +37 -0
  185. package/dist/tasenor-common-node/src/server/router.js.map +1 -0
  186. package/dist/tasenor-common-node/src/system.d.ts +27 -0
  187. package/dist/tasenor-common-node/src/system.js +95 -0
  188. package/dist/tasenor-common-node/src/system.js.map +1 -0
  189. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.d.ts +21 -0
  190. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js +33 -0
  191. package/dist/tasenor-common-node/src/testing/ProcessingSystemMock.js.map +1 -0
  192. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.d.ts +24 -0
  193. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js +68 -0
  194. package/dist/tasenor-common-node/src/testing/UnitTestImportConnector.js.map +1 -0
  195. package/dist/tasenor-common-node/src/testing/UnitTester.d.ts +64 -0
  196. package/dist/tasenor-common-node/src/testing/UnitTester.js +199 -0
  197. package/dist/tasenor-common-node/src/testing/UnitTester.js.map +1 -0
  198. package/dist/tasenor-common-node/src/testing/index.d.ts +4 -0
  199. package/dist/tasenor-common-node/src/testing/index.js +5 -0
  200. package/dist/tasenor-common-node/src/testing/index.js.map +1 -0
  201. package/dist/tasenor-common-node/src/testing/test-handlers.d.ts +13 -0
  202. package/dist/tasenor-common-node/src/testing/test-handlers.js +52 -0
  203. package/dist/tasenor-common-node/src/testing/test-handlers.js.map +1 -0
  204. package/dist/tasenor-common-node/tests/TransactionRules.spec.d.ts +1 -0
  205. package/dist/tasenor-common-node/tests/TransactionRules.spec.js +64 -0
  206. package/dist/tasenor-common-node/tests/TransactionRules.spec.js.map +1 -0
  207. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.d.ts +1 -0
  208. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js +80 -0
  209. package/dist/tasenor-common-node/tests/TransferAnalyzer-account-address.spec.js.map +1 -0
  210. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.d.ts +1 -0
  211. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js +342 -0
  212. package/dist/tasenor-common-node/tests/TransferAnalyzer-buying-and-selling.spec.js.map +1 -0
  213. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.d.ts +1 -0
  214. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js +174 -0
  215. package/dist/tasenor-common-node/tests/TransferAnalyzer-loans.spec.js.map +1 -0
  216. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.d.ts +1 -0
  217. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js +175 -0
  218. package/dist/tasenor-common-node/tests/TransferAnalyzer-multiple-null-amounts.spec.js.map +1 -0
  219. package/dist/tasenor-common-node/tests/password.spec.d.ts +1 -0
  220. package/dist/tasenor-common-node/tests/password.spec.js +8 -0
  221. package/dist/tasenor-common-node/tests/password.spec.js.map +1 -0
  222. package/dist/tasenor-common-node/tests/tokens.spec.d.ts +1 -0
  223. package/dist/tasenor-common-node/tests/tokens.spec.js +49 -0
  224. package/dist/tasenor-common-node/tests/tokens.spec.js.map +1 -0
  225. package/dist/tasenor-common-node/tests/vault.spec.d.ts +1 -0
  226. package/dist/tasenor-common-node/tests/vault.spec.js +19 -0
  227. package/dist/tasenor-common-node/tests/vault.spec.js.map +1 -0
  228. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.d.ts +11 -0
  229. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js +30 -0
  230. package/dist/tasenor-common-plugins/src/CoinbaseImport/backend/CoinbaseHandler.js.map +1 -0
  231. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.d.ts +5 -0
  232. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js +350 -0
  233. package/dist/tasenor-common-plugins/src/IncomeAndExpenses/backend/index.js.map +1 -0
  234. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.d.ts +23 -0
  235. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js +83 -0
  236. package/dist/tasenor-common-plugins/src/KrakenImport/backend/KrakenHandler.js.map +1 -0
  237. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.d.ts +28 -0
  238. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js +340 -0
  239. package/dist/tasenor-common-plugins/src/LynxImport/backend/LynxHandler.js.map +1 -0
  240. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.d.ts +11 -0
  241. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js +39 -0
  242. package/dist/tasenor-common-plugins/src/NordeaImport/backend/NordeaHandler.js.map +1 -0
  243. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.d.ts +17 -0
  244. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js +66 -0
  245. package/dist/tasenor-common-plugins/src/NordnetImport/backend/NordnetHandler.js.map +1 -0
  246. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.d.ts +13 -0
  247. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js +241 -0
  248. package/dist/tasenor-common-plugins/src/TITOImport/backend/TITOHandler.js.map +1 -0
  249. package/jest.config.js +1 -0
  250. package/package.json +62 -0
  251. package/src/cli.ts +267 -0
  252. package/src/commands/account.ts +69 -0
  253. package/src/commands/balance.ts +131 -0
  254. package/src/commands/db.ts +84 -0
  255. package/src/commands/entry.ts +117 -0
  256. package/src/commands/import.ts +160 -0
  257. package/src/commands/importer.ts +84 -0
  258. package/src/commands/index.ts +534 -0
  259. package/src/commands/period.ts +59 -0
  260. package/src/commands/plugin.ts +95 -0
  261. package/src/commands/report.ts +113 -0
  262. package/src/commands/settings.ts +75 -0
  263. package/src/commands/stock.ts +80 -0
  264. package/src/commands/tag.ts +102 -0
  265. package/src/commands/tx.ts +93 -0
  266. package/src/commands/user.ts +65 -0
  267. package/src/database/BookkeeperImporter.ts +358 -0
  268. package/src/database/DB.ts +396 -0
  269. package/src/database/index.ts +7 -0
  270. package/src/doccer.ts +29 -0
  271. package/src/error.ts +32 -0
  272. package/src/export/Exporter.ts +136 -0
  273. package/src/export/TasenorExporter.ts +144 -0
  274. package/src/export/TilitinExporter.ts +302 -0
  275. package/src/export/index.ts +8 -0
  276. package/src/import/TextFileProcessHandler.ts +384 -0
  277. package/src/import/TransactionImportConnector.ts +65 -0
  278. package/src/import/TransactionImportHandler.ts +819 -0
  279. package/src/import/TransactionRules.ts +570 -0
  280. package/src/import/TransactionUI.ts +520 -0
  281. package/src/import/TransferAnalyzer.ts +1450 -0
  282. package/src/import/index.ts +11 -0
  283. package/src/index.ts +12 -0
  284. package/src/net/crypto.ts +69 -0
  285. package/src/net/git.ts +151 -0
  286. package/src/net/index.ts +10 -0
  287. package/src/net/middleware.ts +261 -0
  288. package/src/net/tokens.ts +140 -0
  289. package/src/net/vault.ts +161 -0
  290. package/src/plugins/BackendPlugin.ts +188 -0
  291. package/src/plugins/DataPlugin.ts +29 -0
  292. package/src/plugins/ImportPlugin.ts +211 -0
  293. package/src/plugins/ReportPlugin.ts +443 -0
  294. package/src/plugins/SchemePlugin.ts +56 -0
  295. package/src/plugins/ServicePlugin.ts +188 -0
  296. package/src/plugins/ToolPlugin.ts +44 -0
  297. package/src/plugins/index.ts +13 -0
  298. package/src/plugins/plugins.ts +345 -0
  299. package/src/process/Process.ts +368 -0
  300. package/src/process/ProcessConnector.ts +45 -0
  301. package/src/process/ProcessFile.ts +169 -0
  302. package/src/process/ProcessHandler.ts +94 -0
  303. package/src/process/ProcessStep.ts +100 -0
  304. package/src/process/ProcessingSystem.ts +202 -0
  305. package/src/process/index.ts +11 -0
  306. package/src/reports/conversions.ts +52 -0
  307. package/src/reports/index.ts +6 -0
  308. package/src/server/ISPDemoServer.ts +122 -0
  309. package/src/server/api.ts +37 -0
  310. package/src/server/index.ts +7 -0
  311. package/src/server/router.ts +60 -0
  312. package/src/system.ts +96 -0
  313. package/src/testing/ProcessingSystemMock.ts +45 -0
  314. package/src/testing/UnitTestImportConnector.ts +86 -0
  315. package/src/testing/UnitTester.ts +231 -0
  316. package/src/testing/index.ts +4 -0
  317. package/src/testing/test-handlers.ts +55 -0
  318. package/tests/TransactionRules.spec.ts +73 -0
  319. package/tests/TransferAnalyzer-account-address.spec.ts +87 -0
  320. package/tests/TransferAnalyzer-buying-and-selling.spec.ts +354 -0
  321. package/tests/TransferAnalyzer-loans.spec.ts +197 -0
  322. package/tests/TransferAnalyzer-multiple-null-amounts.spec.ts +181 -0
  323. package/tests/password.spec.ts +8 -0
  324. package/tests/tokens.spec.ts +52 -0
  325. package/tests/vault.spec.ts +20 -0
  326. package/tsconfig.json +13 -0
@@ -0,0 +1,342 @@
1
+ import { UnitTester } from '../src/testing';
2
+ test('Buying and selling', async () => {
3
+ const tester = new UnitTester();
4
+ tester.addMoney('trade.currency.EUR', 1000000);
5
+ await tester.test(
6
+ // Buy 1.5 ETH for 200€ and 1€ fee.
7
+ [
8
+ {
9
+ reason: 'trade',
10
+ type: 'currency',
11
+ asset: 'EUR',
12
+ amount: -200
13
+ },
14
+ {
15
+ reason: 'trade',
16
+ type: 'crypto',
17
+ asset: 'ETH',
18
+ amount: 1.5
19
+ },
20
+ {
21
+ reason: 'fee',
22
+ type: 'currency',
23
+ asset: 'EUR',
24
+ amount: 1
25
+ }
26
+ ], [[
27
+ {
28
+ account: 'trade.currency.EUR',
29
+ amount: -20100,
30
+ description: 'Buy +1.5 ETH',
31
+ },
32
+ {
33
+ account: 'trade.crypto.ETH',
34
+ amount: 20000,
35
+ data: {
36
+ stock: {
37
+ change: {
38
+ ETH: {
39
+ amount: 1.5,
40
+ value: 20000,
41
+ },
42
+ },
43
+ },
44
+ },
45
+ description: 'Buy +1.5 ETH',
46
+ },
47
+ {
48
+ account: 'fee.currency.EUR',
49
+ amount: 100,
50
+ description: 'Buy +1.5 ETH',
51
+ }
52
+ ]],
53
+ // Sell 1.5 ETH for 250€ and 1€ fee.
54
+ [
55
+ {
56
+ reason: 'trade',
57
+ type: 'currency',
58
+ asset: 'EUR',
59
+ amount: 251
60
+ },
61
+ {
62
+ reason: 'trade',
63
+ type: 'crypto',
64
+ asset: 'ETH',
65
+ amount: -1.5
66
+ },
67
+ {
68
+ reason: 'fee',
69
+ type: 'currency',
70
+ asset: 'EUR',
71
+ amount: 1
72
+ }
73
+ ], [[
74
+ {
75
+ account: 'trade.currency.EUR',
76
+ amount: 25000,
77
+ description: 'Sell -1.5 ETH',
78
+ },
79
+ {
80
+ account: 'trade.crypto.ETH',
81
+ amount: -20000,
82
+ data: {
83
+ stock: {
84
+ change: {
85
+ ETH: {
86
+ amount: -1.5,
87
+ value: -20000,
88
+ },
89
+ },
90
+ },
91
+ },
92
+ description: 'Sell -1.5 ETH',
93
+ },
94
+ {
95
+ account: 'fee.currency.EUR',
96
+ amount: 100,
97
+ description: 'Sell -1.5 ETH',
98
+ },
99
+ {
100
+ account: 'income.statement.TRADE_PROFIT_CRYPTO',
101
+ amount: -5100,
102
+ description: 'Sell -1.5 ETH',
103
+ }
104
+ ]],
105
+ // Buy 5 NAKD for 300€, no fee.
106
+ [
107
+ {
108
+ reason: 'trade',
109
+ type: 'currency',
110
+ asset: 'EUR',
111
+ amount: -300
112
+ },
113
+ {
114
+ reason: 'trade',
115
+ type: 'stock',
116
+ asset: 'NAKD',
117
+ amount: 5
118
+ }
119
+ ], [[
120
+ {
121
+ account: 'trade.currency.EUR',
122
+ amount: -30000,
123
+ description: 'Buy +5 NAKD',
124
+ },
125
+ {
126
+ account: 'trade.stock.NAKD',
127
+ amount: 30000,
128
+ data: {
129
+ stock: {
130
+ change: {
131
+ NAKD: {
132
+ amount: 5,
133
+ value: 30000,
134
+ },
135
+ },
136
+ },
137
+ },
138
+ description: 'Buy +5 NAKD',
139
+ },
140
+ ]],
141
+ // Sell 5 NAKD for 200€, no fee.
142
+ [
143
+ {
144
+ reason: 'trade',
145
+ type: 'currency',
146
+ asset: 'EUR',
147
+ amount: 200
148
+ },
149
+ {
150
+ reason: 'trade',
151
+ type: 'stock',
152
+ asset: 'NAKD',
153
+ amount: -5
154
+ }
155
+ ], [[
156
+ {
157
+ account: 'trade.currency.EUR',
158
+ amount: 20000,
159
+ description: 'Sell -5 NAKD',
160
+ },
161
+ {
162
+ account: 'trade.stock.NAKD',
163
+ amount: -30000,
164
+ data: {
165
+ stock: {
166
+ change: {
167
+ NAKD: {
168
+ amount: -5,
169
+ value: -30000,
170
+ },
171
+ },
172
+ },
173
+ },
174
+ description: 'Sell -5 NAKD',
175
+ },
176
+ {
177
+ account: 'expense.statement.TRADE_LOSS_STOCK',
178
+ amount: 10000,
179
+ description: 'Sell -5 NAKD',
180
+ },
181
+ ]]);
182
+ expect(tester.get('trade.currency.EUR')).toBe(994900);
183
+ expect(tester.get('trade.stock.NAKD')).toBe(0);
184
+ expect(tester.get('expense.statement.TRADE_LOSS_STOCK')).toBe(10000);
185
+ expect(tester.get('trade.crypto.ETH')).toBe(0);
186
+ expect(tester.get('fee.currency.EUR')).toBe(200);
187
+ expect(tester.get('income.statement.TRADE_PROFIT_CRYPTO')).toBe(-5100);
188
+ });
189
+ test('Short selling', async () => {
190
+ const tester = new UnitTester();
191
+ tester.set('allowShortSelling', true);
192
+ tester.answer('segment0', 'hasBeenRenamed.stock.NAKD', false);
193
+ await tester.test(
194
+ // Short sell 100 NAKD for $1000 with $5 fee.
195
+ [
196
+ {
197
+ reason: 'trade',
198
+ type: 'currency',
199
+ asset: 'USD',
200
+ amount: 1000
201
+ },
202
+ {
203
+ reason: 'trade',
204
+ type: 'stock',
205
+ asset: 'NAKD',
206
+ amount: -100
207
+ },
208
+ {
209
+ reason: 'fee',
210
+ type: 'currency',
211
+ asset: 'USD',
212
+ amount: 5
213
+ }
214
+ ], [[
215
+ {
216
+ account: 'trade.currency.USD',
217
+ amount: 99500,
218
+ data: {
219
+ currency: 'USD',
220
+ currencyValue: 99500,
221
+ rates: {
222
+ USD: 1,
223
+ },
224
+ },
225
+ description: 'Short selling -100 NAKD',
226
+ },
227
+ {
228
+ account: 'trade.short.NAKD',
229
+ amount: -100000,
230
+ data: {
231
+ currency: 'USD',
232
+ currencyValue: -100000,
233
+ rates: {
234
+ USD: 1,
235
+ },
236
+ stock: {
237
+ change: {
238
+ NAKD: {
239
+ amount: -100,
240
+ value: -100000,
241
+ },
242
+ },
243
+ },
244
+ },
245
+ description: 'Short selling -100 NAKD',
246
+ },
247
+ {
248
+ account: 'fee.currency.USD',
249
+ amount: 500,
250
+ data: {
251
+ currency: 'USD',
252
+ currencyValue: 500,
253
+ rates: {
254
+ USD: 1,
255
+ },
256
+ },
257
+ description: 'Short selling -100 NAKD',
258
+ },
259
+ ]], [
260
+ // Buy 100 NAKD back for $900 and $5 fee.
261
+ {
262
+ reason: 'trade',
263
+ type: 'currency',
264
+ asset: 'USD',
265
+ amount: -900
266
+ },
267
+ {
268
+ reason: 'trade',
269
+ type: 'stock',
270
+ asset: 'NAKD',
271
+ amount: 100
272
+ },
273
+ {
274
+ reason: 'fee',
275
+ type: 'currency',
276
+ asset: 'USD',
277
+ amount: 5
278
+ }
279
+ ], [[
280
+ {
281
+ account: 'trade.currency.USD',
282
+ amount: -90500,
283
+ data: {
284
+ currency: 'USD',
285
+ currencyValue: -90500,
286
+ rates: {
287
+ USD: 1,
288
+ },
289
+ },
290
+ description: 'Closing short position +100 NAKD',
291
+ },
292
+ {
293
+ account: 'trade.short.NAKD',
294
+ amount: 100000,
295
+ data: {
296
+ currency: 'USD',
297
+ currencyValue: 100000,
298
+ rates: {
299
+ USD: 1,
300
+ },
301
+ stock: {
302
+ change: {
303
+ NAKD: {
304
+ amount: 100,
305
+ value: 100000,
306
+ },
307
+ },
308
+ },
309
+ },
310
+ description: 'Closing short position +100 NAKD',
311
+ },
312
+ {
313
+ account: 'fee.currency.USD',
314
+ amount: 500,
315
+ data: {
316
+ currency: 'USD',
317
+ currencyValue: 500,
318
+ rates: {
319
+ USD: 1,
320
+ },
321
+ },
322
+ description: 'Closing short position +100 NAKD',
323
+ },
324
+ {
325
+ account: 'income.statement.TRADE_PROFIT_SHORT',
326
+ amount: -10000,
327
+ data: {
328
+ currency: 'USD',
329
+ currencyValue: -10000,
330
+ rates: {
331
+ USD: 1,
332
+ },
333
+ },
334
+ description: 'Closing short position +100 NAKD',
335
+ },
336
+ ]]);
337
+ expect(tester.get('trade.currency.USD')).toBe(9000);
338
+ expect(tester.get('fee.currency.USD')).toBe(1000);
339
+ expect(tester.get('income.statement.TRADE_PROFIT_SHORT')).toBe(-10000);
340
+ expect(tester.get('trade.short.NAKD')).toBe(0);
341
+ });
342
+ //# sourceMappingURL=TransferAnalyzer-buying-and-selling.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransferAnalyzer-buying-and-selling.spec.js","sourceRoot":"","sources":["../../../tests/TransferAnalyzer-buying-and-selling.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import { UnitTester } from '../src/testing';
2
+ test('Use partly debt to buy assets', async () => {
3
+ const tester = new UnitTester();
4
+ tester.addMoney('trade.currency.EUR', 10000);
5
+ // Set up debt account.
6
+ tester.set('account.debt.currency.EUR', '8001');
7
+ await tester.test(
8
+ // Buy 2.0 ETH for 200€ when we have only 100€ on the account.
9
+ [
10
+ {
11
+ reason: 'trade',
12
+ type: 'currency',
13
+ asset: 'EUR',
14
+ amount: -200
15
+ },
16
+ {
17
+ reason: 'trade',
18
+ type: 'crypto',
19
+ asset: 'ETH',
20
+ amount: 2.0
21
+ },
22
+ ], [[
23
+ {
24
+ account: 'trade.currency.EUR',
25
+ amount: -10000,
26
+ description: 'Buy +2 ETH',
27
+ },
28
+ {
29
+ account: 'trade.crypto.ETH',
30
+ amount: 20000,
31
+ data: {
32
+ stock: {
33
+ change: {
34
+ ETH: {
35
+ amount: 2,
36
+ value: 20000,
37
+ },
38
+ },
39
+ },
40
+ },
41
+ description: 'Buy +2 ETH',
42
+ },
43
+ {
44
+ account: 'debt.currency.EUR',
45
+ amount: -10000,
46
+ description: 'Buy +2 ETH',
47
+ },
48
+ ]]);
49
+ expect(tester.get('trade.currency.EUR')).toBe(0);
50
+ expect(tester.get('debt.currency.EUR')).toBe(-10000);
51
+ expect(tester.get('trade.crypto.ETH')).toBe(20000);
52
+ });
53
+ test('Use all debt to buy assets', async () => {
54
+ const tester = new UnitTester();
55
+ tester.addMoney('trade.currency.EUR', 0);
56
+ // Set up debt account.
57
+ tester.set('account.debt.currency.EUR', '8001');
58
+ await tester.test(
59
+ // Buy 2.0 ETH for 200€ when we have only 0€ on the account.
60
+ [
61
+ {
62
+ reason: 'trade',
63
+ type: 'currency',
64
+ asset: 'EUR',
65
+ amount: -200
66
+ },
67
+ {
68
+ reason: 'trade',
69
+ type: 'crypto',
70
+ asset: 'ETH',
71
+ amount: 2.0
72
+ },
73
+ ], [[
74
+ {
75
+ account: 'debt.currency.EUR',
76
+ amount: -20000,
77
+ description: 'Buy +2 ETH',
78
+ },
79
+ {
80
+ account: 'trade.crypto.ETH',
81
+ amount: 20000,
82
+ data: {
83
+ stock: {
84
+ change: {
85
+ ETH: {
86
+ amount: 2,
87
+ value: 20000,
88
+ },
89
+ },
90
+ },
91
+ },
92
+ description: 'Buy +2 ETH',
93
+ },
94
+ ]]);
95
+ expect(tester.get('trade.currency.EUR')).toBe(0);
96
+ expect(tester.get('debt.currency.EUR')).toBe(-20000);
97
+ expect(tester.get('trade.crypto.ETH')).toBe(20000);
98
+ });
99
+ test('Pay back debt more than fully', async () => {
100
+ const tester = new UnitTester();
101
+ tester.set('account.debt.currency.EUR', '8001');
102
+ tester.addMoney('debt.currency.EUR', -10000);
103
+ await tester.test(
104
+ // Deposit 200€ to account having -100€ debt.
105
+ [
106
+ {
107
+ reason: 'deposit',
108
+ type: 'external',
109
+ asset: 'EUR',
110
+ amount: -200
111
+ },
112
+ {
113
+ reason: 'deposit',
114
+ type: 'currency',
115
+ asset: 'EUR',
116
+ amount: 200
117
+ }
118
+ ], [[
119
+ {
120
+ account: 'deposit.external.EUR',
121
+ amount: -20000,
122
+ description: 'Deposit to Coinbase service',
123
+ },
124
+ {
125
+ account: 'deposit.currency.EUR',
126
+ amount: 10000,
127
+ description: 'Deposit to Coinbase service',
128
+ },
129
+ {
130
+ account: 'debt.currency.EUR',
131
+ amount: 10000,
132
+ description: 'Deposit to Coinbase service',
133
+ }
134
+ ]]);
135
+ expect(tester.get('deposit.external.EUR')).toBe(-20000);
136
+ expect(tester.get('deposit.currency.EUR')).toBe(10000);
137
+ expect(tester.get('debt.currency.EUR')).toBe(0);
138
+ });
139
+ test('Pay back partial debt', async () => {
140
+ const tester = new UnitTester();
141
+ tester.set('account.debt.currency.EUR', '8001');
142
+ tester.addMoney('debt.currency.EUR', -30000);
143
+ await tester.test(
144
+ // Deposit 200€ to account having -300€ debt.
145
+ [
146
+ {
147
+ reason: 'deposit',
148
+ type: 'external',
149
+ asset: 'EUR',
150
+ amount: -200
151
+ },
152
+ {
153
+ reason: 'deposit',
154
+ type: 'currency',
155
+ asset: 'EUR',
156
+ amount: 200
157
+ }
158
+ ], [[
159
+ {
160
+ account: 'deposit.external.EUR',
161
+ amount: -20000,
162
+ description: 'Deposit to Coinbase service',
163
+ },
164
+ {
165
+ account: 'debt.currency.EUR',
166
+ amount: 20000,
167
+ description: 'Deposit to Coinbase service',
168
+ }
169
+ ]]);
170
+ expect(tester.get('deposit.external.EUR')).toBe(-20000);
171
+ expect(tester.get('deposit.currency.EUR')).toBe(0);
172
+ expect(tester.get('debt.currency.EUR')).toBe(-10000);
173
+ });
174
+ //# sourceMappingURL=TransferAnalyzer-loans.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransferAnalyzer-loans.spec.js","sourceRoot":"","sources":["../../../tests/TransferAnalyzer-loans.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IAE/C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;IAE/B,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;IAC5C,uBAAuB;IACvB,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;IAE/C,MAAM,MAAM,CAAC,IAAI;IACf,8DAA8D;IAC9D;QACE;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,GAAG;SACb;QACD;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,GAAG;SACZ;KACF,EAAE,CAAC;YACF;gBACE,OAAO,EAAE,oBAAoB;gBAC7B,MAAM,EAAE,CAAC,KAAK;gBACd,WAAW,EAAE,YAAY;aAC1B;YACD;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL,MAAM,EAAE;4BACN,GAAG,EAAE;gCACH,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,KAAK;6BACb;yBACF;qBACF;iBACF;gBACD,WAAW,EAAE,YAAY;aAC1B;YACD;gBACE,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,CAAC,KAAK;gBACd,WAAW,EAAE,YAAY;aAC1B;SACF,CAAC,CACH,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAE5C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;IAE/B,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAA;IACxC,uBAAuB;IACvB,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;IAE/C,MAAM,MAAM,CAAC,IAAI;IACf,4DAA4D;IAC5D;QACE;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,GAAG;SACb;QACD;YACE,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,GAAG;SACZ;KACF,EAAE,CAAC;YACF;gBACE,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,CAAC,KAAK;gBACd,WAAW,EAAE,YAAY;aAC1B;YACD;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE;oBACJ,KAAK,EAAE;wBACL,MAAM,EAAE;4BACN,GAAG,EAAE;gCACH,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,KAAK;6BACb;yBACF;qBACF;iBACF;gBACD,WAAW,EAAE,YAAY;aAC1B;SACF,CAAC,CACH,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IACpD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IAE/C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;IAE/B,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAA;IAE5C,MAAM,MAAM,CAAC,IAAI;IACf,6CAA6C;IAC7C;QACE;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,GAAG;SACb;QACD;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,GAAG;SACZ;KACF,EAAE,CAAC;YACF;gBACE,OAAO,EAAE,sBAAsB;gBAC/B,MAAM,EAAE,CAAC,KAAK;gBACd,WAAW,EAAE,6BAA6B;aAC3C;YACD;gBACE,OAAO,EAAE,sBAAsB;gBAC/B,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,6BAA6B;aAC3C;YACD;gBACE,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,6BAA6B;aAC3C;SACF,CAAC,CACH,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACtD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IAEvC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAA;IAE/B,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAA;IAC/C,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAA;IAE5C,MAAM,MAAM,CAAC,IAAI;IACf,6CAA6C;IAC7C;QACE;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,GAAG;SACb;QACD;YACE,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,GAAG;SACZ;KACF,EAAE,CAAC;YACF;gBACE,OAAO,EAAE,sBAAsB;gBAC/B,MAAM,EAAE,CAAC,KAAK;gBACd,WAAW,EAAE,6BAA6B;aAC3C;YACD;gBACE,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,6BAA6B;aAC3C;SACF,CAAC,CACH,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;AACtD,CAAC,CAAC,CAAA"}