codereview-aia 0.1.3 → 0.1.4

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 (549) hide show
  1. package/dist/analysis/FindingsExtractor.d.ts +105 -0
  2. package/dist/analysis/FindingsExtractor.js +363 -0
  3. package/dist/analysis/FindingsExtractor.js.map +1 -0
  4. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.d.ts +111 -0
  5. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js +215 -0
  6. package/dist/analysis/ai-detection/analyzers/BaseAnalyzer.js.map +1 -0
  7. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.d.ts +142 -0
  8. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js +503 -0
  9. package/dist/analysis/ai-detection/analyzers/DocumentationAnalyzer.js.map +1 -0
  10. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.d.ts +88 -0
  11. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js +343 -0
  12. package/dist/analysis/ai-detection/analyzers/GitHistoryAnalyzer.js.map +1 -0
  13. package/dist/analysis/ai-detection/core/AIDetectionEngine.d.ts +104 -0
  14. package/dist/analysis/ai-detection/core/AIDetectionEngine.js +369 -0
  15. package/dist/analysis/ai-detection/core/AIDetectionEngine.js.map +1 -0
  16. package/dist/analysis/ai-detection/types/DetectionTypes.d.ts +364 -0
  17. package/dist/analysis/ai-detection/types/DetectionTypes.js +32 -0
  18. package/dist/analysis/ai-detection/types/DetectionTypes.js.map +1 -0
  19. package/dist/analysis/ai-detection/utils/SubmissionConverter.d.ts +97 -0
  20. package/dist/analysis/ai-detection/utils/SubmissionConverter.js +339 -0
  21. package/dist/analysis/ai-detection/utils/SubmissionConverter.js.map +1 -0
  22. package/dist/analysis/context/ReviewContext.d.ts +184 -0
  23. package/dist/analysis/context/ReviewContext.js +294 -0
  24. package/dist/analysis/context/ReviewContext.js.map +1 -0
  25. package/{src/analysis/context/index.ts → dist/analysis/context/index.d.ts} +0 -1
  26. package/dist/analysis/context/index.js +23 -0
  27. package/dist/analysis/context/index.js.map +1 -0
  28. package/{src/analysis/index.ts → dist/analysis/index.d.ts} +0 -1
  29. package/dist/analysis/index.js +24 -0
  30. package/dist/analysis/index.js.map +1 -0
  31. package/dist/analysis/static/wpPhpcsRunner.d.ts +11 -0
  32. package/dist/analysis/static/wpPhpcsRunner.js +219 -0
  33. package/dist/analysis/static/wpPhpcsRunner.js.map +1 -0
  34. package/dist/analysis/tokens/TokenAnalysisFormatter.d.ts +27 -0
  35. package/{src/analysis/tokens/TokenAnalysisFormatter.ts → dist/analysis/tokens/TokenAnalysisFormatter.js} +64 -75
  36. package/dist/analysis/tokens/TokenAnalysisFormatter.js.map +1 -0
  37. package/dist/analysis/tokens/TokenAnalyzer.d.ts +155 -0
  38. package/dist/analysis/tokens/TokenAnalyzer.js +502 -0
  39. package/dist/analysis/tokens/TokenAnalyzer.js.map +1 -0
  40. package/{src/analysis/tokens/index.ts → dist/analysis/tokens/index.d.ts} +0 -1
  41. package/dist/analysis/tokens/index.js +24 -0
  42. package/dist/analysis/tokens/index.js.map +1 -0
  43. package/dist/clients/base/abstractClient.d.ts +99 -0
  44. package/dist/clients/base/abstractClient.js +98 -0
  45. package/dist/clients/base/abstractClient.js.map +1 -0
  46. package/dist/clients/base/httpClient.d.ts +24 -0
  47. package/dist/clients/base/httpClient.js +147 -0
  48. package/dist/clients/base/httpClient.js.map +1 -0
  49. package/{src/clients/base/index.ts → dist/clients/base/index.d.ts} +0 -1
  50. package/dist/clients/base/index.js +28 -0
  51. package/dist/clients/base/index.js.map +1 -0
  52. package/dist/clients/base/modelDetection.d.ts +41 -0
  53. package/dist/clients/base/modelDetection.js +88 -0
  54. package/dist/clients/base/modelDetection.js.map +1 -0
  55. package/dist/clients/base/responseProcessor.d.ts +45 -0
  56. package/dist/clients/base/responseProcessor.js +495 -0
  57. package/dist/clients/base/responseProcessor.js.map +1 -0
  58. package/dist/clients/factory/clientFactory.d.ts +23 -0
  59. package/dist/clients/factory/clientFactory.js +50 -0
  60. package/dist/clients/factory/clientFactory.js.map +1 -0
  61. package/{src/clients/factory/index.ts → dist/clients/factory/index.d.ts} +0 -1
  62. package/dist/clients/factory/index.js +24 -0
  63. package/dist/clients/factory/index.js.map +1 -0
  64. package/{src/clients/implementations/index.ts → dist/clients/implementations/index.d.ts} +0 -1
  65. package/dist/clients/implementations/index.js +24 -0
  66. package/dist/clients/implementations/index.js.map +1 -0
  67. package/dist/clients/implementations/openRouterClient.d.ts +69 -0
  68. package/dist/clients/implementations/openRouterClient.js +294 -0
  69. package/dist/clients/implementations/openRouterClient.js.map +1 -0
  70. package/dist/clients/openRouterClient.d.ts +42 -0
  71. package/dist/clients/openRouterClient.js +738 -0
  72. package/dist/clients/openRouterClient.js.map +1 -0
  73. package/{src/clients/openRouterClientWrapper.ts → dist/clients/openRouterClientWrapper.d.ts} +2 -24
  74. package/dist/clients/openRouterClientWrapper.js +64 -0
  75. package/dist/clients/openRouterClientWrapper.js.map +1 -0
  76. package/dist/clients/utils/directoryStructure.d.ts +14 -0
  77. package/dist/clients/utils/directoryStructure.js +48 -0
  78. package/dist/clients/utils/directoryStructure.js.map +1 -0
  79. package/{src/clients/utils/index.ts → dist/clients/utils/index.d.ts} +0 -1
  80. package/dist/clients/utils/index.js +31 -0
  81. package/dist/clients/utils/index.js.map +1 -0
  82. package/dist/clients/utils/languageDetection.d.ts +13 -0
  83. package/dist/clients/utils/languageDetection.js +46 -0
  84. package/dist/clients/utils/languageDetection.js.map +1 -0
  85. package/dist/clients/utils/promptFormatter.d.ts +37 -0
  86. package/dist/clients/utils/promptFormatter.js +150 -0
  87. package/dist/clients/utils/promptFormatter.js.map +1 -0
  88. package/{src/clients/utils/promptLoader.ts → dist/clients/utils/promptLoader.d.ts} +1 -27
  89. package/dist/clients/utils/promptLoader.js +49 -0
  90. package/dist/clients/utils/promptLoader.js.map +1 -0
  91. package/dist/clients/utils/tokenCounter.d.ts +81 -0
  92. package/dist/clients/utils/tokenCounter.js +209 -0
  93. package/dist/clients/utils/tokenCounter.js.map +1 -0
  94. package/dist/core/ApiClientSelector.d.ts +8 -0
  95. package/dist/core/ApiClientSelector.js +29 -0
  96. package/dist/core/ApiClientSelector.js.map +1 -0
  97. package/dist/core/ConfigurationService.d.ts +307 -0
  98. package/dist/core/ConfigurationService.js +516 -0
  99. package/dist/core/ConfigurationService.js.map +1 -0
  100. package/dist/core/ConsolidationService.d.ts +99 -0
  101. package/dist/core/ConsolidationService.js +341 -0
  102. package/dist/core/ConsolidationService.js.map +1 -0
  103. package/dist/core/InteractiveDisplayManager.d.ts +22 -0
  104. package/dist/core/InteractiveDisplayManager.js +70 -0
  105. package/dist/core/InteractiveDisplayManager.js.map +1 -0
  106. package/dist/core/OutputManager.d.ts +26 -0
  107. package/dist/core/OutputManager.js +217 -0
  108. package/dist/core/OutputManager.js.map +1 -0
  109. package/dist/core/ReviewGenerator.d.ts +13 -0
  110. package/dist/core/ReviewGenerator.js +102 -0
  111. package/dist/core/ReviewGenerator.js.map +1 -0
  112. package/dist/core/fileDiscovery.d.ts +35 -0
  113. package/dist/core/fileDiscovery.js +202 -0
  114. package/dist/core/fileDiscovery.js.map +1 -0
  115. package/dist/core/handlers/EstimationHandler.d.ts +18 -0
  116. package/dist/core/handlers/EstimationHandler.js +110 -0
  117. package/dist/core/handlers/EstimationHandler.js.map +1 -0
  118. package/dist/core/handlers/FileProcessingHandler.d.ts +31 -0
  119. package/dist/core/handlers/FileProcessingHandler.js +164 -0
  120. package/dist/core/handlers/FileProcessingHandler.js.map +1 -0
  121. package/dist/core/handlers/OutputHandler.d.ts +27 -0
  122. package/dist/core/handlers/OutputHandler.js +127 -0
  123. package/dist/core/handlers/OutputHandler.js.map +1 -0
  124. package/dist/core/handlers/ReviewExecutor.d.ts +32 -0
  125. package/dist/core/handlers/ReviewExecutor.js +111 -0
  126. package/dist/core/handlers/ReviewExecutor.js.map +1 -0
  127. package/dist/core/reviewOrchestrator.d.ts +24 -0
  128. package/dist/core/reviewOrchestrator.js +354 -0
  129. package/dist/core/reviewOrchestrator.js.map +1 -0
  130. package/dist/core/utils/ModelInfoUtils.d.ts +16 -0
  131. package/dist/core/utils/ModelInfoUtils.js +54 -0
  132. package/dist/core/utils/ModelInfoUtils.js.map +1 -0
  133. package/{src/formatters/outputFormatter.ts → dist/formatters/outputFormatter.d.ts} +2 -33
  134. package/dist/formatters/outputFormatter.js +65 -0
  135. package/dist/formatters/outputFormatter.js.map +1 -0
  136. package/dist/formatters/utils/IssueFormatters.d.ts +20 -0
  137. package/dist/formatters/utils/IssueFormatters.js +67 -0
  138. package/dist/formatters/utils/IssueFormatters.js.map +1 -0
  139. package/dist/formatters/utils/JsonFormatter.d.ts +13 -0
  140. package/dist/formatters/utils/JsonFormatter.js +57 -0
  141. package/dist/formatters/utils/JsonFormatter.js.map +1 -0
  142. package/dist/formatters/utils/MarkdownFormatters.d.ts +51 -0
  143. package/dist/formatters/utils/MarkdownFormatters.js +456 -0
  144. package/dist/formatters/utils/MarkdownFormatters.js.map +1 -0
  145. package/dist/formatters/utils/MetadataFormatter.d.ts +65 -0
  146. package/dist/formatters/utils/MetadataFormatter.js +219 -0
  147. package/dist/formatters/utils/MetadataFormatter.js.map +1 -0
  148. package/dist/formatters/utils/ModelInfoExtractor.d.ts +33 -0
  149. package/dist/formatters/utils/ModelInfoExtractor.js +111 -0
  150. package/dist/formatters/utils/ModelInfoExtractor.js.map +1 -0
  151. package/dist/index.d.ts +1 -0
  152. package/dist/index.js.map +1 -0
  153. package/dist/plugins/PluginInterface.d.ts +44 -0
  154. package/dist/plugins/PluginInterface.js +9 -0
  155. package/dist/plugins/PluginInterface.js.map +1 -0
  156. package/dist/plugins/PluginManager.d.ts +51 -0
  157. package/dist/plugins/PluginManager.js +151 -0
  158. package/dist/plugins/PluginManager.js.map +1 -0
  159. package/dist/prompts/PromptManager.d.ts +30 -0
  160. package/dist/prompts/PromptManager.js +62 -0
  161. package/dist/prompts/PromptManager.js.map +1 -0
  162. package/dist/prompts/cache/PromptCache.d.ts +32 -0
  163. package/dist/prompts/cache/PromptCache.js +48 -0
  164. package/dist/prompts/cache/PromptCache.js.map +1 -0
  165. package/dist/runtime/auth/service.d.ts +2 -0
  166. package/dist/runtime/auth/service.js +41 -0
  167. package/dist/runtime/auth/service.js.map +1 -0
  168. package/dist/runtime/auth/session.d.ts +5 -0
  169. package/dist/runtime/auth/session.js +87 -0
  170. package/dist/runtime/auth/session.js.map +1 -0
  171. package/dist/runtime/auth/types.d.ts +9 -0
  172. package/dist/runtime/auth/types.js +3 -0
  173. package/dist/runtime/auth/types.js.map +1 -0
  174. package/dist/runtime/cliEntry.d.ts +1 -0
  175. package/dist/runtime/cliEntry.js +266 -0
  176. package/dist/runtime/cliEntry.js.map +1 -0
  177. package/dist/runtime/debug/logManager.d.ts +5 -0
  178. package/dist/runtime/debug/logManager.js +31 -0
  179. package/dist/runtime/debug/logManager.js.map +1 -0
  180. package/dist/runtime/errors.d.ts +5 -0
  181. package/dist/runtime/errors.js +15 -0
  182. package/dist/runtime/errors.js.map +1 -0
  183. package/dist/runtime/fileCollector.d.ts +14 -0
  184. package/dist/runtime/fileCollector.js +382 -0
  185. package/dist/runtime/fileCollector.js.map +1 -0
  186. package/dist/runtime/manifest.d.ts +1 -0
  187. package/dist/runtime/manifest.js +65 -0
  188. package/dist/runtime/manifest.js.map +1 -0
  189. package/dist/runtime/openrouterProxy.d.ts +4 -0
  190. package/dist/runtime/openrouterProxy.js +43 -0
  191. package/dist/runtime/openrouterProxy.js.map +1 -0
  192. package/dist/runtime/preprod/webCheck.d.ts +1 -0
  193. package/dist/runtime/preprod/webCheck.js +98 -0
  194. package/dist/runtime/preprod/webCheck.js.map +1 -0
  195. package/dist/runtime/proxyConfig.d.ts +6 -0
  196. package/dist/runtime/proxyConfig.js +86 -0
  197. package/dist/runtime/proxyConfig.js.map +1 -0
  198. package/dist/runtime/proxyEnvironment.d.ts +3 -0
  199. package/dist/runtime/proxyEnvironment.js +63 -0
  200. package/dist/runtime/proxyEnvironment.js.map +1 -0
  201. package/dist/runtime/reportMerge.d.ts +30 -0
  202. package/dist/runtime/reportMerge.js +70 -0
  203. package/dist/runtime/reportMerge.js.map +1 -0
  204. package/dist/runtime/reporting/markdownReportBuilder.d.ts +17 -0
  205. package/dist/runtime/reporting/markdownReportBuilder.js +154 -0
  206. package/dist/runtime/reporting/markdownReportBuilder.js.map +1 -0
  207. package/dist/runtime/reporting/reportDataCollector.d.ts +31 -0
  208. package/dist/runtime/reporting/reportDataCollector.js +170 -0
  209. package/dist/runtime/reporting/reportDataCollector.js.map +1 -0
  210. package/dist/runtime/reporting/summaryGenerator.d.ts +10 -0
  211. package/dist/runtime/reporting/summaryGenerator.js +67 -0
  212. package/dist/runtime/reporting/summaryGenerator.js.map +1 -0
  213. package/dist/runtime/reviewPipeline.d.ts +47 -0
  214. package/dist/runtime/reviewPipeline.js +161 -0
  215. package/dist/runtime/reviewPipeline.js.map +1 -0
  216. package/dist/runtime/runAiCodeReview.d.ts +28 -0
  217. package/dist/runtime/runAiCodeReview.js +373 -0
  218. package/dist/runtime/runAiCodeReview.js.map +1 -0
  219. package/dist/runtime/runtimeConfig.d.ts +4 -0
  220. package/dist/runtime/runtimeConfig.js +7 -0
  221. package/dist/runtime/runtimeConfig.js.map +1 -0
  222. package/dist/runtime/ui/Layout.d.ts +11 -0
  223. package/dist/runtime/ui/Layout.js +47 -0
  224. package/dist/runtime/ui/Layout.js.map +1 -0
  225. package/dist/runtime/ui/RuntimeApp.d.ts +6 -0
  226. package/dist/runtime/ui/RuntimeApp.js +172 -0
  227. package/dist/runtime/ui/RuntimeApp.js.map +1 -0
  228. package/dist/runtime/ui/inkModules.d.ts +10 -0
  229. package/dist/runtime/ui/inkModules.js +63 -0
  230. package/dist/runtime/ui/inkModules.js.map +1 -0
  231. package/dist/runtime/ui/screens/AuthScreen.d.ts +6 -0
  232. package/dist/runtime/ui/screens/AuthScreen.js +67 -0
  233. package/dist/runtime/ui/screens/AuthScreen.js.map +1 -0
  234. package/dist/runtime/ui/screens/ModeSelection.d.ts +10 -0
  235. package/dist/runtime/ui/screens/ModeSelection.js +100 -0
  236. package/dist/runtime/ui/screens/ModeSelection.js.map +1 -0
  237. package/dist/runtime/ui/screens/ProgressScreen.d.ts +12 -0
  238. package/dist/runtime/ui/screens/ProgressScreen.js +64 -0
  239. package/dist/runtime/ui/screens/ProgressScreen.js.map +1 -0
  240. package/dist/runtime/ui/screens/ResultsScreen.d.ts +7 -0
  241. package/dist/runtime/ui/screens/ResultsScreen.js +29 -0
  242. package/dist/runtime/ui/screens/ResultsScreen.js.map +1 -0
  243. package/dist/strategies/ArchitecturalReviewStrategy.d.ts +29 -0
  244. package/dist/strategies/ArchitecturalReviewStrategy.js +42 -0
  245. package/dist/strategies/ArchitecturalReviewStrategy.js.map +1 -0
  246. package/dist/strategies/CodingTestReviewStrategy.d.ts +194 -0
  247. package/dist/strategies/CodingTestReviewStrategy.js +681 -0
  248. package/dist/strategies/CodingTestReviewStrategy.js.map +1 -0
  249. package/dist/strategies/ConsolidatedReviewStrategy.d.ts +25 -0
  250. package/dist/strategies/ConsolidatedReviewStrategy.js +45 -0
  251. package/dist/strategies/ConsolidatedReviewStrategy.js.map +1 -0
  252. package/dist/strategies/ExtractPatternsReviewStrategy.d.ts +30 -0
  253. package/dist/strategies/ExtractPatternsReviewStrategy.js +51 -0
  254. package/dist/strategies/ExtractPatternsReviewStrategy.js.map +1 -0
  255. package/dist/strategies/MultiPassReviewStrategy.d.ts +86 -0
  256. package/dist/strategies/MultiPassReviewStrategy.js +590 -0
  257. package/dist/strategies/MultiPassReviewStrategy.js.map +1 -0
  258. package/dist/strategies/ReviewStrategy.d.ts +45 -0
  259. package/dist/strategies/ReviewStrategy.js +24 -0
  260. package/dist/strategies/ReviewStrategy.js.map +1 -0
  261. package/dist/strategies/StrategyFactory.d.ts +19 -0
  262. package/dist/strategies/StrategyFactory.js +72 -0
  263. package/dist/strategies/StrategyFactory.js.map +1 -0
  264. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +0 -1
  265. package/dist/strategies/index.js +30 -0
  266. package/dist/strategies/index.js.map +1 -0
  267. package/dist/tokenizers/baseTokenizer.d.ts +25 -0
  268. package/dist/tokenizers/baseTokenizer.js +48 -0
  269. package/dist/tokenizers/baseTokenizer.js.map +1 -0
  270. package/dist/tokenizers/gptTokenizer.d.ts +7 -0
  271. package/dist/tokenizers/gptTokenizer.js +28 -0
  272. package/dist/tokenizers/gptTokenizer.js.map +1 -0
  273. package/{src/tokenizers/index.ts → dist/tokenizers/index.d.ts} +0 -1
  274. package/dist/tokenizers/index.js +24 -0
  275. package/dist/tokenizers/index.js.map +1 -0
  276. package/dist/types/apiResponses.d.ts +39 -0
  277. package/dist/types/apiResponses.js +9 -0
  278. package/dist/types/apiResponses.js.map +1 -0
  279. package/dist/types/cli.d.ts +22 -0
  280. package/dist/types/cli.js +3 -0
  281. package/dist/types/cli.js.map +1 -0
  282. package/{src/types/common.ts → dist/types/common.d.ts} +2 -19
  283. package/dist/types/common.js +14 -0
  284. package/dist/types/common.js.map +1 -0
  285. package/dist/types/configuration.d.ts +682 -0
  286. package/dist/types/configuration.js +65 -0
  287. package/dist/types/configuration.js.map +1 -0
  288. package/dist/types/review.d.ts +318 -0
  289. package/dist/types/review.js +8 -0
  290. package/dist/types/review.js.map +1 -0
  291. package/dist/types/reviewSchema.d.ts +543 -0
  292. package/{src/types/reviewSchema.ts → dist/types/reviewSchema.js} +44 -104
  293. package/dist/types/reviewSchema.js.map +1 -0
  294. package/dist/types/structuredReview.d.ts +119 -0
  295. package/dist/types/structuredReview.js +6 -0
  296. package/dist/types/structuredReview.js.map +1 -0
  297. package/dist/types/tokenAnalysis.d.ts +44 -0
  298. package/dist/types/tokenAnalysis.js +4 -0
  299. package/dist/types/tokenAnalysis.js.map +1 -0
  300. package/dist/utils/FileReader.d.ts +33 -0
  301. package/dist/utils/FileReader.js +88 -0
  302. package/dist/utils/FileReader.js.map +1 -0
  303. package/dist/utils/FileWriter.d.ts +26 -0
  304. package/dist/utils/FileWriter.js +76 -0
  305. package/dist/utils/FileWriter.js.map +1 -0
  306. package/dist/utils/PathGenerator.d.ts +30 -0
  307. package/dist/utils/PathGenerator.js +82 -0
  308. package/dist/utils/PathGenerator.js.map +1 -0
  309. package/dist/utils/api/apiUtils.d.ts +3 -0
  310. package/dist/utils/api/apiUtils.js +20 -0
  311. package/dist/utils/api/apiUtils.js.map +1 -0
  312. package/dist/utils/api/index.js +18 -0
  313. package/dist/utils/api/index.js.map +1 -0
  314. package/dist/utils/apiErrorHandler.d.ts +130 -0
  315. package/dist/utils/apiErrorHandler.js +256 -0
  316. package/dist/utils/apiErrorHandler.js.map +1 -0
  317. package/dist/utils/ciDataCollector.d.ts +51 -0
  318. package/dist/utils/ciDataCollector.js +197 -0
  319. package/dist/utils/ciDataCollector.js.map +1 -0
  320. package/dist/utils/codingTestConfigLoader.d.ts +66 -0
  321. package/dist/utils/codingTestConfigLoader.js +420 -0
  322. package/dist/utils/codingTestConfigLoader.js.map +1 -0
  323. package/dist/utils/dependencies/aiDependencyAnalyzer.d.ts +30 -0
  324. package/dist/utils/dependencies/aiDependencyAnalyzer.js +343 -0
  325. package/dist/utils/dependencies/aiDependencyAnalyzer.js.map +1 -0
  326. package/dist/utils/detection/frameworkDetector.d.ts +43 -0
  327. package/dist/utils/detection/frameworkDetector.js +850 -0
  328. package/dist/utils/detection/frameworkDetector.js.map +1 -0
  329. package/{src/utils/detection/index.ts → dist/utils/detection/index.d.ts} +0 -1
  330. package/dist/utils/detection/index.js +28 -0
  331. package/dist/utils/detection/index.js.map +1 -0
  332. package/dist/utils/detection/projectTypeDetector.d.ts +27 -0
  333. package/dist/utils/detection/projectTypeDetector.js +469 -0
  334. package/dist/utils/detection/projectTypeDetector.js.map +1 -0
  335. package/dist/utils/diagramGenerator.d.ts +49 -0
  336. package/dist/utils/diagramGenerator.js +218 -0
  337. package/dist/utils/diagramGenerator.js.map +1 -0
  338. package/dist/utils/errorLogger.d.ts +24 -0
  339. package/dist/utils/errorLogger.js +59 -0
  340. package/dist/utils/errorLogger.js.map +1 -0
  341. package/dist/utils/estimationUtils.d.ts +139 -0
  342. package/dist/utils/estimationUtils.js +329 -0
  343. package/dist/utils/estimationUtils.js.map +1 -0
  344. package/dist/utils/fileFilters.d.ts +72 -0
  345. package/dist/utils/fileFilters.js +338 -0
  346. package/dist/utils/fileFilters.js.map +1 -0
  347. package/dist/utils/fileSystem.d.ts +22 -0
  348. package/dist/utils/fileSystem.js +45 -0
  349. package/dist/utils/fileSystem.js.map +1 -0
  350. package/{src/utils/index.ts → dist/utils/index.d.ts} +0 -14
  351. package/dist/utils/index.js +52 -0
  352. package/dist/utils/index.js.map +1 -0
  353. package/dist/utils/logger.d.ts +77 -0
  354. package/dist/utils/logger.js +271 -0
  355. package/dist/utils/logger.js.map +1 -0
  356. package/dist/utils/pathValidator.d.ts +40 -0
  357. package/dist/utils/pathValidator.js +98 -0
  358. package/dist/utils/pathValidator.js.map +1 -0
  359. package/{src/utils/priorityFilter.ts → dist/utils/priorityFilter.d.ts} +1 -26
  360. package/dist/utils/priorityFilter.js +54 -0
  361. package/dist/utils/priorityFilter.js.map +1 -0
  362. package/dist/utils/projectDocs.d.ts +47 -0
  363. package/dist/utils/projectDocs.js +158 -0
  364. package/dist/utils/projectDocs.js.map +1 -0
  365. package/dist/utils/promptPaths.d.ts +6 -0
  366. package/dist/utils/promptPaths.js +33 -0
  367. package/dist/utils/promptPaths.js.map +1 -0
  368. package/dist/utils/promptTemplateManager.d.ts +34 -0
  369. package/dist/utils/promptTemplateManager.js +141 -0
  370. package/dist/utils/promptTemplateManager.js.map +1 -0
  371. package/dist/utils/review/consolidateReview.d.ts +15 -0
  372. package/dist/utils/review/consolidateReview.js +481 -0
  373. package/dist/utils/review/consolidateReview.js.map +1 -0
  374. package/dist/utils/review/fixDisplay.d.ts +20 -0
  375. package/dist/utils/review/fixDisplay.js +84 -0
  376. package/dist/utils/review/fixDisplay.js.map +1 -0
  377. package/dist/utils/review/fixImplementation.d.ts +28 -0
  378. package/dist/utils/review/fixImplementation.js +60 -0
  379. package/dist/utils/review/fixImplementation.js.map +1 -0
  380. package/dist/utils/review/index.d.ts +13 -0
  381. package/dist/utils/review/index.js +50 -0
  382. package/dist/utils/review/index.js.map +1 -0
  383. package/dist/utils/review/interactiveProcessing.d.ts +25 -0
  384. package/dist/utils/review/interactiveProcessing.js +251 -0
  385. package/dist/utils/review/interactiveProcessing.js.map +1 -0
  386. package/dist/utils/review/progressTracker.d.ts +106 -0
  387. package/dist/utils/review/progressTracker.js +227 -0
  388. package/dist/utils/review/progressTracker.js.map +1 -0
  389. package/dist/utils/review/reviewExtraction.d.ts +31 -0
  390. package/dist/utils/review/reviewExtraction.js +324 -0
  391. package/dist/utils/review/reviewExtraction.js.map +1 -0
  392. package/dist/utils/review/types.d.ts +45 -0
  393. package/dist/utils/review/types.js +18 -0
  394. package/dist/utils/review/types.js.map +1 -0
  395. package/{src/utils/reviewActionHandler.ts → dist/utils/reviewActionHandler.d.ts} +0 -2
  396. package/dist/utils/reviewActionHandler.js +34 -0
  397. package/dist/utils/reviewActionHandler.js.map +1 -0
  398. package/dist/utils/reviewParser.d.ts +34 -0
  399. package/dist/utils/reviewParser.js +218 -0
  400. package/dist/utils/reviewParser.js.map +1 -0
  401. package/dist/utils/sanitizer.d.ts +82 -0
  402. package/dist/utils/sanitizer.js +239 -0
  403. package/dist/utils/sanitizer.js.map +1 -0
  404. package/dist/utils/smartFileSelector.d.ts +50 -0
  405. package/dist/utils/smartFileSelector.js +261 -0
  406. package/dist/utils/smartFileSelector.js.map +1 -0
  407. package/dist/utils/templateLoader.d.ts +44 -0
  408. package/dist/utils/templateLoader.js +431 -0
  409. package/dist/utils/templateLoader.js.map +1 -0
  410. package/dist/utils/treeGenerator.d.ts +12 -0
  411. package/dist/utils/treeGenerator.js +133 -0
  412. package/dist/utils/treeGenerator.js.map +1 -0
  413. package/package.json +5 -2
  414. package/.cr-aia.yml +0 -23
  415. package/.crignore +0 -0
  416. package/docs/opt-in-full-context.md +0 -27
  417. package/reports/cr-cr-aia-17-11-2025-20-13.md +0 -354
  418. package/src/analysis/FindingsExtractor.ts +0 -431
  419. package/src/analysis/ai-detection/analyzers/BaseAnalyzer.ts +0 -267
  420. package/src/analysis/ai-detection/analyzers/DocumentationAnalyzer.ts +0 -622
  421. package/src/analysis/ai-detection/analyzers/GitHistoryAnalyzer.ts +0 -430
  422. package/src/analysis/ai-detection/core/AIDetectionEngine.ts +0 -467
  423. package/src/analysis/ai-detection/types/DetectionTypes.ts +0 -406
  424. package/src/analysis/ai-detection/utils/SubmissionConverter.ts +0 -390
  425. package/src/analysis/context/ReviewContext.ts +0 -378
  426. package/src/analysis/tokens/TokenAnalyzer.ts +0 -747
  427. package/src/clients/base/abstractClient.ts +0 -190
  428. package/src/clients/base/httpClient.ts +0 -160
  429. package/src/clients/base/modelDetection.ts +0 -107
  430. package/src/clients/base/responseProcessor.ts +0 -586
  431. package/src/clients/factory/clientFactory.ts +0 -55
  432. package/src/clients/implementations/openRouterClient.ts +0 -413
  433. package/src/clients/openRouterClient.ts +0 -870
  434. package/src/clients/utils/directoryStructure.ts +0 -52
  435. package/src/clients/utils/languageDetection.ts +0 -44
  436. package/src/clients/utils/promptFormatter.ts +0 -182
  437. package/src/clients/utils/tokenCounter.ts +0 -297
  438. package/src/core/ApiClientSelector.ts +0 -37
  439. package/src/core/ConfigurationService.ts +0 -591
  440. package/src/core/ConsolidationService.ts +0 -423
  441. package/src/core/InteractiveDisplayManager.ts +0 -81
  442. package/src/core/OutputManager.ts +0 -275
  443. package/src/core/ReviewGenerator.ts +0 -140
  444. package/src/core/fileDiscovery.ts +0 -237
  445. package/src/core/handlers/EstimationHandler.ts +0 -104
  446. package/src/core/handlers/FileProcessingHandler.ts +0 -210
  447. package/src/core/handlers/OutputHandler.ts +0 -125
  448. package/src/core/handlers/ReviewExecutor.ts +0 -104
  449. package/src/core/reviewOrchestrator.ts +0 -333
  450. package/src/core/utils/ModelInfoUtils.ts +0 -56
  451. package/src/formatters/utils/IssueFormatters.ts +0 -83
  452. package/src/formatters/utils/JsonFormatter.ts +0 -77
  453. package/src/formatters/utils/MarkdownFormatters.ts +0 -609
  454. package/src/formatters/utils/MetadataFormatter.ts +0 -269
  455. package/src/formatters/utils/ModelInfoExtractor.ts +0 -115
  456. package/src/index.ts +0 -25
  457. package/src/plugins/PluginInterface.ts +0 -50
  458. package/src/plugins/PluginManager.ts +0 -126
  459. package/src/prompts/PromptManager.ts +0 -69
  460. package/src/prompts/cache/PromptCache.ts +0 -50
  461. package/src/prompts/promptText/common/variables/css-frameworks.json +0 -33
  462. package/src/prompts/promptText/common/variables/framework-versions.json +0 -45
  463. package/src/prompts/promptText/frameworks/react/comprehensive.hbs +0 -19
  464. package/src/prompts/promptText/languages/css/comprehensive.hbs +0 -18
  465. package/src/prompts/promptText/languages/generic/comprehensive.hbs +0 -20
  466. package/src/prompts/promptText/languages/html/comprehensive.hbs +0 -18
  467. package/src/prompts/promptText/languages/javascript/comprehensive.hbs +0 -18
  468. package/src/prompts/promptText/languages/python/comprehensive.hbs +0 -18
  469. package/src/prompts/promptText/languages/typescript/comprehensive.hbs +0 -18
  470. package/src/runtime/auth/service.ts +0 -58
  471. package/src/runtime/auth/session.ts +0 -103
  472. package/src/runtime/auth/types.ts +0 -11
  473. package/src/runtime/cliEntry.ts +0 -214
  474. package/src/runtime/debug/logManager.ts +0 -37
  475. package/src/runtime/errors.ts +0 -13
  476. package/src/runtime/fileCollector.ts +0 -495
  477. package/src/runtime/manifest.ts +0 -64
  478. package/src/runtime/openrouterProxy.ts +0 -45
  479. package/src/runtime/preprod/webCheck.ts +0 -104
  480. package/src/runtime/proxyConfig.ts +0 -94
  481. package/src/runtime/proxyEnvironment.ts +0 -71
  482. package/src/runtime/reportMerge.ts +0 -102
  483. package/src/runtime/reporting/markdownReportBuilder.ts +0 -138
  484. package/src/runtime/reporting/reportDataCollector.ts +0 -234
  485. package/src/runtime/reporting/summaryGenerator.ts +0 -86
  486. package/src/runtime/reviewPipeline.ts +0 -200
  487. package/src/runtime/runAiCodeReview.ts +0 -308
  488. package/src/runtime/runtimeConfig.ts +0 -5
  489. package/src/runtime/ui/Layout.tsx +0 -57
  490. package/src/runtime/ui/RuntimeApp.tsx +0 -262
  491. package/src/runtime/ui/inkModules.ts +0 -73
  492. package/src/runtime/ui/screens/AuthScreen.tsx +0 -128
  493. package/src/runtime/ui/screens/ModeSelection.tsx +0 -185
  494. package/src/runtime/ui/screens/ProgressScreen.tsx +0 -110
  495. package/src/runtime/ui/screens/ResultsScreen.tsx +0 -103
  496. package/src/strategies/ArchitecturalReviewStrategy.ts +0 -54
  497. package/src/strategies/CodingTestReviewStrategy.ts +0 -920
  498. package/src/strategies/ConsolidatedReviewStrategy.ts +0 -59
  499. package/src/strategies/ExtractPatternsReviewStrategy.ts +0 -64
  500. package/src/strategies/MultiPassReviewStrategy.ts +0 -785
  501. package/src/strategies/ReviewStrategy.ts +0 -64
  502. package/src/strategies/StrategyFactory.ts +0 -79
  503. package/src/tokenizers/baseTokenizer.ts +0 -61
  504. package/src/tokenizers/gptTokenizer.ts +0 -27
  505. package/src/types/apiResponses.ts +0 -40
  506. package/src/types/cli.ts +0 -24
  507. package/src/types/configuration.ts +0 -201
  508. package/src/types/handlebars.d.ts +0 -5
  509. package/src/types/patch.d.ts +0 -25
  510. package/src/types/review.ts +0 -312
  511. package/src/types/reviewContext.d.ts +0 -65
  512. package/src/types/structuredReview.ts +0 -167
  513. package/src/types/tokenAnalysis.ts +0 -56
  514. package/src/utils/FileReader.ts +0 -93
  515. package/src/utils/FileWriter.ts +0 -76
  516. package/src/utils/PathGenerator.ts +0 -97
  517. package/src/utils/api/apiUtils.ts +0 -14
  518. package/src/utils/apiErrorHandler.ts +0 -287
  519. package/src/utils/ciDataCollector.ts +0 -252
  520. package/src/utils/codingTestConfigLoader.ts +0 -466
  521. package/src/utils/dependencies/aiDependencyAnalyzer.ts +0 -454
  522. package/src/utils/detection/frameworkDetector.ts +0 -879
  523. package/src/utils/detection/projectTypeDetector.ts +0 -518
  524. package/src/utils/diagramGenerator.ts +0 -206
  525. package/src/utils/errorLogger.ts +0 -60
  526. package/src/utils/estimationUtils.ts +0 -407
  527. package/src/utils/fileFilters.ts +0 -373
  528. package/src/utils/fileSystem.ts +0 -57
  529. package/src/utils/logger.ts +0 -290
  530. package/src/utils/pathValidator.ts +0 -98
  531. package/src/utils/projectDocs.ts +0 -189
  532. package/src/utils/promptPaths.ts +0 -29
  533. package/src/utils/promptTemplateManager.ts +0 -157
  534. package/src/utils/review/consolidateReview.ts +0 -553
  535. package/src/utils/review/fixDisplay.ts +0 -100
  536. package/src/utils/review/fixImplementation.ts +0 -61
  537. package/src/utils/review/index.ts +0 -36
  538. package/src/utils/review/interactiveProcessing.ts +0 -294
  539. package/src/utils/review/progressTracker.ts +0 -296
  540. package/src/utils/review/reviewExtraction.ts +0 -382
  541. package/src/utils/review/types.ts +0 -46
  542. package/src/utils/reviewParser.ts +0 -253
  543. package/src/utils/sanitizer.ts +0 -238
  544. package/src/utils/smartFileSelector.ts +0 -255
  545. package/src/utils/templateLoader.ts +0 -514
  546. package/src/utils/treeGenerator.ts +0 -153
  547. package/tsconfig.build.json +0 -14
  548. package/tsconfig.json +0 -59
  549. /package/{src/utils/api/index.ts → dist/utils/api/index.d.ts} +0 -0
@@ -0,0 +1,590 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Multi-pass review strategy implementation.
4
+ *
5
+ * This strategy analyzes large codebases by splitting files into multiple chunks
6
+ * and processing them sequentially, maintaining context between passes to ensure
7
+ * a cohesive review. It's automatically used when token counts exceed model limits.
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.MultiPassReviewStrategy = void 0;
14
+ const context_1 = require("../analysis/context");
15
+ const FindingsExtractor_1 = require("../analysis/FindingsExtractor");
16
+ const tokens_1 = require("../analysis/tokens");
17
+ const ConsolidationService_1 = require("../core/ConsolidationService");
18
+ const ReviewGenerator_1 = require("../core/ReviewGenerator");
19
+ const logger_1 = __importDefault(require("../utils/logger"));
20
+ const review_1 = require("../utils/review");
21
+ const ReviewStrategy_1 = require("./ReviewStrategy");
22
+ // Helper function to accommodate the type mismatch with existing formatters
23
+ // const ensureString = (value: string | undefined): string => {
24
+ // return value || 'unknown';
25
+ // };
26
+ /**
27
+ * Strategy for performing multi-pass reviews of large codebases
28
+ */
29
+ class MultiPassReviewStrategy extends ReviewStrategy_1.BaseReviewStrategy {
30
+ consolidationService;
31
+ findingsExtractor;
32
+ /**
33
+ * Create a new multi-pass review strategy
34
+ * @param reviewType Type of review to perform
35
+ */
36
+ constructor(reviewType) {
37
+ super(reviewType);
38
+ this.consolidationService = new ConsolidationService_1.ConsolidationService();
39
+ this.findingsExtractor = new FindingsExtractor_1.FindingsExtractor();
40
+ logger_1.default.debug('Initialized MultiPassReviewStrategy with services');
41
+ }
42
+ /**
43
+ * Execute the multi-pass review strategy
44
+ * @param files Files to review
45
+ * @param projectName Project name
46
+ * @param projectDocs Project documentation
47
+ * @param options Review options
48
+ * @param apiClientConfig API client configuration
49
+ * @returns Promise resolving to the review result
50
+ */
51
+ async execute(files, projectName, projectDocs, options, apiClientConfig) {
52
+ logger_1.default.info(`Executing multi-pass ${this.reviewType} review strategy...`);
53
+ // Make sure API client is initialized
54
+ if (!apiClientConfig.initialized) {
55
+ throw new Error('API client not initialized');
56
+ }
57
+ // Create a progress tracker
58
+ const progressTracker = new review_1.MultiPassProgressTracker(1, files.length, {
59
+ quiet: options.quiet,
60
+ });
61
+ // Start with analysis phase
62
+ progressTracker.setPhase('analyzing');
63
+ // Analyze token usage to determine chunking strategy
64
+ const tokenAnalysisOptions = {
65
+ reviewType: this.reviewType,
66
+ modelName: apiClientConfig.modelName,
67
+ batchTokenLimit: options.batchTokenLimit,
68
+ };
69
+ const tokenAnalysis = tokens_1.TokenAnalyzer.analyzeFiles(files, tokenAnalysisOptions);
70
+ // Log token analysis results
71
+ logger_1.default.info('Token analysis completed:');
72
+ logger_1.default.info((0, tokens_1.formatTokenAnalysis)(tokenAnalysis, apiClientConfig.modelName));
73
+ // Create or get the review context
74
+ const reviewContext = new context_1.ReviewContext(projectName, this.reviewType, files);
75
+ // Determine if we need to use chunking
76
+ if (!tokenAnalysis.chunkingRecommendation.chunkingRecommended) {
77
+ logger_1.default.info('Content fits within context window, using standard review');
78
+ progressTracker.complete();
79
+ // If chunking is not needed, delegate to standard review process
80
+ return (0, ReviewGenerator_1.generateReview)(files, projectName, this.reviewType, projectDocs, options, apiClientConfig);
81
+ }
82
+ // We need to use chunking
83
+ logger_1.default.info(`Content exceeds context window (${tokenAnalysis.estimatedTotalTokens} > ${tokenAnalysis.contextWindowSize}), using multi-pass review`);
84
+ logger_1.default.info(`Estimated ${tokenAnalysis.estimatedPassesNeeded} passes needed`);
85
+ // Update progress tracker with actual pass count
86
+ const totalPasses = tokenAnalysis.estimatedPassesNeeded;
87
+ progressTracker.stopProgressUpdates();
88
+ const newProgressTracker = new review_1.MultiPassProgressTracker(totalPasses, files.length, {
89
+ quiet: options.quiet,
90
+ });
91
+ // Create a consolidated result to aggregate findings
92
+ let consolidatedResult = {
93
+ content: '',
94
+ filePath: 'multi-pass-review',
95
+ files: files,
96
+ reviewType: this.reviewType,
97
+ timestamp: new Date().toISOString(),
98
+ costInfo: {
99
+ inputTokens: 0,
100
+ outputTokens: 0,
101
+ totalTokens: 0,
102
+ estimatedCost: 0,
103
+ formattedCost: '$0.00 USD',
104
+ cost: 0,
105
+ passCount: totalPasses,
106
+ perPassCosts: [],
107
+ contextMaintenanceFactor: options.contextMaintenanceFactor || 0.15,
108
+ },
109
+ totalPasses: totalPasses,
110
+ };
111
+ // Create filtered subsets of files for each pass
112
+ const chunks = tokenAnalysis.chunkingRecommendation.recommendedChunks;
113
+ // Process each chunk
114
+ for (let i = 0; i < chunks.length; i++) {
115
+ const chunk = chunks[i];
116
+ const passNumber = i + 1;
117
+ const chunkFiles = files.filter((f) => chunk.files.includes(f.path));
118
+ // Update progress tracker
119
+ newProgressTracker.startPass(passNumber, chunkFiles.map((f) => f.path));
120
+ // Start a new pass in the context
121
+ reviewContext.startPass();
122
+ // Generate next-pass context
123
+ const chunkContext = reviewContext.generateNextPassContext(chunkFiles.map((f) => f.path));
124
+ // Append the next-pass context to project docs
125
+ let enhancedProjectDocs = null;
126
+ if (projectDocs) {
127
+ enhancedProjectDocs = { ...projectDocs };
128
+ }
129
+ else {
130
+ enhancedProjectDocs = { readme: '' };
131
+ }
132
+ // Add the review context to the project docs
133
+ enhancedProjectDocs.custom = {
134
+ ...(enhancedProjectDocs.custom || {}),
135
+ 'REVIEW_CONTEXT.md': chunkContext,
136
+ };
137
+ // Create a modified options object with metadata about the multi-pass process
138
+ const chunkOptions = {
139
+ ...options,
140
+ multiPass: true,
141
+ passNumber,
142
+ totalPasses: chunks.length,
143
+ };
144
+ // Generate review for this chunk with error handling
145
+ let chunkResult;
146
+ let chunkRetryCount = 0;
147
+ const maxChunkRetries = 2;
148
+ while (chunkRetryCount <= maxChunkRetries) {
149
+ try {
150
+ // Enhanced logging before API call
151
+ logger_1.default.debug(`Attempting to generate review for pass ${passNumber}, attempt ${chunkRetryCount + 1}/${maxChunkRetries + 1}`);
152
+ logger_1.default.debug(` Files in chunk: ${chunkFiles.length}`);
153
+ logger_1.default.debug(` API client: ${apiClientConfig.clientType}:${apiClientConfig.modelName}`);
154
+ logger_1.default.debug(` Review type: ${this.reviewType}`);
155
+ chunkResult = await (0, ReviewGenerator_1.generateReview)(chunkFiles, projectName, this.reviewType, enhancedProjectDocs, chunkOptions, apiClientConfig);
156
+ // Log the result immediately after the API call
157
+ logger_1.default.debug(`API call completed for pass ${passNumber}, attempt ${chunkRetryCount + 1}`);
158
+ logger_1.default.debug(` Result exists: ${!!chunkResult}`);
159
+ logger_1.default.debug(` Content exists: ${!!(chunkResult && chunkResult.content)}`);
160
+ logger_1.default.debug(` Content length: ${chunkResult && chunkResult.content ? chunkResult.content.length : 'N/A'}`);
161
+ logger_1.default.debug(` Model used: ${chunkResult && chunkResult.modelUsed ? chunkResult.modelUsed : 'N/A'}`);
162
+ // Validate that we got valid content
163
+ if (!chunkResult || !chunkResult.content || chunkResult.content.trim() === '') {
164
+ // Enhanced error logging for debugging
165
+ logger_1.default.error(`Empty or invalid chunk result for pass ${passNumber}:`);
166
+ logger_1.default.error(` chunkResult exists: ${!!chunkResult}`);
167
+ logger_1.default.error(` chunkResult.content exists: ${!!(chunkResult && chunkResult.content)}`);
168
+ logger_1.default.error(` chunkResult.content length: ${chunkResult && chunkResult.content ? chunkResult.content.length : 'N/A'}`);
169
+ logger_1.default.error(` chunkResult.modelUsed: ${chunkResult && chunkResult.modelUsed ? chunkResult.modelUsed : 'N/A'}`);
170
+ logger_1.default.error(` chunkFiles count: ${chunkFiles.length}`);
171
+ logger_1.default.error(` chunkFiles paths: ${chunkFiles.map((f) => f.path).join(', ')}`);
172
+ logger_1.default.error(` apiClientConfig: ${JSON.stringify(apiClientConfig)}`);
173
+ // Log the full chunkResult for debugging (but limit size)
174
+ if (chunkResult) {
175
+ const resultForLogging = {
176
+ ...chunkResult,
177
+ content: chunkResult.content
178
+ ? `[${chunkResult.content.length} chars]: ${chunkResult.content.substring(0, 200)}...`
179
+ : 'null/undefined',
180
+ };
181
+ logger_1.default.error(` Full chunkResult: ${JSON.stringify(resultForLogging, null, 2)}`);
182
+ }
183
+ throw new Error(`Empty or invalid chunk result for pass ${passNumber}`);
184
+ }
185
+ // Success - break out of retry loop
186
+ break;
187
+ }
188
+ catch (chunkError) {
189
+ chunkRetryCount++;
190
+ logger_1.default.error(`Error generating review for pass ${passNumber} (attempt ${chunkRetryCount}/${maxChunkRetries + 1}): ${chunkError instanceof Error ? chunkError.message : String(chunkError)}`);
191
+ if (chunkRetryCount > maxChunkRetries) {
192
+ // Create a fallback result for this chunk
193
+ logger_1.default.warn(`Creating fallback result for pass ${passNumber} after ${maxChunkRetries + 1} attempts`);
194
+ chunkResult = {
195
+ content: `## Error in Pass ${passNumber}\n\nFailed to generate review for ${chunkFiles.length} files after ${maxChunkRetries + 1} attempts.\n\nFiles attempted:\n${chunkFiles.map((f) => `- ${f.path}`).join('\n')}\n\nError: ${chunkError instanceof Error ? chunkError.message : String(chunkError)}`,
196
+ filePath: 'error-pass',
197
+ files: chunkFiles,
198
+ reviewType: this.reviewType,
199
+ timestamp: new Date().toISOString(),
200
+ costInfo: {
201
+ inputTokens: 0,
202
+ outputTokens: 0,
203
+ totalTokens: 0,
204
+ estimatedCost: 0,
205
+ formattedCost: '$0.00 USD',
206
+ cost: 0,
207
+ },
208
+ };
209
+ break;
210
+ }
211
+ // Wait before retrying
212
+ const waitTime = Math.min(2000 * 2 ** (chunkRetryCount - 1), 8000);
213
+ logger_1.default.info(`Waiting ${waitTime}ms before retry ${chunkRetryCount + 1}/${maxChunkRetries + 1} for pass ${passNumber}`);
214
+ await new Promise((resolve) => setTimeout(resolve, waitTime));
215
+ }
216
+ }
217
+ // Ensure we have a valid result
218
+ if (!chunkResult) {
219
+ // This should never happen, but provide a safety fallback
220
+ logger_1.default.error(`No chunk result generated for pass ${passNumber} - creating emergency fallback`);
221
+ chunkResult = {
222
+ content: `## Error in Pass ${passNumber}\n\nNo result generated for ${chunkFiles.length} files.\n\nFiles attempted:\n${chunkFiles.map((f) => `- ${f.path}`).join('\n')}\n\nEmergency fallback result.`,
223
+ filePath: 'emergency-fallback',
224
+ files: chunkFiles,
225
+ reviewType: this.reviewType,
226
+ timestamp: new Date().toISOString(),
227
+ costInfo: {
228
+ inputTokens: 0,
229
+ outputTokens: 0,
230
+ totalTokens: 0,
231
+ estimatedCost: 0,
232
+ formattedCost: '$0.00 USD',
233
+ cost: 0,
234
+ },
235
+ };
236
+ }
237
+ // Extract findings from this pass and update the context
238
+ this.updateContextFromReviewResults(reviewContext, chunkResult, chunkFiles);
239
+ // Accumulate costs
240
+ if (consolidatedResult.costInfo && chunkResult.costInfo) {
241
+ consolidatedResult.costInfo.inputTokens += chunkResult.costInfo.inputTokens || 0;
242
+ consolidatedResult.costInfo.outputTokens += chunkResult.costInfo.outputTokens || 0;
243
+ consolidatedResult.costInfo.totalTokens += chunkResult.costInfo.totalTokens || 0;
244
+ consolidatedResult.costInfo.estimatedCost += chunkResult.costInfo.estimatedCost || 0;
245
+ // Update formatted cost
246
+ consolidatedResult.costInfo.formattedCost = `$${consolidatedResult.costInfo.estimatedCost.toFixed(6)} USD`;
247
+ // Add per-pass cost information
248
+ if (consolidatedResult.costInfo.perPassCosts &&
249
+ Array.isArray(consolidatedResult.costInfo.perPassCosts)) {
250
+ consolidatedResult.costInfo.perPassCosts.push({
251
+ passNumber: passNumber,
252
+ inputTokens: chunkResult.costInfo.inputTokens || 0,
253
+ outputTokens: chunkResult.costInfo.outputTokens || 0,
254
+ totalTokens: chunkResult.costInfo.totalTokens || 0,
255
+ estimatedCost: chunkResult.costInfo.estimatedCost || 0,
256
+ });
257
+ }
258
+ }
259
+ // Accumulate content with pass information
260
+ consolidatedResult.content += `\n## Pass ${passNumber}: Review of ${chunkFiles.length} Files\n\n`;
261
+ consolidatedResult.content += chunkResult.content;
262
+ consolidatedResult.content += '\n\n';
263
+ // Mark the pass as complete
264
+ newProgressTracker.completePass(passNumber);
265
+ }
266
+ // Set the initial processing phase
267
+ newProgressTracker.setPhase('processing');
268
+ // Add a summary section based on token analysis
269
+ const initialSummary = this.generateMultiPassSummary(consolidatedResult, tokenAnalysis, reviewContext, files, apiClientConfig.modelName);
270
+ // Add the initial summary to the consolidated result
271
+ consolidatedResult.content = initialSummary + consolidatedResult.content;
272
+ // Set the consolidation phase for the final AI analysis
273
+ newProgressTracker.setPhase('consolidating');
274
+ // Create a final consolidated report through AI with robust error handling
275
+ logger_1.default.info('Generating final consolidated review report with grading...');
276
+ // Check if we have enough valid content to consolidate
277
+ const validPassCount = consolidatedResult.content.split('## Pass').length - 1;
278
+ const errorPassCount = consolidatedResult.content.split('## Error in Pass').length - 1;
279
+ if (validPassCount === 0) {
280
+ logger_1.default.error('No valid passes to consolidate - all passes failed');
281
+ consolidatedResult = {
282
+ ...consolidatedResult,
283
+ content: `# Review Failed\n\nAll ${totalPasses} passes failed to generate valid reviews. Please check the logs for details.\n\n${consolidatedResult.content}`,
284
+ };
285
+ }
286
+ else if (errorPassCount > validPassCount * 0.5) {
287
+ logger_1.default.warn(`High error rate: ${errorPassCount}/${totalPasses} passes failed`);
288
+ }
289
+ try {
290
+ logger_1.default.debug('Starting consolidation phase with model provider: ' +
291
+ apiClientConfig.provider +
292
+ ', model: ' +
293
+ apiClientConfig.modelName);
294
+ // Make sure model information is set in the consolidated result
295
+ // This ensures we use the same model for consolidation
296
+ // Note: apiClientConfig.modelName already contains the full model string (e.g., "openrouter:anthropic/claude-3-haiku")
297
+ consolidatedResult.modelUsed = apiClientConfig.modelName;
298
+ const finalReport = await this.generateConsolidatedReport(consolidatedResult, apiClientConfig, files, projectName, projectDocs, options);
299
+ // If the final report was generated successfully, use it instead
300
+ if (finalReport?.content && finalReport.content.trim() !== '') {
301
+ logger_1.default.info('Successfully generated consolidated report with grading');
302
+ consolidatedResult = finalReport;
303
+ }
304
+ else {
305
+ // If the final report wasn't generated (returned undefined), log a more detailed warning
306
+ logger_1.default.warn('Consolidation function returned empty or undefined result');
307
+ logger_1.default.warn('Creating enhanced fallback consolidated report');
308
+ // Create an enhanced fallback consolidated report
309
+ const passResults = this.extractPassResults(consolidatedResult);
310
+ const fallbackContent = await this.consolidationService.generateConsolidatedReport(consolidatedResult, apiClientConfig, {
311
+ projectName,
312
+ modelName: apiClientConfig.modelName,
313
+ totalPasses: consolidatedResult.totalPasses || 1,
314
+ passResults,
315
+ });
316
+ const fallbackReport = {
317
+ ...consolidatedResult,
318
+ content: fallbackContent,
319
+ };
320
+ consolidatedResult = fallbackReport;
321
+ }
322
+ }
323
+ catch (error) {
324
+ logger_1.default.error(`Failed to generate final consolidated report: ${error instanceof Error ? error.message : String(error)}`);
325
+ logger_1.default.error('Error occurred during consolidated report generation. Stack trace:');
326
+ if (error instanceof Error && error.stack) {
327
+ logger_1.default.error(error.stack);
328
+ }
329
+ logger_1.default.warn('Creating enhanced fallback consolidated report');
330
+ // Create an enhanced fallback consolidated report even in the case of an exception
331
+ const passResults = this.extractPassResults(consolidatedResult);
332
+ const fallbackContent = await this.consolidationService.generateConsolidatedReport(consolidatedResult, apiClientConfig, {
333
+ projectName,
334
+ modelName: apiClientConfig.modelName,
335
+ totalPasses: consolidatedResult.totalPasses || 1,
336
+ passResults,
337
+ });
338
+ const fallbackReport = {
339
+ ...consolidatedResult,
340
+ content: fallbackContent,
341
+ };
342
+ consolidatedResult = fallbackReport;
343
+ }
344
+ // Mark the review as complete
345
+ newProgressTracker.complete();
346
+ return consolidatedResult;
347
+ }
348
+ /**
349
+ * Generate a summary for the multi-pass review
350
+ * @param result Consolidated review result
351
+ * @param tokenAnalysis Token analysis result
352
+ * @param context Review context
353
+ * @param files All files in the review
354
+ * @param modelName Model name
355
+ * @returns Summary string
356
+ */
357
+ generateMultiPassSummary(result, tokenAnalysis, context, files, modelName) {
358
+ const findings = context.getFindings();
359
+ const filesCount = files.length;
360
+ const totalPassesCount = context.getCurrentPass();
361
+ // Get cost info for detailed reporting
362
+ const costInfo = result.costInfo;
363
+ const costBreakdown = costInfo?.perPassCosts
364
+ ? costInfo.perPassCosts
365
+ .map((passCost) => `- Pass ${passCost.passNumber}: ${passCost.inputTokens.toLocaleString()} input + ${passCost.outputTokens.toLocaleString()} output = ${passCost.totalTokens.toLocaleString()} tokens ($${passCost.estimatedCost.toFixed(4)} USD)`)
366
+ .join('\n')
367
+ : 'N/A';
368
+ return `# Multi-Pass ${this.reviewType.charAt(0).toUpperCase() + this.reviewType.slice(1)} Review Summary
369
+
370
+ This review was conducted in **${totalPassesCount} passes** to analyze **${filesCount} files** (${tokenAnalysis.totalSizeInBytes.toLocaleString()} bytes) due to the large size of the codebase.
371
+
372
+ ## Review Statistics
373
+ - Files analyzed: ${filesCount}
374
+ - Total passes: ${totalPassesCount}
375
+ - Model used: ${modelName}
376
+ - Key findings identified: ${findings.length}
377
+
378
+ ## Token Usage
379
+ - Content tokens: ${tokenAnalysis.totalTokens.toLocaleString()}
380
+ - Context window size: ${tokenAnalysis.contextWindowSize.toLocaleString()}
381
+ - Context utilization: ${((tokenAnalysis.estimatedTotalTokens / tokenAnalysis.contextWindowSize) * 100).toFixed(2)}%
382
+ ${costInfo
383
+ ? `- Total tokens used: ${costInfo.totalTokens.toLocaleString()} (input: ${costInfo.inputTokens.toLocaleString()}, output: ${costInfo.outputTokens.toLocaleString()})
384
+ - Estimated cost: ${costInfo.formattedCost}`
385
+ : ''}
386
+
387
+ ### Per-Pass Token Usage
388
+ ${costBreakdown}
389
+
390
+ ## Multi-Pass Methodology
391
+ This review used a multi-pass approach with context maintenance between passes to ensure a cohesive analysis despite the large codebase size. Each pass analyzed a subset of files while maintaining awareness of findings and relationships from previous passes.
392
+
393
+ `;
394
+ }
395
+ /**
396
+ * Update the review context with findings from a review result
397
+ * @param context Review context to update
398
+ * @param result Review result to extract findings from
399
+ * @param files Files included in this pass
400
+ */
401
+ updateContextFromReviewResult(context, result, files) {
402
+ // Add file summaries
403
+ files.forEach((file) => {
404
+ context.addFileSummary({
405
+ path: file.path,
406
+ type: file.path.split('.').pop() || 'unknown',
407
+ description: `File containing ${file.content.length} bytes of code`,
408
+ keyElements: [],
409
+ passNumber: context.getCurrentPass(),
410
+ });
411
+ });
412
+ // In a real implementation, we would parse the review result to extract:
413
+ // - Code elements (functions, classes, etc.)
414
+ // - Findings (bugs, suggestions, etc.)
415
+ // - Relationships between files
416
+ // For now, add a general note about the pass
417
+ context.addGeneralNote(`Pass ${context.getCurrentPass()} analyzed ${files.length} files and generated a ${result.content.length} character review.`);
418
+ }
419
+ /**
420
+ * Generate a consolidated report from the multi-pass review results
421
+ * @param multiPassResult Combined result from all passes
422
+ * @param apiClientConfig API client configuration
423
+ * @param files All files included in the review
424
+ * @param projectName Name of the project
425
+ * @param projectDocs Project documentation
426
+ * @param options Review options
427
+ * @returns Promise resolving to a consolidated review result, or undefined if consolidation fails
428
+ */
429
+ async generateConsolidatedReport(multiPassResult, apiClientConfig, files, projectName, projectDocs, options) {
430
+ try {
431
+ // Validate API client configuration for consolidation
432
+ if (!apiClientConfig.modelName) {
433
+ throw new Error('API client configuration is missing a model name for consolidation');
434
+ }
435
+ // Set the project name in the result for use in consolidation
436
+ multiPassResult.projectName = projectName;
437
+ // Extract pass results for consolidation
438
+ const passResults = this.extractPassResults(multiPassResult);
439
+ // Use the ConsolidationService to generate the final report
440
+ const consolidatedContent = await this.consolidationService.generateConsolidatedReport(multiPassResult, apiClientConfig, {
441
+ projectName,
442
+ modelName: apiClientConfig.modelName,
443
+ totalPasses: multiPassResult.totalPasses || 1,
444
+ passResults,
445
+ });
446
+ // If the consolidation failed (empty content), return undefined
447
+ if (!consolidatedContent || consolidatedContent.trim() === '') {
448
+ logger_1.default.warn('Received empty consolidated content');
449
+ return undefined;
450
+ }
451
+ logger_1.default.info('Successfully generated consolidated report with grading!');
452
+ // Create a new result with the consolidated content
453
+ const consolidatedResult = {
454
+ ...multiPassResult,
455
+ content: consolidatedContent,
456
+ timestamp: new Date().toISOString(),
457
+ totalPasses: (multiPassResult.totalPasses || 0) + 1,
458
+ };
459
+ // Return the consolidated result
460
+ return consolidatedResult;
461
+ }
462
+ catch (error) {
463
+ logger_1.default.error(`Error generating consolidated report: ${error instanceof Error ? error.message : String(error)}`);
464
+ return undefined;
465
+ }
466
+ }
467
+ /**
468
+ * Extract individual pass results from the consolidated multi-pass result
469
+ * @param multiPassResult The consolidated result containing all passes
470
+ * @returns Array of individual pass results
471
+ */
472
+ extractPassResults(multiPassResult) {
473
+ const passResults = [];
474
+ const content = multiPassResult.content || '';
475
+ // Split content by pass markers
476
+ const passSections = content.split(/## Pass \d+:/);
477
+ for (let i = 1; i < passSections.length; i++) {
478
+ const passContent = passSections[i].trim();
479
+ if (passContent) {
480
+ passResults.push({
481
+ content: passContent,
482
+ filePath: `pass-${i}`,
483
+ reviewType: multiPassResult.reviewType,
484
+ timestamp: multiPassResult.timestamp,
485
+ files: multiPassResult.files,
486
+ });
487
+ }
488
+ }
489
+ // If no passes were found, return the original result as a single pass
490
+ if (passResults.length === 0) {
491
+ passResults.push(multiPassResult);
492
+ }
493
+ return passResults;
494
+ }
495
+ /**
496
+ * Extract findings from valid passes using the FindingsExtractor service
497
+ */
498
+ extractFindingsFromPasses(validPasses) {
499
+ return this.findingsExtractor.extractFindingsFromPasses(validPasses);
500
+ }
501
+ /**
502
+ * Calculate overall grade using the FindingsExtractor service
503
+ */
504
+ calculateOverallGrade(findings) {
505
+ return this.findingsExtractor.calculateOverallGrade(findings);
506
+ }
507
+ /**
508
+ * Generate recommendations based on findings using the FindingsExtractor service
509
+ */
510
+ generateRecommendations(findings, hasErrors) {
511
+ return this.findingsExtractor.generateRecommendations(findings, hasErrors);
512
+ }
513
+ /**
514
+ * Update the review context with findings from multiple review results
515
+ * @param context Review context to update
516
+ * @param result Review result to extract findings from
517
+ * @param files Files included in this pass
518
+ */
519
+ updateContextFromReviewResults(context, result, files) {
520
+ // Add file summaries for all files in this pass
521
+ files.forEach((file) => {
522
+ if (!file.path)
523
+ return;
524
+ // Extract the file extension
525
+ const fileExtension = file.path.split('.').pop() || 'unknown';
526
+ // Create a basic file summary
527
+ context.addFileSummary({
528
+ path: file.path,
529
+ type: fileExtension,
530
+ description: `${fileExtension.toUpperCase()} file with ${file.content.length} bytes`,
531
+ keyElements: [],
532
+ passNumber: context.getCurrentPass(),
533
+ });
534
+ });
535
+ // Simple heuristic to extract findings from the review content
536
+ // In a real implementation, we would have a more structured approach to extract findings
537
+ const findingPatterns = [
538
+ { type: 'bug', regex: /bug|issue|error|fix needed|incorrect/gi, severity: 8 },
539
+ {
540
+ type: 'security',
541
+ regex: /security|vulnerability|exploit|injection|xss|csrf/gi,
542
+ severity: 9,
543
+ },
544
+ {
545
+ type: 'performance',
546
+ regex: /performance|slow|optimize|efficiency|bottleneck/gi,
547
+ severity: 7,
548
+ },
549
+ {
550
+ type: 'maintainability',
551
+ regex: /maintainability|hard to read|complex|refactor/gi,
552
+ severity: 6,
553
+ },
554
+ ];
555
+ // Split the review content into paragraphs
556
+ const paragraphs = result.content.split('\n\n');
557
+ // Examine each paragraph for potential findings
558
+ paragraphs.forEach((paragraph) => {
559
+ findingPatterns.forEach((pattern) => {
560
+ if (pattern.regex.test(paragraph)) {
561
+ // Extract a short description from the paragraph
562
+ let description = paragraph.substring(0, 100);
563
+ if (description.length === 100) {
564
+ description += '...';
565
+ }
566
+ // Determine which file this finding is about (if mentioned)
567
+ let file;
568
+ files.forEach((f) => {
569
+ if (f.path &&
570
+ (paragraph.includes(f.path) || (f.relativePath && paragraph.includes(f.relativePath)))) {
571
+ file = f.path;
572
+ }
573
+ });
574
+ // Add the finding to the context
575
+ context.addFinding({
576
+ type: pattern.type,
577
+ description,
578
+ file,
579
+ severity: pattern.severity,
580
+ passNumber: context.getCurrentPass(),
581
+ });
582
+ }
583
+ });
584
+ });
585
+ // Add a general note about this pass
586
+ context.addGeneralNote(`Pass ${context.getCurrentPass()} reviewed ${files.length} files and identified approximate findings based on text heuristics.`);
587
+ }
588
+ }
589
+ exports.MultiPassReviewStrategy = MultiPassReviewStrategy;
590
+ //# sourceMappingURL=MultiPassReviewStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiPassReviewStrategy.js","sourceRoot":"","sources":["../../src/strategies/MultiPassReviewStrategy.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,iDAAoD;AACpD,qEAAkE;AAClE,+CAAkG;AAGlG,uEAAoE;AACpE,6DAAyD;AAEzD,6DAAqC;AAErC,4CAA2D;AAC3D,qDAAsD;AAEtD,4EAA4E;AAC5E,gEAAgE;AAChE,+BAA+B;AAC/B,KAAK;AAEL;;GAEG;AACH,MAAa,uBAAwB,SAAQ,mCAAkB;IAC5C,oBAAoB,CAAuB;IAC3C,iBAAiB,CAAoB;IAEtD;;;OAGG;IACH,YAAY,UAAsB;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;QACjD,gBAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CACX,KAAiB,EACjB,WAAmB,EACnB,WAA+B,EAC/B,OAAsB,EACtB,eAAgC;QAEhC,gBAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,UAAU,qBAAqB,CAAC,CAAC;QAE1E,sCAAsC;QACtC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,4BAA4B;QAC5B,MAAM,eAAe,GAAG,IAAI,iCAAwB,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE;YACpE,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,4BAA4B;QAC5B,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAEtC,qDAAqD;QACrD,MAAM,oBAAoB,GAAG;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC;QAEF,MAAM,aAAa,GAAG,sBAAa,CAAC,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAE9E,6BAA6B;QAC7B,gBAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,gBAAM,CAAC,IAAI,CAAC,IAAA,4BAAmB,EAAC,aAAa,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3E,mCAAmC;QACnC,MAAM,aAAa,GAAG,IAAI,uBAAa,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE7E,uCAAuC;QACvC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,CAAC;YAC9D,gBAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACzE,eAAe,CAAC,QAAQ,EAAE,CAAC;YAE3B,iEAAiE;YACjE,OAAO,IAAA,gCAAc,EACnB,KAAK,EACL,WAAW,EACX,IAAI,CAAC,UAAU,EACf,WAAW,EACX,OAAO,EACP,eAAe,CAChB,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,gBAAM,CAAC,IAAI,CACT,mCAAmC,aAAa,CAAC,oBAAoB,MAAM,aAAa,CAAC,iBAAiB,4BAA4B,CACvI,CAAC;QACF,gBAAM,CAAC,IAAI,CAAC,aAAa,aAAa,CAAC,qBAAqB,gBAAgB,CAAC,CAAC;QAE9E,iDAAiD;QACjD,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,CAAC;QACxD,eAAe,CAAC,mBAAmB,EAAE,CAAC;QACtC,MAAM,kBAAkB,GAAG,IAAI,iCAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE;YACjF,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,kBAAkB,GAAiB;YACrC,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,mBAAmB;YAC7B,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE;gBACR,WAAW,EAAE,CAAC;gBACd,YAAY,EAAE,CAAC;gBACf,WAAW,EAAE,CAAC;gBACd,aAAa,EAAE,CAAC;gBAChB,aAAa,EAAE,WAAW;gBAC1B,IAAI,EAAE,CAAC;gBACP,SAAS,EAAE,WAAW;gBACtB,YAAY,EAAE,EAAE;gBAChB,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,IAAI,IAAI;aACnE;YACD,WAAW,EAAE,WAAW;SACzB,CAAC;QAEF,iDAAiD;QACjD,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;QAEtE,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAErE,0BAA0B;YAC1B,kBAAkB,CAAC,SAAS,CAC1B,UAAU,EACV,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC9B,CAAC;YAEF,kCAAkC;YAClC,aAAa,CAAC,SAAS,EAAE,CAAC;YAE1B,6BAA6B;YAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,uBAAuB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAE1F,+CAA+C;YAC/C,IAAI,mBAAmB,GAAG,IAAI,CAAC;YAE/B,IAAI,WAAW,EAAE,CAAC;gBAChB,mBAAmB,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,mBAAmB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;YACvC,CAAC;YAED,6CAA6C;YAC7C,mBAAmB,CAAC,MAAM,GAAG;gBAC3B,GAAG,CAAC,mBAAmB,CAAC,MAAM,IAAI,EAAE,CAAC;gBACrC,mBAAmB,EAAE,YAAY;aAClC,CAAC;YAEF,8EAA8E;YAC9E,MAAM,YAAY,GAAG;gBACnB,GAAG,OAAO;gBACV,SAAS,EAAE,IAAI;gBACf,UAAU;gBACV,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B,CAAC;YAEF,qDAAqD;YACrD,IAAI,WAAqC,CAAC;YAC1C,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,MAAM,eAAe,GAAG,CAAC,CAAC;YAE1B,OAAO,eAAe,IAAI,eAAe,EAAE,CAAC;gBAC1C,IAAI,CAAC;oBACH,mCAAmC;oBACnC,gBAAM,CAAC,KAAK,CACV,0CAA0C,UAAU,aAAa,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAC9G,CAAC;oBACF,gBAAM,CAAC,KAAK,CAAC,qBAAqB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvD,gBAAM,CAAC,KAAK,CAAC,iBAAiB,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;oBACzF,gBAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;oBAElD,WAAW,GAAG,MAAM,IAAA,gCAAc,EAChC,UAAU,EACV,WAAW,EACX,IAAI,CAAC,UAAU,EACf,mBAAmB,EACnB,YAAY,EACZ,eAAe,CAChB,CAAC;oBAEF,gDAAgD;oBAChD,gBAAM,CAAC,KAAK,CAAC,+BAA+B,UAAU,aAAa,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1F,gBAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBAClD,gBAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC5E,gBAAM,CAAC,KAAK,CACV,qBAAqB,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAC/F,CAAC;oBACF,gBAAM,CAAC,KAAK,CACV,iBAAiB,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CACxF,CAAC;oBAEF,qCAAqC;oBACrC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;wBAC9E,uCAAuC;wBACvC,gBAAM,CAAC,KAAK,CAAC,0CAA0C,UAAU,GAAG,CAAC,CAAC;wBACtE,gBAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;wBACvD,gBAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACxF,gBAAM,CAAC,KAAK,CACV,iCAAiC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAC3G,CAAC;wBACF,gBAAM,CAAC,KAAK,CACV,4BAA4B,WAAW,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CACnG,CAAC;wBACF,gBAAM,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;wBACzD,gBAAM,CAAC,KAAK,CAAC,uBAAuB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChF,gBAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;wBAEtE,0DAA0D;wBAC1D,IAAI,WAAW,EAAE,CAAC;4BAChB,MAAM,gBAAgB,GAAG;gCACvB,GAAG,WAAW;gCACd,OAAO,EAAE,WAAW,CAAC,OAAO;oCAC1B,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,YAAY,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK;oCACtF,CAAC,CAAC,gBAAgB;6BACrB,CAAC;4BACF,gBAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;wBACnF,CAAC;wBAED,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;oBAC1E,CAAC;oBAED,oCAAoC;oBACpC,MAAM;gBACR,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,eAAe,EAAE,CAAC;oBAClB,gBAAM,CAAC,KAAK,CACV,oCAAoC,UAAU,aAAa,eAAe,IAAI,eAAe,GAAG,CAAC,MAC/F,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CACtE,EAAE,CACH,CAAC;oBAEF,IAAI,eAAe,GAAG,eAAe,EAAE,CAAC;wBACtC,0CAA0C;wBAC1C,gBAAM,CAAC,IAAI,CACT,qCAAqC,UAAU,UAAU,eAAe,GAAG,CAAC,WAAW,CACxF,CAAC;wBACF,WAAW,GAAG;4BACZ,OAAO,EAAE,oBAAoB,UAAU,qCAAqC,UAAU,CAAC,MAAM,gBAAgB,eAAe,GAAG,CAAC,mCAAmC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;4BACvS,QAAQ,EAAE,YAAY;4BACtB,KAAK,EAAE,UAAU;4BACjB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,QAAQ,EAAE;gCACR,WAAW,EAAE,CAAC;gCACd,YAAY,EAAE,CAAC;gCACf,WAAW,EAAE,CAAC;gCACd,aAAa,EAAE,CAAC;gCAChB,aAAa,EAAE,WAAW;gCAC1B,IAAI,EAAE,CAAC;6BACR;yBACF,CAAC;wBACF,MAAM;oBACR,CAAC;oBAED,uBAAuB;oBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACnE,gBAAM,CAAC,IAAI,CACT,WAAW,QAAQ,mBAAmB,eAAe,GAAG,CAAC,IAAI,eAAe,GAAG,CAAC,aAAa,UAAU,EAAE,CAC1G,CAAC;oBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,0DAA0D;gBAC1D,gBAAM,CAAC,KAAK,CACV,sCAAsC,UAAU,gCAAgC,CACjF,CAAC;gBACF,WAAW,GAAG;oBACZ,OAAO,EAAE,oBAAoB,UAAU,+BAA+B,UAAU,CAAC,MAAM,gCAAgC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC;oBACtM,QAAQ,EAAE,oBAAoB;oBAC9B,KAAK,EAAE,UAAU;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,QAAQ,EAAE;wBACR,WAAW,EAAE,CAAC;wBACd,YAAY,EAAE,CAAC;wBACf,WAAW,EAAE,CAAC;wBACd,aAAa,EAAE,CAAC;wBAChB,aAAa,EAAE,WAAW;wBAC1B,IAAI,EAAE,CAAC;qBACR;iBACF,CAAC;YACJ,CAAC;YAED,yDAAyD;YACzD,IAAI,CAAC,8BAA8B,CAAC,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YAE5E,mBAAmB;YACnB,IAAI,kBAAkB,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACxD,kBAAkB,CAAC,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;gBACjF,kBAAkB,CAAC,QAAQ,CAAC,YAAY,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;gBACnF,kBAAkB,CAAC,QAAQ,CAAC,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;gBACjF,kBAAkB,CAAC,QAAQ,CAAC,aAAa,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,CAAC;gBAErF,wBAAwB;gBACxB,kBAAkB,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE3G,gCAAgC;gBAChC,IACE,kBAAkB,CAAC,QAAQ,CAAC,YAAY;oBACxC,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EACvD,CAAC;oBACD,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;wBAC5C,UAAU,EAAE,UAAU;wBACtB,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC;wBAClD,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC;wBACpD,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC;wBAClD,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC;qBACvD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,2CAA2C;YAC3C,kBAAkB,CAAC,OAAO,IAAI,aAAa,UAAU,eAAe,UAAU,CAAC,MAAM,YAAY,CAAC;YAClG,kBAAkB,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;YAClD,kBAAkB,CAAC,OAAO,IAAI,MAAM,CAAC;YAErC,4BAA4B;YAC5B,kBAAkB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,mCAAmC;QACnC,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE1C,gDAAgD;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAClD,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,KAAK,EACL,eAAe,CAAC,SAAS,CAC1B,CAAC;QAEF,qDAAqD;QACrD,kBAAkB,CAAC,OAAO,GAAG,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAEzE,wDAAwD;QACxD,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE7C,2EAA2E;QAC3E,gBAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAE3E,uDAAuD;QACvD,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEvF,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,gBAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACnE,kBAAkB,GAAG;gBACnB,GAAG,kBAAkB;gBACrB,OAAO,EAAE,0BAA0B,WAAW,mFAAmF,kBAAkB,CAAC,OAAO,EAAE;aAC9J,CAAC;QACJ,CAAC;aAAM,IAAI,cAAc,GAAG,cAAc,GAAG,GAAG,EAAE,CAAC;YACjD,gBAAM,CAAC,IAAI,CAAC,oBAAoB,cAAc,IAAI,WAAW,gBAAgB,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACH,gBAAM,CAAC,KAAK,CACV,oDAAoD;gBAClD,eAAe,CAAC,QAAQ;gBACxB,WAAW;gBACX,eAAe,CAAC,SAAS,CAC5B,CAAC;YAEF,gEAAgE;YAChE,uDAAuD;YACvD,uHAAuH;YACvH,kBAAkB,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;YAEzD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,0BAA0B,CACvD,kBAAkB,EAClB,eAAe,EACf,KAAK,EACL,WAAW,EACX,WAAW,EACX,OAAO,CACR,CAAC;YAEF,iEAAiE;YACjE,IAAI,WAAW,EAAE,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9D,gBAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACvE,kBAAkB,GAAG,WAAW,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,yFAAyF;gBACzF,gBAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;gBACzE,gBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;gBAE9D,kDAAkD;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;gBAChE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAChF,kBAAkB,EAClB,eAAe,EACf;oBACE,WAAW;oBACX,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,WAAW,EAAE,kBAAkB,CAAC,WAAW,IAAI,CAAC;oBAChD,WAAW;iBACZ,CACF,CAAC;gBACF,MAAM,cAAc,GAAG;oBACrB,GAAG,kBAAkB;oBACrB,OAAO,EAAE,eAAe;iBACzB,CAAC;gBACF,kBAAkB,GAAG,cAAc,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,KAAK,CACV,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1G,CAAC;YACF,gBAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACnF,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1C,gBAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,gBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAE9D,mFAAmF;YACnF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;YAChE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAChF,kBAAkB,EAClB,eAAe,EACf;gBACE,WAAW;gBACX,SAAS,EAAE,eAAe,CAAC,SAAS;gBACpC,WAAW,EAAE,kBAAkB,CAAC,WAAW,IAAI,CAAC;gBAChD,WAAW;aACZ,CACF,CAAC;YACF,MAAM,cAAc,GAAG;gBACrB,GAAG,kBAAkB;gBACrB,OAAO,EAAE,eAAe;aACzB,CAAC;YACF,kBAAkB,GAAG,cAAc,CAAC;QACtC,CAAC;QAED,8BAA8B;QAC9B,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAE9B,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACK,wBAAwB,CAC9B,MAAoB,EACpB,aAAkC,EAClC,OAAsB,EACtB,KAAiB,EACjB,SAAiB;QAEjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,aAAa,GAAG,QAAQ,EAAE,YAAY;YAC1C,CAAC,CAAC,QAAQ,CAAC,YAAY;iBAClB,GAAG,CACF,CAAC,QAAsB,EAAE,EAAE,CACzB,UAAU,QAAQ,CAAC,UAAU,KAAK,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,YAAY,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE,aAAa,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,aAAa,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CACnO;iBACA,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,KAAK,CAAC;QAEV,OAAO,gBAAgB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;;iCAE5D,gBAAgB,0BAA0B,UAAU,aAAa,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE;;;oBAG7H,UAAU;kBACZ,gBAAgB;gBAClB,SAAS;6BACI,QAAQ,CAAC,MAAM;;;oBAGxB,aAAa,CAAC,WAAW,CAAC,cAAc,EAAE;yBACrC,aAAa,CAAC,iBAAiB,CAAC,cAAc,EAAE;yBAChD,CAAC,CAAC,aAAa,CAAC,oBAAoB,GAAG,aAAa,CAAC,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;EAEhH,QAAQ;YACN,CAAC,CAAC,wBAAwB,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,YAAY,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,aAAa,QAAQ,CAAC,YAAY,CAAC,cAAc,EAAE;oBACnJ,QAAQ,CAAC,aAAa,EAAE;YACxC,CAAC,CAAC,EACN;;;EAGE,aAAa;;;;;CAKd,CAAC;IACA,CAAC;IAED;;;;;OAKG;IACK,6BAA6B,CACnC,OAAsB,EACtB,MAAoB,EACpB,KAAiB;QAEjB,qBAAqB;QACrB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS;gBAC7C,WAAW,EAAE,mBAAmB,IAAI,CAAC,OAAO,CAAC,MAAM,gBAAgB;gBACnE,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,6CAA6C;QAC7C,uCAAuC;QACvC,gCAAgC;QAEhC,6CAA6C;QAC7C,OAAO,CAAC,cAAc,CACpB,QAAQ,OAAO,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,MAAM,0BAA0B,MAAM,CAAC,OAAO,CAAC,MAAM,oBAAoB,CAC7H,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,0BAA0B,CACtC,eAA6B,EAC7B,eAAgC,EAChC,KAAiB,EACjB,WAAmB,EACnB,WAA+B,EAC/B,OAAsB;QAEtB,IAAI,CAAC;YACH,sDAAsD;YACtD,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YAED,8DAA8D;YAC9D,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;YAE1C,yCAAyC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;YAE7D,4DAA4D;YAC5D,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,CACpF,eAAe,EACf,eAAe,EACf;gBACE,WAAW;gBACX,SAAS,EAAE,eAAe,CAAC,SAAS;gBACpC,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,CAAC;gBAC7C,WAAW;aACZ,CACF,CAAC;YAEF,gEAAgE;YAChE,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC9D,gBAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACnD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,gBAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAExE,oDAAoD;YACpD,MAAM,kBAAkB,GAAiB;gBACvC,GAAG,eAAe;gBAClB,OAAO,EAAE,mBAAmB;gBAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,WAAW,EAAE,CAAC,eAAe,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC;aACpD,CAAC;YAEF,iCAAiC;YACjC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAM,CAAC,KAAK,CACV,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,eAA6B;QACtD,MAAM,WAAW,GAAmB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,IAAI,EAAE,CAAC;QAE9C,gCAAgC;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,WAAW;oBACpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBACrB,UAAU,EAAE,eAAe,CAAC,UAAU;oBACtC,SAAS,EAAE,eAAe,CAAC,SAAS;oBACpC,KAAK,EAAE,eAAe,CAAC,KAAK;iBAC7B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,WAAuC;QACvE,OAAO,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAI7B;QACC,OAAO,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,QAAsE,EACtE,SAAkB;QAElB,OAAO,IAAI,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;OAKG;IACK,8BAA8B,CACpC,OAAsB,EACtB,MAAoB,EACpB,KAAiB;QAEjB,gDAAgD;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAEvB,6BAA6B;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;YAE9D,8BAA8B;YAC9B,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,GAAG,aAAa,CAAC,WAAW,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,MAAM,QAAQ;gBACpF,WAAW,EAAE,EAAE;gBACf,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,yFAAyF;QACzF,MAAM,eAAe,GAAG;YACtB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,QAAQ,EAAE,CAAC,EAAE;YAC7E;gBACE,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,qDAAqD;gBAC5D,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,mDAAmD;gBAC1D,QAAQ,EAAE,CAAC;aACZ;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,iDAAiD;gBACxD,QAAQ,EAAE,CAAC;aACZ;SACF,CAAC;QAEF,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEhD,gDAAgD;QAChD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC/B,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,iDAAiD;oBACjD,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC9C,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBAC/B,WAAW,IAAI,KAAK,CAAC;oBACvB,CAAC;oBAED,4DAA4D;oBAC5D,IAAI,IAAwB,CAAC;oBAC7B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClB,IACE,CAAC,CAAC,IAAI;4BACN,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EACtF,CAAC;4BACD,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;wBAChB,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,iCAAiC;oBACjC,OAAO,CAAC,UAAU,CAAC;wBACjB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,WAAW;wBACX,IAAI;wBACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE;qBACrC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,OAAO,CAAC,cAAc,CACpB,QAAQ,OAAO,CAAC,cAAc,EAAE,aAAa,KAAK,CAAC,MAAM,sEAAsE,CAChI,CAAC;IACJ,CAAC;CACF;AAnvBD,0DAmvBC"}