@lcap/nasl 3.3.0-beta.2 → 3.3.2-beta.2
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.
- package/.nyc_output/d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json +1 -0
- package/.nyc_output/processinfo/d58d92d8-c0d6-479b-9f82-1f4da8e73ff3.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +461 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/src/automate/engine/index.html +116 -0
- package/coverage/src/automate/engine/utils.js.html +1414 -0
- package/coverage/src/bak/index.html +116 -0
- package/coverage/src/bak/translator.js.html +622 -0
- package/coverage/src/breakpoint/generator/AfterStartNode.ts.html +175 -0
- package/coverage/src/breakpoint/generator/BeforeEndNode.ts.html +169 -0
- package/coverage/src/breakpoint/generator/BreakpointNode.ts.html +1246 -0
- package/coverage/src/breakpoint/generator/CallbackNode.ts.html +145 -0
- package/coverage/src/breakpoint/generator/index.html +176 -0
- package/coverage/src/breakpoint/generator/index.ts.html +508 -0
- package/coverage/src/breakpoint/index.html +116 -0
- package/coverage/src/breakpoint/index.ts.html +94 -0
- package/coverage/src/breakpoint/shared/constants.ts.html +436 -0
- package/coverage/src/breakpoint/shared/index.html +176 -0
- package/coverage/src/breakpoint/shared/index.ts.html +94 -0
- package/coverage/src/breakpoint/shared/operations.ts.html +160 -0
- package/coverage/src/breakpoint/shared/socket.ts.html +1297 -0
- package/coverage/src/breakpoint/shared/utils.ts.html +1087 -0
- package/coverage/src/breakpoint/store/core.ts.html +1600 -0
- package/coverage/src/breakpoint/store/dock.ts.html +733 -0
- package/coverage/src/breakpoint/store/index.html +146 -0
- package/coverage/src/breakpoint/store/index.ts.html +91 -0
- package/coverage/src/common/BaseNode.ts.html +3874 -0
- package/coverage/src/common/Command.ts.html +310 -0
- package/coverage/src/common/EventEmitter.ts.html +370 -0
- package/coverage/src/common/Messager.ts.html +820 -0
- package/coverage/src/common/asyncFuncMap.ts.html +127 -0
- package/coverage/src/common/index.html +191 -0
- package/coverage/src/common/index.ts.html +94 -0
- package/coverage/src/concepts/Abort__.ts.html +328 -0
- package/coverage/src/concepts/Anchor__.ts.html +646 -0
- package/coverage/src/concepts/AnonymousFunction__.ts.html +2029 -0
- package/coverage/src/concepts/App__.ts.html +13252 -0
- package/coverage/src/concepts/Argument__.ts.html +964 -0
- package/coverage/src/concepts/Assignee__.ts.html +2236 -0
- package/coverage/src/concepts/AssignmentLine__.ts.html +409 -0
- package/coverage/src/concepts/Assignment__.ts.html +1123 -0
- package/coverage/src/concepts/Attribute__.ts.html +733 -0
- package/coverage/src/concepts/AuthInterface__.ts.html +367 -0
- package/coverage/src/concepts/AuthLogicForCallInterface__.ts.html +1984 -0
- package/coverage/src/concepts/AuthLogic__.ts.html +781 -0
- package/coverage/src/concepts/BackendVariable__.ts.html +1483 -0
- package/coverage/src/concepts/Backend__.ts.html +1165 -0
- package/coverage/src/concepts/BatchAssignment__.ts.html +3301 -0
- package/coverage/src/concepts/BinaryExpression__.ts.html +1441 -0
- package/coverage/src/concepts/BindAttribute__.ts.html +3835 -0
- package/coverage/src/concepts/BindDirective__.ts.html +1921 -0
- package/coverage/src/concepts/BindEvent__.ts.html +3406 -0
- package/coverage/src/concepts/BindStyle__.ts.html +1612 -0
- package/coverage/src/concepts/BooleanLiteral__.ts.html +418 -0
- package/coverage/src/concepts/CallAuthInterface__.ts.html +1615 -0
- package/coverage/src/concepts/CallConnector__.ts.html +922 -0
- package/coverage/src/concepts/CallFunction__.ts.html +2122 -0
- package/coverage/src/concepts/CallInterface__.ts.html +2719 -0
- package/coverage/src/concepts/CallLogic__.ts.html +4807 -0
- package/coverage/src/concepts/CallQueryComponent__.ts.html +5308 -0
- package/coverage/src/concepts/Comment__.ts.html +394 -0
- package/coverage/src/concepts/CompletionProperty__.ts.html +925 -0
- package/coverage/src/concepts/ConfigGroup__.ts.html +1105 -0
- package/coverage/src/concepts/ConfigPropertyValue__.ts.html +424 -0
- package/coverage/src/concepts/ConfigProperty__.ts.html +1348 -0
- package/coverage/src/concepts/Configuration__.ts.html +1027 -0
- package/coverage/src/concepts/Connection__.ts.html +1360 -0
- package/coverage/src/concepts/ConnectorTrigger__.ts.html +595 -0
- package/coverage/src/concepts/Connector__.ts.html +4255 -0
- package/coverage/src/concepts/Constant__.ts.html +913 -0
- package/coverage/src/concepts/DataSource__.ts.html +1771 -0
- package/coverage/src/concepts/DatabaseTypeAnnotation__.ts.html +331 -0
- package/coverage/src/concepts/Destination__.ts.html +2731 -0
- package/coverage/src/concepts/End__.ts.html +433 -0
- package/coverage/src/concepts/EntityIndex__.ts.html +787 -0
- package/coverage/src/concepts/EntityProperty__.ts.html +2668 -0
- package/coverage/src/concepts/Entity__.ts.html +2950 -0
- package/coverage/src/concepts/EnumItem__.ts.html +550 -0
- package/coverage/src/concepts/Enum__.ts.html +1231 -0
- package/coverage/src/concepts/Event__.ts.html +1084 -0
- package/coverage/src/concepts/ExternalDestination__.ts.html +1033 -0
- package/coverage/src/concepts/ForEachStatement__.ts.html +1957 -0
- package/coverage/src/concepts/FrontendLibrary__.ts.html +1711 -0
- package/coverage/src/concepts/FrontendVariable__.ts.html +292 -0
- package/coverage/src/concepts/Frontend__.ts.html +3961 -0
- package/coverage/src/concepts/Function__.ts.html +3598 -0
- package/coverage/src/concepts/Identifier__.ts.html +1057 -0
- package/coverage/src/concepts/IfStatement__.ts.html +1594 -0
- package/coverage/src/concepts/Integration__.ts.html +1228 -0
- package/coverage/src/concepts/InterfaceParam__.ts.html +1087 -0
- package/coverage/src/concepts/Interface__.ts.html +3394 -0
- package/coverage/src/concepts/JSBlock__.ts.html +421 -0
- package/coverage/src/concepts/JavaLogic__.ts.html +460 -0
- package/coverage/src/concepts/LogicItem__.ts.html +1171 -0
- package/coverage/src/concepts/Logic__.ts.html +7408 -0
- package/coverage/src/concepts/MatchCase__.ts.html +2929 -0
- package/coverage/src/concepts/Match__.ts.html +2455 -0
- package/coverage/src/concepts/MemberExpression__.ts.html +1726 -0
- package/coverage/src/concepts/MicroApp__.ts.html +436 -0
- package/coverage/src/concepts/Module__.ts.html +9220 -0
- package/coverage/src/concepts/MsgTriggerEvent__.ts.html +1045 -0
- package/coverage/src/concepts/MsgTriggerLauncher__.ts.html +1018 -0
- package/coverage/src/concepts/Namespace__.ts.html +7942 -0
- package/coverage/src/concepts/NewComposite__.ts.html +4729 -0
- package/coverage/src/concepts/NewList__.ts.html +1618 -0
- package/coverage/src/concepts/NewMap__.ts.html +2326 -0
- package/coverage/src/concepts/New__.ts.html +289 -0
- package/coverage/src/concepts/NullLiteral__.ts.html +349 -0
- package/coverage/src/concepts/NumericLiteral__.ts.html +676 -0
- package/coverage/src/concepts/OqlQueryComponent__.ts.html +1141 -0
- package/coverage/src/concepts/OverriddenLogic__.ts.html +6817 -0
- package/coverage/src/concepts/Param__.ts.html +1726 -0
- package/coverage/src/concepts/Point__.ts.html +331 -0
- package/coverage/src/concepts/ProcessComponent__.ts.html +1666 -0
- package/coverage/src/concepts/ProcessElement__.ts.html +5884 -0
- package/coverage/src/concepts/ProcessOutcome__.ts.html +352 -0
- package/coverage/src/concepts/ProcessOutcomes__.ts.html +343 -0
- package/coverage/src/concepts/Process__.ts.html +4768 -0
- package/coverage/src/concepts/QueryAggregateExpression__.ts.html +568 -0
- package/coverage/src/concepts/QueryFieldExpression__.ts.html +583 -0
- package/coverage/src/concepts/QueryFromExpression__.ts.html +910 -0
- package/coverage/src/concepts/QueryGroupByExpression__.ts.html +559 -0
- package/coverage/src/concepts/QueryJoinExpression__.ts.html +1567 -0
- package/coverage/src/concepts/QueryLimitExpression__.ts.html +637 -0
- package/coverage/src/concepts/QueryOrderByExpression__.ts.html +679 -0
- package/coverage/src/concepts/QuerySelectExpression__.ts.html +1714 -0
- package/coverage/src/concepts/Rect__.ts.html +373 -0
- package/coverage/src/concepts/Return__.ts.html +1312 -0
- package/coverage/src/concepts/Role__.ts.html +601 -0
- package/coverage/src/concepts/SelectMembers__.ts.html +1246 -0
- package/coverage/src/concepts/Slot__.ts.html +628 -0
- package/coverage/src/concepts/SqlQueryComponent__.ts.html +982 -0
- package/coverage/src/concepts/Start__.ts.html +304 -0
- package/coverage/src/concepts/StringInterpolation__.ts.html +1129 -0
- package/coverage/src/concepts/StringLiteral__.ts.html +505 -0
- package/coverage/src/concepts/StructureProperty__.ts.html +1132 -0
- package/coverage/src/concepts/Structure__.ts.html +2092 -0
- package/coverage/src/concepts/SwitchCase__.ts.html +1174 -0
- package/coverage/src/concepts/SwitchStatement__.ts.html +877 -0
- package/coverage/src/concepts/Theme__.ts.html +358 -0
- package/coverage/src/concepts/Transactional__.ts.html +628 -0
- package/coverage/src/concepts/TriggerEvent__.ts.html +1012 -0
- package/coverage/src/concepts/TriggerLauncher__.ts.html +775 -0
- package/coverage/src/concepts/TypeAnnotation__.ts.html +3718 -0
- package/coverage/src/concepts/TypeParam__.ts.html +319 -0
- package/coverage/src/concepts/UnaryExpression__.ts.html +697 -0
- package/coverage/src/concepts/Unparsed__.ts.html +394 -0
- package/coverage/src/concepts/UseComponent__.ts.html +331 -0
- package/coverage/src/concepts/ValidationRule__.ts.html +1840 -0
- package/coverage/src/concepts/Variable__.ts.html +1489 -0
- package/coverage/src/concepts/ViewBlock__.ts.html +352 -0
- package/coverage/src/concepts/ViewComponent__.ts.html +4180 -0
- package/coverage/src/concepts/ViewElement__.ts.html +8803 -0
- package/coverage/src/concepts/View__.ts.html +8620 -0
- package/coverage/src/concepts/WhileStatement__.ts.html +1063 -0
- package/coverage/src/concepts/basics/stdlib/index.html +356 -0
- package/coverage/src/concepts/basics/stdlib/index.ts.html +208 -0
- package/coverage/src/concepts/basics/stdlib/nasl.auth.ts.html +565 -0
- package/coverage/src/concepts/basics/stdlib/nasl.browser.ts.html +517 -0
- package/coverage/src/concepts/basics/stdlib/nasl.collection.ts.html +226 -0
- package/coverage/src/concepts/basics/stdlib/nasl.configuration.ts.html +172 -0
- package/coverage/src/concepts/basics/stdlib/nasl.core.ts.html +214 -0
- package/coverage/src/concepts/basics/stdlib/nasl.event.ts.html +145 -0
- package/coverage/src/concepts/basics/stdlib/nasl.http.ts.html +589 -0
- package/coverage/src/concepts/basics/stdlib/nasl.interface.ts.html +214 -0
- package/coverage/src/concepts/basics/stdlib/nasl.io.ts.html +229 -0
- package/coverage/src/concepts/basics/stdlib/nasl.logging.ts.html +268 -0
- package/coverage/src/concepts/basics/stdlib/nasl.process.ts.html +1999 -0
- package/coverage/src/concepts/basics/stdlib/nasl.ui.ts.html +3259 -0
- package/coverage/src/concepts/basics/stdlib/nasl.util.ts.html +6844 -0
- package/coverage/src/concepts/basics/stdlib/nasl.validation.ts.html +1768 -0
- package/coverage/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts.html +163 -0
- package/coverage/src/concepts/basics/stdlib/timeZone.ts.html +664 -0
- package/coverage/src/concepts/basics/types/coreTypeList.ts.html +121 -0
- package/coverage/src/concepts/basics/types/index.html +131 -0
- package/coverage/src/concepts/basics/types/index.ts.html +160 -0
- package/coverage/src/concepts/index.html +1961 -0
- package/coverage/src/concepts/index.ts.html +103 -0
- package/coverage/src/concepts/index__.ts.html +451 -0
- package/coverage/src/config.ts.html +325 -0
- package/coverage/src/decorators/index.html +131 -0
- package/coverage/src/decorators/index.ts.html +574 -0
- package/coverage/src/decorators/promise.ts.html +169 -0
- package/coverage/src/eventBus.ts.html +100 -0
- package/coverage/src/generator/compileComponent.ts.html +142 -0
- package/coverage/src/generator/genBundleFiles.ts.html +1828 -0
- package/coverage/src/generator/genHash.ts.html +124 -0
- package/coverage/src/generator/genMetaData.ts.html +1042 -0
- package/coverage/src/generator/genReleaseBody.ts.html +1282 -0
- package/coverage/src/generator/icestark.ts.html +220 -0
- package/coverage/src/generator/index.html +266 -0
- package/coverage/src/generator/index.ts.html +106 -0
- package/coverage/src/generator/microApp.ts.html +172 -0
- package/coverage/src/generator/permission.ts.html +1036 -0
- package/coverage/src/generator/qiankun.ts.html +232 -0
- package/coverage/src/generator/styleReplacer.ts.html +199 -0
- package/coverage/src/index.html +146 -0
- package/coverage/src/index.ts.html +121 -0
- package/coverage/src/manager/diagnostic.ts.html +442 -0
- package/coverage/src/manager/index.html +131 -0
- package/coverage/src/manager/stepRecorder.ts.html +457 -0
- package/coverage/src/natural/genNaturalTS.ts.html +355 -0
- package/coverage/src/natural/index.html +161 -0
- package/coverage/src/natural/index.ts.html +91 -0
- package/coverage/src/natural/naslStdlibMap.ts.html +157 -0
- package/coverage/src/natural/transformTSCode.ts.html +2647 -0
- package/coverage/src/sentry/index.html +116 -0
- package/coverage/src/sentry/index.ts.html +676 -0
- package/coverage/src/server/createUiTs.ts.html +910 -0
- package/coverage/src/server/entity2LogicNamespace.ts.html +1294 -0
- package/coverage/src/server/event.js.html +526 -0
- package/coverage/src/server/extendBaseNode.ts.html +1762 -0
- package/coverage/src/server/formatTsUtils.ts.html +2689 -0
- package/coverage/src/server/getConnector.ts.html +316 -0
- package/coverage/src/server/getExtensionModules.ts.html +178 -0
- package/coverage/src/server/getFunctions.ts.html +133 -0
- package/coverage/src/server/getInterfaces.ts.html +229 -0
- package/coverage/src/server/getLogging.ts.html +100 -0
- package/coverage/src/server/getLogics.ts.html +1363 -0
- package/coverage/src/server/getMemberIdentifier.ts.html +1561 -0
- package/coverage/src/server/getProcessComponents.ts.html +112 -0
- package/coverage/src/server/getProcesses.ts.html +2023 -0
- package/coverage/src/server/getValidates.ts.html +115 -0
- package/coverage/src/server/index.html +401 -0
- package/coverage/src/server/index.ts.html +229 -0
- package/coverage/src/server/naslServer.ts.html +14401 -0
- package/coverage/src/server/naslStdlibMap.ts.html +241 -0
- package/coverage/src/server/process2LogicNamespace.ts.html +454 -0
- package/coverage/src/server/translator.ts.html +2566 -0
- package/coverage/src/service/creator/add.configs.js.html +379 -0
- package/coverage/src/service/creator/errHandles.js.html +322 -0
- package/coverage/src/service/creator/index.html +146 -0
- package/coverage/src/service/creator/index.js.html +352 -0
- package/coverage/src/service/datasource/api.js.html +118 -0
- package/coverage/src/service/datasource/index.html +131 -0
- package/coverage/src/service/datasource/index.js.html +103 -0
- package/coverage/src/service/logic/api.js.html +109 -0
- package/coverage/src/service/logic/index.html +131 -0
- package/coverage/src/service/logic/index.js.html +103 -0
- package/coverage/src/service/storage/api.js.html +202 -0
- package/coverage/src/service/storage/index.html +206 -0
- package/coverage/src/service/storage/index.ts.html +103 -0
- package/coverage/src/service/storage/init.ts.html +2761 -0
- package/coverage/src/service/storage/jsoner.ts.html +502 -0
- package/coverage/src/service/storage/map.ts.html +256 -0
- package/coverage/src/service/storage/service.ts.html +331 -0
- package/coverage/src/service/storage/storagePoint.ts.html +304 -0
- package/coverage/src/templator/genCallComponentLogic.ts.html +163 -0
- package/coverage/src/templator/genCreateBlock.ts.html +1093 -0
- package/coverage/src/templator/genCurdEditMultipleKeyBlock.ts.html +1609 -0
- package/coverage/src/templator/genCurdMultipleKeyBlock.ts.html +2254 -0
- package/coverage/src/templator/genEditTableBlock.ts.html +955 -0
- package/coverage/src/templator/genEnumSelectBlock.ts.html +178 -0
- package/coverage/src/templator/genGetBlock.ts.html +451 -0
- package/coverage/src/templator/genGridViewBlock.ts.html +1114 -0
- package/coverage/src/templator/genListViewBlock.ts.html +475 -0
- package/coverage/src/templator/genQueryComponent.ts.html +1207 -0
- package/coverage/src/templator/genSelectBlock.ts.html +1243 -0
- package/coverage/src/templator/genTableBlock.ts.html +910 -0
- package/coverage/src/templator/genUpdateBlock.ts.html +1192 -0
- package/coverage/src/templator/index.html +326 -0
- package/coverage/src/templator/index.ts.html +154 -0
- package/coverage/src/templator/utils.ts.html +1861 -0
- package/coverage/src/translator/constant.ts.html +106 -0
- package/coverage/src/translator/index.html +146 -0
- package/coverage/src/translator/index.ts.html +94 -0
- package/coverage/src/translator/utils.ts.html +436 -0
- package/coverage/src/utils/cookie.ts.html +265 -0
- package/coverage/src/utils/env.ts.html +91 -0
- package/coverage/src/utils/index.html +236 -0
- package/coverage/src/utils/index.ts.html +655 -0
- package/coverage/src/utils/logger.ts.html +145 -0
- package/coverage/src/utils/sortTsString.ts.html +187 -0
- package/coverage/src/utils/string.ts.html +400 -0
- package/coverage/src/utils/time-slicing.ts.html +418 -0
- package/coverage/src/utils/traverse.ts.html +568 -0
- package/coverage/src/utils/window.ts.html +112 -0
- package/out/bak/translator.js +16 -18
- package/out/bak/translator.js.map +1 -1
- package/out/breakpoint/generator/BreakpointNode.js +1 -0
- package/out/breakpoint/generator/BreakpointNode.js.map +1 -1
- package/out/breakpoint/shared/constants.d.ts +2 -0
- package/out/breakpoint/shared/constants.js +3 -1
- package/out/breakpoint/shared/constants.js.map +1 -1
- package/out/breakpoint/shared/socket.d.ts +1 -0
- package/out/breakpoint/shared/socket.js +35 -17
- package/out/breakpoint/shared/socket.js.map +1 -1
- package/out/breakpoint/shared/utils.js +33 -1
- package/out/breakpoint/shared/utils.js.map +1 -1
- package/out/breakpoint/store/core.d.ts +2 -0
- package/out/breakpoint/store/core.js +5 -3
- package/out/breakpoint/store/core.js.map +1 -1
- package/out/breakpoint/store/dock.js +33 -0
- package/out/breakpoint/store/dock.js.map +1 -1
- package/out/concepts/AuthLogicForCallInterface__.js +2 -1
- package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
- package/out/concepts/BinaryExpression__.js +5 -5
- package/out/concepts/BinaryExpression__.js.map +1 -1
- package/out/concepts/BindAttribute__.js +3 -3
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/CallConnector__.d.ts +2 -0
- package/out/concepts/CallConnector__.js +17 -1
- package/out/concepts/CallConnector__.js.map +1 -1
- package/out/concepts/CallFunction__.js +31 -24
- package/out/concepts/CallFunction__.js.map +1 -1
- package/out/concepts/CallLogic__.js +53 -46
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/Connection__.js +1 -1
- package/out/concepts/Connection__.js.map +1 -1
- package/out/concepts/ForEachStatement__.d.ts +1 -20
- package/out/concepts/ForEachStatement__.js +16 -14
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/IfStatement__.js +24 -25
- package/out/concepts/IfStatement__.js.map +1 -1
- package/out/concepts/Logic__.js +8 -20
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/MatchCase__.js +12 -7
- package/out/concepts/MatchCase__.js.map +1 -1
- package/out/concepts/MemberExpression__.js +11 -14
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/NewComposite__.d.ts +1 -1
- package/out/concepts/NewComposite__.js +11 -83
- package/out/concepts/NewComposite__.js.map +1 -1
- package/out/concepts/NewList__.js +11 -9
- package/out/concepts/NewList__.js.map +1 -1
- package/out/concepts/NewMap__.d.ts +1 -1
- package/out/concepts/NewMap__.js +12 -4
- package/out/concepts/NewMap__.js.map +1 -1
- package/out/concepts/New__.js +3 -1
- package/out/concepts/New__.js.map +1 -1
- package/out/concepts/StringInterpolation__.js +2 -2
- package/out/concepts/StringInterpolation__.js.map +1 -1
- package/out/concepts/SwitchCase__.js +8 -4
- package/out/concepts/SwitchCase__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +4 -2
- package/out/concepts/ViewElement__.js +7 -21
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/WhileStatement__.js +6 -4
- package/out/concepts/WhileStatement__.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.browser.js +19 -3
- package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.util.d.ts +2 -0
- package/out/concepts/basics/stdlib/nasl.util.js +36 -11
- package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
- package/out/concepts/basics/stdlib/timeZone.d.ts +5 -0
- package/out/concepts/basics/stdlib/timeZone.js +196 -0
- package/out/concepts/basics/stdlib/timeZone.js.map +1 -0
- package/out/generator/genBundleFiles.js +12 -4
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/genReleaseBody.js +1 -1
- package/out/generator/genReleaseBody.js.map +1 -1
- package/out/natural/genNaturalTS.d.ts +2 -2
- package/out/natural/genNaturalTS.js +5 -5
- package/out/natural/genNaturalTS.js.map +1 -1
- package/out/natural/transformTSCode.js +18 -3
- package/out/natural/transformTSCode.js.map +1 -1
- package/out/server/createUiTs.js +3 -0
- package/out/server/createUiTs.js.map +1 -1
- package/out/server/getLogics.js +3 -1
- package/out/server/getLogics.js.map +1 -1
- package/out/server/getMemberIdentifier.js +15 -0
- package/out/server/getMemberIdentifier.js.map +1 -1
- package/out/server/naslServer.js +35 -9
- package/out/server/naslServer.js.map +1 -1
- package/out/service/creator/errHandles.js +10 -19
- package/out/service/creator/errHandles.js.map +1 -1
- package/out/service/storage/init.js +7 -2
- package/out/service/storage/init.js.map +1 -1
- package/out/service/storage/jsoner.js +1 -3
- package/out/service/storage/jsoner.js.map +1 -1
- package/out/templator/genEditTableBlock.js +24 -2
- package/out/templator/genEditTableBlock.js.map +1 -1
- package/out/templator/genTableBlock.js +22 -1
- package/out/templator/genTableBlock.js.map +1 -1
- package/out/translator/types.d.ts +1 -0
- package/out/translator/utils.js +13 -0
- package/out/translator/utils.js.map +1 -1
- package/package.json +2 -2
- package/sandbox/stdlib/nasl.browser.ts +2 -0
- package/sandbox/stdlib/nasl.ui.definition.ts +2220 -2218
- package/sandbox/stdlib/nasl.util.ts +20 -10
- package/sandbox-natural/stdlib/nasl.core.ts +6 -3
- package/sandbox-natural/stdlib/nasl.oql.ts +6 -0
- package/sandbox-natural/stdlib/nasl.util.ts +1 -1
- package/src/bak/translator.js +16 -17
- package/src/breakpoint/generator/BreakpointNode.ts +1 -0
- package/src/breakpoint/shared/constants.ts +2 -0
- package/src/breakpoint/shared/socket.ts +41 -17
- package/src/breakpoint/shared/utils.ts +43 -1
- package/src/breakpoint/store/core.ts +2 -2
- package/src/breakpoint/store/dock.ts +50 -0
- package/src/breakpoint/types/index.d.ts +1 -0
- package/src/concepts/AuthLogicForCallInterface__.ts +2 -1
- package/src/concepts/BinaryExpression__.ts +6 -6
- package/src/concepts/BindAttribute__.ts +5 -4
- package/src/concepts/CallConnector__.ts +19 -1
- package/src/concepts/CallFunction__.ts +40 -22
- package/src/concepts/CallLogic__.ts +39 -32
- package/src/concepts/Connection__.ts +1 -1
- package/src/concepts/ForEachStatement__.ts +17 -15
- package/src/concepts/IfStatement__.ts +30 -30
- package/src/concepts/Logic__.ts +13 -27
- package/src/concepts/MatchCase__.ts +15 -7
- package/src/concepts/MemberExpression__.ts +11 -14
- package/src/concepts/NewComposite__.ts +15 -83
- package/src/concepts/NewList__.ts +11 -9
- package/src/concepts/NewMap__.ts +12 -4
- package/src/concepts/New__.ts +1 -0
- package/src/concepts/StringInterpolation__.ts +2 -2
- package/src/concepts/SwitchCase__.ts +9 -5
- package/src/concepts/ViewElement__.ts +8 -22
- package/src/concepts/WhileStatement__.ts +7 -5
- package/src/concepts/basics/stdlib/nasl.browser.ts +19 -3
- package/src/concepts/basics/stdlib/nasl.util.ts +38 -19
- package/src/concepts/basics/stdlib/timeZone.ts +193 -0
- package/src/generator/genBundleFiles.ts +12 -4
- package/src/generator/genReleaseBody.ts +1 -1
- package/src/natural/genNaturalTS.ts +5 -5
- package/src/natural/transformTSCode.ts +18 -4
- package/src/server/createUiTs.ts +3 -0
- package/src/server/getLogics.ts +3 -1
- package/src/server/getMemberIdentifier.ts +15 -0
- package/src/server/naslServer.ts +126 -83
- package/src/service/creator/errHandles.js +10 -16
- package/src/service/storage/init.ts +10 -3
- package/src/service/storage/jsoner.ts +2 -2
- package/src/templator/genEditTableBlock.ts +24 -2
- package/src/templator/genTableBlock.ts +22 -1
- package/src/translator/types.ts +1 -0
- package/src/translator/utils.ts +15 -0
- package/test/concepts/call-logic/__snapshots__/toJS.spec.ts.snap +20 -20
- package/test/concepts/match/__snapshots__/toJS.spec.ts.snap +1 -1
- package/test/concepts/member-expression/__snapshots__/toEmbeddedTS.spec.ts.snap +1 -1
- package/test/concepts/view-element/__snapshots__/toVue.spec.ts.snap +10 -10
|
@@ -0,0 +1,2689 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/server/formatTsUtils.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/server</a> formatTsUtils.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">2.47% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>11/444</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/256</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/53</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">2.6% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>11/423</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>
|
|
921
|
+
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
+
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
+
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
+
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
+
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
+
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
+
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
+
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
+
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
+
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
+
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
+
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
+
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
+
<a name='L869'></a><a href='#L869'>869</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-neutral"> </span>
|
|
945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
946
|
+
<span class="cline-any cline-neutral"> </span>
|
|
947
|
+
<span class="cline-any cline-neutral"> </span>
|
|
948
|
+
<span class="cline-any cline-neutral"> </span>
|
|
949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
951
|
+
<span class="cline-any cline-neutral"> </span>
|
|
952
|
+
<span class="cline-any cline-neutral"> </span>
|
|
953
|
+
<span class="cline-any cline-neutral"> </span>
|
|
954
|
+
<span class="cline-any cline-neutral"> </span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-yes">1x</span>
|
|
957
|
+
<span class="cline-any cline-neutral"> </span>
|
|
958
|
+
<span class="cline-any cline-neutral"> </span>
|
|
959
|
+
<span class="cline-any cline-neutral"> </span>
|
|
960
|
+
<span class="cline-any cline-neutral"> </span>
|
|
961
|
+
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-neutral"> </span>
|
|
968
|
+
<span class="cline-any cline-neutral"> </span>
|
|
969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
972
|
+
<span class="cline-any cline-neutral"> </span>
|
|
973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
980
|
+
<span class="cline-any cline-no"> </span>
|
|
981
|
+
<span class="cline-any cline-no"> </span>
|
|
982
|
+
<span class="cline-any cline-no"> </span>
|
|
983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
984
|
+
<span class="cline-any cline-no"> </span>
|
|
985
|
+
<span class="cline-any cline-neutral"> </span>
|
|
986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
988
|
+
<span class="cline-any cline-no"> </span>
|
|
989
|
+
<span class="cline-any cline-no"> </span>
|
|
990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
992
|
+
<span class="cline-any cline-neutral"> </span>
|
|
993
|
+
<span class="cline-any cline-neutral"> </span>
|
|
994
|
+
<span class="cline-any cline-neutral"> </span>
|
|
995
|
+
<span class="cline-any cline-neutral"> </span>
|
|
996
|
+
<span class="cline-any cline-neutral"> </span>
|
|
997
|
+
<span class="cline-any cline-yes">1x</span>
|
|
998
|
+
<span class="cline-any cline-no"> </span>
|
|
999
|
+
<span class="cline-any cline-no"> </span>
|
|
1000
|
+
<span class="cline-any cline-no"> </span>
|
|
1001
|
+
<span class="cline-any cline-no"> </span>
|
|
1002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
+
<span class="cline-any cline-no"> </span>
|
|
1005
|
+
<span class="cline-any cline-no"> </span>
|
|
1006
|
+
<span class="cline-any cline-no"> </span>
|
|
1007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
+
<span class="cline-any cline-no"> </span>
|
|
1009
|
+
<span class="cline-any cline-no"> </span>
|
|
1010
|
+
<span class="cline-any cline-no"> </span>
|
|
1011
|
+
<span class="cline-any cline-no"> </span>
|
|
1012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-no"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1019
|
+
<span class="cline-any cline-no"> </span>
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1021
|
+
<span class="cline-any cline-no"> </span>
|
|
1022
|
+
<span class="cline-any cline-no"> </span>
|
|
1023
|
+
<span class="cline-any cline-no"> </span>
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-no"> </span>
|
|
1026
|
+
<span class="cline-any cline-no"> </span>
|
|
1027
|
+
<span class="cline-any cline-no"> </span>
|
|
1028
|
+
<span class="cline-any cline-no"> </span>
|
|
1029
|
+
<span class="cline-any cline-no"> </span>
|
|
1030
|
+
<span class="cline-any cline-no"> </span>
|
|
1031
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
+
<span class="cline-any cline-no"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1041
|
+
<span class="cline-any cline-no"> </span>
|
|
1042
|
+
<span class="cline-any cline-no"> </span>
|
|
1043
|
+
<span class="cline-any cline-no"> </span>
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-no"> </span>
|
|
1046
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1050
|
+
<span class="cline-any cline-no"> </span>
|
|
1051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
+
<span class="cline-any cline-no"> </span>
|
|
1056
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
+
<span class="cline-any cline-no"> </span>
|
|
1058
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1059
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1066
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1067
|
+
<span class="cline-any cline-no"> </span>
|
|
1068
|
+
<span class="cline-any cline-no"> </span>
|
|
1069
|
+
<span class="cline-any cline-no"> </span>
|
|
1070
|
+
<span class="cline-any cline-no"> </span>
|
|
1071
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1072
|
+
<span class="cline-any cline-no"> </span>
|
|
1073
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1074
|
+
<span class="cline-any cline-no"> </span>
|
|
1075
|
+
<span class="cline-any cline-no"> </span>
|
|
1076
|
+
<span class="cline-any cline-no"> </span>
|
|
1077
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1078
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1079
|
+
<span class="cline-any cline-no"> </span>
|
|
1080
|
+
<span class="cline-any cline-no"> </span>
|
|
1081
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1082
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1083
|
+
<span class="cline-any cline-no"> </span>
|
|
1084
|
+
<span class="cline-any cline-no"> </span>
|
|
1085
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1086
|
+
<span class="cline-any cline-no"> </span>
|
|
1087
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1088
|
+
<span class="cline-any cline-no"> </span>
|
|
1089
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1090
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1091
|
+
<span class="cline-any cline-no"> </span>
|
|
1092
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1093
|
+
<span class="cline-any cline-no"> </span>
|
|
1094
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1096
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1097
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1098
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1099
|
+
<span class="cline-any cline-no"> </span>
|
|
1100
|
+
<span class="cline-any cline-no"> </span>
|
|
1101
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1102
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1103
|
+
<span class="cline-any cline-no"> </span>
|
|
1104
|
+
<span class="cline-any cline-no"> </span>
|
|
1105
|
+
<span class="cline-any cline-no"> </span>
|
|
1106
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1107
|
+
<span class="cline-any cline-no"> </span>
|
|
1108
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1109
|
+
<span class="cline-any cline-no"> </span>
|
|
1110
|
+
<span class="cline-any cline-no"> </span>
|
|
1111
|
+
<span class="cline-any cline-no"> </span>
|
|
1112
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1113
|
+
<span class="cline-any cline-no"> </span>
|
|
1114
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1115
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1116
|
+
<span class="cline-any cline-no"> </span>
|
|
1117
|
+
<span class="cline-any cline-no"> </span>
|
|
1118
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1119
|
+
<span class="cline-any cline-no"> </span>
|
|
1120
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1121
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1122
|
+
<span class="cline-any cline-no"> </span>
|
|
1123
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1124
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1125
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1126
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1127
|
+
<span class="cline-any cline-no"> </span>
|
|
1128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1129
|
+
<span class="cline-any cline-no"> </span>
|
|
1130
|
+
<span class="cline-any cline-no"> </span>
|
|
1131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1132
|
+
<span class="cline-any cline-no"> </span>
|
|
1133
|
+
<span class="cline-any cline-no"> </span>
|
|
1134
|
+
<span class="cline-any cline-no"> </span>
|
|
1135
|
+
<span class="cline-any cline-no"> </span>
|
|
1136
|
+
<span class="cline-any cline-no"> </span>
|
|
1137
|
+
<span class="cline-any cline-no"> </span>
|
|
1138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1139
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1140
|
+
<span class="cline-any cline-no"> </span>
|
|
1141
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1142
|
+
<span class="cline-any cline-no"> </span>
|
|
1143
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1145
|
+
<span class="cline-any cline-no"> </span>
|
|
1146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1147
|
+
<span class="cline-any cline-no"> </span>
|
|
1148
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1149
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1150
|
+
<span class="cline-any cline-no"> </span>
|
|
1151
|
+
<span class="cline-any cline-no"> </span>
|
|
1152
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1153
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1154
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1155
|
+
<span class="cline-any cline-no"> </span>
|
|
1156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1157
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1158
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1160
|
+
<span class="cline-any cline-no"> </span>
|
|
1161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1162
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1163
|
+
<span class="cline-any cline-no"> </span>
|
|
1164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1165
|
+
<span class="cline-any cline-no"> </span>
|
|
1166
|
+
<span class="cline-any cline-no"> </span>
|
|
1167
|
+
<span class="cline-any cline-no"> </span>
|
|
1168
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1169
|
+
<span class="cline-any cline-no"> </span>
|
|
1170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1171
|
+
<span class="cline-any cline-no"> </span>
|
|
1172
|
+
<span class="cline-any cline-no"> </span>
|
|
1173
|
+
<span class="cline-any cline-no"> </span>
|
|
1174
|
+
<span class="cline-any cline-no"> </span>
|
|
1175
|
+
<span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1178
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1179
|
+
<span class="cline-any cline-no"> </span>
|
|
1180
|
+
<span class="cline-any cline-no"> </span>
|
|
1181
|
+
<span class="cline-any cline-no"> </span>
|
|
1182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1183
|
+
<span class="cline-any cline-no"> </span>
|
|
1184
|
+
<span class="cline-any cline-no"> </span>
|
|
1185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1186
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1187
|
+
<span class="cline-any cline-no"> </span>
|
|
1188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1189
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1190
|
+
<span class="cline-any cline-no"> </span>
|
|
1191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1192
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1193
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1194
|
+
<span class="cline-any cline-no"> </span>
|
|
1195
|
+
<span class="cline-any cline-no"> </span>
|
|
1196
|
+
<span class="cline-any cline-no"> </span>
|
|
1197
|
+
<span class="cline-any cline-no"> </span>
|
|
1198
|
+
<span class="cline-any cline-no"> </span>
|
|
1199
|
+
<span class="cline-any cline-no"> </span>
|
|
1200
|
+
<span class="cline-any cline-no"> </span>
|
|
1201
|
+
<span class="cline-any cline-no"> </span>
|
|
1202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
+
<span class="cline-any cline-no"> </span>
|
|
1204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1205
|
+
<span class="cline-any cline-no"> </span>
|
|
1206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1214
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1215
|
+
<span class="cline-any cline-no"> </span>
|
|
1216
|
+
<span class="cline-any cline-no"> </span>
|
|
1217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1218
|
+
<span class="cline-any cline-no"> </span>
|
|
1219
|
+
<span class="cline-any cline-no"> </span>
|
|
1220
|
+
<span class="cline-any cline-no"> </span>
|
|
1221
|
+
<span class="cline-any cline-no"> </span>
|
|
1222
|
+
<span class="cline-any cline-no"> </span>
|
|
1223
|
+
<span class="cline-any cline-no"> </span>
|
|
1224
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1225
|
+
<span class="cline-any cline-no"> </span>
|
|
1226
|
+
<span class="cline-any cline-no"> </span>
|
|
1227
|
+
<span class="cline-any cline-no"> </span>
|
|
1228
|
+
<span class="cline-any cline-no"> </span>
|
|
1229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1233
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1235
|
+
<span class="cline-any cline-no"> </span>
|
|
1236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1237
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1238
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1240
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1241
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1242
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1244
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1245
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1246
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1247
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1249
|
+
<span class="cline-any cline-no"> </span>
|
|
1250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1254
|
+
<span class="cline-any cline-no"> </span>
|
|
1255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1257
|
+
<span class="cline-any cline-no"> </span>
|
|
1258
|
+
<span class="cline-any cline-no"> </span>
|
|
1259
|
+
<span class="cline-any cline-no"> </span>
|
|
1260
|
+
<span class="cline-any cline-no"> </span>
|
|
1261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1263
|
+
<span class="cline-any cline-no"> </span>
|
|
1264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1265
|
+
<span class="cline-any cline-no"> </span>
|
|
1266
|
+
<span class="cline-any cline-no"> </span>
|
|
1267
|
+
<span class="cline-any cline-no"> </span>
|
|
1268
|
+
<span class="cline-any cline-no"> </span>
|
|
1269
|
+
<span class="cline-any cline-no"> </span>
|
|
1270
|
+
<span class="cline-any cline-no"> </span>
|
|
1271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1272
|
+
<span class="cline-any cline-no"> </span>
|
|
1273
|
+
<span class="cline-any cline-no"> </span>
|
|
1274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1277
|
+
<span class="cline-any cline-no"> </span>
|
|
1278
|
+
<span class="cline-any cline-no"> </span>
|
|
1279
|
+
<span class="cline-any cline-no"> </span>
|
|
1280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1281
|
+
<span class="cline-any cline-no"> </span>
|
|
1282
|
+
<span class="cline-any cline-no"> </span>
|
|
1283
|
+
<span class="cline-any cline-no"> </span>
|
|
1284
|
+
<span class="cline-any cline-no"> </span>
|
|
1285
|
+
<span class="cline-any cline-no"> </span>
|
|
1286
|
+
<span class="cline-any cline-no"> </span>
|
|
1287
|
+
<span class="cline-any cline-no"> </span>
|
|
1288
|
+
<span class="cline-any cline-no"> </span>
|
|
1289
|
+
<span class="cline-any cline-no"> </span>
|
|
1290
|
+
<span class="cline-any cline-no"> </span>
|
|
1291
|
+
<span class="cline-any cline-no"> </span>
|
|
1292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1294
|
+
<span class="cline-any cline-no"> </span>
|
|
1295
|
+
<span class="cline-any cline-no"> </span>
|
|
1296
|
+
<span class="cline-any cline-no"> </span>
|
|
1297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1298
|
+
<span class="cline-any cline-no"> </span>
|
|
1299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1302
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1304
|
+
<span class="cline-any cline-no"> </span>
|
|
1305
|
+
<span class="cline-any cline-no"> </span>
|
|
1306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1307
|
+
<span class="cline-any cline-no"> </span>
|
|
1308
|
+
<span class="cline-any cline-no"> </span>
|
|
1309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1312
|
+
<span class="cline-any cline-no"> </span>
|
|
1313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1314
|
+
<span class="cline-any cline-no"> </span>
|
|
1315
|
+
<span class="cline-any cline-no"> </span>
|
|
1316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1317
|
+
<span class="cline-any cline-no"> </span>
|
|
1318
|
+
<span class="cline-any cline-no"> </span>
|
|
1319
|
+
<span class="cline-any cline-no"> </span>
|
|
1320
|
+
<span class="cline-any cline-no"> </span>
|
|
1321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1322
|
+
<span class="cline-any cline-no"> </span>
|
|
1323
|
+
<span class="cline-any cline-no"> </span>
|
|
1324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-no"> </span>
|
|
1326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
+
<span class="cline-any cline-no"> </span>
|
|
1331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1332
|
+
<span class="cline-any cline-no"> </span>
|
|
1333
|
+
<span class="cline-any cline-no"> </span>
|
|
1334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1340
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1341
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1342
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1343
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1344
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1349
|
+
<span class="cline-any cline-no"> </span>
|
|
1350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1351
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1353
|
+
<span class="cline-any cline-no"> </span>
|
|
1354
|
+
<span class="cline-any cline-no"> </span>
|
|
1355
|
+
<span class="cline-any cline-no"> </span>
|
|
1356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
+
<span class="cline-any cline-no"> </span>
|
|
1358
|
+
<span class="cline-any cline-no"> </span>
|
|
1359
|
+
<span class="cline-any cline-no"> </span>
|
|
1360
|
+
<span class="cline-any cline-no"> </span>
|
|
1361
|
+
<span class="cline-any cline-no"> </span>
|
|
1362
|
+
<span class="cline-any cline-no"> </span>
|
|
1363
|
+
<span class="cline-any cline-no"> </span>
|
|
1364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1365
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1366
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1367
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1368
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1369
|
+
<span class="cline-any cline-no"> </span>
|
|
1370
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1371
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1372
|
+
<span class="cline-any cline-no"> </span>
|
|
1373
|
+
<span class="cline-any cline-no"> </span>
|
|
1374
|
+
<span class="cline-any cline-no"> </span>
|
|
1375
|
+
<span class="cline-any cline-no"> </span>
|
|
1376
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1377
|
+
<span class="cline-any cline-no"> </span>
|
|
1378
|
+
<span class="cline-any cline-no"> </span>
|
|
1379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1380
|
+
<span class="cline-any cline-no"> </span>
|
|
1381
|
+
<span class="cline-any cline-no"> </span>
|
|
1382
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1383
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1384
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1385
|
+
<span class="cline-any cline-no"> </span>
|
|
1386
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1387
|
+
<span class="cline-any cline-no"> </span>
|
|
1388
|
+
<span class="cline-any cline-no"> </span>
|
|
1389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1390
|
+
<span class="cline-any cline-no"> </span>
|
|
1391
|
+
<span class="cline-any cline-no"> </span>
|
|
1392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1393
|
+
<span class="cline-any cline-no"> </span>
|
|
1394
|
+
<span class="cline-any cline-no"> </span>
|
|
1395
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1396
|
+
<span class="cline-any cline-no"> </span>
|
|
1397
|
+
<span class="cline-any cline-no"> </span>
|
|
1398
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1399
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1400
|
+
<span class="cline-any cline-no"> </span>
|
|
1401
|
+
<span class="cline-any cline-no"> </span>
|
|
1402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1404
|
+
<span class="cline-any cline-no"> </span>
|
|
1405
|
+
<span class="cline-any cline-no"> </span>
|
|
1406
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1407
|
+
<span class="cline-any cline-no"> </span>
|
|
1408
|
+
<span class="cline-any cline-no"> </span>
|
|
1409
|
+
<span class="cline-any cline-no"> </span>
|
|
1410
|
+
<span class="cline-any cline-no"> </span>
|
|
1411
|
+
<span class="cline-any cline-no"> </span>
|
|
1412
|
+
<span class="cline-any cline-no"> </span>
|
|
1413
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1414
|
+
<span class="cline-any cline-no"> </span>
|
|
1415
|
+
<span class="cline-any cline-no"> </span>
|
|
1416
|
+
<span class="cline-any cline-no"> </span>
|
|
1417
|
+
<span class="cline-any cline-no"> </span>
|
|
1418
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1419
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1420
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1421
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1422
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1423
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1424
|
+
<span class="cline-any cline-no"> </span>
|
|
1425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1426
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1427
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1428
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1429
|
+
<span class="cline-any cline-no"> </span>
|
|
1430
|
+
<span class="cline-any cline-no"> </span>
|
|
1431
|
+
<span class="cline-any cline-no"> </span>
|
|
1432
|
+
<span class="cline-any cline-no"> </span>
|
|
1433
|
+
<span class="cline-any cline-no"> </span>
|
|
1434
|
+
<span class="cline-any cline-no"> </span>
|
|
1435
|
+
<span class="cline-any cline-no"> </span>
|
|
1436
|
+
<span class="cline-any cline-no"> </span>
|
|
1437
|
+
<span class="cline-any cline-no"> </span>
|
|
1438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1440
|
+
<span class="cline-any cline-no"> </span>
|
|
1441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1442
|
+
<span class="cline-any cline-no"> </span>
|
|
1443
|
+
<span class="cline-any cline-no"> </span>
|
|
1444
|
+
<span class="cline-any cline-no"> </span>
|
|
1445
|
+
<span class="cline-any cline-no"> </span>
|
|
1446
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1447
|
+
<span class="cline-any cline-no"> </span>
|
|
1448
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1449
|
+
<span class="cline-any cline-no"> </span>
|
|
1450
|
+
<span class="cline-any cline-no"> </span>
|
|
1451
|
+
<span class="cline-any cline-no"> </span>
|
|
1452
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1461
|
+
<span class="cline-any cline-no"> </span>
|
|
1462
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1463
|
+
<span class="cline-any cline-no"> </span>
|
|
1464
|
+
<span class="cline-any cline-no"> </span>
|
|
1465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1469
|
+
<span class="cline-any cline-no"> </span>
|
|
1470
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1471
|
+
<span class="cline-any cline-no"> </span>
|
|
1472
|
+
<span class="cline-any cline-no"> </span>
|
|
1473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1476
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1479
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1480
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1482
|
+
<span class="cline-any cline-no"> </span>
|
|
1483
|
+
<span class="cline-any cline-no"> </span>
|
|
1484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1485
|
+
<span class="cline-any cline-no"> </span>
|
|
1486
|
+
<span class="cline-any cline-no"> </span>
|
|
1487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1488
|
+
<span class="cline-any cline-no"> </span>
|
|
1489
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1492
|
+
<span class="cline-any cline-no"> </span>
|
|
1493
|
+
<span class="cline-any cline-no"> </span>
|
|
1494
|
+
<span class="cline-any cline-no"> </span>
|
|
1495
|
+
<span class="cline-any cline-no"> </span>
|
|
1496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1499
|
+
<span class="cline-any cline-no"> </span>
|
|
1500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1505
|
+
<span class="cline-any cline-no"> </span>
|
|
1506
|
+
<span class="cline-any cline-no"> </span>
|
|
1507
|
+
<span class="cline-any cline-no"> </span>
|
|
1508
|
+
<span class="cline-any cline-no"> </span>
|
|
1509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1514
|
+
<span class="cline-any cline-no"> </span>
|
|
1515
|
+
<span class="cline-any cline-no"> </span>
|
|
1516
|
+
<span class="cline-any cline-no"> </span>
|
|
1517
|
+
<span class="cline-any cline-no"> </span>
|
|
1518
|
+
<span class="cline-any cline-no"> </span>
|
|
1519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1520
|
+
<span class="cline-any cline-no"> </span>
|
|
1521
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1522
|
+
<span class="cline-any cline-no"> </span>
|
|
1523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1524
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1525
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1526
|
+
<span class="cline-any cline-no"> </span>
|
|
1527
|
+
<span class="cline-any cline-no"> </span>
|
|
1528
|
+
<span class="cline-any cline-no"> </span>
|
|
1529
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1531
|
+
<span class="cline-any cline-no"> </span>
|
|
1532
|
+
<span class="cline-any cline-no"> </span>
|
|
1533
|
+
<span class="cline-any cline-no"> </span>
|
|
1534
|
+
<span class="cline-any cline-no"> </span>
|
|
1535
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1536
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1537
|
+
<span class="cline-any cline-no"> </span>
|
|
1538
|
+
<span class="cline-any cline-no"> </span>
|
|
1539
|
+
<span class="cline-any cline-no"> </span>
|
|
1540
|
+
<span class="cline-any cline-no"> </span>
|
|
1541
|
+
<span class="cline-any cline-no"> </span>
|
|
1542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1543
|
+
<span class="cline-any cline-no"> </span>
|
|
1544
|
+
<span class="cline-any cline-no"> </span>
|
|
1545
|
+
<span class="cline-any cline-no"> </span>
|
|
1546
|
+
<span class="cline-any cline-no"> </span>
|
|
1547
|
+
<span class="cline-any cline-no"> </span>
|
|
1548
|
+
<span class="cline-any cline-no"> </span>
|
|
1549
|
+
<span class="cline-any cline-no"> </span>
|
|
1550
|
+
<span class="cline-any cline-no"> </span>
|
|
1551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
+
<span class="cline-any cline-no"> </span>
|
|
1555
|
+
<span class="cline-any cline-no"> </span>
|
|
1556
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1557
|
+
<span class="cline-any cline-no"> </span>
|
|
1558
|
+
<span class="cline-any cline-no"> </span>
|
|
1559
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1561
|
+
<span class="cline-any cline-no"> </span>
|
|
1562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
+
<span class="cline-any cline-no"> </span>
|
|
1564
|
+
<span class="cline-any cline-no"> </span>
|
|
1565
|
+
<span class="cline-any cline-no"> </span>
|
|
1566
|
+
<span class="cline-any cline-no"> </span>
|
|
1567
|
+
<span class="cline-any cline-no"> </span>
|
|
1568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
+
<span class="cline-any cline-no"> </span>
|
|
1570
|
+
<span class="cline-any cline-no"> </span>
|
|
1571
|
+
<span class="cline-any cline-no"> </span>
|
|
1572
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1573
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1574
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1575
|
+
<span class="cline-any cline-no"> </span>
|
|
1576
|
+
<span class="cline-any cline-no"> </span>
|
|
1577
|
+
<span class="cline-any cline-no"> </span>
|
|
1578
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
+
<span class="cline-any cline-no"> </span>
|
|
1580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
+
<span class="cline-any cline-no"> </span>
|
|
1583
|
+
<span class="cline-any cline-no"> </span>
|
|
1584
|
+
<span class="cline-any cline-no"> </span>
|
|
1585
|
+
<span class="cline-any cline-no"> </span>
|
|
1586
|
+
<span class="cline-any cline-no"> </span>
|
|
1587
|
+
<span class="cline-any cline-no"> </span>
|
|
1588
|
+
<span class="cline-any cline-no"> </span>
|
|
1589
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
+
<span class="cline-any cline-no"> </span>
|
|
1593
|
+
<span class="cline-any cline-no"> </span>
|
|
1594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1596
|
+
<span class="cline-any cline-no"> </span>
|
|
1597
|
+
<span class="cline-any cline-no"> </span>
|
|
1598
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
+
<span class="cline-any cline-no"> </span>
|
|
1600
|
+
<span class="cline-any cline-no"> </span>
|
|
1601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1602
|
+
<span class="cline-any cline-no"> </span>
|
|
1603
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1604
|
+
<span class="cline-any cline-no"> </span>
|
|
1605
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1606
|
+
<span class="cline-any cline-no"> </span>
|
|
1607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1608
|
+
<span class="cline-any cline-no"> </span>
|
|
1609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1611
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1615
|
+
<span class="cline-any cline-no"> </span>
|
|
1616
|
+
<span class="cline-any cline-no"> </span>
|
|
1617
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1619
|
+
<span class="cline-any cline-no"> </span>
|
|
1620
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1625
|
+
<span class="cline-any cline-no"> </span>
|
|
1626
|
+
<span class="cline-any cline-no"> </span>
|
|
1627
|
+
<span class="cline-any cline-no"> </span>
|
|
1628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1629
|
+
<span class="cline-any cline-no"> </span>
|
|
1630
|
+
<span class="cline-any cline-no"> </span>
|
|
1631
|
+
<span class="cline-any cline-no"> </span>
|
|
1632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1633
|
+
<span class="cline-any cline-no"> </span>
|
|
1634
|
+
<span class="cline-any cline-no"> </span>
|
|
1635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1638
|
+
<span class="cline-any cline-no"> </span>
|
|
1639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1640
|
+
<span class="cline-any cline-no"> </span>
|
|
1641
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1642
|
+
<span class="cline-any cline-no"> </span>
|
|
1643
|
+
<span class="cline-any cline-no"> </span>
|
|
1644
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1647
|
+
<span class="cline-any cline-no"> </span>
|
|
1648
|
+
<span class="cline-any cline-no"> </span>
|
|
1649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1650
|
+
<span class="cline-any cline-no"> </span>
|
|
1651
|
+
<span class="cline-any cline-no"> </span>
|
|
1652
|
+
<span class="cline-any cline-no"> </span>
|
|
1653
|
+
<span class="cline-any cline-no"> </span>
|
|
1654
|
+
<span class="cline-any cline-no"> </span>
|
|
1655
|
+
<span class="cline-any cline-no"> </span>
|
|
1656
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
+
<span class="cline-any cline-no"> </span>
|
|
1658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
+
<span class="cline-any cline-no"> </span>
|
|
1661
|
+
<span class="cline-any cline-no"> </span>
|
|
1662
|
+
<span class="cline-any cline-no"> </span>
|
|
1663
|
+
<span class="cline-any cline-no"> </span>
|
|
1664
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1665
|
+
<span class="cline-any cline-no"> </span>
|
|
1666
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
+
<span class="cline-any cline-no"> </span>
|
|
1670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1671
|
+
<span class="cline-any cline-no"> </span>
|
|
1672
|
+
<span class="cline-any cline-no"> </span>
|
|
1673
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1674
|
+
<span class="cline-any cline-no"> </span>
|
|
1675
|
+
<span class="cline-any cline-no"> </span>
|
|
1676
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
+
<span class="cline-any cline-no"> </span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1687
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1688
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
+
<span class="cline-any cline-no"> </span>
|
|
1693
|
+
<span class="cline-any cline-no"> </span>
|
|
1694
|
+
<span class="cline-any cline-no"> </span>
|
|
1695
|
+
<span class="cline-any cline-no"> </span>
|
|
1696
|
+
<span class="cline-any cline-no"> </span>
|
|
1697
|
+
<span class="cline-any cline-no"> </span>
|
|
1698
|
+
<span class="cline-any cline-no"> </span>
|
|
1699
|
+
<span class="cline-any cline-no"> </span>
|
|
1700
|
+
<span class="cline-any cline-no"> </span>
|
|
1701
|
+
<span class="cline-any cline-no"> </span>
|
|
1702
|
+
<span class="cline-any cline-no"> </span>
|
|
1703
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1704
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1705
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1706
|
+
<span class="cline-any cline-no"> </span>
|
|
1707
|
+
<span class="cline-any cline-no"> </span>
|
|
1708
|
+
<span class="cline-any cline-no"> </span>
|
|
1709
|
+
<span class="cline-any cline-no"> </span>
|
|
1710
|
+
<span class="cline-any cline-no"> </span>
|
|
1711
|
+
<span class="cline-any cline-no"> </span>
|
|
1712
|
+
<span class="cline-any cline-no"> </span>
|
|
1713
|
+
<span class="cline-any cline-no"> </span>
|
|
1714
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1715
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1716
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1717
|
+
<span class="cline-any cline-no"> </span>
|
|
1718
|
+
<span class="cline-any cline-no"> </span>
|
|
1719
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1720
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1721
|
+
<span class="cline-any cline-no"> </span>
|
|
1722
|
+
<span class="cline-any cline-no"> </span>
|
|
1723
|
+
<span class="cline-any cline-no"> </span>
|
|
1724
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1725
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1731
|
+
<span class="cline-any cline-no"> </span>
|
|
1732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
+
<span class="cline-any cline-no"> </span>
|
|
1734
|
+
<span class="cline-any cline-no"> </span>
|
|
1735
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1736
|
+
<span class="cline-any cline-no"> </span>
|
|
1737
|
+
<span class="cline-any cline-no"> </span>
|
|
1738
|
+
<span class="cline-any cline-no"> </span>
|
|
1739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1740
|
+
<span class="cline-any cline-no"> </span>
|
|
1741
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1743
|
+
<span class="cline-any cline-no"> </span>
|
|
1744
|
+
<span class="cline-any cline-no"> </span>
|
|
1745
|
+
<span class="cline-any cline-no"> </span>
|
|
1746
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1747
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1748
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1751
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
+
<span class="cline-any cline-no"> </span>
|
|
1754
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
+
<span class="cline-any cline-no"> </span>
|
|
1756
|
+
<span class="cline-any cline-no"> </span>
|
|
1757
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1758
|
+
<span class="cline-any cline-no"> </span>
|
|
1759
|
+
<span class="cline-any cline-no"> </span>
|
|
1760
|
+
<span class="cline-any cline-no"> </span>
|
|
1761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
+
<span class="cline-any cline-no"> </span>
|
|
1763
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1765
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1766
|
+
<span class="cline-any cline-no"> </span>
|
|
1767
|
+
<span class="cline-any cline-no"> </span>
|
|
1768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1769
|
+
<span class="cline-any cline-no"> </span>
|
|
1770
|
+
<span class="cline-any cline-no"> </span>
|
|
1771
|
+
<span class="cline-any cline-no"> </span>
|
|
1772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
+
<span class="cline-any cline-no"> </span>
|
|
1783
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1784
|
+
<span class="cline-any cline-no"> </span>
|
|
1785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1789
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1792
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1793
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1796
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
+
<span class="cline-any cline-no"> </span>
|
|
1801
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import {
|
|
1803
|
+
BaseNode,
|
|
1804
|
+
Identifier,
|
|
1805
|
+
TypeAnnotation,
|
|
1806
|
+
StructureProperty,
|
|
1807
|
+
Structure,
|
|
1808
|
+
EntityProperty,
|
|
1809
|
+
Param,
|
|
1810
|
+
MemberExpression,
|
|
1811
|
+
CompletionProperty,
|
|
1812
|
+
Variable,
|
|
1813
|
+
Logic,
|
|
1814
|
+
ConfigProperty,
|
|
1815
|
+
App,
|
|
1816
|
+
SynatxNode,
|
|
1817
|
+
BindAttribute,
|
|
1818
|
+
Interface,
|
|
1819
|
+
CallLogic,
|
|
1820
|
+
BackendVariable,
|
|
1821
|
+
AuthLogic,
|
|
1822
|
+
AuthLogicForCallInterface,
|
|
1823
|
+
} from '..';
|
|
1824
|
+
import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
|
|
1825
|
+
|
|
1826
|
+
interface variableItem {
|
|
1827
|
+
text: string;
|
|
1828
|
+
completionDetail: any;
|
|
1829
|
+
children?: variableItem[] | any;
|
|
1830
|
+
name?: string;
|
|
1831
|
+
value?: string;
|
|
1832
|
+
expression: MemberExpression | Identifier;
|
|
1833
|
+
}
|
|
1834
|
+
/**
|
|
1835
|
+
* 把ts返回的详细信息截取成一个类型字符串
|
|
1836
|
+
* @param displayParts ts返回的key value
|
|
1837
|
+
* // 0: {text: 'let', kind: 'keyword'}
|
|
1838
|
+
// 1: {text: ' ', kind: 'space'}
|
|
1839
|
+
// 2: {text: 'bindRoles', kind: 'text'}
|
|
1840
|
+
// 3: {text: ':', kind: 'punctuation'}
|
|
1841
|
+
// 4: {text: ' ', kind: 'space'}
|
|
1842
|
+
// 5: {text: 'roles', kind: 'moduleName'}
|
|
1843
|
+
// 6: {text: '.', kind: 'punctuation'}
|
|
1844
|
+
// 7: {text: 'DEV_AdminRole', kind: 'enumName'}
|
|
1845
|
+
* @returns type roles.DEV_AdminRole
|
|
1846
|
+
*/
|
|
1847
|
+
function <span class="fstat-no" title="function not covered" >formatTs2TypeString(</span>displayParts: Array<{ text: string; kind: string }>) {
|
|
1848
|
+
let str = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
1849
|
+
<span class="cstat-no" title="statement not covered" > displayParts?.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
1850
|
+
<span class="cstat-no" title="statement not covered" > str += item.text;</span>
|
|
1851
|
+
});
|
|
1852
|
+
<span class="cstat-no" title="statement not covered" > return str;</span>
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
function <span class="fstat-no" title="function not covered" >isValidName(</span>str: string) {
|
|
1856
|
+
const regex = <span class="cstat-no" title="statement not covered" >/^[a-zA-Z][a-zA-Z0-9_]*$/;</span>
|
|
1857
|
+
<span class="cstat-no" title="statement not covered" > return regex.test(str);</span>
|
|
1858
|
+
}
|
|
1859
|
+
/**
|
|
1860
|
+
* 解析 Completion 和 QuickInfo 的 displayString
|
|
1861
|
+
* 生成 TypeAnnotation
|
|
1862
|
+
* @param displayString
|
|
1863
|
+
* @returns TypeAnnotation
|
|
1864
|
+
*/
|
|
1865
|
+
export function <span class="fstat-no" title="function not covered" >type2TypeAnnotation(</span>oldType: Array<any> | {}): TypeAnnotation {
|
|
1866
|
+
<span class="cstat-no" title="statement not covered" > if (!oldType) <span class="cstat-no" title="statement not covered" >return null;</span></span>
|
|
1867
|
+
let type = <span class="cstat-no" title="statement not covered" >oldType;</span>
|
|
1868
|
+
<span class="cstat-no" title="statement not covered" > if (Array.isArray(oldType)) {</span>
|
|
1869
|
+
<span class="cstat-no" title="statement not covered" > type = oldType[0];</span>
|
|
1870
|
+
}
|
|
1871
|
+
let typeAnnotation: TypeAnnotation;
|
|
1872
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1873
|
+
const { typeName, typeNamespace, typeArguments, typeKind, properties } = <span class="cstat-no" title="statement not covered" >type as any;</span>
|
|
1874
|
+
<span class="cstat-no" title="statement not covered" > if (typeKind === 'anonymousStructure') {</span>
|
|
1875
|
+
// 自定义类型
|
|
1876
|
+
const newProperties: StructureProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
1877
|
+
<span class="cstat-no" title="statement not covered" > if (Array.isArray(properties) && properties.length) {</span>
|
|
1878
|
+
<span class="cstat-no" title="statement not covered" > properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
1879
|
+
<span class="cstat-no" title="statement not covered" > if (!item?.name?.startsWith('__')) {</span>
|
|
1880
|
+
// 如果没有获取到类型,就默认塞一个string
|
|
1881
|
+
const itemType = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');</span>
|
|
1882
|
+
const structureProperty = <span class="cstat-no" title="statement not covered" >StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');</span>
|
|
1883
|
+
<span class="cstat-no" title="statement not covered" > newProperties.push(structureProperty);</span>
|
|
1884
|
+
}
|
|
1885
|
+
});
|
|
1886
|
+
}
|
|
1887
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);</span>
|
|
1888
|
+
} else <span class="cstat-no" title="statement not covered" >if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {</span>
|
|
1889
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
1890
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeName === 'String' || typeName === 'Boolean') {</span>
|
|
1891
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
|
|
1892
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeName === 'Union') {</span>
|
|
1893
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive('Union');</span>
|
|
1894
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
|
|
1895
|
+
<span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => {</span>
|
|
1896
|
+
const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
|
|
1897
|
+
<span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
|
|
1898
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
|
|
1899
|
+
}
|
|
1900
|
+
});
|
|
1901
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeNamespace && typeNamespace.startsWith('nasl.core')) {</span>
|
|
1902
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
|
|
1903
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeNamespace && typeArguments?.length) {</span>
|
|
1904
|
+
// 泛型类型
|
|
1905
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
|
|
1906
|
+
typeNamespace,
|
|
1907
|
+
});
|
|
1908
|
+
// 如果有泛型处理泛型
|
|
1909
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [];</span>
|
|
1910
|
+
<span class="cstat-no" title="statement not covered" > typeArguments.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: any) => {</span>
|
|
1911
|
+
const typeItem = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(item);</span>
|
|
1912
|
+
<span class="cstat-no" title="statement not covered" > if (typeItem) {</span>
|
|
1913
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArgumentsPush(typeItem);</span>
|
|
1914
|
+
}
|
|
1915
|
+
});
|
|
1916
|
+
} else {
|
|
1917
|
+
// 其余的引用类型
|
|
1918
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
|
|
1919
|
+
typeNamespace,
|
|
1920
|
+
});
|
|
1921
|
+
}
|
|
1922
|
+
} catch (err) {
|
|
1923
|
+
<span class="cstat-no" title="statement not covered" > console.log(err, type);</span>
|
|
1924
|
+
}
|
|
1925
|
+
<span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
|
|
1926
|
+
}
|
|
1927
|
+
|
|
1928
|
+
/**
|
|
1929
|
+
* 解析 Completion 和 QuickInfo 的 displayString
|
|
1930
|
+
* 生成 TypeAnnotation
|
|
1931
|
+
* @param displayString
|
|
1932
|
+
* @returns TypeAnnotation
|
|
1933
|
+
*/
|
|
1934
|
+
export function <span class="fstat-no" title="function not covered" >displayString2TypeAnnotation(</span>typeStr: string, parentPrefix?: string): TypeAnnotation {
|
|
1935
|
+
let type = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
1936
|
+
<span class="cstat-no" title="statement not covered" > if (typeStr?.includes(': ')) {</span>
|
|
1937
|
+
const lastIndexOf = <span class="cstat-no" title="statement not covered" >typeStr.lastIndexOf(': ');</span>
|
|
1938
|
+
<span class="cstat-no" title="statement not covered" > type = typeStr.substring(lastIndexOf + 2, typeStr.length);</span>
|
|
1939
|
+
} else {
|
|
1940
|
+
<span class="cstat-no" title="statement not covered" > type = typeStr;</span>
|
|
1941
|
+
}
|
|
1942
|
+
<span class="cstat-no" title="statement not covered" > if (!type) <span class="cstat-no" title="statement not covered" >return;</span></span>
|
|
1943
|
+
<span class="cstat-no" title="statement not covered" > type = type.replaceAll(' ', '');</span>
|
|
1944
|
+
<span class="cstat-no" title="statement not covered" > if (type === 'Promise<void>') <span class="cstat-no" title="statement not covered" >return null;</span></span>
|
|
1945
|
+
// 把后面结尾里带()的比如
|
|
1946
|
+
// 'function nasl.core.add(left: nasl.core.Long, right: nasl.core.Long): nasl.core.Long (+12 overloads)'
|
|
1947
|
+
<span class="cstat-no" title="statement not covered" > if (type.includes('(') && type.includes(')')) {</span>
|
|
1948
|
+
<span class="cstat-no" title="statement not covered" > type = type.replace(/\([^)]*\)/g, '');</span>
|
|
1949
|
+
}
|
|
1950
|
+
let typeAnnotation;
|
|
1951
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1952
|
+
<span class="cstat-no" title="statement not covered" > if (type.includes('<') && type.includes('>')) {</span>
|
|
1953
|
+
// 泛型的处理
|
|
1954
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = createGenericTypeAnnotation(type, parentPrefix);</span>
|
|
1955
|
+
} else {
|
|
1956
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = createType2Annotation(type, parentPrefix);</span>
|
|
1957
|
+
}
|
|
1958
|
+
} catch (err) {
|
|
1959
|
+
<span class="cstat-no" title="statement not covered" > console.log(err);</span>
|
|
1960
|
+
}
|
|
1961
|
+
<span class="cstat-no" title="statement not covered" > return typeAnnotation as TypeAnnotation;</span>
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1964
|
+
function <span class="fstat-no" title="function not covered" >createGenericTypeAnnotation(</span>type: string, parentPrefix?: string) {
|
|
1965
|
+
// 取出匹配的内容
|
|
1966
|
+
|
|
1967
|
+
const childType = <span class="cstat-no" title="statement not covered" >type.substring(0, type.indexOf('<'));</span>
|
|
1968
|
+
const typeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(childType);</span>
|
|
1969
|
+
// 如果还有匹配到的多层泛型;
|
|
1970
|
+
// 取出匹配到的内容
|
|
1971
|
+
const types = <span class="cstat-no" title="statement not covered" >/<([^()]+)>/g.exec(type);</span>
|
|
1972
|
+
<span class="cstat-no" title="statement not covered" > if (types === null) <span class="cstat-no" title="statement not covered" >return types;</span></span>
|
|
1973
|
+
const newtext = <span class="cstat-no" title="statement not covered" >types[1];</span>
|
|
1974
|
+
// 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
|
|
1975
|
+
const newTypes = <span class="cstat-no" title="statement not covered" >/<([^()]+)>/g.exec(newtext);</span>
|
|
1976
|
+
// 如果是的话就去递归
|
|
1977
|
+
<span class="cstat-no" title="statement not covered" > if (newTypes) {</span>
|
|
1978
|
+
const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createGenericTypeAnnotation(newtext, parentPrefix);</span>
|
|
1979
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation as TypeAnnotation];</span>
|
|
1980
|
+
} else {
|
|
1981
|
+
const argTypeAnnotation = <span class="cstat-no" title="statement not covered" >createType2Annotation(newtext, parentPrefix);</span>
|
|
1982
|
+
|
|
1983
|
+
// 如果不是就创造内部的真正类型
|
|
1984
|
+
<span class="cstat-no" title="statement not covered" > if (newtext.includes(',')) {</span>
|
|
1985
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = newtext.split(',').map(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >createType2Annotation(item))</span>;</span>
|
|
1986
|
+
} else {
|
|
1987
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation.typeArguments = [argTypeAnnotation];</span>
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
<span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
|
|
1991
|
+
}
|
|
1992
|
+
function <span class="fstat-no" title="function not covered" >createType2Annotation(</span>type: string, parentPrefix?: string): TypeAnnotation {
|
|
1993
|
+
let typeAnnotation;
|
|
1994
|
+
// 没有泛型类型的
|
|
1995
|
+
const types = <span class="cstat-no" title="statement not covered" >type.split('.');</span>
|
|
1996
|
+
// 长度等于1就说明是
|
|
1997
|
+
<span class="cstat-no" title="statement not covered" > if (types.length === 1) {</span>
|
|
1998
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(types[0]);</span>
|
|
1999
|
+
} else {
|
|
2000
|
+
const typeName = <span class="cstat-no" title="statement not covered" >types.pop();</span>
|
|
2001
|
+
const typeNamespace = <span class="cstat-no" title="statement not covered" >types.join('.');</span>
|
|
2002
|
+
<span class="cstat-no" title="statement not covered" > if (type.startsWith('nasl.core')) {</span>
|
|
2003
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createPrimitive(typeName);</span>
|
|
2004
|
+
} else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.ui')) {</span>
|
|
2005
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
|
|
2006
|
+
typeNamespace,
|
|
2007
|
+
});
|
|
2008
|
+
} else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.process')) {</span>
|
|
2009
|
+
// nasl的引用类型
|
|
2010
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
|
|
2011
|
+
typeNamespace,
|
|
2012
|
+
});
|
|
2013
|
+
} else <span class="cstat-no" title="statement not covered" >if (type.startsWith('nasl.collection')) {</span>
|
|
2014
|
+
// nasl的泛型类型
|
|
2015
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createGeneric(typeName, {</span>
|
|
2016
|
+
typeNamespace,
|
|
2017
|
+
});
|
|
2018
|
+
} else <span class="cstat-no" title="statement not covered" >if (type.startsWith('dataSources.') || type.startsWith('structures.') || type.startsWith('enums.')) {</span>
|
|
2019
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
|
|
2020
|
+
typeNamespace: (parentPrefix || 'app.') + typeNamespace,
|
|
2021
|
+
});
|
|
2022
|
+
} else {
|
|
2023
|
+
<span class="cstat-no" title="statement not covered" > typeAnnotation = TypeAnnotation.createReference(typeName, {</span>
|
|
2024
|
+
typeNamespace,
|
|
2025
|
+
});
|
|
2026
|
+
}
|
|
2027
|
+
}
|
|
2028
|
+
<span class="cstat-no" title="statement not covered" > return typeAnnotation;</span>
|
|
2029
|
+
}
|
|
2030
|
+
export function <span class="fstat-no" title="function not covered" >getPlatformType(</span>type: string): string {
|
|
2031
|
+
let tsType = <span class="cstat-no" title="statement not covered" >'';</span>
|
|
2032
|
+
|
|
2033
|
+
<span class="cstat-no" title="statement not covered" > if (type?.includes(': ')) {</span>
|
|
2034
|
+
const lastIndexOf = <span class="cstat-no" title="statement not covered" >type.lastIndexOf(': ');</span>
|
|
2035
|
+
<span class="cstat-no" title="statement not covered" > tsType = type.substring(lastIndexOf + 2, type.length);</span>
|
|
2036
|
+
} else {
|
|
2037
|
+
<span class="cstat-no" title="statement not covered" > tsType = type;</span>
|
|
2038
|
+
}
|
|
2039
|
+
<span class="cstat-no" title="statement not covered" > tsType = tsType.replaceAll(' ', '');</span>
|
|
2040
|
+
const namespacePrefix = <span class="cstat-no" title="statement not covered" >['app', 'extensions', 'apis', 'components', 'nasl'];</span>
|
|
2041
|
+
<span class="cstat-no" title="statement not covered" > if (tsType === 'String') {</span>
|
|
2042
|
+
<span class="cstat-no" title="statement not covered" > return 'nasl.core.String';</span>
|
|
2043
|
+
} else <span class="cstat-no" title="statement not covered" >if (tsType === 'Boolean') {</span>
|
|
2044
|
+
<span class="cstat-no" title="statement not covered" > return 'nasl.core.Boolean';</span>
|
|
2045
|
+
}
|
|
2046
|
+
|
|
2047
|
+
const strTypes = <span class="cstat-no" title="statement not covered" >tsType.split('.');</span>
|
|
2048
|
+
<span class="cstat-no" title="statement not covered" > if (strTypes.length) {</span>
|
|
2049
|
+
const first = <span class="cstat-no" title="statement not covered" >strTypes[0];</span>
|
|
2050
|
+
// 如果不是这几个前缀就加一个namespace
|
|
2051
|
+
<span class="cstat-no" title="statement not covered" > if (!namespacePrefix.includes(first)) {</span>
|
|
2052
|
+
<span class="cstat-no" title="statement not covered" > return 'app.' + tsType;</span>
|
|
2053
|
+
}
|
|
2054
|
+
}
|
|
2055
|
+
<span class="cstat-no" title="statement not covered" > return tsType;</span>
|
|
2056
|
+
}
|
|
2057
|
+
export function <span class="fstat-no" title="function not covered" >isNoChildType(</span>type: String) {
|
|
2058
|
+
<span class="cstat-no" title="statement not covered" > return (type?.startsWith('nasl.core') && !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');</span>
|
|
2059
|
+
}
|
|
2060
|
+
function <span class="fstat-no" title="function not covered" >findNode(</span>typeKey: string, node: BaseNode) {
|
|
2061
|
+
let newType: Structure | Logic;
|
|
2062
|
+
<span class="cstat-no" title="statement not covered" > if (typeKey.startsWith('nasl.') && typeKey.includes('<')) {</span>
|
|
2063
|
+
const findGenericsIndex = <span class="cstat-no" title="statement not covered" >typeKey.indexOf('<');</span>
|
|
2064
|
+
<span class="cstat-no" title="statement not covered" > typeKey = typeKey.substring(0, findGenericsIndex);</span>
|
|
2065
|
+
const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
|
|
2066
|
+
<span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
|
|
2067
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeKey.startsWith('nasl.')) {</span>
|
|
2068
|
+
const typeIndex = <span class="cstat-no" title="statement not covered" >typeKey.lastIndexOf('.');</span>
|
|
2069
|
+
<span class="cstat-no" title="statement not covered" > newType = getNaslNodeByNodeCallee(typeKey.substring(0, typeIndex), typeKey.substring(typeIndex + 1, typeKey.length));</span>
|
|
2070
|
+
} else {
|
|
2071
|
+
<span class="cstat-no" title="statement not covered" > newType = (node as Identifier)?.app?.findNodeByCompleteName(typeKey);</span>
|
|
2072
|
+
}
|
|
2073
|
+
<span class="cstat-no" title="statement not covered" > return newType;</span>
|
|
2074
|
+
}
|
|
2075
|
+
|
|
2076
|
+
/**
|
|
2077
|
+
* 获取下一级的节点进行递归
|
|
2078
|
+
* @param typeKey 当前节点的类型,主要为了取出内部的 T中的实际类型
|
|
2079
|
+
* @param item 当前节点的内容
|
|
2080
|
+
* @param node 获取变量框的位置
|
|
2081
|
+
*/
|
|
2082
|
+
export function <span class="fstat-no" title="function not covered" >nextFindTypeChild(</span>typeKey: string, item: any, node: SynatxNode) {
|
|
2083
|
+
const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
|
|
2084
|
+
<span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties && (newType as Structure).properties.length) {</span>
|
|
2085
|
+
// 处理泛型的内容要取到值
|
|
2086
|
+
const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
|
|
2087
|
+
const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
|
|
2088
|
+
<span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) => {</span>
|
|
2089
|
+
const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
|
|
2090
|
+
<span class="cstat-no" title="statement not covered" > if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {</span>
|
|
2091
|
+
const newTypes = <span class="cstat-no" title="statement not covered" >/<([^()]+)>/g.exec(typeKey);</span>
|
|
2092
|
+
// 找到当前原来的类型
|
|
2093
|
+
const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
|
|
2094
|
+
const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
|
|
2095
|
+
const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
|
|
2096
|
+
<span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
|
|
2097
|
+
typeKind: 'reference',
|
|
2098
|
+
typeNamespace,
|
|
2099
|
+
typeName,
|
|
2100
|
+
});
|
|
2101
|
+
}
|
|
2102
|
+
});
|
|
2103
|
+
<span class="cstat-no" title="statement not covered" > item.children = formatVariableData(newStructure.properties, node, item);</span>
|
|
2104
|
+
}
|
|
2105
|
+
}
|
|
2106
|
+
|
|
2107
|
+
/**
|
|
2108
|
+
* 获取scope下一级的展示
|
|
2109
|
+
* @param type 返回的字符串如下展示
|
|
2110
|
+
* `nasl.ui.Current<{
|
|
2111
|
+
__name: "AStructure_dc8bcbaf";
|
|
2112
|
+
entity1: dataSources.defaultDS.entities.Entity1;
|
|
2113
|
+
lCAPRolePerMapping: dataSources.defaultDS.entities.LCAPRolePerMapping;
|
|
2114
|
+
}>`
|
|
2115
|
+
*/
|
|
2116
|
+
function <span class="fstat-no" title="function not covered" >getAStructureScopeType(</span>type: string, parent: any, node: SynatxNode) {
|
|
2117
|
+
let newType = <span class="cstat-no" title="statement not covered" >type</span>
|
|
2118
|
+
.replaceAll(' ', '')
|
|
2119
|
+
.replaceAll('\n', '')
|
|
2120
|
+
.replace(/__name:"AStructure_\w{8}";/g, '');
|
|
2121
|
+
|
|
2122
|
+
const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
|
|
2123
|
+
// 如果没有父节点就是Identifier
|
|
2124
|
+
// value需要拼接生成
|
|
2125
|
+
const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
|
|
2126
|
+
<span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
|
|
2127
|
+
<span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
|
|
2128
|
+
<span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
|
|
2129
|
+
|
|
2130
|
+
// 处理泛型的内容要取到值
|
|
2131
|
+
const newNode = <span class="cstat-no" title="statement not covered" >findNode(newType, node);</span>
|
|
2132
|
+
|
|
2133
|
+
const StructureJson = <span class="cstat-no" title="statement not covered" >newNode.toJSON();</span>
|
|
2134
|
+
const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
|
|
2135
|
+
const children = <span class="cstat-no" title="statement not covered" >newStructure.properties;</span>
|
|
2136
|
+
<span class="cstat-no" title="statement not covered" > if (children && children.length) {</span>
|
|
2137
|
+
const newChildren = <span class="cstat-no" title="statement not covered" >children.map(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty) => {</span>
|
|
2138
|
+
const structureItem: any = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
|
|
2139
|
+
// 如果没有父节点就是Identifier
|
|
2140
|
+
<span class="cstat-no" title="statement not covered" > structureItem.value = `${parentItem.value}.${structureItem.name}`;</span>
|
|
2141
|
+
const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2142
|
+
object: parentItem.expression,
|
|
2143
|
+
property: new Identifier({ name: structureItem.name }),
|
|
2144
|
+
});
|
|
2145
|
+
<span class="cstat-no" title="statement not covered" > structureItem.expression = memberExpression;</span>
|
|
2146
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(structureItem);</span>
|
|
2147
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
|
|
2148
|
+
|
|
2149
|
+
<span class="cstat-no" title="statement not covered" > if (structureItem.name === 'item') {</span>
|
|
2150
|
+
const context = <span class="cstat-no" title="statement not covered" >/\{([^()]+)\}/.exec(newType);</span>
|
|
2151
|
+
<span class="cstat-no" title="statement not covered" > newType = context[1];</span>
|
|
2152
|
+
let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2153
|
+
<span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2154
|
+
<span class="cstat-no" title="statement not covered" > if (item) {</span>
|
|
2155
|
+
const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
|
|
2156
|
+
const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
|
|
2157
|
+
let typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
|
|
2158
|
+
<span class="cstat-no" title="statement not covered" > if (typeKey && typeKey.startsWith('dataSources')) {</span>
|
|
2159
|
+
<span class="cstat-no" title="statement not covered" > typeKey = 'app.' + typeKey;</span>
|
|
2160
|
+
}
|
|
2161
|
+
// 如果ls传过来的名字是不合法的就隐藏
|
|
2162
|
+
<span class="cstat-no" title="statement not covered" > if (!isValidName(name)) {</span>
|
|
2163
|
+
<span class="cstat-no" title="statement not covered" > console.warn(item, '获取变量不展示');</span>
|
|
2164
|
+
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
2165
|
+
}
|
|
2166
|
+
<span class="cstat-no" title="statement not covered" > res.push({</span>
|
|
2167
|
+
name,
|
|
2168
|
+
typeKey,
|
|
2169
|
+
});
|
|
2170
|
+
}
|
|
2171
|
+
});
|
|
2172
|
+
<span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2173
|
+
const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
|
|
2174
|
+
// 如果没有父节点就是Identifier
|
|
2175
|
+
<span class="cstat-no" title="statement not covered" > newItem.value = `${structureItem.value}.${newItem.name}`;</span>
|
|
2176
|
+
const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2177
|
+
object: structureItem.expression,
|
|
2178
|
+
property: new Identifier({ name: newItem.name }),
|
|
2179
|
+
});
|
|
2180
|
+
<span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
|
|
2181
|
+
// 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
|
|
2182
|
+
<span class="cstat-no" title="statement not covered" > if (item.typeKey && !isNoChildType(item.typeKey)) {</span>
|
|
2183
|
+
<span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(item.typeKey, newItem, node);</span>
|
|
2184
|
+
}
|
|
2185
|
+
<span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
|
|
2186
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
|
|
2187
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
|
|
2188
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2189
|
+
});
|
|
2190
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.children = res;</span>
|
|
2191
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2192
|
+
} else {
|
|
2193
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2194
|
+
}
|
|
2195
|
+
});
|
|
2196
|
+
<span class="cstat-no" title="statement not covered" > parentItem.children = newChildren;</span>
|
|
2197
|
+
}
|
|
2198
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
|
|
2199
|
+
// 变量 param return 在这里添加图标
|
|
2200
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
|
|
2201
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2202
|
+
}
|
|
2203
|
+
/**
|
|
2204
|
+
* 获取对象类型的下一级展示
|
|
2205
|
+
* @param type 返回的字符串如下展示
|
|
2206
|
+
* `{
|
|
2207
|
+
__name: "AStructure_bf19c4d5";
|
|
2208
|
+
list: nasl.collection.List<{
|
|
2209
|
+
__name: "AStructure_dc8bcbaf";
|
|
2210
|
+
entity1: app.dataSources.defaultDS.entities.Entity1;
|
|
2211
|
+
lCAPRolePerMapping: app.dataSources.defaultDS.entities.LCAPRolePerMapping;
|
|
2212
|
+
}>;
|
|
2213
|
+
total: nasl.core.Long;
|
|
2214
|
+
}`
|
|
2215
|
+
*/
|
|
2216
|
+
function <span class="fstat-no" title="function not covered" >getAStructureObjectStringType(</span>type: string, parent: any, node: SynatxNode) {
|
|
2217
|
+
let newType = <span class="cstat-no" title="statement not covered" >type</span>
|
|
2218
|
+
.replaceAll(' ', '')
|
|
2219
|
+
.replaceAll('\n', '')
|
|
2220
|
+
.replace(/__name:"AStructure_\w{8}";/g, '');
|
|
2221
|
+
<span class="cstat-no" title="statement not covered" > newType = newType.substring(1, newType.length - 1);</span>
|
|
2222
|
+
<span class="cstat-no" title="statement not covered" > if (/\{([^()]+)\}/.exec(newType)) {</span>
|
|
2223
|
+
<span class="cstat-no" title="statement not covered" > newType = newType.replace(/\{([^()]+)\}/, '');</span>
|
|
2224
|
+
}
|
|
2225
|
+
let res: any[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2226
|
+
<span class="cstat-no" title="statement not covered" > newType.split(';').forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2227
|
+
<span class="cstat-no" title="statement not covered" > if (item) {</span>
|
|
2228
|
+
const itemArr = <span class="cstat-no" title="statement not covered" >item.split(':');</span>
|
|
2229
|
+
const name = <span class="cstat-no" title="statement not covered" >itemArr[0];</span>
|
|
2230
|
+
const typeKey = <span class="cstat-no" title="statement not covered" >itemArr[1];</span>
|
|
2231
|
+
<span class="cstat-no" title="statement not covered" > res.push({</span>
|
|
2232
|
+
name,
|
|
2233
|
+
typeKey,
|
|
2234
|
+
});
|
|
2235
|
+
}
|
|
2236
|
+
});
|
|
2237
|
+
const parentItem: any = <span class="cstat-no" title="statement not covered" >parent;</span>
|
|
2238
|
+
// 如果没有父节点就是Identifier
|
|
2239
|
+
// value需要拼接生成
|
|
2240
|
+
const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: parentItem.text });</span>
|
|
2241
|
+
<span class="cstat-no" title="statement not covered" > parentItem.expression = identifier;</span>
|
|
2242
|
+
<span class="cstat-no" title="statement not covered" > parentItem.value = parentItem.text;</span>
|
|
2243
|
+
<span class="cstat-no" title="statement not covered" > parentItem.name = parentItem.text;</span>
|
|
2244
|
+
|
|
2245
|
+
<span class="cstat-no" title="statement not covered" > res = res.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2246
|
+
const newItem: any = <span class="cstat-no" title="statement not covered" >item;</span>
|
|
2247
|
+
// 如果没有父节点就是Identifier
|
|
2248
|
+
<span class="cstat-no" title="statement not covered" > newItem.value = `${parentItem.value}.${newItem.name}`;</span>
|
|
2249
|
+
const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2250
|
+
object: parentItem.expression,
|
|
2251
|
+
property: new Identifier({ name: newItem.name }),
|
|
2252
|
+
});
|
|
2253
|
+
<span class="cstat-no" title="statement not covered" > newItem.expression = memberExpression;</span>
|
|
2254
|
+
// 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
|
|
2255
|
+
<span class="cstat-no" title="statement not covered" > if (item.typeKey && !isNoChildType(item.typeKey)) {</span>
|
|
2256
|
+
<span class="cstat-no" title="statement not covered" > newItem.children = nextObjectTypeChild(getPlatformType(item.typeKey), newItem, node);</span>
|
|
2257
|
+
}
|
|
2258
|
+
<span class="cstat-no" title="statement not covered" > newItem.typeAnnotation = displayString2TypeAnnotation(newItem.typeKey);</span>
|
|
2259
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
|
|
2260
|
+
|
|
2261
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
|
|
2262
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2263
|
+
});
|
|
2264
|
+
<span class="cstat-no" title="statement not covered" > parentItem.children = res;</span>
|
|
2265
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(parentItem);</span>
|
|
2266
|
+
|
|
2267
|
+
// 变量 param return 在这里添加图标
|
|
2268
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
|
|
2269
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2270
|
+
}
|
|
2271
|
+
function <span class="fstat-no" title="function not covered" >nextObjectTypeChild(</span>typeKey: string, item: any, node: SynatxNode) {
|
|
2272
|
+
const newType = <span class="cstat-no" title="statement not covered" >findNode(typeKey, node);</span>
|
|
2273
|
+
<span class="cstat-no" title="statement not covered" > if ((newType as Structure)?.properties && (newType as Structure).properties.length) {</span>
|
|
2274
|
+
// 处理泛型的内容要取到值
|
|
2275
|
+
const StructureJson = <span class="cstat-no" title="statement not covered" >newType.toJSON();</span>
|
|
2276
|
+
const newStructure = <span class="cstat-no" title="statement not covered" >new Structure(StructureJson);</span>
|
|
2277
|
+
<span class="cstat-no" title="statement not covered" > newStructure.properties.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem: StructureProperty | EntityProperty) => {</span>
|
|
2278
|
+
const itemType = <span class="cstat-no" title="statement not covered" >item?.typeAnnotation?.typeKey;</span>
|
|
2279
|
+
<span class="cstat-no" title="statement not covered" > if (itemType === 'T' && /<([^()]+)>/g.exec(typeKey)) {</span>
|
|
2280
|
+
const newTypes = <span class="cstat-no" title="statement not covered" >/<([^()]+)>/g.exec(typeKey);</span>
|
|
2281
|
+
// 找到当前原来的类型
|
|
2282
|
+
const contentType = <span class="cstat-no" title="statement not covered" >getPlatformType(newTypes[1]);</span>
|
|
2283
|
+
const typeNamespace = <span class="cstat-no" title="statement not covered" >contentType.substring(0, contentType.lastIndexOf('.'));</span>
|
|
2284
|
+
const typeName = <span class="cstat-no" title="statement not covered" >contentType.substring(contentType.lastIndexOf('.') + 1, contentType.length);</span>
|
|
2285
|
+
<span class="cstat-no" title="statement not covered" > item.typeAnnotation = new TypeAnnotation({</span>
|
|
2286
|
+
typeKind: 'reference',
|
|
2287
|
+
typeNamespace,
|
|
2288
|
+
typeName,
|
|
2289
|
+
});
|
|
2290
|
+
}
|
|
2291
|
+
});
|
|
2292
|
+
<span class="cstat-no" title="statement not covered" > return formatVariableData(newStructure.properties, node, item);</span>
|
|
2293
|
+
}
|
|
2294
|
+
}
|
|
2295
|
+
|
|
2296
|
+
function <span class="fstat-no" title="function not covered" >getNodeTypeVariableData(</span>nodeType: any, item: any, node: SynatxNode) {
|
|
2297
|
+
<span class="cstat-no" title="statement not covered" > item.value = item.text;</span>
|
|
2298
|
+
<span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
|
|
2299
|
+
const parentExpression = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.text });</span>
|
|
2300
|
+
<span class="cstat-no" title="statement not covered" > item.expression = parentExpression;</span>
|
|
2301
|
+
<span class="cstat-no" title="statement not covered" > if (nodeType) {</span>
|
|
2302
|
+
const typeAnnotation = <span class="cstat-no" title="statement not covered" >type2TypeAnnotation(nodeType);</span>
|
|
2303
|
+
const typeKeyMap = <span class="cstat-no" title="statement not covered" >new Map();</span>
|
|
2304
|
+
const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
|
|
2305
|
+
let structure: any = <span class="cstat-no" title="statement not covered" >{};</span>
|
|
2306
|
+
|
|
2307
|
+
// 有类型在进行下一步运算
|
|
2308
|
+
<span class="cstat-no" title="statement not covered" > if (typeAnnotation) {</span>
|
|
2309
|
+
// 数据查询没有输出参数,特殊处理
|
|
2310
|
+
<span class="cstat-no" title="statement not covered" > if (typeAnnotation.typeKind === 'anonymousStructure') {</span>
|
|
2311
|
+
<span class="cstat-no" title="statement not covered" > structure = { properties: typeAnnotation.properties };</span>
|
|
2312
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeAnnotation.typeArguments) {</span>
|
|
2313
|
+
<span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(typeAnnotation, true) };</span>
|
|
2314
|
+
} else {
|
|
2315
|
+
<span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(typeAnnotation.typeNamespace + '.' + typeAnnotation.typeName);</span>
|
|
2316
|
+
}
|
|
2317
|
+
<span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) => {</span>
|
|
2318
|
+
const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
|
|
2319
|
+
const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2320
|
+
object: parentExpression,
|
|
2321
|
+
property: new Identifier({ name }),
|
|
2322
|
+
});
|
|
2323
|
+
const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
|
|
2324
|
+
name,
|
|
2325
|
+
value: name,
|
|
2326
|
+
expression,
|
|
2327
|
+
children: [],
|
|
2328
|
+
});
|
|
2329
|
+
<span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
|
|
2330
|
+
|
|
2331
|
+
<span class="cstat-no" title="statement not covered" > item.children.push(completionData);</span>
|
|
2332
|
+
<span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
|
|
2333
|
+
});
|
|
2334
|
+
}
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
|
|
2338
|
+
// 变量 param return 在这里添加图标
|
|
2339
|
+
<span class="cstat-no" title="statement not covered" > completionData.icon = getNodeiconFromLogic(completionData, node);</span>
|
|
2340
|
+
<span class="cstat-no" title="statement not covered" > return completionData;</span>
|
|
2341
|
+
}
|
|
2342
|
+
function <span class="fstat-no" title="function not covered" >recursionProperty(</span>
|
|
2343
|
+
structureTypeAnnotation: TypeAnnotation,
|
|
2344
|
+
parentCompletion: CompletionProperty,
|
|
2345
|
+
node: BaseNode,
|
|
2346
|
+
typeKeyMap: Map<string, number>
|
|
2347
|
+
) {
|
|
2348
|
+
const app = <span class="cstat-no" title="statement not covered" >node.rootNode as App;</span>
|
|
2349
|
+
let structure;
|
|
2350
|
+
<span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeArguments) {</span>
|
|
2351
|
+
<span class="cstat-no" title="statement not covered" > structure = { properties: app.getSelectRef(structureTypeAnnotation, true) };</span>
|
|
2352
|
+
} else {
|
|
2353
|
+
<span class="cstat-no" title="statement not covered" > if (structureTypeAnnotation.typeKind === 'anonymousStructure') {</span>
|
|
2354
|
+
<span class="cstat-no" title="statement not covered" > structure = { properties: structureTypeAnnotation.properties };</span>
|
|
2355
|
+
} else {
|
|
2356
|
+
<span class="cstat-no" title="statement not covered" > structure = app.findNodeByCompleteName(structureTypeAnnotation.typeNamespace + '.' + structureTypeAnnotation.typeName);</span>
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
<span class="cstat-no" title="statement not covered" > structure?.properties?.forEach(<span class="fstat-no" title="function not covered" >(s</span>tructureProperty: StructureProperty) => {</span>
|
|
2361
|
+
const { name, typeAnnotation } = <span class="cstat-no" title="statement not covered" >structureProperty;</span>
|
|
2362
|
+
const object = <span class="cstat-no" title="statement not covered" >BaseNode.from({ ...parentCompletion.expression.toJSON() }) as any;</span>
|
|
2363
|
+
const expression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2364
|
+
object,
|
|
2365
|
+
property: new Identifier({ name }),
|
|
2366
|
+
});
|
|
2367
|
+
const completionData = <span class="cstat-no" title="statement not covered" >new CompletionProperty({</span>
|
|
2368
|
+
name,
|
|
2369
|
+
value: name,
|
|
2370
|
+
expression,
|
|
2371
|
+
children: [],
|
|
2372
|
+
});
|
|
2373
|
+
<span class="cstat-no" title="statement not covered" > completionData.icon = 'refProperty';</span>
|
|
2374
|
+
<span class="cstat-no" title="statement not covered" > parentCompletion.children.push(completionData);</span>
|
|
2375
|
+
<span class="cstat-no" title="statement not covered" > if (getNextFlag(typeAnnotation.typeKey, typeKeyMap)) {</span>
|
|
2376
|
+
<span class="cstat-no" title="statement not covered" > recursionProperty(typeAnnotation, completionData, node, typeKeyMap);</span>
|
|
2377
|
+
}
|
|
2378
|
+
});
|
|
2379
|
+
}
|
|
2380
|
+
|
|
2381
|
+
function <span class="fstat-no" title="function not covered" >getNextFlag(</span>typeKey: string, typeKeyMap: Map<string, number>) {
|
|
2382
|
+
<span class="cstat-no" title="statement not covered" > if (['nasl.core.String', 'nasl.collection.List', 'nasl.collection.Map'].includes(typeKey)) <span class="cstat-no" title="statement not covered" >return true;</span></span>
|
|
2383
|
+
<span class="cstat-no" title="statement not covered" > if (typeKeyMap.get(typeKey) === 3) {</span>
|
|
2384
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
2385
|
+
} else <span class="cstat-no" title="statement not covered" >if (typeKeyMap.get(typeKey) > 0) {</span>
|
|
2386
|
+
<span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, typeKeyMap.get(typeKey) + 1);</span>
|
|
2387
|
+
} else {
|
|
2388
|
+
<span class="cstat-no" title="statement not covered" > typeKeyMap.set(typeKey, 1);</span>
|
|
2389
|
+
}
|
|
2390
|
+
<span class="cstat-no" title="statement not covered" > return true;</span>
|
|
2391
|
+
}
|
|
2392
|
+
// 格式化变量数据
|
|
2393
|
+
export function <span class="fstat-no" title="function not covered" >formatVariableData(</span>data: unknown | variableItem[], node: SynatxNode, parent?: any) {
|
|
2394
|
+
<span class="cstat-no" title="statement not covered" > if (Array.isArray(data)) {</span>
|
|
2395
|
+
let result = <span class="cstat-no" title="statement not covered" >data.map(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2396
|
+
<span class="cstat-no" title="statement not covered" > item.children = [];</span>
|
|
2397
|
+
// 当前的类型如 app.entitys.entity1 nasl.core.String
|
|
2398
|
+
let typeKey: string;
|
|
2399
|
+
<span class="cstat-no" title="statement not covered" > if (item.completionDetail) {</span>
|
|
2400
|
+
<span class="cstat-no" title="statement not covered" > if (item.completionDetail?.hasOwnProperty('nodeType') || item.completionDetail?.hasOwnProperty('newNodeType')) {</span>
|
|
2401
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >getNodeTypeVariableData(item.completionDetail?.nodeType || item.completionDetail?.newNodeType, item, node);</span>
|
|
2402
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2403
|
+
} else {
|
|
2404
|
+
// 当前节点的完整类型,主要是在有T的内容使用 nasl.list<Enum1> 内部匹配内容给里面子集的T赋值类型
|
|
2405
|
+
let currentType: string = <span class="cstat-no" title="statement not covered" >formatTs2TypeString(item.completionDetail.displayParts as Array<{ text: string; kind: string }>);</span>
|
|
2406
|
+
<span class="cstat-no" title="statement not covered" > if (currentType) {</span>
|
|
2407
|
+
<span class="cstat-no" title="statement not covered" > if (currentType?.includes(': ')) {</span>
|
|
2408
|
+
const indexOf = <span class="cstat-no" title="statement not covered" >currentType.indexOf(': ');</span>
|
|
2409
|
+
const newCurrentType = <span class="cstat-no" title="statement not covered" >currentType.substring(indexOf + 2, currentType.length);</span>
|
|
2410
|
+
// 如果是对象形式的就单独处理
|
|
2411
|
+
<span class="cstat-no" title="statement not covered" > if (newCurrentType.startsWith('{') && newCurrentType.endsWith('}')) {</span>
|
|
2412
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureObjectStringType(newCurrentType, item, node);</span>
|
|
2413
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2414
|
+
} else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.ui.Current<{')) {</span>
|
|
2415
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >getAStructureScopeType(newCurrentType, item, node);</span>
|
|
2416
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2417
|
+
} else <span class="cstat-no" title="statement not covered" >if (newCurrentType.startsWith('nasl.collection.List<{') && newCurrentType.endsWith('}>')) {</span>
|
|
2418
|
+
<span class="cstat-no" title="statement not covered" > currentType = 'nasl.collection.List<nasl.core.Any>';</span>
|
|
2419
|
+
}
|
|
2420
|
+
}
|
|
2421
|
+
}
|
|
2422
|
+
<span class="cstat-no" title="statement not covered" > typeKey = getPlatformType(currentType);</span>
|
|
2423
|
+
<span class="cstat-no" title="statement not covered" > item.typeAnnotation = displayString2TypeAnnotation(typeKey);</span>
|
|
2424
|
+
}
|
|
2425
|
+
} else <span class="cstat-no" title="statement not covered" >if (item instanceof StructureProperty || item instanceof EntityProperty) {</span>
|
|
2426
|
+
<span class="cstat-no" title="statement not covered" > typeKey = item?.typeAnnotation?.typeKey;</span>
|
|
2427
|
+
}
|
|
2428
|
+
// 如果没有父节点就是Identifier
|
|
2429
|
+
<span class="cstat-no" title="statement not covered" > if (!parent) {</span>
|
|
2430
|
+
// value需要拼接生成
|
|
2431
|
+
<span class="cstat-no" title="statement not covered" > item.value = parent ? `${parent.value}.${item.text}` : item.text;</span>
|
|
2432
|
+
<span class="cstat-no" title="statement not covered" > item.name = item.text;</span>
|
|
2433
|
+
const identifier = <span class="cstat-no" title="statement not covered" >new Identifier({ name: item.name });</span>
|
|
2434
|
+
<span class="cstat-no" title="statement not covered" > item.expression = identifier;</span>
|
|
2435
|
+
<span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
|
|
2436
|
+
} else {
|
|
2437
|
+
<span class="cstat-no" title="statement not covered" > item.value = `${parent.value}.${item.name}`;</span>
|
|
2438
|
+
const object: any = <span class="cstat-no" title="statement not covered" >BaseNode.from(parent.expression.toJSON());</span>
|
|
2439
|
+
const memberExpression = <span class="cstat-no" title="statement not covered" >new MemberExpression({</span>
|
|
2440
|
+
object,
|
|
2441
|
+
property: new Identifier({ name: item.name }),
|
|
2442
|
+
});
|
|
2443
|
+
<span class="cstat-no" title="statement not covered" > item.expression = memberExpression;</span>
|
|
2444
|
+
<span class="cstat-no" title="statement not covered" > item.variableParent = parent;</span>
|
|
2445
|
+
<span class="cstat-no" title="statement not covered" > item.typeKey = typeKey;</span>
|
|
2446
|
+
// 标记实体属性是否是符合类型
|
|
2447
|
+
<span class="cstat-no" title="statement not covered" > item.isComplexType = item.typeAnnotation?.isComplexType();</span>
|
|
2448
|
+
}
|
|
2449
|
+
// 如果有类型而且类型不是没有子集的类型,就把他当前的类型拿到
|
|
2450
|
+
<span class="cstat-no" title="statement not covered" > if (typeKey && !isNoChildType(typeKey)) {</span>
|
|
2451
|
+
let currentParent = <span class="cstat-no" title="statement not covered" >item;</span>
|
|
2452
|
+
let typeKeyIndex = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
2453
|
+
<span class="cstat-no" title="statement not covered" > while (currentParent.variableParent) {</span>
|
|
2454
|
+
<span class="cstat-no" title="statement not covered" > currentParent = currentParent.variableParent;</span>
|
|
2455
|
+
<span class="cstat-no" title="statement not covered" > if (currentParent.typeKey === typeKey) {</span>
|
|
2456
|
+
<span class="cstat-no" title="statement not covered" > typeKeyIndex++;</span>
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
// 向上找到3次一样的就结束
|
|
2460
|
+
<span class="cstat-no" title="statement not covered" > if (typeKeyIndex < 3) {</span>
|
|
2461
|
+
<span class="cstat-no" title="statement not covered" > nextFindTypeChild(typeKey, item, node);</span>
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(item);</span>
|
|
2465
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.jsonName = item.jsonName;</span>
|
|
2466
|
+
// 标记实体属性是否是符合类型
|
|
2467
|
+
<span class="cstat-no" title="statement not covered" > if (typeof item.isComplexType === 'boolean') {</span>
|
|
2468
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(completionProperty, { isComplexType: item.isComplexType });</span>
|
|
2469
|
+
}
|
|
2470
|
+
<span class="cstat-no" title="statement not covered" > if (!parent) {</span>
|
|
2471
|
+
// 变量 param return 在这里添加图标
|
|
2472
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = getNodeiconFromLogic(completionProperty, node);</span>
|
|
2473
|
+
} else {
|
|
2474
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'refProperty';</span>
|
|
2475
|
+
}
|
|
2476
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2477
|
+
});
|
|
2478
|
+
|
|
2479
|
+
/**
|
|
2480
|
+
* 排序result
|
|
2481
|
+
* 如果没有父级就是第一集就排序一下当前result,用户体验优化
|
|
2482
|
+
*/
|
|
2483
|
+
<span class="cstat-no" title="statement not covered" > if (!parent) {</span>
|
|
2484
|
+
<span class="cstat-no" title="statement not covered" > result = sortFirstVariableData(result, node);</span>
|
|
2485
|
+
}
|
|
2486
|
+
|
|
2487
|
+
<span class="cstat-no" title="statement not covered" > return result.filter(Boolean);</span>
|
|
2488
|
+
}
|
|
2489
|
+
}
|
|
2490
|
+
|
|
2491
|
+
// 从logic获取节点的icon
|
|
2492
|
+
function <span class="fstat-no" title="function not covered" >getNodeiconFromLogic(</span>completionProperty: CompletionProperty, node: SynatxNode): string {
|
|
2493
|
+
const { name: propName } = <span class="cstat-no" title="statement not covered" >completionProperty;</span>
|
|
2494
|
+
const { view } = <span class="cstat-no" title="statement not covered" >node as Param;</span>
|
|
2495
|
+
const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic || (node as Param).OverriddenLogic || (node as Param).AuthLogic || (node as Param).AuthLogicForCallInterface;</span>
|
|
2496
|
+
|
|
2497
|
+
<span class="cstat-no" title="statement not covered" > if (node.concept === 'Identifier' || node.concept === 'BindAttribute' || node.concept === 'MemberExpression') {</span>
|
|
2498
|
+
const callLogic = <span class="cstat-no" title="statement not covered" >node.getAncestor<CallLogic>('CallLogic');</span>
|
|
2499
|
+
const originLogic = <span class="cstat-no" title="statement not covered" >callLogic?.getCallNode() as Logic;</span>
|
|
2500
|
+
|
|
2501
|
+
<span class="cstat-no" title="statement not covered" > if (originLogic?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
|
|
2502
|
+
<span class="cstat-no" title="statement not covered" > return 'param';</span>
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
<span class="cstat-no" title="statement not covered" > if (view) {</span>
|
|
2507
|
+
// 前端逻辑调用
|
|
2508
|
+
const { params } = <span class="cstat-no" title="statement not covered" >view;</span>
|
|
2509
|
+
|
|
2510
|
+
<span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
|
|
2511
|
+
<span class="cstat-no" title="statement not covered" > return 'param';</span>
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
|
|
2515
|
+
<span class="cstat-no" title="statement not covered" > if (logic) {</span>
|
|
2516
|
+
const { params, returns } = <span class="cstat-no" title="statement not covered" >logic;</span>
|
|
2517
|
+
|
|
2518
|
+
<span class="cstat-no" title="statement not covered" > if (logic instanceof AuthLogicForCallInterface) {</span>
|
|
2519
|
+
const { authParams } = <span class="cstat-no" title="statement not covered" >logic;</span>
|
|
2520
|
+
<span class="cstat-no" title="statement not covered" > if (authParams.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
|
|
2521
|
+
<span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
|
|
2522
|
+
} else <span class="cstat-no" title="statement not covered" >if (logic instanceof AuthLogic) {</span>
|
|
2523
|
+
<span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'api-auth-params';</span></span>
|
|
2524
|
+
} else {
|
|
2525
|
+
<span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === completionProperty.name)</span>) <span class="cstat-no" title="statement not covered" >return 'param';</span></span>
|
|
2526
|
+
}
|
|
2527
|
+
|
|
2528
|
+
<span class="cstat-no" title="statement not covered" > if (params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
|
|
2529
|
+
<span class="cstat-no" title="statement not covered" > return 'param';</span>
|
|
2530
|
+
} else <span class="cstat-no" title="statement not covered" >if (returns.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
|
|
2531
|
+
<span class="cstat-no" title="statement not covered" > return 'return';</span>
|
|
2532
|
+
} else {
|
|
2533
|
+
<span class="cstat-no" title="statement not covered" > return 'variable';</span>
|
|
2534
|
+
}
|
|
2535
|
+
}
|
|
2536
|
+
|
|
2537
|
+
const bindAttr = <span class="cstat-no" title="statement not covered" >node.getAncestor<BindAttribute>('BindAttribute');</span>
|
|
2538
|
+
|
|
2539
|
+
<span class="cstat-no" title="statement not covered" > if (bindAttr) {</span>
|
|
2540
|
+
const interfaceInstance = <span class="cstat-no" title="statement not covered" >bindAttr.getAncestor<Interface>('Interface');</span>
|
|
2541
|
+
|
|
2542
|
+
<span class="cstat-no" title="statement not covered" > if (interfaceInstance?.params.find(<span class="fstat-no" title="function not covered" >(i</span>tem) => <span class="cstat-no" title="statement not covered" >item.name === propName)</span>) {</span>
|
|
2543
|
+
<span class="cstat-no" title="statement not covered" > return 'param';</span>
|
|
2544
|
+
}
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2547
|
+
<span class="cstat-no" title="statement not covered" > return 'variable';</span>
|
|
2548
|
+
}
|
|
2549
|
+
|
|
2550
|
+
/**
|
|
2551
|
+
* 把要返回去的数据做一下排序
|
|
2552
|
+
* @param result 要返回数据
|
|
2553
|
+
* @param node 当前内容的上下级
|
|
2554
|
+
* @returns 返回排序后的数组
|
|
2555
|
+
* 因为ts会按照 a-z的顺序进行排序
|
|
2556
|
+
* 但是影响用户体验,需要先按照页面排序,其次按照logic进行排序
|
|
2557
|
+
* 流程的韬哥自己解决了,所以先解决这两部分
|
|
2558
|
+
*/
|
|
2559
|
+
function <span class="fstat-no" title="function not covered" >sortFirstVariableData(</span>result: CompletionProperty[], node: BaseNode) {
|
|
2560
|
+
const newResult: CompletionProperty[] = <span class="cstat-no" title="statement not covered" >[];</span>
|
|
2561
|
+
const logic = (<span class="cstat-no" title="statement not covered" >node as Param).logic;</span>
|
|
2562
|
+
const view = (<span class="cstat-no" title="statement not covered" >node as Param).view;</span>
|
|
2563
|
+
<span class="cstat-no" title="statement not covered" > if (view) {</span>
|
|
2564
|
+
const { params, variables } = <span class="cstat-no" title="statement not covered" >view;</span>
|
|
2565
|
+
const list = <span class="cstat-no" title="statement not covered" >[...params, ...variables];</span>
|
|
2566
|
+
<span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2567
|
+
const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) => <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
|
|
2568
|
+
<span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
|
|
2569
|
+
<span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
|
|
2570
|
+
<span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
|
|
2571
|
+
}
|
|
2572
|
+
});
|
|
2573
|
+
}
|
|
2574
|
+
<span class="cstat-no" title="statement not covered" > if (logic) {</span>
|
|
2575
|
+
const { params, returns, variables } = <span class="cstat-no" title="statement not covered" >logic;</span>
|
|
2576
|
+
const list = <span class="cstat-no" title="statement not covered" >[...params, ...returns, ...variables];</span>
|
|
2577
|
+
<span class="cstat-no" title="statement not covered" > list.forEach(<span class="fstat-no" title="function not covered" >(i</span>tem) => {</span>
|
|
2578
|
+
const findIndex = <span class="cstat-no" title="statement not covered" >result.findIndex(<span class="fstat-no" title="function not covered" >(f</span>indItem) => <span class="cstat-no" title="statement not covered" >findItem.name === item.name)</span>;</span>
|
|
2579
|
+
<span class="cstat-no" title="statement not covered" > if (findIndex !== -1) {</span>
|
|
2580
|
+
<span class="cstat-no" title="statement not covered" > newResult.push(result[findIndex]);</span>
|
|
2581
|
+
<span class="cstat-no" title="statement not covered" > result.splice(findIndex, 1);</span>
|
|
2582
|
+
}
|
|
2583
|
+
});
|
|
2584
|
+
}
|
|
2585
|
+
<span class="cstat-no" title="statement not covered" > newResult.push(...result);</span>
|
|
2586
|
+
<span class="cstat-no" title="statement not covered" > return newResult;</span>
|
|
2587
|
+
}
|
|
2588
|
+
export function <span class="fstat-no" title="function not covered" >formatBackendVariables(</span>variables: Array<BackendVariable>) {
|
|
2589
|
+
const result = <span class="cstat-no" title="statement not covered" >variables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) => {</span>
|
|
2590
|
+
const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
|
|
2591
|
+
const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
2592
|
+
name: itemNode.name,
|
|
2593
|
+
value: itemNode.name,
|
|
2594
|
+
expression: new Identifier({
|
|
2595
|
+
name: itemNode.name,
|
|
2596
|
+
namespace,
|
|
2597
|
+
}),
|
|
2598
|
+
};
|
|
2599
|
+
const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
|
|
2600
|
+
|
|
2601
|
+
<span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
|
|
2602
|
+
<span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);</span>
|
|
2603
|
+
}
|
|
2604
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
|
|
2605
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'backendVariable';</span>
|
|
2606
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2607
|
+
});
|
|
2608
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
2609
|
+
}
|
|
2610
|
+
export function <span class="fstat-no" title="function not covered" >formatFrontEndVariables(</span>frontEndVariables: Array<Variable>) {
|
|
2611
|
+
const result = <span class="cstat-no" title="statement not covered" >frontEndVariables.map(<span class="fstat-no" title="function not covered" >(i</span>temNode) => {</span>
|
|
2612
|
+
const namespace = <span class="cstat-no" title="statement not covered" >itemNode.getNamespace();</span>
|
|
2613
|
+
const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
2614
|
+
name: itemNode.name,
|
|
2615
|
+
value: itemNode.name,
|
|
2616
|
+
expression: new Identifier({
|
|
2617
|
+
name: itemNode.name,
|
|
2618
|
+
namespace,
|
|
2619
|
+
}),
|
|
2620
|
+
};
|
|
2621
|
+
const noChildType = <span class="cstat-no" title="statement not covered" >isNoChildType(itemNode.typeAnnotation?.typeKey);</span>
|
|
2622
|
+
|
|
2623
|
+
<span class="cstat-no" title="statement not covered" > if (!noChildType) {</span>
|
|
2624
|
+
<span class="cstat-no" title="statement not covered" > nextFindTypeChild(itemNode.typeAnnotation.typeKey, newItem, itemNode);</span>
|
|
2625
|
+
}
|
|
2626
|
+
const completionProperty = <span class="cstat-no" title="statement not covered" >new CompletionProperty(newItem);</span>
|
|
2627
|
+
<span class="cstat-no" title="statement not covered" > completionProperty.icon = 'frontendVariable';</span>
|
|
2628
|
+
<span class="cstat-no" title="statement not covered" > return completionProperty;</span>
|
|
2629
|
+
});
|
|
2630
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
2631
|
+
}
|
|
2632
|
+
|
|
2633
|
+
export function <span class="fstat-no" title="function not covered" >formatConfigProperties(</span>configProperties: Array<ConfigProperty>, isView: Boolean) {
|
|
2634
|
+
const result = <span class="cstat-no" title="statement not covered" >configProperties.reduce(<span class="fstat-no" title="function not covered" >(p</span>re: any, item) => {</span>
|
|
2635
|
+
const { isPrivate = <span class="branch-0 cbranch-no" title="branch not covered" >false </span>} = <span class="cstat-no" title="statement not covered" >item;</span>
|
|
2636
|
+
|
|
2637
|
+
<span class="cstat-no" title="statement not covered" > if (!isPrivate || !isView) {</span>
|
|
2638
|
+
const namespace = <span class="cstat-no" title="statement not covered" >item.getNamespace();</span>
|
|
2639
|
+
const newItem: any = <span class="cstat-no" title="statement not covered" >{</span>
|
|
2640
|
+
name: item.name,
|
|
2641
|
+
value: item.name,
|
|
2642
|
+
expression: new Identifier({
|
|
2643
|
+
name: item.name,
|
|
2644
|
+
namespace,
|
|
2645
|
+
}),
|
|
2646
|
+
icon: 'configProperty',
|
|
2647
|
+
calleewholeKey: item.calleewholeKey,
|
|
2648
|
+
};
|
|
2649
|
+
|
|
2650
|
+
<span class="cstat-no" title="statement not covered" > pre.push(newItem);</span>
|
|
2651
|
+
}
|
|
2652
|
+
<span class="cstat-no" title="statement not covered" > return pre;</span>
|
|
2653
|
+
}, []);
|
|
2654
|
+
// const result = configProperties.map((item) => {
|
|
2655
|
+
// const namespace = item.getNamespace();
|
|
2656
|
+
// const newItem: any = {
|
|
2657
|
+
// name: item.name,
|
|
2658
|
+
// value: item.name,
|
|
2659
|
+
// expression: new Identifier({
|
|
2660
|
+
// name: item.name,
|
|
2661
|
+
// namespace,
|
|
2662
|
+
// }),
|
|
2663
|
+
// icon: 'configProperty',
|
|
2664
|
+
// calleewholeKey: item.calleewholeKey,
|
|
2665
|
+
// };
|
|
2666
|
+
// return newItem;
|
|
2667
|
+
// });
|
|
2668
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
2669
|
+
}
|
|
2670
|
+
</pre></td></tr></table></pre>
|
|
2671
|
+
|
|
2672
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
2673
|
+
</div><!-- /wrapper -->
|
|
2674
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
2675
|
+
Code coverage generated by
|
|
2676
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2677
|
+
at 2023-10-18T11:36:07.885Z
|
|
2678
|
+
</div>
|
|
2679
|
+
<script src="../../prettify.js"></script>
|
|
2680
|
+
<script>
|
|
2681
|
+
window.onload = function () {
|
|
2682
|
+
prettyPrint();
|
|
2683
|
+
};
|
|
2684
|
+
</script>
|
|
2685
|
+
<script src="../../sorter.js"></script>
|
|
2686
|
+
<script src="../../block-navigation.js"></script>
|
|
2687
|
+
</body>
|
|
2688
|
+
</html>
|
|
2689
|
+
|