repoburg 1.3.148 → 1.3.150

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 (515) hide show
  1. package/backend/dist/src/core-entities/session.entity.d.ts +1 -0
  2. package/backend/dist/src/core-entities/session.entity.js +8 -0
  3. package/backend/dist/src/core-entities/session.entity.js.map +1 -1
  4. package/backend/dist/src/interactive-chat/chat.service.js +9 -0
  5. package/backend/dist/src/interactive-chat/chat.service.js.map +1 -1
  6. package/backend/dist/src/main.js +3 -0
  7. package/backend/dist/src/main.js.map +1 -1
  8. package/backend/dist/src/sessions/dto/session.dto.d.ts +1 -0
  9. package/backend/dist/src/sessions/dto/session.dto.js +9 -0
  10. package/backend/dist/src/sessions/dto/session.dto.js.map +1 -1
  11. package/backend/dist/src/sessions/sessions.service.d.ts +1 -0
  12. package/backend/dist/src/sessions/sessions.service.js +7 -0
  13. package/backend/dist/src/sessions/sessions.service.js.map +1 -1
  14. package/backend/dist/src/sub-agents/sub-agent-runner.service.js +17 -0
  15. package/backend/dist/src/sub-agents/sub-agent-runner.service.js.map +1 -1
  16. package/backend/dist/tsconfig.build.tsbuildinfo +1 -1
  17. package/package.json +1 -1
  18. package/.claude/settings.local.json +0 -7
  19. package/.playwright-mcp/console-2026-05-12T09-54-31-560Z.log +0 -13
  20. package/.playwright-mcp/console-2026-05-12T10-04-14-892Z.log +0 -13
  21. package/.playwright-mcp/console-2026-05-12T10-50-32-398Z.log +0 -14
  22. package/.playwright-mcp/console-2026-05-12T12-50-09-889Z.log +0 -13
  23. package/.playwright-mcp/console-2026-05-12T12-58-49-817Z.log +0 -60
  24. package/.playwright-mcp/console-2026-05-13T18-41-50-654Z.log +0 -13
  25. package/.playwright-mcp/console-2026-05-13T18-54-58-000Z.log +0 -13
  26. package/.playwright-mcp/console-2026-05-13T19-13-30-875Z.log +0 -95
  27. package/.playwright-mcp/console-2026-05-13T20-09-13-456Z.log +0 -17
  28. package/.playwright-mcp/console-2026-05-13T20-21-01-662Z.log +0 -13
  29. package/.playwright-mcp/console-2026-05-13T20-22-00-038Z.log +0 -15
  30. package/.playwright-mcp/console-2026-05-13T20-26-26-665Z.log +0 -28
  31. package/.playwright-mcp/console-2026-05-13T20-35-49-544Z.log +0 -26
  32. package/.playwright-mcp/console-2026-05-13T20-38-10-958Z.log +0 -676
  33. package/.playwright-mcp/console-2026-05-14T21-27-06-074Z.log +0 -69
  34. package/.playwright-mcp/console-2026-05-14T22-13-07-470Z.log +0 -101
  35. package/.playwright-mcp/console-2026-05-14T23-58-12-858Z.log +0 -28
  36. package/.playwright-mcp/console-2026-05-15T00-15-00-760Z.log +0 -81
  37. package/.playwright-mcp/page-2026-05-12T09-54-32-920Z.yml +0 -223
  38. package/.playwright-mcp/page-2026-05-12T09-54-42-067Z.yml +0 -190
  39. package/.playwright-mcp/page-2026-05-12T09-55-12-019Z.yml +0 -389
  40. package/.playwright-mcp/page-2026-05-12T09-55-49-065Z.yml +0 -428
  41. package/.playwright-mcp/page-2026-05-12T09-56-06-607Z.yml +0 -389
  42. package/.playwright-mcp/page-2026-05-12T09-56-23-371Z.yml +0 -196
  43. package/.playwright-mcp/page-2026-05-12T09-56-55-792Z.yml +0 -389
  44. package/.playwright-mcp/page-2026-05-12T10-04-15-716Z.yml +0 -164
  45. package/.playwright-mcp/page-2026-05-12T10-04-43-994Z.yml +0 -190
  46. package/.playwright-mcp/page-2026-05-12T10-05-04-616Z.yml +0 -389
  47. package/.playwright-mcp/page-2026-05-12T10-05-27-643Z.yml +0 -428
  48. package/.playwright-mcp/page-2026-05-12T10-05-47-851Z.yml +0 -389
  49. package/.playwright-mcp/page-2026-05-12T10-06-13-429Z.yml +0 -196
  50. package/.playwright-mcp/page-2026-05-12T10-06-58-147Z.yml +0 -389
  51. package/.playwright-mcp/page-2026-05-12T10-08-20-216Z.yml +0 -428
  52. package/.playwright-mcp/page-2026-05-12T10-08-38-177Z.yml +0 -389
  53. package/.playwright-mcp/page-2026-05-12T10-09-01-851Z.yml +0 -196
  54. package/.playwright-mcp/page-2026-05-12T10-09-24-888Z.yml +0 -389
  55. package/.playwright-mcp/page-2026-05-12T10-50-33-049Z.yml +0 -212
  56. package/.playwright-mcp/page-2026-05-12T10-50-48-496Z.yml +0 -196
  57. package/.playwright-mcp/page-2026-05-12T10-51-51-308Z.yml +0 -196
  58. package/.playwright-mcp/page-2026-05-12T10-52-07-379Z.yml +0 -196
  59. package/.playwright-mcp/page-2026-05-12T12-50-10-589Z.yml +0 -143
  60. package/.playwright-mcp/page-2026-05-12T12-50-25-461Z.yml +0 -196
  61. package/.playwright-mcp/page-2026-05-12T12-51-11-190Z.yml +0 -394
  62. package/.playwright-mcp/page-2026-05-12T12-52-21-138Z.yml +0 -524
  63. package/.playwright-mcp/page-2026-05-12T12-53-42-423Z.yml +0 -431
  64. package/.playwright-mcp/page-2026-05-12T12-54-18-549Z.yml +0 -196
  65. package/.playwright-mcp/page-2026-05-12T12-54-26-818Z.yml +0 -390
  66. package/.playwright-mcp/page-2026-05-12T12-55-32-697Z.yml +0 -520
  67. package/.playwright-mcp/page-2026-05-12T12-58-50-450Z.yml +0 -164
  68. package/.playwright-mcp/page-2026-05-12T12-59-12-954Z.yml +0 -196
  69. package/.playwright-mcp/page-2026-05-12T12-59-38-479Z.yml +0 -394
  70. package/.playwright-mcp/page-2026-05-12T13-01-17-580Z.yml +0 -524
  71. package/.playwright-mcp/page-2026-05-12T13-01-58-447Z.yml +0 -271
  72. package/.playwright-mcp/page-2026-05-12T13-03-12-109Z.yml +0 -394
  73. package/.playwright-mcp/page-2026-05-13T18-41-51-436Z.yml +0 -159
  74. package/.playwright-mcp/page-2026-05-13T18-42-27-482Z.yml +0 -4814
  75. package/.playwright-mcp/page-2026-05-13T18-54-58-644Z.yml +0 -154
  76. package/.playwright-mcp/page-2026-05-13T18-56-11-217Z.yml +0 -1560
  77. package/.playwright-mcp/page-2026-05-13T18-56-32-205Z.yml +0 -1560
  78. package/.playwright-mcp/page-2026-05-13T19-13-31-457Z.yml +0 -164
  79. package/.playwright-mcp/page-2026-05-13T19-14-26-248Z.yml +0 -1560
  80. package/.playwright-mcp/page-2026-05-13T19-15-02-355Z.yml +0 -1560
  81. package/.playwright-mcp/page-2026-05-13T20-09-14-478Z.yml +0 -149
  82. package/.playwright-mcp/page-2026-05-13T20-10-49-292Z.yml +0 -4814
  83. package/.playwright-mcp/page-2026-05-13T20-21-02-852Z.yml +0 -143
  84. package/.playwright-mcp/page-2026-05-13T20-22-01-084Z.yml +0 -143
  85. package/.playwright-mcp/page-2026-05-13T20-22-09-334Z.yml +0 -1561
  86. package/.playwright-mcp/page-2026-05-13T20-26-27-690Z.yml +0 -143
  87. package/.playwright-mcp/page-2026-05-13T20-26-53-324Z.yml +0 -1561
  88. package/.playwright-mcp/page-2026-05-13T20-27-35-395Z.yml +0 -1561
  89. package/.playwright-mcp/page-2026-05-13T20-35-50-708Z.yml +0 -149
  90. package/.playwright-mcp/page-2026-05-13T20-37-41-379Z.yml +0 -0
  91. package/.playwright-mcp/page-2026-05-13T20-38-12-049Z.yml +0 -149
  92. package/.playwright-mcp/page-2026-05-13T20-38-19-708Z.yml +0 -1561
  93. package/.playwright-mcp/page-2026-05-14T21-27-07-278Z.yml +0 -164
  94. package/.playwright-mcp/page-2026-05-14T22-13-07-628Z.yml +0 -5
  95. package/.playwright-mcp/page-2026-05-14T22-13-27-676Z.yml +0 -1561
  96. package/.playwright-mcp/page-2026-05-14T23-58-13-064Z.yml +0 -3
  97. package/.playwright-mcp/page-2026-05-14T23-58-33-500Z.yml +0 -1561
  98. package/.playwright-mcp/page-2026-05-15T00-15-00-945Z.yml +0 -3
  99. package/.run/backend _ build.run.xml +0 -12
  100. package/.run/backend _ lint.run.xml +0 -12
  101. package/.run/backend _ test.run.xml +0 -12
  102. package/.run/frontend _ build.run.xml +0 -12
  103. package/.run/frontend _ lint_fix.run.xml +0 -12
  104. package/CODEMAP.md +0 -53
  105. package/backend/.repoburg/hooks/README.md +0 -53
  106. package/backend/.repoburg/hooks/eslint-hook.ts +0 -46
  107. package/backend/.repoburg/hooks/example-hook.ts +0 -62
  108. package/backend/CODEMAP.md +0 -48
  109. package/backend/README.md +0 -3
  110. package/backend/coverage/clover.xml +0 -12003
  111. package/backend/coverage/coverage-final.json +0 -313
  112. package/backend/coverage/lcov-report/base.css +0 -224
  113. package/backend/coverage/lcov-report/block-navigation.js +0 -87
  114. package/backend/coverage/lcov-report/favicon.png +0 -0
  115. package/backend/coverage/lcov-report/index.html +0 -1301
  116. package/backend/coverage/lcov-report/packages/gemini-core/examples/index.html +0 -116
  117. package/backend/coverage/lcov-report/packages/gemini-core/examples/simple.ts.html +0 -445
  118. package/backend/coverage/lcov-report/packages/gemini-core/index.html +0 -116
  119. package/backend/coverage/lcov-report/packages/gemini-core/index.ts.html +0 -127
  120. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/codeAssist.ts.html +0 -193
  121. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/converter.ts.html +0 -832
  122. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/index.html +0 -206
  123. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth-credential-storage.ts.html +0 -469
  124. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/oauth2.ts.html +0 -1705
  125. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/server.ts.html +0 -790
  126. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/setup.ts.html +0 -454
  127. package/backend/coverage/lcov-report/packages/gemini-core/src/code_assist/types.ts.html +0 -685
  128. package/backend/coverage/lcov-report/packages/gemini-core/src/config/config.ts.html +0 -307
  129. package/backend/coverage/lcov-report/packages/gemini-core/src/config/index.html +0 -146
  130. package/backend/coverage/lcov-report/packages/gemini-core/src/config/models.ts.html +0 -151
  131. package/backend/coverage/lcov-report/packages/gemini-core/src/config/storage.ts.html +0 -172
  132. package/backend/coverage/lcov-report/packages/gemini-core/src/core/contentGenerator.ts.html +0 -490
  133. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiChat.ts.html +0 -1237
  134. package/backend/coverage/lcov-report/packages/gemini-core/src/core/geminiRequest.ts.html +0 -139
  135. package/backend/coverage/lcov-report/packages/gemini-core/src/core/index.html +0 -176
  136. package/backend/coverage/lcov-report/packages/gemini-core/src/core/prompts.ts.html +0 -409
  137. package/backend/coverage/lcov-report/packages/gemini-core/src/core/tokenLimits.ts.html +0 -181
  138. package/backend/coverage/lcov-report/packages/gemini-core/src/index.html +0 -116
  139. package/backend/coverage/lcov-report/packages/gemini-core/src/index.ts.html +0 -187
  140. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/base-token-storage.ts.html +0 -229
  141. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/file-token-storage.ts.html +0 -634
  142. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/hybrid-token-storage.ts.html +0 -373
  143. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.html +0 -191
  144. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/index.ts.html +0 -124
  145. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/keychain-token-storage.ts.html +0 -835
  146. package/backend/coverage/lcov-report/packages/gemini-core/src/mcp/token-storage/types.ts.html +0 -211
  147. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/errors.ts.html +0 -421
  148. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/index.html +0 -191
  149. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/partUtils.ts.html +0 -592
  150. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/quotaErrorDetection.ts.html +0 -388
  151. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/retry.ts.html +0 -877
  152. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/session.ts.html +0 -112
  153. package/backend/coverage/lcov-report/packages/gemini-core/src/utils/userAccountManager.ts.html +0 -502
  154. package/backend/coverage/lcov-report/packages/tokenpatch/index.html +0 -161
  155. package/backend/coverage/lcov-report/packages/tokenpatch/index.ts.html +0 -415
  156. package/backend/coverage/lcov-report/packages/tokenpatch/parser.ts.html +0 -139
  157. package/backend/coverage/lcov-report/packages/tokenpatch/patcher.ts.html +0 -1249
  158. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/index.html +0 -131
  159. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tiktoken-tokenizer.ts.html +0 -187
  160. package/backend/coverage/lcov-report/packages/tokenpatch/strategies/tree-sitter-tokenizer.ts.html +0 -193
  161. package/backend/coverage/lcov-report/packages/tokenpatch/tokens.ts.html +0 -178
  162. package/backend/coverage/lcov-report/prettify.css +0 -1
  163. package/backend/coverage/lcov-report/prettify.js +0 -2
  164. package/backend/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  165. package/backend/coverage/lcov-report/sorter.js +0 -210
  166. package/backend/coverage/lcov-report/src/ai-actions/ai-action-batch.service.ts.html +0 -1549
  167. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.controller.ts.html +0 -904
  168. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.module.ts.html +0 -175
  169. package/backend/coverage/lcov-report/src/ai-actions/ai-actions.service.ts.html +0 -1534
  170. package/backend/coverage/lcov-report/src/ai-actions/index.html +0 -161
  171. package/backend/coverage/lcov-report/src/app.controller.ts.html +0 -151
  172. package/backend/coverage/lcov-report/src/app.module.ts.html +0 -451
  173. package/backend/coverage/lcov-report/src/app.service.ts.html +0 -163
  174. package/backend/coverage/lcov-report/src/application-state/application-state.controller.ts.html +0 -1609
  175. package/backend/coverage/lcov-report/src/application-state/application-state.module.ts.html +0 -136
  176. package/backend/coverage/lcov-report/src/application-state/application-state.service.ts.html +0 -2281
  177. package/backend/coverage/lcov-report/src/application-state/dto/index.html +0 -416
  178. package/backend/coverage/lcov-report/src/application-state/dto/set-alibaba-config.dto.ts.html +0 -109
  179. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-context-fetch-enabled.dto.ts.html +0 -118
  180. package/backend/coverage/lcov-report/src/application-state/dto/set-auto-send-to-ai-studio-enabled.dto.ts.html +0 -109
  181. package/backend/coverage/lcov-report/src/application-state/dto/set-context-token-limit.dto.ts.html +0 -124
  182. package/backend/coverage/lcov-report/src/application-state/dto/set-execution-strategy.dto.ts.html +0 -121
  183. package/backend/coverage/lcov-report/src/application-state/dto/set-followup-token-limit.dto.ts.html +0 -124
  184. package/backend/coverage/lcov-report/src/application-state/dto/set-history-compression-enabled.dto.ts.html +0 -115
  185. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-enabled.dto.ts.html +0 -115
  186. package/backend/coverage/lcov-report/src/application-state/dto/set-llm-retry-max-attempts.dto.ts.html +0 -127
  187. package/backend/coverage/lcov-report/src/application-state/dto/set-manual-llm-enabled.dto.ts.html +0 -118
  188. package/backend/coverage/lcov-report/src/application-state/dto/set-ollama-config.dto.ts.html +0 -109
  189. package/backend/coverage/lcov-report/src/application-state/dto/set-openai-config.dto.ts.html +0 -139
  190. package/backend/coverage/lcov-report/src/application-state/dto/set-openrouter-config.dto.ts.html +0 -109
  191. package/backend/coverage/lcov-report/src/application-state/dto/set-streaming-enabled.dto.ts.html +0 -109
  192. package/backend/coverage/lcov-report/src/application-state/dto/set-syntax-validation-enabled.dto.ts.html +0 -118
  193. package/backend/coverage/lcov-report/src/application-state/dto/set-theme.dto.ts.html +0 -124
  194. package/backend/coverage/lcov-report/src/application-state/dto/set-tools-enabled.dto.ts.html +0 -118
  195. package/backend/coverage/lcov-report/src/application-state/dto/set-websocket-enabled.dto.ts.html +0 -109
  196. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode-message.dto.ts.html +0 -124
  197. package/backend/coverage/lcov-report/src/application-state/dto/set-yolo-mode.dto.ts.html +0 -118
  198. package/backend/coverage/lcov-report/src/application-state/dto/set-zai-config.dto.ts.html +0 -109
  199. package/backend/coverage/lcov-report/src/application-state/index.html +0 -146
  200. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.service.ts.html +0 -1297
  201. package/backend/coverage/lcov-report/src/common/cache/cache-invalidation.subscriber.ts.html +0 -712
  202. package/backend/coverage/lcov-report/src/common/cache/etag-cache.service.ts.html +0 -379
  203. package/backend/coverage/lcov-report/src/common/cache/index.html +0 -146
  204. package/backend/coverage/lcov-report/src/common/common.module.ts.html +0 -121
  205. package/backend/coverage/lcov-report/src/common/index.html +0 -116
  206. package/backend/coverage/lcov-report/src/common/interceptors/etag-cache.interceptor.ts.html +0 -337
  207. package/backend/coverage/lcov-report/src/common/interceptors/index.html +0 -116
  208. package/backend/coverage/lcov-report/src/common/middleware/cache.middleware.ts.html +0 -265
  209. package/backend/coverage/lcov-report/src/common/middleware/index.html +0 -116
  210. package/backend/coverage/lcov-report/src/context-generation/context-generation.module.ts.html +0 -118
  211. package/backend/coverage/lcov-report/src/context-generation/context-generation.service.ts.html +0 -1501
  212. package/backend/coverage/lcov-report/src/context-generation/index.html +0 -131
  213. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.controller.ts.html +0 -427
  214. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.module.ts.html +0 -142
  215. package/backend/coverage/lcov-report/src/context-snippets/context-snippets.service.ts.html +0 -442
  216. package/backend/coverage/lcov-report/src/context-snippets/dto/context-snippet.dto.ts.html +0 -211
  217. package/backend/coverage/lcov-report/src/context-snippets/dto/index.html +0 -116
  218. package/backend/coverage/lcov-report/src/context-snippets/index.html +0 -146
  219. package/backend/coverage/lcov-report/src/context-templates/context-templates.controller.ts.html +0 -724
  220. package/backend/coverage/lcov-report/src/context-templates/context-templates.module.ts.html +0 -142
  221. package/backend/coverage/lcov-report/src/context-templates/context-templates.service.ts.html +0 -1015
  222. package/backend/coverage/lcov-report/src/context-templates/dto/context-template.dto.ts.html +0 -511
  223. package/backend/coverage/lcov-report/src/context-templates/dto/index.html +0 -116
  224. package/backend/coverage/lcov-report/src/context-templates/index.html +0 -146
  225. package/backend/coverage/lcov-report/src/core-entities/ai-action.entity.ts.html +0 -613
  226. package/backend/coverage/lcov-report/src/core-entities/application-state.entity.ts.html +0 -124
  227. package/backend/coverage/lcov-report/src/core-entities/base.entity.ts.html +0 -211
  228. package/backend/coverage/lcov-report/src/core-entities/context-snippet.entity.ts.html +0 -190
  229. package/backend/coverage/lcov-report/src/core-entities/context-template.entity.ts.html +0 -439
  230. package/backend/coverage/lcov-report/src/core-entities/custom-snippet.entity.ts.html +0 -205
  231. package/backend/coverage/lcov-report/src/core-entities/custom-variable.entity.ts.html +0 -241
  232. package/backend/coverage/lcov-report/src/core-entities/enums.ts.html +0 -553
  233. package/backend/coverage/lcov-report/src/core-entities/execution-log.entity.ts.html +0 -208
  234. package/backend/coverage/lcov-report/src/core-entities/index.html +0 -371
  235. package/backend/coverage/lcov-report/src/core-entities/index.ts.html +0 -136
  236. package/backend/coverage/lcov-report/src/core-entities/llm-call-log.entity.ts.html +0 -388
  237. package/backend/coverage/lcov-report/src/core-entities/mcp-config.entity.ts.html +0 -256
  238. package/backend/coverage/lcov-report/src/core-entities/mcp-tool.entity.ts.html +0 -256
  239. package/backend/coverage/lcov-report/src/core-entities/project.entity.ts.html +0 -181
  240. package/backend/coverage/lcov-report/src/core-entities/session-input.entity.ts.html +0 -745
  241. package/backend/coverage/lcov-report/src/core-entities/session.entity.ts.html +0 -688
  242. package/backend/coverage/lcov-report/src/core-entities/system-prompt.entity.ts.html +0 -349
  243. package/backend/coverage/lcov-report/src/core-entities/tool-hook.entity.ts.html +0 -235
  244. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.controller.ts.html +0 -442
  245. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.module.ts.html +0 -124
  246. package/backend/coverage/lcov-report/src/custom-snippets/custom-snippets.service.ts.html +0 -304
  247. package/backend/coverage/lcov-report/src/custom-snippets/dto/custom-snippet.dto.ts.html +0 -205
  248. package/backend/coverage/lcov-report/src/custom-snippets/dto/index.html +0 -116
  249. package/backend/coverage/lcov-report/src/custom-snippets/index.html +0 -146
  250. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.controller.ts.html +0 -463
  251. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.module.ts.html +0 -124
  252. package/backend/coverage/lcov-report/src/custom-variables/custom-variables.service.ts.html +0 -310
  253. package/backend/coverage/lcov-report/src/custom-variables/dto/custom-variable.dto.ts.html +0 -244
  254. package/backend/coverage/lcov-report/src/custom-variables/dto/index.html +0 -116
  255. package/backend/coverage/lcov-report/src/custom-variables/index.html +0 -146
  256. package/backend/coverage/lcov-report/src/events/events.gateway.ts.html +0 -295
  257. package/backend/coverage/lcov-report/src/events/events.module.ts.html +0 -109
  258. package/backend/coverage/lcov-report/src/events/index.html +0 -146
  259. package/backend/coverage/lcov-report/src/events/websocket.events.ts.html +0 -466
  260. package/backend/coverage/lcov-report/src/execution-logs/dto/execution-log.dto.ts.html +0 -130
  261. package/backend/coverage/lcov-report/src/execution-logs/dto/index.html +0 -116
  262. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.controller.ts.html +0 -130
  263. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.module.ts.html +0 -124
  264. package/backend/coverage/lcov-report/src/execution-logs/execution-logs.service.ts.html +0 -238
  265. package/backend/coverage/lcov-report/src/execution-logs/index.html +0 -146
  266. package/backend/coverage/lcov-report/src/gemini/gemini-llm.provider.ts.html +0 -553
  267. package/backend/coverage/lcov-report/src/gemini/gemini.module.ts.html +0 -109
  268. package/backend/coverage/lcov-report/src/gemini/index.html +0 -131
  269. package/backend/coverage/lcov-report/src/global-config/dto/index.html +0 -116
  270. package/backend/coverage/lcov-report/src/global-config/dto/update-global-config.dto.ts.html +0 -367
  271. package/backend/coverage/lcov-report/src/global-config/global-config.controller.ts.html +0 -220
  272. package/backend/coverage/lcov-report/src/global-config/global-config.module.ts.html +0 -115
  273. package/backend/coverage/lcov-report/src/global-config/global-config.service.ts.html +0 -397
  274. package/backend/coverage/lcov-report/src/global-config/index.html +0 -146
  275. package/backend/coverage/lcov-report/src/http-exception.filter.ts.html +0 -340
  276. package/backend/coverage/lcov-report/src/index.html +0 -206
  277. package/backend/coverage/lcov-report/src/interactive-chat/chat.module.ts.html +0 -187
  278. package/backend/coverage/lcov-report/src/interactive-chat/chat.service.ts.html +0 -1825
  279. package/backend/coverage/lcov-report/src/interactive-chat/index.html +0 -146
  280. package/backend/coverage/lcov-report/src/interactive-chat/streaming.controller.ts.html +0 -343
  281. package/backend/coverage/lcov-report/src/llm-call-logs/dto/index.html +0 -116
  282. package/backend/coverage/lcov-report/src/llm-call-logs/dto/llm-call-log.dto.ts.html +0 -214
  283. package/backend/coverage/lcov-report/src/llm-call-logs/index.html +0 -146
  284. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.controller.ts.html +0 -634
  285. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.module.ts.html +0 -124
  286. package/backend/coverage/lcov-report/src/llm-call-logs/llm-call-logs.service.ts.html +0 -643
  287. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/apply-diff.handler.ts.html +0 -1090
  288. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/ask-user.handler.ts.html +0 -433
  289. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/create-file.handler.ts.html +0 -757
  290. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/delete-file.handler.ts.html +0 -586
  291. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/discard-messages.handler.ts.html +0 -1153
  292. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/apply-diff.args.dto.ts.html +0 -124
  293. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/ask-user.args.dto.ts.html +0 -103
  294. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/create-file.args.dto.ts.html +0 -124
  295. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/delete-file.args.dto.ts.html +0 -106
  296. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/execute-code.args.dto.ts.html +0 -106
  297. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/final.args.dto.ts.html +0 -118
  298. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/generate-title.args.dto.ts.html +0 -190
  299. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/get-session-history.args.dto.ts.html +0 -196
  300. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/howto.args.dto.ts.html +0 -91
  301. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/index.html +0 -356
  302. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/new-session.args.dto.ts.html +0 -106
  303. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/overwrite-file.args.dto.ts.html +0 -124
  304. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/patch.args.dto.ts.html +0 -124
  305. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/quick-edit.args.dto.ts.html +0 -214
  306. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/request-context.args.dto.ts.html +0 -202
  307. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/run-command.args.dto.ts.html +0 -151
  308. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/sanitizer.decorator.ts.html +0 -181
  309. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/dto/write-todo.args.dto.ts.html +0 -130
  310. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/execute-code.handler.ts.html +0 -631
  311. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/final.handler.ts.html +0 -469
  312. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/generate-title.handler.ts.html +0 -448
  313. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-messages.handler.ts.html +0 -1351
  314. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/get-session-history.handler.ts.html +0 -868
  315. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/howto.handler.ts.html +0 -481
  316. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/index.html +0 -416
  317. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/invoke-subagent.handler.ts.html +0 -580
  318. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/list-sub-agents.handler.ts.html +0 -352
  319. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/context-aware.matcher.ts.html +0 -1054
  320. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/exact.matcher.ts.html +0 -331
  321. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/hybrid.matcher.ts.html +0 -403
  322. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.html +0 -176
  323. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/index.ts.html +0 -100
  324. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/matchers/normalized.matcher.ts.html +0 -724
  325. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/mcp-tool-action.handler.ts.html +0 -358
  326. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/new-session.handler.ts.html +0 -379
  327. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/overwrite-file.handler.ts.html +0 -838
  328. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/patch.handler.ts.html +0 -1702
  329. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/quick-edit.handler.ts.html +0 -1459
  330. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/request-context.handler.ts.html +0 -679
  331. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/run-command.handler.ts.html +0 -964
  332. package/backend/coverage/lcov-report/src/llm-orchestration/action-handlers/write-todo.handler.ts.html +0 -625
  333. package/backend/coverage/lcov-report/src/llm-orchestration/errors/handler-validation.error.ts.html +0 -103
  334. package/backend/coverage/lcov-report/src/llm-orchestration/errors/index.html +0 -116
  335. package/backend/coverage/lcov-report/src/llm-orchestration/history-compression.service.ts.html +0 -1645
  336. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/follow-up-post-execution.hook.ts.html +0 -238
  337. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/frontend-notification.hook.ts.html +0 -181
  338. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/index.html +0 -161
  339. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/invalid-tool-feedback.hook.ts.html +0 -313
  340. package/backend/coverage/lcov-report/src/llm-orchestration/hooks/yolo-mode-post-execution.hook.ts.html +0 -466
  341. package/backend/coverage/lcov-report/src/llm-orchestration/index.html +0 -176
  342. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.interfaces.ts.html +0 -319
  343. package/backend/coverage/lcov-report/src/llm-orchestration/llm-orchestration.module.ts.html +0 -706
  344. package/backend/coverage/lcov-report/src/llm-orchestration/llm-turn-processor.service.ts.html +0 -1150
  345. package/backend/coverage/lcov-report/src/llm-orchestration/parser/index.html +0 -131
  346. package/backend/coverage/lcov-report/src/llm-orchestration/parser/llm-output-parser.service.ts.html +0 -658
  347. package/backend/coverage/lcov-report/src/llm-orchestration/parser/parsing.constants.ts.html +0 -127
  348. package/backend/coverage/lcov-report/src/llm-orchestration/tool-schema.service.ts.html +0 -547
  349. package/backend/coverage/lcov-report/src/llm-provider/alibaba-llm.provider.ts.html +0 -1681
  350. package/backend/coverage/lcov-report/src/llm-provider/index.html +0 -236
  351. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.controller.ts.html +0 -187
  352. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.interface.ts.html +0 -361
  353. package/backend/coverage/lcov-report/src/llm-provider/llm-provider.module.ts.html +0 -175
  354. package/backend/coverage/lcov-report/src/llm-provider/ollama-llm.provider.ts.html +0 -1780
  355. package/backend/coverage/lcov-report/src/llm-provider/openai-llm.provider.ts.html +0 -1867
  356. package/backend/coverage/lcov-report/src/llm-provider/openrouter-llm.provider.ts.html +0 -1891
  357. package/backend/coverage/lcov-report/src/llm-provider/proxy-llm.provider.ts.html +0 -304
  358. package/backend/coverage/lcov-report/src/llm-provider/zai-llm.provider.ts.html +0 -1666
  359. package/backend/coverage/lcov-report/src/llm-responses/dto/index.html +0 -131
  360. package/backend/coverage/lcov-report/src/llm-responses/dto/submit-llm-response.dto.ts.html +0 -436
  361. package/backend/coverage/lcov-report/src/llm-responses/dto/sync-conversation.dto.ts.html +0 -319
  362. package/backend/coverage/lcov-report/src/llm-responses/index.html +0 -146
  363. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.controller.ts.html +0 -283
  364. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.module.ts.html +0 -184
  365. package/backend/coverage/lcov-report/src/llm-responses/llm-responses.service.ts.html +0 -1474
  366. package/backend/coverage/lcov-report/src/main.ts.html +0 -463
  367. package/backend/coverage/lcov-report/src/mcp/dto/batch-update-mcp-tools.dto.ts.html +0 -145
  368. package/backend/coverage/lcov-report/src/mcp/dto/create-mcp-config.dto.ts.html +0 -127
  369. package/backend/coverage/lcov-report/src/mcp/dto/index.html +0 -146
  370. package/backend/coverage/lcov-report/src/mcp/dto/update-mcp-config.dto.ts.html +0 -112
  371. package/backend/coverage/lcov-report/src/mcp/index.html +0 -146
  372. package/backend/coverage/lcov-report/src/mcp/mcp.controller.ts.html +0 -340
  373. package/backend/coverage/lcov-report/src/mcp/mcp.module.ts.html +0 -124
  374. package/backend/coverage/lcov-report/src/mcp/mcp.service.ts.html +0 -1345
  375. package/backend/coverage/lcov-report/src/message-bus/dto/index.html +0 -116
  376. package/backend/coverage/lcov-report/src/message-bus/dto/submit-message.dto.ts.html +0 -109
  377. package/backend/coverage/lcov-report/src/message-bus/index.html +0 -146
  378. package/backend/coverage/lcov-report/src/message-bus/message-bus.controller.ts.html +0 -148
  379. package/backend/coverage/lcov-report/src/message-bus/message-bus.module.ts.html +0 -115
  380. package/backend/coverage/lcov-report/src/message-bus/message-bus.service.ts.html +0 -151
  381. package/backend/coverage/lcov-report/src/projects/dto/index.html +0 -116
  382. package/backend/coverage/lcov-report/src/projects/dto/project.dto.ts.html +0 -196
  383. package/backend/coverage/lcov-report/src/projects/index.html +0 -146
  384. package/backend/coverage/lcov-report/src/projects/projects.controller.ts.html +0 -322
  385. package/backend/coverage/lcov-report/src/projects/projects.module.ts.html +0 -124
  386. package/backend/coverage/lcov-report/src/projects/projects.service.ts.html +0 -235
  387. package/backend/coverage/lcov-report/src/seeding/context-snippet-seeding.service.ts.html +0 -280
  388. package/backend/coverage/lcov-report/src/seeding/context-template-seeding.service.ts.html +0 -439
  389. package/backend/coverage/lcov-report/src/seeding/custom-snippet-seeding.service.ts.html +0 -271
  390. package/backend/coverage/lcov-report/src/seeding/custom-variable-seeding.service.ts.html +0 -271
  391. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/compress.ts.html +0 -172
  392. package/backend/coverage/lcov-report/src/seeding/data/context-snippets/index.html +0 -116
  393. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-followup_ad-hoc-focused-context.ts.html +0 -157
  394. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_condensed-project-context.ts.html +0 -148
  395. package/backend/coverage/lcov-report/src/seeding/data/context-templates/default-initial_full-project-context.ts.html +0 -151
  396. package/backend/coverage/lcov-report/src/seeding/data/context-templates/index.html +0 -161
  397. package/backend/coverage/lcov-report/src/seeding/data/context-templates/open-pr-command.ts.html +0 -247
  398. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/default_rglob.ts.html +0 -94
  399. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-for.ts.html +0 -100
  400. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-if.ts.html +0 -97
  401. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/eta-ifelse.ts.html +0 -100
  402. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/everest-playwright-auth.ts.html +0 -304
  403. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/git-diff.ts.html +0 -94
  404. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/index.html +0 -341
  405. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-mcp.ts.html +0 -100
  406. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/it-tools.ts.html +0 -97
  407. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-exclude.ts.html +0 -94
  408. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search-glob.ts.html +0 -94
  409. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/rg-search.ts.html +0 -94
  410. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/run-command.ts.html +0 -94
  411. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/tree.ts.html +0 -94
  412. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-adhoc-incl.ts.html +0 -100
  413. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-cmd-output-incl.ts.html +0 -94
  414. package/backend/coverage/lcov-report/src/seeding/data/custom-snippets/usr-input-incl.ts.html +0 -94
  415. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-auto-execute-code.ts.html +0 -94
  416. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/default-plan-mode.ts.html +0 -97
  417. package/backend/coverage/lcov-report/src/seeding/data/custom-variables/index.html +0 -131
  418. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/default-configs.ts.html +0 -121
  419. package/backend/coverage/lcov-report/src/seeding/data/mcp-configs/index.html +0 -116
  420. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/browser-use.ts.html +0 -115
  421. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/explore-codebase.ts.html +0 -136
  422. package/backend/coverage/lcov-report/src/seeding/data/sub-agents/index.html +0 -131
  423. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/browser-use-agent.ts.html +0 -190
  424. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/default_native_tool_agent.ts.html +0 -421
  425. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/explore-codebase-agent.ts.html +0 -265
  426. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/index.html +0 -161
  427. package/backend/coverage/lcov-report/src/seeding/data/system-prompts/master-agent.ts.html +0 -388
  428. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/eslint-hook.ts.html +0 -265
  429. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/example-hook.ts.html +0 -274
  430. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/index.html +0 -146
  431. package/backend/coverage/lcov-report/src/seeding/data/tool-hooks/readme.ts.html +0 -250
  432. package/backend/coverage/lcov-report/src/seeding/index.html +0 -236
  433. package/backend/coverage/lcov-report/src/seeding/mcp-config-seeding.service.ts.html +0 -193
  434. package/backend/coverage/lcov-report/src/seeding/seeding.module.ts.html +0 -211
  435. package/backend/coverage/lcov-report/src/seeding/seeding.service.ts.html +0 -187
  436. package/backend/coverage/lcov-report/src/seeding/sub-agent-seeding.service.ts.html +0 -742
  437. package/backend/coverage/lcov-report/src/seeding/system-prompt-seeding.service.ts.html +0 -397
  438. package/backend/coverage/lcov-report/src/session-followup/index.html +0 -131
  439. package/backend/coverage/lcov-report/src/session-followup/session-followup.module.ts.html +0 -130
  440. package/backend/coverage/lcov-report/src/session-followup/session-followup.service.ts.html +0 -718
  441. package/backend/coverage/lcov-report/src/session-inputs/dto/index.html +0 -116
  442. package/backend/coverage/lcov-report/src/session-inputs/dto/session-input.dto.ts.html +0 -577
  443. package/backend/coverage/lcov-report/src/session-inputs/index.html +0 -176
  444. package/backend/coverage/lcov-report/src/session-inputs/session-input-context.service.ts.html +0 -832
  445. package/backend/coverage/lcov-report/src/session-inputs/session-input.subscriber.ts.html +0 -220
  446. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.controller.ts.html +0 -685
  447. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.module.ts.html +0 -229
  448. package/backend/coverage/lcov-report/src/session-inputs/session-inputs.service.ts.html +0 -1981
  449. package/backend/coverage/lcov-report/src/session-transfer/index.html +0 -131
  450. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.module.ts.html +0 -160
  451. package/backend/coverage/lcov-report/src/session-transfer/session-transfer.service.ts.html +0 -883
  452. package/backend/coverage/lcov-report/src/sessions/dto/index.html +0 -116
  453. package/backend/coverage/lcov-report/src/sessions/dto/session.dto.ts.html +0 -769
  454. package/backend/coverage/lcov-report/src/sessions/index.html +0 -146
  455. package/backend/coverage/lcov-report/src/sessions/sessions.controller.ts.html +0 -1306
  456. package/backend/coverage/lcov-report/src/sessions/sessions.module.ts.html +0 -220
  457. package/backend/coverage/lcov-report/src/sessions/sessions.service.ts.html +0 -2797
  458. package/backend/coverage/lcov-report/src/sub-agents/dto/create-sub-agent.dto.ts.html +0 -355
  459. package/backend/coverage/lcov-report/src/sub-agents/dto/index.html +0 -131
  460. package/backend/coverage/lcov-report/src/sub-agents/dto/update-sub-agent.dto.ts.html +0 -295
  461. package/backend/coverage/lcov-report/src/sub-agents/index.html +0 -221
  462. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-run.entity.ts.html +0 -463
  463. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runner.service.ts.html +0 -2428
  464. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.controller.ts.html +0 -580
  465. package/backend/coverage/lcov-report/src/sub-agents/sub-agent-runs.service.ts.html +0 -550
  466. package/backend/coverage/lcov-report/src/sub-agents/sub-agent.entity.ts.html +0 -475
  467. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.controller.ts.html +0 -373
  468. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.module.ts.html +0 -205
  469. package/backend/coverage/lcov-report/src/sub-agents/sub-agents.service.ts.html +0 -619
  470. package/backend/coverage/lcov-report/src/syntax-validation/index.html +0 -131
  471. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.module.ts.html +0 -109
  472. package/backend/coverage/lcov-report/src/syntax-validation/syntax-validation.service.ts.html +0 -724
  473. package/backend/coverage/lcov-report/src/system-prompts/dto/index.html +0 -176
  474. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-mcp-tools.dto.ts.html +0 -157
  475. package/backend/coverage/lcov-report/src/system-prompts/dto/set-enabled-tools.dto.ts.html +0 -148
  476. package/backend/coverage/lcov-report/src/system-prompts/dto/system-prompt.dto.ts.html +0 -517
  477. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-mcp-tool.dto.ts.html +0 -121
  478. package/backend/coverage/lcov-report/src/system-prompts/dto/toggle-tool.dto.ts.html +0 -118
  479. package/backend/coverage/lcov-report/src/system-prompts/index.html +0 -146
  480. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.controller.ts.html +0 -1060
  481. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.module.ts.html +0 -160
  482. package/backend/coverage/lcov-report/src/system-prompts/system-prompts.service.ts.html +0 -2254
  483. package/backend/coverage/lcov-report/src/timeout.interceptor.ts.html +0 -178
  484. package/backend/coverage/lcov-report/src/tool-hooks/dto/create-tool-hook.dto.ts.html +0 -181
  485. package/backend/coverage/lcov-report/src/tool-hooks/dto/index.html +0 -131
  486. package/backend/coverage/lcov-report/src/tool-hooks/dto/update-tool-hook.dto.ts.html +0 -178
  487. package/backend/coverage/lcov-report/src/tool-hooks/index.html +0 -146
  488. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.controller.ts.html +0 -481
  489. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.module.ts.html +0 -127
  490. package/backend/coverage/lcov-report/src/tool-hooks/tool-hooks.service.ts.html +0 -1222
  491. package/backend/coverage/lcov-report/src/tracing.ts.html +0 -214
  492. package/backend/coverage/lcov-report/src/types/express-multer.d.ts.html +0 -130
  493. package/backend/coverage/lcov-report/src/types/index.html +0 -116
  494. package/backend/coverage/lcov-report/src/utils/ai-format-generator.ts.html +0 -253
  495. package/backend/coverage/lcov-report/src/utils/fuzzy-search.ts.html +0 -310
  496. package/backend/coverage/lcov-report/src/utils/index.html +0 -191
  497. package/backend/coverage/lcov-report/src/utils/index.ts.html +0 -100
  498. package/backend/coverage/lcov-report/src/utils/short-id.ts.html +0 -109
  499. package/backend/coverage/lcov-report/src/utils/spawn-with-kill.ts.html +0 -412
  500. package/backend/coverage/lcov-report/src/utils/trace.decorator.ts.html +0 -223
  501. package/backend/coverage/lcov-report/src/visual-editor/index.html +0 -146
  502. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.controller.ts.html +0 -409
  503. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.dto.ts.html +0 -130
  504. package/backend/coverage/lcov-report/src/visual-editor/visual-editor.module.ts.html +0 -118
  505. package/backend/coverage/lcov-report/src/workspace/dto/file-tree.dto.ts.html +0 -112
  506. package/backend/coverage/lcov-report/src/workspace/dto/index.html +0 -131
  507. package/backend/coverage/lcov-report/src/workspace/dto/search-workspace.dto.ts.html +0 -193
  508. package/backend/coverage/lcov-report/src/workspace/index.html +0 -146
  509. package/backend/coverage/lcov-report/src/workspace/workspace.controller.ts.html +0 -394
  510. package/backend/coverage/lcov-report/src/workspace/workspace.module.ts.html +0 -121
  511. package/backend/coverage/lcov-report/src/workspace/workspace.service.ts.html +0 -1027
  512. package/backend/coverage/lcov.info +0 -20220
  513. package/backend/packages/tokenpatch/CODEMAP.md +0 -25
  514. package/daemon/CODEMAP.md +0 -23
  515. package/visual-editor-proxy/CODEMAP.md +0 -21
@@ -1,2428 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/sub-agents/sub-agent-runner.service.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/sub-agents</a> sub-agent-runner.service.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">75.39% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>190/252</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">54.36% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>81/149</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">66.66% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>12/18</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">77.04% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>188/244</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line medium'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a>
150
- <a name='L85'></a><a href='#L85'>85</a>
151
- <a name='L86'></a><a href='#L86'>86</a>
152
- <a name='L87'></a><a href='#L87'>87</a>
153
- <a name='L88'></a><a href='#L88'>88</a>
154
- <a name='L89'></a><a href='#L89'>89</a>
155
- <a name='L90'></a><a href='#L90'>90</a>
156
- <a name='L91'></a><a href='#L91'>91</a>
157
- <a name='L92'></a><a href='#L92'>92</a>
158
- <a name='L93'></a><a href='#L93'>93</a>
159
- <a name='L94'></a><a href='#L94'>94</a>
160
- <a name='L95'></a><a href='#L95'>95</a>
161
- <a name='L96'></a><a href='#L96'>96</a>
162
- <a name='L97'></a><a href='#L97'>97</a>
163
- <a name='L98'></a><a href='#L98'>98</a>
164
- <a name='L99'></a><a href='#L99'>99</a>
165
- <a name='L100'></a><a href='#L100'>100</a>
166
- <a name='L101'></a><a href='#L101'>101</a>
167
- <a name='L102'></a><a href='#L102'>102</a>
168
- <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a>
170
- <a name='L105'></a><a href='#L105'>105</a>
171
- <a name='L106'></a><a href='#L106'>106</a>
172
- <a name='L107'></a><a href='#L107'>107</a>
173
- <a name='L108'></a><a href='#L108'>108</a>
174
- <a name='L109'></a><a href='#L109'>109</a>
175
- <a name='L110'></a><a href='#L110'>110</a>
176
- <a name='L111'></a><a href='#L111'>111</a>
177
- <a name='L112'></a><a href='#L112'>112</a>
178
- <a name='L113'></a><a href='#L113'>113</a>
179
- <a name='L114'></a><a href='#L114'>114</a>
180
- <a name='L115'></a><a href='#L115'>115</a>
181
- <a name='L116'></a><a href='#L116'>116</a>
182
- <a name='L117'></a><a href='#L117'>117</a>
183
- <a name='L118'></a><a href='#L118'>118</a>
184
- <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a>
187
- <a name='L122'></a><a href='#L122'>122</a>
188
- <a name='L123'></a><a href='#L123'>123</a>
189
- <a name='L124'></a><a href='#L124'>124</a>
190
- <a name='L125'></a><a href='#L125'>125</a>
191
- <a name='L126'></a><a href='#L126'>126</a>
192
- <a name='L127'></a><a href='#L127'>127</a>
193
- <a name='L128'></a><a href='#L128'>128</a>
194
- <a name='L129'></a><a href='#L129'>129</a>
195
- <a name='L130'></a><a href='#L130'>130</a>
196
- <a name='L131'></a><a href='#L131'>131</a>
197
- <a name='L132'></a><a href='#L132'>132</a>
198
- <a name='L133'></a><a href='#L133'>133</a>
199
- <a name='L134'></a><a href='#L134'>134</a>
200
- <a name='L135'></a><a href='#L135'>135</a>
201
- <a name='L136'></a><a href='#L136'>136</a>
202
- <a name='L137'></a><a href='#L137'>137</a>
203
- <a name='L138'></a><a href='#L138'>138</a>
204
- <a name='L139'></a><a href='#L139'>139</a>
205
- <a name='L140'></a><a href='#L140'>140</a>
206
- <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a>
208
- <a name='L143'></a><a href='#L143'>143</a>
209
- <a name='L144'></a><a href='#L144'>144</a>
210
- <a name='L145'></a><a href='#L145'>145</a>
211
- <a name='L146'></a><a href='#L146'>146</a>
212
- <a name='L147'></a><a href='#L147'>147</a>
213
- <a name='L148'></a><a href='#L148'>148</a>
214
- <a name='L149'></a><a href='#L149'>149</a>
215
- <a name='L150'></a><a href='#L150'>150</a>
216
- <a name='L151'></a><a href='#L151'>151</a>
217
- <a name='L152'></a><a href='#L152'>152</a>
218
- <a name='L153'></a><a href='#L153'>153</a>
219
- <a name='L154'></a><a href='#L154'>154</a>
220
- <a name='L155'></a><a href='#L155'>155</a>
221
- <a name='L156'></a><a href='#L156'>156</a>
222
- <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a>
224
- <a name='L159'></a><a href='#L159'>159</a>
225
- <a name='L160'></a><a href='#L160'>160</a>
226
- <a name='L161'></a><a href='#L161'>161</a>
227
- <a name='L162'></a><a href='#L162'>162</a>
228
- <a name='L163'></a><a href='#L163'>163</a>
229
- <a name='L164'></a><a href='#L164'>164</a>
230
- <a name='L165'></a><a href='#L165'>165</a>
231
- <a name='L166'></a><a href='#L166'>166</a>
232
- <a name='L167'></a><a href='#L167'>167</a>
233
- <a name='L168'></a><a href='#L168'>168</a>
234
- <a name='L169'></a><a href='#L169'>169</a>
235
- <a name='L170'></a><a href='#L170'>170</a>
236
- <a name='L171'></a><a href='#L171'>171</a>
237
- <a name='L172'></a><a href='#L172'>172</a>
238
- <a name='L173'></a><a href='#L173'>173</a>
239
- <a name='L174'></a><a href='#L174'>174</a>
240
- <a name='L175'></a><a href='#L175'>175</a>
241
- <a name='L176'></a><a href='#L176'>176</a>
242
- <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a>
244
- <a name='L179'></a><a href='#L179'>179</a>
245
- <a name='L180'></a><a href='#L180'>180</a>
246
- <a name='L181'></a><a href='#L181'>181</a>
247
- <a name='L182'></a><a href='#L182'>182</a>
248
- <a name='L183'></a><a href='#L183'>183</a>
249
- <a name='L184'></a><a href='#L184'>184</a>
250
- <a name='L185'></a><a href='#L185'>185</a>
251
- <a name='L186'></a><a href='#L186'>186</a>
252
- <a name='L187'></a><a href='#L187'>187</a>
253
- <a name='L188'></a><a href='#L188'>188</a>
254
- <a name='L189'></a><a href='#L189'>189</a>
255
- <a name='L190'></a><a href='#L190'>190</a>
256
- <a name='L191'></a><a href='#L191'>191</a>
257
- <a name='L192'></a><a href='#L192'>192</a>
258
- <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a>
260
- <a name='L195'></a><a href='#L195'>195</a>
261
- <a name='L196'></a><a href='#L196'>196</a>
262
- <a name='L197'></a><a href='#L197'>197</a>
263
- <a name='L198'></a><a href='#L198'>198</a>
264
- <a name='L199'></a><a href='#L199'>199</a>
265
- <a name='L200'></a><a href='#L200'>200</a>
266
- <a name='L201'></a><a href='#L201'>201</a>
267
- <a name='L202'></a><a href='#L202'>202</a>
268
- <a name='L203'></a><a href='#L203'>203</a>
269
- <a name='L204'></a><a href='#L204'>204</a>
270
- <a name='L205'></a><a href='#L205'>205</a>
271
- <a name='L206'></a><a href='#L206'>206</a>
272
- <a name='L207'></a><a href='#L207'>207</a>
273
- <a name='L208'></a><a href='#L208'>208</a>
274
- <a name='L209'></a><a href='#L209'>209</a>
275
- <a name='L210'></a><a href='#L210'>210</a>
276
- <a name='L211'></a><a href='#L211'>211</a>
277
- <a name='L212'></a><a href='#L212'>212</a>
278
- <a name='L213'></a><a href='#L213'>213</a>
279
- <a name='L214'></a><a href='#L214'>214</a>
280
- <a name='L215'></a><a href='#L215'>215</a>
281
- <a name='L216'></a><a href='#L216'>216</a>
282
- <a name='L217'></a><a href='#L217'>217</a>
283
- <a name='L218'></a><a href='#L218'>218</a>
284
- <a name='L219'></a><a href='#L219'>219</a>
285
- <a name='L220'></a><a href='#L220'>220</a>
286
- <a name='L221'></a><a href='#L221'>221</a>
287
- <a name='L222'></a><a href='#L222'>222</a>
288
- <a name='L223'></a><a href='#L223'>223</a>
289
- <a name='L224'></a><a href='#L224'>224</a>
290
- <a name='L225'></a><a href='#L225'>225</a>
291
- <a name='L226'></a><a href='#L226'>226</a>
292
- <a name='L227'></a><a href='#L227'>227</a>
293
- <a name='L228'></a><a href='#L228'>228</a>
294
- <a name='L229'></a><a href='#L229'>229</a>
295
- <a name='L230'></a><a href='#L230'>230</a>
296
- <a name='L231'></a><a href='#L231'>231</a>
297
- <a name='L232'></a><a href='#L232'>232</a>
298
- <a name='L233'></a><a href='#L233'>233</a>
299
- <a name='L234'></a><a href='#L234'>234</a>
300
- <a name='L235'></a><a href='#L235'>235</a>
301
- <a name='L236'></a><a href='#L236'>236</a>
302
- <a name='L237'></a><a href='#L237'>237</a>
303
- <a name='L238'></a><a href='#L238'>238</a>
304
- <a name='L239'></a><a href='#L239'>239</a>
305
- <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a>
307
- <a name='L242'></a><a href='#L242'>242</a>
308
- <a name='L243'></a><a href='#L243'>243</a>
309
- <a name='L244'></a><a href='#L244'>244</a>
310
- <a name='L245'></a><a href='#L245'>245</a>
311
- <a name='L246'></a><a href='#L246'>246</a>
312
- <a name='L247'></a><a href='#L247'>247</a>
313
- <a name='L248'></a><a href='#L248'>248</a>
314
- <a name='L249'></a><a href='#L249'>249</a>
315
- <a name='L250'></a><a href='#L250'>250</a>
316
- <a name='L251'></a><a href='#L251'>251</a>
317
- <a name='L252'></a><a href='#L252'>252</a>
318
- <a name='L253'></a><a href='#L253'>253</a>
319
- <a name='L254'></a><a href='#L254'>254</a>
320
- <a name='L255'></a><a href='#L255'>255</a>
321
- <a name='L256'></a><a href='#L256'>256</a>
322
- <a name='L257'></a><a href='#L257'>257</a>
323
- <a name='L258'></a><a href='#L258'>258</a>
324
- <a name='L259'></a><a href='#L259'>259</a>
325
- <a name='L260'></a><a href='#L260'>260</a>
326
- <a name='L261'></a><a href='#L261'>261</a>
327
- <a name='L262'></a><a href='#L262'>262</a>
328
- <a name='L263'></a><a href='#L263'>263</a>
329
- <a name='L264'></a><a href='#L264'>264</a>
330
- <a name='L265'></a><a href='#L265'>265</a>
331
- <a name='L266'></a><a href='#L266'>266</a>
332
- <a name='L267'></a><a href='#L267'>267</a>
333
- <a name='L268'></a><a href='#L268'>268</a>
334
- <a name='L269'></a><a href='#L269'>269</a>
335
- <a name='L270'></a><a href='#L270'>270</a>
336
- <a name='L271'></a><a href='#L271'>271</a>
337
- <a name='L272'></a><a href='#L272'>272</a>
338
- <a name='L273'></a><a href='#L273'>273</a>
339
- <a name='L274'></a><a href='#L274'>274</a>
340
- <a name='L275'></a><a href='#L275'>275</a>
341
- <a name='L276'></a><a href='#L276'>276</a>
342
- <a name='L277'></a><a href='#L277'>277</a>
343
- <a name='L278'></a><a href='#L278'>278</a>
344
- <a name='L279'></a><a href='#L279'>279</a>
345
- <a name='L280'></a><a href='#L280'>280</a>
346
- <a name='L281'></a><a href='#L281'>281</a>
347
- <a name='L282'></a><a href='#L282'>282</a>
348
- <a name='L283'></a><a href='#L283'>283</a>
349
- <a name='L284'></a><a href='#L284'>284</a>
350
- <a name='L285'></a><a href='#L285'>285</a>
351
- <a name='L286'></a><a href='#L286'>286</a>
352
- <a name='L287'></a><a href='#L287'>287</a>
353
- <a name='L288'></a><a href='#L288'>288</a>
354
- <a name='L289'></a><a href='#L289'>289</a>
355
- <a name='L290'></a><a href='#L290'>290</a>
356
- <a name='L291'></a><a href='#L291'>291</a>
357
- <a name='L292'></a><a href='#L292'>292</a>
358
- <a name='L293'></a><a href='#L293'>293</a>
359
- <a name='L294'></a><a href='#L294'>294</a>
360
- <a name='L295'></a><a href='#L295'>295</a>
361
- <a name='L296'></a><a href='#L296'>296</a>
362
- <a name='L297'></a><a href='#L297'>297</a>
363
- <a name='L298'></a><a href='#L298'>298</a>
364
- <a name='L299'></a><a href='#L299'>299</a>
365
- <a name='L300'></a><a href='#L300'>300</a>
366
- <a name='L301'></a><a href='#L301'>301</a>
367
- <a name='L302'></a><a href='#L302'>302</a>
368
- <a name='L303'></a><a href='#L303'>303</a>
369
- <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a>
371
- <a name='L306'></a><a href='#L306'>306</a>
372
- <a name='L307'></a><a href='#L307'>307</a>
373
- <a name='L308'></a><a href='#L308'>308</a>
374
- <a name='L309'></a><a href='#L309'>309</a>
375
- <a name='L310'></a><a href='#L310'>310</a>
376
- <a name='L311'></a><a href='#L311'>311</a>
377
- <a name='L312'></a><a href='#L312'>312</a>
378
- <a name='L313'></a><a href='#L313'>313</a>
379
- <a name='L314'></a><a href='#L314'>314</a>
380
- <a name='L315'></a><a href='#L315'>315</a>
381
- <a name='L316'></a><a href='#L316'>316</a>
382
- <a name='L317'></a><a href='#L317'>317</a>
383
- <a name='L318'></a><a href='#L318'>318</a>
384
- <a name='L319'></a><a href='#L319'>319</a>
385
- <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a>
389
- <a name='L324'></a><a href='#L324'>324</a>
390
- <a name='L325'></a><a href='#L325'>325</a>
391
- <a name='L326'></a><a href='#L326'>326</a>
392
- <a name='L327'></a><a href='#L327'>327</a>
393
- <a name='L328'></a><a href='#L328'>328</a>
394
- <a name='L329'></a><a href='#L329'>329</a>
395
- <a name='L330'></a><a href='#L330'>330</a>
396
- <a name='L331'></a><a href='#L331'>331</a>
397
- <a name='L332'></a><a href='#L332'>332</a>
398
- <a name='L333'></a><a href='#L333'>333</a>
399
- <a name='L334'></a><a href='#L334'>334</a>
400
- <a name='L335'></a><a href='#L335'>335</a>
401
- <a name='L336'></a><a href='#L336'>336</a>
402
- <a name='L337'></a><a href='#L337'>337</a>
403
- <a name='L338'></a><a href='#L338'>338</a>
404
- <a name='L339'></a><a href='#L339'>339</a>
405
- <a name='L340'></a><a href='#L340'>340</a>
406
- <a name='L341'></a><a href='#L341'>341</a>
407
- <a name='L342'></a><a href='#L342'>342</a>
408
- <a name='L343'></a><a href='#L343'>343</a>
409
- <a name='L344'></a><a href='#L344'>344</a>
410
- <a name='L345'></a><a href='#L345'>345</a>
411
- <a name='L346'></a><a href='#L346'>346</a>
412
- <a name='L347'></a><a href='#L347'>347</a>
413
- <a name='L348'></a><a href='#L348'>348</a>
414
- <a name='L349'></a><a href='#L349'>349</a>
415
- <a name='L350'></a><a href='#L350'>350</a>
416
- <a name='L351'></a><a href='#L351'>351</a>
417
- <a name='L352'></a><a href='#L352'>352</a>
418
- <a name='L353'></a><a href='#L353'>353</a>
419
- <a name='L354'></a><a href='#L354'>354</a>
420
- <a name='L355'></a><a href='#L355'>355</a>
421
- <a name='L356'></a><a href='#L356'>356</a>
422
- <a name='L357'></a><a href='#L357'>357</a>
423
- <a name='L358'></a><a href='#L358'>358</a>
424
- <a name='L359'></a><a href='#L359'>359</a>
425
- <a name='L360'></a><a href='#L360'>360</a>
426
- <a name='L361'></a><a href='#L361'>361</a>
427
- <a name='L362'></a><a href='#L362'>362</a>
428
- <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a>
430
- <a name='L365'></a><a href='#L365'>365</a>
431
- <a name='L366'></a><a href='#L366'>366</a>
432
- <a name='L367'></a><a href='#L367'>367</a>
433
- <a name='L368'></a><a href='#L368'>368</a>
434
- <a name='L369'></a><a href='#L369'>369</a>
435
- <a name='L370'></a><a href='#L370'>370</a>
436
- <a name='L371'></a><a href='#L371'>371</a>
437
- <a name='L372'></a><a href='#L372'>372</a>
438
- <a name='L373'></a><a href='#L373'>373</a>
439
- <a name='L374'></a><a href='#L374'>374</a>
440
- <a name='L375'></a><a href='#L375'>375</a>
441
- <a name='L376'></a><a href='#L376'>376</a>
442
- <a name='L377'></a><a href='#L377'>377</a>
443
- <a name='L378'></a><a href='#L378'>378</a>
444
- <a name='L379'></a><a href='#L379'>379</a>
445
- <a name='L380'></a><a href='#L380'>380</a>
446
- <a name='L381'></a><a href='#L381'>381</a>
447
- <a name='L382'></a><a href='#L382'>382</a>
448
- <a name='L383'></a><a href='#L383'>383</a>
449
- <a name='L384'></a><a href='#L384'>384</a>
450
- <a name='L385'></a><a href='#L385'>385</a>
451
- <a name='L386'></a><a href='#L386'>386</a>
452
- <a name='L387'></a><a href='#L387'>387</a>
453
- <a name='L388'></a><a href='#L388'>388</a>
454
- <a name='L389'></a><a href='#L389'>389</a>
455
- <a name='L390'></a><a href='#L390'>390</a>
456
- <a name='L391'></a><a href='#L391'>391</a>
457
- <a name='L392'></a><a href='#L392'>392</a>
458
- <a name='L393'></a><a href='#L393'>393</a>
459
- <a name='L394'></a><a href='#L394'>394</a>
460
- <a name='L395'></a><a href='#L395'>395</a>
461
- <a name='L396'></a><a href='#L396'>396</a>
462
- <a name='L397'></a><a href='#L397'>397</a>
463
- <a name='L398'></a><a href='#L398'>398</a>
464
- <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a>
466
- <a name='L401'></a><a href='#L401'>401</a>
467
- <a name='L402'></a><a href='#L402'>402</a>
468
- <a name='L403'></a><a href='#L403'>403</a>
469
- <a name='L404'></a><a href='#L404'>404</a>
470
- <a name='L405'></a><a href='#L405'>405</a>
471
- <a name='L406'></a><a href='#L406'>406</a>
472
- <a name='L407'></a><a href='#L407'>407</a>
473
- <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a>
475
- <a name='L410'></a><a href='#L410'>410</a>
476
- <a name='L411'></a><a href='#L411'>411</a>
477
- <a name='L412'></a><a href='#L412'>412</a>
478
- <a name='L413'></a><a href='#L413'>413</a>
479
- <a name='L414'></a><a href='#L414'>414</a>
480
- <a name='L415'></a><a href='#L415'>415</a>
481
- <a name='L416'></a><a href='#L416'>416</a>
482
- <a name='L417'></a><a href='#L417'>417</a>
483
- <a name='L418'></a><a href='#L418'>418</a>
484
- <a name='L419'></a><a href='#L419'>419</a>
485
- <a name='L420'></a><a href='#L420'>420</a>
486
- <a name='L421'></a><a href='#L421'>421</a>
487
- <a name='L422'></a><a href='#L422'>422</a>
488
- <a name='L423'></a><a href='#L423'>423</a>
489
- <a name='L424'></a><a href='#L424'>424</a>
490
- <a name='L425'></a><a href='#L425'>425</a>
491
- <a name='L426'></a><a href='#L426'>426</a>
492
- <a name='L427'></a><a href='#L427'>427</a>
493
- <a name='L428'></a><a href='#L428'>428</a>
494
- <a name='L429'></a><a href='#L429'>429</a>
495
- <a name='L430'></a><a href='#L430'>430</a>
496
- <a name='L431'></a><a href='#L431'>431</a>
497
- <a name='L432'></a><a href='#L432'>432</a>
498
- <a name='L433'></a><a href='#L433'>433</a>
499
- <a name='L434'></a><a href='#L434'>434</a>
500
- <a name='L435'></a><a href='#L435'>435</a>
501
- <a name='L436'></a><a href='#L436'>436</a>
502
- <a name='L437'></a><a href='#L437'>437</a>
503
- <a name='L438'></a><a href='#L438'>438</a>
504
- <a name='L439'></a><a href='#L439'>439</a>
505
- <a name='L440'></a><a href='#L440'>440</a>
506
- <a name='L441'></a><a href='#L441'>441</a>
507
- <a name='L442'></a><a href='#L442'>442</a>
508
- <a name='L443'></a><a href='#L443'>443</a>
509
- <a name='L444'></a><a href='#L444'>444</a>
510
- <a name='L445'></a><a href='#L445'>445</a>
511
- <a name='L446'></a><a href='#L446'>446</a>
512
- <a name='L447'></a><a href='#L447'>447</a>
513
- <a name='L448'></a><a href='#L448'>448</a>
514
- <a name='L449'></a><a href='#L449'>449</a>
515
- <a name='L450'></a><a href='#L450'>450</a>
516
- <a name='L451'></a><a href='#L451'>451</a>
517
- <a name='L452'></a><a href='#L452'>452</a>
518
- <a name='L453'></a><a href='#L453'>453</a>
519
- <a name='L454'></a><a href='#L454'>454</a>
520
- <a name='L455'></a><a href='#L455'>455</a>
521
- <a name='L456'></a><a href='#L456'>456</a>
522
- <a name='L457'></a><a href='#L457'>457</a>
523
- <a name='L458'></a><a href='#L458'>458</a>
524
- <a name='L459'></a><a href='#L459'>459</a>
525
- <a name='L460'></a><a href='#L460'>460</a>
526
- <a name='L461'></a><a href='#L461'>461</a>
527
- <a name='L462'></a><a href='#L462'>462</a>
528
- <a name='L463'></a><a href='#L463'>463</a>
529
- <a name='L464'></a><a href='#L464'>464</a>
530
- <a name='L465'></a><a href='#L465'>465</a>
531
- <a name='L466'></a><a href='#L466'>466</a>
532
- <a name='L467'></a><a href='#L467'>467</a>
533
- <a name='L468'></a><a href='#L468'>468</a>
534
- <a name='L469'></a><a href='#L469'>469</a>
535
- <a name='L470'></a><a href='#L470'>470</a>
536
- <a name='L471'></a><a href='#L471'>471</a>
537
- <a name='L472'></a><a href='#L472'>472</a>
538
- <a name='L473'></a><a href='#L473'>473</a>
539
- <a name='L474'></a><a href='#L474'>474</a>
540
- <a name='L475'></a><a href='#L475'>475</a>
541
- <a name='L476'></a><a href='#L476'>476</a>
542
- <a name='L477'></a><a href='#L477'>477</a>
543
- <a name='L478'></a><a href='#L478'>478</a>
544
- <a name='L479'></a><a href='#L479'>479</a>
545
- <a name='L480'></a><a href='#L480'>480</a>
546
- <a name='L481'></a><a href='#L481'>481</a>
547
- <a name='L482'></a><a href='#L482'>482</a>
548
- <a name='L483'></a><a href='#L483'>483</a>
549
- <a name='L484'></a><a href='#L484'>484</a>
550
- <a name='L485'></a><a href='#L485'>485</a>
551
- <a name='L486'></a><a href='#L486'>486</a>
552
- <a name='L487'></a><a href='#L487'>487</a>
553
- <a name='L488'></a><a href='#L488'>488</a>
554
- <a name='L489'></a><a href='#L489'>489</a>
555
- <a name='L490'></a><a href='#L490'>490</a>
556
- <a name='L491'></a><a href='#L491'>491</a>
557
- <a name='L492'></a><a href='#L492'>492</a>
558
- <a name='L493'></a><a href='#L493'>493</a>
559
- <a name='L494'></a><a href='#L494'>494</a>
560
- <a name='L495'></a><a href='#L495'>495</a>
561
- <a name='L496'></a><a href='#L496'>496</a>
562
- <a name='L497'></a><a href='#L497'>497</a>
563
- <a name='L498'></a><a href='#L498'>498</a>
564
- <a name='L499'></a><a href='#L499'>499</a>
565
- <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a>
567
- <a name='L502'></a><a href='#L502'>502</a>
568
- <a name='L503'></a><a href='#L503'>503</a>
569
- <a name='L504'></a><a href='#L504'>504</a>
570
- <a name='L505'></a><a href='#L505'>505</a>
571
- <a name='L506'></a><a href='#L506'>506</a>
572
- <a name='L507'></a><a href='#L507'>507</a>
573
- <a name='L508'></a><a href='#L508'>508</a>
574
- <a name='L509'></a><a href='#L509'>509</a>
575
- <a name='L510'></a><a href='#L510'>510</a>
576
- <a name='L511'></a><a href='#L511'>511</a>
577
- <a name='L512'></a><a href='#L512'>512</a>
578
- <a name='L513'></a><a href='#L513'>513</a>
579
- <a name='L514'></a><a href='#L514'>514</a>
580
- <a name='L515'></a><a href='#L515'>515</a>
581
- <a name='L516'></a><a href='#L516'>516</a>
582
- <a name='L517'></a><a href='#L517'>517</a>
583
- <a name='L518'></a><a href='#L518'>518</a>
584
- <a name='L519'></a><a href='#L519'>519</a>
585
- <a name='L520'></a><a href='#L520'>520</a>
586
- <a name='L521'></a><a href='#L521'>521</a>
587
- <a name='L522'></a><a href='#L522'>522</a>
588
- <a name='L523'></a><a href='#L523'>523</a>
589
- <a name='L524'></a><a href='#L524'>524</a>
590
- <a name='L525'></a><a href='#L525'>525</a>
591
- <a name='L526'></a><a href='#L526'>526</a>
592
- <a name='L527'></a><a href='#L527'>527</a>
593
- <a name='L528'></a><a href='#L528'>528</a>
594
- <a name='L529'></a><a href='#L529'>529</a>
595
- <a name='L530'></a><a href='#L530'>530</a>
596
- <a name='L531'></a><a href='#L531'>531</a>
597
- <a name='L532'></a><a href='#L532'>532</a>
598
- <a name='L533'></a><a href='#L533'>533</a>
599
- <a name='L534'></a><a href='#L534'>534</a>
600
- <a name='L535'></a><a href='#L535'>535</a>
601
- <a name='L536'></a><a href='#L536'>536</a>
602
- <a name='L537'></a><a href='#L537'>537</a>
603
- <a name='L538'></a><a href='#L538'>538</a>
604
- <a name='L539'></a><a href='#L539'>539</a>
605
- <a name='L540'></a><a href='#L540'>540</a>
606
- <a name='L541'></a><a href='#L541'>541</a>
607
- <a name='L542'></a><a href='#L542'>542</a>
608
- <a name='L543'></a><a href='#L543'>543</a>
609
- <a name='L544'></a><a href='#L544'>544</a>
610
- <a name='L545'></a><a href='#L545'>545</a>
611
- <a name='L546'></a><a href='#L546'>546</a>
612
- <a name='L547'></a><a href='#L547'>547</a>
613
- <a name='L548'></a><a href='#L548'>548</a>
614
- <a name='L549'></a><a href='#L549'>549</a>
615
- <a name='L550'></a><a href='#L550'>550</a>
616
- <a name='L551'></a><a href='#L551'>551</a>
617
- <a name='L552'></a><a href='#L552'>552</a>
618
- <a name='L553'></a><a href='#L553'>553</a>
619
- <a name='L554'></a><a href='#L554'>554</a>
620
- <a name='L555'></a><a href='#L555'>555</a>
621
- <a name='L556'></a><a href='#L556'>556</a>
622
- <a name='L557'></a><a href='#L557'>557</a>
623
- <a name='L558'></a><a href='#L558'>558</a>
624
- <a name='L559'></a><a href='#L559'>559</a>
625
- <a name='L560'></a><a href='#L560'>560</a>
626
- <a name='L561'></a><a href='#L561'>561</a>
627
- <a name='L562'></a><a href='#L562'>562</a>
628
- <a name='L563'></a><a href='#L563'>563</a>
629
- <a name='L564'></a><a href='#L564'>564</a>
630
- <a name='L565'></a><a href='#L565'>565</a>
631
- <a name='L566'></a><a href='#L566'>566</a>
632
- <a name='L567'></a><a href='#L567'>567</a>
633
- <a name='L568'></a><a href='#L568'>568</a>
634
- <a name='L569'></a><a href='#L569'>569</a>
635
- <a name='L570'></a><a href='#L570'>570</a>
636
- <a name='L571'></a><a href='#L571'>571</a>
637
- <a name='L572'></a><a href='#L572'>572</a>
638
- <a name='L573'></a><a href='#L573'>573</a>
639
- <a name='L574'></a><a href='#L574'>574</a>
640
- <a name='L575'></a><a href='#L575'>575</a>
641
- <a name='L576'></a><a href='#L576'>576</a>
642
- <a name='L577'></a><a href='#L577'>577</a>
643
- <a name='L578'></a><a href='#L578'>578</a>
644
- <a name='L579'></a><a href='#L579'>579</a>
645
- <a name='L580'></a><a href='#L580'>580</a>
646
- <a name='L581'></a><a href='#L581'>581</a>
647
- <a name='L582'></a><a href='#L582'>582</a>
648
- <a name='L583'></a><a href='#L583'>583</a>
649
- <a name='L584'></a><a href='#L584'>584</a>
650
- <a name='L585'></a><a href='#L585'>585</a>
651
- <a name='L586'></a><a href='#L586'>586</a>
652
- <a name='L587'></a><a href='#L587'>587</a>
653
- <a name='L588'></a><a href='#L588'>588</a>
654
- <a name='L589'></a><a href='#L589'>589</a>
655
- <a name='L590'></a><a href='#L590'>590</a>
656
- <a name='L591'></a><a href='#L591'>591</a>
657
- <a name='L592'></a><a href='#L592'>592</a>
658
- <a name='L593'></a><a href='#L593'>593</a>
659
- <a name='L594'></a><a href='#L594'>594</a>
660
- <a name='L595'></a><a href='#L595'>595</a>
661
- <a name='L596'></a><a href='#L596'>596</a>
662
- <a name='L597'></a><a href='#L597'>597</a>
663
- <a name='L598'></a><a href='#L598'>598</a>
664
- <a name='L599'></a><a href='#L599'>599</a>
665
- <a name='L600'></a><a href='#L600'>600</a>
666
- <a name='L601'></a><a href='#L601'>601</a>
667
- <a name='L602'></a><a href='#L602'>602</a>
668
- <a name='L603'></a><a href='#L603'>603</a>
669
- <a name='L604'></a><a href='#L604'>604</a>
670
- <a name='L605'></a><a href='#L605'>605</a>
671
- <a name='L606'></a><a href='#L606'>606</a>
672
- <a name='L607'></a><a href='#L607'>607</a>
673
- <a name='L608'></a><a href='#L608'>608</a>
674
- <a name='L609'></a><a href='#L609'>609</a>
675
- <a name='L610'></a><a href='#L610'>610</a>
676
- <a name='L611'></a><a href='#L611'>611</a>
677
- <a name='L612'></a><a href='#L612'>612</a>
678
- <a name='L613'></a><a href='#L613'>613</a>
679
- <a name='L614'></a><a href='#L614'>614</a>
680
- <a name='L615'></a><a href='#L615'>615</a>
681
- <a name='L616'></a><a href='#L616'>616</a>
682
- <a name='L617'></a><a href='#L617'>617</a>
683
- <a name='L618'></a><a href='#L618'>618</a>
684
- <a name='L619'></a><a href='#L619'>619</a>
685
- <a name='L620'></a><a href='#L620'>620</a>
686
- <a name='L621'></a><a href='#L621'>621</a>
687
- <a name='L622'></a><a href='#L622'>622</a>
688
- <a name='L623'></a><a href='#L623'>623</a>
689
- <a name='L624'></a><a href='#L624'>624</a>
690
- <a name='L625'></a><a href='#L625'>625</a>
691
- <a name='L626'></a><a href='#L626'>626</a>
692
- <a name='L627'></a><a href='#L627'>627</a>
693
- <a name='L628'></a><a href='#L628'>628</a>
694
- <a name='L629'></a><a href='#L629'>629</a>
695
- <a name='L630'></a><a href='#L630'>630</a>
696
- <a name='L631'></a><a href='#L631'>631</a>
697
- <a name='L632'></a><a href='#L632'>632</a>
698
- <a name='L633'></a><a href='#L633'>633</a>
699
- <a name='L634'></a><a href='#L634'>634</a>
700
- <a name='L635'></a><a href='#L635'>635</a>
701
- <a name='L636'></a><a href='#L636'>636</a>
702
- <a name='L637'></a><a href='#L637'>637</a>
703
- <a name='L638'></a><a href='#L638'>638</a>
704
- <a name='L639'></a><a href='#L639'>639</a>
705
- <a name='L640'></a><a href='#L640'>640</a>
706
- <a name='L641'></a><a href='#L641'>641</a>
707
- <a name='L642'></a><a href='#L642'>642</a>
708
- <a name='L643'></a><a href='#L643'>643</a>
709
- <a name='L644'></a><a href='#L644'>644</a>
710
- <a name='L645'></a><a href='#L645'>645</a>
711
- <a name='L646'></a><a href='#L646'>646</a>
712
- <a name='L647'></a><a href='#L647'>647</a>
713
- <a name='L648'></a><a href='#L648'>648</a>
714
- <a name='L649'></a><a href='#L649'>649</a>
715
- <a name='L650'></a><a href='#L650'>650</a>
716
- <a name='L651'></a><a href='#L651'>651</a>
717
- <a name='L652'></a><a href='#L652'>652</a>
718
- <a name='L653'></a><a href='#L653'>653</a>
719
- <a name='L654'></a><a href='#L654'>654</a>
720
- <a name='L655'></a><a href='#L655'>655</a>
721
- <a name='L656'></a><a href='#L656'>656</a>
722
- <a name='L657'></a><a href='#L657'>657</a>
723
- <a name='L658'></a><a href='#L658'>658</a>
724
- <a name='L659'></a><a href='#L659'>659</a>
725
- <a name='L660'></a><a href='#L660'>660</a>
726
- <a name='L661'></a><a href='#L661'>661</a>
727
- <a name='L662'></a><a href='#L662'>662</a>
728
- <a name='L663'></a><a href='#L663'>663</a>
729
- <a name='L664'></a><a href='#L664'>664</a>
730
- <a name='L665'></a><a href='#L665'>665</a>
731
- <a name='L666'></a><a href='#L666'>666</a>
732
- <a name='L667'></a><a href='#L667'>667</a>
733
- <a name='L668'></a><a href='#L668'>668</a>
734
- <a name='L669'></a><a href='#L669'>669</a>
735
- <a name='L670'></a><a href='#L670'>670</a>
736
- <a name='L671'></a><a href='#L671'>671</a>
737
- <a name='L672'></a><a href='#L672'>672</a>
738
- <a name='L673'></a><a href='#L673'>673</a>
739
- <a name='L674'></a><a href='#L674'>674</a>
740
- <a name='L675'></a><a href='#L675'>675</a>
741
- <a name='L676'></a><a href='#L676'>676</a>
742
- <a name='L677'></a><a href='#L677'>677</a>
743
- <a name='L678'></a><a href='#L678'>678</a>
744
- <a name='L679'></a><a href='#L679'>679</a>
745
- <a name='L680'></a><a href='#L680'>680</a>
746
- <a name='L681'></a><a href='#L681'>681</a>
747
- <a name='L682'></a><a href='#L682'>682</a>
748
- <a name='L683'></a><a href='#L683'>683</a>
749
- <a name='L684'></a><a href='#L684'>684</a>
750
- <a name='L685'></a><a href='#L685'>685</a>
751
- <a name='L686'></a><a href='#L686'>686</a>
752
- <a name='L687'></a><a href='#L687'>687</a>
753
- <a name='L688'></a><a href='#L688'>688</a>
754
- <a name='L689'></a><a href='#L689'>689</a>
755
- <a name='L690'></a><a href='#L690'>690</a>
756
- <a name='L691'></a><a href='#L691'>691</a>
757
- <a name='L692'></a><a href='#L692'>692</a>
758
- <a name='L693'></a><a href='#L693'>693</a>
759
- <a name='L694'></a><a href='#L694'>694</a>
760
- <a name='L695'></a><a href='#L695'>695</a>
761
- <a name='L696'></a><a href='#L696'>696</a>
762
- <a name='L697'></a><a href='#L697'>697</a>
763
- <a name='L698'></a><a href='#L698'>698</a>
764
- <a name='L699'></a><a href='#L699'>699</a>
765
- <a name='L700'></a><a href='#L700'>700</a>
766
- <a name='L701'></a><a href='#L701'>701</a>
767
- <a name='L702'></a><a href='#L702'>702</a>
768
- <a name='L703'></a><a href='#L703'>703</a>
769
- <a name='L704'></a><a href='#L704'>704</a>
770
- <a name='L705'></a><a href='#L705'>705</a>
771
- <a name='L706'></a><a href='#L706'>706</a>
772
- <a name='L707'></a><a href='#L707'>707</a>
773
- <a name='L708'></a><a href='#L708'>708</a>
774
- <a name='L709'></a><a href='#L709'>709</a>
775
- <a name='L710'></a><a href='#L710'>710</a>
776
- <a name='L711'></a><a href='#L711'>711</a>
777
- <a name='L712'></a><a href='#L712'>712</a>
778
- <a name='L713'></a><a href='#L713'>713</a>
779
- <a name='L714'></a><a href='#L714'>714</a>
780
- <a name='L715'></a><a href='#L715'>715</a>
781
- <a name='L716'></a><a href='#L716'>716</a>
782
- <a name='L717'></a><a href='#L717'>717</a>
783
- <a name='L718'></a><a href='#L718'>718</a>
784
- <a name='L719'></a><a href='#L719'>719</a>
785
- <a name='L720'></a><a href='#L720'>720</a>
786
- <a name='L721'></a><a href='#L721'>721</a>
787
- <a name='L722'></a><a href='#L722'>722</a>
788
- <a name='L723'></a><a href='#L723'>723</a>
789
- <a name='L724'></a><a href='#L724'>724</a>
790
- <a name='L725'></a><a href='#L725'>725</a>
791
- <a name='L726'></a><a href='#L726'>726</a>
792
- <a name='L727'></a><a href='#L727'>727</a>
793
- <a name='L728'></a><a href='#L728'>728</a>
794
- <a name='L729'></a><a href='#L729'>729</a>
795
- <a name='L730'></a><a href='#L730'>730</a>
796
- <a name='L731'></a><a href='#L731'>731</a>
797
- <a name='L732'></a><a href='#L732'>732</a>
798
- <a name='L733'></a><a href='#L733'>733</a>
799
- <a name='L734'></a><a href='#L734'>734</a>
800
- <a name='L735'></a><a href='#L735'>735</a>
801
- <a name='L736'></a><a href='#L736'>736</a>
802
- <a name='L737'></a><a href='#L737'>737</a>
803
- <a name='L738'></a><a href='#L738'>738</a>
804
- <a name='L739'></a><a href='#L739'>739</a>
805
- <a name='L740'></a><a href='#L740'>740</a>
806
- <a name='L741'></a><a href='#L741'>741</a>
807
- <a name='L742'></a><a href='#L742'>742</a>
808
- <a name='L743'></a><a href='#L743'>743</a>
809
- <a name='L744'></a><a href='#L744'>744</a>
810
- <a name='L745'></a><a href='#L745'>745</a>
811
- <a name='L746'></a><a href='#L746'>746</a>
812
- <a name='L747'></a><a href='#L747'>747</a>
813
- <a name='L748'></a><a href='#L748'>748</a>
814
- <a name='L749'></a><a href='#L749'>749</a>
815
- <a name='L750'></a><a href='#L750'>750</a>
816
- <a name='L751'></a><a href='#L751'>751</a>
817
- <a name='L752'></a><a href='#L752'>752</a>
818
- <a name='L753'></a><a href='#L753'>753</a>
819
- <a name='L754'></a><a href='#L754'>754</a>
820
- <a name='L755'></a><a href='#L755'>755</a>
821
- <a name='L756'></a><a href='#L756'>756</a>
822
- <a name='L757'></a><a href='#L757'>757</a>
823
- <a name='L758'></a><a href='#L758'>758</a>
824
- <a name='L759'></a><a href='#L759'>759</a>
825
- <a name='L760'></a><a href='#L760'>760</a>
826
- <a name='L761'></a><a href='#L761'>761</a>
827
- <a name='L762'></a><a href='#L762'>762</a>
828
- <a name='L763'></a><a href='#L763'>763</a>
829
- <a name='L764'></a><a href='#L764'>764</a>
830
- <a name='L765'></a><a href='#L765'>765</a>
831
- <a name='L766'></a><a href='#L766'>766</a>
832
- <a name='L767'></a><a href='#L767'>767</a>
833
- <a name='L768'></a><a href='#L768'>768</a>
834
- <a name='L769'></a><a href='#L769'>769</a>
835
- <a name='L770'></a><a href='#L770'>770</a>
836
- <a name='L771'></a><a href='#L771'>771</a>
837
- <a name='L772'></a><a href='#L772'>772</a>
838
- <a name='L773'></a><a href='#L773'>773</a>
839
- <a name='L774'></a><a href='#L774'>774</a>
840
- <a name='L775'></a><a href='#L775'>775</a>
841
- <a name='L776'></a><a href='#L776'>776</a>
842
- <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a>
844
- <a name='L779'></a><a href='#L779'>779</a>
845
- <a name='L780'></a><a href='#L780'>780</a>
846
- <a name='L781'></a><a href='#L781'>781</a>
847
- <a name='L782'></a><a href='#L782'>782</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">8x</span>
848
- <span class="cline-any cline-yes">8x</span>
849
- <span class="cline-any cline-yes">8x</span>
850
- <span class="cline-any cline-neutral">&nbsp;</span>
851
- <span class="cline-any cline-neutral">&nbsp;</span>
852
- <span class="cline-any cline-neutral">&nbsp;</span>
853
- <span class="cline-any cline-neutral">&nbsp;</span>
854
- <span class="cline-any cline-neutral">&nbsp;</span>
855
- <span class="cline-any cline-yes">8x</span>
856
- <span class="cline-any cline-yes">8x</span>
857
- <span class="cline-any cline-yes">8x</span>
858
- <span class="cline-any cline-yes">8x</span>
859
- <span class="cline-any cline-yes">8x</span>
860
- <span class="cline-any cline-yes">8x</span>
861
- <span class="cline-any cline-yes">8x</span>
862
- <span class="cline-any cline-neutral">&nbsp;</span>
863
- <span class="cline-any cline-yes">8x</span>
864
- <span class="cline-any cline-yes">8x</span>
865
- <span class="cline-any cline-yes">8x</span>
866
- <span class="cline-any cline-neutral">&nbsp;</span>
867
- <span class="cline-any cline-neutral">&nbsp;</span>
868
- <span class="cline-any cline-neutral">&nbsp;</span>
869
- <span class="cline-any cline-neutral">&nbsp;</span>
870
- <span class="cline-any cline-yes">8x</span>
871
- <span class="cline-any cline-yes">8x</span>
872
- <span class="cline-any cline-yes">8x</span>
873
- <span class="cline-any cline-yes">8x</span>
874
- <span class="cline-any cline-yes">8x</span>
875
- <span class="cline-any cline-yes">8x</span>
876
- <span class="cline-any cline-yes">8x</span>
877
- <span class="cline-any cline-neutral">&nbsp;</span>
878
- <span class="cline-any cline-neutral">&nbsp;</span>
879
- <span class="cline-any cline-neutral">&nbsp;</span>
880
- <span class="cline-any cline-neutral">&nbsp;</span>
881
- <span class="cline-any cline-neutral">&nbsp;</span>
882
- <span class="cline-any cline-neutral">&nbsp;</span>
883
- <span class="cline-any cline-neutral">&nbsp;</span>
884
- <span class="cline-any cline-neutral">&nbsp;</span>
885
- <span class="cline-any cline-neutral">&nbsp;</span>
886
- <span class="cline-any cline-neutral">&nbsp;</span>
887
- <span class="cline-any cline-neutral">&nbsp;</span>
888
- <span class="cline-any cline-neutral">&nbsp;</span>
889
- <span class="cline-any cline-neutral">&nbsp;</span>
890
- <span class="cline-any cline-neutral">&nbsp;</span>
891
- <span class="cline-any cline-neutral">&nbsp;</span>
892
- <span class="cline-any cline-neutral">&nbsp;</span>
893
- <span class="cline-any cline-yes">8x</span>
894
- <span class="cline-any cline-neutral">&nbsp;</span>
895
- <span class="cline-any cline-neutral">&nbsp;</span>
896
- <span class="cline-any cline-yes">8x</span>
897
- <span class="cline-any cline-yes">18x</span>
898
- <span class="cline-any cline-neutral">&nbsp;</span>
899
- <span class="cline-any cline-neutral">&nbsp;</span>
900
- <span class="cline-any cline-yes">18x</span>
901
- <span class="cline-any cline-yes">18x</span>
902
- <span class="cline-any cline-yes">18x</span>
903
- <span class="cline-any cline-yes">18x</span>
904
- <span class="cline-any cline-yes">18x</span>
905
- <span class="cline-any cline-yes">18x</span>
906
- <span class="cline-any cline-neutral">&nbsp;</span>
907
- <span class="cline-any cline-yes">18x</span>
908
- <span class="cline-any cline-yes">18x</span>
909
- <span class="cline-any cline-neutral">&nbsp;</span>
910
- <span class="cline-any cline-yes">18x</span>
911
- <span class="cline-any cline-neutral">&nbsp;</span>
912
- <span class="cline-any cline-yes">18x</span>
913
- <span class="cline-any cline-neutral">&nbsp;</span>
914
- <span class="cline-any cline-neutral">&nbsp;</span>
915
- <span class="cline-any cline-neutral">&nbsp;</span>
916
- <span class="cline-any cline-neutral">&nbsp;</span>
917
- <span class="cline-any cline-neutral">&nbsp;</span>
918
- <span class="cline-any cline-neutral">&nbsp;</span>
919
- <span class="cline-any cline-neutral">&nbsp;</span>
920
- <span class="cline-any cline-yes">10x</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-neutral">&nbsp;</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-neutral">&nbsp;</span>
925
- <span class="cline-any cline-neutral">&nbsp;</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-yes">10x</span>
928
- <span class="cline-any cline-neutral">&nbsp;</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-neutral">&nbsp;</span>
931
- <span class="cline-any cline-neutral">&nbsp;</span>
932
- <span class="cline-any cline-neutral">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-yes">10x</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-neutral">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-neutral">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-yes">10x</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-neutral">&nbsp;</span>
945
- <span class="cline-any cline-neutral">&nbsp;</span>
946
- <span class="cline-any cline-neutral">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-yes">9x</span>
950
- <span class="cline-any cline-neutral">&nbsp;</span>
951
- <span class="cline-any cline-neutral">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-neutral">&nbsp;</span>
954
- <span class="cline-any cline-neutral">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-neutral">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-neutral">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-yes">12x</span>
963
- <span class="cline-any cline-neutral">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-neutral">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-yes">12x</span>
968
- <span class="cline-any cline-yes">12x</span>
969
- <span class="cline-any cline-yes">2x</span>
970
- <span class="cline-any cline-yes">1x</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-yes">2x</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-neutral">&nbsp;</span>
975
- <span class="cline-any cline-neutral">&nbsp;</span>
976
- <span class="cline-any cline-neutral">&nbsp;</span>
977
- <span class="cline-any cline-neutral">&nbsp;</span>
978
- <span class="cline-any cline-neutral">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-yes">10x</span>
981
- <span class="cline-any cline-yes">10x</span>
982
- <span class="cline-any cline-yes">10x</span>
983
- <span class="cline-any cline-yes">10x</span>
984
- <span class="cline-any cline-yes">10x</span>
985
- <span class="cline-any cline-neutral">&nbsp;</span>
986
- <span class="cline-any cline-neutral">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-yes">10x</span>
989
- <span class="cline-any cline-neutral">&nbsp;</span>
990
- <span class="cline-any cline-yes">10x</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-yes">2x</span>
993
- <span class="cline-any cline-yes">2x</span>
994
- <span class="cline-any cline-yes">1x</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-neutral">&nbsp;</span>
998
- <span class="cline-any cline-neutral">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-neutral">&nbsp;</span>
1001
- <span class="cline-any cline-yes">1x</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-neutral">&nbsp;</span>
1004
- <span class="cline-any cline-neutral">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-yes">1x</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-neutral">&nbsp;</span>
1009
- <span class="cline-any cline-neutral">&nbsp;</span>
1010
- <span class="cline-any cline-yes">1x</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-yes">8x</span>
1014
- <span class="cline-any cline-neutral">&nbsp;</span>
1015
- <span class="cline-any cline-neutral">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-neutral">&nbsp;</span>
1018
- <span class="cline-any cline-neutral">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-neutral">&nbsp;</span>
1023
- <span class="cline-any cline-neutral">&nbsp;</span>
1024
- <span class="cline-any cline-yes">8x</span>
1025
- <span class="cline-any cline-neutral">&nbsp;</span>
1026
- <span class="cline-any cline-neutral">&nbsp;</span>
1027
- <span class="cline-any cline-neutral">&nbsp;</span>
1028
- <span class="cline-any cline-neutral">&nbsp;</span>
1029
- <span class="cline-any cline-neutral">&nbsp;</span>
1030
- <span class="cline-any cline-yes">9x</span>
1031
- <span class="cline-any cline-neutral">&nbsp;</span>
1032
- <span class="cline-any cline-neutral">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-neutral">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-neutral">&nbsp;</span>
1037
- <span class="cline-any cline-neutral">&nbsp;</span>
1038
- <span class="cline-any cline-neutral">&nbsp;</span>
1039
- <span class="cline-any cline-yes">9x</span>
1040
- <span class="cline-any cline-yes">9x</span>
1041
- <span class="cline-any cline-yes">9x</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-neutral">&nbsp;</span>
1044
- <span class="cline-any cline-neutral">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-yes">9x</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-no">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-neutral">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-no">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-neutral">&nbsp;</span>
1055
- <span class="cline-any cline-neutral">&nbsp;</span>
1056
- <span class="cline-any cline-yes">9x</span>
1057
- <span class="cline-any cline-neutral">&nbsp;</span>
1058
- <span class="cline-any cline-yes">9x</span>
1059
- <span class="cline-any cline-neutral">&nbsp;</span>
1060
- <span class="cline-any cline-yes">9x</span>
1061
- <span class="cline-any cline-yes">9x</span>
1062
- <span class="cline-any cline-yes">18x</span>
1063
- <span class="cline-any cline-yes">18x</span>
1064
- <span class="cline-any cline-yes">3x</span>
1065
- <span class="cline-any cline-neutral">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-yes">9x</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-yes">9x</span>
1072
- <span class="cline-any cline-neutral">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-no">&nbsp;</span>
1076
- <span class="cline-any cline-no">&nbsp;</span>
1077
- <span class="cline-any cline-no">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-no">&nbsp;</span>
1080
- <span class="cline-any cline-no">&nbsp;</span>
1081
- <span class="cline-any cline-neutral">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-no">&nbsp;</span>
1085
- <span class="cline-any cline-neutral">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-no">&nbsp;</span>
1088
- <span class="cline-any cline-no">&nbsp;</span>
1089
- <span class="cline-any cline-neutral">&nbsp;</span>
1090
- <span class="cline-any cline-neutral">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-neutral">&nbsp;</span>
1094
- <span class="cline-any cline-no">&nbsp;</span>
1095
- <span class="cline-any cline-no">&nbsp;</span>
1096
- <span class="cline-any cline-no">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-no">&nbsp;</span>
1103
- <span class="cline-any cline-neutral">&nbsp;</span>
1104
- <span class="cline-any cline-neutral">&nbsp;</span>
1105
- <span class="cline-any cline-neutral">&nbsp;</span>
1106
- <span class="cline-any cline-neutral">&nbsp;</span>
1107
- <span class="cline-any cline-neutral">&nbsp;</span>
1108
- <span class="cline-any cline-neutral">&nbsp;</span>
1109
- <span class="cline-any cline-yes">9x</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-neutral">&nbsp;</span>
1113
- <span class="cline-any cline-neutral">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-yes">9x</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-neutral">&nbsp;</span>
1123
- <span class="cline-any cline-neutral">&nbsp;</span>
1124
- <span class="cline-any cline-neutral">&nbsp;</span>
1125
- <span class="cline-any cline-yes">9x</span>
1126
- <span class="cline-any cline-neutral">&nbsp;</span>
1127
- <span class="cline-any cline-neutral">&nbsp;</span>
1128
- <span class="cline-any cline-neutral">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-yes">9x</span>
1131
- <span class="cline-any cline-yes">9x</span>
1132
- <span class="cline-any cline-yes">9x</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-yes">9x</span>
1135
- <span class="cline-any cline-yes">9x</span>
1136
- <span class="cline-any cline-neutral">&nbsp;</span>
1137
- <span class="cline-any cline-yes">9x</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-yes">9x</span>
1140
- <span class="cline-any cline-yes">1011x</span>
1141
- <span class="cline-any cline-yes">1011x</span>
1142
- <span class="cline-any cline-neutral">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-neutral">&nbsp;</span>
1147
- <span class="cline-any cline-yes">1011x</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-yes">1011x</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-neutral">&nbsp;</span>
1153
- <span class="cline-any cline-neutral">&nbsp;</span>
1154
- <span class="cline-any cline-neutral">&nbsp;</span>
1155
- <span class="cline-any cline-neutral">&nbsp;</span>
1156
- <span class="cline-any cline-neutral">&nbsp;</span>
1157
- <span class="cline-any cline-neutral">&nbsp;</span>
1158
- <span class="cline-any cline-neutral">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-yes">1010x</span>
1164
- <span class="cline-any cline-neutral">&nbsp;</span>
1165
- <span class="cline-any cline-neutral">&nbsp;</span>
1166
- <span class="cline-any cline-neutral">&nbsp;</span>
1167
- <span class="cline-any cline-no">&nbsp;</span>
1168
- <span class="cline-any cline-neutral">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-no">&nbsp;</span>
1171
- <span class="cline-any cline-no">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-neutral">&nbsp;</span>
1175
- <span class="cline-any cline-yes">1010x</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-neutral">&nbsp;</span>
1179
- <span class="cline-any cline-yes">1010x</span>
1180
- <span class="cline-any cline-yes">1004x</span>
1181
- <span class="cline-any cline-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-yes">1010x</span>
1183
- <span class="cline-any cline-no">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-yes">1010x</span>
1186
- <span class="cline-any cline-neutral">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-yes">1010x</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-neutral">&nbsp;</span>
1192
- <span class="cline-any cline-neutral">&nbsp;</span>
1193
- <span class="cline-any cline-neutral">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-yes">1010x</span>
1202
- <span class="cline-any cline-neutral">&nbsp;</span>
1203
- <span class="cline-any cline-neutral">&nbsp;</span>
1204
- <span class="cline-any cline-yes">1010x</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-yes">1010x</span>
1210
- <span class="cline-any cline-yes">6x</span>
1211
- <span class="cline-any cline-neutral">&nbsp;</span>
1212
- <span class="cline-any cline-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-yes">6x</span>
1214
- <span class="cline-any cline-yes">6x</span>
1215
- <span class="cline-any cline-neutral">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-yes">1004x</span>
1219
- <span class="cline-any cline-yes">1004x</span>
1220
- <span class="cline-any cline-yes">1004x</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-yes">1004x</span>
1223
- <span class="cline-any cline-neutral">&nbsp;</span>
1224
- <span class="cline-any cline-neutral">&nbsp;</span>
1225
- <span class="cline-any cline-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-yes">1004x</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-yes">1004x</span>
1230
- <span class="cline-any cline-yes">1004x</span>
1231
- <span class="cline-any cline-neutral">&nbsp;</span>
1232
- <span class="cline-any cline-yes">1004x</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-neutral">&nbsp;</span>
1236
- <span class="cline-any cline-yes">1004x</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-neutral">&nbsp;</span>
1239
- <span class="cline-any cline-yes">1004x</span>
1240
- <span class="cline-any cline-yes">1x</span>
1241
- <span class="cline-any cline-yes">1x</span>
1242
- <span class="cline-any cline-yes">1x</span>
1243
- <span class="cline-any cline-neutral">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-yes">1x</span>
1246
- <span class="cline-any cline-neutral">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-neutral">&nbsp;</span>
1250
- <span class="cline-any cline-neutral">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-neutral">&nbsp;</span>
1255
- <span class="cline-any cline-neutral">&nbsp;</span>
1256
- <span class="cline-any cline-yes">1x</span>
1257
- <span class="cline-any cline-neutral">&nbsp;</span>
1258
- <span class="cline-any cline-yes">1x</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-neutral">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-yes">1x</span>
1264
- <span class="cline-any cline-neutral">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-yes">1003x</span>
1268
- <span class="cline-any cline-yes">1003x</span>
1269
- <span class="cline-any cline-neutral">&nbsp;</span>
1270
- <span class="cline-any cline-neutral">&nbsp;</span>
1271
- <span class="cline-any cline-yes">1x</span>
1272
- <span class="cline-any cline-yes">1x</span>
1273
- <span class="cline-any cline-no">&nbsp;</span>
1274
- <span class="cline-any cline-no">&nbsp;</span>
1275
- <span class="cline-any cline-neutral">&nbsp;</span>
1276
- <span class="cline-any cline-neutral">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-neutral">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-yes">1003x</span>
1283
- <span class="cline-any cline-yes">1x</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-yes">1x</span>
1287
- <span class="cline-any cline-yes">1x</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-neutral">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-yes">1x</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-neutral">&nbsp;</span>
1298
- <span class="cline-any cline-neutral">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-yes">1x</span>
1304
- <span class="cline-any cline-yes">1x</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-neutral">&nbsp;</span>
1309
- <span class="cline-any cline-yes">1002x</span>
1310
- <span class="cline-any cline-yes">1002x</span>
1311
- <span class="cline-any cline-neutral">&nbsp;</span>
1312
- <span class="cline-any cline-yes">1x</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-yes">1x</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-neutral">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-neutral">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-neutral">&nbsp;</span>
1324
- <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-yes">1002x</span>
1326
- <span class="cline-any cline-yes">1002x</span>
1327
- <span class="cline-any cline-neutral">&nbsp;</span>
1328
- <span class="cline-any cline-neutral">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-neutral">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-neutral">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-yes">1002x</span>
1341
- <span class="cline-any cline-neutral">&nbsp;</span>
1342
- <span class="cline-any cline-neutral">&nbsp;</span>
1343
- <span class="cline-any cline-yes">1002x</span>
1344
- <span class="cline-any cline-yes">1001x</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-neutral">&nbsp;</span>
1352
- <span class="cline-any cline-yes">1002x</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-yes">1002x</span>
1355
- <span class="cline-any cline-yes">1002x</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-yes">1002x</span>
1360
- <span class="cline-any cline-neutral">&nbsp;</span>
1361
- <span class="cline-any cline-neutral">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-neutral">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-yes">1002x</span>
1367
- <span class="cline-any cline-no">&nbsp;</span>
1368
- <span class="cline-any cline-no">&nbsp;</span>
1369
- <span class="cline-any cline-no">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-neutral">&nbsp;</span>
1373
- <span class="cline-any cline-neutral">&nbsp;</span>
1374
- <span class="cline-any cline-yes">1004x</span>
1375
- <span class="cline-any cline-yes">1004x</span>
1376
- <span class="cline-any cline-neutral">&nbsp;</span>
1377
- <span class="cline-any cline-neutral">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-neutral">&nbsp;</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-yes">1004x</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-yes">1004x</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-neutral">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&nbsp;</span>
1399
- <span class="cline-any cline-neutral">&nbsp;</span>
1400
- <span class="cline-any cline-neutral">&nbsp;</span>
1401
- <span class="cline-any cline-neutral">&nbsp;</span>
1402
- <span class="cline-any cline-yes">1004x</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-neutral">&nbsp;</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-yes">1004x</span>
1407
- <span class="cline-any cline-yes">1x</span>
1408
- <span class="cline-any cline-neutral">&nbsp;</span>
1409
- <span class="cline-any cline-neutral">&nbsp;</span>
1410
- <span class="cline-any cline-neutral">&nbsp;</span>
1411
- <span class="cline-any cline-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-yes">8x</span>
1415
- <span class="cline-any cline-yes">1x</span>
1416
- <span class="cline-any cline-neutral">&nbsp;</span>
1417
- <span class="cline-any cline-neutral">&nbsp;</span>
1418
- <span class="cline-any cline-yes">1x</span>
1419
- <span class="cline-any cline-yes">1x</span>
1420
- <span class="cline-any cline-neutral">&nbsp;</span>
1421
- <span class="cline-any cline-yes">1x</span>
1422
- <span class="cline-any cline-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-yes">8x</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-yes">8x</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-yes">1x</span>
1437
- <span class="cline-any cline-neutral">&nbsp;</span>
1438
- <span class="cline-any cline-neutral">&nbsp;</span>
1439
- <span class="cline-any cline-neutral">&nbsp;</span>
1440
- <span class="cline-any cline-yes">1x</span>
1441
- <span class="cline-any cline-yes">1x</span>
1442
- <span class="cline-any cline-neutral">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1444
- <span class="cline-any cline-yes">1x</span>
1445
- <span class="cline-any cline-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&nbsp;</span>
1447
- <span class="cline-any cline-yes">1x</span>
1448
- <span class="cline-any cline-neutral">&nbsp;</span>
1449
- <span class="cline-any cline-neutral">&nbsp;</span>
1450
- <span class="cline-any cline-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&nbsp;</span>
1452
- <span class="cline-any cline-yes">9x</span>
1453
- <span class="cline-any cline-yes">9x</span>
1454
- <span class="cline-any cline-neutral">&nbsp;</span>
1455
- <span class="cline-any cline-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&nbsp;</span>
1457
- <span class="cline-any cline-yes">9x</span>
1458
- <span class="cline-any cline-neutral">&nbsp;</span>
1459
- <span class="cline-any cline-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-neutral">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&nbsp;</span>
1462
- <span class="cline-any cline-neutral">&nbsp;</span>
1463
- <span class="cline-any cline-neutral">&nbsp;</span>
1464
- <span class="cline-any cline-neutral">&nbsp;</span>
1465
- <span class="cline-any cline-neutral">&nbsp;</span>
1466
- <span class="cline-any cline-neutral">&nbsp;</span>
1467
- <span class="cline-any cline-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-neutral">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&nbsp;</span>
1470
- <span class="cline-any cline-neutral">&nbsp;</span>
1471
- <span class="cline-any cline-neutral">&nbsp;</span>
1472
- <span class="cline-any cline-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-neutral">&nbsp;</span>
1475
- <span class="cline-any cline-no">&nbsp;</span>
1476
- <span class="cline-any cline-no">&nbsp;</span>
1477
- <span class="cline-any cline-no">&nbsp;</span>
1478
- <span class="cline-any cline-no">&nbsp;</span>
1479
- <span class="cline-any cline-no">&nbsp;</span>
1480
- <span class="cline-any cline-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-neutral">&nbsp;</span>
1487
- <span class="cline-any cline-neutral">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&nbsp;</span>
1489
- <span class="cline-any cline-neutral">&nbsp;</span>
1490
- <span class="cline-any cline-neutral">&nbsp;</span>
1491
- <span class="cline-any cline-neutral">&nbsp;</span>
1492
- <span class="cline-any cline-neutral">&nbsp;</span>
1493
- <span class="cline-any cline-neutral">&nbsp;</span>
1494
- <span class="cline-any cline-neutral">&nbsp;</span>
1495
- <span class="cline-any cline-neutral">&nbsp;</span>
1496
- <span class="cline-any cline-yes">1x</span>
1497
- <span class="cline-any cline-yes">1x</span>
1498
- <span class="cline-any cline-yes">2x</span>
1499
- <span class="cline-any cline-yes">1x</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-yes">1x</span>
1504
- <span class="cline-any cline-yes">1x</span>
1505
- <span class="cline-any cline-yes">1x</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-yes">1x</span>
1510
- <span class="cline-any cline-no">&nbsp;</span>
1511
- <span class="cline-any cline-no">&nbsp;</span>
1512
- <span class="cline-any cline-no">&nbsp;</span>
1513
- <span class="cline-any cline-no">&nbsp;</span>
1514
- <span class="cline-any cline-neutral">&nbsp;</span>
1515
- <span class="cline-any cline-neutral">&nbsp;</span>
1516
- <span class="cline-any cline-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-neutral">&nbsp;</span>
1518
- <span class="cline-any cline-neutral">&nbsp;</span>
1519
- <span class="cline-any cline-yes">1x</span>
1520
- <span class="cline-any cline-neutral">&nbsp;</span>
1521
- <span class="cline-any cline-neutral">&nbsp;</span>
1522
- <span class="cline-any cline-neutral">&nbsp;</span>
1523
- <span class="cline-any cline-yes">1x</span>
1524
- <span class="cline-any cline-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-neutral">&nbsp;</span>
1528
- <span class="cline-any cline-neutral">&nbsp;</span>
1529
- <span class="cline-any cline-neutral">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-neutral">&nbsp;</span>
1539
- <span class="cline-any cline-neutral">&nbsp;</span>
1540
- <span class="cline-any cline-neutral">&nbsp;</span>
1541
- <span class="cline-any cline-yes">1011x</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-yes">1011x</span>
1544
- <span class="cline-any cline-neutral">&nbsp;</span>
1545
- <span class="cline-any cline-neutral">&nbsp;</span>
1546
- <span class="cline-any cline-yes">1011x</span>
1547
- <span class="cline-any cline-neutral">&nbsp;</span>
1548
- <span class="cline-any cline-yes">1011x</span>
1549
- <span class="cline-any cline-yes">1011x</span>
1550
- <span class="cline-any cline-yes">1011x</span>
1551
- <span class="cline-any cline-no">&nbsp;</span>
1552
- <span class="cline-any cline-neutral">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-neutral">&nbsp;</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
- <span class="cline-any cline-yes">1011x</span>
1557
- <span class="cline-any cline-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&nbsp;</span>
1559
- <span class="cline-any cline-neutral">&nbsp;</span>
1560
- <span class="cline-any cline-neutral">&nbsp;</span>
1561
- <span class="cline-any cline-yes">1x</span>
1562
- <span class="cline-any cline-neutral">&nbsp;</span>
1563
- <span class="cline-any cline-neutral">&nbsp;</span>
1564
- <span class="cline-any cline-yes">1x</span>
1565
- <span class="cline-any cline-no">&nbsp;</span>
1566
- <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-neutral">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-yes">1x</span>
1570
- <span class="cline-any cline-yes">1x</span>
1571
- <span class="cline-any cline-yes">1x</span>
1572
- <span class="cline-any cline-neutral">&nbsp;</span>
1573
- <span class="cline-any cline-neutral">&nbsp;</span>
1574
- <span class="cline-any cline-no">&nbsp;</span>
1575
- <span class="cline-any cline-no">&nbsp;</span>
1576
- <span class="cline-any cline-neutral">&nbsp;</span>
1577
- <span class="cline-any cline-neutral">&nbsp;</span>
1578
- <span class="cline-any cline-no">&nbsp;</span>
1579
- <span class="cline-any cline-no">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-no">&nbsp;</span>
1588
- <span class="cline-any cline-no">&nbsp;</span>
1589
- <span class="cline-any cline-no">&nbsp;</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-no">&nbsp;</span>
1592
- <span class="cline-any cline-neutral">&nbsp;</span>
1593
- <span class="cline-any cline-no">&nbsp;</span>
1594
- <span class="cline-any cline-neutral">&nbsp;</span>
1595
- <span class="cline-any cline-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-no">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-neutral">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-no">&nbsp;</span>
1607
- <span class="cline-any cline-no">&nbsp;</span>
1608
- <span class="cline-any cline-no">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-neutral">&nbsp;</span>
1612
- <span class="cline-any cline-no">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-no">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-neutral">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-yes">1002x</span>
1619
- <span class="cline-any cline-neutral">&nbsp;</span>
1620
- <span class="cline-any cline-yes">1002x</span>
1621
- <span class="cline-any cline-neutral">&nbsp;</span>
1622
- <span class="cline-any cline-neutral">&nbsp;</span>
1623
- <span class="cline-any cline-neutral">&nbsp;</span>
1624
- <span class="cline-any cline-no">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-neutral">&nbsp;</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Injectable, Inject, Logger } from '@nestjs/common';
1629
- import { ModuleRef } from '@nestjs/core';
1630
- import {
1631
- LlmProvider,
1632
- LlmContent,
1633
- LlmResponse,
1634
- LLM_PROVIDER,
1635
- } from '../llm-provider/llm-provider.interface';
1636
- import { SubAgentsService } from './sub-agents.service';
1637
- import { SubAgentRunsService } from './sub-agent-runs.service';
1638
- import { SessionsService } from '../sessions/sessions.service';
1639
- import { SystemPromptsService } from '../system-prompts/system-prompts.service';
1640
- import { ToolSchemaService } from '../llm-orchestration/tool-schema.service';
1641
- import { HistoryCompressionService } from '../llm-orchestration/history-compression.service';
1642
- import { ApplicationStateService } from '../application-state/application-state.service';
1643
- import { ActionHandler } from '../llm-orchestration/action-handlers/action-handler.interface';
1644
- import { McpToolActionHandler } from '../llm-orchestration/action-handlers/mcp-tool-action.handler';
1645
- import { McpService } from '../mcp/mcp.service';
1646
- import {
1647
- ActionExecutionResult,
1648
- PlanExecutionContext,
1649
- } from '../llm-orchestration/llm-orchestration.interfaces';
1650
- import { Session } from '../core-entities/session.entity';
1651
- import { InjectRepository } from '@nestjs/typeorm';
1652
- import { Repository } from 'typeorm';
1653
- import { SessionInput } from '../core-entities/session-input.entity';
1654
- import { AIAction } from '../core-entities/ai-action.entity';
1655
- import { AIActionStatus } from '../ai-actions/ai-actions.service';
1656
- import { ExecutionLogsService } from '../execution-logs/execution-logs.service';
1657
- import { EventsGateway } from '../events/events.gateway';
1658
- &nbsp;
1659
- export interface RunAgentOptions {
1660
- passContext?: boolean;
1661
- contextFiles?: string[];
1662
- masterContextDefinition?: any;
1663
- /** If provided, reuse this existing session instead of creating a new one. */
1664
- sessionId?: string;
1665
- }
1666
- &nbsp;
1667
- export interface RunAgentResult {
1668
- content: string;
1669
- success: boolean;
1670
- iterations: number;
1671
- childSessionId: string;
1672
- }
1673
- &nbsp;
1674
- const MAX_ITERATIONS = 1000;
1675
- &nbsp;
1676
- @Injectable()
1677
- export class SubAgentRunner {
1678
- private readonly logger = new Logger(SubAgentRunner.name);
1679
- &nbsp;
1680
- constructor(
1681
- private readonly subAgentsService: SubAgentsService,
1682
- private readonly subAgentRunsService: SubAgentRunsService,
1683
- private readonly sessionsService: SessionsService,
1684
- private readonly applicationStateService: ApplicationStateService,
1685
- private readonly executionLogsService: ExecutionLogsService,
1686
- private readonly eventsGateway: EventsGateway,
1687
- @Inject(LLM_PROVIDER)
1688
- private readonly llmProvider: LlmProvider,
1689
- private readonly moduleRef: ModuleRef,
1690
- @InjectRepository(SessionInput)
1691
- private readonly sessionInputsRepository: Repository&lt;SessionInput&gt;,
1692
- @InjectRepository(AIAction)
1693
- private readonly aiActionsRepository: Repository&lt;AIAction&gt;,
1694
- ) {}
1695
- &nbsp;
1696
- /**
1697
- * Lazily resolves the ACTION_HANDLER_REGISTRY to avoid circular dependency
1698
- * between SubAgentsModule and LlmOrchestrationModule at construction time.
1699
- */
1700
- private getHandlerRegistry(): Map&lt;string, ActionHandler&gt; {
1701
- return this.moduleRef.get('ACTION_HANDLER_REGISTRY', { strict: false });
1702
- }
1703
- &nbsp;
1704
- /**
1705
- * Lazily resolves ToolSchemaService to avoid circular module dependency.
1706
- */
1707
- private getToolSchemaService(): ToolSchemaService {
1708
- return this.moduleRef.get(ToolSchemaService, { strict: false });
1709
- }
1710
- &nbsp;
1711
- /**
1712
- * Lazily resolves HistoryCompressionService to avoid circular module dependency.
1713
- */
1714
- private getHistoryCompressionService(): HistoryCompressionService {
1715
- return this.moduleRef.get(HistoryCompressionService, { strict: false });
1716
- }
1717
- &nbsp;
1718
- /**
1719
- * Lazily resolves SystemPromptsService to avoid circular module dependency
1720
- * (SubAgentsModule → SystemPromptsModule → LlmOrchestrationModule → SubAgentsModule).
1721
- */
1722
- private getSystemPromptsService(): SystemPromptsService {
1723
- return this.moduleRef.get(SystemPromptsService, { strict: false });
1724
- }
1725
- &nbsp;
1726
- /**
1727
- * Lazily resolves McpService to avoid circular module dependency.
1728
- */
1729
- private getMcpService(): McpService {
1730
- return this.moduleRef.get(McpService, { strict: false });
1731
- }
1732
- &nbsp;
1733
- /**
1734
- * Runs a sub-agent synchronously within the parent's tool execution.
1735
- * Creates a child session, enters an LLM loop, and returns the result directly.
1736
- */
1737
- async runAgent(
1738
- agentName: string,
1739
- prompt: string,
1740
- parentSessionId: string,
1741
- options?: RunAgentOptions,
1742
- ): Promise&lt;RunAgentResult&gt; {
1743
- this.logger.log(
1744
- `runAgent called for "${agentName}" from parent session ${parentSessionId}`,
1745
- );
1746
- &nbsp;
1747
- // 1. Look up sub-agent
1748
- const subAgent = await this.subAgentsService.getAgentByName(agentName);
1749
- if (!subAgent) {
1750
- const availableAgents = (await this.subAgentsService.findActive())
1751
- .map((a) =&gt; a.name)
1752
- .join(', ');
1753
- return {
1754
- content: `Sub-agent "${agentName}" not found or not active. Available: ${availableAgents}`,
1755
- success: false,
1756
- iterations: 0,
1757
- childSessionId: '',
1758
- };
1759
- }
1760
- &nbsp;
1761
- const startTime = Date.now();
1762
- const handlerRegistry = this.getHandlerRegistry();
1763
- const toolSchemaService = this.getToolSchemaService();
1764
- const historyCompressionService = this.getHistoryCompressionService();
1765
- const systemPromptsService = this.getSystemPromptsService();
1766
- &nbsp;
1767
- // 2. Get or create child session
1768
- let childSession: Session;
1769
- let existingHistory: LlmContent[] = [];
1770
- &nbsp;
1771
- if (options?.sessionId) {
1772
- // Reuse existing session
1773
- childSession = await this.sessionsService.findOne(options.sessionId);
1774
- if (!childSession) {
1775
- return {
1776
- content: `Session "${options.sessionId}" not found. Cannot reuse a non-existent session.`,
1777
- success: false,
1778
- iterations: 0,
1779
- childSessionId: options.sessionId,
1780
- };
1781
- }
1782
- this.logger.log(
1783
- `Reusing existing session ${childSession.id} for sub-agent "${agentName}"`,
1784
- );
1785
- &nbsp;
1786
- // Load existing session history for context continuity
1787
- const existingInputs = await this.sessionInputsRepository.find({
1788
- where: { session: { id: childSession.id } },
1789
- order: { sequence_number: 'ASC' as const },
1790
- });
1791
- existingHistory = this.reconstructHistory(existingInputs);
1792
- } else {
1793
- // Create new child session
1794
- childSession = await this.sessionsService.create({
1795
- session_title: `Sub-Agent: ${agentName}`,
1796
- system_prompt_id: subAgent.system_prompt_id || <span class="branch-1 cbranch-no" title="branch not covered" >undefined,</span>
1797
- default_initial_context_template_id:
1798
- subAgent.context_template_id || undefined,
1799
- default_followup_context_template_id:
1800
- subAgent.followup_context_template_id || undefined,
1801
- model_id: subAgent.model_id || undefined,
1802
- sub_agent_id: subAgent.id,
1803
- parent_session_id: parentSessionId,
1804
- });
1805
- this.logger.log(
1806
- `Created child session ${childSession.id} for sub-agent "${agentName}"`,
1807
- );
1808
- }
1809
- &nbsp;
1810
- // 3. Create SubAgentRun record
1811
- await this.subAgentRunsService.create({
1812
- parent_session_id: parentSessionId,
1813
- child_session_id: childSession.id,
1814
- sub_agent_id: subAgent.id,
1815
- agent_name: agentName,
1816
- initial_prompt: prompt,
1817
- });
1818
- &nbsp;
1819
- // 4. Load &amp; render system prompt
1820
- let systemInstruction = '';
1821
- if (subAgent.system_prompt_id) {
1822
- const rendered = await systemPromptsService.findOneWithSession(
1823
- subAgent.system_prompt_id,
1824
- childSession.id,
1825
- childSession.session_title,
1826
- );
1827
- systemInstruction = rendered?.prompt_content || <span class="branch-1 cbranch-no" title="branch not covered" >'';</span>
1828
- } else <span class="missing-if-branch" title="else path not taken" >E</span>{
1829
- const defaultPrompt = <span class="cstat-no" title="statement not covered" >await systemPromptsService.findDefaultWithSession(</span>
1830
- childSession.id,
1831
- childSession.session_title,
1832
- );
1833
- <span class="cstat-no" title="statement not covered" > systemInstruction = defaultPrompt?.prompt_content || '';</span>
1834
- }
1835
- &nbsp;
1836
- // 5. Generate tool definitions
1837
- const mcpService = this.getMcpService();
1838
- let tools: any[] | undefined;
1839
- if (subAgent.enabled_tools &amp;&amp; subAgent.enabled_tools.length &gt; 0) {
1840
- // Build a filtered handler map
1841
- const filteredHandlers = new Map&lt;string, ActionHandler&gt;();
1842
- for (const toolName of subAgent.enabled_tools) {
1843
- const handler = handlerRegistry.get(toolName);
1844
- if (handler) {
1845
- filteredHandlers.set(toolName, handler);
1846
- }
1847
- }
1848
- tools = toolSchemaService.generateToolDefinitions(filteredHandlers);
1849
- }
1850
- &nbsp;
1851
- // Add MCP tool definitions (same pattern as main agent via ToolSchemaService.generateToolDefinitionsForPrompt)
1852
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
1853
- subAgent.enabled_mcp_tools !== null &amp;&amp;
1854
- <span class="branch-1 cbranch-no" title="branch not covered" > subAgent.enabled_mcp_tools !== undefined</span>
1855
- ) {
1856
- <span class="cstat-no" title="statement not covered" > try {</span>
1857
- const allMcpTools = <span class="cstat-no" title="statement not covered" >await mcpService.getActiveMcpToolDefinitions();</span>
1858
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (allMcpTools.length &gt; 0) {</span>
1859
- let enabledMcpToolNames: string[];
1860
- <span class="cstat-no" title="statement not covered" > if (subAgent.enabled_mcp_tools === 'all') {</span>
1861
- <span class="cstat-no" title="statement not covered" > enabledMcpToolNames = allMcpTools.map(<span class="fstat-no" title="function not covered" >(t</span>) =&gt; <span class="cstat-no" title="statement not covered" >t.function.name)</span>;</span>
1862
- } else {
1863
- // Parse from stored string, resolving server prefixes
1864
- const parsedMcpTools =
1865
- (<span class="cstat-no" title="statement not covered" >this.subAgentsService.parseEnabledMcpTools(</span>
1866
- subAgent.enabled_mcp_tools,
1867
- ) as string[]) || [];
1868
- const allToolNames = <span class="cstat-no" title="statement not covered" >allMcpTools.map(<span class="fstat-no" title="function not covered" >(t</span>) =&gt; <span class="cstat-no" title="statement not covered" >t.function.name)</span>;</span>
1869
- <span class="cstat-no" title="statement not covered" > enabledMcpToolNames =</span>
1870
- this.resolveMcpToolNames(parsedMcpTools, allToolNames);
1871
- }
1872
- const filteredMcpTools = <span class="cstat-no" title="statement not covered" >allMcpTools.filter(<span class="fstat-no" title="function not covered" >(t</span>ool) =&gt;</span>
1873
- <span class="cstat-no" title="statement not covered" > enabledMcpToolNames.includes(tool.function.name),</span>
1874
- );
1875
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (filteredMcpTools.length &gt; 0) {</span>
1876
- <span class="cstat-no" title="statement not covered" > tools = [...(tools || []), ...filteredMcpTools];</span>
1877
- <span class="cstat-no" title="statement not covered" > this.logger.log(</span>
1878
- `Added ${filteredMcpTools.length} MCP tool definitions for sub-agent "${agentName}".`,
1879
- );
1880
- }
1881
- }
1882
- } catch (error) {
1883
- <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
1884
- `Failed to load MCP tool definitions for sub-agent "${agentName}": ${error.message}. Continuing without MCP tools.`,
1885
- );
1886
- }
1887
- }
1888
- &nbsp;
1889
- // 6. Build initial history (prepend existing history if reusing session)
1890
- const history: LlmContent[] = [
1891
- ...existingHistory,
1892
- { role: 'user', parts: [{ text: prompt }] },
1893
- ];
1894
- &nbsp;
1895
- // 7. Create initial user SessionInput
1896
- await this.sessionInputsRepository.save(
1897
- this.sessionInputsRepository.create({
1898
- session: { id: childSession.id },
1899
- role: 'user',
1900
- user_prompt: prompt,
1901
- execution_strategy: 'auto_apply',
1902
- }),
1903
- );
1904
- &nbsp;
1905
- // Notify frontend that sub-agent session has started
1906
- this.eventsGateway.sendToAll('refresh-ui', {
1907
- sessionId: childSession.id,
1908
- });
1909
- &nbsp;
1910
- // 8. LLM loop
1911
- let iterations = 0;
1912
- let finalContent = '';
1913
- let success = true;
1914
- &nbsp;
1915
- try {
1916
- const abortController = new AbortController();
1917
- const executionStrategy =
1918
- await this.applicationStateService.getExecutionStrategy();
1919
- &nbsp;
1920
- while (iterations &lt; MAX_ITERATIONS) {
1921
- iterations++;
1922
- this.logger.log(
1923
- `Sub-agent "${agentName}" iteration ${iterations}/${MAX_ITERATIONS}`,
1924
- );
1925
- &nbsp;
1926
- // Compress history
1927
- const compressedHistory =
1928
- await historyCompressionService.compress(history);
1929
- &nbsp;
1930
- // Call LLM
1931
- const llmResponse: LlmResponse = await this.callWithRetry(
1932
- {
1933
- prompt: '',
1934
- systemInstruction,
1935
- history: compressedHistory,
1936
- modelId: childSession.model_id || undefined,
1937
- tools,
1938
- abortController,
1939
- },
1940
- childSession.id,
1941
- );
1942
- &nbsp;
1943
- // Check for empty response
1944
- <span class="missing-if-branch" title="if path not taken" >I</span>if (
1945
- !llmResponse.text &amp;&amp;
1946
- (!llmResponse.tool_calls || llmResponse.tool_calls.length === 0)
1947
- ) {
1948
- <span class="cstat-no" title="statement not covered" > this.logger.log(</span>
1949
- `Sub-agent "${agentName}" returned empty response with no tool calls. Ending loop.`,
1950
- );
1951
- <span class="cstat-no" title="statement not covered" > finalContent = llmResponse.text || '(No response from sub-agent)';</span>
1952
- <span class="cstat-no" title="statement not covered" > break;</span>
1953
- }
1954
- &nbsp;
1955
- // Build model message for history
1956
- const modelMessage: LlmContent = {
1957
- role: 'model',
1958
- parts: [{ text: llmResponse.text || '' }],
1959
- };
1960
- if (llmResponse.tool_calls &amp;&amp; llmResponse.tool_calls.length &gt; 0) {
1961
- modelMessage.tool_calls = llmResponse.tool_calls;
1962
- }
1963
- <span class="missing-if-branch" title="if path not taken" >I</span>if (llmResponse.thoughts) {
1964
- <span class="cstat-no" title="statement not covered" > modelMessage.thoughts = llmResponse.thoughts;</span>
1965
- }
1966
- history.push(modelMessage);
1967
- &nbsp;
1968
- // Persist model turn as SessionInput
1969
- const modelInput = this.sessionInputsRepository.create({
1970
- session: { id: childSession.id },
1971
- role: 'model',
1972
- raw_llm_response: llmResponse.text || '',
1973
- tool_calls: llmResponse.tool_calls
1974
- ? JSON.stringify(llmResponse.tool_calls)
1975
- : null,
1976
- thoughts: llmResponse.thoughts || null,
1977
- input_token_count: llmResponse.usage?.inputTokens || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
1978
- output_token_count: llmResponse.usage?.outputTokens || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
1979
- cached_token_count: llmResponse.usage?.cachedTokens || null,
1980
- execution_strategy: 'auto_apply',
1981
- });
1982
- await this.sessionInputsRepository.save(modelInput);
1983
- &nbsp;
1984
- // Notify frontend that model turn is available
1985
- this.eventsGateway.sendToAll('refresh-ui', {
1986
- sessionId: childSession.id,
1987
- });
1988
- &nbsp;
1989
- // Check for no tool calls → done
1990
- if (!llmResponse.tool_calls || llmResponse.tool_calls.length === 0) {
1991
- this.logger.log(
1992
- `Sub-agent "${agentName}" returned text with no tool calls. Ending loop.`,
1993
- );
1994
- finalContent = llmResponse.text || <span class="branch-1 cbranch-no" title="branch not covered" >'';</span>
1995
- break;
1996
- }
1997
- &nbsp;
1998
- // Parse and execute tool calls
1999
- const executionContext = new PlanExecutionContext();
2000
- executionContext.session_id = childSession.id;
2001
- executionContext.system_prompt_id = subAgent.system_prompt_id || <span class="branch-1 cbranch-no" title="branch not covered" >null;</span>
2002
- &nbsp;
2003
- let shouldBreak = false;
2004
- const toolResults: {
2005
- toolCallId: string;
2006
- toolName: string;
2007
- result: string;
2008
- }[] = [];
2009
- &nbsp;
2010
- for (const toolCall of llmResponse.tool_calls) {
2011
- const toolName = toolCall.function.name;
2012
- const args =
2013
- typeof toolCall.function.arguments === 'string'
2014
- ? JSON.parse(toolCall.function.arguments)
2015
- : <span class="branch-1 cbranch-no" title="branch not covered" >toolCall.function.arguments;</span>
2016
- &nbsp;
2017
- this.logger.log(`Sub-agent "${agentName}" calling tool: ${toolName}`);
2018
- &nbsp;
2019
- // Check for final() — extract result and break
2020
- if (toolName === 'final') {
2021
- const plainText = args.plain || <span class="branch-1 cbranch-no" title="branch not covered" >args.content </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >'';</span>
2022
- finalContent = plainText;
2023
- shouldBreak = true;
2024
- &nbsp;
2025
- // Create AIAction record for final
2026
- const actionEntity = this.aiActionsRepository.create({
2027
- input_id: modelInput.id,
2028
- sessionInput: { id: modelInput.id },
2029
- action_type: 'final',
2030
- status: AIActionStatus.CONFIRMED_KEPT,
2031
- order_of_execution: toolResults.length,
2032
- original_content_for_revert: null,
2033
- tool_call_id: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
2034
- plain: plainText,
2035
- selections: args.selections || null,
2036
- });
2037
- await this.aiActionsRepository.save(actionEntity);
2038
- &nbsp;
2039
- toolResults.push({
2040
- toolCallId: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >'',</span>
2041
- toolName,
2042
- result: 'Task completed.',
2043
- });
2044
- continue;
2045
- }
2046
- &nbsp;
2047
- // Find handler
2048
- let handler = handlerRegistry.get(toolName);
2049
- if (!handler) {
2050
- // Check if this is an MCP tool call (serverName__toolName pattern)
2051
- // Same pattern as LlmTurnProcessorService
2052
- const mcpMatch = toolName.match(/^([^_]+)__(.+)$/);
2053
- <span class="missing-if-branch" title="if path not taken" >I</span>if (mcpMatch) {
2054
- const [, serverName, toolNameRaw] = <span class="cstat-no" title="statement not covered" >mcpMatch;</span>
2055
- <span class="cstat-no" title="statement not covered" > handler = new McpToolActionHandler(</span>
2056
- serverName,
2057
- toolNameRaw,
2058
- mcpService,
2059
- '',
2060
- );
2061
- }
2062
- }
2063
- if (!handler) {
2064
- this.logger.warn(
2065
- `No handler found for tool: ${toolName}. Skipping.`,
2066
- );
2067
- const errorMsg = `Tool '${toolName}' is not a valid tool. Please use a valid tool.`;
2068
- toolResults.push({
2069
- toolCallId: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >'',</span>
2070
- toolName,
2071
- result: errorMsg,
2072
- });
2073
- &nbsp;
2074
- // Create AIAction record for invalid tool
2075
- const actionEntity = this.aiActionsRepository.create({
2076
- input_id: modelInput.id,
2077
- sessionInput: { id: modelInput.id },
2078
- action_type: toolName,
2079
- status: AIActionStatus.EXECUTION_FAILED,
2080
- order_of_execution: toolResults.length,
2081
- original_content_for_revert: null,
2082
- tool_call_id: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
2083
- });
2084
- await this.aiActionsRepository.save(actionEntity);
2085
- continue;
2086
- }
2087
- &nbsp;
2088
- // Execute handler
2089
- let result: ActionExecutionResult;
2090
- try {
2091
- result = await handler.execute(args, executionContext);
2092
- } catch (error) {
2093
- this.logger.error(
2094
- `Handler for ${toolName} failed: ${error.message}`,
2095
- );
2096
- result = {
2097
- status: 'FAILURE',
2098
- summary: `An unexpected error occurred: ${error.message}`,
2099
- error_message: error.message,
2100
- persisted_args: args,
2101
- };
2102
- }
2103
- &nbsp;
2104
- // Create AIAction record
2105
- const successStatus =
2106
- this.getSuccessStatusForStrategy(executionStrategy);
2107
- const actionEntity = this.aiActionsRepository.create({
2108
- input_id: modelInput.id,
2109
- sessionInput: { id: modelInput.id },
2110
- action_type: toolName,
2111
- status:
2112
- result.status === 'SUCCESS'
2113
- ? successStatus
2114
- : AIActionStatus.EXECUTION_FAILED,
2115
- order_of_execution: toolResults.length,
2116
- original_content_for_revert:
2117
- result.original_content_for_revert || null,
2118
- tool_call_id: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >null,</span>
2119
- ...result.persisted_args,
2120
- });
2121
- const savedAction = await this.aiActionsRepository.save(actionEntity);
2122
- &nbsp;
2123
- // Create execution log
2124
- if (result.execution_log) {
2125
- await this.executionLogsService.createLog({
2126
- action_id: savedAction.id,
2127
- output: result.execution_log.output,
2128
- error_message: result.execution_log.error_message,
2129
- });
2130
- }
2131
- &nbsp;
2132
- // Collect tool result
2133
- const output = result.execution_log?.output || '';
2134
- const error =
2135
- result.execution_log?.error_message || result.error_message || '';
2136
- const combinedResult = error
2137
- ? `${output}\n\nError: ${error}`.trim()
2138
- : output;
2139
- &nbsp;
2140
- toolResults.push({
2141
- toolCallId: toolCall.id || <span class="branch-1 cbranch-no" title="branch not covered" >'',</span>
2142
- toolName,
2143
- result: combinedResult,
2144
- });
2145
- &nbsp;
2146
- // Break if execution context halted
2147
- <span class="missing-if-branch" title="if path not taken" >I</span>if (executionContext.flags.should_halt) {
2148
- <span class="cstat-no" title="statement not covered" > this.logger.log(`Execution context halted. Ending sub-agent loop.`);</span>
2149
- <span class="cstat-no" title="statement not covered" > shouldBreak = true;</span>
2150
- <span class="cstat-no" title="statement not covered" > break;</span>
2151
- }
2152
- }
2153
- &nbsp;
2154
- // Add tool results to history
2155
- for (const tr of toolResults) {
2156
- history.push({
2157
- role: 'tool',
2158
- tool_call_id: tr.toolCallId,
2159
- tool_name: tr.toolName,
2160
- parts: [{ text: tr.result }],
2161
- });
2162
- }
2163
- &nbsp;
2164
- // Persist tool results as a user-turn SessionInput
2165
- await this.sessionInputsRepository.save(
2166
- this.sessionInputsRepository.create({
2167
- session: { id: childSession.id },
2168
- role: 'user',
2169
- user_prompt: '',
2170
- execution_strategy: 'auto_apply',
2171
- raw_llm_response: null,
2172
- tool_calls: JSON.stringify(
2173
- toolResults.map((tr) =&gt; ({
2174
- id: tr.toolCallId,
2175
- type: 'function',
2176
- function: { name: tr.toolName, arguments: '{}' },
2177
- })),
2178
- ),
2179
- }),
2180
- );
2181
- &nbsp;
2182
- // Notify frontend that tool results are available
2183
- this.eventsGateway.sendToAll('refresh-ui', {
2184
- sessionId: childSession.id,
2185
- });
2186
- &nbsp;
2187
- if (shouldBreak) {
2188
- break;
2189
- }
2190
- &nbsp;
2191
- // Continue loop
2192
- }
2193
- &nbsp;
2194
- // Max iterations reached
2195
- if (iterations &gt;= MAX_ITERATIONS) {
2196
- this.logger.warn(
2197
- `Sub-agent "${agentName}" reached max iterations (${MAX_ITERATIONS}).`,
2198
- );
2199
- if (!finalContent) {
2200
- finalContent =
2201
- 'Sub-agent reached maximum iterations without completing.';
2202
- success = false;
2203
- }
2204
- }
2205
- &nbsp;
2206
- // Mark run as completed
2207
- await this.subAgentRunsService.markCompleted(
2208
- childSession.id,
2209
- finalContent.substring(0, 5000), // Truncate result for storage
2210
- );
2211
- &nbsp;
2212
- // Notify frontend of final state
2213
- this.eventsGateway.sendToAll('refresh-ui', {
2214
- sessionId: childSession.id,
2215
- });
2216
- } catch (error) {
2217
- this.logger.error(
2218
- `Sub-agent "${agentName}" failed: ${error.message}`,
2219
- error.stack,
2220
- );
2221
- success = false;
2222
- finalContent = `Sub-agent "${agentName}" encountered an error: ${error.message}`;
2223
- &nbsp;
2224
- // Mark run as failed
2225
- await this.subAgentRunsService.markFailed(childSession.id, error.message);
2226
- &nbsp;
2227
- // Notify frontend of error state
2228
- this.eventsGateway.sendToAll('refresh-ui', {
2229
- sessionId: childSession.id,
2230
- });
2231
- }
2232
- &nbsp;
2233
- const durationMs = Date.now() - startTime;
2234
- this.logger.log(
2235
- `Sub-agent "${agentName}" completed in ${durationMs}ms, ${iterations} iterations, success: ${success}`,
2236
- );
2237
- &nbsp;
2238
- return {
2239
- content: finalContent,
2240
- success,
2241
- iterations,
2242
- childSessionId: childSession.id,
2243
- };
2244
- }
2245
- &nbsp;
2246
- /**
2247
- * Resolve enabled MCP tool entries against all active tools.
2248
- * Each entry can be either:
2249
- * - An exact tool name: 'playwright__browser_navigate'
2250
- * - A server prefix: 'playwright' (matches all 'playwright__*' tools)
2251
- */
2252
- private <span class="fstat-no" title="function not covered" >resolveMcpToolNames(</span>
2253
- entries: string[],
2254
- allActiveMcpToolNames: string[],
2255
- ): string[] {
2256
- const result: string[] = <span class="cstat-no" title="statement not covered" >[];</span>
2257
- <span class="cstat-no" title="statement not covered" > for (const entry of entries) {</span>
2258
- <span class="cstat-no" title="statement not covered" > for (const toolName of allActiveMcpToolNames) {</span>
2259
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (toolName === entry || toolName.startsWith(entry + '__')) {</span>
2260
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!result.includes(toolName)) {</span>
2261
- <span class="cstat-no" title="statement not covered" > result.push(toolName);</span>
2262
- }
2263
- }
2264
- }
2265
- }
2266
- <span class="cstat-no" title="statement not covered" > return result;</span>
2267
- }
2268
- &nbsp;
2269
- /**
2270
- * Reconstructs LlmContent[] history from existing SessionInput records.
2271
- /**
2272
- * Reconstructs LlmContent[] history from existing SessionInput records.
2273
- * Used when reusing a session to provide context continuity.
2274
- * Tool results are represented as user-role messages with tool call JSON.
2275
- */
2276
- private reconstructHistory(inputs: SessionInput[]): LlmContent[] {
2277
- const history: LlmContent[] = [];
2278
- for (const input of inputs) {
2279
- if (input.role === 'user') {
2280
- const content: LlmContent = {
2281
- role: 'user',
2282
- parts: [{ text: input.user_prompt || <span class="branch-1 cbranch-no" title="branch not covered" >input.raw_llm_response </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >'' </span>}],
2283
- };
2284
- history.push(content);
2285
- } else if (input.role === 'model') {
2286
- const content: LlmContent = {
2287
- role: 'model',
2288
- parts: [{ text: input.raw_llm_response || <span class="branch-1 cbranch-no" title="branch not covered" >'' </span>}],
2289
- };
2290
- <span class="missing-if-branch" title="if path not taken" >I</span>if (input.tool_calls) {
2291
- <span class="cstat-no" title="statement not covered" > try {</span>
2292
- const parsed = <span class="cstat-no" title="statement not covered" >JSON.parse(input.tool_calls);</span>
2293
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(parsed)) {</span>
2294
- <span class="cstat-no" title="statement not covered" > content.tool_calls = parsed;</span>
2295
- }
2296
- } catch {
2297
- // Not valid JSON, skip
2298
- }
2299
- }
2300
- history.push(content);
2301
- }
2302
- // Skip other roles — they're represented as user/model turns
2303
- }
2304
- return history;
2305
- }
2306
- &nbsp;
2307
- /**
2308
- * Calls LLM with exponential backoff retry.
2309
- */
2310
- private async callWithRetry(
2311
- request: {
2312
- prompt: string;
2313
- systemInstruction: string;
2314
- history: LlmContent[];
2315
- modelId?: string;
2316
- tools?: any[];
2317
- abortController: AbortController;
2318
- },
2319
- sessionId: string,
2320
- ): Promise&lt;LlmResponse&gt; {
2321
- const retryEnabled =
2322
- await this.applicationStateService.getLlmRetryEnabled();
2323
- const maxAttempts =
2324
- await this.applicationStateService.getLlmRetryMaxAttempts();
2325
- &nbsp;
2326
- let lastError: Error | undefined;
2327
- let attempt = 1;
2328
- &nbsp;
2329
- while (attempt &lt;= maxAttempts) {
2330
- try {
2331
- <span class="missing-if-branch" title="if path not taken" >I</span>if (attempt &gt; 1) {
2332
- <span class="cstat-no" title="statement not covered" > this.logger.log(</span>
2333
- `Retry attempt ${attempt}/${maxAttempts} for sub-agent session ${sessionId}`,
2334
- );
2335
- }
2336
- &nbsp;
2337
- return await this.llmProvider.generateContent({
2338
- ...request,
2339
- abortController: request.abortController,
2340
- });
2341
- } catch (error) {
2342
- lastError = error as Error;
2343
- &nbsp;
2344
- // Check for abort
2345
- <span class="missing-if-branch" title="if path not taken" >I</span>if (error.name === 'AbortError' || error.code === 'ABORT_ERR') {
2346
- <span class="cstat-no" title="statement not covered" > throw error;</span>
2347
- }
2348
- &nbsp;
2349
- const shouldRetry =
2350
- retryEnabled &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >attempt &lt; maxAttempts </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >this.isRetryableError(error);</span>
2351
- if (!shouldRetry) {
2352
- throw error;
2353
- }
2354
- &nbsp;
2355
- const backoffMs = <span class="cstat-no" title="statement not covered" >Math.pow(2, attempt - 1) * 1000;</span>
2356
- <span class="cstat-no" title="statement not covered" > this.logger.log(</span>
2357
- `LLM call failed (attempt ${attempt}/${maxAttempts}): ${error.message}. Retrying in ${backoffMs}ms...`,
2358
- );
2359
- <span class="cstat-no" title="statement not covered" > await new Promise(<span class="fstat-no" title="function not covered" >(r</span>esolve) =&gt; <span class="cstat-no" title="statement not covered" >setTimeout(resolve, backoffMs))</span>;</span>
2360
- <span class="cstat-no" title="statement not covered" > attempt++;</span>
2361
- }
2362
- }
2363
- &nbsp;
2364
- <span class="cstat-no" title="statement not covered" > throw lastError;</span>
2365
- }
2366
- &nbsp;
2367
- private <span class="fstat-no" title="function not covered" >isRetryableError(</span>error: any): boolean {
2368
- const errorMessage = <span class="cstat-no" title="statement not covered" >error.message?.toLowerCase() || '';</span>
2369
- const errorCode = <span class="cstat-no" title="statement not covered" >error.code;</span>
2370
- const status = <span class="cstat-no" title="statement not covered" >error.status;</span>
2371
- &nbsp;
2372
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (error.name === 'AbortError' || error.code === 'ABORT_ERR') <span class="cstat-no" title="statement not covered" >return false;</span></span>
2373
- &nbsp;
2374
- const networkErrors = <span class="cstat-no" title="statement not covered" >[</span>
2375
- 'ECONNRESET',
2376
- 'ETIMEDOUT',
2377
- 'ENOTFOUND',
2378
- 'ENETUNREACH',
2379
- 'ECONNREFUSED',
2380
- ];
2381
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (errorCode &amp;&amp; networkErrors.includes(errorCode)) <span class="cstat-no" title="statement not covered" >return true;</span></span>
2382
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2383
- status === 429 ||
2384
- errorMessage.includes('rate limit') ||
2385
- errorMessage.includes('too many requests')
2386
- )
2387
- <span class="cstat-no" title="statement not covered" > return true;</span>
2388
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (status &gt;= 500 &amp;&amp; status &lt; 600) <span class="cstat-no" title="statement not covered" >return true;</span></span>
2389
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2390
- errorMessage.includes('empty response') ||
2391
- errorMessage.includes('timeout')
2392
- )
2393
- <span class="cstat-no" title="statement not covered" > return true;</span>
2394
- &nbsp;
2395
- <span class="cstat-no" title="statement not covered" > return false;</span>
2396
- }
2397
- &nbsp;
2398
- private getSuccessStatusForStrategy(strategy: string): AIActionStatus {
2399
- switch (strategy) {
2400
- case 'auto_apply':
2401
- return AIActionStatus.CONFIRMED_KEPT;
2402
- <span class="branch-1 cbranch-no" title="branch not covered" > case 'review_first':</span>
2403
- <span class="branch-2 cbranch-no" title="branch not covered" > case 'apply_revert':</span>
2404
- <span class="branch-3 cbranch-no" title="branch not covered" > default:</span>
2405
- <span class="cstat-no" title="statement not covered" > return AIActionStatus.APPLIED_PENDING_REVIEW;</span>
2406
- }
2407
- }
2408
- }
2409
- &nbsp;</pre></td></tr></table></pre>
2410
-
2411
- <div class='push'></div><!-- for sticky footer -->
2412
- </div><!-- /wrapper -->
2413
- <div class='footer quiet pad2 space-top1 center small'>
2414
- Code coverage generated by
2415
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2416
- at 2026-05-09T01:03:45.353Z
2417
- </div>
2418
- <script src="../../prettify.js"></script>
2419
- <script>
2420
- window.onload = function () {
2421
- prettyPrint();
2422
- };
2423
- </script>
2424
- <script src="../../sorter.js"></script>
2425
- <script src="../../block-navigation.js"></script>
2426
- </body>
2427
- </html>
2428
-