@lcap/nasl 3.7.3-beta.3 → 3.7.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/out/concepts/BindAttribute__.js +3 -3
  2. package/out/concepts/BindAttribute__.js.map +1 -1
  3. package/out/concepts/BindDirective__.js +3 -3
  4. package/out/concepts/BindDirective__.js.map +1 -1
  5. package/out/concepts/CallLogic__.js +2 -2
  6. package/out/concepts/CallLogic__.js.map +1 -1
  7. package/out/concepts/MemberExpression__.js +4 -4
  8. package/out/concepts/MemberExpression__.js.map +1 -1
  9. package/out/concepts/StringLiteral__.js +3 -3
  10. package/out/concepts/StringLiteral__.js.map +1 -1
  11. package/out/concepts/ViewElement__.d.ts +3 -0
  12. package/out/concepts/ViewElement__.js +2 -2
  13. package/out/concepts/ViewElement__.js.map +1 -1
  14. package/out/concepts/basics/stdlib/nasl.processV2.js +1 -1
  15. package/out/concepts/basics/stdlib/nasl.processV2.js.map +1 -1
  16. package/out/generator/genBundleFiles.d.ts +1 -0
  17. package/out/generator/genBundleFiles.js +6 -2
  18. package/out/generator/genBundleFiles.js.map +1 -1
  19. package/out/generator/release-body/body.d.ts +1 -0
  20. package/out/generator/release-body/body.js +37 -5
  21. package/out/generator/release-body/body.js.map +1 -1
  22. package/package.json +1 -1
  23. package/sandbox/stdlib/nasl.processV2.ts +1 -1
  24. package/src/concepts/BindAttribute__.ts +3 -3
  25. package/src/concepts/BindDirective__.ts +3 -3
  26. package/src/concepts/CallLogic__.ts +2 -2
  27. package/src/concepts/MemberExpression__.ts +4 -4
  28. package/src/concepts/StringLiteral__.ts +3 -3
  29. package/src/concepts/ViewElement__.ts +5 -2
  30. package/src/concepts/basics/stdlib/nasl.processV2.ts +1 -1
  31. package/src/generator/genBundleFiles.ts +8 -3
  32. package/src/generator/release-body/body.ts +40 -4
  33. package/.nyc_output/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  34. package/.nyc_output/processinfo/943352aa-23df-44e0-863b-3dcd3e8bf57a.json +0 -1
  35. package/.nyc_output/processinfo/index.json +0 -1
  36. package/coverage/base.css +0 -224
  37. package/coverage/block-navigation.js +0 -87
  38. package/coverage/cobertura-coverage.xml +0 -72356
  39. package/coverage/favicon.png +0 -0
  40. package/coverage/index.html +0 -161
  41. package/coverage/prettify.css +0 -1
  42. package/coverage/prettify.js +0 -2
  43. package/coverage/sort-arrow-sprite.png +0 -0
  44. package/coverage/sorter.js +0 -196
  45. package/coverage/src/automate/engine/index.html +0 -116
  46. package/coverage/src/automate/engine/utils.js.html +0 -1414
  47. package/coverage/src/bak/index.html +0 -116
  48. package/coverage/src/bak/translator.js.html +0 -622
  49. package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +0 -175
  50. package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +0 -169
  51. package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +0 -1246
  52. package/coverage/src/breakpoint/generator/CallbackNode.ts.html +0 -145
  53. package/coverage/src/breakpoint/generator/index.html +0 -176
  54. package/coverage/src/breakpoint/generator/index.ts.html +0 -508
  55. package/coverage/src/breakpoint/index.html +0 -116
  56. package/coverage/src/breakpoint/index.ts.html +0 -94
  57. package/coverage/src/breakpoint/shared/constants.ts.html +0 -436
  58. package/coverage/src/breakpoint/shared/index.html +0 -176
  59. package/coverage/src/breakpoint/shared/index.ts.html +0 -94
  60. package/coverage/src/breakpoint/shared/operations.ts.html +0 -160
  61. package/coverage/src/breakpoint/shared/socket.ts.html +0 -1297
  62. package/coverage/src/breakpoint/shared/utils.ts.html +0 -1087
  63. package/coverage/src/breakpoint/store/core.ts.html +0 -1600
  64. package/coverage/src/breakpoint/store/dock.ts.html +0 -733
  65. package/coverage/src/breakpoint/store/index.html +0 -146
  66. package/coverage/src/breakpoint/store/index.ts.html +0 -91
  67. package/coverage/src/common/BaseNode.ts.html +0 -3874
  68. package/coverage/src/common/Command.ts.html +0 -310
  69. package/coverage/src/common/EventEmitter.ts.html +0 -370
  70. package/coverage/src/common/Messager.ts.html +0 -820
  71. package/coverage/src/common/asyncFuncMap.ts.html +0 -127
  72. package/coverage/src/common/index.html +0 -191
  73. package/coverage/src/common/index.ts.html +0 -94
  74. package/coverage/src/concepts/Abort__.ts.html +0 -328
  75. package/coverage/src/concepts/Anchor__.ts.html +0 -646
  76. package/coverage/src/concepts/AnonymousFunction__.ts.html +0 -2029
  77. package/coverage/src/concepts/App__.ts.html +0 -13252
  78. package/coverage/src/concepts/Argument__.ts.html +0 -964
  79. package/coverage/src/concepts/Assignee__.ts.html +0 -2236
  80. package/coverage/src/concepts/AssignmentLine__.ts.html +0 -409
  81. package/coverage/src/concepts/Assignment__.ts.html +0 -1123
  82. package/coverage/src/concepts/Attribute__.ts.html +0 -733
  83. package/coverage/src/concepts/AuthInterface__.ts.html +0 -367
  84. package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +0 -1984
  85. package/coverage/src/concepts/AuthLogic__.ts.html +0 -781
  86. package/coverage/src/concepts/BackendVariable__.ts.html +0 -1483
  87. package/coverage/src/concepts/Backend__.ts.html +0 -1165
  88. package/coverage/src/concepts/BatchAssignment__.ts.html +0 -3301
  89. package/coverage/src/concepts/BinaryExpression__.ts.html +0 -1441
  90. package/coverage/src/concepts/BindAttribute__.ts.html +0 -3835
  91. package/coverage/src/concepts/BindDirective__.ts.html +0 -1921
  92. package/coverage/src/concepts/BindEvent__.ts.html +0 -3406
  93. package/coverage/src/concepts/BindStyle__.ts.html +0 -1612
  94. package/coverage/src/concepts/BooleanLiteral__.ts.html +0 -418
  95. package/coverage/src/concepts/CallAuthInterface__.ts.html +0 -1615
  96. package/coverage/src/concepts/CallConnector__.ts.html +0 -922
  97. package/coverage/src/concepts/CallFunction__.ts.html +0 -2122
  98. package/coverage/src/concepts/CallInterface__.ts.html +0 -2719
  99. package/coverage/src/concepts/CallLogic__.ts.html +0 -4807
  100. package/coverage/src/concepts/CallQueryComponent__.ts.html +0 -5308
  101. package/coverage/src/concepts/Comment__.ts.html +0 -394
  102. package/coverage/src/concepts/CompletionProperty__.ts.html +0 -925
  103. package/coverage/src/concepts/ConfigGroup__.ts.html +0 -1105
  104. package/coverage/src/concepts/ConfigPropertyValue__.ts.html +0 -424
  105. package/coverage/src/concepts/ConfigProperty__.ts.html +0 -1348
  106. package/coverage/src/concepts/Configuration__.ts.html +0 -1027
  107. package/coverage/src/concepts/Connection__.ts.html +0 -1360
  108. package/coverage/src/concepts/ConnectorTrigger__.ts.html +0 -595
  109. package/coverage/src/concepts/Connector__.ts.html +0 -4255
  110. package/coverage/src/concepts/Constant__.ts.html +0 -913
  111. package/coverage/src/concepts/DataSource__.ts.html +0 -1771
  112. package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +0 -331
  113. package/coverage/src/concepts/Destination__.ts.html +0 -2731
  114. package/coverage/src/concepts/End__.ts.html +0 -433
  115. package/coverage/src/concepts/EntityIndex__.ts.html +0 -787
  116. package/coverage/src/concepts/EntityProperty__.ts.html +0 -2668
  117. package/coverage/src/concepts/Entity__.ts.html +0 -2950
  118. package/coverage/src/concepts/EnumItem__.ts.html +0 -550
  119. package/coverage/src/concepts/Enum__.ts.html +0 -1231
  120. package/coverage/src/concepts/Event__.ts.html +0 -1084
  121. package/coverage/src/concepts/ExternalDestination__.ts.html +0 -1033
  122. package/coverage/src/concepts/ForEachStatement__.ts.html +0 -1957
  123. package/coverage/src/concepts/FrontendLibrary__.ts.html +0 -1711
  124. package/coverage/src/concepts/FrontendVariable__.ts.html +0 -292
  125. package/coverage/src/concepts/Frontend__.ts.html +0 -3961
  126. package/coverage/src/concepts/Function__.ts.html +0 -3598
  127. package/coverage/src/concepts/Identifier__.ts.html +0 -1057
  128. package/coverage/src/concepts/IfStatement__.ts.html +0 -1594
  129. package/coverage/src/concepts/Integration__.ts.html +0 -1228
  130. package/coverage/src/concepts/InterfaceParam__.ts.html +0 -1087
  131. package/coverage/src/concepts/Interface__.ts.html +0 -3394
  132. package/coverage/src/concepts/JSBlock__.ts.html +0 -421
  133. package/coverage/src/concepts/JavaLogic__.ts.html +0 -460
  134. package/coverage/src/concepts/LogicItem__.ts.html +0 -1171
  135. package/coverage/src/concepts/Logic__.ts.html +0 -7408
  136. package/coverage/src/concepts/MatchCase__.ts.html +0 -2929
  137. package/coverage/src/concepts/Match__.ts.html +0 -2455
  138. package/coverage/src/concepts/MemberExpression__.ts.html +0 -1726
  139. package/coverage/src/concepts/MicroApp__.ts.html +0 -436
  140. package/coverage/src/concepts/Module__.ts.html +0 -9220
  141. package/coverage/src/concepts/MsgTriggerEvent__.ts.html +0 -1045
  142. package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +0 -1018
  143. package/coverage/src/concepts/Namespace__.ts.html +0 -7942
  144. package/coverage/src/concepts/NewComposite__.ts.html +0 -4729
  145. package/coverage/src/concepts/NewList__.ts.html +0 -1618
  146. package/coverage/src/concepts/NewMap__.ts.html +0 -2326
  147. package/coverage/src/concepts/New__.ts.html +0 -289
  148. package/coverage/src/concepts/NullLiteral__.ts.html +0 -349
  149. package/coverage/src/concepts/NumericLiteral__.ts.html +0 -676
  150. package/coverage/src/concepts/OqlQueryComponent__.ts.html +0 -1141
  151. package/coverage/src/concepts/OverriddenLogic__.ts.html +0 -6817
  152. package/coverage/src/concepts/Param__.ts.html +0 -1726
  153. package/coverage/src/concepts/Point__.ts.html +0 -331
  154. package/coverage/src/concepts/ProcessComponent__.ts.html +0 -1666
  155. package/coverage/src/concepts/ProcessElement__.ts.html +0 -5884
  156. package/coverage/src/concepts/ProcessOutcome__.ts.html +0 -352
  157. package/coverage/src/concepts/ProcessOutcomes__.ts.html +0 -343
  158. package/coverage/src/concepts/Process__.ts.html +0 -4768
  159. package/coverage/src/concepts/QueryAggregateExpression__.ts.html +0 -568
  160. package/coverage/src/concepts/QueryFieldExpression__.ts.html +0 -583
  161. package/coverage/src/concepts/QueryFromExpression__.ts.html +0 -910
  162. package/coverage/src/concepts/QueryGroupByExpression__.ts.html +0 -559
  163. package/coverage/src/concepts/QueryJoinExpression__.ts.html +0 -1567
  164. package/coverage/src/concepts/QueryLimitExpression__.ts.html +0 -637
  165. package/coverage/src/concepts/QueryOrderByExpression__.ts.html +0 -679
  166. package/coverage/src/concepts/QuerySelectExpression__.ts.html +0 -1714
  167. package/coverage/src/concepts/Rect__.ts.html +0 -373
  168. package/coverage/src/concepts/Return__.ts.html +0 -1312
  169. package/coverage/src/concepts/Role__.ts.html +0 -601
  170. package/coverage/src/concepts/SelectMembers__.ts.html +0 -1246
  171. package/coverage/src/concepts/Slot__.ts.html +0 -628
  172. package/coverage/src/concepts/SqlQueryComponent__.ts.html +0 -982
  173. package/coverage/src/concepts/Start__.ts.html +0 -304
  174. package/coverage/src/concepts/StringInterpolation__.ts.html +0 -1129
  175. package/coverage/src/concepts/StringLiteral__.ts.html +0 -505
  176. package/coverage/src/concepts/StructureProperty__.ts.html +0 -1132
  177. package/coverage/src/concepts/Structure__.ts.html +0 -2092
  178. package/coverage/src/concepts/SwitchCase__.ts.html +0 -1174
  179. package/coverage/src/concepts/SwitchStatement__.ts.html +0 -877
  180. package/coverage/src/concepts/Theme__.ts.html +0 -358
  181. package/coverage/src/concepts/Transactional__.ts.html +0 -628
  182. package/coverage/src/concepts/TriggerEvent__.ts.html +0 -1012
  183. package/coverage/src/concepts/TriggerLauncher__.ts.html +0 -775
  184. package/coverage/src/concepts/TypeAnnotation__.ts.html +0 -3718
  185. package/coverage/src/concepts/TypeParam__.ts.html +0 -319
  186. package/coverage/src/concepts/UnaryExpression__.ts.html +0 -697
  187. package/coverage/src/concepts/Unparsed__.ts.html +0 -394
  188. package/coverage/src/concepts/UseComponent__.ts.html +0 -331
  189. package/coverage/src/concepts/ValidationRule__.ts.html +0 -1840
  190. package/coverage/src/concepts/Variable__.ts.html +0 -1489
  191. package/coverage/src/concepts/ViewBlock__.ts.html +0 -352
  192. package/coverage/src/concepts/ViewComponent__.ts.html +0 -4180
  193. package/coverage/src/concepts/ViewElement__.ts.html +0 -8803
  194. package/coverage/src/concepts/View__.ts.html +0 -8620
  195. package/coverage/src/concepts/WhileStatement__.ts.html +0 -1063
  196. package/coverage/src/concepts/basics/stdlib/index.html +0 -356
  197. package/coverage/src/concepts/basics/stdlib/index.ts.html +0 -208
  198. package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +0 -565
  199. package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +0 -517
  200. package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +0 -226
  201. package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +0 -172
  202. package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +0 -214
  203. package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +0 -145
  204. package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +0 -589
  205. package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +0 -214
  206. package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +0 -229
  207. package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +0 -268
  208. package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +0 -1999
  209. package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +0 -3259
  210. package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +0 -6844
  211. package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +0 -1768
  212. package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +0 -163
  213. package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +0 -664
  214. package/coverage/src/concepts/basics/types/coreTypeList.ts.html +0 -121
  215. package/coverage/src/concepts/basics/types/index.html +0 -131
  216. package/coverage/src/concepts/basics/types/index.ts.html +0 -160
  217. package/coverage/src/concepts/index.html +0 -1961
  218. package/coverage/src/concepts/index.ts.html +0 -103
  219. package/coverage/src/concepts/index__.ts.html +0 -451
  220. package/coverage/src/config.ts.html +0 -343
  221. package/coverage/src/decorators/index.html +0 -131
  222. package/coverage/src/decorators/index.ts.html +0 -739
  223. package/coverage/src/decorators/promise.ts.html +0 -169
  224. package/coverage/src/eventBus.ts.html +0 -100
  225. package/coverage/src/generator/compileComponent.ts.html +0 -142
  226. package/coverage/src/generator/genBundleFiles.ts.html +0 -1828
  227. package/coverage/src/generator/genHash.ts.html +0 -124
  228. package/coverage/src/generator/genMetaData.ts.html +0 -1042
  229. package/coverage/src/generator/genReleaseBody.ts.html +0 -1282
  230. package/coverage/src/generator/icestark.ts.html +0 -220
  231. package/coverage/src/generator/index.html +0 -266
  232. package/coverage/src/generator/index.ts.html +0 -106
  233. package/coverage/src/generator/microApp.ts.html +0 -172
  234. package/coverage/src/generator/permission.ts.html +0 -1036
  235. package/coverage/src/generator/qiankun.ts.html +0 -232
  236. package/coverage/src/generator/styleReplacer.ts.html +0 -199
  237. package/coverage/src/index.html +0 -116
  238. package/coverage/src/index.ts.html +0 -121
  239. package/coverage/src/manager/diagnostic.ts.html +0 -442
  240. package/coverage/src/manager/index.html +0 -131
  241. package/coverage/src/manager/stepRecorder.ts.html +0 -457
  242. package/coverage/src/natural/genNaturalTS.ts.html +0 -355
  243. package/coverage/src/natural/index.html +0 -161
  244. package/coverage/src/natural/index.ts.html +0 -91
  245. package/coverage/src/natural/naslStdlibMap.ts.html +0 -157
  246. package/coverage/src/natural/transformTSCode.ts.html +0 -2647
  247. package/coverage/src/sentry/index.html +0 -116
  248. package/coverage/src/sentry/index.ts.html +0 -676
  249. package/coverage/src/server/createUiTs.ts.html +0 -910
  250. package/coverage/src/server/entity2LogicNamespace.ts.html +0 -1294
  251. package/coverage/src/server/event.js.html +0 -526
  252. package/coverage/src/server/extendBaseNode.ts.html +0 -1762
  253. package/coverage/src/server/formatTsUtils.ts.html +0 -2689
  254. package/coverage/src/server/getConnector.ts.html +0 -316
  255. package/coverage/src/server/getExtensionModules.ts.html +0 -178
  256. package/coverage/src/server/getFunctions.ts.html +0 -133
  257. package/coverage/src/server/getInterfaces.ts.html +0 -229
  258. package/coverage/src/server/getLogging.ts.html +0 -100
  259. package/coverage/src/server/getLogics.ts.html +0 -1363
  260. package/coverage/src/server/getMemberIdentifier.ts.html +0 -1561
  261. package/coverage/src/server/getProcessComponents.ts.html +0 -112
  262. package/coverage/src/server/getProcesses.ts.html +0 -2023
  263. package/coverage/src/server/getValidates.ts.html +0 -115
  264. package/coverage/src/server/index.html +0 -401
  265. package/coverage/src/server/index.ts.html +0 -229
  266. package/coverage/src/server/naslServer.ts.html +0 -14401
  267. package/coverage/src/server/naslStdlibMap.ts.html +0 -241
  268. package/coverage/src/server/process2LogicNamespace.ts.html +0 -454
  269. package/coverage/src/server/translator.ts.html +0 -2566
  270. package/coverage/src/service/creator/add.configs.js.html +0 -379
  271. package/coverage/src/service/creator/errHandles.js.html +0 -322
  272. package/coverage/src/service/creator/index.html +0 -146
  273. package/coverage/src/service/creator/index.js.html +0 -352
  274. package/coverage/src/service/datasource/api.js.html +0 -118
  275. package/coverage/src/service/datasource/index.html +0 -131
  276. package/coverage/src/service/datasource/index.js.html +0 -103
  277. package/coverage/src/service/logic/api.js.html +0 -109
  278. package/coverage/src/service/logic/index.html +0 -131
  279. package/coverage/src/service/logic/index.js.html +0 -103
  280. package/coverage/src/service/storage/api.js.html +0 -202
  281. package/coverage/src/service/storage/index.html +0 -206
  282. package/coverage/src/service/storage/index.ts.html +0 -103
  283. package/coverage/src/service/storage/init.ts.html +0 -2761
  284. package/coverage/src/service/storage/jsoner.ts.html +0 -502
  285. package/coverage/src/service/storage/map.ts.html +0 -256
  286. package/coverage/src/service/storage/service.ts.html +0 -331
  287. package/coverage/src/service/storage/storagePoint.ts.html +0 -304
  288. package/coverage/src/templator/genCallComponentLogic.ts.html +0 -163
  289. package/coverage/src/templator/genCreateBlock.ts.html +0 -1093
  290. package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +0 -1609
  291. package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +0 -2254
  292. package/coverage/src/templator/genEditTableBlock.ts.html +0 -955
  293. package/coverage/src/templator/genEnumSelectBlock.ts.html +0 -178
  294. package/coverage/src/templator/genGetBlock.ts.html +0 -451
  295. package/coverage/src/templator/genGridViewBlock.ts.html +0 -1114
  296. package/coverage/src/templator/genListViewBlock.ts.html +0 -475
  297. package/coverage/src/templator/genQueryComponent.ts.html +0 -1207
  298. package/coverage/src/templator/genSelectBlock.ts.html +0 -1243
  299. package/coverage/src/templator/genTableBlock.ts.html +0 -910
  300. package/coverage/src/templator/genUpdateBlock.ts.html +0 -1192
  301. package/coverage/src/templator/index.html +0 -326
  302. package/coverage/src/templator/index.ts.html +0 -154
  303. package/coverage/src/templator/utils.ts.html +0 -1861
  304. package/coverage/src/translator/constant.ts.html +0 -106
  305. package/coverage/src/translator/index.html +0 -146
  306. package/coverage/src/translator/index.ts.html +0 -94
  307. package/coverage/src/translator/utils.ts.html +0 -436
  308. package/coverage/src/utils/cookie.ts.html +0 -265
  309. package/coverage/src/utils/env.ts.html +0 -91
  310. package/coverage/src/utils/index.html +0 -206
  311. package/coverage/src/utils/index.ts.html +0 -1429
  312. package/coverage/src/utils/logger.ts.html +0 -145
  313. package/coverage/src/utils/sortTsString.ts.html +0 -187
  314. package/coverage/src/utils/string.ts.html +0 -544
  315. package/coverage/src/utils/time-slicing/controller.ts.html +0 -1144
  316. package/coverage/src/utils/time-slicing/index.html +0 -221
  317. package/coverage/src/utils/time-slicing/index.ts.html +0 -103
  318. package/coverage/src/utils/time-slicing/page-state.ts.html +0 -121
  319. package/coverage/src/utils/time-slicing/performance.ts.html +0 -253
  320. package/coverage/src/utils/time-slicing/runner.ts.html +0 -241
  321. package/coverage/src/utils/time-slicing/tool.ts.html +0 -220
  322. package/coverage/src/utils/time-slicing/utils.ts.html +0 -355
  323. package/coverage/src/utils/time-slicing/wrapper.ts.html +0 -259
  324. package/coverage/src/utils/time-slicing.ts.html +0 -418
  325. package/coverage/src/utils/traverse.ts.html +0 -568
  326. package/coverage/src/utils/types.ts.html +0 -133
  327. package/coverage/src/utils/window.ts.html +0 -112
@@ -1,2647 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/natural/transformTSCode.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">src/natural</a> transformTSCode.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">2.27% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>9/396</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>0/311</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>0/81</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">2.41% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>9/373</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 oninput="onInput()" 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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
921
- <span class="cline-any cline-neutral">&nbsp;</span>
922
- <span class="cline-any cline-yes">1x</span>
923
- <span class="cline-any cline-neutral">&nbsp;</span>
924
- <span class="cline-any cline-yes">1x</span>
925
- <span class="cline-any cline-yes">1x</span>
926
- <span class="cline-any cline-neutral">&nbsp;</span>
927
- <span class="cline-any cline-neutral">&nbsp;</span>
928
- <span class="cline-any cline-yes">1x</span>
929
- <span class="cline-any cline-neutral">&nbsp;</span>
930
- <span class="cline-any cline-yes">1x</span>
931
- <span class="cline-any cline-no">&nbsp;</span>
932
- <span class="cline-any cline-no">&nbsp;</span>
933
- <span class="cline-any cline-neutral">&nbsp;</span>
934
- <span class="cline-any cline-neutral">&nbsp;</span>
935
- <span class="cline-any cline-neutral">&nbsp;</span>
936
- <span class="cline-any cline-neutral">&nbsp;</span>
937
- <span class="cline-any cline-no">&nbsp;</span>
938
- <span class="cline-any cline-neutral">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-neutral">&nbsp;</span>
941
- <span class="cline-any cline-neutral">&nbsp;</span>
942
- <span class="cline-any cline-neutral">&nbsp;</span>
943
- <span class="cline-any cline-neutral">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-neutral">&nbsp;</span>
948
- <span class="cline-any cline-neutral">&nbsp;</span>
949
- <span class="cline-any cline-no">&nbsp;</span>
950
- <span class="cline-any cline-no">&nbsp;</span>
951
- <span class="cline-any cline-no">&nbsp;</span>
952
- <span class="cline-any cline-neutral">&nbsp;</span>
953
- <span class="cline-any cline-no">&nbsp;</span>
954
- <span class="cline-any cline-no">&nbsp;</span>
955
- <span class="cline-any cline-neutral">&nbsp;</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-neutral">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-neutral">&nbsp;</span>
960
- <span class="cline-any cline-neutral">&nbsp;</span>
961
- <span class="cline-any cline-neutral">&nbsp;</span>
962
- <span class="cline-any cline-no">&nbsp;</span>
963
- <span class="cline-any cline-no">&nbsp;</span>
964
- <span class="cline-any cline-neutral">&nbsp;</span>
965
- <span class="cline-any cline-no">&nbsp;</span>
966
- <span class="cline-any cline-neutral">&nbsp;</span>
967
- <span class="cline-any cline-neutral">&nbsp;</span>
968
- <span class="cline-any cline-neutral">&nbsp;</span>
969
- <span class="cline-any cline-neutral">&nbsp;</span>
970
- <span class="cline-any cline-neutral">&nbsp;</span>
971
- <span class="cline-any cline-neutral">&nbsp;</span>
972
- <span class="cline-any cline-neutral">&nbsp;</span>
973
- <span class="cline-any cline-neutral">&nbsp;</span>
974
- <span class="cline-any cline-no">&nbsp;</span>
975
- <span class="cline-any cline-no">&nbsp;</span>
976
- <span class="cline-any cline-no">&nbsp;</span>
977
- <span class="cline-any cline-no">&nbsp;</span>
978
- <span class="cline-any cline-no">&nbsp;</span>
979
- <span class="cline-any cline-neutral">&nbsp;</span>
980
- <span class="cline-any cline-neutral">&nbsp;</span>
981
- <span class="cline-any cline-neutral">&nbsp;</span>
982
- <span class="cline-any cline-neutral">&nbsp;</span>
983
- <span class="cline-any cline-neutral">&nbsp;</span>
984
- <span class="cline-any cline-yes">1x</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-neutral">&nbsp;</span>
988
- <span class="cline-any cline-neutral">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-no">&nbsp;</span>
992
- <span class="cline-any cline-no">&nbsp;</span>
993
- <span class="cline-any cline-no">&nbsp;</span>
994
- <span class="cline-any cline-neutral">&nbsp;</span>
995
- <span class="cline-any cline-neutral">&nbsp;</span>
996
- <span class="cline-any cline-neutral">&nbsp;</span>
997
- <span class="cline-any cline-no">&nbsp;</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-neutral">&nbsp;</span>
1000
- <span class="cline-any cline-no">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-neutral">&nbsp;</span>
1003
- <span class="cline-any cline-no">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-neutral">&nbsp;</span>
1006
- <span class="cline-any cline-neutral">&nbsp;</span>
1007
- <span class="cline-any cline-neutral">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-neutral">&nbsp;</span>
1011
- <span class="cline-any cline-neutral">&nbsp;</span>
1012
- <span class="cline-any cline-neutral">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-neutral">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-neutral">&nbsp;</span>
1020
- <span class="cline-any cline-neutral">&nbsp;</span>
1021
- <span class="cline-any cline-neutral">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-no">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-no">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-no">&nbsp;</span>
1032
- <span class="cline-any cline-no">&nbsp;</span>
1033
- <span class="cline-any cline-neutral">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-neutral">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-neutral">&nbsp;</span>
1040
- <span class="cline-any cline-neutral">&nbsp;</span>
1041
- <span class="cline-any cline-neutral">&nbsp;</span>
1042
- <span class="cline-any cline-neutral">&nbsp;</span>
1043
- <span class="cline-any cline-no">&nbsp;</span>
1044
- <span class="cline-any cline-no">&nbsp;</span>
1045
- <span class="cline-any cline-neutral">&nbsp;</span>
1046
- <span class="cline-any cline-neutral">&nbsp;</span>
1047
- <span class="cline-any cline-neutral">&nbsp;</span>
1048
- <span class="cline-any cline-neutral">&nbsp;</span>
1049
- <span class="cline-any cline-neutral">&nbsp;</span>
1050
- <span class="cline-any cline-no">&nbsp;</span>
1051
- <span class="cline-any cline-neutral">&nbsp;</span>
1052
- <span class="cline-any cline-no">&nbsp;</span>
1053
- <span class="cline-any cline-neutral">&nbsp;</span>
1054
- <span class="cline-any cline-no">&nbsp;</span>
1055
- <span class="cline-any cline-no">&nbsp;</span>
1056
- <span class="cline-any cline-neutral">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-neutral">&nbsp;</span>
1059
- <span class="cline-any cline-no">&nbsp;</span>
1060
- <span class="cline-any cline-neutral">&nbsp;</span>
1061
- <span class="cline-any cline-neutral">&nbsp;</span>
1062
- <span class="cline-any cline-neutral">&nbsp;</span>
1063
- <span class="cline-any cline-neutral">&nbsp;</span>
1064
- <span class="cline-any cline-neutral">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span>
1067
- <span class="cline-any cline-neutral">&nbsp;</span>
1068
- <span class="cline-any cline-neutral">&nbsp;</span>
1069
- <span class="cline-any cline-neutral">&nbsp;</span>
1070
- <span class="cline-any cline-neutral">&nbsp;</span>
1071
- <span class="cline-any cline-neutral">&nbsp;</span>
1072
- <span class="cline-any cline-no">&nbsp;</span>
1073
- <span class="cline-any cline-neutral">&nbsp;</span>
1074
- <span class="cline-any cline-neutral">&nbsp;</span>
1075
- <span class="cline-any cline-neutral">&nbsp;</span>
1076
- <span class="cline-any cline-neutral">&nbsp;</span>
1077
- <span class="cline-any cline-neutral">&nbsp;</span>
1078
- <span class="cline-any cline-neutral">&nbsp;</span>
1079
- <span class="cline-any cline-neutral">&nbsp;</span>
1080
- <span class="cline-any cline-no">&nbsp;</span>
1081
- <span class="cline-any cline-no">&nbsp;</span>
1082
- <span class="cline-any cline-neutral">&nbsp;</span>
1083
- <span class="cline-any cline-neutral">&nbsp;</span>
1084
- <span class="cline-any cline-neutral">&nbsp;</span>
1085
- <span class="cline-any cline-no">&nbsp;</span>
1086
- <span class="cline-any cline-neutral">&nbsp;</span>
1087
- <span class="cline-any cline-neutral">&nbsp;</span>
1088
- <span class="cline-any cline-no">&nbsp;</span>
1089
- <span class="cline-any cline-no">&nbsp;</span>
1090
- <span class="cline-any cline-no">&nbsp;</span>
1091
- <span class="cline-any cline-no">&nbsp;</span>
1092
- <span class="cline-any cline-no">&nbsp;</span>
1093
- <span class="cline-any cline-no">&nbsp;</span>
1094
- <span class="cline-any cline-neutral">&nbsp;</span>
1095
- <span class="cline-any cline-no">&nbsp;</span>
1096
- <span class="cline-any cline-neutral">&nbsp;</span>
1097
- <span class="cline-any cline-neutral">&nbsp;</span>
1098
- <span class="cline-any cline-neutral">&nbsp;</span>
1099
- <span class="cline-any cline-neutral">&nbsp;</span>
1100
- <span class="cline-any cline-neutral">&nbsp;</span>
1101
- <span class="cline-any cline-neutral">&nbsp;</span>
1102
- <span class="cline-any cline-neutral">&nbsp;</span>
1103
- <span class="cline-any cline-no">&nbsp;</span>
1104
- <span class="cline-any cline-no">&nbsp;</span>
1105
- <span class="cline-any cline-no">&nbsp;</span>
1106
- <span class="cline-any cline-no">&nbsp;</span>
1107
- <span class="cline-any cline-no">&nbsp;</span>
1108
- <span class="cline-any cline-no">&nbsp;</span>
1109
- <span class="cline-any cline-neutral">&nbsp;</span>
1110
- <span class="cline-any cline-neutral">&nbsp;</span>
1111
- <span class="cline-any cline-neutral">&nbsp;</span>
1112
- <span class="cline-any cline-no">&nbsp;</span>
1113
- <span class="cline-any cline-no">&nbsp;</span>
1114
- <span class="cline-any cline-neutral">&nbsp;</span>
1115
- <span class="cline-any cline-neutral">&nbsp;</span>
1116
- <span class="cline-any cline-neutral">&nbsp;</span>
1117
- <span class="cline-any cline-neutral">&nbsp;</span>
1118
- <span class="cline-any cline-neutral">&nbsp;</span>
1119
- <span class="cline-any cline-neutral">&nbsp;</span>
1120
- <span class="cline-any cline-neutral">&nbsp;</span>
1121
- <span class="cline-any cline-neutral">&nbsp;</span>
1122
- <span class="cline-any cline-no">&nbsp;</span>
1123
- <span class="cline-any cline-no">&nbsp;</span>
1124
- <span class="cline-any cline-no">&nbsp;</span>
1125
- <span class="cline-any cline-no">&nbsp;</span>
1126
- <span class="cline-any cline-no">&nbsp;</span>
1127
- <span class="cline-any cline-no">&nbsp;</span>
1128
- <span class="cline-any cline-no">&nbsp;</span>
1129
- <span class="cline-any cline-neutral">&nbsp;</span>
1130
- <span class="cline-any cline-neutral">&nbsp;</span>
1131
- <span class="cline-any cline-no">&nbsp;</span>
1132
- <span class="cline-any cline-neutral">&nbsp;</span>
1133
- <span class="cline-any cline-neutral">&nbsp;</span>
1134
- <span class="cline-any cline-neutral">&nbsp;</span>
1135
- <span class="cline-any cline-neutral">&nbsp;</span>
1136
- <span class="cline-any cline-no">&nbsp;</span>
1137
- <span class="cline-any cline-neutral">&nbsp;</span>
1138
- <span class="cline-any cline-neutral">&nbsp;</span>
1139
- <span class="cline-any cline-neutral">&nbsp;</span>
1140
- <span class="cline-any cline-neutral">&nbsp;</span>
1141
- <span class="cline-any cline-neutral">&nbsp;</span>
1142
- <span class="cline-any cline-no">&nbsp;</span>
1143
- <span class="cline-any cline-neutral">&nbsp;</span>
1144
- <span class="cline-any cline-neutral">&nbsp;</span>
1145
- <span class="cline-any cline-neutral">&nbsp;</span>
1146
- <span class="cline-any cline-no">&nbsp;</span>
1147
- <span class="cline-any cline-neutral">&nbsp;</span>
1148
- <span class="cline-any cline-neutral">&nbsp;</span>
1149
- <span class="cline-any cline-neutral">&nbsp;</span>
1150
- <span class="cline-any cline-no">&nbsp;</span>
1151
- <span class="cline-any cline-neutral">&nbsp;</span>
1152
- <span class="cline-any cline-no">&nbsp;</span>
1153
- <span class="cline-any cline-no">&nbsp;</span>
1154
- <span class="cline-any cline-no">&nbsp;</span>
1155
- <span class="cline-any cline-no">&nbsp;</span>
1156
- <span class="cline-any cline-no">&nbsp;</span>
1157
- <span class="cline-any cline-no">&nbsp;</span>
1158
- <span class="cline-any cline-no">&nbsp;</span>
1159
- <span class="cline-any cline-neutral">&nbsp;</span>
1160
- <span class="cline-any cline-neutral">&nbsp;</span>
1161
- <span class="cline-any cline-neutral">&nbsp;</span>
1162
- <span class="cline-any cline-neutral">&nbsp;</span>
1163
- <span class="cline-any cline-no">&nbsp;</span>
1164
- <span class="cline-any cline-no">&nbsp;</span>
1165
- <span class="cline-any cline-no">&nbsp;</span>
1166
- <span class="cline-any cline-no">&nbsp;</span>
1167
- <span class="cline-any cline-neutral">&nbsp;</span>
1168
- <span class="cline-any cline-no">&nbsp;</span>
1169
- <span class="cline-any cline-neutral">&nbsp;</span>
1170
- <span class="cline-any cline-neutral">&nbsp;</span>
1171
- <span class="cline-any cline-neutral">&nbsp;</span>
1172
- <span class="cline-any cline-neutral">&nbsp;</span>
1173
- <span class="cline-any cline-neutral">&nbsp;</span>
1174
- <span class="cline-any cline-no">&nbsp;</span>
1175
- <span class="cline-any cline-neutral">&nbsp;</span>
1176
- <span class="cline-any cline-neutral">&nbsp;</span>
1177
- <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1182
- <span class="cline-any cline-no">&nbsp;</span>
1183
- <span class="cline-any cline-no">&nbsp;</span>
1184
- <span class="cline-any cline-neutral">&nbsp;</span>
1185
- <span class="cline-any cline-neutral">&nbsp;</span>
1186
- <span class="cline-any cline-no">&nbsp;</span>
1187
- <span class="cline-any cline-neutral">&nbsp;</span>
1188
- <span class="cline-any cline-neutral">&nbsp;</span>
1189
- <span class="cline-any cline-neutral">&nbsp;</span>
1190
- <span class="cline-any cline-neutral">&nbsp;</span>
1191
- <span class="cline-any cline-no">&nbsp;</span>
1192
- <span class="cline-any cline-no">&nbsp;</span>
1193
- <span class="cline-any cline-no">&nbsp;</span>
1194
- <span class="cline-any cline-neutral">&nbsp;</span>
1195
- <span class="cline-any cline-neutral">&nbsp;</span>
1196
- <span class="cline-any cline-no">&nbsp;</span>
1197
- <span class="cline-any cline-neutral">&nbsp;</span>
1198
- <span class="cline-any cline-neutral">&nbsp;</span>
1199
- <span class="cline-any cline-neutral">&nbsp;</span>
1200
- <span class="cline-any cline-neutral">&nbsp;</span>
1201
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1205
- <span class="cline-any cline-neutral">&nbsp;</span>
1206
- <span class="cline-any cline-neutral">&nbsp;</span>
1207
- <span class="cline-any cline-neutral">&nbsp;</span>
1208
- <span class="cline-any cline-neutral">&nbsp;</span>
1209
- <span class="cline-any cline-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-neutral">&nbsp;</span>
1213
- <span class="cline-any cline-neutral">&nbsp;</span>
1214
- <span class="cline-any cline-neutral">&nbsp;</span>
1215
- <span class="cline-any cline-no">&nbsp;</span>
1216
- <span class="cline-any cline-neutral">&nbsp;</span>
1217
- <span class="cline-any cline-neutral">&nbsp;</span>
1218
- <span class="cline-any cline-neutral">&nbsp;</span>
1219
- <span class="cline-any cline-neutral">&nbsp;</span>
1220
- <span class="cline-any cline-no">&nbsp;</span>
1221
- <span class="cline-any cline-neutral">&nbsp;</span>
1222
- <span class="cline-any cline-neutral">&nbsp;</span>
1223
- <span class="cline-any cline-neutral">&nbsp;</span>
1224
- <span class="cline-any cline-no">&nbsp;</span>
1225
- <span class="cline-any cline-neutral">&nbsp;</span>
1226
- <span class="cline-any cline-neutral">&nbsp;</span>
1227
- <span class="cline-any cline-neutral">&nbsp;</span>
1228
- <span class="cline-any cline-neutral">&nbsp;</span>
1229
- <span class="cline-any cline-no">&nbsp;</span>
1230
- <span class="cline-any cline-no">&nbsp;</span>
1231
- <span class="cline-any cline-no">&nbsp;</span>
1232
- <span class="cline-any cline-neutral">&nbsp;</span>
1233
- <span class="cline-any cline-neutral">&nbsp;</span>
1234
- <span class="cline-any cline-neutral">&nbsp;</span>
1235
- <span class="cline-any cline-no">&nbsp;</span>
1236
- <span class="cline-any cline-neutral">&nbsp;</span>
1237
- <span class="cline-any cline-neutral">&nbsp;</span>
1238
- <span class="cline-any cline-no">&nbsp;</span>
1239
- <span class="cline-any cline-neutral">&nbsp;</span>
1240
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1244
- <span class="cline-any cline-neutral">&nbsp;</span>
1245
- <span class="cline-any cline-no">&nbsp;</span>
1246
- <span class="cline-any cline-no">&nbsp;</span>
1247
- <span class="cline-any cline-neutral">&nbsp;</span>
1248
- <span class="cline-any cline-neutral">&nbsp;</span>
1249
- <span class="cline-any cline-no">&nbsp;</span>
1250
- <span class="cline-any cline-no">&nbsp;</span>
1251
- <span class="cline-any cline-neutral">&nbsp;</span>
1252
- <span class="cline-any cline-neutral">&nbsp;</span>
1253
- <span class="cline-any cline-neutral">&nbsp;</span>
1254
- <span class="cline-any cline-no">&nbsp;</span>
1255
- <span class="cline-any cline-no">&nbsp;</span>
1256
- <span class="cline-any cline-neutral">&nbsp;</span>
1257
- <span class="cline-any cline-no">&nbsp;</span>
1258
- <span class="cline-any cline-neutral">&nbsp;</span>
1259
- <span class="cline-any cline-neutral">&nbsp;</span>
1260
- <span class="cline-any cline-no">&nbsp;</span>
1261
- <span class="cline-any cline-neutral">&nbsp;</span>
1262
- <span class="cline-any cline-neutral">&nbsp;</span>
1263
- <span class="cline-any cline-neutral">&nbsp;</span>
1264
- <span class="cline-any cline-no">&nbsp;</span>
1265
- <span class="cline-any cline-neutral">&nbsp;</span>
1266
- <span class="cline-any cline-neutral">&nbsp;</span>
1267
- <span class="cline-any cline-no">&nbsp;</span>
1268
- <span class="cline-any cline-neutral">&nbsp;</span>
1269
- <span class="cline-any cline-no">&nbsp;</span>
1270
- <span class="cline-any cline-no">&nbsp;</span>
1271
- <span class="cline-any cline-no">&nbsp;</span>
1272
- <span class="cline-any cline-no">&nbsp;</span>
1273
- <span class="cline-any cline-no">&nbsp;</span>
1274
- <span class="cline-any cline-neutral">&nbsp;</span>
1275
- <span class="cline-any cline-no">&nbsp;</span>
1276
- <span class="cline-any cline-no">&nbsp;</span>
1277
- <span class="cline-any cline-neutral">&nbsp;</span>
1278
- <span class="cline-any cline-no">&nbsp;</span>
1279
- <span class="cline-any cline-neutral">&nbsp;</span>
1280
- <span class="cline-any cline-neutral">&nbsp;</span>
1281
- <span class="cline-any cline-neutral">&nbsp;</span>
1282
- <span class="cline-any cline-neutral">&nbsp;</span>
1283
- <span class="cline-any cline-no">&nbsp;</span>
1284
- <span class="cline-any cline-neutral">&nbsp;</span>
1285
- <span class="cline-any cline-neutral">&nbsp;</span>
1286
- <span class="cline-any cline-neutral">&nbsp;</span>
1287
- <span class="cline-any cline-neutral">&nbsp;</span>
1288
- <span class="cline-any cline-neutral">&nbsp;</span>
1289
- <span class="cline-any cline-neutral">&nbsp;</span>
1290
- <span class="cline-any cline-neutral">&nbsp;</span>
1291
- <span class="cline-any cline-neutral">&nbsp;</span>
1292
- <span class="cline-any cline-no">&nbsp;</span>
1293
- <span class="cline-any cline-neutral">&nbsp;</span>
1294
- <span class="cline-any cline-neutral">&nbsp;</span>
1295
- <span class="cline-any cline-neutral">&nbsp;</span>
1296
- <span class="cline-any cline-neutral">&nbsp;</span>
1297
- <span class="cline-any cline-no">&nbsp;</span>
1298
- <span class="cline-any cline-no">&nbsp;</span>
1299
- <span class="cline-any cline-neutral">&nbsp;</span>
1300
- <span class="cline-any cline-neutral">&nbsp;</span>
1301
- <span class="cline-any cline-neutral">&nbsp;</span>
1302
- <span class="cline-any cline-neutral">&nbsp;</span>
1303
- <span class="cline-any cline-no">&nbsp;</span>
1304
- <span class="cline-any cline-neutral">&nbsp;</span>
1305
- <span class="cline-any cline-neutral">&nbsp;</span>
1306
- <span class="cline-any cline-neutral">&nbsp;</span>
1307
- <span class="cline-any cline-neutral">&nbsp;</span>
1308
- <span class="cline-any cline-no">&nbsp;</span>
1309
- <span class="cline-any cline-no">&nbsp;</span>
1310
- <span class="cline-any cline-no">&nbsp;</span>
1311
- <span class="cline-any cline-no">&nbsp;</span>
1312
- <span class="cline-any cline-neutral">&nbsp;</span>
1313
- <span class="cline-any cline-neutral">&nbsp;</span>
1314
- <span class="cline-any cline-neutral">&nbsp;</span>
1315
- <span class="cline-any cline-neutral">&nbsp;</span>
1316
- <span class="cline-any cline-neutral">&nbsp;</span>
1317
- <span class="cline-any cline-neutral">&nbsp;</span>
1318
- <span class="cline-any cline-neutral">&nbsp;</span>
1319
- <span class="cline-any cline-no">&nbsp;</span>
1320
- <span class="cline-any cline-neutral">&nbsp;</span>
1321
- <span class="cline-any cline-no">&nbsp;</span>
1322
- <span class="cline-any cline-neutral">&nbsp;</span>
1323
- <span class="cline-any cline-no">&nbsp;</span>
1324
- <span class="cline-any cline-no">&nbsp;</span>
1325
- <span class="cline-any cline-no">&nbsp;</span>
1326
- <span class="cline-any cline-no">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
- <span class="cline-any cline-neutral">&nbsp;</span>
1332
- <span class="cline-any cline-neutral">&nbsp;</span>
1333
- <span class="cline-any cline-neutral">&nbsp;</span>
1334
- <span class="cline-any cline-neutral">&nbsp;</span>
1335
- <span class="cline-any cline-neutral">&nbsp;</span>
1336
- <span class="cline-any cline-no">&nbsp;</span>
1337
- <span class="cline-any cline-neutral">&nbsp;</span>
1338
- <span class="cline-any cline-no">&nbsp;</span>
1339
- <span class="cline-any cline-neutral">&nbsp;</span>
1340
- <span class="cline-any cline-no">&nbsp;</span>
1341
- <span class="cline-any cline-no">&nbsp;</span>
1342
- <span class="cline-any cline-no">&nbsp;</span>
1343
- <span class="cline-any cline-no">&nbsp;</span>
1344
- <span class="cline-any cline-neutral">&nbsp;</span>
1345
- <span class="cline-any cline-neutral">&nbsp;</span>
1346
- <span class="cline-any cline-neutral">&nbsp;</span>
1347
- <span class="cline-any cline-no">&nbsp;</span>
1348
- <span class="cline-any cline-neutral">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
- <span class="cline-any cline-neutral">&nbsp;</span>
1351
- <span class="cline-any cline-no">&nbsp;</span>
1352
- <span class="cline-any cline-no">&nbsp;</span>
1353
- <span class="cline-any cline-neutral">&nbsp;</span>
1354
- <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
- <span class="cline-any cline-neutral">&nbsp;</span>
1357
- <span class="cline-any cline-neutral">&nbsp;</span>
1358
- <span class="cline-any cline-neutral">&nbsp;</span>
1359
- <span class="cline-any cline-no">&nbsp;</span>
1360
- <span class="cline-any cline-no">&nbsp;</span>
1361
- <span class="cline-any cline-no">&nbsp;</span>
1362
- <span class="cline-any cline-neutral">&nbsp;</span>
1363
- <span class="cline-any cline-neutral">&nbsp;</span>
1364
- <span class="cline-any cline-no">&nbsp;</span>
1365
- <span class="cline-any cline-neutral">&nbsp;</span>
1366
- <span class="cline-any cline-neutral">&nbsp;</span>
1367
- <span class="cline-any cline-neutral">&nbsp;</span>
1368
- <span class="cline-any cline-neutral">&nbsp;</span>
1369
- <span class="cline-any cline-no">&nbsp;</span>
1370
- <span class="cline-any cline-neutral">&nbsp;</span>
1371
- <span class="cline-any cline-neutral">&nbsp;</span>
1372
- <span class="cline-any cline-no">&nbsp;</span>
1373
- <span class="cline-any cline-neutral">&nbsp;</span>
1374
- <span class="cline-any cline-neutral">&nbsp;</span>
1375
- <span class="cline-any cline-neutral">&nbsp;</span>
1376
- <span class="cline-any cline-no">&nbsp;</span>
1377
- <span class="cline-any cline-no">&nbsp;</span>
1378
- <span class="cline-any cline-neutral">&nbsp;</span>
1379
- <span class="cline-any cline-neutral">&nbsp;</span>
1380
- <span class="cline-any cline-no">&nbsp;</span>
1381
- <span class="cline-any cline-neutral">&nbsp;</span>
1382
- <span class="cline-any cline-neutral">&nbsp;</span>
1383
- <span class="cline-any cline-neutral">&nbsp;</span>
1384
- <span class="cline-any cline-neutral">&nbsp;</span>
1385
- <span class="cline-any cline-neutral">&nbsp;</span>
1386
- <span class="cline-any cline-neutral">&nbsp;</span>
1387
- <span class="cline-any cline-neutral">&nbsp;</span>
1388
- <span class="cline-any cline-neutral">&nbsp;</span>
1389
- <span class="cline-any cline-neutral">&nbsp;</span>
1390
- <span class="cline-any cline-neutral">&nbsp;</span>
1391
- <span class="cline-any cline-neutral">&nbsp;</span>
1392
- <span class="cline-any cline-neutral">&nbsp;</span>
1393
- <span class="cline-any cline-neutral">&nbsp;</span>
1394
- <span class="cline-any cline-neutral">&nbsp;</span>
1395
- <span class="cline-any cline-neutral">&nbsp;</span>
1396
- <span class="cline-any cline-neutral">&nbsp;</span>
1397
- <span class="cline-any cline-no">&nbsp;</span>
1398
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1403
- <span class="cline-any cline-neutral">&nbsp;</span>
1404
- <span class="cline-any cline-no">&nbsp;</span>
1405
- <span class="cline-any cline-neutral">&nbsp;</span>
1406
- <span class="cline-any cline-no">&nbsp;</span>
1407
- <span class="cline-any cline-neutral">&nbsp;</span>
1408
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1412
- <span class="cline-any cline-neutral">&nbsp;</span>
1413
- <span class="cline-any cline-neutral">&nbsp;</span>
1414
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1423
- <span class="cline-any cline-neutral">&nbsp;</span>
1424
- <span class="cline-any cline-neutral">&nbsp;</span>
1425
- <span class="cline-any cline-neutral">&nbsp;</span>
1426
- <span class="cline-any cline-neutral">&nbsp;</span>
1427
- <span class="cline-any cline-neutral">&nbsp;</span>
1428
- <span class="cline-any cline-neutral">&nbsp;</span>
1429
- <span class="cline-any cline-neutral">&nbsp;</span>
1430
- <span class="cline-any cline-neutral">&nbsp;</span>
1431
- <span class="cline-any cline-neutral">&nbsp;</span>
1432
- <span class="cline-any cline-neutral">&nbsp;</span>
1433
- <span class="cline-any cline-neutral">&nbsp;</span>
1434
- <span class="cline-any cline-neutral">&nbsp;</span>
1435
- <span class="cline-any cline-neutral">&nbsp;</span>
1436
- <span class="cline-any cline-no">&nbsp;</span>
1437
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1446
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1451
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1456
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1460
- <span class="cline-any cline-no">&nbsp;</span>
1461
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1468
- <span class="cline-any cline-no">&nbsp;</span>
1469
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1473
- <span class="cline-any cline-neutral">&nbsp;</span>
1474
- <span class="cline-any cline-no">&nbsp;</span>
1475
- <span class="cline-any cline-neutral">&nbsp;</span>
1476
- <span class="cline-any cline-no">&nbsp;</span>
1477
- <span class="cline-any cline-neutral">&nbsp;</span>
1478
- <span class="cline-any cline-neutral">&nbsp;</span>
1479
- <span class="cline-any cline-no">&nbsp;</span>
1480
- <span class="cline-any cline-no">&nbsp;</span>
1481
- <span class="cline-any cline-neutral">&nbsp;</span>
1482
- <span class="cline-any cline-neutral">&nbsp;</span>
1483
- <span class="cline-any cline-neutral">&nbsp;</span>
1484
- <span class="cline-any cline-neutral">&nbsp;</span>
1485
- <span class="cline-any cline-no">&nbsp;</span>
1486
- <span class="cline-any cline-no">&nbsp;</span>
1487
- <span class="cline-any cline-no">&nbsp;</span>
1488
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1493
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1499
- <span class="cline-any cline-neutral">&nbsp;</span>
1500
- <span class="cline-any cline-neutral">&nbsp;</span>
1501
- <span class="cline-any cline-neutral">&nbsp;</span>
1502
- <span class="cline-any cline-neutral">&nbsp;</span>
1503
- <span class="cline-any cline-neutral">&nbsp;</span>
1504
- <span class="cline-any cline-neutral">&nbsp;</span>
1505
- <span class="cline-any cline-neutral">&nbsp;</span>
1506
- <span class="cline-any cline-neutral">&nbsp;</span>
1507
- <span class="cline-any cline-neutral">&nbsp;</span>
1508
- <span class="cline-any cline-neutral">&nbsp;</span>
1509
- <span class="cline-any cline-neutral">&nbsp;</span>
1510
- <span class="cline-any cline-no">&nbsp;</span>
1511
- <span class="cline-any cline-neutral">&nbsp;</span>
1512
- <span class="cline-any cline-neutral">&nbsp;</span>
1513
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1517
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1525
- <span class="cline-any cline-neutral">&nbsp;</span>
1526
- <span class="cline-any cline-neutral">&nbsp;</span>
1527
- <span class="cline-any cline-neutral">&nbsp;</span>
1528
- <span class="cline-any cline-neutral">&nbsp;</span>
1529
- <span class="cline-any cline-no">&nbsp;</span>
1530
- <span class="cline-any cline-neutral">&nbsp;</span>
1531
- <span class="cline-any cline-neutral">&nbsp;</span>
1532
- <span class="cline-any cline-neutral">&nbsp;</span>
1533
- <span class="cline-any cline-neutral">&nbsp;</span>
1534
- <span class="cline-any cline-neutral">&nbsp;</span>
1535
- <span class="cline-any cline-neutral">&nbsp;</span>
1536
- <span class="cline-any cline-neutral">&nbsp;</span>
1537
- <span class="cline-any cline-neutral">&nbsp;</span>
1538
- <span class="cline-any cline-no">&nbsp;</span>
1539
- <span class="cline-any cline-no">&nbsp;</span>
1540
- <span class="cline-any cline-neutral">&nbsp;</span>
1541
- <span class="cline-any cline-no">&nbsp;</span>
1542
- <span class="cline-any cline-neutral">&nbsp;</span>
1543
- <span class="cline-any cline-neutral">&nbsp;</span>
1544
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1558
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1562
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1566
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1579
- <span class="cline-any cline-neutral">&nbsp;</span>
1580
- <span class="cline-any cline-neutral">&nbsp;</span>
1581
- <span class="cline-any cline-neutral">&nbsp;</span>
1582
- <span class="cline-any cline-neutral">&nbsp;</span>
1583
- <span class="cline-any cline-no">&nbsp;</span>
1584
- <span class="cline-any cline-neutral">&nbsp;</span>
1585
- <span class="cline-any cline-no">&nbsp;</span>
1586
- <span class="cline-any cline-no">&nbsp;</span>
1587
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1596
- <span class="cline-any cline-neutral">&nbsp;</span>
1597
- <span class="cline-any cline-neutral">&nbsp;</span>
1598
- <span class="cline-any cline-neutral">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-no">&nbsp;</span>
1601
- <span class="cline-any cline-no">&nbsp;</span>
1602
- <span class="cline-any cline-no">&nbsp;</span>
1603
- <span class="cline-any cline-neutral">&nbsp;</span>
1604
- <span class="cline-any cline-no">&nbsp;</span>
1605
- <span class="cline-any cline-no">&nbsp;</span>
1606
- <span class="cline-any cline-no">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&nbsp;</span>
1609
- <span class="cline-any cline-neutral">&nbsp;</span>
1610
- <span class="cline-any cline-neutral">&nbsp;</span>
1611
- <span class="cline-any cline-no">&nbsp;</span>
1612
- <span class="cline-any cline-no">&nbsp;</span>
1613
- <span class="cline-any cline-neutral">&nbsp;</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-neutral">&nbsp;</span>
1617
- <span class="cline-any cline-no">&nbsp;</span>
1618
- <span class="cline-any cline-no">&nbsp;</span>
1619
- <span class="cline-any cline-no">&nbsp;</span>
1620
- <span class="cline-any cline-neutral">&nbsp;</span>
1621
- <span class="cline-any cline-no">&nbsp;</span>
1622
- <span class="cline-any cline-no">&nbsp;</span>
1623
- <span class="cline-any cline-no">&nbsp;</span>
1624
- <span class="cline-any cline-neutral">&nbsp;</span>
1625
- <span class="cline-any cline-neutral">&nbsp;</span>
1626
- <span class="cline-any cline-neutral">&nbsp;</span>
1627
- <span class="cline-any cline-neutral">&nbsp;</span>
1628
- <span class="cline-any cline-neutral">&nbsp;</span>
1629
- <span class="cline-any cline-neutral">&nbsp;</span>
1630
- <span class="cline-any cline-neutral">&nbsp;</span>
1631
- <span class="cline-any cline-neutral">&nbsp;</span>
1632
- <span class="cline-any cline-neutral">&nbsp;</span>
1633
- <span class="cline-any cline-neutral">&nbsp;</span>
1634
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1643
- <span class="cline-any cline-neutral">&nbsp;</span>
1644
- <span class="cline-any cline-neutral">&nbsp;</span>
1645
- <span class="cline-any cline-no">&nbsp;</span>
1646
- <span class="cline-any cline-neutral">&nbsp;</span>
1647
- <span class="cline-any cline-neutral">&nbsp;</span>
1648
- <span class="cline-any cline-neutral">&nbsp;</span>
1649
- <span class="cline-any cline-neutral">&nbsp;</span>
1650
- <span class="cline-any cline-neutral">&nbsp;</span>
1651
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1655
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1663
- <span class="cline-any cline-neutral">&nbsp;</span>
1664
- <span class="cline-any cline-neutral">&nbsp;</span>
1665
- <span class="cline-any cline-neutral">&nbsp;</span>
1666
- <span class="cline-any cline-no">&nbsp;</span>
1667
- <span class="cline-any cline-neutral">&nbsp;</span>
1668
- <span class="cline-any cline-neutral">&nbsp;</span>
1669
- <span class="cline-any cline-neutral">&nbsp;</span>
1670
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1674
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1681
- <span class="cline-any cline-neutral">&nbsp;</span>
1682
- <span class="cline-any cline-neutral">&nbsp;</span>
1683
- <span class="cline-any cline-neutral">&nbsp;</span>
1684
- <span class="cline-any cline-neutral">&nbsp;</span>
1685
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1690
- <span class="cline-any cline-neutral">&nbsp;</span>
1691
- <span class="cline-any cline-neutral">&nbsp;</span>
1692
- <span class="cline-any cline-neutral">&nbsp;</span>
1693
- <span class="cline-any cline-neutral">&nbsp;</span>
1694
- <span class="cline-any cline-neutral">&nbsp;</span>
1695
- <span class="cline-any cline-neutral">&nbsp;</span>
1696
- <span class="cline-any cline-neutral">&nbsp;</span>
1697
- <span class="cline-any cline-neutral">&nbsp;</span>
1698
- <span class="cline-any cline-neutral">&nbsp;</span>
1699
- <span class="cline-any cline-neutral">&nbsp;</span>
1700
- <span class="cline-any cline-neutral">&nbsp;</span>
1701
- <span class="cline-any cline-neutral">&nbsp;</span>
1702
- <span class="cline-any cline-neutral">&nbsp;</span>
1703
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1712
- <span class="cline-any cline-neutral">&nbsp;</span>
1713
- <span class="cline-any cline-neutral">&nbsp;</span>
1714
- <span class="cline-any cline-neutral">&nbsp;</span>
1715
- <span class="cline-any cline-neutral">&nbsp;</span>
1716
- <span class="cline-any cline-neutral">&nbsp;</span>
1717
- <span class="cline-any cline-neutral">&nbsp;</span>
1718
- <span class="cline-any cline-neutral">&nbsp;</span>
1719
- <span class="cline-any cline-neutral">&nbsp;</span>
1720
- <span class="cline-any cline-no">&nbsp;</span>
1721
- <span class="cline-any cline-neutral">&nbsp;</span>
1722
- <span class="cline-any cline-neutral">&nbsp;</span>
1723
- <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
1729
- <span class="cline-any cline-neutral">&nbsp;</span>
1730
- <span class="cline-any cline-no">&nbsp;</span>
1731
- <span class="cline-any cline-neutral">&nbsp;</span>
1732
- <span class="cline-any cline-neutral">&nbsp;</span>
1733
- <span class="cline-any cline-yes">1x</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-neutral">&nbsp;</span>
1741
- <span class="cline-any cline-no">&nbsp;</span>
1742
- <span class="cline-any cline-neutral">&nbsp;</span>
1743
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1747
- <span class="cline-any cline-no">&nbsp;</span>
1748
- <span class="cline-any cline-no">&nbsp;</span>
1749
- <span class="cline-any cline-neutral">&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-neutral">&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-neutral">&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-neutral">&nbsp;</span>
1760
- <span class="cline-any cline-neutral">&nbsp;</span>
1761
- <span class="cline-any cline-yes">1x</span>
1762
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1766
- <span class="cline-any cline-no">&nbsp;</span>
1767
- <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
1774
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable global-require */
1775
- /* eslint-disable @typescript-eslint/no-use-before-define */
1776
- import * as babel from '@babel/core';
1777
- import * as babelTypes from '@babel/types';
1778
- import generate from '@babel/generator';
1779
- import * as naslTypes from '../concepts';
1780
- import { traverse } from '../utils';
1781
- &nbsp;
1782
- const debug = false;
1783
- &nbsp;
1784
- export function <span class="fstat-no" title="function not covered" >tryParseTS(</span>tsCode: string) {
1785
- <span class="cstat-no" title="statement not covered" > try {</span>
1786
- const root = <span class="cstat-no" title="statement not covered" >babel.parseSync(tsCode, {</span>
1787
- filename: 'result.ts',
1788
- presets: [require('@babel/preset-typescript')],
1789
- }) as babelTypes.File;
1790
- // console.log((root as any).program.body[0].body.body.map((item) =&gt; item.trailingComments));
1791
- <span class="cstat-no" title="statement not covered" > return root;</span>
1792
- } catch (e) {
1793
- <span class="cstat-no" title="statement not covered" > return null;</span>
1794
- }
1795
- }
1796
- &nbsp;
1797
- function <span class="fstat-no" title="function not covered" >flatMemberExpression(</span>node: babelTypes.Node): Array&lt;babelTypes.Node&gt; {
1798
- <span class="cstat-no" title="statement not covered" > if (node.type === 'MemberExpression')</span>
1799
- <span class="cstat-no" title="statement not covered" > return [...flatMemberExpression(node.object), node.property];</span>
1800
- <span class="cstat-no" title="statement not covered" > return [node];</span>
1801
- }
1802
- function <span class="fstat-no" title="function not covered" >flatMatchPatternsExpression(</span>node: any): Array&lt;babelTypes.Node&gt; {
1803
- <span class="cstat-no" title="statement not covered" > if (node.concept === 'BinaryExpression') {</span>
1804
- <span class="cstat-no" title="statement not covered" > if (node.operator === '||') {</span>
1805
- <span class="cstat-no" title="statement not covered" > return [...flatMatchPatternsExpression(node.left), ...flatMatchPatternsExpression(node.right)];</span>
1806
- }
1807
- <span class="cstat-no" title="statement not covered" > if (node.operator === '==') {</span>
1808
- <span class="cstat-no" title="statement not covered" > return [node.right];</span>
1809
- }
1810
- <span class="cstat-no" title="statement not covered" > return [node];</span>
1811
- }
1812
- <span class="cstat-no" title="statement not covered" > return [node];</span>
1813
- }
1814
- &nbsp;
1815
- function <span class="fstat-no" title="function not covered" >flatIfStatement(</span>node: any): Array&lt;babelTypes.Node&gt; {
1816
- <span class="cstat-no" title="statement not covered" > if (node.alternate.type === 'IfStatement') {</span>
1817
- <span class="cstat-no" title="statement not covered" > return [...flatIfStatement(node.alternate), node];</span>
1818
- }
1819
- <span class="cstat-no" title="statement not covered" > return [node];</span>
1820
- }
1821
- &nbsp;
1822
- /**
1823
- * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
1824
- * @param node
1825
- * @returns
1826
- */
1827
- function <span class="fstat-no" title="function not covered" >fixLogicNode(</span>node: babelTypes.Node): void {
1828
- <span class="cstat-no" title="statement not covered" > if (node?.type === 'CallExpression') {</span>
1829
- const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
1830
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.ForEach') {</span>
1831
- const callee = <span class="cstat-no" title="statement not covered" >flatMemberExpression(node.callee);</span>
1832
- <span class="cstat-no" title="statement not covered" > node.callee = callee[2] as babelTypes.Identifier;</span>
1833
- }
1834
- }
1835
- }
1836
- &nbsp;
1837
- &nbsp;
1838
- export function <span class="fstat-no" title="function not covered" >transformTSCode(</span>tsCode: string, contextLogicName: string, type?: string) {
1839
- const logic = <span class="cstat-no" title="statement not covered" >new naslTypes.Logic();</span>
1840
- <span class="cstat-no" title="statement not covered" > logic.body = [];</span>
1841
- &nbsp;
1842
- function <span class="fstat-no" title="function not covered" >transformTypeAnnotation(</span>node: babelTypes.TSType): naslTypes.TypeAnnotation {
1843
- <span class="cstat-no" title="statement not covered" > if (node.type === 'TSTypeReference') {</span>
1844
- const typeName = (<span class="cstat-no" title="statement not covered" >node.typeName as babelTypes.Identifier).name;</span>
1845
- const primitiveType = <span class="cstat-no" title="statement not covered" >naslTypes.primitiveTypeList.find(<span class="fstat-no" title="function not covered" >(t</span>a) =&gt; <span class="cstat-no" title="statement not covered" >ta.typeName === typeName)</span>;</span>
1846
- <span class="cstat-no" title="statement not covered" > if ((node as any)?.typeNamespace) {</span>
1847
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createReference(typeName, {</span>
1848
- typeNamespace: (node as any).typeNamespace,
1849
- });
1850
- }
1851
- <span class="cstat-no" title="statement not covered" > if (typeName === 'Integer') {</span>
1852
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Long');</span>
1853
- }
1854
- <span class="cstat-no" title="statement not covered" > if (primitiveType) {</span>
1855
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive(typeName);</span>
1856
- }
1857
- <span class="cstat-no" title="statement not covered" > if (['List', 'Map', 'Current'].includes(typeName) &amp;&amp; node.typeParameters) {</span>
1858
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createGeneric(typeName, {</span>
1859
- typeArguments: node.typeParameters.params.map(transformTypeAnnotation),
1860
- });
1861
- }
1862
- <span class="cstat-no" title="statement not covered" > if (!node.typeParameters) {</span>
1863
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createReference(typeName, {</span>
1864
- typeNamespace: 'app.dataSources.defaultDS',
1865
- });
1866
- }
1867
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
1868
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
1869
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
1870
- }
1871
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSTypeLiteral') {</span>
1872
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createTypeAnonymousStructure(node.members.map(<span class="fstat-no" title="function not covered" >(m</span>ember: babelTypes.TSPropertySignature) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.StructureProperty({</span></span>
1873
- name: (member.key as babelTypes.Identifier).name,
1874
- typeAnnotation: transformTypeAnnotation(member.typeAnnotation.typeAnnotation),
1875
- })));
1876
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSBooleanKeyword') {</span>
1877
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Boolean');</span>
1878
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSStringKeyword') {</span>
1879
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('String');</span>
1880
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSNumberKeyword') {</span>
1881
- <span class="cstat-no" title="statement not covered" > return naslTypes.TypeAnnotation.createPrimitive('Double');</span>
1882
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TSUnionType') {</span>
1883
- const union = <span class="cstat-no" title="statement not covered" >naslTypes.TypeAnnotation.createPrimitive('Union');</span>
1884
- <span class="cstat-no" title="statement not covered" > union.typeArguments = [];</span>
1885
- <span class="cstat-no" title="statement not covered" > node.types.forEach(<span class="fstat-no" title="function not covered" >(c</span>urType) =&gt; {</span>
1886
- <span class="cstat-no" title="statement not covered" > union.typeArguments.push(transformTypeAnnotation(curType));</span>
1887
- });
1888
- <span class="cstat-no" title="statement not covered" > return union;</span>
1889
- } else {
1890
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
1891
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
1892
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
1893
- }
1894
- }
1895
- }
1896
- function <span class="fstat-no" title="function not covered" >transformParam(</span>node: babelTypes.Identifier): naslTypes.Param {
1897
- const typeAnnotation = (<span class="cstat-no" title="statement not covered" >node.typeAnnotation as babelTypes.TSTypeAnnotation)?.typeAnnotation;</span>
1898
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Param({</span>
1899
- name: node.name,
1900
- typeAnnotation: typeAnnotation ? transformTypeAnnotation(typeAnnotation) : null,
1901
- });
1902
- }
1903
- function <span class="fstat-no" title="function not covered" >pushElseIf(</span>ifNode: babelTypes.IfStatement, switchStatement: naslTypes.SwitchStatement) {
1904
- <span class="cstat-no" title="statement not covered" > switchStatement.cases.push(new naslTypes.SwitchCase({</span>
1905
- test: transformLogicNode(ifNode.test),
1906
- consequent: !ifNode.consequent ? [] : (ifNode.consequent as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
1907
- }));
1908
- <span class="cstat-no" title="statement not covered" > if (ifNode.alternate &amp;&amp; ifNode.alternate.type === 'IfStatement') {</span>
1909
- <span class="cstat-no" title="statement not covered" > pushElseIf(ifNode.alternate, switchStatement);</span>
1910
- } else {
1911
- <span class="cstat-no" title="statement not covered" > switchStatement.cases.push(new naslTypes.SwitchCase({</span>
1912
- test: undefined,
1913
- consequent: !ifNode?.alternate ? [] : (ifNode?.alternate as babelTypes.BlockStatement)?.body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
1914
- }));
1915
- }
1916
- }
1917
- &nbsp;
1918
- function <span class="fstat-no" title="function not covered" >handleBinaryExpression(</span>calleeName: String, argument: any) {
1919
- const map: Record&lt;'plus' | 'minus' | 'multiply' | 'divide' | 'remainder', '+' | '-' | '*' | '/' | '%'&gt; = <span class="cstat-no" title="statement not covered" >{</span>
1920
- plus: '+',
1921
- minus: '-',
1922
- multiply: '*',
1923
- divide: '/',
1924
- remainder: '%',
1925
- };
1926
- <span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
1927
- operator: map?.[calleeName as keyof typeof map],
1928
- left: transformLogicNode(argument?.[0]),
1929
- right: transformLogicNode(argument?.[1]),
1930
- });
1931
- }
1932
- &nbsp;
1933
- function <span class="fstat-no" title="function not covered" >handleNewExpression(</span>calleeName: String, node: any) {
1934
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'NewList') {</span>
1935
- <span class="cstat-no" title="statement not covered" > return new naslTypes.NewList({</span>
1936
- typeAnnotation: naslTypes.TypeAnnotation.createGeneric('List', {
1937
- typeArguments: node?.typeParameters?.params.map(transformTypeAnnotation),
1938
- }),
1939
- items: node?.arguments?.[0]?.elements?.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(arg))</span>,
1940
- });
1941
- }
1942
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'NewMap') {</span>
1943
- const keys: any = <span class="cstat-no" title="statement not covered" >[];</span>
1944
- const values: any = <span class="cstat-no" title="statement not covered" >[];</span>
1945
- <span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; {</span>
1946
- <span class="cstat-no" title="statement not covered" > keys.push(transformLogicNode(arg.key));</span>
1947
- <span class="cstat-no" title="statement not covered" > values.push(transformLogicNode(arg.value));</span>
1948
- });
1949
- <span class="cstat-no" title="statement not covered" > return new naslTypes.NewMap({</span>
1950
- typeAnnotation: naslTypes.TypeAnnotation.createGeneric('Map', {
1951
- typeArguments: node?.typeParameters?.params.map(transformTypeAnnotation),
1952
- }),
1953
- keys,
1954
- values,
1955
- });
1956
- }
1957
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'NewEntity') {</span>
1958
- const properties: any = <span class="cstat-no" title="statement not covered" >[];</span>
1959
- const rights: any = <span class="cstat-no" title="statement not covered" >[];</span>
1960
- <span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; {</span>
1961
- <span class="cstat-no" title="statement not covered" > properties.push(transformLogicNode(arg.key));</span>
1962
- <span class="cstat-no" title="statement not covered" > rights.push(new naslTypes.SelectMembers({</span>
1963
- expression: transformLogicNode(arg.value)
1964
- }));
1965
- });
1966
- const typeName = <span class="cstat-no" title="statement not covered" >node?.typeParameters?.params?.[0]?.typeName?.name;</span>
1967
- <span class="cstat-no" title="statement not covered" > return new naslTypes.NewComposite({</span>
1968
- typeAnnotation: naslTypes.TypeAnnotation.createReference(typeName, {
1969
- typeNamespace: 'app.dataSources.defaultDS.entities',
1970
- typeName
1971
- }),
1972
- properties,
1973
- rights,
1974
- });
1975
- }
1976
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'NewAnonymityStructure') {</span>
1977
- const properties: any = <span class="cstat-no" title="statement not covered" >[];</span>
1978
- const rights: any = <span class="cstat-no" title="statement not covered" >[];</span>
1979
- const structureProperties: any = <span class="cstat-no" title="statement not covered" >[];</span>
1980
- <span class="cstat-no" title="statement not covered" > node?.arguments?.[0]?.properties?.forEach(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; {</span>
1981
- <span class="cstat-no" title="statement not covered" > properties.push(transformLogicNode(arg.key));</span>
1982
- <span class="cstat-no" title="statement not covered" > rights.push(new naslTypes.SelectMembers({</span>
1983
- expression: transformLogicNode(arg.value)
1984
- }));
1985
- <span class="cstat-no" title="statement not covered" > structureProperties.push(new naslTypes.StructureProperty({</span>
1986
- name: arg?.key?.name,
1987
- typeAnnotation: null
1988
- }));
1989
- });
1990
- <span class="cstat-no" title="statement not covered" > return new naslTypes.NewComposite({</span>
1991
- typeAnnotation: naslTypes.TypeAnnotation.createTypeAnonymousStructure(structureProperties),
1992
- properties,
1993
- rights,
1994
- });
1995
- }
1996
- <span class="cstat-no" title="statement not covered" > return node;</span>
1997
- }
1998
- &nbsp;
1999
- function <span class="fstat-no" title="function not covered" >isPageLogic(</span>logicName: string) {
2000
- <span class="cstat-no" title="statement not covered" > return logicName.includes('on_') || logicName.includes('viewLogic_')</span>
2001
- }
2002
- &nbsp;
2003
- function <span class="fstat-no" title="function not covered" >transformLogicNode(</span>node: babelTypes.Node, typeAnnotation?: naslTypes.TypeAnnotation): naslTypes.LogicItem {
2004
- <span class="cstat-no" title="statement not covered" > fixLogicNode(node);</span>
2005
- // console.log('lemon ~~~ node--1:', node);
2006
- <span class="cstat-no" title="statement not covered" > if (node.type === 'VariableDeclaration') { // 拆成局部变量和赋值</span>
2007
- const declList = <span class="cstat-no" title="statement not covered" >node?.declarations || [];</span>
2008
- <span class="cstat-no" title="statement not covered" > declList?.forEach(<span class="fstat-no" title="function not covered" >(d</span>ecl) =&gt; {</span>
2009
- const variableName = (<span class="cstat-no" title="statement not covered" >decl.id as babelTypes.Identifier).name;</span>
2010
- <span class="cstat-no" title="statement not covered" > if (!logic.variables.find(<span class="fstat-no" title="function not covered" >(v</span>ariable) =&gt; <span class="cstat-no" title="statement not covered" >variable.name === variableName)</span>) {</span>
2011
- const varTypeAnnotation = ((<span class="cstat-no" title="statement not covered" >decl.id as babelTypes.Identifier).typeAnnotation as babelTypes.TSTypeAnnotation)?.typeAnnotation;</span>
2012
- <span class="cstat-no" title="statement not covered" > logic.variables.push(new naslTypes.Variable({</span>
2013
- name: variableName,
2014
- typeAnnotation: varTypeAnnotation &amp;&amp; transformTypeAnnotation(varTypeAnnotation),
2015
- }));
2016
- }
2017
- <span class="cstat-no" title="statement not covered" > if (decl.init) {</span>
2018
- <span class="cstat-no" title="statement not covered" > if (decl.init.type !== 'ArrayExpression' &amp;&amp; decl.init.type !== 'ObjectExpression') {</span>
2019
- <span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
2020
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(decl.init);</span>
2021
- }
2022
- const item = <span class="cstat-no" title="statement not covered" >new naslTypes.Assignment({</span>
2023
- left: new naslTypes.Identifier({
2024
- name: variableName,
2025
- }),
2026
- right: transformLogicNode(decl.init),
2027
- });
2028
- <span class="cstat-no" title="statement not covered" > item &amp;&amp; logic.body.push(item);</span>
2029
- }
2030
- }
2031
- });
2032
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'CallExpression') {</span>
2033
- const callee = <span class="cstat-no" title="statement not covered" >flatMemberExpression(node.callee);</span>
2034
- const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
2035
- // console.log('lemon ~~~ node--2', node, callee, calleeName);
2036
- <span class="cstat-no" title="statement not covered" > if (/^\$refs\./.test(calleeName)) {</span>
2037
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2038
- calleeNamespace: `elements.${(callee[1] as babelTypes.Identifier).name}.logics`,
2039
- calleeName: (callee[2] as babelTypes.Identifier).name,
2040
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2041
- expression: transformLogicNode(arg),
2042
- })) as naslTypes.Argument[],
2043
- });
2044
- }
2045
- <span class="cstat-no" title="statement not covered" > if (callee.length === 2 &amp;&amp; callee[0].type === 'Identifier' &amp;&amp; callee[0].name.endsWith('Entity')) {</span>
2046
- const entityName = <span class="cstat-no" title="statement not covered" >callee[0].name.replace(/Entity$/, '');</span>
2047
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2048
- calleeNamespace: `app.dataSources.defaultDS.entities.${entityName}.logics`,
2049
- calleeName: (callee[1] as babelTypes.Identifier).name,
2050
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2051
- expression: transformLogicNode(arg),
2052
- })) as naslTypes.Argument[],
2053
- });
2054
- }
2055
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.oql.query') {</span>
2056
- <span class="cstat-no" title="statement not covered" > if (!isPageLogic(contextLogicName)) {</span>
2057
- <span class="cstat-no" title="statement not covered" > return new naslTypes.OqlQueryComponent({</span>
2058
- dataSource: 'app.dataSources.defaultDS',
2059
- code: generate(node.arguments[0] as any).code.trim().slice(1, -1),
2060
- });
2061
- }
2062
- }
2063
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.consoleLog' || calleeName === 'console.log') {</span>
2064
- <span class="cstat-no" title="statement not covered" > if (!isPageLogic(contextLogicName)) {</span>
2065
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2066
- calleeNamespace: 'nasl.util',
2067
- calleeName: 'consoleLog',
2068
- shortcut: true,
2069
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2070
- expression: transformLogicNode(arg),
2071
- })) as naslTypes.Argument[],
2072
- });
2073
- }
2074
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2075
- calleeNamespace: 'nasl.logging',
2076
- calleeName: 'INFO',
2077
- shortcut: true,
2078
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2079
- expression: transformLogicNode(arg),
2080
- })) as naslTypes.Argument[],
2081
- });
2082
- }
2083
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'nasl.util.jsonSerialize' || calleeName === 'nasl.util.jsonDeserialize') {</span>
2084
- const curCalleeName = (<span class="cstat-no" title="statement not covered" >node.callee as any).property.name;</span>
2085
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2086
- calleeNamespace: 'nasl.util',
2087
- calleeName: curCalleeName,
2088
- shortcut: true,
2089
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2090
- expression: transformLogicNode(arg),
2091
- })) as naslTypes.Argument[],
2092
- typeArguments: node?.typeParameters?.params.map(<span class="fstat-no" title="function not covered" >(c</span>urType: any) =&gt; <span class="cstat-no" title="statement not covered" >transformTypeAnnotation({ ...curType }))</span>,
2093
- });
2094
- };
2095
- <span class="cstat-no" title="statement not covered" > if (calleeName.startsWith('nasl.util.')) {</span>
2096
- const curCalleeName = <span class="cstat-no" title="statement not covered" >callee.length === 3 ? (callee[callee.length - 1] as babelTypes.Identifier).name : (callee[0] as any).callee.property.name;</span>
2097
- const argument = <span class="cstat-no" title="statement not covered" >callee.length === 3 ? node.arguments : (callee[0] as any).arguments as any;</span>
2098
- &nbsp;
2099
- <span class="cstat-no" title="statement not covered" > if (['plus', 'minus', 'multiply', 'divide', 'remainder'].includes(curCalleeName)) {</span>
2100
- <span class="cstat-no" title="statement not covered" > return handleBinaryExpression(curCalleeName, argument);</span>
2101
- };
2102
- &nbsp;
2103
- <span class="cstat-no" title="statement not covered" > if (['NewList', 'NewMap', 'NewEntity', 'NewAnonymityStructure'].includes(curCalleeName)) {</span>
2104
- <span class="cstat-no" title="statement not covered" > return handleNewExpression(curCalleeName, node);</span>
2105
- }
2106
- &nbsp;
2107
- let typeNamespace: string;
2108
- <span class="cstat-no" title="statement not covered" > if (argument?.[argument.length - 1]?.type === 'ObjectExpression') {</span>
2109
- <span class="cstat-no" title="statement not covered" > typeNamespace = argument.splice(-1)[0].properties[0].value.value;</span>
2110
- }
2111
- const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.CallFunction({</span>
2112
- calleeNamespace: 'nasl.util',
2113
- calleeName: curCalleeName,
2114
- arguments: argument.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any, index: number) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2115
- expression: transformLogicNode(arg),
2116
- keyword: `str${index + 1}`,
2117
- })) as naslTypes.Argument[],
2118
- typeArguments: node?.typeParameters?.params.map(<span class="fstat-no" title="function not covered" >(c</span>urType: any) =&gt; <span class="cstat-no" title="statement not covered" >transformTypeAnnotation({ ...curType, typeNamespace }))</span>,
2119
- });
2120
- // console.log('lemon ~ callFunction ~ 3:', nodeElement);
2121
- <span class="cstat-no" title="statement not covered" > return nodeElement;</span>
2122
- }
2123
- <span class="cstat-no" title="statement not covered" > if (callee.length === 3 &amp;&amp; calleeName.startsWith('nasl.ui.')) {</span>
2124
- <span class="cstat-no" title="statement not covered" > if ((callee[2] as babelTypes.Identifier).name === 'destination') {</span>
2125
- const namespace = (<span class="cstat-no" title="statement not covered" >node.arguments[0] as babelTypes.StringLiteral).value;</span>
2126
- const nsArr = <span class="cstat-no" title="statement not covered" >namespace.split('.').map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.replace(/_view$/, ''))</span>;</span>
2127
- const viewName = <span class="cstat-no" title="statement not covered" >nsArr.pop();</span>
2128
- &nbsp;
2129
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Destination({</span>
2130
- viewNamespace: `app.frontends.pc.views${nsArr.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >`.${item}.views`)</span>.join('')}`, // viewNamespace
2131
- viewName, // viewName
2132
- arguments: node.arguments.slice(1).map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2133
- expression: transformLogicNode(arg),
2134
- })) as naslTypes.Argument[],
2135
- });
2136
- }
2137
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2138
- calleeNamespace: 'nasl.ui',
2139
- calleeName: (callee[2] as babelTypes.Identifier).name,
2140
- shortcut: true,
2141
- /**
2142
- * 这个函数是修复 AI 翻译出错的情况,与正常的 transform 做个区分
2143
- * @param node
2144
- * @returns
2145
- */
2146
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2147
- expression: transformLogicNode(arg),
2148
- })) as naslTypes.Argument[],
2149
- });
2150
- }
2151
- <span class="cstat-no" title="statement not covered" > if (calleeName.endsWith('.map')) {</span>
2152
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallFunction({</span>
2153
- calleeNamespace: 'nasl.util',
2154
- calleeName: 'ListTransform',
2155
- arguments: [new naslTypes.Argument({
2156
- expression: transformLogicNode((node.callee as babelTypes.MemberExpression).object),
2157
- }), ...node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2158
- expression: transformLogicNode(arg),
2159
- }))],
2160
- });
2161
- }
2162
- <span class="cstat-no" title="statement not covered" > if (calleeName === 'ForEach') {</span>
2163
- const newCallee = <span class="cstat-no" title="statement not covered" >node.arguments;</span>
2164
- const arrowFunction = <span class="cstat-no" title="statement not covered" >node.arguments[3] as babelTypes.ArrowFunctionExpression;</span>
2165
- const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.ForEachStatement({</span>
2166
- each: transformLogicNode(newCallee[0]),
2167
- start: transformLogicNode(newCallee[1]),
2168
- end: transformLogicNode(newCallee[2]),
2169
- item: transformParam(arrowFunction.params[0] as babelTypes.Identifier),
2170
- index: arrowFunction.params[1] ? transformParam(arrowFunction.params[1] as babelTypes.Identifier) : new naslTypes.Param({
2171
- name: 'index', typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Long'),
2172
- }),
2173
- body: (arrowFunction.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2174
- });
2175
- <span class="cstat-no" title="statement not covered" > return nodeElement;</span>
2176
- }
2177
- <span class="cstat-no" title="statement not covered" > if (callee.length === 2) {</span>
2178
- const curCalleeName = (<span class="cstat-no" title="statement not covered" >node.callee as any).property.name;</span>
2179
- <span class="cstat-no" title="statement not covered" > if (curCalleeName === 'forEach') {</span>
2180
- const newCallee = (<span class="cstat-no" title="statement not covered" >node.callee as any).object;</span>
2181
- const arrowFunction = <span class="cstat-no" title="statement not covered" >node.arguments[0] as babelTypes.ArrowFunctionExpression;</span>
2182
- const nodeElement = <span class="cstat-no" title="statement not covered" >new naslTypes.ForEachStatement({</span>
2183
- each: transformLogicNode(newCallee.callee.object),
2184
- start: transformLogicNode(newCallee?.arguments?.[0]),
2185
- end: transformLogicNode(newCallee?.arguments?.[1]),
2186
- item: transformParam(arrowFunction.params[0] as babelTypes.Identifier),
2187
- index: arrowFunction.params[1] ? transformParam(arrowFunction.params[1] as babelTypes.Identifier) : new naslTypes.Param({
2188
- name: 'index', typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Long'),
2189
- }),
2190
- body: (arrowFunction.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2191
- });
2192
- <span class="cstat-no" title="statement not covered" > return nodeElement;</span>
2193
- }
2194
- } else <span class="cstat-no" title="statement not covered" >if (['plus', 'minus', 'multiply', 'divide', 'remainder'].includes(calleeName)) {</span>
2195
- <span class="cstat-no" title="statement not covered" > return handleBinaryExpression(calleeName, node?.arguments);</span>
2196
- } else <span class="cstat-no" title="statement not covered" >if (calleeName === 'alert') {</span>
2197
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2198
- calleeNamespace: 'nasl.ui',
2199
- calleeName: 'showMessage',
2200
- shortcut: true,
2201
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2202
- expression: transformLogicNode(arg),
2203
- })) as naslTypes.Argument[],
2204
- });
2205
- } else <span class="cstat-no" title="statement not covered" >if (/^app.dataSources|app.logics|load/.test(calleeName)) {</span>
2206
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2207
- calleeNamespace: generate((node.callee as any).object).code,
2208
- calleeName: (callee[callee.length - 1] as babelTypes.Identifier).name,
2209
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2210
- expression: transformLogicNode(arg),
2211
- })) as naslTypes.Argument[],
2212
- });
2213
- } else <span class="cstat-no" title="statement not covered" >if (callee.length === 1) {</span>
2214
- <span class="cstat-no" title="statement not covered" > if (calleeName.startsWith('viewLogic_')) {</span>
2215
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2216
- calleeNamespace: '',
2217
- calleeName: calleeName.slice('viewLogic_'.length),
2218
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2219
- expression: transformLogicNode(arg),
2220
- })) as naslTypes.Argument[],
2221
- });
2222
- }
2223
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallLogic({</span>
2224
- calleeNamespace: `app.logics`,
2225
- calleeName,
2226
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2227
- expression: transformLogicNode(arg),
2228
- })) as naslTypes.Argument[],
2229
- });
2230
- } else <span class="cstat-no" title="statement not covered" >if (/interfaces/.test(calleeName)) {</span>
2231
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallInterface({</span>
2232
- calleeNamespace: generate((node.callee as any).object).code,
2233
- calleeName: (callee[callee.length - 1] as babelTypes.Identifier).name,
2234
- arguments: node.arguments.map(<span class="fstat-no" title="function not covered" >(a</span>rg: any) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.Argument({</span>
2235
- keyword: arg.properties[0].key.name,
2236
- expression: transformLogicNode(arg.properties[0].value),
2237
- })) as naslTypes.Argument[],
2238
- });
2239
- }
2240
- // else if (/destination/.test(calleeName)) {
2241
- // const newCallee = flatMemberExpression((node.callee as any).object);
2242
- // return new naslTypes.Destination({
2243
- // viewNamespace: generate((node.callee as any).object.object).code,
2244
- // viewName: (newCallee[newCallee.length - 1] as babelTypes.Identifier).name,
2245
- // target: (node.arguments[0] as any).properties[1].value.value,
2246
- // anchor: new naslTypes.Anchor({
2247
- // expression: transformLogicNode((node.arguments[0] as any).properties[0].value),
2248
- // }),
2249
- // });
2250
- // }
2251
- else <span class="cstat-no" title="statement not covered" >if (node.callee.type === 'ArrowFunctionExpression') {</span>
2252
- // NOTE: 适用于 if else
2253
- const newCallee = (<span class="cstat-no" title="statement not covered" >node.callee.body as any).body;</span>
2254
- <span class="cstat-no" title="statement not covered" > if (newCallee[newCallee.length - 1].argument?.callee?.name === '__MatchExpressionFuntion') {</span>
2255
- const match = <span class="cstat-no" title="statement not covered" >new naslTypes.Match({</span>
2256
- expression: transformLogicNode(newCallee[0]),
2257
- isExpression: type === 'expression',
2258
- cases: flatIfStatement(newCallee[1].body.body[0]).map(<span class="fstat-no" title="function not covered" >(_</span>case: any) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.MatchCase({</span>
2259
- patterns: !_case.test ? [] : flatMatchPatternsExpression(transformLogicNode(_case.test)) as any,
2260
- body: _case.consequent.body.filter(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >item.type !== 'BreakStatement')</span>.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2261
- })),
2262
- });
2263
- <span class="cstat-no" title="statement not covered" > if (!match.cases.length || match.cases[match.cases.length - 1].patterns.length) {</span>
2264
- <span class="cstat-no" title="statement not covered" > match.cases.push(new naslTypes.MatchCase({</span>
2265
- patterns: [],
2266
- body: [],
2267
- }));
2268
- }
2269
- <span class="cstat-no" title="statement not covered" > match.cases.forEach(<span class="fstat-no" title="function not covered" >(c</span>ase_: any) =&gt; {</span>
2270
- <span class="cstat-no" title="statement not covered" > if (case_.body.length &amp;&amp; (case_.body[0].concept === 'BooleanLiteral' || case_.body[0].concept === 'StringLiteral')) {</span>
2271
- <span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
2272
- }
2273
- <span class="cstat-no" title="statement not covered" > if (case_.patterns.length &amp;&amp; case_.patterns[0].concept === 'MemberExpression') {</span>
2274
- <span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
2275
- <span class="cstat-no" title="statement not covered" > case_.patterns[0] = new naslTypes.MemberExpression({</span>
2276
- object: {
2277
- concept: 'Identifier',
2278
- name: case_.patterns[0].object.property.name,
2279
- folded: false,
2280
- namespace: 'app.enums'
2281
- } as any,
2282
- property: {
2283
- concept: 'Identifier',
2284
- name: case_.patterns[0].property.value,
2285
- folded: false,
2286
- } as any,
2287
- });
2288
- }
2289
- });
2290
- <span class="cstat-no" title="statement not covered" > return match;</span>
2291
- }
2292
- <span class="cstat-no" title="statement not covered" > if (newCallee[newCallee.length - 1].argument?.callee?.name === '__SwitchExpressionFuntion') {</span>
2293
- const switchStatement = <span class="cstat-no" title="statement not covered" >transformLogicNode(newCallee[0].body.body[0]);</span>
2294
- <span class="cstat-no" title="statement not covered" > return switchStatement;</span>
2295
- }
2296
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2297
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2298
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled ArrowFunctionExpression node ${node.type}`);</span>
2299
- }
2300
- } else {
2301
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2302
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2303
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${callee.map(<span class="fstat-no" title="function not covered" >(i</span>tem: babelTypes.Identifier) =&gt; <span class="cstat-no" title="statement not covered" >item.name)</span>.join('.')} ${node.type}`);</span>
2304
- }
2305
- }
2306
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'IfStatement') {</span>
2307
- <span class="cstat-no" title="statement not covered" > if (node.alternate &amp;&amp; node.alternate.type === 'IfStatement') {</span>
2308
- const switchStatement = <span class="cstat-no" title="statement not covered" >new naslTypes.SwitchStatement({</span>
2309
- cases: [],
2310
- });
2311
- <span class="cstat-no" title="statement not covered" > pushElseIf(node, switchStatement);</span>
2312
- <span class="cstat-no" title="statement not covered" > return switchStatement;</span>
2313
- }
2314
- <span class="cstat-no" title="statement not covered" > return new naslTypes.IfStatement({</span>
2315
- test: transformLogicNode(node.test),
2316
- consequent: !node.consequent ? [] : (node.consequent as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2317
- alternate: !node.alternate ? [] : (node.alternate as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2318
- });
2319
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'WhileStatement') {</span>
2320
- <span class="cstat-no" title="statement not covered" > return new naslTypes.WhileStatement({</span>
2321
- test: transformLogicNode(node.test),
2322
- body: (node.body as babelTypes.BlockStatement).body.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2323
- });
2324
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'SwitchStatement') {</span>
2325
- const match = <span class="cstat-no" title="statement not covered" >new naslTypes.Match({</span>
2326
- expression: transformLogicNode(node.discriminant),
2327
- isExpression: type === 'expression',
2328
- cases: node.cases.map(<span class="fstat-no" title="function not covered" >(_</span>case) =&gt; <span class="cstat-no" title="statement not covered" >new naslTypes.MatchCase({</span>
2329
- patterns: !_case.test ? [] : [transformLogicNode(_case.test)],
2330
- body: _case.consequent.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >item.type !== 'BreakStatement')</span>.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>.filter(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >!!item)</span>,
2331
- })),
2332
- });
2333
- <span class="cstat-no" title="statement not covered" > if (!match.cases.length || match.cases[match.cases.length - 1].patterns.length) {</span>
2334
- <span class="cstat-no" title="statement not covered" > match.cases.push(new naslTypes.MatchCase({</span>
2335
- patterns: [],
2336
- body: [],
2337
- }));
2338
- }
2339
- <span class="cstat-no" title="statement not covered" > match.cases.forEach(<span class="fstat-no" title="function not covered" >(c</span>ase_: any) =&gt; {</span>
2340
- <span class="cstat-no" title="statement not covered" > if (case_.body.length &amp;&amp; (case_.body[0].concept === 'BooleanLiteral' || case_.body[0].concept === 'StringLiteral')) {</span>
2341
- <span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
2342
- }
2343
- <span class="cstat-no" title="statement not covered" > if (case_.patterns.length &amp;&amp; case_.patterns[0].concept === 'MemberExpression') {</span>
2344
- <span class="cstat-no" title="statement not covered" > case_.isMatchedTypeEnumable = true;</span>
2345
- <span class="cstat-no" title="statement not covered" > case_.patterns[0].object.namespace = 'app.enums';</span>
2346
- }
2347
- });
2348
- <span class="cstat-no" title="statement not covered" > return match;</span>
2349
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'MemberExpression') {</span>
2350
- <span class="cstat-no" title="statement not covered" > if (node.property.type === 'NumericLiteral') {</span>
2351
- <span class="cstat-no" title="statement not covered" > return new naslTypes.CallFunction({</span>
2352
- calleeNamespace: 'nasl.util',
2353
- calleeName: 'Get',
2354
- arguments: [
2355
- new naslTypes.Argument({
2356
- expression: transformLogicNode(node.object),
2357
- }),
2358
- new naslTypes.Argument({
2359
- expression: transformLogicNode(node.property),
2360
- }),
2361
- ],
2362
- });
2363
- }
2364
- <span class="cstat-no" title="statement not covered" > return new naslTypes.MemberExpression({</span>
2365
- object: transformLogicNode(node.object),
2366
- property: transformLogicNode(node.property),
2367
- });
2368
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'Identifier') {</span>
2369
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Identifier({</span>
2370
- name: node.name,
2371
- });
2372
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'ExpressionStatement') {</span>
2373
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(node.expression);</span>
2374
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'AssignmentExpression') {</span>
2375
- <span class="cstat-no" title="statement not covered" > if (node.operator === '+=' || node.operator === '-=') {</span>
2376
- <span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
2377
- <span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
2378
- operator: node.operator[0] as '+' | '-',
2379
- left: transformLogicNode(node.left),
2380
- right: transformLogicNode(node.right),
2381
- });
2382
- }
2383
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
2384
- left: transformLogicNode(node.left),
2385
- right: new naslTypes.BinaryExpression({
2386
- operator: node.operator[0] as '+' | '-',
2387
- left: transformLogicNode(node.left),
2388
- right: transformLogicNode(node.right),
2389
- }),
2390
- });
2391
- }
2392
- <span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
2393
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(node.right);</span>
2394
- }
2395
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
2396
- left: transformLogicNode(node.left),
2397
- right: transformLogicNode(node.right),
2398
- });
2399
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'NewExpression') {</span>
2400
- const calleeName = <span class="cstat-no" title="statement not covered" >generate(node.callee as any).code;</span>
2401
- <span class="cstat-no" title="statement not covered" > if (['Boolean', 'Integer', 'Double', 'Decimal', 'Long'].includes(calleeName)) {</span>
2402
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(node.arguments[0], naslTypes.TypeAnnotation.createPrimitive(calleeName));</span>
2403
- }
2404
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2405
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2406
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
2407
- }
2408
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'ArrowFunctionExpression') {</span>
2409
- <span class="cstat-no" title="statement not covered" > return new naslTypes.AnonymousFunction({</span>
2410
- params: node.params.map(<span class="fstat-no" title="function not covered" >(p</span>aram: babelTypes.Identifier) =&gt; <span class="cstat-no" title="statement not covered" >transformParam(param))</span>,
2411
- body: transformLogicNode(node.body),
2412
- }) as any as naslTypes.LogicItem;
2413
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'BooleanLiteral') {</span>
2414
- <span class="cstat-no" title="statement not covered" > return new naslTypes.BooleanLiteral({</span>
2415
- value: String(node.value),
2416
- });
2417
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'StringLiteral') {</span>
2418
- <span class="cstat-no" title="statement not covered" > return new naslTypes.StringLiteral({</span>
2419
- value: node.value,
2420
- });
2421
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'NumericLiteral') {</span>
2422
- const literal = <span class="cstat-no" title="statement not covered" >new naslTypes.NumericLiteral({</span>
2423
- value: String(node.value),
2424
- typeAnnotation: typeAnnotation || naslTypes.TypeAnnotation.createPrimitive('Integer'),
2425
- });
2426
- <span class="cstat-no" title="statement not covered" > literal.typeAnnotation.typeName = literal.changeType(String(node.value));</span>
2427
- <span class="cstat-no" title="statement not covered" > return literal;</span>
2428
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'NullLiteral') {</span>
2429
- <span class="cstat-no" title="statement not covered" > return new naslTypes.NullLiteral();</span>
2430
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'TemplateLiteral') {</span>
2431
- const expressions = <span class="cstat-no" title="statement not covered" >[...node.expressions as babelTypes.Expression[], ...node.quasis.map(<span class="fstat-no" title="function not covered" >(e</span>lement) =&gt; (<span class="cstat-no" title="statement not covered" >{</span></span>
2432
- type: 'StringLiteral',
2433
- value: element.value.raw,
2434
- start: element.start,
2435
- end: element.end,
2436
- })) as babelTypes.StringLiteral[]];
2437
- <span class="cstat-no" title="statement not covered" > expressions.sort(<span class="fstat-no" title="function not covered" >(a</span>, b) =&gt; <span class="cstat-no" title="statement not covered" >a.start - b.start)</span>;</span>
2438
- &nbsp;
2439
- <span class="cstat-no" title="statement not covered" > return new naslTypes.StringInterpolation({</span>
2440
- expressions: expressions.map(<span class="fstat-no" title="function not covered" >(i</span>tem) =&gt; <span class="cstat-no" title="statement not covered" >transformLogicNode(item))</span>,
2441
- });
2442
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'BinaryExpression' || node.type === 'LogicalExpression') {</span>
2443
- <span class="cstat-no" title="statement not covered" > if (node.operator === '===')</span>
2444
- <span class="cstat-no" title="statement not covered" > node.operator = '==';</span>
2445
- <span class="cstat-no" title="statement not covered" > if (node.operator === '!==')</span>
2446
- <span class="cstat-no" title="statement not covered" > node.operator = '!=';</span>
2447
- <span class="cstat-no" title="statement not covered" > if (['+', '-', '*', '/', '%', '==', '!=', '&gt;', '&lt;', '&gt;=', '&lt;=', '&amp;&amp;', '||', 'startwith', 'endwith', 'like', 'in'].includes(node.operator)) {</span>
2448
- <span class="cstat-no" title="statement not covered" > return new naslTypes.BinaryExpression({</span>
2449
- operator: node.operator as any,
2450
- left: transformLogicNode(node.left),
2451
- right: transformLogicNode(node.right),
2452
- });
2453
- }
2454
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2455
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2456
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
2457
- }
2458
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'UnaryExpression') {</span>
2459
- <span class="cstat-no" title="statement not covered" > if (['!'].includes(node.operator)) {</span>
2460
- <span class="cstat-no" title="statement not covered" > return new naslTypes.UnaryExpression({</span>
2461
- operator: node.operator as any,
2462
- argument: transformLogicNode(node.argument),
2463
- });
2464
- }
2465
- <span class="cstat-no" title="statement not covered" > if (['-'].includes(node.operator) &amp;&amp; node.argument.type === 'NumericLiteral') {</span>
2466
- <span class="cstat-no" title="statement not covered" > return transformLogicNode({</span>
2467
- type: 'NumericLiteral',
2468
- value: -node.argument.value,
2469
- } as babelTypes.NumericLiteral);
2470
- }
2471
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2472
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2473
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
2474
- }
2475
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'UpdateExpression') {</span>
2476
- <span class="cstat-no" title="statement not covered" > if (node.operator === '++' || node.operator === '--') {</span>
2477
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
2478
- left: transformLogicNode(node.argument),
2479
- right: new naslTypes.BinaryExpression({
2480
- operator: node.operator[0] as '+' | '-',
2481
- left: transformLogicNode(node.argument),
2482
- right: new naslTypes.NumericLiteral({
2483
- value: '1',
2484
- typeAnnotation: naslTypes.TypeAnnotation.createPrimitive('Integer'),
2485
- }),
2486
- }),
2487
- });
2488
- }
2489
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'ReturnStatement') {</span>
2490
- <span class="cstat-no" title="statement not covered" > if (node.argument) {</span>
2491
- <span class="cstat-no" title="statement not covered" > if (type === 'expression') {</span>
2492
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(node.argument);</span>
2493
- }
2494
- <span class="cstat-no" title="statement not covered" > if (!logic.returns.length) {</span>
2495
- <span class="cstat-no" title="statement not covered" > logic.returns.push(new naslTypes.Return({</span>
2496
- name: 'result',
2497
- }));
2498
- }
2499
- <span class="cstat-no" title="statement not covered" > return new naslTypes.Assignment({</span>
2500
- left: new naslTypes.Identifier({
2501
- name: logic.returns[0].name,
2502
- }),
2503
- right: transformLogicNode(node.argument),
2504
- });
2505
- }
2506
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'EmptyStatement') {</span>
2507
- <span class="cstat-no" title="statement not covered" > return node.leadingComments &amp;&amp; new naslTypes.Comment({</span>
2508
- value: String(node.leadingComments[0].value),
2509
- });
2510
- } else <span class="cstat-no" title="statement not covered" >if (node.type === 'BlockStatement') {</span>
2511
- <span class="cstat-no" title="statement not covered" > return transformLogicNode(node?.body?.[0]);</span>
2512
- } else {
2513
- <span class="cstat-no" title="statement not covered" > console.error(node);</span>
2514
- <span class="cstat-no" title="statement not covered" > if (debug) {</span>
2515
- <span class="cstat-no" title="statement not covered" > throw new Error(`Unhandled node ${node.type}`);</span>
2516
- }
2517
- }
2518
- }
2519
- &nbsp;
2520
- const root = <span class="cstat-no" title="statement not covered" >babel.parseSync(tsCode, {</span>
2521
- filename: 'result.ts',
2522
- presets: [require('@babel/preset-typescript')],
2523
- }) as babelTypes.File;
2524
- &nbsp;
2525
- let parameters: babelTypes.Identifier[] = <span class="cstat-no" title="statement not covered" >[];</span>
2526
- let statements: babelTypes.Statement[] = <span class="cstat-no" title="statement not covered" >[];</span>
2527
- &nbsp;
2528
- let func: babelTypes.FunctionDeclaration;
2529
- <span class="cstat-no" title="statement not covered" > if (root.program.body[0].type === 'ExportNamedDeclaration') {</span>
2530
- <span class="cstat-no" title="statement not covered" > func = root.program.body[0].declaration as babelTypes.FunctionDeclaration;</span>
2531
- }
2532
- <span class="cstat-no" title="statement not covered" > parameters = func.params as babelTypes.Identifier[];</span>
2533
- <span class="cstat-no" title="statement not covered" > statements = func.body.body;</span>
2534
- // traverse&lt;babelTypes.Node&gt;((current) =&gt; {
2535
- // if (current.node.type === 'FunctionDeclaration' &amp;&amp; (current.node.id.name === contextLogicName || type === 'expression')) {
2536
- // return true;
2537
- // }
2538
- // }, { node: root.program }, { mode: 'anyObject' });
2539
- &nbsp;
2540
- const currentPositionComment = <span class="cstat-no" title="statement not covered" >root.comments.find(<span class="fstat-no" title="function not covered" >(c</span>omment) =&gt; <span class="cstat-no" title="statement not covered" >comment.type === 'CommentLine' &amp;&amp; comment.value === ' 当前位置')</span>;</span>
2541
- <span class="cstat-no" title="statement not covered" > if (currentPositionComment) {</span>
2542
- <span class="cstat-no" title="statement not covered" > statements = statements.filter(<span class="fstat-no" title="function not covered" >(s</span>tat) =&gt; <span class="cstat-no" title="statement not covered" >stat.start &gt; currentPositionComment.start)</span>;</span>
2543
- }
2544
- &nbsp;
2545
- // traverse&lt;babelTypes.Node&gt;((current) =&gt; {
2546
- // if (!current.node.type)
2547
- // console.log(current.key, current.node);
2548
- // // console.log(current.node.type);
2549
- // }, { node: {
2550
- // type: 'BlockStatement',
2551
- // body: statements,
2552
- // } as babelTypes.BlockStatement }, {
2553
- // mode: 'anyObject',
2554
- // depthFirst: true,
2555
- // excludedKeySet: new Set(['loc']),
2556
- // });
2557
- &nbsp;
2558
- <span class="cstat-no" title="statement not covered" > parameters.forEach(<span class="fstat-no" title="function not covered" >(n</span>ode) =&gt; {</span>
2559
- const param = <span class="cstat-no" title="statement not covered" >transformParam(node);</span>
2560
- <span class="cstat-no" title="statement not covered" > param &amp;&amp; logic.params.push(param);</span>
2561
- });
2562
- <span class="cstat-no" title="statement not covered" > statements.forEach(<span class="fstat-no" title="function not covered" >(n</span>ode) =&gt; {</span>
2563
- const item = <span class="cstat-no" title="statement not covered" >transformLogicNode(node);</span>
2564
- <span class="cstat-no" title="statement not covered" > item &amp;&amp; logic.body.push(item);</span>
2565
- });
2566
- &nbsp;
2567
- // console.log(JSON.stringify(logic));
2568
- // try {
2569
- // console.log(logic.toNaturalTS());
2570
- // } catch (e) {
2571
- // console.error(e);
2572
- // }
2573
- &nbsp;
2574
- <span class="cstat-no" title="statement not covered" > return logic;</span>
2575
- }
2576
- &nbsp;
2577
- export function <span class="fstat-no" title="function not covered" >tryTransformTSCode(</span>tsCode: string, contextLogicName: string, type?: string): naslTypes.Logic {
2578
- <span class="cstat-no" title="statement not covered" > if (tsCode.includes('```')) {</span>
2579
- const cap = <span class="cstat-no" title="statement not covered" >tsCode.match(/```.*\n([\s\S]+?)```/);</span>
2580
- <span class="cstat-no" title="statement not covered" > if (cap)</span>
2581
- <span class="cstat-no" title="statement not covered" > tsCode = cap[1].trim();</span>
2582
- }
2583
- &nbsp;
2584
- <span class="cstat-no" title="statement not covered" > return transformTSCode(tsCode, contextLogicName, type);</span>
2585
- }
2586
- &nbsp;
2587
- export function <span class="fstat-no" title="function not covered" >transformTSCodeEx(</span>answer: any, activeLogic: any, context: any) {
2588
- let logicName = <span class="cstat-no" title="statement not covered" >activeLogic.name;</span>
2589
- const { app, nasl } = <span class="cstat-no" title="statement not covered" >context;</span>
2590
- <span class="cstat-no" title="statement not covered" > if (activeLogic.parentNode instanceof nasl.BindEvent &amp;&amp; activeLogic.parentNode.parentNode instanceof nasl.View) {</span>
2591
- <span class="cstat-no" title="statement not covered" > logicName = `viewLogic_${activeLogic.name}`;</span>
2592
- } else <span class="cstat-no" title="statement not covered" >if (activeLogic.parentNode instanceof nasl.BindEvent &amp;&amp; activeLogic.parentNode.parentNode instanceof nasl.ViewElement) {</span>
2593
- <span class="cstat-no" title="statement not covered" > logicName = `on_${(activeLogic.parentNode).element.name}_${activeLogic.name}`;</span>
2594
- } else {
2595
- <span class="cstat-no" title="statement not covered" > logicName = activeLogic.name;</span>
2596
- }
2597
- &nbsp;
2598
- const logic = <span class="cstat-no" title="statement not covered" >tryTransformTSCode(answer, logicName);</span>
2599
- <span class="cstat-no" title="statement not covered" > app.emit('collect:start', { actionMsg: '自然语言生成代码' });</span>
2600
- <span class="cstat-no" title="statement not covered" > logic.params.forEach(<span class="fstat-no" title="function not covered" >(p</span>aram: any) =&gt; {</span>
2601
- <span class="cstat-no" title="statement not covered" > if (!activeLogic.params.find(<span class="fstat-no" title="function not covered" >(_</span>: any) =&gt; <span class="cstat-no" title="statement not covered" >_.name === param.name)</span>)</span>
2602
- <span class="cstat-no" title="statement not covered" > activeLogic.addParam(param.toJSON());</span>
2603
- });
2604
- <span class="cstat-no" title="statement not covered" > logic.variables.forEach(<span class="fstat-no" title="function not covered" >(v</span>ariable: any) =&gt; {</span>
2605
- <span class="cstat-no" title="statement not covered" > if (!activeLogic.variables.find(<span class="fstat-no" title="function not covered" >(_</span>: any) =&gt; <span class="cstat-no" title="statement not covered" >_.name === variable.name)</span>)</span>
2606
- <span class="cstat-no" title="statement not covered" > activeLogic.addVariable(variable.toJSON());</span>
2607
- });
2608
- <span class="cstat-no" title="statement not covered" > if (logic.returns.length &amp;&amp; !activeLogic.returns.length) {</span>
2609
- <span class="cstat-no" title="statement not covered" > activeLogic.addReturn(logic.returns[0].toJSON());</span>
2610
- }
2611
- <span class="cstat-no" title="statement not covered" > logic.body.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; <span class="cstat-no" title="statement not covered" >activeLogic.insertItemInBodyAt(item.toJSON(), activeLogic.body.length - 1))</span>;</span>
2612
- <span class="cstat-no" title="statement not covered" > app.emit('collect:end');</span>
2613
- }
2614
- &nbsp;
2615
- export function <span class="fstat-no" title="function not covered" >transformTSCodeToExpression(</span>answer: any, context: any) {
2616
- let logic;
2617
- <span class="cstat-no" title="statement not covered" > try {</span>
2618
- <span class="cstat-no" title="statement not covered" > logic = tryTransformTSCode(answer, '', 'expression');</span>
2619
- } catch (error) {
2620
- <span class="cstat-no" title="statement not covered" > throw new Error(error);</span>
2621
- }
2622
- const { app } = <span class="cstat-no" title="statement not covered" >context;</span>
2623
- <span class="cstat-no" title="statement not covered" > app.emit('collect:start', { actionMsg: '自然语言生成代码' });</span>
2624
- const { body } = <span class="cstat-no" title="statement not covered" >logic;</span>
2625
- <span class="cstat-no" title="statement not covered" > app.emit('collect:end');</span>
2626
- <span class="cstat-no" title="statement not covered" > return body;</span>
2627
- }
2628
- &nbsp;</pre></td></tr></table></pre>
2629
-
2630
- <div class='push'></div><!-- for sticky footer -->
2631
- </div><!-- /wrapper -->
2632
- <div class='footer quiet pad2 space-top1 center small'>
2633
- Code coverage generated by
2634
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2635
- at 2023-10-18T11:36:07.885Z
2636
- </div>
2637
- <script src="../../prettify.js"></script>
2638
- <script>
2639
- window.onload = function () {
2640
- prettyPrint();
2641
- };
2642
- </script>
2643
- <script src="../../sorter.js"></script>
2644
- <script src="../../block-navigation.js"></script>
2645
- </body>
2646
- </html>
2647
-