@futdevpro/nts-dynamo 1.15.136 → 1.15.137

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 (1333) hide show
  1. package/.c8rc.json +26 -26
  2. package/.copilot/patterns.json +7 -7
  3. package/.cursor/rules/__assistant_guide.mdc +30 -30
  4. package/.cursor/rules/_ag_backend-structure.mdc +85 -85
  5. package/.cursor/rules/_ag_backend.mdc +16 -16
  6. package/.cursor/rules/_ag_frontend-structure.mdc +86 -86
  7. package/.cursor/rules/_ag_frontend.mdc +39 -39
  8. package/.cursor/rules/_ag_import-rules.mdc +44 -44
  9. package/.cursor/rules/_ag_naming.mdc +115 -115
  10. package/.cursor/rules/_ag_should-be.mdc +6 -6
  11. package/.cursor/rules/ai_development_guide.md +60 -60
  12. package/.cursor/rules/cursor-rules.md +160 -160
  13. package/.cursor/rules/default-command.mdc +464 -464
  14. package/.cursor/rules/error_code_pattern.md +39 -39
  15. package/.cursor/rules/saved rule mcp server use.md +15 -15
  16. package/.vscode/settings.json +10 -10
  17. package/HOWTO.md +15 -15
  18. package/LICENSE +21 -21
  19. package/__documentations/nts-integration-tests-2026-03-17.md +26 -26
  20. package/__documentations/plans/BEDROCK-HYPERPLAN.md +95 -95
  21. package/_specifications/BACKLOG.md +92 -92
  22. package/_specifications/TODO.md +15 -15
  23. package/_specifications/agent.md +138 -138
  24. package/build/_collections/app-version-header.util.spec.d.ts +2 -0
  25. package/build/_collections/app-version-header.util.spec.d.ts.map +1 -0
  26. package/build/_collections/app-version-header.util.spec.js +82 -0
  27. package/build/_collections/app-version-header.util.spec.js.map +1 -0
  28. package/build/_collections/archive.util.spec.d.ts +2 -0
  29. package/build/_collections/archive.util.spec.d.ts.map +1 -0
  30. package/build/_collections/archive.util.spec.js +51 -0
  31. package/build/_collections/archive.util.spec.js.map +1 -0
  32. package/build/_collections/client-safe-error.util.spec.d.ts +2 -0
  33. package/build/_collections/client-safe-error.util.spec.d.ts.map +1 -0
  34. package/build/_collections/client-safe-error.util.spec.js +124 -0
  35. package/build/_collections/client-safe-error.util.spec.js.map +1 -0
  36. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts +2 -0
  37. package/build/_collections/default-fallback-cache-max-age.const.spec.d.ts.map +1 -0
  38. package/build/_collections/default-fallback-cache-max-age.const.spec.js +12 -0
  39. package/build/_collections/default-fallback-cache-max-age.const.spec.js.map +1 -0
  40. package/build/_collections/default-not-found-page.const.spec.d.ts +2 -0
  41. package/build/_collections/default-not-found-page.const.spec.d.ts.map +1 -0
  42. package/build/_collections/default-not-found-page.const.spec.js +19 -0
  43. package/build/_collections/default-not-found-page.const.spec.js.map +1 -0
  44. package/build/_collections/default-socket-path.const.spec.d.ts +2 -0
  45. package/build/_collections/default-socket-path.const.spec.d.ts.map +1 -0
  46. package/build/_collections/default-socket-path.const.spec.js +13 -0
  47. package/build/_collections/default-socket-path.const.spec.js.map +1 -0
  48. package/build/_collections/field-encryption.util.spec.d.ts +2 -0
  49. package/build/_collections/field-encryption.util.spec.d.ts.map +1 -0
  50. package/build/_collections/field-encryption.util.spec.js +156 -0
  51. package/build/_collections/field-encryption.util.spec.js.map +1 -0
  52. package/build/_collections/get-environment-settings.util.spec.d.ts +2 -0
  53. package/build/_collections/get-environment-settings.util.spec.d.ts.map +1 -0
  54. package/build/_collections/get-environment-settings.util.spec.js +165 -0
  55. package/build/_collections/get-environment-settings.util.spec.js.map +1 -0
  56. package/build/_collections/load-shed.util.spec.d.ts +2 -0
  57. package/build/_collections/load-shed.util.spec.d.ts.map +1 -0
  58. package/build/_collections/load-shed.util.spec.js +48 -0
  59. package/build/_collections/load-shed.util.spec.js.map +1 -0
  60. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts +2 -0
  61. package/build/_collections/mongo-reconnect-guard.util.spec.d.ts.map +1 -0
  62. package/build/_collections/mongo-reconnect-guard.util.spec.js +46 -0
  63. package/build/_collections/mongo-reconnect-guard.util.spec.js.map +1 -0
  64. package/build/_collections/security-headers.util.spec.d.ts +2 -0
  65. package/build/_collections/security-headers.util.spec.d.ts.map +1 -0
  66. package/build/_collections/security-headers.util.spec.js +66 -0
  67. package/build/_collections/security-headers.util.spec.js.map +1 -0
  68. package/build/_collections/signed-url.util.spec.d.ts +2 -0
  69. package/build/_collections/signed-url.util.spec.d.ts.map +1 -0
  70. package/build/_collections/signed-url.util.spec.js +161 -0
  71. package/build/_collections/signed-url.util.spec.js.map +1 -0
  72. package/build/_collections/star.controller.spec.d.ts +2 -0
  73. package/build/_collections/star.controller.spec.d.ts.map +1 -0
  74. package/build/_collections/star.controller.spec.js +194 -0
  75. package/build/_collections/star.controller.spec.js.map +1 -0
  76. package/build/_collections/static-cache-control.util.spec.d.ts +2 -0
  77. package/build/_collections/static-cache-control.util.spec.d.ts.map +1 -0
  78. package/build/_collections/static-cache-control.util.spec.js +41 -0
  79. package/build/_collections/static-cache-control.util.spec.js.map +1 -0
  80. package/build/_models/control-models/api-call-params.control-model.spec.d.ts +2 -0
  81. package/build/_models/control-models/api-call-params.control-model.spec.d.ts.map +1 -0
  82. package/build/_models/control-models/api-call-params.control-model.spec.js +128 -0
  83. package/build/_models/control-models/api-call-params.control-model.spec.js.map +1 -0
  84. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts +2 -0
  85. package/build/_models/control-models/app-ext-system-controls.control-model.spec.d.ts.map +1 -0
  86. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js +43 -0
  87. package/build/_models/control-models/app-ext-system-controls.control-model.spec.js.map +1 -0
  88. package/build/_models/control-models/app-params.control-model.spec.d.ts +2 -0
  89. package/build/_models/control-models/app-params.control-model.spec.d.ts.map +1 -0
  90. package/build/_models/control-models/app-params.control-model.spec.js +180 -0
  91. package/build/_models/control-models/app-params.control-model.spec.js.map +1 -0
  92. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts +2 -0
  93. package/build/_models/control-models/app-system-controls.control-model.spec.d.ts.map +1 -0
  94. package/build/_models/control-models/app-system-controls.control-model.spec.js +26 -0
  95. package/build/_models/control-models/app-system-controls.control-model.spec.js.map +1 -0
  96. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts +2 -0
  97. package/build/_models/control-models/endpoint-params.control-model.spec.d.ts.map +1 -0
  98. package/build/_models/control-models/endpoint-params.control-model.spec.js +569 -0
  99. package/build/_models/control-models/endpoint-params.control-model.spec.js.map +1 -0
  100. package/build/_models/control-models/http-settings.control-model.spec.d.ts +2 -0
  101. package/build/_models/control-models/http-settings.control-model.spec.d.ts.map +1 -0
  102. package/build/_models/control-models/http-settings.control-model.spec.js +71 -0
  103. package/build/_models/control-models/http-settings.control-model.spec.js.map +1 -0
  104. package/build/_models/control-models/system-control.control-model.spec.d.ts +2 -0
  105. package/build/_models/control-models/system-control.control-model.spec.d.ts.map +1 -0
  106. package/build/_models/control-models/system-control.control-model.spec.js +24 -0
  107. package/build/_models/control-models/system-control.control-model.spec.js.map +1 -0
  108. package/build/_models/interfaces/cors-settings.interface.spec.d.ts +2 -0
  109. package/build/_models/interfaces/cors-settings.interface.spec.d.ts.map +1 -0
  110. package/build/_models/interfaces/cors-settings.interface.spec.js +48 -0
  111. package/build/_models/interfaces/cors-settings.interface.spec.js.map +1 -0
  112. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts +2 -0
  113. package/build/_models/interfaces/static-client-settings.interface.spec.d.ts.map +1 -0
  114. package/build/_models/interfaces/static-client-settings.interface.spec.js +28 -0
  115. package/build/_models/interfaces/static-client-settings.interface.spec.js.map +1 -0
  116. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts +2 -0
  117. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.d.ts.map +1 -0
  118. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js +185 -0
  119. package/build/_modules/admin-auth/admin-api-key.auth-service.spec.js.map +1 -0
  120. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts +2 -0
  121. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.d.ts.map +1 -0
  122. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js +132 -0
  123. package/build/_modules/ai/_collections/ai-model-config-validator.util.spec.js.map +1 -0
  124. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts +2 -0
  125. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.d.ts.map +1 -0
  126. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js +56 -0
  127. package/build/_modules/ai/_modules/ai-mock/_collections/aim-default-collection.util.spec.js.map +1 -0
  128. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts +2 -0
  129. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.d.ts.map +1 -0
  130. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js +43 -0
  131. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-match.util.spec.js.map +1 -0
  132. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts +2 -0
  133. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.d.ts.map +1 -0
  134. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js +47 -0
  135. package/build/_modules/ai/_modules/ai-mock/_collections/aim-fixture-serializer.util.spec.js.map +1 -0
  136. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts +2 -0
  137. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.d.ts.map +1 -0
  138. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js +98 -0
  139. package/build/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.js.map +1 -0
  140. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts +2 -0
  141. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.d.ts.map +1 -0
  142. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js +117 -0
  143. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-harness.service.spec.js.map +1 -0
  144. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts +2 -0
  145. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.d.ts.map +1 -0
  146. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js +87 -0
  147. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-pipeline.spec.js.map +1 -0
  148. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts +2 -0
  149. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.d.ts.map +1 -0
  150. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js +42 -0
  151. package/build/_modules/ai/_modules/ai-mock/_services/aim-fixture-store.service.spec.js.map +1 -0
  152. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts +2 -0
  153. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.d.ts.map +1 -0
  154. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js +74 -0
  155. package/build/_modules/ai/_modules/ai-mock/_services/aim-integration-proof.spec.js.map +1 -0
  156. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts +2 -0
  157. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.d.ts.map +1 -0
  158. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js +95 -0
  159. package/build/_modules/ai/_modules/ai-mock/_services/aim-mock.service.spec.js.map +1 -0
  160. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts +2 -0
  161. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.d.ts.map +1 -0
  162. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js +207 -0
  163. package/build/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.js.map +1 -0
  164. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts +2 -0
  165. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.d.ts.map +1 -0
  166. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js +244 -0
  167. package/build/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.js.map +1 -0
  168. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts +2 -0
  169. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.d.ts.map +1 -0
  170. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js +162 -0
  171. package/build/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.js.map +1 -0
  172. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts +2 -0
  173. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.d.ts.map +1 -0
  174. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js +279 -0
  175. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.js.map +1 -0
  176. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts +2 -0
  177. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.d.ts.map +1 -0
  178. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js +452 -0
  179. package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.js.map +1 -0
  180. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts +2 -0
  181. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.d.ts.map +1 -0
  182. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js +293 -0
  183. package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.js.map +1 -0
  184. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts +2 -0
  185. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.d.ts.map +1 -0
  186. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js +395 -0
  187. package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.js.map +1 -0
  188. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts +2 -0
  189. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.d.ts.map +1 -0
  190. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js +411 -0
  191. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.js.map +1 -0
  192. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts +2 -0
  193. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.d.ts.map +1 -0
  194. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js +143 -0
  195. package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.js.map +1 -0
  196. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts +2 -0
  197. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.d.ts.map +1 -0
  198. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js +98 -0
  199. package/build/_modules/ai/_services/ai-embedding-provider.registry.spec.js.map +1 -0
  200. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts +2 -0
  201. package/build/_modules/ai/_services/ai-embedding.service-base.spec.d.ts.map +1 -0
  202. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js +80 -0
  203. package/build/_modules/ai/_services/ai-embedding.service-base.spec.js.map +1 -0
  204. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts +2 -0
  205. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.d.ts.map +1 -0
  206. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js +186 -0
  207. package/build/_modules/ai/_services/ai-llm-chat.service-base.spec.js.map +1 -0
  208. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts +2 -0
  209. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.d.ts.map +1 -0
  210. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js +108 -0
  211. package/build/_modules/ai/_services/ai-llm.service-base.reconciler.spec.js.map +1 -0
  212. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts +2 -0
  213. package/build/_modules/ai/_services/ai-llm.service-base.spec.d.ts.map +1 -0
  214. package/build/_modules/ai/_services/ai-llm.service-base.spec.js +185 -0
  215. package/build/_modules/ai/_services/ai-llm.service-base.spec.js.map +1 -0
  216. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts +2 -0
  217. package/build/_modules/ai/_services/ai-provider.service-base.spec.d.ts.map +1 -0
  218. package/build/_modules/ai/_services/ai-provider.service-base.spec.js +128 -0
  219. package/build/_modules/ai/_services/ai-provider.service-base.spec.js.map +1 -0
  220. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts +2 -0
  221. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.d.ts.map +1 -0
  222. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js +159 -0
  223. package/build/_modules/ai/_services/lmstudio-embedding.control-service.spec.js.map +1 -0
  224. package/build/_modules/assistant/_collections/ass.util.spec.d.ts +2 -0
  225. package/build/_modules/assistant/_collections/ass.util.spec.d.ts.map +1 -0
  226. package/build/_modules/assistant/_collections/ass.util.spec.js +153 -0
  227. package/build/_modules/assistant/_collections/ass.util.spec.js.map +1 -0
  228. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts +2 -0
  229. package/build/_modules/assistant/_services/ass-io.control-service.spec.d.ts.map +1 -0
  230. package/build/_modules/assistant/_services/ass-io.control-service.spec.js +99 -0
  231. package/build/_modules/assistant/_services/ass-io.control-service.spec.js.map +1 -0
  232. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts +2 -0
  233. package/build/_modules/assistant/_services/ass-main.control-service.spec.d.ts.map +1 -0
  234. package/build/_modules/assistant/_services/ass-main.control-service.spec.js +146 -0
  235. package/build/_modules/assistant/_services/ass-main.control-service.spec.js.map +1 -0
  236. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts +2 -0
  237. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.d.ts.map +1 -0
  238. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js +356 -0
  239. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.js.map +1 -0
  240. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts +2 -0
  241. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.d.ts.map +1 -0
  242. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js +93 -0
  243. package/build/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.js.map +1 -0
  244. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts +2 -0
  245. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.d.ts.map +1 -0
  246. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js +304 -0
  247. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.js.map +1 -0
  248. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts +2 -0
  249. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.d.ts.map +1 -0
  250. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js +336 -0
  251. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.js.map +1 -0
  252. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts +2 -0
  253. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.d.ts.map +1 -0
  254. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js +337 -0
  255. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.js.map +1 -0
  256. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts +2 -0
  257. package/build/_modules/bot/_services/bot-commands.control-service.spec.d.ts.map +1 -0
  258. package/build/_modules/bot/_services/bot-commands.control-service.spec.js +84 -0
  259. package/build/_modules/bot/_services/bot-commands.control-service.spec.js.map +1 -0
  260. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts +2 -0
  261. package/build/_modules/bot/_services/bot-io.control-service.spec.d.ts.map +1 -0
  262. package/build/_modules/bot/_services/bot-io.control-service.spec.js +228 -0
  263. package/build/_modules/bot/_services/bot-io.control-service.spec.js.map +1 -0
  264. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts +2 -0
  265. package/build/_modules/bot/_services/bot-main.control-service.spec.d.ts.map +1 -0
  266. package/build/_modules/bot/_services/bot-main.control-service.spec.js +164 -0
  267. package/build/_modules/bot/_services/bot-main.control-service.spec.js.map +1 -0
  268. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts +2 -0
  269. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.d.ts.map +1 -0
  270. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js +267 -0
  271. package/build/_modules/bot/_services/bot-messaging-provider.service-base.spec.js.map +1 -0
  272. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts +2 -0
  273. package/build/_modules/bot/_services/bot-routines.control-service.spec.d.ts.map +1 -0
  274. package/build/_modules/bot/_services/bot-routines.control-service.spec.js +82 -0
  275. package/build/_modules/bot/_services/bot-routines.control-service.spec.js.map +1 -0
  276. package/build/_modules/custom-data/custom-data.controller.spec.d.ts +2 -0
  277. package/build/_modules/custom-data/custom-data.controller.spec.d.ts.map +1 -0
  278. package/build/_modules/custom-data/custom-data.controller.spec.js +38 -0
  279. package/build/_modules/custom-data/custom-data.controller.spec.js.map +1 -0
  280. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts +2 -0
  281. package/build/_modules/custom-data/custom-data.data-service.spec.d.ts.map +1 -0
  282. package/build/_modules/custom-data/custom-data.data-service.spec.js +45 -0
  283. package/build/_modules/custom-data/custom-data.data-service.spec.js.map +1 -0
  284. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts +2 -0
  285. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.d.ts.map +1 -0
  286. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js +23 -0
  287. package/build/_modules/custom-data/get-custom-data-routing-module.util.spec.js.map +1 -0
  288. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts +2 -0
  289. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.d.ts.map +1 -0
  290. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js +124 -0
  291. package/build/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.js.map +1 -0
  292. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts +2 -0
  293. package/build/_modules/defaults/_services/default-auth.service.spec.d.ts.map +1 -0
  294. package/build/_modules/defaults/_services/default-auth.service.spec.js +210 -0
  295. package/build/_modules/defaults/_services/default-auth.service.spec.js.map +1 -0
  296. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts +2 -0
  297. package/build/_modules/defaults/_services/default-socket-events.service.spec.d.ts.map +1 -0
  298. package/build/_modules/defaults/_services/default-socket-events.service.spec.js +34 -0
  299. package/build/_modules/defaults/_services/default-socket-events.service.spec.js.map +1 -0
  300. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts +2 -0
  301. package/build/_modules/defaults/_services/default-user.data-service.spec.d.ts.map +1 -0
  302. package/build/_modules/defaults/_services/default-user.data-service.spec.js +133 -0
  303. package/build/_modules/defaults/_services/default-user.data-service.spec.js.map +1 -0
  304. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts +2 -0
  305. package/build/_modules/discord-assistant/_collections/dias.util.spec.d.ts.map +1 -0
  306. package/build/_modules/discord-assistant/_collections/dias.util.spec.js +307 -0
  307. package/build/_modules/discord-assistant/_collections/dias.util.spec.js.map +1 -0
  308. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts +2 -0
  309. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.d.ts.map +1 -0
  310. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js +76 -0
  311. package/build/_modules/discord-assistant/_services/dias-io.control-service.spec.js.map +1 -0
  312. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts +2 -0
  313. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.d.ts.map +1 -0
  314. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js +17 -0
  315. package/build/_modules/discord-assistant/_services/dias-main.control-service.spec.js.map +1 -0
  316. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts +2 -0
  317. package/build/_modules/discord-assistant/_services/dias.service-base.spec.d.ts.map +1 -0
  318. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js +151 -0
  319. package/build/_modules/discord-assistant/_services/dias.service-base.spec.js.map +1 -0
  320. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts +2 -0
  321. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.d.ts.map +1 -0
  322. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js +29 -0
  323. package/build/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.js.map +1 -0
  324. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts +2 -0
  325. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.d.ts.map +1 -0
  326. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js +172 -0
  327. package/build/_modules/discord-bot/_collections/dibo-operations.util.spec.js.map +1 -0
  328. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts +2 -0
  329. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.d.ts.map +1 -0
  330. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js +133 -0
  331. package/build/_modules/discord-bot/_services/dibo-commands.control-service.spec.js.map +1 -0
  332. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts +2 -0
  333. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.d.ts.map +1 -0
  334. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js +215 -0
  335. package/build/_modules/discord-bot/_services/dibo-io.control-service.spec.js.map +1 -0
  336. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts +2 -0
  337. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.d.ts.map +1 -0
  338. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js +342 -0
  339. package/build/_modules/discord-bot/_services/dibo-main.control-service.spec.js.map +1 -0
  340. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts +2 -0
  341. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.d.ts.map +1 -0
  342. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js +87 -0
  343. package/build/_modules/discord-bot/_services/dibo-routines.control-service.spec.js.map +1 -0
  344. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts +2 -0
  345. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.d.ts.map +1 -0
  346. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js +137 -0
  347. package/build/_modules/local-vector-search/_services/lvs-bm25.util.spec.js.map +1 -0
  348. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts +2 -0
  349. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.d.ts.map +1 -0
  350. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js +345 -0
  351. package/build/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.js.map +1 -0
  352. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts +2 -0
  353. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.d.ts.map +1 -0
  354. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js +407 -0
  355. package/build/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.js.map +1 -0
  356. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts +2 -0
  357. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.d.ts.map +1 -0
  358. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js +160 -0
  359. package/build/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.js.map +1 -0
  360. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts +2 -0
  361. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.d.ts.map +1 -0
  362. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js +122 -0
  363. package/build/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.js.map +1 -0
  364. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts +2 -0
  365. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.d.ts.map +1 -0
  366. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js +388 -0
  367. package/build/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.js.map +1 -0
  368. package/build/_modules/logs/file-log.service.spec.d.ts +2 -0
  369. package/build/_modules/logs/file-log.service.spec.d.ts.map +1 -0
  370. package/build/_modules/logs/file-log.service.spec.js +300 -0
  371. package/build/_modules/logs/file-log.service.spec.js.map +1 -0
  372. package/build/_modules/logs/file-logs.controller.spec.d.ts +2 -0
  373. package/build/_modules/logs/file-logs.controller.spec.d.ts.map +1 -0
  374. package/build/_modules/logs/file-logs.controller.spec.js +203 -0
  375. package/build/_modules/logs/file-logs.controller.spec.js.map +1 -0
  376. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts +2 -0
  377. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.d.ts.map +1 -0
  378. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js +125 -0
  379. package/build/_modules/mcp/_services/dynts-mcp-server.service-base.spec.js.map +1 -0
  380. package/build/_modules/messaging/_collections/msg.util.spec.d.ts +2 -0
  381. package/build/_modules/messaging/_collections/msg.util.spec.d.ts.map +1 -0
  382. package/build/_modules/messaging/_collections/msg.util.spec.js +157 -0
  383. package/build/_modules/messaging/_collections/msg.util.spec.js.map +1 -0
  384. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts +2 -0
  385. package/build/_modules/messaging/_services/msg-events.service.spec.d.ts.map +1 -0
  386. package/build/_modules/messaging/_services/msg-events.service.spec.js +122 -0
  387. package/build/_modules/messaging/_services/msg-events.service.spec.js.map +1 -0
  388. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts +2 -0
  389. package/build/_modules/messaging/_services/msg-main.control-service.spec.d.ts.map +1 -0
  390. package/build/_modules/messaging/_services/msg-main.control-service.spec.js +121 -0
  391. package/build/_modules/messaging/_services/msg-main.control-service.spec.js.map +1 -0
  392. package/build/_modules/messaging/_services/msg.controller.spec.d.ts +2 -0
  393. package/build/_modules/messaging/_services/msg.controller.spec.d.ts.map +1 -0
  394. package/build/_modules/messaging/_services/msg.controller.spec.js +165 -0
  395. package/build/_modules/messaging/_services/msg.controller.spec.js.map +1 -0
  396. package/build/_modules/mock/app-params.mock.spec.d.ts +2 -0
  397. package/build/_modules/mock/app-params.mock.spec.d.ts.map +1 -0
  398. package/build/_modules/mock/app-params.mock.spec.js +19 -0
  399. package/build/_modules/mock/app-params.mock.spec.js.map +1 -0
  400. package/build/_modules/mock/auth-service.mock.spec.d.ts +2 -0
  401. package/build/_modules/mock/auth-service.mock.spec.d.ts.map +1 -0
  402. package/build/_modules/mock/auth-service.mock.spec.js +40 -0
  403. package/build/_modules/mock/auth-service.mock.spec.js.map +1 -0
  404. package/build/_modules/mock/controller.mock.spec.d.ts +2 -0
  405. package/build/_modules/mock/controller.mock.spec.d.ts.map +1 -0
  406. package/build/_modules/mock/controller.mock.spec.js +23 -0
  407. package/build/_modules/mock/controller.mock.spec.js.map +1 -0
  408. package/build/_modules/mock/data-model.mock.spec.d.ts +2 -0
  409. package/build/_modules/mock/data-model.mock.spec.d.ts.map +1 -0
  410. package/build/_modules/mock/data-model.mock.spec.js +101 -0
  411. package/build/_modules/mock/data-model.mock.spec.js.map +1 -0
  412. package/build/_modules/mock/email-service-collection.mock.spec.d.ts +2 -0
  413. package/build/_modules/mock/email-service-collection.mock.spec.d.ts.map +1 -0
  414. package/build/_modules/mock/email-service-collection.mock.spec.js +21 -0
  415. package/build/_modules/mock/email-service-collection.mock.spec.js.map +1 -0
  416. package/build/_modules/mock/email-service.mock.spec.d.ts +2 -0
  417. package/build/_modules/mock/email-service.mock.spec.d.ts.map +1 -0
  418. package/build/_modules/mock/email-service.mock.spec.js +14 -0
  419. package/build/_modules/mock/email-service.mock.spec.js.map +1 -0
  420. package/build/_modules/mock/socket-client.mock.spec.d.ts +2 -0
  421. package/build/_modules/mock/socket-client.mock.spec.d.ts.map +1 -0
  422. package/build/_modules/mock/socket-client.mock.spec.js +32 -0
  423. package/build/_modules/mock/socket-client.mock.spec.js.map +1 -0
  424. package/build/_modules/mock/socket-server.mock.spec.d.ts +2 -0
  425. package/build/_modules/mock/socket-server.mock.spec.d.ts.map +1 -0
  426. package/build/_modules/mock/socket-server.mock.spec.js +36 -0
  427. package/build/_modules/mock/socket-server.mock.spec.js.map +1 -0
  428. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts +2 -0
  429. package/build/_modules/oauth2/_routes/oauth2.controller.spec.d.ts.map +1 -0
  430. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js +89 -0
  431. package/build/_modules/oauth2/_routes/oauth2.controller.spec.js.map +1 -0
  432. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts +2 -0
  433. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.d.ts.map +1 -0
  434. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js +195 -0
  435. package/build/_modules/oauth2/_services/oauth2.auth-service.spec.js.map +1 -0
  436. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts +2 -0
  437. package/build/_modules/oauth2/_services/oauth2.control-service.spec.d.ts.map +1 -0
  438. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js +432 -0
  439. package/build/_modules/oauth2/_services/oauth2.control-service.spec.js.map +1 -0
  440. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts +2 -0
  441. package/build/_modules/rate-limit/rate-limit.middleware.spec.d.ts.map +1 -0
  442. package/build/_modules/rate-limit/rate-limit.middleware.spec.js +277 -0
  443. package/build/_modules/rate-limit/rate-limit.middleware.spec.js.map +1 -0
  444. package/build/_modules/scheduler/scheduler.controller.spec.d.ts +2 -0
  445. package/build/_modules/scheduler/scheduler.controller.spec.d.ts.map +1 -0
  446. package/build/_modules/scheduler/scheduler.controller.spec.js +35 -0
  447. package/build/_modules/scheduler/scheduler.controller.spec.js.map +1 -0
  448. package/build/_modules/scheduler/scheduler.service.spec.d.ts +2 -0
  449. package/build/_modules/scheduler/scheduler.service.spec.d.ts.map +1 -0
  450. package/build/_modules/scheduler/scheduler.service.spec.js +123 -0
  451. package/build/_modules/scheduler/scheduler.service.spec.js.map +1 -0
  452. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts +2 -0
  453. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.d.ts.map +1 -0
  454. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js +229 -0
  455. package/build/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.js.map +1 -0
  456. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts +2 -0
  457. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.d.ts.map +1 -0
  458. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js +88 -0
  459. package/build/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.js.map +1 -0
  460. package/build/_modules/server/errors/errors.control-service.spec.d.ts +2 -0
  461. package/build/_modules/server/errors/errors.control-service.spec.d.ts.map +1 -0
  462. package/build/_modules/server/errors/errors.control-service.spec.js +198 -0
  463. package/build/_modules/server/errors/errors.control-service.spec.js.map +1 -0
  464. package/build/_modules/server/errors/errors.controller.spec.d.ts +2 -0
  465. package/build/_modules/server/errors/errors.controller.spec.d.ts.map +1 -0
  466. package/build/_modules/server/errors/errors.controller.spec.js +287 -0
  467. package/build/_modules/server/errors/errors.controller.spec.js.map +1 -0
  468. package/build/_modules/server/errors/errors.data-service.spec.d.ts +2 -0
  469. package/build/_modules/server/errors/errors.data-service.spec.d.ts.map +1 -0
  470. package/build/_modules/server/errors/errors.data-service.spec.js +390 -0
  471. package/build/_modules/server/errors/errors.data-service.spec.js.map +1 -0
  472. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts +2 -0
  473. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.d.ts.map +1 -0
  474. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js +59 -0
  475. package/build/_modules/server/server-status/server-status-snapshot.control-service.spec.js.map +1 -0
  476. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts +2 -0
  477. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.d.ts.map +1 -0
  478. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js +58 -0
  479. package/build/_modules/server/server-status/server-status-snapshot.data-service.spec.js.map +1 -0
  480. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts +2 -0
  481. package/build/_modules/server/server-status/server-status.control-service.spec.d.ts.map +1 -0
  482. package/build/_modules/server/server-status/server-status.control-service.spec.js +537 -0
  483. package/build/_modules/server/server-status/server-status.control-service.spec.js.map +1 -0
  484. package/build/_modules/server/server-status/server-status.controller.spec.d.ts +2 -0
  485. package/build/_modules/server/server-status/server-status.controller.spec.d.ts.map +1 -0
  486. package/build/_modules/server/server-status/server-status.controller.spec.js +223 -0
  487. package/build/_modules/server/server-status/server-status.controller.spec.js.map +1 -0
  488. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts +2 -0
  489. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.d.ts.map +1 -0
  490. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js +25 -0
  491. package/build/_modules/socket/_models/socket-client-service-params.control-model.spec.js.map +1 -0
  492. package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
  493. package/build/_modules/socket/_models/socket-presence.control-model.js +1 -0
  494. package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
  495. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts +2 -0
  496. package/build/_modules/socket/_models/socket-presence.control-model.spec.d.ts.map +1 -0
  497. package/build/_modules/socket/_models/socket-presence.control-model.spec.js +137 -0
  498. package/build/_modules/socket/_models/socket-presence.control-model.spec.js.map +1 -0
  499. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts +2 -0
  500. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.d.ts.map +1 -0
  501. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js +58 -0
  502. package/build/_modules/socket/_models/socket-server-service-params.control-model.spec.js.map +1 -0
  503. package/build/_modules/socket/_services/socket-client.service.spec.d.ts +2 -0
  504. package/build/_modules/socket/_services/socket-client.service.spec.d.ts.map +1 -0
  505. package/build/_modules/socket/_services/socket-client.service.spec.js +12 -0
  506. package/build/_modules/socket/_services/socket-client.service.spec.js.map +1 -0
  507. package/build/_modules/socket/_services/socket-server.service.d.ts +3 -1
  508. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  509. package/build/_modules/socket/_services/socket-server.service.js +32 -50
  510. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  511. package/build/_modules/socket/_services/socket-server.service.spec.d.ts +2 -0
  512. package/build/_modules/socket/_services/socket-server.service.spec.d.ts.map +1 -0
  513. package/build/_modules/socket/_services/socket-server.service.spec.js +126 -0
  514. package/build/_modules/socket/_services/socket-server.service.spec.js.map +1 -0
  515. package/build/_modules/socket/app-extended.integration.spec.d.ts +2 -0
  516. package/build/_modules/socket/app-extended.integration.spec.d.ts.map +1 -0
  517. package/build/_modules/socket/app-extended.integration.spec.js +76 -0
  518. package/build/_modules/socket/app-extended.integration.spec.js.map +1 -0
  519. package/build/_modules/test/get-test-routing-module.util.spec.d.ts +2 -0
  520. package/build/_modules/test/get-test-routing-module.util.spec.d.ts.map +1 -0
  521. package/build/_modules/test/get-test-routing-module.util.spec.js +23 -0
  522. package/build/_modules/test/get-test-routing-module.util.spec.js.map +1 -0
  523. package/build/_modules/test/test.controller.spec.d.ts +2 -0
  524. package/build/_modules/test/test.controller.spec.d.ts.map +1 -0
  525. package/build/_modules/test/test.controller.spec.js +54 -0
  526. package/build/_modules/test/test.controller.spec.js.map +1 -0
  527. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts +2 -0
  528. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.d.ts.map +1 -0
  529. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js +91 -0
  530. package/build/_modules/test-email-sink/_services/dynts-test-email-sink.service.spec.js.map +1 -0
  531. package/build/_modules/usage/usage.controller.spec.d.ts +2 -0
  532. package/build/_modules/usage/usage.controller.spec.d.ts.map +1 -0
  533. package/build/_modules/usage/usage.controller.spec.js +82 -0
  534. package/build/_modules/usage/usage.controller.spec.js.map +1 -0
  535. package/build/_modules/usage/usage.data-service.spec.d.ts +2 -0
  536. package/build/_modules/usage/usage.data-service.spec.d.ts.map +1 -0
  537. package/build/_modules/usage/usage.data-service.spec.js +284 -0
  538. package/build/_modules/usage/usage.data-service.spec.js.map +1 -0
  539. package/build/_services/base/api.service-base.spec.d.ts +2 -0
  540. package/build/_services/base/api.service-base.spec.d.ts.map +1 -0
  541. package/build/_services/base/api.service-base.spec.js +91 -0
  542. package/build/_services/base/api.service-base.spec.js.map +1 -0
  543. package/build/_services/base/archive-data.service.spec.d.ts +2 -0
  544. package/build/_services/base/archive-data.service.spec.d.ts.map +1 -0
  545. package/build/_services/base/archive-data.service.spec.js +149 -0
  546. package/build/_services/base/archive-data.service.spec.js.map +1 -0
  547. package/build/_services/base/data.service.spec.d.ts +2 -0
  548. package/build/_services/base/data.service.spec.d.ts.map +1 -0
  549. package/build/_services/base/data.service.spec.js +614 -0
  550. package/build/_services/base/data.service.spec.js.map +1 -0
  551. package/build/_services/base/db.service.encryption.spec.d.ts +2 -0
  552. package/build/_services/base/db.service.encryption.spec.d.ts.map +1 -0
  553. package/build/_services/base/db.service.encryption.spec.js +66 -0
  554. package/build/_services/base/db.service.encryption.spec.js.map +1 -0
  555. package/build/_services/base/db.service.spec.d.ts +2 -0
  556. package/build/_services/base/db.service.spec.d.ts.map +1 -0
  557. package/build/_services/base/db.service.spec.js +127 -0
  558. package/build/_services/base/db.service.spec.js.map +1 -0
  559. package/build/_services/base/singleton.service-base.spec.d.ts +2 -0
  560. package/build/_services/base/singleton.service-base.spec.d.ts.map +1 -0
  561. package/build/_services/base/singleton.service-base.spec.js +24 -0
  562. package/build/_services/base/singleton.service-base.spec.js.map +1 -0
  563. package/build/_services/base/singleton.service.spec.d.ts +2 -0
  564. package/build/_services/base/singleton.service.spec.d.ts.map +1 -0
  565. package/build/_services/base/singleton.service.spec.js +88 -0
  566. package/build/_services/base/singleton.service.spec.js.map +1 -0
  567. package/build/_services/core/api.service.spec.d.ts +2 -0
  568. package/build/_services/core/api.service.spec.d.ts.map +1 -0
  569. package/build/_services/core/api.service.spec.js +150 -0
  570. package/build/_services/core/api.service.spec.js.map +1 -0
  571. package/build/_services/core/auth.service.spec.d.ts +2 -0
  572. package/build/_services/core/auth.service.spec.d.ts.map +1 -0
  573. package/build/_services/core/auth.service.spec.js +129 -0
  574. package/build/_services/core/auth.service.spec.js.map +1 -0
  575. package/build/_services/core/collection-growth-monitor.service.spec.d.ts +2 -0
  576. package/build/_services/core/collection-growth-monitor.service.spec.d.ts.map +1 -0
  577. package/build/_services/core/collection-growth-monitor.service.spec.js +51 -0
  578. package/build/_services/core/collection-growth-monitor.service.spec.js.map +1 -0
  579. package/build/_services/core/diagnostics.service.spec.d.ts +2 -0
  580. package/build/_services/core/diagnostics.service.spec.d.ts.map +1 -0
  581. package/build/_services/core/diagnostics.service.spec.js +40 -0
  582. package/build/_services/core/diagnostics.service.spec.js.map +1 -0
  583. package/build/_services/core/email.service.spec.d.ts +2 -0
  584. package/build/_services/core/email.service.spec.d.ts.map +1 -0
  585. package/build/_services/core/email.service.spec.js +77 -0
  586. package/build/_services/core/email.service.spec.js.map +1 -0
  587. package/build/_services/core/event-loop-diag.service.spec.d.ts +2 -0
  588. package/build/_services/core/event-loop-diag.service.spec.d.ts.map +1 -0
  589. package/build/_services/core/event-loop-diag.service.spec.js +18 -0
  590. package/build/_services/core/event-loop-diag.service.spec.js.map +1 -0
  591. package/build/_services/core/global.service.spec.d.ts +2 -0
  592. package/build/_services/core/global.service.spec.d.ts.map +1 -0
  593. package/build/_services/core/global.service.spec.js +235 -0
  594. package/build/_services/core/global.service.spec.js.map +1 -0
  595. package/build/_services/core/memory-guard.service.spec.d.ts +2 -0
  596. package/build/_services/core/memory-guard.service.spec.d.ts.map +1 -0
  597. package/build/_services/core/memory-guard.service.spec.js +219 -0
  598. package/build/_services/core/memory-guard.service.spec.js.map +1 -0
  599. package/build/_services/core/migration-runner.service.spec.d.ts +2 -0
  600. package/build/_services/core/migration-runner.service.spec.d.ts.map +1 -0
  601. package/build/_services/core/migration-runner.service.spec.js +77 -0
  602. package/build/_services/core/migration-runner.service.spec.js.map +1 -0
  603. package/build/_services/core/request-hunter.service.spec.d.ts +2 -0
  604. package/build/_services/core/request-hunter.service.spec.d.ts.map +1 -0
  605. package/build/_services/core/request-hunter.service.spec.js +101 -0
  606. package/build/_services/core/request-hunter.service.spec.js.map +1 -0
  607. package/build/_services/core/service-collection.service.spec.d.ts +2 -0
  608. package/build/_services/core/service-collection.service.spec.d.ts.map +1 -0
  609. package/build/_services/core/service-collection.service.spec.js +39 -0
  610. package/build/_services/core/service-collection.service.spec.js.map +1 -0
  611. package/build/_services/route/controller.service.spec.d.ts +2 -0
  612. package/build/_services/route/controller.service.spec.d.ts.map +1 -0
  613. package/build/_services/route/controller.service.spec.js +48 -0
  614. package/build/_services/route/controller.service.spec.js.map +1 -0
  615. package/build/_services/route/routing-module.service.spec.d.ts +2 -0
  616. package/build/_services/route/routing-module.service.spec.d.ts.map +1 -0
  617. package/build/_services/route/routing-module.service.spec.js +81 -0
  618. package/build/_services/route/routing-module.service.spec.js.map +1 -0
  619. package/build/_services/server/app.server-retention.spec.d.ts +2 -0
  620. package/build/_services/server/app.server-retention.spec.d.ts.map +1 -0
  621. package/build/_services/server/app.server-retention.spec.js +93 -0
  622. package/build/_services/server/app.server-retention.spec.js.map +1 -0
  623. package/build/_services/shared.static-service.spec.d.ts +2 -0
  624. package/build/_services/shared.static-service.spec.d.ts.map +1 -0
  625. package/build/_services/shared.static-service.spec.js +82 -0
  626. package/build/_services/shared.static-service.spec.js.map +1 -0
  627. package/coverage/_collections/archive.util.ts.html +139 -0
  628. package/coverage/_collections/get-environment-settings.util.ts.html +229 -0
  629. package/coverage/_collections/index.html +146 -0
  630. package/coverage/_collections/star.controller.ts.html +472 -0
  631. package/coverage/_models/control-models/api-call-params.control-model.ts.html +511 -0
  632. package/coverage/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  633. package/coverage/_models/control-models/app-params.control-model.ts.html +475 -0
  634. package/coverage/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  635. package/coverage/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  636. package/coverage/_models/control-models/http-settings.control-model.ts.html +172 -0
  637. package/coverage/_models/control-models/index.html +206 -0
  638. package/coverage/_models/control-models/system-control.control-model.ts.html +121 -0
  639. package/coverage/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  640. package/coverage/_modules/ai/_models/index.html +116 -0
  641. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  642. package/coverage/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  643. package/coverage/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  644. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  645. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  646. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  647. package/coverage/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  648. package/coverage/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  649. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  650. package/coverage/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  651. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  652. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  653. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  654. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  655. package/coverage/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  656. package/coverage/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  657. package/coverage/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  658. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  659. package/coverage/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  660. package/coverage/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  661. package/coverage/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  662. package/coverage/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  663. package/coverage/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  664. package/coverage/_modules/ai/_services/index.html +161 -0
  665. package/coverage/_modules/assistant/_collections/ass.util.ts.html +235 -0
  666. package/coverage/_modules/assistant/_collections/index.html +116 -0
  667. package/coverage/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  668. package/coverage/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  669. package/coverage/_modules/assistant/_services/index.html +131 -0
  670. package/coverage/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  671. package/coverage/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  672. package/coverage/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  673. package/coverage/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  674. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  675. package/coverage/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  676. package/coverage/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  677. package/coverage/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  678. package/coverage/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  679. package/coverage/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  680. package/coverage/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  681. package/coverage/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  682. package/coverage/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  683. package/coverage/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  684. package/coverage/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  685. package/coverage/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  686. package/coverage/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  687. package/coverage/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  688. package/coverage/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  689. package/coverage/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  690. package/coverage/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  691. package/coverage/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  692. package/coverage/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  693. package/coverage/_modules/bot/_services/index.html +176 -0
  694. package/coverage/_modules/custom-data/custom-data.controller.ts.html +292 -0
  695. package/coverage/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  696. package/coverage/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  697. package/coverage/_modules/custom-data/index.html +146 -0
  698. package/coverage/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  699. package/coverage/_modules/defaults/_models/index.html +116 -0
  700. package/coverage/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  701. package/coverage/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  702. package/coverage/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  703. package/coverage/_modules/defaults/_services/index.html +146 -0
  704. package/coverage/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  705. package/coverage/_modules/discord-assistant/_collections/index.html +116 -0
  706. package/coverage/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  707. package/coverage/_modules/discord-assistant/_models/index.html +116 -0
  708. package/coverage/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  709. package/coverage/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  710. package/coverage/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  711. package/coverage/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  712. package/coverage/_modules/discord-assistant/_services/index.html +161 -0
  713. package/coverage/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  714. package/coverage/_modules/discord-assistant-voiced/_services/index.html +116 -0
  715. package/coverage/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  716. package/coverage/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  717. package/coverage/_modules/discord-bot/_collections/index.html +131 -0
  718. package/coverage/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  719. package/coverage/_modules/discord-bot/_models/index.html +116 -0
  720. package/coverage/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  721. package/coverage/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  722. package/coverage/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  723. package/coverage/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  724. package/coverage/_modules/discord-bot/_services/index.html +161 -0
  725. package/coverage/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  726. package/coverage/_modules/messaging/_collections/index.html +131 -0
  727. package/coverage/_modules/messaging/_collections/msg.util.ts.html +334 -0
  728. package/coverage/_modules/messaging/_services/index.html +191 -0
  729. package/coverage/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  730. package/coverage/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  731. package/coverage/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  732. package/coverage/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  733. package/coverage/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  734. package/coverage/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  735. package/coverage/_modules/mock/app-extended-server.mock.ts.html +688 -0
  736. package/coverage/_modules/mock/app-params.mock.ts.html +112 -0
  737. package/coverage/_modules/mock/app-server.mock.ts.html +649 -0
  738. package/coverage/_modules/mock/auth-service.mock.ts.html +169 -0
  739. package/coverage/_modules/mock/controller.mock.ts.html +133 -0
  740. package/coverage/_modules/mock/data-model.mock.ts.html +331 -0
  741. package/coverage/_modules/mock/email-service-collection.mock.ts.html +130 -0
  742. package/coverage/_modules/mock/email-service.mock.ts.html +145 -0
  743. package/coverage/_modules/mock/endpoint.mock.ts.html +358 -0
  744. package/coverage/_modules/mock/index.html +266 -0
  745. package/coverage/_modules/mock/socket-client.mock.ts.html +220 -0
  746. package/coverage/_modules/mock/socket-server.mock.ts.html +247 -0
  747. package/coverage/_modules/oauth2/_routes/index.html +116 -0
  748. package/coverage/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  749. package/coverage/_modules/oauth2/_services/index.html +131 -0
  750. package/coverage/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  751. package/coverage/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  752. package/coverage/_modules/server/errors/errors.control-service.ts.html +292 -0
  753. package/coverage/_modules/server/errors/errors.controller.ts.html +895 -0
  754. package/coverage/_modules/server/errors/errors.data-service.ts.html +1666 -0
  755. package/coverage/_modules/server/errors/index.html +146 -0
  756. package/coverage/_modules/server/server-status/index.html +161 -0
  757. package/coverage/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  758. package/coverage/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  759. package/coverage/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  760. package/coverage/_modules/server/server-status/server-status.controller.ts.html +478 -0
  761. package/coverage/_modules/socket/_models/index.html +146 -0
  762. package/coverage/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  763. package/coverage/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  764. package/coverage/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  765. package/coverage/_modules/socket/_services/index.html +131 -0
  766. package/coverage/_modules/socket/_services/socket-client.service.ts.html +862 -0
  767. package/coverage/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  768. package/coverage/_modules/socket/app-extended.server.ts.html +1954 -0
  769. package/coverage/_modules/socket/index.html +116 -0
  770. package/coverage/_modules/test/get-test-routing-module.util.ts.html +154 -0
  771. package/coverage/_modules/test/index.html +131 -0
  772. package/coverage/_modules/test/test.controller.ts.html +430 -0
  773. package/coverage/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  774. package/coverage/_modules/usage/index.html +146 -0
  775. package/coverage/_modules/usage/usage.controller.ts.html +463 -0
  776. package/coverage/_modules/usage/usage.data-service.ts.html +640 -0
  777. package/coverage/_services/base/api.service-base.ts.html +307 -0
  778. package/coverage/_services/base/archive-data.service.ts.html +727 -0
  779. package/coverage/_services/base/data.service.ts.html +7033 -0
  780. package/coverage/_services/base/db.service.ts.html +4786 -0
  781. package/coverage/_services/base/index.html +191 -0
  782. package/coverage/_services/base/singleton.service-base.ts.html +157 -0
  783. package/coverage/_services/base/singleton.service.ts.html +190 -0
  784. package/coverage/_services/core/api.service.ts.html +1900 -0
  785. package/coverage/_services/core/auth.service.ts.html +607 -0
  786. package/coverage/_services/core/email.service.ts.html +2302 -0
  787. package/coverage/_services/core/global.service.ts.html +1363 -0
  788. package/coverage/_services/core/index.html +176 -0
  789. package/coverage/_services/core/service-collection.service.ts.html +103 -0
  790. package/coverage/_services/index.html +116 -0
  791. package/coverage/_services/route/controller.service.ts.html +475 -0
  792. package/coverage/_services/route/index.html +131 -0
  793. package/coverage/_services/route/routing-module.service.ts.html +1075 -0
  794. package/coverage/_services/server/app.server.ts.html +4408 -0
  795. package/coverage/_services/server/index.html +116 -0
  796. package/coverage/_services/shared.static-service.ts.html +319 -0
  797. package/coverage/base.css +224 -0
  798. package/coverage/block-navigation.js +87 -0
  799. package/coverage/favicon.png +0 -0
  800. package/coverage/index.html +821 -0
  801. package/coverage/lcov-report/_collections/archive.util.ts.html +139 -0
  802. package/coverage/lcov-report/_collections/get-environment-settings.util.ts.html +229 -0
  803. package/coverage/lcov-report/_collections/index.html +146 -0
  804. package/coverage/lcov-report/_collections/star.controller.ts.html +472 -0
  805. package/coverage/lcov-report/_models/control-models/api-call-params.control-model.ts.html +511 -0
  806. package/coverage/lcov-report/_models/control-models/app-ext-system-controls.control-model.ts.html +112 -0
  807. package/coverage/lcov-report/_models/control-models/app-params.control-model.ts.html +475 -0
  808. package/coverage/lcov-report/_models/control-models/app-system-controls.control-model.ts.html +112 -0
  809. package/coverage/lcov-report/_models/control-models/endpoint-params.control-model.ts.html +1618 -0
  810. package/coverage/lcov-report/_models/control-models/http-settings.control-model.ts.html +172 -0
  811. package/coverage/lcov-report/_models/control-models/index.html +206 -0
  812. package/coverage/lcov-report/_models/control-models/system-control.control-model.ts.html +121 -0
  813. package/coverage/lcov-report/_modules/ai/_models/ai-input-interfaces.ts.html +436 -0
  814. package/coverage/lcov-report/_modules/ai/_models/index.html +116 -0
  815. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts.html +1993 -0
  816. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts.html +340 -0
  817. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_collections/index.html +131 -0
  818. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts.html +523 -0
  819. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts.html +571 -0
  820. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts.html +382 -0
  821. package/coverage/lcov-report/_modules/ai/_modules/document-ai/_models/data-models/index.html +146 -0
  822. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/index.html +131 -0
  823. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts.html +331 -0
  824. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts.html +310 -0
  825. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/index.html +161 -0
  826. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts.html +958 -0
  827. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts.html +1801 -0
  828. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts.html +1390 -0
  829. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts.html +1915 -0
  830. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/index.html +146 -0
  831. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts.html +334 -0
  832. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts.html +1822 -0
  833. package/coverage/lcov-report/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts.html +2584 -0
  834. package/coverage/lcov-report/_modules/ai/_services/ai-embedding.service-base.ts.html +208 -0
  835. package/coverage/lcov-report/_modules/ai/_services/ai-llm-chat.service-base.ts.html +289 -0
  836. package/coverage/lcov-report/_modules/ai/_services/ai-llm.service-base.ts.html +1060 -0
  837. package/coverage/lcov-report/_modules/ai/_services/ai-provider.service-base.ts.html +172 -0
  838. package/coverage/lcov-report/_modules/ai/_services/index.html +161 -0
  839. package/coverage/lcov-report/_modules/assistant/_collections/ass.util.ts.html +235 -0
  840. package/coverage/lcov-report/_modules/assistant/_collections/index.html +116 -0
  841. package/coverage/lcov-report/_modules/assistant/_services/ass-io.control-service.ts.html +307 -0
  842. package/coverage/lcov-report/_modules/assistant/_services/ass-main.control-service.ts.html +406 -0
  843. package/coverage/lcov-report/_modules/assistant/_services/index.html +131 -0
  844. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts.html +112 -0
  845. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_models/index.html +116 -0
  846. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts.html +1978 -0
  847. package/coverage/lcov-report/_modules/bot/_modules/discord-bot/_services/index.html +116 -0
  848. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts.html +250 -0
  849. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_collections/index.html +116 -0
  850. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts.html +130 -0
  851. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_models/index.html +116 -0
  852. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts.html +1414 -0
  853. package/coverage/lcov-report/_modules/bot/_modules/dynamo-bot/_services/index.html +116 -0
  854. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/index.html +116 -0
  855. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts.html +112 -0
  856. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/index.html +116 -0
  857. package/coverage/lcov-report/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts.html +664 -0
  858. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/index.html +116 -0
  859. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts.html +112 -0
  860. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/index.html +116 -0
  861. package/coverage/lcov-report/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts.html +664 -0
  862. package/coverage/lcov-report/_modules/bot/_services/bot-commands.control-service.ts.html +559 -0
  863. package/coverage/lcov-report/_modules/bot/_services/bot-io.control-service.ts.html +1072 -0
  864. package/coverage/lcov-report/_modules/bot/_services/bot-main.control-service.ts.html +1552 -0
  865. package/coverage/lcov-report/_modules/bot/_services/bot-messaging-provider.service-base.ts.html +556 -0
  866. package/coverage/lcov-report/_modules/bot/_services/bot-routines.control-service.ts.html +319 -0
  867. package/coverage/lcov-report/_modules/bot/_services/index.html +176 -0
  868. package/coverage/lcov-report/_modules/custom-data/custom-data.controller.ts.html +292 -0
  869. package/coverage/lcov-report/_modules/custom-data/custom-data.data-service.ts.html +148 -0
  870. package/coverage/lcov-report/_modules/custom-data/get-custom-data-routing-module.util.ts.html +157 -0
  871. package/coverage/lcov-report/_modules/custom-data/index.html +146 -0
  872. package/coverage/lcov-report/_modules/defaults/_models/default-user.data-model.ts.html +301 -0
  873. package/coverage/lcov-report/_modules/defaults/_models/index.html +116 -0
  874. package/coverage/lcov-report/_modules/defaults/_services/default-auth.service.ts.html +616 -0
  875. package/coverage/lcov-report/_modules/defaults/_services/default-socket-events.service.ts.html +268 -0
  876. package/coverage/lcov-report/_modules/defaults/_services/default-user.data-service.ts.html +379 -0
  877. package/coverage/lcov-report/_modules/defaults/_services/index.html +146 -0
  878. package/coverage/lcov-report/_modules/discord-assistant/_collections/dias.util.ts.html +481 -0
  879. package/coverage/lcov-report/_modules/discord-assistant/_collections/index.html +116 -0
  880. package/coverage/lcov-report/_modules/discord-assistant/_models/dias-knowledge.data-model.ts.html +241 -0
  881. package/coverage/lcov-report/_modules/discord-assistant/_models/index.html +116 -0
  882. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-chunk.data-service.ts.html +616 -0
  883. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-io.control-service.ts.html +292 -0
  884. package/coverage/lcov-report/_modules/discord-assistant/_services/dias-main.control-service.ts.html +166 -0
  885. package/coverage/lcov-report/_modules/discord-assistant/_services/dias.service-base.ts.html +313 -0
  886. package/coverage/lcov-report/_modules/discord-assistant/_services/index.html +161 -0
  887. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts.html +118 -0
  888. package/coverage/lcov-report/_modules/discord-assistant-voiced/_services/index.html +116 -0
  889. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-global-settings.conts.ts.html +250 -0
  890. package/coverage/lcov-report/_modules/discord-bot/_collections/dibo-operations.util.ts.html +1246 -0
  891. package/coverage/lcov-report/_modules/discord-bot/_collections/index.html +131 -0
  892. package/coverage/lcov-report/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts.html +106 -0
  893. package/coverage/lcov-report/_modules/discord-bot/_models/index.html +116 -0
  894. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-commands.control-service.ts.html +544 -0
  895. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-io.control-service.ts.html +1003 -0
  896. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-main.control-service.ts.html +1546 -0
  897. package/coverage/lcov-report/_modules/discord-bot/_services/dibo-routines.control-service.ts.html +376 -0
  898. package/coverage/lcov-report/_modules/discord-bot/_services/index.html +161 -0
  899. package/coverage/lcov-report/_modules/messaging/_collections/get-messaging-routing-module.util.ts.html +163 -0
  900. package/coverage/lcov-report/_modules/messaging/_collections/index.html +131 -0
  901. package/coverage/lcov-report/_modules/messaging/_collections/msg.util.ts.html +334 -0
  902. package/coverage/lcov-report/_modules/messaging/_services/index.html +191 -0
  903. package/coverage/lcov-report/_modules/messaging/_services/msg-conversation.data-service.ts.html +523 -0
  904. package/coverage/lcov-report/_modules/messaging/_services/msg-events.service.ts.html +886 -0
  905. package/coverage/lcov-report/_modules/messaging/_services/msg-integration.control-service.ts.html +622 -0
  906. package/coverage/lcov-report/_modules/messaging/_services/msg-main.control-service.ts.html +1738 -0
  907. package/coverage/lcov-report/_modules/messaging/_services/msg-message.data-service.ts.html +472 -0
  908. package/coverage/lcov-report/_modules/messaging/_services/msg.controller.ts.html +1195 -0
  909. package/coverage/lcov-report/_modules/mock/app-extended-server.mock.ts.html +688 -0
  910. package/coverage/lcov-report/_modules/mock/app-params.mock.ts.html +112 -0
  911. package/coverage/lcov-report/_modules/mock/app-server.mock.ts.html +649 -0
  912. package/coverage/lcov-report/_modules/mock/auth-service.mock.ts.html +169 -0
  913. package/coverage/lcov-report/_modules/mock/controller.mock.ts.html +133 -0
  914. package/coverage/lcov-report/_modules/mock/data-model.mock.ts.html +331 -0
  915. package/coverage/lcov-report/_modules/mock/email-service-collection.mock.ts.html +130 -0
  916. package/coverage/lcov-report/_modules/mock/email-service.mock.ts.html +145 -0
  917. package/coverage/lcov-report/_modules/mock/endpoint.mock.ts.html +358 -0
  918. package/coverage/lcov-report/_modules/mock/index.html +266 -0
  919. package/coverage/lcov-report/_modules/mock/socket-client.mock.ts.html +220 -0
  920. package/coverage/lcov-report/_modules/mock/socket-server.mock.ts.html +247 -0
  921. package/coverage/lcov-report/_modules/oauth2/_routes/index.html +116 -0
  922. package/coverage/lcov-report/_modules/oauth2/_routes/oauth2.controller.ts.html +379 -0
  923. package/coverage/lcov-report/_modules/oauth2/_services/index.html +131 -0
  924. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.auth-service.ts.html +781 -0
  925. package/coverage/lcov-report/_modules/oauth2/_services/oauth2.control-service.ts.html +2044 -0
  926. package/coverage/lcov-report/_modules/server/errors/errors.control-service.ts.html +292 -0
  927. package/coverage/lcov-report/_modules/server/errors/errors.controller.ts.html +895 -0
  928. package/coverage/lcov-report/_modules/server/errors/errors.data-service.ts.html +1666 -0
  929. package/coverage/lcov-report/_modules/server/errors/index.html +146 -0
  930. package/coverage/lcov-report/_modules/server/server-status/index.html +161 -0
  931. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.control-service.ts.html +136 -0
  932. package/coverage/lcov-report/_modules/server/server-status/server-status-snapshot.data-service.ts.html +196 -0
  933. package/coverage/lcov-report/_modules/server/server-status/server-status.control-service.ts.html +1093 -0
  934. package/coverage/lcov-report/_modules/server/server-status/server-status.controller.ts.html +478 -0
  935. package/coverage/lcov-report/_modules/socket/_models/index.html +146 -0
  936. package/coverage/lcov-report/_modules/socket/_models/socket-client-service-params.control-model.ts.html +151 -0
  937. package/coverage/lcov-report/_modules/socket/_models/socket-presence.control-model.ts.html +715 -0
  938. package/coverage/lcov-report/_modules/socket/_models/socket-server-service-params.control-model.ts.html +145 -0
  939. package/coverage/lcov-report/_modules/socket/_services/index.html +131 -0
  940. package/coverage/lcov-report/_modules/socket/_services/socket-client.service.ts.html +862 -0
  941. package/coverage/lcov-report/_modules/socket/_services/socket-server.service.ts.html +3196 -0
  942. package/coverage/lcov-report/_modules/socket/app-extended.server.ts.html +1954 -0
  943. package/coverage/lcov-report/_modules/socket/index.html +116 -0
  944. package/coverage/lcov-report/_modules/test/get-test-routing-module.util.ts.html +154 -0
  945. package/coverage/lcov-report/_modules/test/index.html +131 -0
  946. package/coverage/lcov-report/_modules/test/test.controller.ts.html +430 -0
  947. package/coverage/lcov-report/_modules/usage/get-usage-routing-module.util.ts.html +151 -0
  948. package/coverage/lcov-report/_modules/usage/index.html +146 -0
  949. package/coverage/lcov-report/_modules/usage/usage.controller.ts.html +463 -0
  950. package/coverage/lcov-report/_modules/usage/usage.data-service.ts.html +640 -0
  951. package/coverage/lcov-report/_services/base/api.service-base.ts.html +307 -0
  952. package/coverage/lcov-report/_services/base/archive-data.service.ts.html +727 -0
  953. package/coverage/lcov-report/_services/base/data.service.ts.html +7033 -0
  954. package/coverage/lcov-report/_services/base/db.service.ts.html +4786 -0
  955. package/coverage/lcov-report/_services/base/index.html +191 -0
  956. package/coverage/lcov-report/_services/base/singleton.service-base.ts.html +157 -0
  957. package/coverage/lcov-report/_services/base/singleton.service.ts.html +190 -0
  958. package/coverage/lcov-report/_services/core/api.service.ts.html +1900 -0
  959. package/coverage/lcov-report/_services/core/auth.service.ts.html +607 -0
  960. package/coverage/lcov-report/_services/core/email.service.ts.html +2302 -0
  961. package/coverage/lcov-report/_services/core/global.service.ts.html +1363 -0
  962. package/coverage/lcov-report/_services/core/index.html +176 -0
  963. package/coverage/lcov-report/_services/core/service-collection.service.ts.html +103 -0
  964. package/coverage/lcov-report/_services/index.html +116 -0
  965. package/coverage/lcov-report/_services/route/controller.service.ts.html +475 -0
  966. package/coverage/lcov-report/_services/route/index.html +131 -0
  967. package/coverage/lcov-report/_services/route/routing-module.service.ts.html +1075 -0
  968. package/coverage/lcov-report/_services/server/app.server.ts.html +4408 -0
  969. package/coverage/lcov-report/_services/server/index.html +116 -0
  970. package/coverage/lcov-report/_services/shared.static-service.ts.html +319 -0
  971. package/coverage/lcov-report/base.css +224 -0
  972. package/coverage/lcov-report/block-navigation.js +87 -0
  973. package/coverage/lcov-report/favicon.png +0 -0
  974. package/coverage/lcov-report/index.html +821 -0
  975. package/coverage/lcov-report/prettify.css +1 -0
  976. package/coverage/lcov-report/prettify.js +2 -0
  977. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  978. package/coverage/lcov-report/sorter.js +210 -0
  979. package/coverage/lcov.info +29957 -0
  980. package/coverage/prettify.css +1 -0
  981. package/coverage/prettify.js +2 -0
  982. package/coverage/sort-arrow-sprite.png +0 -0
  983. package/coverage/sorter.js +210 -0
  984. package/coverage/tmp/coverage-111712-1762988673351-0.json +1 -0
  985. package/coverage/tmp/coverage-112308-1762988673527-0.json +1 -0
  986. package/coverage/tmp/coverage-112324-1762988615026-0.json +1 -0
  987. package/coverage/tmp/coverage-112436-1762988615438-0.json +1 -0
  988. package/coverage/tmp/coverage-112512-1762988673477-0.json +1 -0
  989. package/eslint.config.js +3 -3
  990. package/logs/cicd-job.json +3 -0
  991. package/logs/cicd-output.log +31 -0
  992. package/logs/cicd-report.json +148 -0
  993. package/logs/cicd-status.json +70 -0
  994. package/nodemon.json +24 -24
  995. package/package.json +1 -1
  996. package/pnpm-workspace.yaml +5 -5
  997. package/scripts/run-coverage-tests.js +28 -28
  998. package/spec/support/helpers/spec-reporter-loader.js +359 -359
  999. package/spec/support/helpers/ts-node-helper.js +93 -93
  1000. package/spec/support/jasmine.coverage.json +24 -24
  1001. package/spec/support/jasmine.json +24 -24
  1002. package/src/_collections/archive.util.spec.ts +57 -57
  1003. package/src/_collections/archive.util.ts +18 -18
  1004. package/src/_collections/atlas-default-db-options.const.ts +9 -9
  1005. package/src/_collections/default-fallback-cache-max-age.const.spec.ts +11 -11
  1006. package/src/_collections/default-fallback-cache-max-age.const.ts +2 -2
  1007. package/src/_collections/default-not-found-page.const.spec.ts +19 -19
  1008. package/src/_collections/default-not-found-page.const.ts +22 -22
  1009. package/src/_collections/default-socket-path.const.spec.ts +12 -12
  1010. package/src/_collections/default-socket-path.const.ts +2 -2
  1011. package/src/_collections/get-environment-settings.util.spec.ts +210 -210
  1012. package/src/_collections/get-environment-settings.util.ts +48 -48
  1013. package/src/_collections/global-settings.const.ts +126 -126
  1014. package/src/_collections/sample.env +21 -21
  1015. package/src/_collections/signed-url.util.spec.ts +198 -198
  1016. package/src/_collections/signed-url.util.ts +170 -170
  1017. package/src/_collections/star.controller.spec.ts +224 -224
  1018. package/src/_collections/star.controller.ts +129 -129
  1019. package/src/_enums/data-model-type.enum.ts +14 -14
  1020. package/src/_enums/data-service-function.enum.ts +24 -24
  1021. package/src/_enums/predefined-data-types.enum.ts +16 -16
  1022. package/src/_enums/route-security.enum.ts +12 -12
  1023. package/src/_models/control-models/api-call-params.control-model.spec.ts +152 -152
  1024. package/src/_models/control-models/api-call-params.control-model.ts +142 -142
  1025. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -52
  1026. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  1027. package/src/_models/control-models/app-params.control-model.spec.ts +225 -225
  1028. package/src/_models/control-models/app-params.control-model.ts +136 -136
  1029. package/src/_models/control-models/app-system-controls.control-model.spec.ts +31 -31
  1030. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  1031. package/src/_models/control-models/endpoint-params.control-model.spec.ts +669 -669
  1032. package/src/_models/control-models/endpoint-params.control-model.ts +664 -664
  1033. package/src/_models/control-models/http-settings.control-model.spec.ts +77 -77
  1034. package/src/_models/control-models/http-settings.control-model.ts +37 -37
  1035. package/src/_models/control-models/system-control.control-model.spec.ts +27 -27
  1036. package/src/_models/control-models/system-control.control-model.ts +12 -12
  1037. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  1038. package/src/_models/interfaces/environment-settings.interface.ts +59 -59
  1039. package/src/_models/interfaces/global-log-settings.interface.ts +171 -171
  1040. package/src/_models/interfaces/global-service-settings.interface.ts +47 -47
  1041. package/src/_models/interfaces/global-settings.interface.ts +294 -294
  1042. package/src/_models/interfaces/routing-module-settings.interface.ts +21 -21
  1043. package/src/_models/interfaces/static-client-settings.interface.spec.ts +29 -29
  1044. package/src/_models/interfaces/static-client-settings.interface.ts +36 -36
  1045. package/src/_models/types/db-update.type.ts +100 -100
  1046. package/src/_modules/ai/_models/ai-input-interfaces.ts +117 -117
  1047. package/src/_modules/ai/_models/ai-test-generation-result.interface.ts +16 -16
  1048. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.spec.ts +115 -115
  1049. package/src/_modules/ai/_modules/ai-mock/_services/ai-embedding-mock.service.ts +233 -233
  1050. package/src/_modules/ai/_modules/anthropic/_services/aai-user-key.control-service.ts +138 -138
  1051. package/src/_modules/ai/_modules/anthropic/index.ts +5 -5
  1052. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -242
  1053. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.ts +639 -639
  1054. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.spec.ts +295 -295
  1055. package/src/_modules/ai/_modules/document-ai/_collections/dai-code-chunking.util.ts +518 -518
  1056. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -209
  1057. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.ts +85 -85
  1058. package/src/_modules/ai/_modules/document-ai/_enums/dai-compare-result-type.enum.ts +7 -7
  1059. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-chunk.data-model.ts +146 -146
  1060. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-doc-page.data-model.ts +162 -162
  1061. package/src/_modules/ai/_modules/document-ai/_models/data-models/dai-document.data-model.ts +99 -99
  1062. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-code-chunk.interface.ts +68 -68
  1063. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-chunk-compare-result.interface.ts +18 -18
  1064. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-doc-page-compare-result.interface.ts +19 -19
  1065. package/src/_modules/ai/_modules/document-ai/_models/interfaces/dai-document-compare-result.interface.ts +25 -25
  1066. package/src/_modules/ai/_modules/document-ai/index.ts +30 -30
  1067. package/src/_modules/ai/_modules/fdp-ai/_services/fdpai-user-key.control-service.ts +189 -189
  1068. package/src/_modules/ai/_modules/fdp-ai/index.ts +5 -5
  1069. package/src/_modules/ai/_modules/open-ai/_collections/oai-global-settings.const.ts +9 -9
  1070. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests-hu.conts.ts +82 -82
  1071. package/src/_modules/ai/_modules/open-ai/_collections/oai-llm-predefined-requests.conts.ts +75 -75
  1072. package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +45 -45
  1073. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-global-settings.interface.ts +7 -7
  1074. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +7 -7
  1075. package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-llm-predefined-requests.interface.ts +57 -57
  1076. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.ts +292 -292
  1077. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -342
  1078. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -550
  1079. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.ts +630 -630
  1080. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +332 -332
  1081. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -462
  1082. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +634 -634
  1083. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +489 -489
  1084. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.tools.spec.ts +173 -173
  1085. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +1085 -1085
  1086. package/src/_modules/ai/_modules/open-ai/_services/oai-user-key.control-service.ts +157 -157
  1087. package/src/_modules/ai/_services/ai-embedding-provider.registry.spec.ts +110 -110
  1088. package/src/_modules/ai/_services/ai-embedding-provider.registry.ts +114 -114
  1089. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -98
  1090. package/src/_modules/ai/_services/ai-embedding.service-base.ts +48 -48
  1091. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -229
  1092. package/src/_modules/ai/_services/ai-llm-chat.service-base.ts +68 -68
  1093. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -250
  1094. package/src/_modules/ai/_services/ai-llm.service-base.ts +599 -599
  1095. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +158 -158
  1096. package/src/_modules/ai/_services/ai-user-key.service-base.ts +59 -59
  1097. package/src/_modules/ai/_services/lmstudio-embedding.control-service.spec.ts +197 -197
  1098. package/src/_modules/ai/_services/lmstudio-embedding.control-service.ts +371 -371
  1099. package/src/_modules/ai/index.ts +33 -33
  1100. package/src/_modules/assistant/_collections/ass-global-settings.const.ts +13 -13
  1101. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -176
  1102. package/src/_modules/assistant/_collections/ass.util.ts +50 -50
  1103. package/src/_modules/assistant/_models/ass-global-settings.interface.ts +15 -15
  1104. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -140
  1105. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -192
  1106. package/src/_modules/assistant/_services/ass-main.control-service.ts +107 -107
  1107. package/src/_modules/bot/_collections/bot-default-commands.const.ts +12 -12
  1108. package/src/_modules/bot/_collections/bot-global-settings.const.ts +39 -39
  1109. package/src/_modules/bot/_models/bot-channel-wrapper.interface.ts +62 -62
  1110. package/src/_modules/bot/_models/bot-command.interface.ts +8 -8
  1111. package/src/_modules/bot/_models/bot-global-settings.interface.ts +96 -96
  1112. package/src/_modules/bot/_models/bot-last-mention-date.interface.ts +6 -6
  1113. package/src/_modules/bot/_models/bot-last-message-date.interface.ts +5 -5
  1114. package/src/_modules/bot/_models/bot-user-wrapper.interface.ts +41 -41
  1115. package/src/_modules/bot/_modules/discord-bot/_models/dib-platform.types.ts +9 -9
  1116. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -431
  1117. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -160
  1118. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.ts +55 -55
  1119. package/src/_modules/bot/_modules/dynamo-bot/_models/dyb-platform.types.ts +15 -15
  1120. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -374
  1121. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +447 -447
  1122. package/src/_modules/bot/_modules/dynamo-bot/index.ts +15 -15
  1123. package/src/_modules/bot/_modules/slack-bot/_models/slb-platform.types.ts +9 -9
  1124. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -344
  1125. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +197 -197
  1126. package/src/_modules/bot/_modules/teams-bot/_models/teb-platform.types.ts +9 -9
  1127. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -345
  1128. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +197 -197
  1129. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -116
  1130. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -285
  1131. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -208
  1132. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -349
  1133. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -111
  1134. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -49
  1135. package/src/_modules/custom-data/custom-data.controller.ts +67 -67
  1136. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -54
  1137. package/src/_modules/custom-data/custom-data.data-service.ts +21 -21
  1138. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -28
  1139. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +24 -24
  1140. package/src/_modules/custom-data/index.ts +9 -9
  1141. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.spec.ts +161 -161
  1142. package/src/_modules/data-readers/_collections/dynts-sqlite-reader.util.ts +203 -203
  1143. package/src/_modules/data-readers/_models/interfaces/dynts-sqlite-reader.interface.ts +33 -33
  1144. package/src/_modules/data-readers/index.ts +11 -11
  1145. package/src/_modules/defaults/_collections/default-endpoints.util.ts +487 -487
  1146. package/src/_modules/defaults/_models/default-user.data-model.ts +72 -72
  1147. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -269
  1148. package/src/_modules/defaults/_services/default-auth.service.ts +177 -177
  1149. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -42
  1150. package/src/_modules/defaults/_services/default-socket-events.service.ts +61 -61
  1151. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -187
  1152. package/src/_modules/defaults/_services/default-user.data-service.ts +98 -98
  1153. package/src/_modules/defaults/index.ts +17 -17
  1154. package/src/_modules/discord-assistant/_collections/dias-global-settings.const.ts +19 -19
  1155. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -366
  1156. package/src/_modules/discord-assistant/_collections/dias.util.ts +132 -132
  1157. package/src/_modules/discord-assistant/_models/dias-global-settings.interface.ts +19 -19
  1158. package/src/_modules/discord-assistant/_models/dias-knowledge.data-model.ts +52 -52
  1159. package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +177 -177
  1160. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -108
  1161. package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +69 -69
  1162. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -22
  1163. package/src/_modules/discord-assistant/_services/dias-main.control-service.ts +27 -27
  1164. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -195
  1165. package/src/_modules/discord-assistant/_services/dias.service-base.ts +76 -76
  1166. package/src/_modules/discord-assistant/index.ts +38 -38
  1167. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -34
  1168. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.ts +11 -11
  1169. package/src/_modules/discord-assistant-voiced/index.ts +36 -36
  1170. package/src/_modules/discord-bot/_collections/dibo-default-commands.const.ts +16 -16
  1171. package/src/_modules/discord-bot/_collections/dibo-global-settings.conts.ts +55 -55
  1172. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -214
  1173. package/src/_modules/discord-bot/_collections/dibo-operations.util.ts +387 -387
  1174. package/src/_modules/discord-bot/_models/dibo-command.interface.ts +12 -12
  1175. package/src/_modules/discord-bot/_models/dibo-global-settings.interface.ts +98 -98
  1176. package/src/_modules/discord-bot/_models/dibo-last-mention-date.inteface.ts +7 -7
  1177. package/src/_modules/discord-bot/_models/dibo-last-message-date.interface.ts +6 -6
  1178. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -154
  1179. package/src/_modules/discord-bot/_services/dibo-commands.control-service.ts +153 -153
  1180. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -264
  1181. package/src/_modules/discord-bot/_services/dibo-io.control-service.ts +306 -306
  1182. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -408
  1183. package/src/_modules/discord-bot/_services/dibo-main.control-service.ts +487 -487
  1184. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -105
  1185. package/src/_modules/discord-bot/index.ts +36 -36
  1186. package/src/_modules/local-vector-search/_enums/lvs-search-mode.enum.ts +35 -35
  1187. package/src/_modules/local-vector-search/_models/data-models/lvs-vector-persist.data-model.ts +59 -59
  1188. package/src/_modules/local-vector-search/_models/lvs-search-result.interface.ts +17 -17
  1189. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -418
  1190. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.ts +276 -276
  1191. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +480 -480
  1192. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.ts +416 -416
  1193. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.spec.ts +214 -214
  1194. package/src/_modules/local-vector-search/_services/lvs-persistent-vector-pool.control-service.ts +186 -186
  1195. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.spec.ts +167 -167
  1196. package/src/_modules/local-vector-search/_services/lvs-vector-persist.data-service.ts +130 -130
  1197. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.spec.ts +509 -509
  1198. package/src/_modules/local-vector-search/_services/lvs-vector-pool.control-service.ts +323 -323
  1199. package/src/_modules/local-vector-search/index.ts +16 -16
  1200. package/src/_modules/logs/index.ts +11 -11
  1201. package/src/_modules/mcp/_models/interfaces/dynts-mcp.interface.ts +111 -111
  1202. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.spec.ts +142 -142
  1203. package/src/_modules/mcp/_services/dynts-mcp-server.service-base.ts +120 -120
  1204. package/src/_modules/mcp/_services/dynts-mcp.adapter.ts +168 -168
  1205. package/src/_modules/mcp/index.ts +13 -13
  1206. package/src/_modules/messaging/README.md +354 -354
  1207. package/src/_modules/messaging/_collections/get-messaging-routing-module.util.ts +26 -26
  1208. package/src/_modules/messaging/_collections/msg-global-settings.const.ts +22 -22
  1209. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -226
  1210. package/src/_modules/messaging/_models/msg-global-settings.interface.ts +37 -37
  1211. package/src/_modules/messaging/_services/msg-conversation.data-service.ts +146 -146
  1212. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -219
  1213. package/src/_modules/messaging/_services/msg-events.service.ts +267 -267
  1214. package/src/_modules/messaging/_services/msg-integration.control-service.ts +179 -179
  1215. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -147
  1216. package/src/_modules/messaging/_services/msg-main.control-service.ts +571 -571
  1217. package/src/_modules/messaging/_services/msg-message.data-service.ts +129 -129
  1218. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -201
  1219. package/src/_modules/messaging/index.ts +30 -30
  1220. package/src/_modules/mock/app-extended-server.mock.ts +201 -201
  1221. package/src/_modules/mock/app-integration-test.mock.ts +51 -51
  1222. package/src/_modules/mock/app-params.mock.spec.ts +21 -21
  1223. package/src/_modules/mock/app-params.mock.ts +9 -9
  1224. package/src/_modules/mock/app-server.mock.ts +188 -188
  1225. package/src/_modules/mock/auth-service.mock.spec.ts +47 -47
  1226. package/src/_modules/mock/auth-service.mock.ts +28 -28
  1227. package/src/_modules/mock/controller.mock.spec.ts +26 -26
  1228. package/src/_modules/mock/controller.mock.ts +16 -16
  1229. package/src/_modules/mock/data-model.mock.spec.ts +111 -111
  1230. package/src/_modules/mock/data-model.mock.ts +82 -82
  1231. package/src/_modules/mock/email-service-collection.mock.spec.ts +24 -24
  1232. package/src/_modules/mock/email-service-collection.mock.ts +15 -15
  1233. package/src/_modules/mock/email-service.mock.spec.ts +17 -17
  1234. package/src/_modules/mock/email-service.mock.ts +20 -20
  1235. package/src/_modules/mock/email-template.mock.html +14 -14
  1236. package/src/_modules/mock/endpoint.mock.ts +91 -91
  1237. package/src/_modules/mock/socket-client.mock.spec.ts +40 -40
  1238. package/src/_modules/mock/socket-client.mock.ts +45 -45
  1239. package/src/_modules/mock/socket-server.mock.spec.ts +44 -44
  1240. package/src/_modules/mock/socket-server.mock.ts +46 -46
  1241. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -107
  1242. package/src/_modules/oauth2/_routes/oauth2.controller.ts +98 -98
  1243. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -254
  1244. package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -232
  1245. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -585
  1246. package/src/_modules/oauth2/_services/oauth2.control-service.ts +653 -653
  1247. package/src/_modules/oauth2/index.ts +17 -17
  1248. package/src/_modules/scheduler/_models/scheduler-job.interface.ts +35 -35
  1249. package/src/_modules/scheduler/get-scheduler-routing-module.util.ts +33 -33
  1250. package/src/_modules/scheduler/index.ts +8 -8
  1251. package/src/_modules/scheduler/scheduler.controller.spec.ts +42 -42
  1252. package/src/_modules/scheduler/scheduler.controller.ts +69 -69
  1253. package/src/_modules/scheduler/scheduler.service.spec.ts +141 -141
  1254. package/src/_modules/scheduler/scheduler.service.ts +176 -176
  1255. package/src/_modules/scoped-config/_enums/dynts-scoped-config-level.enum.ts +22 -22
  1256. package/src/_modules/scoped-config/_models/data-models/dynts-scoped-config.data-model.ts +81 -81
  1257. package/src/_modules/scoped-config/_models/interfaces/dynts-scoped-config.interface.ts +107 -107
  1258. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.spec.ts +306 -306
  1259. package/src/_modules/scoped-config/_services/dynts-scoped-config.control-service.ts +295 -295
  1260. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.spec.ts +118 -118
  1261. package/src/_modules/scoped-config/_services/dynts-scoped-config.data-service.ts +105 -105
  1262. package/src/_modules/scoped-config/index.ts +17 -17
  1263. package/src/_modules/server/errors/errors.control-service.spec.ts +238 -238
  1264. package/src/_modules/server/errors/errors.control-service.ts +100 -100
  1265. package/src/_modules/server/errors/errors.controller.ts +559 -559
  1266. package/src/_modules/server/errors/errors.data-service.spec.ts +480 -480
  1267. package/src/_modules/server/index.ts +30 -30
  1268. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -70
  1269. package/src/_modules/server/server-status/server-status-snapshot.control-service.ts +17 -17
  1270. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -77
  1271. package/src/_modules/server/server-status/server-status-snapshot.data-service.ts +37 -37
  1272. package/src/_modules/server/server-status/server-status.control-service.spec.ts +672 -672
  1273. package/src/_modules/server/server-status/server-status.control-service.ts +490 -490
  1274. package/src/_modules/server/server-status/server-status.controller.spec.ts +276 -276
  1275. package/src/_modules/server/server-status/server-status.controller.ts +336 -336
  1276. package/src/_modules/socket/_enums/socket-security.enum.ts +11 -11
  1277. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +32 -32
  1278. package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +22 -22
  1279. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +159 -158
  1280. package/src/_modules/socket/_models/socket-presence.control-model.ts +210 -209
  1281. package/src/_modules/socket/_models/socket-server-service-params.control-model.spec.ts +69 -69
  1282. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -15
  1283. package/src/_modules/socket/_services/socket-client.service.ts +260 -260
  1284. package/src/_modules/socket/_services/socket-server.service.spec.ts +225 -3
  1285. package/src/_modules/socket/_services/socket-server.service.ts +41 -74
  1286. package/src/_modules/socket/app-extended.integration.spec.ts +85 -85
  1287. package/src/_modules/socket/app-extended.server.ts +648 -648
  1288. package/src/_modules/socket/index.ts +42 -42
  1289. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -28
  1290. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  1291. package/src/_modules/test/index.ts +11 -11
  1292. package/src/_modules/test/test.controller.spec.ts +72 -72
  1293. package/src/_modules/test/test.controller.ts +115 -115
  1294. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  1295. package/src/_modules/usage/index.ts +15 -15
  1296. package/src/_modules/usage/usage.controller.spec.ts +106 -106
  1297. package/src/_modules/usage/usage.controller.ts +140 -140
  1298. package/src/_modules/usage/usage.data-service.spec.ts +332 -332
  1299. package/src/_modules/usage/usage.data-service.ts +185 -185
  1300. package/src/_services/base/api.service-base.spec.ts +125 -125
  1301. package/src/_services/base/api.service-base.ts +74 -74
  1302. package/src/_services/base/archive-data.service.spec.ts +209 -209
  1303. package/src/_services/base/archive-data.service.ts +223 -223
  1304. package/src/_services/base/data.service.spec.ts +784 -784
  1305. package/src/_services/base/data.service.ts +2792 -2792
  1306. package/src/_services/base/db.service.spec.ts +160 -160
  1307. package/src/_services/base/db.service.ts +1698 -1698
  1308. package/src/_services/base/singleton.service-base.spec.ts +28 -28
  1309. package/src/_services/base/singleton.service-base.ts +24 -24
  1310. package/src/_services/base/singleton.service.spec.ts +114 -114
  1311. package/src/_services/base/singleton.service.ts +38 -38
  1312. package/src/_services/core/api.service.spec.ts +140 -140
  1313. package/src/_services/core/auth.service.spec.ts +159 -159
  1314. package/src/_services/core/auth.service.ts +174 -174
  1315. package/src/_services/core/email.service.spec.ts +85 -85
  1316. package/src/_services/core/email.service.ts +757 -757
  1317. package/src/_services/core/global.service.spec.ts +292 -292
  1318. package/src/_services/core/global.service.ts +487 -487
  1319. package/src/_services/core/memory-guard.service.spec.ts +245 -245
  1320. package/src/_services/core/memory-guard.service.ts +481 -481
  1321. package/src/_services/core/service-collection.service.spec.ts +46 -46
  1322. package/src/_services/core/service-collection.service.ts +6 -6
  1323. package/src/_services/route/controller.service.spec.ts +53 -53
  1324. package/src/_services/route/controller.service.ts +148 -148
  1325. package/src/_services/route/routing-module.service.spec.ts +98 -98
  1326. package/src/_services/route/routing-module.service.ts +330 -330
  1327. package/src/_services/server/app.server.ts +2012 -2012
  1328. package/src/_services/shared.static-service.spec.ts +99 -99
  1329. package/src/_services/shared.static-service.ts +78 -78
  1330. package/tsconfig.app.json +12 -12
  1331. package/tsconfig.json +42 -42
  1332. package/.dynamo/logs/cicd-pipeline/output.log +0 -2862
  1333. package/.dynamo/logs/cicd-pipeline/status.json +0 -74
@@ -0,0 +1,3196 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for _modules/socket/_services/socket-server.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">_modules/socket/_services</a> socket-server.service.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">30.56% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>317/1037</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">55.17% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>16/29</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">36% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>9/25</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">30.56% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>317/1037</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 low'></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>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a>
900
+ <a name='L835'></a><a href='#L835'>835</a>
901
+ <a name='L836'></a><a href='#L836'>836</a>
902
+ <a name='L837'></a><a href='#L837'>837</a>
903
+ <a name='L838'></a><a href='#L838'>838</a>
904
+ <a name='L839'></a><a href='#L839'>839</a>
905
+ <a name='L840'></a><a href='#L840'>840</a>
906
+ <a name='L841'></a><a href='#L841'>841</a>
907
+ <a name='L842'></a><a href='#L842'>842</a>
908
+ <a name='L843'></a><a href='#L843'>843</a>
909
+ <a name='L844'></a><a href='#L844'>844</a>
910
+ <a name='L845'></a><a href='#L845'>845</a>
911
+ <a name='L846'></a><a href='#L846'>846</a>
912
+ <a name='L847'></a><a href='#L847'>847</a>
913
+ <a name='L848'></a><a href='#L848'>848</a>
914
+ <a name='L849'></a><a href='#L849'>849</a>
915
+ <a name='L850'></a><a href='#L850'>850</a>
916
+ <a name='L851'></a><a href='#L851'>851</a>
917
+ <a name='L852'></a><a href='#L852'>852</a>
918
+ <a name='L853'></a><a href='#L853'>853</a>
919
+ <a name='L854'></a><a href='#L854'>854</a>
920
+ <a name='L855'></a><a href='#L855'>855</a>
921
+ <a name='L856'></a><a href='#L856'>856</a>
922
+ <a name='L857'></a><a href='#L857'>857</a>
923
+ <a name='L858'></a><a href='#L858'>858</a>
924
+ <a name='L859'></a><a href='#L859'>859</a>
925
+ <a name='L860'></a><a href='#L860'>860</a>
926
+ <a name='L861'></a><a href='#L861'>861</a>
927
+ <a name='L862'></a><a href='#L862'>862</a>
928
+ <a name='L863'></a><a href='#L863'>863</a>
929
+ <a name='L864'></a><a href='#L864'>864</a>
930
+ <a name='L865'></a><a href='#L865'>865</a>
931
+ <a name='L866'></a><a href='#L866'>866</a>
932
+ <a name='L867'></a><a href='#L867'>867</a>
933
+ <a name='L868'></a><a href='#L868'>868</a>
934
+ <a name='L869'></a><a href='#L869'>869</a>
935
+ <a name='L870'></a><a href='#L870'>870</a>
936
+ <a name='L871'></a><a href='#L871'>871</a>
937
+ <a name='L872'></a><a href='#L872'>872</a>
938
+ <a name='L873'></a><a href='#L873'>873</a>
939
+ <a name='L874'></a><a href='#L874'>874</a>
940
+ <a name='L875'></a><a href='#L875'>875</a>
941
+ <a name='L876'></a><a href='#L876'>876</a>
942
+ <a name='L877'></a><a href='#L877'>877</a>
943
+ <a name='L878'></a><a href='#L878'>878</a>
944
+ <a name='L879'></a><a href='#L879'>879</a>
945
+ <a name='L880'></a><a href='#L880'>880</a>
946
+ <a name='L881'></a><a href='#L881'>881</a>
947
+ <a name='L882'></a><a href='#L882'>882</a>
948
+ <a name='L883'></a><a href='#L883'>883</a>
949
+ <a name='L884'></a><a href='#L884'>884</a>
950
+ <a name='L885'></a><a href='#L885'>885</a>
951
+ <a name='L886'></a><a href='#L886'>886</a>
952
+ <a name='L887'></a><a href='#L887'>887</a>
953
+ <a name='L888'></a><a href='#L888'>888</a>
954
+ <a name='L889'></a><a href='#L889'>889</a>
955
+ <a name='L890'></a><a href='#L890'>890</a>
956
+ <a name='L891'></a><a href='#L891'>891</a>
957
+ <a name='L892'></a><a href='#L892'>892</a>
958
+ <a name='L893'></a><a href='#L893'>893</a>
959
+ <a name='L894'></a><a href='#L894'>894</a>
960
+ <a name='L895'></a><a href='#L895'>895</a>
961
+ <a name='L896'></a><a href='#L896'>896</a>
962
+ <a name='L897'></a><a href='#L897'>897</a>
963
+ <a name='L898'></a><a href='#L898'>898</a>
964
+ <a name='L899'></a><a href='#L899'>899</a>
965
+ <a name='L900'></a><a href='#L900'>900</a>
966
+ <a name='L901'></a><a href='#L901'>901</a>
967
+ <a name='L902'></a><a href='#L902'>902</a>
968
+ <a name='L903'></a><a href='#L903'>903</a>
969
+ <a name='L904'></a><a href='#L904'>904</a>
970
+ <a name='L905'></a><a href='#L905'>905</a>
971
+ <a name='L906'></a><a href='#L906'>906</a>
972
+ <a name='L907'></a><a href='#L907'>907</a>
973
+ <a name='L908'></a><a href='#L908'>908</a>
974
+ <a name='L909'></a><a href='#L909'>909</a>
975
+ <a name='L910'></a><a href='#L910'>910</a>
976
+ <a name='L911'></a><a href='#L911'>911</a>
977
+ <a name='L912'></a><a href='#L912'>912</a>
978
+ <a name='L913'></a><a href='#L913'>913</a>
979
+ <a name='L914'></a><a href='#L914'>914</a>
980
+ <a name='L915'></a><a href='#L915'>915</a>
981
+ <a name='L916'></a><a href='#L916'>916</a>
982
+ <a name='L917'></a><a href='#L917'>917</a>
983
+ <a name='L918'></a><a href='#L918'>918</a>
984
+ <a name='L919'></a><a href='#L919'>919</a>
985
+ <a name='L920'></a><a href='#L920'>920</a>
986
+ <a name='L921'></a><a href='#L921'>921</a>
987
+ <a name='L922'></a><a href='#L922'>922</a>
988
+ <a name='L923'></a><a href='#L923'>923</a>
989
+ <a name='L924'></a><a href='#L924'>924</a>
990
+ <a name='L925'></a><a href='#L925'>925</a>
991
+ <a name='L926'></a><a href='#L926'>926</a>
992
+ <a name='L927'></a><a href='#L927'>927</a>
993
+ <a name='L928'></a><a href='#L928'>928</a>
994
+ <a name='L929'></a><a href='#L929'>929</a>
995
+ <a name='L930'></a><a href='#L930'>930</a>
996
+ <a name='L931'></a><a href='#L931'>931</a>
997
+ <a name='L932'></a><a href='#L932'>932</a>
998
+ <a name='L933'></a><a href='#L933'>933</a>
999
+ <a name='L934'></a><a href='#L934'>934</a>
1000
+ <a name='L935'></a><a href='#L935'>935</a>
1001
+ <a name='L936'></a><a href='#L936'>936</a>
1002
+ <a name='L937'></a><a href='#L937'>937</a>
1003
+ <a name='L938'></a><a href='#L938'>938</a>
1004
+ <a name='L939'></a><a href='#L939'>939</a>
1005
+ <a name='L940'></a><a href='#L940'>940</a>
1006
+ <a name='L941'></a><a href='#L941'>941</a>
1007
+ <a name='L942'></a><a href='#L942'>942</a>
1008
+ <a name='L943'></a><a href='#L943'>943</a>
1009
+ <a name='L944'></a><a href='#L944'>944</a>
1010
+ <a name='L945'></a><a href='#L945'>945</a>
1011
+ <a name='L946'></a><a href='#L946'>946</a>
1012
+ <a name='L947'></a><a href='#L947'>947</a>
1013
+ <a name='L948'></a><a href='#L948'>948</a>
1014
+ <a name='L949'></a><a href='#L949'>949</a>
1015
+ <a name='L950'></a><a href='#L950'>950</a>
1016
+ <a name='L951'></a><a href='#L951'>951</a>
1017
+ <a name='L952'></a><a href='#L952'>952</a>
1018
+ <a name='L953'></a><a href='#L953'>953</a>
1019
+ <a name='L954'></a><a href='#L954'>954</a>
1020
+ <a name='L955'></a><a href='#L955'>955</a>
1021
+ <a name='L956'></a><a href='#L956'>956</a>
1022
+ <a name='L957'></a><a href='#L957'>957</a>
1023
+ <a name='L958'></a><a href='#L958'>958</a>
1024
+ <a name='L959'></a><a href='#L959'>959</a>
1025
+ <a name='L960'></a><a href='#L960'>960</a>
1026
+ <a name='L961'></a><a href='#L961'>961</a>
1027
+ <a name='L962'></a><a href='#L962'>962</a>
1028
+ <a name='L963'></a><a href='#L963'>963</a>
1029
+ <a name='L964'></a><a href='#L964'>964</a>
1030
+ <a name='L965'></a><a href='#L965'>965</a>
1031
+ <a name='L966'></a><a href='#L966'>966</a>
1032
+ <a name='L967'></a><a href='#L967'>967</a>
1033
+ <a name='L968'></a><a href='#L968'>968</a>
1034
+ <a name='L969'></a><a href='#L969'>969</a>
1035
+ <a name='L970'></a><a href='#L970'>970</a>
1036
+ <a name='L971'></a><a href='#L971'>971</a>
1037
+ <a name='L972'></a><a href='#L972'>972</a>
1038
+ <a name='L973'></a><a href='#L973'>973</a>
1039
+ <a name='L974'></a><a href='#L974'>974</a>
1040
+ <a name='L975'></a><a href='#L975'>975</a>
1041
+ <a name='L976'></a><a href='#L976'>976</a>
1042
+ <a name='L977'></a><a href='#L977'>977</a>
1043
+ <a name='L978'></a><a href='#L978'>978</a>
1044
+ <a name='L979'></a><a href='#L979'>979</a>
1045
+ <a name='L980'></a><a href='#L980'>980</a>
1046
+ <a name='L981'></a><a href='#L981'>981</a>
1047
+ <a name='L982'></a><a href='#L982'>982</a>
1048
+ <a name='L983'></a><a href='#L983'>983</a>
1049
+ <a name='L984'></a><a href='#L984'>984</a>
1050
+ <a name='L985'></a><a href='#L985'>985</a>
1051
+ <a name='L986'></a><a href='#L986'>986</a>
1052
+ <a name='L987'></a><a href='#L987'>987</a>
1053
+ <a name='L988'></a><a href='#L988'>988</a>
1054
+ <a name='L989'></a><a href='#L989'>989</a>
1055
+ <a name='L990'></a><a href='#L990'>990</a>
1056
+ <a name='L991'></a><a href='#L991'>991</a>
1057
+ <a name='L992'></a><a href='#L992'>992</a>
1058
+ <a name='L993'></a><a href='#L993'>993</a>
1059
+ <a name='L994'></a><a href='#L994'>994</a>
1060
+ <a name='L995'></a><a href='#L995'>995</a>
1061
+ <a name='L996'></a><a href='#L996'>996</a>
1062
+ <a name='L997'></a><a href='#L997'>997</a>
1063
+ <a name='L998'></a><a href='#L998'>998</a>
1064
+ <a name='L999'></a><a href='#L999'>999</a>
1065
+ <a name='L1000'></a><a href='#L1000'>1000</a>
1066
+ <a name='L1001'></a><a href='#L1001'>1001</a>
1067
+ <a name='L1002'></a><a href='#L1002'>1002</a>
1068
+ <a name='L1003'></a><a href='#L1003'>1003</a>
1069
+ <a name='L1004'></a><a href='#L1004'>1004</a>
1070
+ <a name='L1005'></a><a href='#L1005'>1005</a>
1071
+ <a name='L1006'></a><a href='#L1006'>1006</a>
1072
+ <a name='L1007'></a><a href='#L1007'>1007</a>
1073
+ <a name='L1008'></a><a href='#L1008'>1008</a>
1074
+ <a name='L1009'></a><a href='#L1009'>1009</a>
1075
+ <a name='L1010'></a><a href='#L1010'>1010</a>
1076
+ <a name='L1011'></a><a href='#L1011'>1011</a>
1077
+ <a name='L1012'></a><a href='#L1012'>1012</a>
1078
+ <a name='L1013'></a><a href='#L1013'>1013</a>
1079
+ <a name='L1014'></a><a href='#L1014'>1014</a>
1080
+ <a name='L1015'></a><a href='#L1015'>1015</a>
1081
+ <a name='L1016'></a><a href='#L1016'>1016</a>
1082
+ <a name='L1017'></a><a href='#L1017'>1017</a>
1083
+ <a name='L1018'></a><a href='#L1018'>1018</a>
1084
+ <a name='L1019'></a><a href='#L1019'>1019</a>
1085
+ <a name='L1020'></a><a href='#L1020'>1020</a>
1086
+ <a name='L1021'></a><a href='#L1021'>1021</a>
1087
+ <a name='L1022'></a><a href='#L1022'>1022</a>
1088
+ <a name='L1023'></a><a href='#L1023'>1023</a>
1089
+ <a name='L1024'></a><a href='#L1024'>1024</a>
1090
+ <a name='L1025'></a><a href='#L1025'>1025</a>
1091
+ <a name='L1026'></a><a href='#L1026'>1026</a>
1092
+ <a name='L1027'></a><a href='#L1027'>1027</a>
1093
+ <a name='L1028'></a><a href='#L1028'>1028</a>
1094
+ <a name='L1029'></a><a href='#L1029'>1029</a>
1095
+ <a name='L1030'></a><a href='#L1030'>1030</a>
1096
+ <a name='L1031'></a><a href='#L1031'>1031</a>
1097
+ <a name='L1032'></a><a href='#L1032'>1032</a>
1098
+ <a name='L1033'></a><a href='#L1033'>1033</a>
1099
+ <a name='L1034'></a><a href='#L1034'>1034</a>
1100
+ <a name='L1035'></a><a href='#L1035'>1035</a>
1101
+ <a name='L1036'></a><a href='#L1036'>1036</a>
1102
+ <a name='L1037'></a><a href='#L1037'>1037</a>
1103
+ <a name='L1038'></a><a href='#L1038'>1038</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
1104
+ <span class="cline-any cline-yes">1x</span>
1105
+ <span class="cline-any cline-yes">1x</span>
1106
+ <span class="cline-any cline-yes">1x</span>
1107
+ <span class="cline-any cline-yes">1x</span>
1108
+ <span class="cline-any cline-yes">1x</span>
1109
+ <span class="cline-any cline-yes">1x</span>
1110
+ <span class="cline-any cline-yes">1x</span>
1111
+ <span class="cline-any cline-yes">1x</span>
1112
+ <span class="cline-any cline-yes">1x</span>
1113
+ <span class="cline-any cline-yes">1x</span>
1114
+ <span class="cline-any cline-yes">1x</span>
1115
+ <span class="cline-any cline-yes">1x</span>
1116
+ <span class="cline-any cline-yes">1x</span>
1117
+ <span class="cline-any cline-yes">1x</span>
1118
+ <span class="cline-any cline-yes">1x</span>
1119
+ <span class="cline-any cline-yes">1x</span>
1120
+ <span class="cline-any cline-yes">1x</span>
1121
+ <span class="cline-any cline-yes">1x</span>
1122
+ <span class="cline-any cline-yes">1x</span>
1123
+ <span class="cline-any cline-yes">1x</span>
1124
+ <span class="cline-any cline-yes">1x</span>
1125
+ <span class="cline-any cline-yes">1x</span>
1126
+ <span class="cline-any cline-yes">1x</span>
1127
+ <span class="cline-any cline-yes">1x</span>
1128
+ <span class="cline-any cline-yes">1x</span>
1129
+ <span class="cline-any cline-yes">1x</span>
1130
+ <span class="cline-any cline-yes">1x</span>
1131
+ <span class="cline-any cline-yes">1x</span>
1132
+ <span class="cline-any cline-yes">1x</span>
1133
+ <span class="cline-any cline-yes">1x</span>
1134
+ <span class="cline-any cline-yes">1x</span>
1135
+ <span class="cline-any cline-yes">1x</span>
1136
+ <span class="cline-any cline-yes">1x</span>
1137
+ <span class="cline-any cline-yes">1x</span>
1138
+ <span class="cline-any cline-yes">1x</span>
1139
+ <span class="cline-any cline-yes">1x</span>
1140
+ <span class="cline-any cline-yes">1x</span>
1141
+ <span class="cline-any cline-yes">1x</span>
1142
+ <span class="cline-any cline-yes">1x</span>
1143
+ <span class="cline-any cline-yes">1x</span>
1144
+ <span class="cline-any cline-yes">1x</span>
1145
+ <span class="cline-any cline-yes">1x</span>
1146
+ <span class="cline-any cline-yes">1x</span>
1147
+ <span class="cline-any cline-yes">1x</span>
1148
+ <span class="cline-any cline-yes">1x</span>
1149
+ <span class="cline-any cline-yes">1x</span>
1150
+ <span class="cline-any cline-yes">1x</span>
1151
+ <span class="cline-any cline-yes">1x</span>
1152
+ <span class="cline-any cline-yes">1x</span>
1153
+ <span class="cline-any cline-yes">1x</span>
1154
+ <span class="cline-any cline-yes">1x</span>
1155
+ <span class="cline-any cline-yes">1x</span>
1156
+ <span class="cline-any cline-yes">1x</span>
1157
+ <span class="cline-any cline-yes">1x</span>
1158
+ <span class="cline-any cline-yes">1x</span>
1159
+ <span class="cline-any cline-yes">1x</span>
1160
+ <span class="cline-any cline-yes">1x</span>
1161
+ <span class="cline-any cline-yes">1x</span>
1162
+ <span class="cline-any cline-yes">1x</span>
1163
+ <span class="cline-any cline-yes">1x</span>
1164
+ <span class="cline-any cline-yes">1x</span>
1165
+ <span class="cline-any cline-yes">1x</span>
1166
+ <span class="cline-any cline-yes">1x</span>
1167
+ <span class="cline-any cline-yes">1x</span>
1168
+ <span class="cline-any cline-yes">1x</span>
1169
+ <span class="cline-any cline-yes">1x</span>
1170
+ <span class="cline-any cline-yes">1x</span>
1171
+ <span class="cline-any cline-yes">1x</span>
1172
+ <span class="cline-any cline-yes">1x</span>
1173
+ <span class="cline-any cline-yes">1x</span>
1174
+ <span class="cline-any cline-yes">1x</span>
1175
+ <span class="cline-any cline-yes">1x</span>
1176
+ <span class="cline-any cline-yes">1x</span>
1177
+ <span class="cline-any cline-no">&nbsp;</span>
1178
+ <span class="cline-any cline-no">&nbsp;</span>
1179
+ <span class="cline-any cline-no">&nbsp;</span>
1180
+ <span class="cline-any cline-no">&nbsp;</span>
1181
+ <span class="cline-any cline-yes">1x</span>
1182
+ <span class="cline-any cline-yes">1x</span>
1183
+ <span class="cline-any cline-yes">1x</span>
1184
+ <span class="cline-any cline-yes">1x</span>
1185
+ <span class="cline-any cline-yes">1x</span>
1186
+ <span class="cline-any cline-yes">1x</span>
1187
+ <span class="cline-any cline-yes">1x</span>
1188
+ <span class="cline-any cline-yes">1x</span>
1189
+ <span class="cline-any cline-yes">1x</span>
1190
+ <span class="cline-any cline-yes">1x</span>
1191
+ <span class="cline-any cline-yes">1x</span>
1192
+ <span class="cline-any cline-yes">1x</span>
1193
+ <span class="cline-any cline-yes">1x</span>
1194
+ <span class="cline-any cline-yes">1x</span>
1195
+ <span class="cline-any cline-yes">1x</span>
1196
+ <span class="cline-any cline-yes">1x</span>
1197
+ <span class="cline-any cline-yes">1x</span>
1198
+ <span class="cline-any cline-yes">1x</span>
1199
+ <span class="cline-any cline-yes">1x</span>
1200
+ <span class="cline-any cline-yes">1x</span>
1201
+ <span class="cline-any cline-no">&nbsp;</span>
1202
+ <span class="cline-any cline-no">&nbsp;</span>
1203
+ <span class="cline-any cline-no">&nbsp;</span>
1204
+ <span class="cline-any cline-yes">1x</span>
1205
+ <span class="cline-any cline-no">&nbsp;</span>
1206
+ <span class="cline-any cline-no">&nbsp;</span>
1207
+ <span class="cline-any cline-no">&nbsp;</span>
1208
+ <span class="cline-any cline-no">&nbsp;</span>
1209
+ <span class="cline-any cline-no">&nbsp;</span>
1210
+ <span class="cline-any cline-no">&nbsp;</span>
1211
+ <span class="cline-any cline-no">&nbsp;</span>
1212
+ <span class="cline-any cline-no">&nbsp;</span>
1213
+ <span class="cline-any cline-no">&nbsp;</span>
1214
+ <span class="cline-any cline-no">&nbsp;</span>
1215
+ <span class="cline-any cline-yes">1x</span>
1216
+ <span class="cline-any cline-yes">1x</span>
1217
+ <span class="cline-any cline-yes">1x</span>
1218
+ <span class="cline-any cline-yes">1x</span>
1219
+ <span class="cline-any cline-yes">1x</span>
1220
+ <span class="cline-any cline-yes">1x</span>
1221
+ <span class="cline-any cline-yes">1x</span>
1222
+ <span class="cline-any cline-yes">1x</span>
1223
+ <span class="cline-any cline-yes">1x</span>
1224
+ <span class="cline-any cline-yes">1x</span>
1225
+ <span class="cline-any cline-yes">1x</span>
1226
+ <span class="cline-any cline-yes">1x</span>
1227
+ <span class="cline-any cline-yes">1x</span>
1228
+ <span class="cline-any cline-yes">1x</span>
1229
+ <span class="cline-any cline-yes">1x</span>
1230
+ <span class="cline-any cline-yes">1x</span>
1231
+ <span class="cline-any cline-yes">1x</span>
1232
+ <span class="cline-any cline-yes">1x</span>
1233
+ <span class="cline-any cline-yes">1x</span>
1234
+ <span class="cline-any cline-yes">1x</span>
1235
+ <span class="cline-any cline-yes">1x</span>
1236
+ <span class="cline-any cline-yes">1x</span>
1237
+ <span class="cline-any cline-yes">1x</span>
1238
+ <span class="cline-any cline-no">&nbsp;</span>
1239
+ <span class="cline-any cline-no">&nbsp;</span>
1240
+ <span class="cline-any cline-no">&nbsp;</span>
1241
+ <span class="cline-any cline-no">&nbsp;</span>
1242
+ <span class="cline-any cline-no">&nbsp;</span>
1243
+ <span class="cline-any cline-yes">1x</span>
1244
+ <span class="cline-any cline-yes">1x</span>
1245
+ <span class="cline-any cline-yes">1x</span>
1246
+ <span class="cline-any cline-yes">1x</span>
1247
+ <span class="cline-any cline-yes">1x</span>
1248
+ <span class="cline-any cline-yes">1x</span>
1249
+ <span class="cline-any cline-yes">1x</span>
1250
+ <span class="cline-any cline-yes">1x</span>
1251
+ <span class="cline-any cline-yes">1x</span>
1252
+ <span class="cline-any cline-yes">1x</span>
1253
+ <span class="cline-any cline-yes">1x</span>
1254
+ <span class="cline-any cline-no">&nbsp;</span>
1255
+ <span class="cline-any cline-yes">1x</span>
1256
+ <span class="cline-any cline-no">&nbsp;</span>
1257
+ <span class="cline-any cline-no">&nbsp;</span>
1258
+ <span class="cline-any cline-no">&nbsp;</span>
1259
+ <span class="cline-any cline-no">&nbsp;</span>
1260
+ <span class="cline-any cline-no">&nbsp;</span>
1261
+ <span class="cline-any cline-no">&nbsp;</span>
1262
+ <span class="cline-any cline-yes">1x</span>
1263
+ <span class="cline-any cline-yes">1x</span>
1264
+ <span class="cline-any cline-yes">1x</span>
1265
+ <span class="cline-any cline-no">&nbsp;</span>
1266
+ <span class="cline-any cline-yes">1x</span>
1267
+ <span class="cline-any cline-yes">1x</span>
1268
+ <span class="cline-any cline-yes">1x</span>
1269
+ <span class="cline-any cline-yes">1x</span>
1270
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
1274
+ <span class="cline-any cline-yes">1x</span>
1275
+ <span class="cline-any cline-yes">1x</span>
1276
+ <span class="cline-any cline-yes">1x</span>
1277
+ <span class="cline-any cline-no">&nbsp;</span>
1278
+ <span class="cline-any cline-no">&nbsp;</span>
1279
+ <span class="cline-any cline-no">&nbsp;</span>
1280
+ <span class="cline-any cline-no">&nbsp;</span>
1281
+ <span class="cline-any cline-no">&nbsp;</span>
1282
+ <span class="cline-any cline-yes">1x</span>
1283
+ <span class="cline-any cline-yes">1x</span>
1284
+ <span class="cline-any cline-yes">1x</span>
1285
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
1289
+ <span class="cline-any cline-yes">1x</span>
1290
+ <span class="cline-any cline-yes">1x</span>
1291
+ <span class="cline-any cline-yes">1x</span>
1292
+ <span class="cline-any cline-yes">1x</span>
1293
+ <span class="cline-any cline-yes">1x</span>
1294
+ <span class="cline-any cline-no">&nbsp;</span>
1295
+ <span class="cline-any cline-no">&nbsp;</span>
1296
+ <span class="cline-any cline-no">&nbsp;</span>
1297
+ <span class="cline-any cline-no">&nbsp;</span>
1298
+ <span class="cline-any cline-no">&nbsp;</span>
1299
+ <span class="cline-any cline-no">&nbsp;</span>
1300
+ <span class="cline-any cline-no">&nbsp;</span>
1301
+ <span class="cline-any cline-yes">1x</span>
1302
+ <span class="cline-any cline-yes">1x</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-yes">1x</span>
1306
+ <span class="cline-any cline-yes">1x</span>
1307
+ <span class="cline-any cline-yes">1x</span>
1308
+ <span class="cline-any cline-yes">1x</span>
1309
+ <span class="cline-any cline-yes">1x</span>
1310
+ <span class="cline-any cline-yes">1x</span>
1311
+ <span class="cline-any cline-yes">1x</span>
1312
+ <span class="cline-any cline-yes">1x</span>
1313
+ <span class="cline-any cline-no">&nbsp;</span>
1314
+ <span class="cline-any cline-no">&nbsp;</span>
1315
+ <span class="cline-any cline-no">&nbsp;</span>
1316
+ <span class="cline-any cline-no">&nbsp;</span>
1317
+ <span class="cline-any cline-no">&nbsp;</span>
1318
+ <span class="cline-any cline-no">&nbsp;</span>
1319
+ <span class="cline-any cline-yes">1x</span>
1320
+ <span class="cline-any cline-yes">1x</span>
1321
+ <span class="cline-any cline-yes">1x</span>
1322
+ <span class="cline-any cline-yes">1x</span>
1323
+ <span class="cline-any cline-yes">1x</span>
1324
+ <span class="cline-any cline-yes">1x</span>
1325
+ <span class="cline-any cline-yes">1x</span>
1326
+ <span class="cline-any cline-yes">1x</span>
1327
+ <span class="cline-any cline-yes">1x</span>
1328
+ <span class="cline-any cline-yes">2x</span>
1329
+ <span class="cline-any cline-yes">1x</span>
1330
+ <span class="cline-any cline-yes">1x</span>
1331
+ <span class="cline-any cline-yes">1x</span>
1332
+ <span class="cline-any cline-yes">2x</span>
1333
+ <span class="cline-any cline-yes">2x</span>
1334
+ <span class="cline-any cline-yes">2x</span>
1335
+ <span class="cline-any cline-yes">2x</span>
1336
+ <span class="cline-any cline-yes">2x</span>
1337
+ <span class="cline-any cline-yes">2x</span>
1338
+ <span class="cline-any cline-yes">2x</span>
1339
+ <span class="cline-any cline-yes">2x</span>
1340
+ <span class="cline-any cline-yes">2x</span>
1341
+ <span class="cline-any cline-yes">1x</span>
1342
+ <span class="cline-any cline-yes">1x</span>
1343
+ <span class="cline-any cline-yes">1x</span>
1344
+ <span class="cline-any cline-yes">1x</span>
1345
+ <span class="cline-any cline-no">&nbsp;</span>
1346
+ <span class="cline-any cline-no">&nbsp;</span>
1347
+ <span class="cline-any cline-no">&nbsp;</span>
1348
+ <span class="cline-any cline-no">&nbsp;</span>
1349
+ <span class="cline-any cline-no">&nbsp;</span>
1350
+ <span class="cline-any cline-no">&nbsp;</span>
1351
+ <span class="cline-any cline-no">&nbsp;</span>
1352
+ <span class="cline-any cline-no">&nbsp;</span>
1353
+ <span class="cline-any cline-no">&nbsp;</span>
1354
+ <span class="cline-any cline-no">&nbsp;</span>
1355
+ <span class="cline-any cline-yes">1x</span>
1356
+ <span class="cline-any cline-yes">1x</span>
1357
+ <span class="cline-any cline-yes">1x</span>
1358
+ <span class="cline-any cline-yes">2x</span>
1359
+ <span class="cline-any cline-yes">1x</span>
1360
+ <span class="cline-any cline-yes">1x</span>
1361
+ <span class="cline-any cline-no">&nbsp;</span>
1362
+ <span class="cline-any cline-no">&nbsp;</span>
1363
+ <span class="cline-any cline-no">&nbsp;</span>
1364
+ <span class="cline-any cline-no">&nbsp;</span>
1365
+ <span class="cline-any cline-no">&nbsp;</span>
1366
+ <span class="cline-any cline-no">&nbsp;</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-yes">1x</span>
1370
+ <span class="cline-any cline-yes">1x</span>
1371
+ <span class="cline-any cline-yes">1x</span>
1372
+ <span class="cline-any cline-yes">1x</span>
1373
+ <span class="cline-any cline-yes">4x</span>
1374
+ <span class="cline-any cline-yes">4x</span>
1375
+ <span class="cline-any cline-yes">4x</span>
1376
+ <span class="cline-any cline-yes">4x</span>
1377
+ <span class="cline-any cline-yes">4x</span>
1378
+ <span class="cline-any cline-yes">4x</span>
1379
+ <span class="cline-any cline-yes">4x</span>
1380
+ <span class="cline-any cline-yes">4x</span>
1381
+ <span class="cline-any cline-no">&nbsp;</span>
1382
+ <span class="cline-any cline-no">&nbsp;</span>
1383
+ <span class="cline-any cline-no">&nbsp;</span>
1384
+ <span class="cline-any cline-no">&nbsp;</span>
1385
+ <span class="cline-any cline-no">&nbsp;</span>
1386
+ <span class="cline-any cline-no">&nbsp;</span>
1387
+ <span class="cline-any cline-no">&nbsp;</span>
1388
+ <span class="cline-any cline-no">&nbsp;</span>
1389
+ <span class="cline-any cline-no">&nbsp;</span>
1390
+ <span class="cline-any cline-no">&nbsp;</span>
1391
+ <span class="cline-any cline-no">&nbsp;</span>
1392
+ <span class="cline-any cline-no">&nbsp;</span>
1393
+ <span class="cline-any cline-no">&nbsp;</span>
1394
+ <span class="cline-any cline-no">&nbsp;</span>
1395
+ <span class="cline-any cline-no">&nbsp;</span>
1396
+ <span class="cline-any cline-no">&nbsp;</span>
1397
+ <span class="cline-any cline-no">&nbsp;</span>
1398
+ <span class="cline-any cline-no">&nbsp;</span>
1399
+ <span class="cline-any cline-no">&nbsp;</span>
1400
+ <span class="cline-any cline-no">&nbsp;</span>
1401
+ <span class="cline-any cline-no">&nbsp;</span>
1402
+ <span class="cline-any cline-no">&nbsp;</span>
1403
+ <span class="cline-any cline-no">&nbsp;</span>
1404
+ <span class="cline-any cline-no">&nbsp;</span>
1405
+ <span class="cline-any cline-no">&nbsp;</span>
1406
+ <span class="cline-any cline-no">&nbsp;</span>
1407
+ <span class="cline-any cline-no">&nbsp;</span>
1408
+ <span class="cline-any cline-no">&nbsp;</span>
1409
+ <span class="cline-any cline-no">&nbsp;</span>
1410
+ <span class="cline-any cline-no">&nbsp;</span>
1411
+ <span class="cline-any cline-no">&nbsp;</span>
1412
+ <span class="cline-any cline-no">&nbsp;</span>
1413
+ <span class="cline-any cline-no">&nbsp;</span>
1414
+ <span class="cline-any cline-no">&nbsp;</span>
1415
+ <span class="cline-any cline-no">&nbsp;</span>
1416
+ <span class="cline-any cline-no">&nbsp;</span>
1417
+ <span class="cline-any cline-no">&nbsp;</span>
1418
+ <span class="cline-any cline-no">&nbsp;</span>
1419
+ <span class="cline-any cline-no">&nbsp;</span>
1420
+ <span class="cline-any cline-no">&nbsp;</span>
1421
+ <span class="cline-any cline-no">&nbsp;</span>
1422
+ <span class="cline-any cline-no">&nbsp;</span>
1423
+ <span class="cline-any cline-no">&nbsp;</span>
1424
+ <span class="cline-any cline-no">&nbsp;</span>
1425
+ <span class="cline-any cline-no">&nbsp;</span>
1426
+ <span class="cline-any cline-no">&nbsp;</span>
1427
+ <span class="cline-any cline-no">&nbsp;</span>
1428
+ <span class="cline-any cline-no">&nbsp;</span>
1429
+ <span class="cline-any cline-no">&nbsp;</span>
1430
+ <span class="cline-any cline-no">&nbsp;</span>
1431
+ <span class="cline-any cline-no">&nbsp;</span>
1432
+ <span class="cline-any cline-no">&nbsp;</span>
1433
+ <span class="cline-any cline-no">&nbsp;</span>
1434
+ <span class="cline-any cline-no">&nbsp;</span>
1435
+ <span class="cline-any cline-no">&nbsp;</span>
1436
+ <span class="cline-any cline-no">&nbsp;</span>
1437
+ <span class="cline-any cline-no">&nbsp;</span>
1438
+ <span class="cline-any cline-no">&nbsp;</span>
1439
+ <span class="cline-any cline-no">&nbsp;</span>
1440
+ <span class="cline-any cline-no">&nbsp;</span>
1441
+ <span class="cline-any cline-no">&nbsp;</span>
1442
+ <span class="cline-any cline-no">&nbsp;</span>
1443
+ <span class="cline-any cline-no">&nbsp;</span>
1444
+ <span class="cline-any cline-no">&nbsp;</span>
1445
+ <span class="cline-any cline-no">&nbsp;</span>
1446
+ <span class="cline-any cline-no">&nbsp;</span>
1447
+ <span class="cline-any cline-no">&nbsp;</span>
1448
+ <span class="cline-any cline-no">&nbsp;</span>
1449
+ <span class="cline-any cline-no">&nbsp;</span>
1450
+ <span class="cline-any cline-no">&nbsp;</span>
1451
+ <span class="cline-any cline-no">&nbsp;</span>
1452
+ <span class="cline-any cline-no">&nbsp;</span>
1453
+ <span class="cline-any cline-no">&nbsp;</span>
1454
+ <span class="cline-any cline-no">&nbsp;</span>
1455
+ <span class="cline-any cline-no">&nbsp;</span>
1456
+ <span class="cline-any cline-no">&nbsp;</span>
1457
+ <span class="cline-any cline-no">&nbsp;</span>
1458
+ <span class="cline-any cline-no">&nbsp;</span>
1459
+ <span class="cline-any cline-no">&nbsp;</span>
1460
+ <span class="cline-any cline-no">&nbsp;</span>
1461
+ <span class="cline-any cline-no">&nbsp;</span>
1462
+ <span class="cline-any cline-no">&nbsp;</span>
1463
+ <span class="cline-any cline-no">&nbsp;</span>
1464
+ <span class="cline-any cline-no">&nbsp;</span>
1465
+ <span class="cline-any cline-no">&nbsp;</span>
1466
+ <span class="cline-any cline-no">&nbsp;</span>
1467
+ <span class="cline-any cline-no">&nbsp;</span>
1468
+ <span class="cline-any cline-no">&nbsp;</span>
1469
+ <span class="cline-any cline-no">&nbsp;</span>
1470
+ <span class="cline-any cline-no">&nbsp;</span>
1471
+ <span class="cline-any cline-no">&nbsp;</span>
1472
+ <span class="cline-any cline-no">&nbsp;</span>
1473
+ <span class="cline-any cline-no">&nbsp;</span>
1474
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
1482
+ <span class="cline-any cline-no">&nbsp;</span>
1483
+ <span class="cline-any cline-no">&nbsp;</span>
1484
+ <span class="cline-any cline-no">&nbsp;</span>
1485
+ <span class="cline-any cline-no">&nbsp;</span>
1486
+ <span class="cline-any cline-no">&nbsp;</span>
1487
+ <span class="cline-any cline-no">&nbsp;</span>
1488
+ <span class="cline-any cline-no">&nbsp;</span>
1489
+ <span class="cline-any cline-no">&nbsp;</span>
1490
+ <span class="cline-any cline-no">&nbsp;</span>
1491
+ <span class="cline-any cline-no">&nbsp;</span>
1492
+ <span class="cline-any cline-no">&nbsp;</span>
1493
+ <span class="cline-any cline-no">&nbsp;</span>
1494
+ <span class="cline-any cline-no">&nbsp;</span>
1495
+ <span class="cline-any cline-no">&nbsp;</span>
1496
+ <span class="cline-any cline-no">&nbsp;</span>
1497
+ <span class="cline-any cline-no">&nbsp;</span>
1498
+ <span class="cline-any cline-no">&nbsp;</span>
1499
+ <span class="cline-any cline-no">&nbsp;</span>
1500
+ <span class="cline-any cline-no">&nbsp;</span>
1501
+ <span class="cline-any cline-no">&nbsp;</span>
1502
+ <span class="cline-any cline-no">&nbsp;</span>
1503
+ <span class="cline-any cline-no">&nbsp;</span>
1504
+ <span class="cline-any cline-no">&nbsp;</span>
1505
+ <span class="cline-any cline-no">&nbsp;</span>
1506
+ <span class="cline-any cline-no">&nbsp;</span>
1507
+ <span class="cline-any cline-no">&nbsp;</span>
1508
+ <span class="cline-any cline-no">&nbsp;</span>
1509
+ <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
1515
+ <span class="cline-any cline-no">&nbsp;</span>
1516
+ <span class="cline-any cline-no">&nbsp;</span>
1517
+ <span class="cline-any cline-no">&nbsp;</span>
1518
+ <span class="cline-any cline-no">&nbsp;</span>
1519
+ <span class="cline-any cline-no">&nbsp;</span>
1520
+ <span class="cline-any cline-no">&nbsp;</span>
1521
+ <span class="cline-any cline-no">&nbsp;</span>
1522
+ <span class="cline-any cline-no">&nbsp;</span>
1523
+ <span class="cline-any cline-no">&nbsp;</span>
1524
+ <span class="cline-any cline-no">&nbsp;</span>
1525
+ <span class="cline-any cline-no">&nbsp;</span>
1526
+ <span class="cline-any cline-no">&nbsp;</span>
1527
+ <span class="cline-any cline-no">&nbsp;</span>
1528
+ <span class="cline-any cline-no">&nbsp;</span>
1529
+ <span class="cline-any cline-no">&nbsp;</span>
1530
+ <span class="cline-any cline-no">&nbsp;</span>
1531
+ <span class="cline-any cline-no">&nbsp;</span>
1532
+ <span class="cline-any cline-no">&nbsp;</span>
1533
+ <span class="cline-any cline-no">&nbsp;</span>
1534
+ <span class="cline-any cline-no">&nbsp;</span>
1535
+ <span class="cline-any cline-no">&nbsp;</span>
1536
+ <span class="cline-any cline-no">&nbsp;</span>
1537
+ <span class="cline-any cline-no">&nbsp;</span>
1538
+ <span class="cline-any cline-no">&nbsp;</span>
1539
+ <span class="cline-any cline-no">&nbsp;</span>
1540
+ <span class="cline-any cline-no">&nbsp;</span>
1541
+ <span class="cline-any cline-no">&nbsp;</span>
1542
+ <span class="cline-any cline-no">&nbsp;</span>
1543
+ <span class="cline-any cline-no">&nbsp;</span>
1544
+ <span class="cline-any cline-no">&nbsp;</span>
1545
+ <span class="cline-any cline-no">&nbsp;</span>
1546
+ <span class="cline-any cline-no">&nbsp;</span>
1547
+ <span class="cline-any cline-no">&nbsp;</span>
1548
+ <span class="cline-any cline-no">&nbsp;</span>
1549
+ <span class="cline-any cline-no">&nbsp;</span>
1550
+ <span class="cline-any cline-no">&nbsp;</span>
1551
+ <span class="cline-any cline-no">&nbsp;</span>
1552
+ <span class="cline-any cline-no">&nbsp;</span>
1553
+ <span class="cline-any cline-no">&nbsp;</span>
1554
+ <span class="cline-any cline-no">&nbsp;</span>
1555
+ <span class="cline-any cline-no">&nbsp;</span>
1556
+ <span class="cline-any cline-no">&nbsp;</span>
1557
+ <span class="cline-any cline-no">&nbsp;</span>
1558
+ <span class="cline-any cline-no">&nbsp;</span>
1559
+ <span class="cline-any cline-no">&nbsp;</span>
1560
+ <span class="cline-any cline-no">&nbsp;</span>
1561
+ <span class="cline-any cline-no">&nbsp;</span>
1562
+ <span class="cline-any cline-no">&nbsp;</span>
1563
+ <span class="cline-any cline-no">&nbsp;</span>
1564
+ <span class="cline-any cline-no">&nbsp;</span>
1565
+ <span class="cline-any cline-no">&nbsp;</span>
1566
+ <span class="cline-any cline-no">&nbsp;</span>
1567
+ <span class="cline-any cline-no">&nbsp;</span>
1568
+ <span class="cline-any cline-no">&nbsp;</span>
1569
+ <span class="cline-any cline-no">&nbsp;</span>
1570
+ <span class="cline-any cline-no">&nbsp;</span>
1571
+ <span class="cline-any cline-no">&nbsp;</span>
1572
+ <span class="cline-any cline-no">&nbsp;</span>
1573
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
1577
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
1581
+ <span class="cline-any cline-no">&nbsp;</span>
1582
+ <span class="cline-any cline-no">&nbsp;</span>
1583
+ <span class="cline-any cline-no">&nbsp;</span>
1584
+ <span class="cline-any cline-no">&nbsp;</span>
1585
+ <span class="cline-any cline-no">&nbsp;</span>
1586
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
1591
+ <span class="cline-any cline-no">&nbsp;</span>
1592
+ <span class="cline-any cline-no">&nbsp;</span>
1593
+ <span class="cline-any cline-no">&nbsp;</span>
1594
+ <span class="cline-any cline-no">&nbsp;</span>
1595
+ <span class="cline-any cline-no">&nbsp;</span>
1596
+ <span class="cline-any cline-no">&nbsp;</span>
1597
+ <span class="cline-any cline-no">&nbsp;</span>
1598
+ <span class="cline-any cline-no">&nbsp;</span>
1599
+ <span class="cline-any cline-no">&nbsp;</span>
1600
+ <span class="cline-any cline-no">&nbsp;</span>
1601
+ <span class="cline-any cline-yes">4x</span>
1602
+ <span class="cline-any cline-yes">4x</span>
1603
+ <span class="cline-any cline-yes">4x</span>
1604
+ <span class="cline-any cline-yes">4x</span>
1605
+ <span class="cline-any cline-yes">4x</span>
1606
+ <span class="cline-any cline-yes">4x</span>
1607
+ <span class="cline-any cline-yes">4x</span>
1608
+ <span class="cline-any cline-yes">4x</span>
1609
+ <span class="cline-any cline-yes">4x</span>
1610
+ <span class="cline-any cline-yes">4x</span>
1611
+ <span class="cline-any cline-no">&nbsp;</span>
1612
+ <span class="cline-any cline-no">&nbsp;</span>
1613
+ <span class="cline-any cline-no">&nbsp;</span>
1614
+ <span class="cline-any cline-no">&nbsp;</span>
1615
+ <span class="cline-any cline-no">&nbsp;</span>
1616
+ <span class="cline-any cline-no">&nbsp;</span>
1617
+ <span class="cline-any cline-no">&nbsp;</span>
1618
+ <span class="cline-any cline-yes">4x</span>
1619
+ <span class="cline-any cline-yes">4x</span>
1620
+ <span class="cline-any cline-yes">4x</span>
1621
+ <span class="cline-any cline-yes">4x</span>
1622
+ <span class="cline-any cline-yes">4x</span>
1623
+ <span class="cline-any cline-yes">4x</span>
1624
+ <span class="cline-any cline-yes">4x</span>
1625
+ <span class="cline-any cline-yes">4x</span>
1626
+ <span class="cline-any cline-no">&nbsp;</span>
1627
+ <span class="cline-any cline-no">&nbsp;</span>
1628
+ <span class="cline-any cline-no">&nbsp;</span>
1629
+ <span class="cline-any cline-no">&nbsp;</span>
1630
+ <span class="cline-any cline-yes">4x</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-no">&nbsp;</span>
1633
+ <span class="cline-any cline-no">&nbsp;</span>
1634
+ <span class="cline-any cline-no">&nbsp;</span>
1635
+ <span class="cline-any cline-no">&nbsp;</span>
1636
+ <span class="cline-any cline-no">&nbsp;</span>
1637
+ <span class="cline-any cline-no">&nbsp;</span>
1638
+ <span class="cline-any cline-no">&nbsp;</span>
1639
+ <span class="cline-any cline-no">&nbsp;</span>
1640
+ <span class="cline-any cline-no">&nbsp;</span>
1641
+ <span class="cline-any cline-no">&nbsp;</span>
1642
+ <span class="cline-any cline-no">&nbsp;</span>
1643
+ <span class="cline-any cline-no">&nbsp;</span>
1644
+ <span class="cline-any cline-no">&nbsp;</span>
1645
+ <span class="cline-any cline-no">&nbsp;</span>
1646
+ <span class="cline-any cline-yes">4x</span>
1647
+ <span class="cline-any cline-yes">1x</span>
1648
+ <span class="cline-any cline-yes">1x</span>
1649
+ <span class="cline-any cline-no">&nbsp;</span>
1650
+ <span class="cline-any cline-no">&nbsp;</span>
1651
+ <span class="cline-any cline-no">&nbsp;</span>
1652
+ <span class="cline-any cline-no">&nbsp;</span>
1653
+ <span class="cline-any cline-no">&nbsp;</span>
1654
+ <span class="cline-any cline-no">&nbsp;</span>
1655
+ <span class="cline-any cline-no">&nbsp;</span>
1656
+ <span class="cline-any cline-no">&nbsp;</span>
1657
+ <span class="cline-any cline-no">&nbsp;</span>
1658
+ <span class="cline-any cline-no">&nbsp;</span>
1659
+ <span class="cline-any cline-no">&nbsp;</span>
1660
+ <span class="cline-any cline-no">&nbsp;</span>
1661
+ <span class="cline-any cline-no">&nbsp;</span>
1662
+ <span class="cline-any cline-no">&nbsp;</span>
1663
+ <span class="cline-any cline-no">&nbsp;</span>
1664
+ <span class="cline-any cline-no">&nbsp;</span>
1665
+ <span class="cline-any cline-no">&nbsp;</span>
1666
+ <span class="cline-any cline-no">&nbsp;</span>
1667
+ <span class="cline-any cline-no">&nbsp;</span>
1668
+ <span class="cline-any cline-no">&nbsp;</span>
1669
+ <span class="cline-any cline-no">&nbsp;</span>
1670
+ <span class="cline-any cline-no">&nbsp;</span>
1671
+ <span class="cline-any cline-no">&nbsp;</span>
1672
+ <span class="cline-any cline-no">&nbsp;</span>
1673
+ <span class="cline-any cline-no">&nbsp;</span>
1674
+ <span class="cline-any cline-no">&nbsp;</span>
1675
+ <span class="cline-any cline-no">&nbsp;</span>
1676
+ <span class="cline-any cline-no">&nbsp;</span>
1677
+ <span class="cline-any cline-no">&nbsp;</span>
1678
+ <span class="cline-any cline-no">&nbsp;</span>
1679
+ <span class="cline-any cline-no">&nbsp;</span>
1680
+ <span class="cline-any cline-yes">1x</span>
1681
+ <span class="cline-any cline-yes">1x</span>
1682
+ <span class="cline-any cline-no">&nbsp;</span>
1683
+ <span class="cline-any cline-no">&nbsp;</span>
1684
+ <span class="cline-any cline-no">&nbsp;</span>
1685
+ <span class="cline-any cline-no">&nbsp;</span>
1686
+ <span class="cline-any cline-no">&nbsp;</span>
1687
+ <span class="cline-any cline-no">&nbsp;</span>
1688
+ <span class="cline-any cline-no">&nbsp;</span>
1689
+ <span class="cline-any cline-no">&nbsp;</span>
1690
+ <span class="cline-any cline-no">&nbsp;</span>
1691
+ <span class="cline-any cline-no">&nbsp;</span>
1692
+ <span class="cline-any cline-no">&nbsp;</span>
1693
+ <span class="cline-any cline-no">&nbsp;</span>
1694
+ <span class="cline-any cline-no">&nbsp;</span>
1695
+ <span class="cline-any cline-no">&nbsp;</span>
1696
+ <span class="cline-any cline-no">&nbsp;</span>
1697
+ <span class="cline-any cline-no">&nbsp;</span>
1698
+ <span class="cline-any cline-no">&nbsp;</span>
1699
+ <span class="cline-any cline-no">&nbsp;</span>
1700
+ <span class="cline-any cline-no">&nbsp;</span>
1701
+ <span class="cline-any cline-no">&nbsp;</span>
1702
+ <span class="cline-any cline-no">&nbsp;</span>
1703
+ <span class="cline-any cline-no">&nbsp;</span>
1704
+ <span class="cline-any cline-no">&nbsp;</span>
1705
+ <span class="cline-any cline-no">&nbsp;</span>
1706
+ <span class="cline-any cline-no">&nbsp;</span>
1707
+ <span class="cline-any cline-no">&nbsp;</span>
1708
+ <span class="cline-any cline-no">&nbsp;</span>
1709
+ <span class="cline-any cline-no">&nbsp;</span>
1710
+ <span class="cline-any cline-no">&nbsp;</span>
1711
+ <span class="cline-any cline-no">&nbsp;</span>
1712
+ <span class="cline-any cline-no">&nbsp;</span>
1713
+ <span class="cline-any cline-no">&nbsp;</span>
1714
+ <span class="cline-any cline-no">&nbsp;</span>
1715
+ <span class="cline-any cline-no">&nbsp;</span>
1716
+ <span class="cline-any cline-no">&nbsp;</span>
1717
+ <span class="cline-any cline-yes">1x</span>
1718
+ <span class="cline-any cline-yes">1x</span>
1719
+ <span class="cline-any cline-no">&nbsp;</span>
1720
+ <span class="cline-any cline-no">&nbsp;</span>
1721
+ <span class="cline-any cline-no">&nbsp;</span>
1722
+ <span class="cline-any cline-no">&nbsp;</span>
1723
+ <span class="cline-any cline-no">&nbsp;</span>
1724
+ <span class="cline-any cline-no">&nbsp;</span>
1725
+ <span class="cline-any cline-no">&nbsp;</span>
1726
+ <span class="cline-any cline-no">&nbsp;</span>
1727
+ <span class="cline-any cline-no">&nbsp;</span>
1728
+ <span class="cline-any cline-no">&nbsp;</span>
1729
+ <span class="cline-any cline-no">&nbsp;</span>
1730
+ <span class="cline-any cline-no">&nbsp;</span>
1731
+ <span class="cline-any cline-no">&nbsp;</span>
1732
+ <span class="cline-any cline-no">&nbsp;</span>
1733
+ <span class="cline-any cline-no">&nbsp;</span>
1734
+ <span class="cline-any cline-no">&nbsp;</span>
1735
+ <span class="cline-any cline-no">&nbsp;</span>
1736
+ <span class="cline-any cline-no">&nbsp;</span>
1737
+ <span class="cline-any cline-no">&nbsp;</span>
1738
+ <span class="cline-any cline-no">&nbsp;</span>
1739
+ <span class="cline-any cline-no">&nbsp;</span>
1740
+ <span class="cline-any cline-no">&nbsp;</span>
1741
+ <span class="cline-any cline-no">&nbsp;</span>
1742
+ <span class="cline-any cline-no">&nbsp;</span>
1743
+ <span class="cline-any cline-no">&nbsp;</span>
1744
+ <span class="cline-any cline-no">&nbsp;</span>
1745
+ <span class="cline-any cline-no">&nbsp;</span>
1746
+ <span class="cline-any cline-yes">1x</span>
1747
+ <span class="cline-any cline-yes">1x</span>
1748
+ <span class="cline-any cline-no">&nbsp;</span>
1749
+ <span class="cline-any cline-no">&nbsp;</span>
1750
+ <span class="cline-any cline-no">&nbsp;</span>
1751
+ <span class="cline-any cline-no">&nbsp;</span>
1752
+ <span class="cline-any cline-no">&nbsp;</span>
1753
+ <span class="cline-any cline-no">&nbsp;</span>
1754
+ <span class="cline-any cline-no">&nbsp;</span>
1755
+ <span class="cline-any cline-no">&nbsp;</span>
1756
+ <span class="cline-any cline-no">&nbsp;</span>
1757
+ <span class="cline-any cline-no">&nbsp;</span>
1758
+ <span class="cline-any cline-no">&nbsp;</span>
1759
+ <span class="cline-any cline-no">&nbsp;</span>
1760
+ <span class="cline-any cline-no">&nbsp;</span>
1761
+ <span class="cline-any cline-no">&nbsp;</span>
1762
+ <span class="cline-any cline-no">&nbsp;</span>
1763
+ <span class="cline-any cline-no">&nbsp;</span>
1764
+ <span class="cline-any cline-no">&nbsp;</span>
1765
+ <span class="cline-any cline-no">&nbsp;</span>
1766
+ <span class="cline-any cline-no">&nbsp;</span>
1767
+ <span class="cline-any cline-no">&nbsp;</span>
1768
+ <span class="cline-any cline-no">&nbsp;</span>
1769
+ <span class="cline-any cline-no">&nbsp;</span>
1770
+ <span class="cline-any cline-no">&nbsp;</span>
1771
+ <span class="cline-any cline-no">&nbsp;</span>
1772
+ <span class="cline-any cline-no">&nbsp;</span>
1773
+ <span class="cline-any cline-no">&nbsp;</span>
1774
+ <span class="cline-any cline-no">&nbsp;</span>
1775
+ <span class="cline-any cline-no">&nbsp;</span>
1776
+ <span class="cline-any cline-no">&nbsp;</span>
1777
+ <span class="cline-any cline-no">&nbsp;</span>
1778
+ <span class="cline-any cline-no">&nbsp;</span>
1779
+ <span class="cline-any cline-no">&nbsp;</span>
1780
+ <span class="cline-any cline-no">&nbsp;</span>
1781
+ <span class="cline-any cline-no">&nbsp;</span>
1782
+ <span class="cline-any cline-no">&nbsp;</span>
1783
+ <span class="cline-any cline-no">&nbsp;</span>
1784
+ <span class="cline-any cline-no">&nbsp;</span>
1785
+ <span class="cline-any cline-no">&nbsp;</span>
1786
+ <span class="cline-any cline-yes">1x</span>
1787
+ <span class="cline-any cline-yes">1x</span>
1788
+ <span class="cline-any cline-no">&nbsp;</span>
1789
+ <span class="cline-any cline-no">&nbsp;</span>
1790
+ <span class="cline-any cline-no">&nbsp;</span>
1791
+ <span class="cline-any cline-no">&nbsp;</span>
1792
+ <span class="cline-any cline-no">&nbsp;</span>
1793
+ <span class="cline-any cline-no">&nbsp;</span>
1794
+ <span class="cline-any cline-no">&nbsp;</span>
1795
+ <span class="cline-any cline-no">&nbsp;</span>
1796
+ <span class="cline-any cline-no">&nbsp;</span>
1797
+ <span class="cline-any cline-no">&nbsp;</span>
1798
+ <span class="cline-any cline-no">&nbsp;</span>
1799
+ <span class="cline-any cline-no">&nbsp;</span>
1800
+ <span class="cline-any cline-no">&nbsp;</span>
1801
+ <span class="cline-any cline-no">&nbsp;</span>
1802
+ <span class="cline-any cline-no">&nbsp;</span>
1803
+ <span class="cline-any cline-no">&nbsp;</span>
1804
+ <span class="cline-any cline-no">&nbsp;</span>
1805
+ <span class="cline-any cline-no">&nbsp;</span>
1806
+ <span class="cline-any cline-no">&nbsp;</span>
1807
+ <span class="cline-any cline-no">&nbsp;</span>
1808
+ <span class="cline-any cline-no">&nbsp;</span>
1809
+ <span class="cline-any cline-no">&nbsp;</span>
1810
+ <span class="cline-any cline-no">&nbsp;</span>
1811
+ <span class="cline-any cline-no">&nbsp;</span>
1812
+ <span class="cline-any cline-no">&nbsp;</span>
1813
+ <span class="cline-any cline-no">&nbsp;</span>
1814
+ <span class="cline-any cline-no">&nbsp;</span>
1815
+ <span class="cline-any cline-no">&nbsp;</span>
1816
+ <span class="cline-any cline-no">&nbsp;</span>
1817
+ <span class="cline-any cline-no">&nbsp;</span>
1818
+ <span class="cline-any cline-no">&nbsp;</span>
1819
+ <span class="cline-any cline-no">&nbsp;</span>
1820
+ <span class="cline-any cline-no">&nbsp;</span>
1821
+ <span class="cline-any cline-no">&nbsp;</span>
1822
+ <span class="cline-any cline-no">&nbsp;</span>
1823
+ <span class="cline-any cline-no">&nbsp;</span>
1824
+ <span class="cline-any cline-no">&nbsp;</span>
1825
+ <span class="cline-any cline-no">&nbsp;</span>
1826
+ <span class="cline-any cline-no">&nbsp;</span>
1827
+ <span class="cline-any cline-no">&nbsp;</span>
1828
+ <span class="cline-any cline-no">&nbsp;</span>
1829
+ <span class="cline-any cline-no">&nbsp;</span>
1830
+ <span class="cline-any cline-no">&nbsp;</span>
1831
+ <span class="cline-any cline-no">&nbsp;</span>
1832
+ <span class="cline-any cline-no">&nbsp;</span>
1833
+ <span class="cline-any cline-no">&nbsp;</span>
1834
+ <span class="cline-any cline-no">&nbsp;</span>
1835
+ <span class="cline-any cline-no">&nbsp;</span>
1836
+ <span class="cline-any cline-no">&nbsp;</span>
1837
+ <span class="cline-any cline-no">&nbsp;</span>
1838
+ <span class="cline-any cline-no">&nbsp;</span>
1839
+ <span class="cline-any cline-no">&nbsp;</span>
1840
+ <span class="cline-any cline-no">&nbsp;</span>
1841
+ <span class="cline-any cline-no">&nbsp;</span>
1842
+ <span class="cline-any cline-no">&nbsp;</span>
1843
+ <span class="cline-any cline-no">&nbsp;</span>
1844
+ <span class="cline-any cline-no">&nbsp;</span>
1845
+ <span class="cline-any cline-no">&nbsp;</span>
1846
+ <span class="cline-any cline-no">&nbsp;</span>
1847
+ <span class="cline-any cline-no">&nbsp;</span>
1848
+ <span class="cline-any cline-no">&nbsp;</span>
1849
+ <span class="cline-any cline-no">&nbsp;</span>
1850
+ <span class="cline-any cline-no">&nbsp;</span>
1851
+ <span class="cline-any cline-no">&nbsp;</span>
1852
+ <span class="cline-any cline-no">&nbsp;</span>
1853
+ <span class="cline-any cline-no">&nbsp;</span>
1854
+ <span class="cline-any cline-no">&nbsp;</span>
1855
+ <span class="cline-any cline-no">&nbsp;</span>
1856
+ <span class="cline-any cline-no">&nbsp;</span>
1857
+ <span class="cline-any cline-no">&nbsp;</span>
1858
+ <span class="cline-any cline-no">&nbsp;</span>
1859
+ <span class="cline-any cline-no">&nbsp;</span>
1860
+ <span class="cline-any cline-no">&nbsp;</span>
1861
+ <span class="cline-any cline-no">&nbsp;</span>
1862
+ <span class="cline-any cline-no">&nbsp;</span>
1863
+ <span class="cline-any cline-no">&nbsp;</span>
1864
+ <span class="cline-any cline-no">&nbsp;</span>
1865
+ <span class="cline-any cline-no">&nbsp;</span>
1866
+ <span class="cline-any cline-no">&nbsp;</span>
1867
+ <span class="cline-any cline-no">&nbsp;</span>
1868
+ <span class="cline-any cline-no">&nbsp;</span>
1869
+ <span class="cline-any cline-no">&nbsp;</span>
1870
+ <span class="cline-any cline-no">&nbsp;</span>
1871
+ <span class="cline-any cline-no">&nbsp;</span>
1872
+ <span class="cline-any cline-no">&nbsp;</span>
1873
+ <span class="cline-any cline-no">&nbsp;</span>
1874
+ <span class="cline-any cline-no">&nbsp;</span>
1875
+ <span class="cline-any cline-no">&nbsp;</span>
1876
+ <span class="cline-any cline-no">&nbsp;</span>
1877
+ <span class="cline-any cline-no">&nbsp;</span>
1878
+ <span class="cline-any cline-no">&nbsp;</span>
1879
+ <span class="cline-any cline-no">&nbsp;</span>
1880
+ <span class="cline-any cline-no">&nbsp;</span>
1881
+ <span class="cline-any cline-no">&nbsp;</span>
1882
+ <span class="cline-any cline-no">&nbsp;</span>
1883
+ <span class="cline-any cline-no">&nbsp;</span>
1884
+ <span class="cline-any cline-no">&nbsp;</span>
1885
+ <span class="cline-any cline-no">&nbsp;</span>
1886
+ <span class="cline-any cline-no">&nbsp;</span>
1887
+ <span class="cline-any cline-no">&nbsp;</span>
1888
+ <span class="cline-any cline-no">&nbsp;</span>
1889
+ <span class="cline-any cline-no">&nbsp;</span>
1890
+ <span class="cline-any cline-no">&nbsp;</span>
1891
+ <span class="cline-any cline-no">&nbsp;</span>
1892
+ <span class="cline-any cline-no">&nbsp;</span>
1893
+ <span class="cline-any cline-yes">1x</span>
1894
+ <span class="cline-any cline-yes">1x</span>
1895
+ <span class="cline-any cline-yes">1x</span>
1896
+ <span class="cline-any cline-yes">1x</span>
1897
+ <span class="cline-any cline-yes">1x</span>
1898
+ <span class="cline-any cline-yes">1x</span>
1899
+ <span class="cline-any cline-yes">1x</span>
1900
+ <span class="cline-any cline-yes">1x</span>
1901
+ <span class="cline-any cline-yes">1x</span>
1902
+ <span class="cline-any cline-yes">1x</span>
1903
+ <span class="cline-any cline-yes">1x</span>
1904
+ <span class="cline-any cline-yes">1x</span>
1905
+ <span class="cline-any cline-yes">1x</span>
1906
+ <span class="cline-any cline-yes">1x</span>
1907
+ <span class="cline-any cline-yes">1x</span>
1908
+ <span class="cline-any cline-yes">1x</span>
1909
+ <span class="cline-any cline-yes">1x</span>
1910
+ <span class="cline-any cline-yes">1x</span>
1911
+ <span class="cline-any cline-yes">1x</span>
1912
+ <span class="cline-any cline-yes">1x</span>
1913
+ <span class="cline-any cline-yes">1x</span>
1914
+ <span class="cline-any cline-yes">1x</span>
1915
+ <span class="cline-any cline-no">&nbsp;</span>
1916
+ <span class="cline-any cline-no">&nbsp;</span>
1917
+ <span class="cline-any cline-no">&nbsp;</span>
1918
+ <span class="cline-any cline-no">&nbsp;</span>
1919
+ <span class="cline-any cline-no">&nbsp;</span>
1920
+ <span class="cline-any cline-no">&nbsp;</span>
1921
+ <span class="cline-any cline-no">&nbsp;</span>
1922
+ <span class="cline-any cline-no">&nbsp;</span>
1923
+ <span class="cline-any cline-no">&nbsp;</span>
1924
+ <span class="cline-any cline-no">&nbsp;</span>
1925
+ <span class="cline-any cline-no">&nbsp;</span>
1926
+ <span class="cline-any cline-no">&nbsp;</span>
1927
+ <span class="cline-any cline-no">&nbsp;</span>
1928
+ <span class="cline-any cline-no">&nbsp;</span>
1929
+ <span class="cline-any cline-no">&nbsp;</span>
1930
+ <span class="cline-any cline-no">&nbsp;</span>
1931
+ <span class="cline-any cline-yes">1x</span>
1932
+ <span class="cline-any cline-yes">1x</span>
1933
+ <span class="cline-any cline-no">&nbsp;</span>
1934
+ <span class="cline-any cline-no">&nbsp;</span>
1935
+ <span class="cline-any cline-no">&nbsp;</span>
1936
+ <span class="cline-any cline-no">&nbsp;</span>
1937
+ <span class="cline-any cline-no">&nbsp;</span>
1938
+ <span class="cline-any cline-no">&nbsp;</span>
1939
+ <span class="cline-any cline-no">&nbsp;</span>
1940
+ <span class="cline-any cline-no">&nbsp;</span>
1941
+ <span class="cline-any cline-no">&nbsp;</span>
1942
+ <span class="cline-any cline-no">&nbsp;</span>
1943
+ <span class="cline-any cline-no">&nbsp;</span>
1944
+ <span class="cline-any cline-no">&nbsp;</span>
1945
+ <span class="cline-any cline-no">&nbsp;</span>
1946
+ <span class="cline-any cline-no">&nbsp;</span>
1947
+ <span class="cline-any cline-yes">1x</span>
1948
+ <span class="cline-any cline-yes">1x</span>
1949
+ <span class="cline-any cline-no">&nbsp;</span>
1950
+ <span class="cline-any cline-no">&nbsp;</span>
1951
+ <span class="cline-any cline-no">&nbsp;</span>
1952
+ <span class="cline-any cline-no">&nbsp;</span>
1953
+ <span class="cline-any cline-no">&nbsp;</span>
1954
+ <span class="cline-any cline-no">&nbsp;</span>
1955
+ <span class="cline-any cline-no">&nbsp;</span>
1956
+ <span class="cline-any cline-no">&nbsp;</span>
1957
+ <span class="cline-any cline-no">&nbsp;</span>
1958
+ <span class="cline-any cline-no">&nbsp;</span>
1959
+ <span class="cline-any cline-no">&nbsp;</span>
1960
+ <span class="cline-any cline-no">&nbsp;</span>
1961
+ <span class="cline-any cline-no">&nbsp;</span>
1962
+ <span class="cline-any cline-no">&nbsp;</span>
1963
+ <span class="cline-any cline-no">&nbsp;</span>
1964
+ <span class="cline-any cline-no">&nbsp;</span>
1965
+ <span class="cline-any cline-no">&nbsp;</span>
1966
+ <span class="cline-any cline-no">&nbsp;</span>
1967
+ <span class="cline-any cline-no">&nbsp;</span>
1968
+ <span class="cline-any cline-no">&nbsp;</span>
1969
+ <span class="cline-any cline-no">&nbsp;</span>
1970
+ <span class="cline-any cline-no">&nbsp;</span>
1971
+ <span class="cline-any cline-no">&nbsp;</span>
1972
+ <span class="cline-any cline-no">&nbsp;</span>
1973
+ <span class="cline-any cline-no">&nbsp;</span>
1974
+ <span class="cline-any cline-no">&nbsp;</span>
1975
+ <span class="cline-any cline-no">&nbsp;</span>
1976
+ <span class="cline-any cline-no">&nbsp;</span>
1977
+ <span class="cline-any cline-no">&nbsp;</span>
1978
+ <span class="cline-any cline-no">&nbsp;</span>
1979
+ <span class="cline-any cline-no">&nbsp;</span>
1980
+ <span class="cline-any cline-no">&nbsp;</span>
1981
+ <span class="cline-any cline-no">&nbsp;</span>
1982
+ <span class="cline-any cline-no">&nbsp;</span>
1983
+ <span class="cline-any cline-no">&nbsp;</span>
1984
+ <span class="cline-any cline-no">&nbsp;</span>
1985
+ <span class="cline-any cline-no">&nbsp;</span>
1986
+ <span class="cline-any cline-no">&nbsp;</span>
1987
+ <span class="cline-any cline-no">&nbsp;</span>
1988
+ <span class="cline-any cline-no">&nbsp;</span>
1989
+ <span class="cline-any cline-no">&nbsp;</span>
1990
+ <span class="cline-any cline-no">&nbsp;</span>
1991
+ <span class="cline-any cline-no">&nbsp;</span>
1992
+ <span class="cline-any cline-no">&nbsp;</span>
1993
+ <span class="cline-any cline-no">&nbsp;</span>
1994
+ <span class="cline-any cline-no">&nbsp;</span>
1995
+ <span class="cline-any cline-no">&nbsp;</span>
1996
+ <span class="cline-any cline-no">&nbsp;</span>
1997
+ <span class="cline-any cline-no">&nbsp;</span>
1998
+ <span class="cline-any cline-no">&nbsp;</span>
1999
+ <span class="cline-any cline-no">&nbsp;</span>
2000
+ <span class="cline-any cline-no">&nbsp;</span>
2001
+ <span class="cline-any cline-no">&nbsp;</span>
2002
+ <span class="cline-any cline-no">&nbsp;</span>
2003
+ <span class="cline-any cline-no">&nbsp;</span>
2004
+ <span class="cline-any cline-no">&nbsp;</span>
2005
+ <span class="cline-any cline-no">&nbsp;</span>
2006
+ <span class="cline-any cline-no">&nbsp;</span>
2007
+ <span class="cline-any cline-no">&nbsp;</span>
2008
+ <span class="cline-any cline-no">&nbsp;</span>
2009
+ <span class="cline-any cline-no">&nbsp;</span>
2010
+ <span class="cline-any cline-no">&nbsp;</span>
2011
+ <span class="cline-any cline-no">&nbsp;</span>
2012
+ <span class="cline-any cline-no">&nbsp;</span>
2013
+ <span class="cline-any cline-no">&nbsp;</span>
2014
+ <span class="cline-any cline-no">&nbsp;</span>
2015
+ <span class="cline-any cline-no">&nbsp;</span>
2016
+ <span class="cline-any cline-no">&nbsp;</span>
2017
+ <span class="cline-any cline-no">&nbsp;</span>
2018
+ <span class="cline-any cline-no">&nbsp;</span>
2019
+ <span class="cline-any cline-no">&nbsp;</span>
2020
+ <span class="cline-any cline-no">&nbsp;</span>
2021
+ <span class="cline-any cline-no">&nbsp;</span>
2022
+ <span class="cline-any cline-no">&nbsp;</span>
2023
+ <span class="cline-any cline-no">&nbsp;</span>
2024
+ <span class="cline-any cline-no">&nbsp;</span>
2025
+ <span class="cline-any cline-no">&nbsp;</span>
2026
+ <span class="cline-any cline-no">&nbsp;</span>
2027
+ <span class="cline-any cline-no">&nbsp;</span>
2028
+ <span class="cline-any cline-no">&nbsp;</span>
2029
+ <span class="cline-any cline-no">&nbsp;</span>
2030
+ <span class="cline-any cline-no">&nbsp;</span>
2031
+ <span class="cline-any cline-no">&nbsp;</span>
2032
+ <span class="cline-any cline-no">&nbsp;</span>
2033
+ <span class="cline-any cline-no">&nbsp;</span>
2034
+ <span class="cline-any cline-no">&nbsp;</span>
2035
+ <span class="cline-any cline-no">&nbsp;</span>
2036
+ <span class="cline-any cline-no">&nbsp;</span>
2037
+ <span class="cline-any cline-no">&nbsp;</span>
2038
+ <span class="cline-any cline-no">&nbsp;</span>
2039
+ <span class="cline-any cline-no">&nbsp;</span>
2040
+ <span class="cline-any cline-no">&nbsp;</span>
2041
+ <span class="cline-any cline-no">&nbsp;</span>
2042
+ <span class="cline-any cline-yes">1x</span>
2043
+ <span class="cline-any cline-yes">1x</span>
2044
+ <span class="cline-any cline-no">&nbsp;</span>
2045
+ <span class="cline-any cline-no">&nbsp;</span>
2046
+ <span class="cline-any cline-no">&nbsp;</span>
2047
+ <span class="cline-any cline-no">&nbsp;</span>
2048
+ <span class="cline-any cline-no">&nbsp;</span>
2049
+ <span class="cline-any cline-no">&nbsp;</span>
2050
+ <span class="cline-any cline-no">&nbsp;</span>
2051
+ <span class="cline-any cline-no">&nbsp;</span>
2052
+ <span class="cline-any cline-no">&nbsp;</span>
2053
+ <span class="cline-any cline-no">&nbsp;</span>
2054
+ <span class="cline-any cline-no">&nbsp;</span>
2055
+ <span class="cline-any cline-no">&nbsp;</span>
2056
+ <span class="cline-any cline-no">&nbsp;</span>
2057
+ <span class="cline-any cline-no">&nbsp;</span>
2058
+ <span class="cline-any cline-no">&nbsp;</span>
2059
+ <span class="cline-any cline-no">&nbsp;</span>
2060
+ <span class="cline-any cline-no">&nbsp;</span>
2061
+ <span class="cline-any cline-no">&nbsp;</span>
2062
+ <span class="cline-any cline-no">&nbsp;</span>
2063
+ <span class="cline-any cline-no">&nbsp;</span>
2064
+ <span class="cline-any cline-no">&nbsp;</span>
2065
+ <span class="cline-any cline-no">&nbsp;</span>
2066
+ <span class="cline-any cline-no">&nbsp;</span>
2067
+ <span class="cline-any cline-yes">1x</span>
2068
+ <span class="cline-any cline-yes">1x</span>
2069
+ <span class="cline-any cline-no">&nbsp;</span>
2070
+ <span class="cline-any cline-no">&nbsp;</span>
2071
+ <span class="cline-any cline-no">&nbsp;</span>
2072
+ <span class="cline-any cline-no">&nbsp;</span>
2073
+ <span class="cline-any cline-no">&nbsp;</span>
2074
+ <span class="cline-any cline-no">&nbsp;</span>
2075
+ <span class="cline-any cline-no">&nbsp;</span>
2076
+ <span class="cline-any cline-no">&nbsp;</span>
2077
+ <span class="cline-any cline-no">&nbsp;</span>
2078
+ <span class="cline-any cline-no">&nbsp;</span>
2079
+ <span class="cline-any cline-yes">1x</span>
2080
+ <span class="cline-any cline-yes">1x</span>
2081
+ <span class="cline-any cline-no">&nbsp;</span>
2082
+ <span class="cline-any cline-no">&nbsp;</span>
2083
+ <span class="cline-any cline-no">&nbsp;</span>
2084
+ <span class="cline-any cline-no">&nbsp;</span>
2085
+ <span class="cline-any cline-no">&nbsp;</span>
2086
+ <span class="cline-any cline-no">&nbsp;</span>
2087
+ <span class="cline-any cline-no">&nbsp;</span>
2088
+ <span class="cline-any cline-no">&nbsp;</span>
2089
+ <span class="cline-any cline-no">&nbsp;</span>
2090
+ <span class="cline-any cline-no">&nbsp;</span>
2091
+ <span class="cline-any cline-no">&nbsp;</span>
2092
+ <span class="cline-any cline-no">&nbsp;</span>
2093
+ <span class="cline-any cline-no">&nbsp;</span>
2094
+ <span class="cline-any cline-no">&nbsp;</span>
2095
+ <span class="cline-any cline-no">&nbsp;</span>
2096
+ <span class="cline-any cline-no">&nbsp;</span>
2097
+ <span class="cline-any cline-yes">1x</span>
2098
+ <span class="cline-any cline-yes">1x</span>
2099
+ <span class="cline-any cline-yes">1x</span>
2100
+ <span class="cline-any cline-yes">1x</span>
2101
+ <span class="cline-any cline-yes">1x</span>
2102
+ <span class="cline-any cline-yes">1x</span>
2103
+ <span class="cline-any cline-yes">1x</span>
2104
+ <span class="cline-any cline-yes">1x</span>
2105
+ <span class="cline-any cline-yes">1x</span>
2106
+ <span class="cline-any cline-yes">1x</span>
2107
+ <span class="cline-any cline-yes">1x</span>
2108
+ <span class="cline-any cline-yes">1x</span>
2109
+ <span class="cline-any cline-yes">1x</span>
2110
+ <span class="cline-any cline-yes">1x</span>
2111
+ <span class="cline-any cline-yes">1x</span>
2112
+ <span class="cline-any cline-yes">1x</span>
2113
+ <span class="cline-any cline-yes">1x</span>
2114
+ <span class="cline-any cline-yes">1x</span>
2115
+ <span class="cline-any cline-yes">1x</span>
2116
+ <span class="cline-any cline-yes">1x</span>
2117
+ <span class="cline-any cline-yes">1x</span>
2118
+ <span class="cline-any cline-yes">1x</span>
2119
+ <span class="cline-any cline-yes">1x</span>
2120
+ <span class="cline-any cline-yes">1x</span>
2121
+ <span class="cline-any cline-yes">1x</span>
2122
+ <span class="cline-any cline-yes">1x</span>
2123
+ <span class="cline-any cline-yes">1x</span>
2124
+ <span class="cline-any cline-yes">1x</span>
2125
+ <span class="cline-any cline-yes">1x</span>
2126
+ <span class="cline-any cline-yes">1x</span>
2127
+ <span class="cline-any cline-yes">1x</span>
2128
+ <span class="cline-any cline-yes">1x</span>
2129
+ <span class="cline-any cline-yes">1x</span>
2130
+ <span class="cline-any cline-yes">1x</span>
2131
+ <span class="cline-any cline-yes">1x</span>
2132
+ <span class="cline-any cline-yes">1x</span>
2133
+ <span class="cline-any cline-yes">1x</span>
2134
+ <span class="cline-any cline-yes">1x</span>
2135
+ <span class="cline-any cline-yes">1x</span>
2136
+ <span class="cline-any cline-yes">1x</span>
2137
+ <span class="cline-any cline-yes">1x</span>
2138
+ <span class="cline-any cline-yes">1x</span>
2139
+ <span class="cline-any cline-yes">1x</span>
2140
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&nbsp;
2141
+ import * as SocketIO from 'socket.io';
2142
+ &nbsp;
2143
+ import {
2144
+ DyFM_AnyError, DyFM_Array, DyFM_Error, DyFM_Error_Settings, DyFM_errorFlag, DyFM_Log
2145
+ } from '@futdevpro/fsm-dynamo';
2146
+ &nbsp;
2147
+ &nbsp;
2148
+ import {
2149
+ DyFM_SocketEvent,
2150
+ DyFM_SocketEvent_Key, DyFM_SocketEventPreprocessTask, DyFM_SocketEventTask
2151
+ } from '@futdevpro/fsm-dynamo/socket';
2152
+ &nbsp;
2153
+ import { DyNTS_global_settings } from '../../../_collections/global-settings.const';
2154
+ import { DyNTS_SingletonService } from '../../../_services/base/singleton.service';
2155
+ import { DyNTS_SocketSecurity } from '../_enums/socket-security.enum';
2156
+ import {
2157
+ DyNTS_SocketPresence
2158
+ } from '../_models/socket-presence.control-model';
2159
+ import {
2160
+ DyNTS_SocketServerService_Params
2161
+ } from '../_models/socket-server-service-params.control-model';
2162
+ &nbsp;
2163
+ /**
2164
+ * You need to define the following functions:
2165
+ * ```ts
2166
+ * getServiceParams(): DyNTS_SocketServerServiceParams;
2167
+ *
2168
+ * getIncomingEvents(): DyFM_SocketEvent&lt;any&gt;[];
2169
+ *
2170
+ * getPresenceFromSubscriptionEventContent(
2171
+ * socketSubscription: T_SubscriptionContent,
2172
+ * socket: SocketIO.Socket
2173
+ * ): Promise&lt;T_Presence&gt;;
2174
+ * ```
2175
+ */
2176
+ export abstract class DyNTS_SocketServerService&lt;
2177
+ T_Presence extends DyNTS_SocketPresence = DyNTS_SocketPresence,
2178
+ T_SubscriptionContent = any,
2179
+ T_ErrorContent = any
2180
+ &gt; extends DyNTS_SingletonService {
2181
+ &nbsp;
2182
+ protected params: DyNTS_SocketServerService_Params;
2183
+ <span class="fstat-no" title="function not covered" > get name(): string { return this.params.name; }</span>
2184
+ get port(): number { return this.params.port; }
2185
+ get security(): DyNTS_SocketSecurity { return this.params.security; }
2186
+ <span class="fstat-no" title="function not covered" > get activeSubscriptionsCount(): number { return this.presences.length; }</span>
2187
+ &nbsp;
2188
+ protected openSocketServer: SocketIO.Server;
2189
+ protected secureSocketServer: SocketIO.Server;
2190
+ &nbsp;
2191
+ /* private connectEvent: DyFM_SocketEvent&lt;SocketIO.Socket&gt;; */
2192
+ protected incomingEvents: DyFM_SocketEvent&lt;any&gt;[];
2193
+ &nbsp;
2194
+ /* private subscriptionEvent: DyFM_SocketEvent&lt;any&gt;; */
2195
+ /* private unsubscribeEvent: DyFM_SocketEvent&lt;any&gt;; */
2196
+
2197
+ protected presences: T_Presence[] = [];
2198
+ &nbsp;
2199
+ get logSetup(): boolean { return DyNTS_global_settings.log_settings.setup; }
2200
+ get highDetailedLogs(): boolean { return DyNTS_global_settings.log_settings.highDetailedLogs; }
2201
+ &nbsp;
2202
+ override readonly defaultErrorUserMsg =
2203
+ `We encountered an unhandled Socket Server Error, ` +
2204
+ `\nplease contact the responsible development team.`;
2205
+ &nbsp;
2206
+ /* readonly thisLocationStack: string; */
2207
+ &nbsp;
2208
+ protected constructor(){
2209
+ super();
2210
+ &nbsp;
2211
+ /* this.thisLocationStack = DyNTS_getStackLocation(); */
2212
+ &nbsp;
2213
+ this.asyncConstructor().catch((error: any) =&gt; {
2214
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2215
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service setup failed: "${this.params?.name}" (${this.params?.port})`, </span>
2216
+ <span class="cstat-no" title="statement not covered" > error</span>
2217
+ <span class="cstat-no" title="statement not covered" > );</span>
2218
+ });
2219
+ }
2220
+ &nbsp;
2221
+ /**
2222
+ * You need to setup a function that converts subscription event content to presence.
2223
+ * You should do authentication and authorization here.
2224
+ */
2225
+ protected abstract getPresenceFromSubscriptionEventContent(
2226
+ socketSubscription: T_SubscriptionContent,
2227
+ socket: SocketIO.Socket
2228
+ ): Promise&lt;T_Presence&gt;;
2229
+ &nbsp;
2230
+ private async asyncConstructor(): Promise&lt;void&gt; {
2231
+ try {
2232
+ this.params = this.getServiceParams();
2233
+ this.incomingEvents = this.getIncomingEvents()<span class="branch-0 cbranch-no" title="branch not covered" > ?? [];</span>
2234
+ &nbsp;
2235
+ await this.prepareEvents();
2236
+ &nbsp;
2237
+ if (this.logSetup) <span class="branch-0 cbranch-no" title="branch not covered" >console.log(</span>
2238
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service setup done: "${this.params.name}" (${this.params.port}) ` +</span>
2239
+ <span class="cstat-no" title="statement not covered" > `security: ${this.params.security}\n`</span>
2240
+ <span class="cstat-no" title="statement not covered" > );</span>
2241
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
2242
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2243
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service setup failed: "${this.params?.name}" (${this.params?.port})`, </span>
2244
+ <span class="cstat-no" title="statement not covered" > error</span>
2245
+ <span class="cstat-no" title="statement not covered" > );</span>
2246
+ <span class="cstat-no" title="statement not covered" ></span>
2247
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2248
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-GPFSRC0`,</span>
2249
+ <span class="cstat-no" title="statement not covered" > error: error, </span>
2250
+ <span class="cstat-no" title="statement not covered" > });</span>
2251
+ <span class="cstat-no" title="statement not covered" > }</span>
2252
+ }
2253
+ &nbsp;
2254
+ /**
2255
+ * You must setup events and required services for this function
2256
+ */
2257
+ private async prepareEvents(): Promise&lt;void&gt; {
2258
+ try {
2259
+ /** Setup connect event */
2260
+ /* const connectEventIndex = this.incomingEvents.findIndex(
2261
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt;
2262
+ event.eventKey === DyFM_SocketEvent_Key.connection
2263
+ );
2264
+ &nbsp;
2265
+ if (0 &lt;= connectEventIndex) {
2266
+ this.connectEvent = this.incomingEvents.splice(connectEventIndex)[0];
2267
+ } else {
2268
+ this.connectEvent = new DyFM_SocketEvent({
2269
+ eventKey: DyFM_SocketEvent_Key.connection,
2270
+ });
2271
+ }
2272
+ this.connectEvent.serviceName = this.params.name; */
2273
+ &nbsp;
2274
+ if (!this.getPresenceFromSubscriptionEventContent) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2275
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2276
+ <span class="cstat-no" title="statement not covered" > error: new Error('getPresenceFromSubscriptionEventContent must be set'),</span>
2277
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-PPE1`,</span>
2278
+ <span class="cstat-no" title="statement not covered" > });</span>
2279
+ <span class="cstat-no" title="statement not covered" > }</span>
2280
+ &nbsp;
2281
+ if (!this.getSubscriptionTasks) {
2282
+ DyFM_Log.warn(
2283
+ `You should not set the subscription event, ` +
2284
+ `in case you need additional steps for your subscriptions.`,
2285
+ `${this.params.name} (${this.params.port})`
2286
+ );
2287
+ }
2288
+ &nbsp;
2289
+ if (this.incomingEvents.find(
2290
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt;
2291
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.subscribe</span>
2292
+ )) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2293
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.warn(</span>
2294
+ <span class="cstat-no" title="statement not covered" > `You need to use getSubscriptionTasks() ` +</span>
2295
+ <span class="cstat-no" title="statement not covered" > `instead of setting the subscribe event in getIncomingEvents().`,</span>
2296
+ <span class="cstat-no" title="statement not covered" > `${this.params.name} (${this.params.port})`</span>
2297
+ <span class="cstat-no" title="statement not covered" > );</span>
2298
+ <span class="cstat-no" title="statement not covered" > }</span>
2299
+ &nbsp;
2300
+ if (!this.incomingEvents.find(
2301
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt;
2302
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.unsubscribe</span>
2303
+ )) {
2304
+ DyFM_Log.warn(
2305
+ `You should not set the unsubscribe event, ` +
2306
+ `in case you need additional steps for your unsubscribe.`,
2307
+ `${this.params.name} (${this.params.port})`
2308
+ );
2309
+ }
2310
+ &nbsp;
2311
+ if (this.incomingEvents.find(
2312
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt; !event.eventKey
2313
+ )) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2314
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2315
+ <span class="cstat-no" title="statement not covered" > error: new Error('eventKey must be set'),</span>
2316
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-PPE2`,</span>
2317
+ <span class="cstat-no" title="statement not covered" > });</span>
2318
+ <span class="cstat-no" title="statement not covered" > }</span>
2319
+ &nbsp;
2320
+ this.incomingEvents.push(
2321
+ new DyFM_SocketEvent({
2322
+ eventKey: DyFM_SocketEvent_Key.disconnect,
2323
+ tasks: [
2324
+ <span class="fstat-no" title="function not covered" > async (socket: SocketIO.Socket, issuer: string) =&gt; </span>
2325
+ this.disconnectBaseTask(socket, issuer),
2326
+ ],
2327
+ })
2328
+ );
2329
+
2330
+ if (this.errorHandling) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2331
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.push(new DyFM_SocketEvent&lt;T_ErrorContent&gt;({</span>
2332
+ <span class="cstat-no" title="statement not covered" > serviceName: this.params.name,</span>
2333
+ <span class="cstat-no" title="statement not covered" > eventKey: DyFM_SocketEvent_Key.error,</span>
2334
+ <span class="cstat-no" title="statement not covered" > tasks: [</span>
2335
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > async (content: any) =&gt; this.errorHandling(content),</span></span>
2336
+ <span class="cstat-no" title="statement not covered" > ],</span>
2337
+ <span class="cstat-no" title="statement not covered" > }));</span>
2338
+ } else {
2339
+ DyFM_Log.warn(
2340
+ `You should not set the error event, ` +
2341
+ `in case you need additional steps for your error.`,
2342
+ `${this.params.name} (${this.params.port})`
2343
+ );
2344
+ &nbsp;
2345
+ this.incomingEvents.push(new DyFM_SocketEvent&lt;T_ErrorContent&gt;({
2346
+ serviceName: this.params.name,
2347
+ eventKey: DyFM_SocketEvent_Key.error,
2348
+ tasks: [
2349
+ <span class="fstat-no" title="function not covered" > async (content: any) =&gt; {</span>
2350
+ <span class="cstat-no" title="statement not covered" > if (content instanceof DyFM_Error) {</span>
2351
+ <span class="cstat-no" title="statement not covered" > content.logSimple(`=--&gt; socket-client (${this.params.name}) ERROR`);</span>
2352
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2353
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(`=--&gt; socket-client (${this.params.name}) ERROR:`, content);</span>
2354
+ <span class="cstat-no" title="statement not covered" > }</span>
2355
+ <span class="cstat-no" title="statement not covered" > }</span>
2356
+ ],
2357
+ }));
2358
+ }
2359
+
2360
+ // Merge incoming events of the same eventKey
2361
+ const eventKeys = this.incomingEvents.map(
2362
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt; event.eventKey
2363
+ ).filter(
2364
+ (eventKey: string, index: number, self: string[]) =&gt;
2365
+ self.indexOf(eventKey) === index
2366
+ );
2367
+ const mergedEvents: DyFM_SocketEvent&lt;any&gt;[] = [];
2368
+ eventKeys.forEach((eventKey: string) =&gt; {
2369
+ const events = this.incomingEvents.filter(
2370
+ (event: DyFM_SocketEvent&lt;any&gt;) =&gt; event.eventKey === eventKey
2371
+ );
2372
+ &nbsp;
2373
+ mergedEvents.push(new DyFM_SocketEvent({
2374
+ eventKey: eventKey,
2375
+ preProcesses: events.map((event: DyFM_SocketEvent&lt;any&gt;) =&gt; event.preProcesses).flat(),
2376
+ tasks: events.map((event: DyFM_SocketEvent&lt;any&gt;) =&gt; event.tasks).flat(),
2377
+ }));
2378
+ });
2379
+ this.incomingEvents = mergedEvents;
2380
+
2381
+ if (DyNTS_global_settings.log_settings.setup) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
2382
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(</span>
2383
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service - Event Preparation setup done: ` +</span>
2384
+ <span class="cstat-no" title="statement not covered" > `"${this.params?.name}" (${this.params?.port})` + </span>
2385
+ <span class="cstat-no" title="statement not covered" > `\nincomingEvents:`, this.incomingEvents.map(</span>
2386
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2387
+ <span class="cstat-no" title="statement not covered" > `\n\t"${event.eventKey}": preProcesses: ${event.preProcesses?.length} ` +</span>
2388
+ <span class="cstat-no" title="statement not covered" > `tasks: ${event.tasks?.length}`</span>
2389
+ <span class="cstat-no" title="statement not covered" > )</span>
2390
+ <span class="cstat-no" title="statement not covered" > );</span>
2391
+ <span class="cstat-no" title="statement not covered" > }</span>
2392
+ &nbsp;
2393
+ // Set incoming events serviceName
2394
+ this.incomingEvents.forEach((event: DyFM_SocketEvent&lt;any&gt;) =&gt; {
2395
+ event.serviceName = this.params.name;
2396
+ });
2397
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
2398
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2399
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service - Event Preparation setup failed: ` +</span>
2400
+ <span class="cstat-no" title="statement not covered" > `"${this.params?.name}" (${this.params?.port})`, </span>
2401
+ <span class="cstat-no" title="statement not covered" > error</span>
2402
+ <span class="cstat-no" title="statement not covered" > );</span>
2403
+ <span class="cstat-no" title="statement not covered" ></span>
2404
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
2405
+ <span class="cstat-no" title="statement not covered" > }</span>
2406
+ }
2407
+ &nbsp;
2408
+ // eslint-disable-next-line max-lines-per-function
2409
+ async setupSocketServer(
2410
+ newSocketServer: SocketIO.Server,
2411
+ security: DyNTS_SocketSecurity.open | DyNTS_SocketSecurity.secure,
2412
+ successCallback: () =&gt; void
2413
+ ): Promise&lt;SocketIO.Server&gt; {
2414
+ try {
2415
+ if (this.highDetailedLogs) <span class="branch-0 cbranch-no" title="branch not covered" >console.log('\nfn:. setupSocketServer');</span>
2416
+ &nbsp;
2417
+ newSocketServer.on(DyFM_SocketEvent_Key.incomingNewConnection, async (socket: SocketIO.Socket) =&gt; {
2418
+ <span class="cstat-no" title="statement not covered" > try {</span>
2419
+ <span class="cstat-no" title="statement not covered" > let issuer: string;</span>
2420
+ <span class="cstat-no" title="statement not covered" ></span>
2421
+ <span class="cstat-no" title="statement not covered" > /* await this.connectEvent.executeEventTasks(socket); */</span>
2422
+ <span class="cstat-no" title="statement not covered" > </span>
2423
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2424
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.filter(</span>
2425
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2426
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.incomingNewConnection</span>
2427
+ <span class="cstat-no" title="statement not covered" > ),</span>
2428
+ <span class="cstat-no" title="statement not covered" > async (event: DyFM_SocketEvent&lt;any&gt;) =&gt; {</span>
2429
+ <span class="cstat-no" title="statement not covered" > await event.executeEventTasks(socket);</span>
2430
+ <span class="cstat-no" title="statement not covered" > }</span>
2431
+ <span class="cstat-no" title="statement not covered" > );</span>
2432
+ <span class="cstat-no" title="statement not covered" ></span>
2433
+ <span class="cstat-no" title="statement not covered" ></span>
2434
+ <span class="cstat-no" title="statement not covered" > if (this.getPresenceFromSubscriptionEventContent) {</span>
2435
+ <span class="cstat-no" title="statement not covered" > socket.on(</span>
2436
+ <span class="cstat-no" title="statement not covered" > DyFM_SocketEvent_Key.subscribe, </span>
2437
+ <span class="cstat-no" title="statement not covered" > async (content: any) =&gt; {</span>
2438
+ <span class="cstat-no" title="statement not covered" > let presence: T_Presence;</span>
2439
+ <span class="cstat-no" title="statement not covered" ></span>
2440
+ <span class="cstat-no" title="statement not covered" > try {</span>
2441
+ <span class="cstat-no" title="statement not covered" > /** </span>
2442
+ <span class="cstat-no" title="statement not covered" > * usually socket logs are in event.executeEventTasks(), </span>
2443
+ <span class="cstat-no" title="statement not covered" > * but subscribe event is an exception from this, </span>
2444
+ <span class="cstat-no" title="statement not covered" > * to be able to check content before getPresenceFromSubscriptionEventContent </span>
2445
+ <span class="cstat-no" title="statement not covered" > */</span>
2446
+ <span class="cstat-no" title="statement not covered" > if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
2447
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(</span>
2448
+ <span class="cstat-no" title="statement not covered" > `--=&gt; incoming socket (${this.params.name}) ` +</span>
2449
+ <span class="cstat-no" title="statement not covered" > `event: "${DyFM_SocketEvent_Key.subscribe}";` +</span>
2450
+ <span class="cstat-no" title="statement not covered" > `\ncontent:`, content</span>
2451
+ <span class="cstat-no" title="statement not covered" > );</span>
2452
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2453
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(</span>
2454
+ <span class="cstat-no" title="statement not covered" > `--=&gt; incoming socket (${this.params.name}) ` +</span>
2455
+ <span class="cstat-no" title="statement not covered" > `event: "${DyFM_SocketEvent_Key.subscribe}"`</span>
2456
+ <span class="cstat-no" title="statement not covered" > );</span>
2457
+ <span class="cstat-no" title="statement not covered" > }</span>
2458
+ <span class="cstat-no" title="statement not covered" ></span>
2459
+ <span class="cstat-no" title="statement not covered" > presence = await this.getPresenceFromSubscriptionEventContent(</span>
2460
+ <span class="cstat-no" title="statement not covered" > content, socket</span>
2461
+ <span class="cstat-no" title="statement not covered" > );</span>
2462
+ <span class="cstat-no" title="statement not covered" ></span>
2463
+ <span class="cstat-no" title="statement not covered" > presence.serviceName = this.params.name;</span>
2464
+ <span class="cstat-no" title="statement not covered" > issuer = presence.issuerLocalId;</span>
2465
+ <span class="cstat-no" title="statement not covered" > </span>
2466
+ <span class="cstat-no" title="statement not covered" > this.addSocketToPresence(presence);</span>
2467
+ <span class="cstat-no" title="statement not covered" > /* await this.subscriptionEvent.executeEventTasks(content, issuer); */</span>
2468
+ <span class="cstat-no" title="statement not covered" > </span>
2469
+ <span class="cstat-no" title="statement not covered" > if (this.getSubscriptionTasks) {</span>
2470
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2471
+ <span class="cstat-no" title="statement not covered" > this.getSubscriptionTasks(), </span>
2472
+ <span class="cstat-no" title="statement not covered" > async (task: DyFM_SocketEventTask&lt;T_SubscriptionContent&gt;) =&gt; {</span>
2473
+ <span class="cstat-no" title="statement not covered" > await task(content, issuer);</span>
2474
+ <span class="cstat-no" title="statement not covered" > }</span>
2475
+ <span class="cstat-no" title="statement not covered" > );</span>
2476
+ <span class="cstat-no" title="statement not covered" > }</span>
2477
+ <span class="cstat-no" title="statement not covered" ></span>
2478
+ <span class="cstat-no" title="statement not covered" > socket.emit(</span>
2479
+ <span class="cstat-no" title="statement not covered" > DyFM_SocketEvent_Key.subscriptionSuccessful, </span>
2480
+ <span class="cstat-no" title="statement not covered" > 'subscribe was successful', </span>
2481
+ <span class="cstat-no" title="statement not covered" > error =&gt; {</span>
2482
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2483
+ <span class="cstat-no" title="statement not covered" > `Emitting subscriptionSuccessful event failed!` +</span>
2484
+ <span class="cstat-no" title="statement not covered" > `\nerror:`, error</span>
2485
+ <span class="cstat-no" title="statement not covered" > );</span>
2486
+ <span class="cstat-no" title="statement not covered" > }</span>
2487
+ <span class="cstat-no" title="statement not covered" > );</span>
2488
+ <span class="cstat-no" title="statement not covered" > </span>
2489
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.success(</span>
2490
+ <span class="cstat-no" title="statement not covered" > `&lt;-==&gt; socket(${this.params.name}) subscription successful (${issuer})`</span>
2491
+ <span class="cstat-no" title="statement not covered" > );</span>
2492
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2493
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2494
+ <span class="cstat-no" title="statement not covered" > error.logShort(</span>
2495
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params.name}" ` +</span>
2496
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`</span>
2497
+ <span class="cstat-no" title="statement not covered" > )</span>
2498
+ <span class="cstat-no" title="statement not covered" > } else if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
2499
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2500
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params.name}" ` +</span>
2501
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`, </span>
2502
+ <span class="cstat-no" title="statement not covered" > /* `${this.thisLocationStack}`, */</span>
2503
+ <span class="cstat-no" title="statement not covered" > error</span>
2504
+ <span class="cstat-no" title="statement not covered" > );</span>
2505
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2506
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2507
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params.name}" ` ,</span>
2508
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`,</span>
2509
+ <span class="cstat-no" title="statement not covered" > /* `${this.thisLocationStack}` */</span>
2510
+ <span class="cstat-no" title="statement not covered" > );</span>
2511
+ <span class="cstat-no" title="statement not covered" > }</span>
2512
+ <span class="cstat-no" title="statement not covered" > await this.closeSocket(socket, issuer, error);</span>
2513
+ <span class="cstat-no" title="statement not covered" > }</span>
2514
+ <span class="cstat-no" title="statement not covered" > }</span>
2515
+ <span class="cstat-no" title="statement not covered" > );</span>
2516
+ <span class="cstat-no" title="statement not covered" > </span>
2517
+ <span class="cstat-no" title="statement not covered" > socket.on(</span>
2518
+ <span class="cstat-no" title="statement not covered" > DyFM_SocketEvent_Key.unsubscribe, </span>
2519
+ <span class="cstat-no" title="statement not covered" > async (issuer: string) =&gt; {</span>
2520
+ <span class="cstat-no" title="statement not covered" > try {</span>
2521
+ <span class="cstat-no" title="statement not covered" > /** </span>
2522
+ <span class="cstat-no" title="statement not covered" > * usually socket logs are in event.executeEventTasks(), </span>
2523
+ <span class="cstat-no" title="statement not covered" > * but unsubscribe event is an exception from this, </span>
2524
+ <span class="cstat-no" title="statement not covered" > * to be able to check content before getPresenceFromSubscriptionEventContent </span>
2525
+ <span class="cstat-no" title="statement not covered" > */</span>
2526
+ <span class="cstat-no" title="statement not covered" > if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
2527
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(</span>
2528
+ <span class="cstat-no" title="statement not covered" > `--=&gt; incoming socket (${this.params.name}) ` +</span>
2529
+ <span class="cstat-no" title="statement not covered" > `event: ${DyFM_SocketEvent_Key.unsubscribe};` +</span>
2530
+ <span class="cstat-no" title="statement not covered" > `\ncontent:`, issuer</span>
2531
+ <span class="cstat-no" title="statement not covered" > );</span>
2532
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2533
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(</span>
2534
+ <span class="cstat-no" title="statement not covered" > `--=&gt; incoming socket (${this.params.name}) ` +</span>
2535
+ <span class="cstat-no" title="statement not covered" > `event: ${DyFM_SocketEvent_Key.unsubscribe}`</span>
2536
+ <span class="cstat-no" title="statement not covered" > );</span>
2537
+ <span class="cstat-no" title="statement not covered" > }</span>
2538
+ <span class="cstat-no" title="statement not covered" ></span>
2539
+ <span class="cstat-no" title="statement not covered" > /* await this.unsubscribeEvent.executeEventTasks(null, issuer); */</span>
2540
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2541
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.filter(</span>
2542
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2543
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.unsubscribe</span>
2544
+ <span class="cstat-no" title="statement not covered" > ),</span>
2545
+ <span class="cstat-no" title="statement not covered" > async (event: DyFM_SocketEvent&lt;any&gt;) =&gt; {</span>
2546
+ <span class="cstat-no" title="statement not covered" > await event.executeEventTasks(null, issuer);</span>
2547
+ <span class="cstat-no" title="statement not covered" > }</span>
2548
+ <span class="cstat-no" title="statement not covered" > );</span>
2549
+ <span class="cstat-no" title="statement not covered" > </span>
2550
+ <span class="cstat-no" title="statement not covered" > this.removeSubscription(socket, issuer);</span>
2551
+ <span class="cstat-no" title="statement not covered" ></span>
2552
+ <span class="cstat-no" title="statement not covered" > socket.emit(</span>
2553
+ <span class="cstat-no" title="statement not covered" > DyFM_SocketEvent_Key.unsubscribeSuccessful, </span>
2554
+ <span class="cstat-no" title="statement not covered" > 'unsubscribe was successful', </span>
2555
+ <span class="cstat-no" title="statement not covered" > error =&gt; {</span>
2556
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2557
+ <span class="cstat-no" title="statement not covered" > `Emitting unsubscribeSuccessful event failed!` +</span>
2558
+ <span class="cstat-no" title="statement not covered" > `\nerror:`, error</span>
2559
+ <span class="cstat-no" title="statement not covered" > );</span>
2560
+ <span class="cstat-no" title="statement not covered" > }</span>
2561
+ <span class="cstat-no" title="statement not covered" > );</span>
2562
+ <span class="cstat-no" title="statement not covered" > </span>
2563
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.success(</span>
2564
+ <span class="cstat-no" title="statement not covered" > `&lt; x &gt; socket(${this.params.name}) unsubscribe successful (${issuer})`</span>
2565
+ <span class="cstat-no" title="statement not covered" > );</span>
2566
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2567
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2568
+ <span class="cstat-no" title="statement not covered" > error.logSimple(</span>
2569
+ <span class="cstat-no" title="statement not covered" > `Socket Unsubscription failed: "${this.params.name}" ` +</span>
2570
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`</span>
2571
+ <span class="cstat-no" title="statement not covered" > )</span>
2572
+ <span class="cstat-no" title="statement not covered" > } else if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
2573
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2574
+ <span class="cstat-no" title="statement not covered" > `Socket unsubscribe failed: "${this.params.name}" ` ,</span>
2575
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`, </span>
2576
+ <span class="cstat-no" title="statement not covered" > error</span>
2577
+ <span class="cstat-no" title="statement not covered" > );</span>
2578
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2579
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2580
+ <span class="cstat-no" title="statement not covered" > `Socket unsubscribe failed: "${this.params.name}" ` ,</span>
2581
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`</span>
2582
+ <span class="cstat-no" title="statement not covered" > );</span>
2583
+ <span class="cstat-no" title="statement not covered" > }</span>
2584
+ <span class="cstat-no" title="statement not covered" > socket.emit(DyFM_SocketEvent_Key.error, error);</span>
2585
+ <span class="cstat-no" title="statement not covered" > this.removeSubscription(socket, issuer);</span>
2586
+ <span class="cstat-no" title="statement not covered" > }</span>
2587
+ <span class="cstat-no" title="statement not covered" > }</span>
2588
+ <span class="cstat-no" title="statement not covered" > );</span>
2589
+ <span class="cstat-no" title="statement not covered" > }</span>
2590
+ <span class="cstat-no" title="statement not covered" ></span>
2591
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.filter(</span>
2592
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2593
+ <span class="cstat-no" title="statement not covered" > event.eventKey !== DyFM_SocketEvent_Key.incomingNewConnection &amp;&amp;</span>
2594
+ <span class="cstat-no" title="statement not covered" > event.eventKey !== DyFM_SocketEvent_Key.subscribe &amp;&amp;</span>
2595
+ <span class="cstat-no" title="statement not covered" > event.eventKey !== DyFM_SocketEvent_Key.unsubscribe</span>
2596
+ <span class="cstat-no" title="statement not covered" > ).forEach((event: DyFM_SocketEvent&lt;any&gt;) =&gt; {</span>
2597
+ <span class="cstat-no" title="statement not covered" > socket.on(</span>
2598
+ <span class="cstat-no" title="statement not covered" > event.eventKey, </span>
2599
+ <span class="cstat-no" title="statement not covered" > async (content: any) =&gt; { </span>
2600
+ <span class="cstat-no" title="statement not covered" > try {</span>
2601
+ <span class="cstat-no" title="statement not covered" > await event.executeEventTasks(content, issuer);</span>
2602
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2603
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2604
+ <span class="cstat-no" title="statement not covered" > error.logSimple(</span>
2605
+ <span class="cstat-no" title="statement not covered" > `Socket Event failed: "${this.params.name}" (${this.params.port})`</span>
2606
+ <span class="cstat-no" title="statement not covered" > )</span>
2607
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2608
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2609
+ <span class="cstat-no" title="statement not covered" > `Socket Event failed: "${this.params.name}" (${this.params.port})`, </span>
2610
+ <span class="cstat-no" title="statement not covered" > error</span>
2611
+ <span class="cstat-no" title="statement not covered" > );</span>
2612
+ <span class="cstat-no" title="statement not covered" > }</span>
2613
+ <span class="cstat-no" title="statement not covered" > socket.emit(DyFM_SocketEvent_Key.error, error);</span>
2614
+ <span class="cstat-no" title="statement not covered" > }</span>
2615
+ <span class="cstat-no" title="statement not covered" > }</span>
2616
+ <span class="cstat-no" title="statement not covered" > );</span>
2617
+ <span class="cstat-no" title="statement not covered" > });</span>
2618
+ <span class="cstat-no" title="statement not covered" ></span>
2619
+ <span class="cstat-no" title="statement not covered" > if (DyNTS_global_settings.log_settings.socket_mainEvents) {</span>
2620
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.success(`&lt; &gt; socket(${this.params.name}): new CONNECTION established`);</span>
2621
+ <span class="cstat-no" title="statement not covered" > }</span>
2622
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2623
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2624
+ <span class="cstat-no" title="statement not covered" > error.logSimple(</span>
2625
+ <span class="cstat-no" title="statement not covered" > `Socket Connection failed: "${this.params.name}" ` +</span>
2626
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`</span>
2627
+ <span class="cstat-no" title="statement not covered" > )</span>
2628
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2629
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2630
+ <span class="cstat-no" title="statement not covered" > `Socket Connection failed: "${this.params.name}" ` +</span>
2631
+ <span class="cstat-no" title="statement not covered" > `(${this.params.port}) will disconnect now...`, </span>
2632
+ <span class="cstat-no" title="statement not covered" > error</span>
2633
+ <span class="cstat-no" title="statement not covered" > );</span>
2634
+ <span class="cstat-no" title="statement not covered" > }</span>
2635
+ <span class="cstat-no" title="statement not covered" ></span>
2636
+ <span class="cstat-no" title="statement not covered" > await this.closeSocket(socket, `${this.params.name} on connection error`, error);</span>
2637
+ <span class="cstat-no" title="statement not covered" > }</span>
2638
+ });
2639
+
2640
+ try {
2641
+ newSocketServer.listen(this.params.port);
2642
+
2643
+ DyFM_Log.success(
2644
+ `\nsocket server setup finished: "${this.params.name}"` +
2645
+ `\nsocket server listening on port: "${this.params.port}"`
2646
+ );
2647
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (listenError) {</span>
2648
+ <span class="cstat-no" title="statement not covered" > const errorMessage = `Failed to bind socket server "${this.params.name}" to port ${this.params.port}. ` +</span>
2649
+ <span class="cstat-no" title="statement not covered" > `This could be due to port already in use or insufficient permissions. ` +</span>
2650
+ <span class="cstat-no" title="statement not covered" > `Please ensure the port is available and try again.`;</span>
2651
+ <span class="cstat-no" title="statement not covered" > </span>
2652
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(errorMessage, listenError);</span>
2653
+ <span class="cstat-no" title="statement not covered" > throw new Error(errorMessage);</span>
2654
+ <span class="cstat-no" title="statement not covered" > }</span>
2655
+ &nbsp;
2656
+ successCallback();
2657
+
2658
+ if (security === DyNTS_SocketSecurity.open) {
2659
+ this.openSocketServer = newSocketServer;
2660
+ &nbsp;
2661
+ return this.openSocketServer;
2662
+ }<span class="branch-0 cbranch-no" title="branch not covered" > else {</span>
2663
+ <span class="cstat-no" title="statement not covered" > this.secureSocketServer = newSocketServer;</span>
2664
+ <span class="cstat-no" title="statement not covered" ></span>
2665
+ <span class="cstat-no" title="statement not covered" > return this.secureSocketServer;</span>
2666
+ <span class="cstat-no" title="statement not covered" > }</span>
2667
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
2668
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2669
+ <span class="cstat-no" title="statement not covered" > error.logSimple(</span>
2670
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service - Deep Setup failed: "${this.params?.name}" ` +</span>
2671
+ <span class="cstat-no" title="statement not covered" > `(${this.params?.port})`</span>
2672
+ <span class="cstat-no" title="statement not covered" > )</span>
2673
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2674
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2675
+ <span class="cstat-no" title="statement not covered" > `Socket Server Service - Deep Setup failed: "${this.params?.name}" ` +</span>
2676
+ <span class="cstat-no" title="statement not covered" > `(${this.params?.port})`, </span>
2677
+ <span class="cstat-no" title="statement not covered" > error</span>
2678
+ <span class="cstat-no" title="statement not covered" > );</span>
2679
+ <span class="cstat-no" title="statement not covered" > }</span>
2680
+ <span class="cstat-no" title="statement not covered" ></span>
2681
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
2682
+ <span class="cstat-no" title="statement not covered" > }</span>
2683
+ }
2684
+ &nbsp;
2685
+ protected <span class="fstat-no" title="function not covered" >async addSocketToPresence(newPresence: T_Presence): Promise&lt;void&gt; {</span>
2686
+ <span class="cstat-no" title="statement not covered" > try {</span>
2687
+ <span class="cstat-no" title="statement not covered" > const activePresence: T_Presence = this.presences.find(</span>
2688
+ <span class="cstat-no" title="statement not covered" > (pres: T_Presence) =&gt; pres.issuerLocalId === newPresence.issuerLocalId</span>
2689
+ <span class="cstat-no" title="statement not covered" > );</span>
2690
+ <span class="cstat-no" title="statement not covered" > </span>
2691
+ <span class="cstat-no" title="statement not covered" > if (activePresence) {</span>
2692
+ <span class="cstat-no" title="statement not covered" > activePresence.sockets.push(...newPresence.sockets);</span>
2693
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2694
+ <span class="cstat-no" title="statement not covered" > this.presences.push(newPresence);</span>
2695
+ <span class="cstat-no" title="statement not covered" > }</span>
2696
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2697
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2698
+ <span class="cstat-no" title="statement not covered" > error.logShort(</span>
2699
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`</span>
2700
+ <span class="cstat-no" title="statement not covered" > )</span>
2701
+ <span class="cstat-no" title="statement not covered" > } else if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
2702
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2703
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`,</span>
2704
+ <span class="cstat-no" title="statement not covered" > /* `${this.thisLocationStack}`, */</span>
2705
+ <span class="cstat-no" title="statement not covered" > error</span>
2706
+ <span class="cstat-no" title="statement not covered" > );</span>
2707
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2708
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2709
+ <span class="cstat-no" title="statement not covered" > `Socket Subscription failed: "${this.params?.name}" (${this.params?.port})`,</span>
2710
+ <span class="cstat-no" title="statement not covered" > /* `${this.thisLocationStack}` */</span>
2711
+ <span class="cstat-no" title="statement not covered" > );</span>
2712
+ <span class="cstat-no" title="statement not covered" > }</span>
2713
+ <span class="cstat-no" title="statement not covered" ></span>
2714
+ <span class="cstat-no" title="statement not covered" > throw error;</span>
2715
+ <span class="cstat-no" title="statement not covered" > }</span>
2716
+ <span class="cstat-no" title="statement not covered" > }</span>
2717
+ &nbsp;
2718
+ protected <span class="fstat-no" title="function not covered" >async closeSocket(socket: SocketIO.Socket, issuer: string, withError?: DyFM_AnyError): Promise&lt;void&gt; {</span>
2719
+ <span class="cstat-no" title="statement not covered" > try {</span>
2720
+ <span class="cstat-no" title="statement not covered" > if (withError) {</span>
2721
+ <span class="cstat-no" title="statement not covered" > socket.emit(DyFM_SocketEvent_Key.error, withError);</span>
2722
+ <span class="cstat-no" title="statement not covered" > }</span>
2723
+ <span class="cstat-no" title="statement not covered" ></span>
2724
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2725
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.filter(</span>
2726
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2727
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.disconnect</span>
2728
+ <span class="cstat-no" title="statement not covered" > ), </span>
2729
+ <span class="cstat-no" title="statement not covered" > async (event: DyFM_SocketEvent&lt;any&gt;) =&gt; {</span>
2730
+ <span class="cstat-no" title="statement not covered" > await event.executeEventTasks(null, issuer);</span>
2731
+ <span class="cstat-no" title="statement not covered" > }</span>
2732
+ <span class="cstat-no" title="statement not covered" > );</span>
2733
+ <span class="cstat-no" title="statement not covered" ></span>
2734
+ <span class="cstat-no" title="statement not covered" > /* if (this.getSubscriptionCloseTasks) {</span>
2735
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2736
+ <span class="cstat-no" title="statement not covered" > this.getSubscriptionCloseTasks(), </span>
2737
+ <span class="cstat-no" title="statement not covered" > async (task: DyFM_SocketEventTask&lt;null&gt;) =&gt; {</span>
2738
+ <span class="cstat-no" title="statement not covered" > await task(null, issuer);</span>
2739
+ <span class="cstat-no" title="statement not covered" > }</span>
2740
+ <span class="cstat-no" title="statement not covered" > );</span>
2741
+ <span class="cstat-no" title="statement not covered" > } */</span>
2742
+ <span class="cstat-no" title="statement not covered" ></span>
2743
+ <span class="cstat-no" title="statement not covered" > socket.emit(DyFM_SocketEvent_Key.disconnect);</span>
2744
+ <span class="cstat-no" title="statement not covered" > socket.disconnect();</span>
2745
+ <span class="cstat-no" title="statement not covered" ></span>
2746
+ <span class="cstat-no" title="statement not covered" > await this.removeSocketFromPresence(socket);</span>
2747
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2748
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2749
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('closeSocket', error),</span>
2750
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-CS0`,</span>
2751
+ <span class="cstat-no" title="statement not covered" > });</span>
2752
+ <span class="cstat-no" title="statement not covered" > }</span>
2753
+ <span class="cstat-no" title="statement not covered" > }</span>
2754
+ &nbsp;
2755
+ protected <span class="fstat-no" title="function not covered" >async removeSocketFromPresence(socket: SocketIO.Socket): Promise&lt;void&gt; {</span>
2756
+ <span class="cstat-no" title="statement not covered" > try {</span>
2757
+ <span class="cstat-no" title="statement not covered" > const presence: T_Presence = this.presences.find(</span>
2758
+ <span class="cstat-no" title="statement not covered" > (pres: T_Presence) =&gt; pres.sockets.includes(socket)</span>
2759
+ <span class="cstat-no" title="statement not covered" > );</span>
2760
+ <span class="cstat-no" title="statement not covered" > </span>
2761
+ <span class="cstat-no" title="statement not covered" > if (presence) {</span>
2762
+ <span class="cstat-no" title="statement not covered" > const socketIndex: number = presence.sockets.indexOf(socket);</span>
2763
+ <span class="cstat-no" title="statement not covered" ></span>
2764
+ <span class="cstat-no" title="statement not covered" > if (socketIndex !== -1) {</span>
2765
+ <span class="cstat-no" title="statement not covered" > presence.sockets.splice(socketIndex, 1);</span>
2766
+ <span class="cstat-no" title="statement not covered" > }</span>
2767
+ <span class="cstat-no" title="statement not covered" > </span>
2768
+ <span class="cstat-no" title="statement not covered" > if (presence.sockets.length === 0) {</span>
2769
+ <span class="cstat-no" title="statement not covered" > const presenceIndex: number = this.presences.indexOf(presence); </span>
2770
+ <span class="cstat-no" title="statement not covered" > </span>
2771
+ <span class="cstat-no" title="statement not covered" > if (presenceIndex !== -1) {</span>
2772
+ <span class="cstat-no" title="statement not covered" > this.presences.splice(presenceIndex, 1);</span>
2773
+ <span class="cstat-no" title="statement not covered" > }</span>
2774
+ <span class="cstat-no" title="statement not covered" > }</span>
2775
+ <span class="cstat-no" title="statement not covered" > }</span>
2776
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2777
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2778
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('removeSocketFromPresence', error),</span>
2779
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RSO0`,</span>
2780
+ <span class="cstat-no" title="statement not covered" > });</span>
2781
+ <span class="cstat-no" title="statement not covered" > }</span>
2782
+ <span class="cstat-no" title="statement not covered" > }</span>
2783
+ &nbsp;
2784
+ private <span class="fstat-no" title="function not covered" >async disconnectBaseTask(socket: SocketIO.Socket, issuer: string): Promise&lt;void&gt; {</span>
2785
+ <span class="cstat-no" title="statement not covered" > try {</span>
2786
+ <span class="cstat-no" title="statement not covered" > if (!(socket instanceof SocketIO.Socket)) {</span>
2787
+ <span class="cstat-no" title="statement not covered" > /* throw new DyFM_Error({</span>
2788
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2789
+ <span class="cstat-no" title="statement not covered" > 'disconnectBaseTask',</span>
2790
+ <span class="cstat-no" title="statement not covered" > new Error('Socket is not a SocketIO.Socket, type: ' + typeof socket),</span>
2791
+ <span class="cstat-no" title="statement not covered" > ),</span>
2792
+ <span class="cstat-no" title="statement not covered" > }); */</span>
2793
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(</span>
2794
+ <span class="cstat-no" title="statement not covered" > `Socket is not a SocketIO.Socket, type: ${typeof socket}`,</span>
2795
+ <span class="cstat-no" title="statement not covered" > socket</span>
2796
+ <span class="cstat-no" title="statement not covered" > );</span>
2797
+ <span class="cstat-no" title="statement not covered" > //TODO: remove all presences that have no socket</span>
2798
+ <span class="cstat-no" title="statement not covered" > }</span>
2799
+ <span class="cstat-no" title="statement not covered" ></span>
2800
+ <span class="cstat-no" title="statement not covered" > await this.removeSubscription(socket, issuer).catch(error =&gt; {</span>
2801
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
2802
+ <span class="cstat-no" title="statement not covered" > error.logShort(</span>
2803
+ <span class="cstat-no" title="statement not covered" > `Remove Subscription failed: "${this.params.name}" (${this.params.port})`</span>
2804
+ <span class="cstat-no" title="statement not covered" > );</span>
2805
+ <span class="cstat-no" title="statement not covered" > } else {</span>
2806
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(`Remove Subscription failed: "${this.params.name}" (${this.params.port})`, error);</span>
2807
+ <span class="cstat-no" title="statement not covered" > }</span>
2808
+ <span class="cstat-no" title="statement not covered" > });</span>
2809
+ <span class="cstat-no" title="statement not covered" ></span>
2810
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.info(`&lt; x &gt; socket(${this.params.name}) disconnected (${issuer})`);</span>
2811
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2812
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2813
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2814
+ <span class="cstat-no" title="statement not covered" > 'disconnectBaseTask',</span>
2815
+ <span class="cstat-no" title="statement not covered" > error,</span>
2816
+ <span class="cstat-no" title="statement not covered" > issuer</span>
2817
+ <span class="cstat-no" title="statement not covered" > ),</span>
2818
+ <span class="cstat-no" title="statement not covered" ></span>
2819
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-DBT0`,</span>
2820
+ <span class="cstat-no" title="statement not covered" > });</span>
2821
+ <span class="cstat-no" title="statement not covered" > }</span>
2822
+ <span class="cstat-no" title="statement not covered" > }</span>
2823
+ &nbsp;
2824
+ private <span class="fstat-no" title="function not covered" >async removeSubscription(socket: SocketIO.Socket, issuer?: string): Promise&lt;void&gt; {</span>
2825
+ <span class="cstat-no" title="statement not covered" > try {</span>
2826
+ <span class="cstat-no" title="statement not covered" > if (!this.presences.length) {</span>
2827
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2828
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2829
+ <span class="cstat-no" title="statement not covered" > 'removeSubscription',</span>
2830
+ <span class="cstat-no" title="statement not covered" > new Error(`No presences found (${this.params.name})`),</span>
2831
+ <span class="cstat-no" title="statement not covered" > issuer ?? 'unknown issuer'</span>
2832
+ <span class="cstat-no" title="statement not covered" > ),</span>
2833
+ <span class="cstat-no" title="statement not covered" ></span>
2834
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RS1`,</span>
2835
+ <span class="cstat-no" title="statement not covered" > });</span>
2836
+ <span class="cstat-no" title="statement not covered" > }</span>
2837
+ <span class="cstat-no" title="statement not covered" ></span>
2838
+ <span class="cstat-no" title="statement not covered" > const activePresenceIndex: number = this.presences.findIndex(</span>
2839
+ <span class="cstat-no" title="statement not covered" > (pres: DyNTS_SocketPresence) =&gt; pres.sockets.includes(socket)</span>
2840
+ <span class="cstat-no" title="statement not covered" > );</span>
2841
+ <span class="cstat-no" title="statement not covered" > </span>
2842
+ <span class="cstat-no" title="statement not covered" > if (activePresenceIndex === -1) {</span>
2843
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2844
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2845
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId', </span>
2846
+ <span class="cstat-no" title="statement not covered" > new Error(</span>
2847
+ <span class="cstat-no" title="statement not covered" > `closing socket (${this.params.name}) does not match any in the activePresences`</span>
2848
+ <span class="cstat-no" title="statement not covered" > ), </span>
2849
+ <span class="cstat-no" title="statement not covered" > issuer ?? 'unknown issuer'</span>
2850
+ <span class="cstat-no" title="statement not covered" > ),</span>
2851
+ <span class="cstat-no" title="statement not covered" ></span>
2852
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RS2`,</span>
2853
+ <span class="cstat-no" title="statement not covered" > });</span>
2854
+ <span class="cstat-no" title="statement not covered" > }</span>
2855
+ <span class="cstat-no" title="statement not covered" ></span>
2856
+ <span class="cstat-no" title="statement not covered" > const activePresence: DyNTS_SocketPresence = this.presences[activePresenceIndex];</span>
2857
+ <span class="cstat-no" title="statement not covered" ></span>
2858
+ <span class="cstat-no" title="statement not covered" > if (issuer &amp;&amp; activePresence.issuerLocalId !== issuer) {</span>
2859
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2860
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2861
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
2862
+ <span class="cstat-no" title="statement not covered" > new Error(</span>
2863
+ <span class="cstat-no" title="statement not covered" > `socket unsubscription for "${issuer}" and ` +</span>
2864
+ <span class="cstat-no" title="statement not covered" > `"${activePresence.issuerLocalId}" does not match.`</span>
2865
+ <span class="cstat-no" title="statement not covered" > ),</span>
2866
+ <span class="cstat-no" title="statement not covered" > issuer</span>
2867
+ <span class="cstat-no" title="statement not covered" > ),</span>
2868
+ <span class="cstat-no" title="statement not covered" ></span>
2869
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RS3`,</span>
2870
+ <span class="cstat-no" title="statement not covered" > });</span>
2871
+ <span class="cstat-no" title="statement not covered" > }</span>
2872
+ <span class="cstat-no" title="statement not covered" ></span>
2873
+ <span class="cstat-no" title="statement not covered" > const socketIndex = activePresence.sockets.findIndex((s: SocketIO.Socket) =&gt; s === socket);</span>
2874
+ <span class="cstat-no" title="statement not covered" ></span>
2875
+ <span class="cstat-no" title="statement not covered" > if (socketIndex === -1) {</span>
2876
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2877
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2878
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
2879
+ <span class="cstat-no" title="statement not covered" > new Error(</span>
2880
+ <span class="cstat-no" title="statement not covered" > `closing socket (${this.params.name}) does not match any in the activePresences`</span>
2881
+ <span class="cstat-no" title="statement not covered" > ),</span>
2882
+ <span class="cstat-no" title="statement not covered" > activePresence.issuerLocalId</span>
2883
+ <span class="cstat-no" title="statement not covered" > ),</span>
2884
+ <span class="cstat-no" title="statement not covered" ></span>
2885
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RS4`,</span>
2886
+ <span class="cstat-no" title="statement not covered" > });</span>
2887
+ <span class="cstat-no" title="statement not covered" > }</span>
2888
+ <span class="cstat-no" title="statement not covered" ></span>
2889
+ <span class="cstat-no" title="statement not covered" > activePresence.sockets.splice(socketIndex);</span>
2890
+ <span class="cstat-no" title="statement not covered" > </span>
2891
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2892
+ <span class="cstat-no" title="statement not covered" > this.incomingEvents.filter(</span>
2893
+ <span class="cstat-no" title="statement not covered" > (event: DyFM_SocketEvent&lt;any&gt;) =&gt; </span>
2894
+ <span class="cstat-no" title="statement not covered" > event.eventKey === DyFM_SocketEvent_Key.unsubscribeSuccessful</span>
2895
+ <span class="cstat-no" title="statement not covered" > ), </span>
2896
+ <span class="cstat-no" title="statement not covered" > async (event: DyFM_SocketEvent&lt;any&gt;) =&gt; {</span>
2897
+ <span class="cstat-no" title="statement not covered" > await event.executeEventTasks(null, issuer);</span>
2898
+ <span class="cstat-no" title="statement not covered" > }</span>
2899
+ <span class="cstat-no" title="statement not covered" > );</span>
2900
+ <span class="cstat-no" title="statement not covered" ></span>
2901
+ <span class="cstat-no" title="statement not covered" > /* if (this.getSubscriptionCloseTasks) {</span>
2902
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(</span>
2903
+ <span class="cstat-no" title="statement not covered" > this.getSubscriptionCloseTasks(), </span>
2904
+ <span class="cstat-no" title="statement not covered" > async (task: DyFM_SocketEventTask&lt;null&gt;) =&gt; {</span>
2905
+ <span class="cstat-no" title="statement not covered" > await task(null, issuer);</span>
2906
+ <span class="cstat-no" title="statement not covered" > }</span>
2907
+ <span class="cstat-no" title="statement not covered" > );</span>
2908
+ <span class="cstat-no" title="statement not covered" > } */</span>
2909
+ <span class="cstat-no" title="statement not covered" ></span>
2910
+ <span class="cstat-no" title="statement not covered" > if (activePresence.sockets.length === 0) {</span>
2911
+ <span class="cstat-no" title="statement not covered" > this.presences.splice(activePresenceIndex);</span>
2912
+ <span class="cstat-no" title="statement not covered" > }</span>
2913
+ <span class="cstat-no" title="statement not covered" ></span>
2914
+ <span class="cstat-no" title="statement not covered" > socket.emit(DyFM_SocketEvent_Key.unsubscribeSuccessful, 'unsubscribe was successful');</span>
2915
+ <span class="cstat-no" title="statement not covered" > socket.disconnect();</span>
2916
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.info(`&lt;x==&gt; socket (${this.params.name}) unsubscription successful (${issuer})`);</span>
2917
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2918
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2919
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2920
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
2921
+ <span class="cstat-no" title="statement not covered" > error,</span>
2922
+ <span class="cstat-no" title="statement not covered" > issuer ?? 'unknown issuer'</span>
2923
+ <span class="cstat-no" title="statement not covered" > ),</span>
2924
+ <span class="cstat-no" title="statement not covered" ></span>
2925
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-RS0`,</span>
2926
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) Subscription Removal failed: "${this.params?.name}"`,</span>
2927
+ <span class="cstat-no" title="statement not covered" > });</span>
2928
+ <span class="cstat-no" title="statement not covered" > }</span>
2929
+ <span class="cstat-no" title="statement not covered" > }</span>
2930
+ &nbsp;
2931
+ /* emitServerEvent(event: string, content: any): void {
2932
+ try {
2933
+ DyFM_Log.log(` &lt;=-- emitting server socket(${this.params.name}) event: ${event}`);
2934
+ &nbsp;
2935
+ this.openSocketServer.emit(event, content, error =&gt; {
2936
+ DyFM_Log.error(`Emitting server event '${event}' failed!\nerror:`, error);
2937
+ });
2938
+ } catch (error) {
2939
+ throw new DyFM_Error({
2940
+ ...this._getDefaultErrorSettings(
2941
+ 'emitEvent',
2942
+ error
2943
+ ),
2944
+ &nbsp;
2945
+ errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-500',
2946
+ message: `socket(${this.params.name}) Event Emit (${event}) failed: ${this.params?.name}`,
2947
+ });
2948
+ }
2949
+ } */
2950
+ &nbsp;
2951
+ <span class="fstat-no" title="function not covered" > idIsSubscribed(id: string): boolean {</span>
2952
+ <span class="cstat-no" title="statement not covered" > try {</span>
2953
+ <span class="cstat-no" title="statement not covered" > return !!this.presences.find(</span>
2954
+ <span class="cstat-no" title="statement not covered" > (presence: DyNTS_SocketPresence) =&gt; presence.issuerLocalId === id</span>
2955
+ <span class="cstat-no" title="statement not covered" > );</span>
2956
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2957
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2958
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2959
+ <span class="cstat-no" title="statement not covered" > 'idIsSubscribed',</span>
2960
+ <span class="cstat-no" title="statement not covered" > error</span>
2961
+ <span class="cstat-no" title="statement not covered" > ),</span>
2962
+ <span class="cstat-no" title="statement not covered" ></span>
2963
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-IIS0`,</span>
2964
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) ID Subscription Check (${id}) failed`,</span>
2965
+ <span class="cstat-no" title="statement not covered" > });</span>
2966
+ <span class="cstat-no" title="statement not covered" > }</span>
2967
+ <span class="cstat-no" title="statement not covered" > }</span>
2968
+ &nbsp;
2969
+ <span class="fstat-no" title="function not covered" > async emitError(presenceIssuerId: string, error: any, issuer: string): Promise&lt;void&gt; {</span>
2970
+ <span class="cstat-no" title="statement not covered" > try {</span>
2971
+ <span class="cstat-no" title="statement not covered" > await this.sendEventForId(presenceIssuerId, DyFM_SocketEvent_Key.error, error, issuer);</span>
2972
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
2973
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2974
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2975
+ <span class="cstat-no" title="statement not covered" > 'emitError',</span>
2976
+ <span class="cstat-no" title="statement not covered" > error,</span>
2977
+ <span class="cstat-no" title="statement not covered" > presenceIssuerId</span>
2978
+ <span class="cstat-no" title="statement not covered" > ),</span>
2979
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-EE0`,</span>
2980
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) Error Emit (id: ${presenceIssuerId}) failed`,</span>
2981
+ <span class="cstat-no" title="statement not covered" > });</span>
2982
+ <span class="cstat-no" title="statement not covered" > }</span>
2983
+ <span class="cstat-no" title="statement not covered" > }</span>
2984
+ &nbsp;
2985
+ <span class="fstat-no" title="function not covered" > async sendEventForId(id: string, event: string, content: any, issuer: string): Promise&lt;void&gt; {</span>
2986
+ <span class="cstat-no" title="statement not covered" > try {</span>
2987
+ <span class="cstat-no" title="statement not covered" > if (!event) {</span>
2988
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
2989
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
2990
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
2991
+ <span class="cstat-no" title="statement not covered" > new Error('No event was provided'),</span>
2992
+ <span class="cstat-no" title="statement not covered" > content?.source</span>
2993
+ <span class="cstat-no" title="statement not covered" > ),</span>
2994
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI1`,</span>
2995
+ <span class="cstat-no" title="statement not covered" > });</span>
2996
+ <span class="cstat-no" title="statement not covered" > }</span>
2997
+ <span class="cstat-no" title="statement not covered" ></span>
2998
+ <span class="cstat-no" title="statement not covered" > if (!id) {</span>
2999
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
3000
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
3001
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
3002
+ <span class="cstat-no" title="statement not covered" > new Error('No ID was provided'),</span>
3003
+ <span class="cstat-no" title="statement not covered" > content?.source</span>
3004
+ <span class="cstat-no" title="statement not covered" > ),</span>
3005
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI2`,</span>
3006
+ <span class="cstat-no" title="statement not covered" > });</span>
3007
+ <span class="cstat-no" title="statement not covered" > }</span>
3008
+ <span class="cstat-no" title="statement not covered" ></span>
3009
+ <span class="cstat-no" title="statement not covered" > const presence: DyNTS_SocketPresence = this.presences.find(</span>
3010
+ <span class="cstat-no" title="statement not covered" > (pres: DyNTS_SocketPresence) =&gt; pres.issuerLocalId === id</span>
3011
+ <span class="cstat-no" title="statement not covered" > );</span>
3012
+ <span class="cstat-no" title="statement not covered" ></span>
3013
+ <span class="cstat-no" title="statement not covered" > if (!presence) {</span>
3014
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({ </span>
3015
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
3016
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
3017
+ <span class="cstat-no" title="statement not covered" > new Error(`No active socket with this specific ID: "${id}"`),</span>
3018
+ <span class="cstat-no" title="statement not covered" > content?.source</span>
3019
+ <span class="cstat-no" title="statement not covered" > ),</span>
3020
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI3`,</span>
3021
+ <span class="cstat-no" title="statement not covered" > });</span>
3022
+ <span class="cstat-no" title="statement not covered" > }</span>
3023
+ <span class="cstat-no" title="statement not covered" ></span>
3024
+ <span class="cstat-no" title="statement not covered" > presence.emitEvent(event, content, issuer);</span>
3025
+ <span class="cstat-no" title="statement not covered" ></span>
3026
+ <span class="cstat-no" title="statement not covered" > if (DyNTS_global_settings.log_settings.socket_eventContent) {</span>
3027
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.success(</span>
3028
+ <span class="cstat-no" title="statement not covered" > ` &lt;--= emitted socket (${this.params.name}) event: "${event}", ` +</span>
3029
+ <span class="cstat-no" title="statement not covered" > `\n presenceId: "${id}", sockets: ${presence.sockets.length}` +</span>
3030
+ <span class="cstat-no" title="statement not covered" > `\n content:`, content</span>
3031
+ <span class="cstat-no" title="statement not covered" > );</span>
3032
+ <span class="cstat-no" title="statement not covered" > } else {</span>
3033
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.success(</span>
3034
+ <span class="cstat-no" title="statement not covered" > ` &lt;--= emitted socket (${this.params.name}) event: "${event}", ` +</span>
3035
+ <span class="cstat-no" title="statement not covered" > `\n presenceId: ${id}, sockets: ${presence.sockets.length}`</span>
3036
+ <span class="cstat-no" title="statement not covered" > );</span>
3037
+ <span class="cstat-no" title="statement not covered" > }</span>
3038
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
3039
+ <span class="cstat-no" title="statement not covered" > try {</span>
3040
+ <span class="cstat-no" title="statement not covered" > if (error?.flag?.includes(DyFM_errorFlag) &amp;&amp; error?.additionalInfo?.inactiveSockets) {</span>
3041
+ <span class="cstat-no" title="statement not covered" > const sockets: SocketIO.Socket[] = error.additionalInfo.inactiveSockets;</span>
3042
+ <span class="cstat-no" title="statement not covered" ></span>
3043
+ <span class="cstat-no" title="statement not covered" > await DyFM_Array.asyncForEach(sockets, async (socket: SocketIO.Socket) =&gt; {</span>
3044
+ <span class="cstat-no" title="statement not covered" > await this.removeSubscription(socket);</span>
3045
+ <span class="cstat-no" title="statement not covered" > });</span>
3046
+ <span class="cstat-no" title="statement not covered" ></span>
3047
+ <span class="cstat-no" title="statement not covered" > const presence: DyNTS_SocketPresence = this.presences.find(</span>
3048
+ <span class="cstat-no" title="statement not covered" > (pres: DyNTS_SocketPresence) =&gt; pres.issuerLocalId === id</span>
3049
+ <span class="cstat-no" title="statement not covered" > );</span>
3050
+ <span class="cstat-no" title="statement not covered" ></span>
3051
+ <span class="cstat-no" title="statement not covered" > if (!presence) {</span>
3052
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({ </span>
3053
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings(</span>
3054
+ <span class="cstat-no" title="statement not covered" > 'sendEventForId',</span>
3055
+ <span class="cstat-no" title="statement not covered" > new Error(`No active socket (${this.params.name}) with this specific ID: "${id}"`),</span>
3056
+ <span class="cstat-no" title="statement not covered" > content?.source</span>
3057
+ <span class="cstat-no" title="statement not covered" > ),</span>
3058
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI4`,</span>
3059
+ <span class="cstat-no" title="statement not covered" > });</span>
3060
+ <span class="cstat-no" title="statement not covered" > }</span>
3061
+ <span class="cstat-no" title="statement not covered" > }</span>
3062
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
3063
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
3064
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('sendEventForId', error, content?.source),</span>
3065
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI5`,</span>
3066
+ <span class="cstat-no" title="statement not covered" > message: </span>
3067
+ <span class="cstat-no" title="statement not covered" > `Error handling of inactive sockets (${this.params.name}) failed!` +</span>
3068
+ <span class="cstat-no" title="statement not covered" > `\n(Socket Event Emit for id (${id}, ${event}) failed)`,</span>
3069
+ <span class="cstat-no" title="statement not covered" > });</span>
3070
+ <span class="cstat-no" title="statement not covered" > }</span>
3071
+ <span class="cstat-no" title="statement not covered" ></span>
3072
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
3073
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('sendEventForId', error, content?.source),</span>
3074
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SEFI0`,</span>
3075
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) Event Emit for id (${id}, ${event}) failed`,</span>
3076
+ <span class="cstat-no" title="statement not covered" > });</span>
3077
+ <span class="cstat-no" title="statement not covered" > }</span>
3078
+ <span class="cstat-no" title="statement not covered" > }</span>
3079
+ &nbsp;
3080
+ <span class="fstat-no" title="function not covered" > async broadcastEvent(event: string, content: any, issuer: string): Promise&lt;void&gt; {</span>
3081
+ <span class="cstat-no" title="statement not covered" > try {</span>
3082
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.log(`&lt;=-== broadcasting socket (${this.params.name}) event: "${event}"`);</span>
3083
+ <span class="cstat-no" title="statement not covered" ></span>
3084
+ <span class="cstat-no" title="statement not covered" > this.presences.forEach((presence: DyNTS_SocketPresence) =&gt; {</span>
3085
+ <span class="cstat-no" title="statement not covered" > presence.emitEvent(event, content, issuer);</span>
3086
+ <span class="cstat-no" title="statement not covered" > });</span>
3087
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
3088
+ <span class="cstat-no" title="statement not covered" > if (DyNTS_global_settings.log_settings.detailedErrors) {</span>
3089
+ <span class="cstat-no" title="statement not covered" > if (error instanceof DyFM_Error) {</span>
3090
+ <span class="cstat-no" title="statement not covered" > error.logSimple(`socket (${this.params.name}) Event Broadcast (${event}) failed`);</span>
3091
+ <span class="cstat-no" title="statement not covered" > } else {</span>
3092
+ <span class="cstat-no" title="statement not covered" > DyFM_Log.error(`socket (${this.params.name}) Event Broadcast (${event}) failed`, error);</span>
3093
+ <span class="cstat-no" title="statement not covered" > }</span>
3094
+ <span class="cstat-no" title="statement not covered" > }</span>
3095
+ <span class="cstat-no" title="statement not covered" ></span>
3096
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({</span>
3097
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('broadcastEvent', error),</span>
3098
+ <span class="cstat-no" title="statement not covered" > </span>
3099
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-BE0`,</span>
3100
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) Event Broadcast (${event}) failed`,</span>
3101
+ <span class="cstat-no" title="statement not covered" > });</span>
3102
+ <span class="cstat-no" title="statement not covered" > }</span>
3103
+ <span class="cstat-no" title="statement not covered" > }</span>
3104
+ &nbsp;
3105
+ <span class="fstat-no" title="function not covered" > async sendError(error: DyFM_AnyError, issuer: string): Promise&lt;void&gt; {</span>
3106
+ <span class="cstat-no" title="statement not covered" > try {</span>
3107
+ <span class="cstat-no" title="statement not covered" > await this.sendEventForId(issuer, DyFM_SocketEvent_Key.error, error, issuer);</span>
3108
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
3109
+ <span class="cstat-no" title="statement not covered" > throw new DyFM_Error({ </span>
3110
+ <span class="cstat-no" title="statement not covered" > ...this._getDefaultErrorSettings('sendError', error, issuer),</span>
3111
+ <span class="cstat-no" title="statement not covered" > errorCode: `${DyNTS_global_settings.systemShortCodeName}|DyNTS-SSS-SE0`,</span>
3112
+ <span class="cstat-no" title="statement not covered" > message: `socket (${this.params.name}) Error Send (${issuer}) failed`,</span>
3113
+ <span class="cstat-no" title="statement not covered" > });</span>
3114
+ <span class="cstat-no" title="statement not covered" > }</span>
3115
+ <span class="cstat-no" title="statement not covered" > }</span>
3116
+ &nbsp;
3117
+ private <span class="fstat-no" title="function not covered" >_getDefaultErrorSettings(</span>
3118
+ <span class="cstat-no" title="statement not covered" > fnName: string, </span>
3119
+ <span class="cstat-no" title="statement not covered" > error: DyFM_AnyError, </span>
3120
+ <span class="cstat-no" title="statement not covered" > issuer?: string</span>
3121
+ <span class="cstat-no" title="statement not covered" > ): DyFM_Error_Settings {</span>
3122
+ <span class="cstat-no" title="statement not covered" > return {</span>
3123
+ <span class="cstat-no" title="statement not covered" > status: (error as DyFM_Error)?.___status ?? 500,</span>
3124
+ <span class="cstat-no" title="statement not covered" > message: (error as Error)?.message ?? </span>
3125
+ <span class="cstat-no" title="statement not covered" > (error as DyFM_Error)?._message ??</span>
3126
+ <span class="cstat-no" title="statement not covered" > `${fnName} was UNSUCCESSFUL (NTS)`,</span>
3127
+ <span class="cstat-no" title="statement not covered" > addECToUserMsg: !(error as DyFM_Error)?.__userMessage,</span>
3128
+ <span class="cstat-no" title="statement not covered" > userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,</span>
3129
+ <span class="cstat-no" title="statement not covered" > issuer: issuer,</span>
3130
+ <span class="cstat-no" title="statement not covered" > issuerService: this.constructor?.name,</span>
3131
+ <span class="cstat-no" title="statement not covered" > error: error,</span>
3132
+ <span class="cstat-no" title="statement not covered" > };</span>
3133
+ <span class="cstat-no" title="statement not covered" > }</span>
3134
+ &nbsp;
3135
+ /**
3136
+ * You must setup params for the service in this function
3137
+ */
3138
+ protected abstract getServiceParams(): DyNTS_SocketServerService_Params;
3139
+ &nbsp;
3140
+ /**
3141
+ * You must setup events and required services in this function
3142
+ */
3143
+ protected abstract getIncomingEvents(): DyFM_SocketEvent&lt;any&gt;[];
3144
+
3145
+ /**
3146
+ * You can setup tasks for the subscription event in this function
3147
+ */
3148
+ /* protected getSubscriptionCloseTasks?(): DyFM_SocketEventTask&lt;null&gt;[]; */
3149
+ &nbsp;
3150
+ /**
3151
+ * You can setup preprocesses for the subscription event in this function
3152
+ */
3153
+ /* protected getSubscriptionPreProcesses?(): DyFM_SocketEventPreprocessTask[]; */
3154
+ &nbsp;
3155
+ /**
3156
+ * You can setup tasks for the subscription event in this function
3157
+ * This will happen after the presence is created
3158
+ * If this throws an error, the socket will be closed
3159
+ */
3160
+ protected getSubscriptionTasks?(): DyFM_SocketEventTask&lt;T_SubscriptionContent&gt;[];
3161
+ &nbsp;
3162
+ /**
3163
+ * You can setup tasks for the unsubscribe event in this function
3164
+ */
3165
+ /* protected getUnsubscribeTasks?(): DyFM_SocketEventTask&lt;T_SubscriptionContent&gt;[]; */
3166
+ &nbsp;
3167
+ /**
3168
+ * You can setup preprocesses for the unsubscribe event in this function
3169
+ */
3170
+ /* protected getUnsubscribePreProcesses?(): DyFM_SocketEventPreprocessTask[]; */
3171
+ &nbsp;
3172
+ /**
3173
+ * You can setup tasks for the error event in this function
3174
+ */
3175
+ protected errorHandling?: DyFM_SocketEventTask&lt;T_ErrorContent&gt;;
3176
+ }
3177
+ &nbsp;</pre></td></tr></table></pre>
3178
+
3179
+ <div class='push'></div><!-- for sticky footer -->
3180
+ </div><!-- /wrapper -->
3181
+ <div class='footer quiet pad2 space-top1 center small'>
3182
+ Code coverage generated by
3183
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3184
+ at 2025-11-12T23:04:35.006Z
3185
+ </div>
3186
+ <script src="../../../prettify.js"></script>
3187
+ <script>
3188
+ window.onload = function () {
3189
+ prettyPrint();
3190
+ };
3191
+ </script>
3192
+ <script src="../../../sorter.js"></script>
3193
+ <script src="../../../block-navigation.js"></script>
3194
+ </body>
3195
+ </html>
3196
+