From 7ad570b5f5953247fe1caf865d9d4f864b538af0 Mon Sep 17 00:00:00 2001 From: Owen Mansel-Chan Date: Wed, 29 Oct 2025 12:03:32 +0000 Subject: [PATCH 01/57] Pretty print models in test Otherwise the test output changes when unrelated models are added. --- .../examples/NonceReuse/NonceReuse.expected | 47 ++++++++++--------- .../examples/NonceReuse/NonceReuse.qlref | 3 +- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected index cf03a9053eb5..ab2ca44ada4a 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.expected @@ -1,3 +1,8 @@ +#select +| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | +| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | +| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | +| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | edges | Test.java:19:38:19:40 | val : byte[] | Test.java:20:16:20:18 | val : byte[] | provenance | | | Test.java:20:16:20:18 | val : byte[] | Test.java:25:15:25:33 | getRandomWrapper1(...) : byte[] | provenance | | @@ -11,38 +16,41 @@ edges | Test.java:33:16:33:18 | val : byte[] | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:33:16:33:18 | val : byte[] | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | provenance | | | Test.java:36:32:36:40 | iv : byte[] | Test.java:37:54:37:55 | iv : byte[] | provenance | | -| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:40:47:40:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:37:54:37:55 | iv : byte[] | Test.java:37:34:37:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:45:21:45:40 | getRandomWrapper2A(...) : byte[] | Test.java:46:54:46:55 | iv : byte[] | provenance | | -| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:49:47:49:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:46:54:46:55 | iv : byte[] | Test.java:46:34:46:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:54:21:54:40 | getRandomWrapper2b(...) : byte[] | Test.java:55:54:55:55 | iv : byte[] | provenance | | -| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:58:47:58:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:55:54:55:55 | iv : byte[] | Test.java:55:34:55:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:63:21:63:40 | getRandomWrapper2b(...) : byte[] | Test.java:64:54:64:55 | iv : byte[] | provenance | | -| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:67:47:67:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:64:54:64:55 | iv : byte[] | Test.java:64:34:64:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:72:21:72:40 | getRandomWrapper2b(...) : byte[] | Test.java:73:55:73:56 | iv : byte[] | provenance | | -| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:45890 | +| Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:76:48:76:54 | ivSpec1 | provenance | Sink:MaD:1 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:73:55:73:56 | iv : byte[] | Test.java:73:35:73:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:73:55:73:56 | iv : byte[] | Test.java:79:55:79:56 | iv : byte[] | provenance | | -| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:45890 | +| Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | Test.java:82:49:82:55 | ivSpec2 | provenance | Sink:MaD:1 | | Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:79:55:79:56 | iv : byte[] | Test.java:79:35:79:57 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:88:38:88:39 | iv : byte[] | Test.java:89:54:89:55 | iv : byte[] | provenance | | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:45890 | -| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:93:51:93:56 | ivSpec | provenance | Sink:MaD:1 | +| Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:96:51:96:56 | ivSpec | provenance | Sink:MaD:1 | | Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:89:54:89:55 | iv : byte[] | Test.java:89:34:89:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | | Test.java:103:38:103:39 | iv : byte[] | Test.java:104:54:104:55 | iv : byte[] | provenance | | -| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:45890 | +| Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | Test.java:107:47:107:52 | ivSpec | provenance | Sink:MaD:1 | | Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | Config | -| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:45920 | +| Test.java:104:54:104:55 | iv : byte[] | Test.java:104:34:104:56 | new IvParameterSpec(...) : IvParameterSpec | provenance | MaD:2 | +models +| 1 | Sink: javax.crypto; Cipher; true; init; (int,Key,AlgorithmParameterSpec); ; Argument[2]; encryption-iv; manual | +| 2 | Summary: javax.crypto.spec; IvParameterSpec; true; IvParameterSpec; ; ; Argument[0]; Argument[this]; taint; manual | nodes | Test.java:19:38:19:40 | val : byte[] | semmle.label | val : byte[] | | Test.java:20:16:20:18 | val : byte[] | semmle.label | val : byte[] | @@ -84,8 +92,3 @@ nodes | Test.java:104:54:104:55 | iv : byte[] | semmle.label | iv : byte[] | | Test.java:107:47:107:52 | ivSpec | semmle.label | ivSpec | subpaths -#select -| Test.java:40:47:40:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:40:47:40:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:49:47:49:52 | Nonce | Nonce | -| Test.java:49:47:49:52 | ivSpec | Test.java:19:38:19:40 | val : byte[] | Test.java:49:47:49:52 | ivSpec | Nonce source is reused, see alternate sink $@ | Test.java:40:47:40:52 | Nonce | Nonce | -| Test.java:76:48:76:54 | ivSpec1 | Test.java:19:38:19:40 | val : byte[] | Test.java:76:48:76:54 | ivSpec1 | Nonce source is reused, see alternate sink $@ | Test.java:82:49:82:55 | Nonce | Nonce | -| Test.java:82:49:82:55 | ivSpec2 | Test.java:19:38:19:40 | val : byte[] | Test.java:82:49:82:55 | ivSpec2 | Nonce source is reused, see alternate sink $@ | Test.java:76:48:76:54 | Nonce | Nonce | diff --git a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref index 6f8aa4b838b8..9658a376bb90 100644 --- a/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref +++ b/java/ql/test/experimental/query-tests/quantum/examples/NonceReuse/NonceReuse.qlref @@ -1 +1,2 @@ -experimental/quantum/Examples/ReusedNonce.ql \ No newline at end of file +query: experimental/quantum/Examples/ReusedNonce.ql +postprocess: utils/test/PrettyPrintModels.ql From fef08afff9020323bba3276327b953d3371888d9 Mon Sep 17 00:00:00 2001 From: Taus Date: Wed, 29 Oct 2025 22:05:43 +0000 Subject: [PATCH 02/57] Python: Remove points-to to from `ControlFlowNode` Moves the existing points-to predicates to the newly added class `ControlFlowNodeWithPointsTo` which resides in the `LegacyPointsTo` module. (Existing code that uses these predicates should import this module, and references to `ControlFlowNode` should be changed to `ControlFlowNodeWithPointsTo`.) Also updates all existing points-to based code to do just this. --- python/ql/examples/snippets/store_none.ql | 3 +- python/ql/lib/LegacyPointsTo.qll | 121 ++++++++++++++++++ python/ql/lib/analysis/DefinitionTracking.qll | 21 +-- python/ql/lib/semmle/python/Exprs.qll | 13 +- python/ql/lib/semmle/python/Flow.qll | 90 ------------- python/ql/lib/semmle/python/Metrics.qll | 3 +- .../ql/lib/semmle/python/SpecialMethods.qll | 7 +- .../python/dataflow/old/Implementation.qll | 13 +- .../python/dataflow/old/TaintTracking.qll | 21 ++- .../python/dependencies/Dependencies.qll | 9 +- .../lib/semmle/python/objects/ObjectAPI.qll | 9 +- .../lib/semmle/python/types/ClassObject.qll | 7 +- .../ql/lib/semmle/python/types/Exceptions.qll | 17 ++- .../semmle/python/types/FunctionObject.qll | 23 ++-- python/ql/lib/semmle/python/types/Object.qll | 10 +- .../ql/lib/semmle/python/types/Properties.qll | 21 +-- .../semmle/python/values/StringAttributes.qll | 25 +++- .../src/Expressions/ContainsNonContainer.ql | 4 +- .../Formatting/AdvancedFormatting.qll | 11 +- python/ql/src/Expressions/HashedButNoHash.ql | 5 +- python/ql/src/Expressions/IsComparisons.qll | 7 +- .../ql/src/Expressions/TruncatedDivision.ql | 5 +- python/ql/src/Expressions/UseofApply.ql | 3 +- .../Imports/FromImportOfMutableAttribute.ql | 3 +- .../Statements/IterableStringOrSequence.ql | 3 +- .../ql/src/Statements/ModificationOfLocals.ql | 5 +- .../ql/src/Statements/NonIteratorInForLoop.ql | 3 +- .../src/Statements/ShouldUseWithStatement.ql | 3 +- .../Statements/StringConcatenationInLoop.ql | 3 +- python/ql/src/Statements/UseOfExit.ql | 3 +- python/ql/src/Testing/Mox.qll | 3 +- python/ql/src/Variables/MonkeyPatched.qll | 9 +- python/ql/src/Variables/ShadowGlobal.ql | 10 +- .../SuspiciousUnusedLoopIterationVariable.ql | 3 +- python/ql/src/Variables/UndefinedExport.ql | 13 +- python/ql/src/analysis/Consistency.ql | 11 +- python/ql/src/analysis/Efficiency.ql | 5 +- python/ql/src/analysis/ImportFailure.ql | 6 +- python/ql/src/analysis/PointsToFailure.ql | 3 +- .../ql/src/analysis/TypeInferenceFailure.ql | 3 +- .../PointsTo/class_properties/ClassValues.ql | 3 +- .../library-tests/PointsTo/imports/Runtime.ql | 3 +- .../PointsTo/imports2/Runtime.ql | 3 +- .../PointsTo/imports2/RuntimeWithType.ql | 3 +- .../PointsTo/origin_uniqueness/Origin.ql | 3 +- .../library-tests/PointsTo/attributes/Test.ql | 3 +- .../PointsTo/attributes/TestWithType.ql | 3 +- .../PointsTo/class_properties/ClassValues.ql | 3 +- .../library-tests/PointsTo/imports/Runtime.ql | 3 +- .../PointsTo/imports/RuntimeWithType.ql | 3 +- .../PointsTo/typehints/Values.ql | 3 +- .../library-tests/PointsTo/absent/Absent.ql | 3 +- .../PointsTo/calls/CallPointsTo.ql | 3 +- .../PointsTo/comparisons/PointsTo.ql | 3 +- .../library-tests/PointsTo/decorators/Test.ql | 3 +- .../PointsTo/general/GlobalPointsTo.ql | 3 +- .../PointsTo/general/LocalPointsTo.ql | 3 +- .../PointsTo/general/LocalPointsToType.ql | 3 +- .../PointsTo/guarded/PointsTo.ql | 3 +- .../PointsTo/guarded/PointsToWithType.ql | 3 +- .../PointsTo/import_star/Values.ql | 3 +- .../library-tests/PointsTo/indexing/Test.ql | 3 +- .../PointsTo/indexing/TestWithType.ql | 3 +- .../PointsTo/inheritance/Self.ql | 3 +- .../PointsTo/new/ImpliesDataflow.ql | 3 +- .../PointsTo/new/PointsToNone.ql | 3 +- .../test/library-tests/PointsTo/new/Values.ql | 3 +- .../PointsTo/properties/Values.ql | 3 +- .../missing/if-urlsplit-access/Test.ql | 3 +- .../regressions/missing/re-compile/Test.ql | 3 +- .../missing/uncalled-function/Test.ql | 3 +- .../regressions/wrong/classmethod/Test.ql | 5 +- .../PointsTo/super/SuperMethodCall.ql | 5 +- .../ql/test/library-tests/objects/Strings.ql | 3 +- .../taint/extensions/ExtensionsLib.qll | 3 +- 75 files changed, 410 insertions(+), 236 deletions(-) create mode 100644 python/ql/lib/LegacyPointsTo.qll diff --git a/python/ql/examples/snippets/store_none.ql b/python/ql/examples/snippets/store_none.ql index 57be82f229dc..b35c5fc84b4e 100644 --- a/python/ql/examples/snippets/store_none.ql +++ b/python/ql/examples/snippets/store_none.ql @@ -10,9 +10,10 @@ */ import python +private import LegacyPointsTo from SubscriptNode store where store.isStore() and - store.getIndex().pointsTo(Value::named("None")) + store.getIndex().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("None")) select store diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll new file mode 100644 index 000000000000..f195bc20a519 --- /dev/null +++ b/python/ql/lib/LegacyPointsTo.qll @@ -0,0 +1,121 @@ +/** + * DEPRECATED: Using the methods in this module may lead to a degradation of performance. Use at + * your own peril. + * + * This module contains legacy points-to predicates and methods for various classes in the + * points-to analysis. + * + * Existing code that depends on, say, points-to predicates on `ControlFlowNode` should be modified + * to use `ControlFlowNodeWithPointsTo` instead. In particular, if inside a method call chain such + * as + * + * `someCallNode.getFunction().pointsTo(...)` + * + * an explicit cast should be added as follows + * + * `someCallNode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(...)` + * + * Similarly, if a bound variable has type `ControlFlowNode`, and a points-to method is called on + * it, the type should be changed to `ControlFlowNodeWithPointsTo`. + */ + +private import python +private import semmle.python.pointsto.PointsTo + +/** + * An extension of `ControlFlowNode` that provides points-to predicates. + */ +class ControlFlowNodeWithPointsTo extends ControlFlowNode { + /** Gets the value that this ControlFlowNode points-to. */ + predicate pointsTo(Value value) { this.pointsTo(_, value, _) } + + /** Gets the value that this ControlFlowNode points-to. */ + Value pointsTo() { this.pointsTo(_, result, _) } + + /** Gets a value that this ControlFlowNode may points-to. */ + Value inferredValue() { this.pointsTo(_, result, _) } + + /** Gets the value and origin that this ControlFlowNode points-to. */ + predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } + + /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ + predicate pointsTo(Context context, Value value, ControlFlowNode origin) { + PointsTo::pointsTo(this, context, value, origin) + } + + /** + * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + */ + pragma[nomagic] + predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** Gets what this expression might "refer-to" in the given `context`. */ + pragma[nomagic] + predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { + not obj = unknownValue() and + not cls = theUnknownType() and + PointsTo::points_to(this, context, obj, cls, origin) + } + + /** + * Whether this flow node might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)` this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, ControlFlowNode origin) { + not obj = unknownValue() and + PointsTo::points_to(this, _, obj, _, origin) + } + + /** Equivalent to `this.refersTo(value, _)` */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Check whether this control-flow node has complete points-to information. + * This would mean that the analysis managed to infer an over approximation + * of possible values at runtime. + */ + predicate hasCompletePointsToSet() { + // If the tracking failed, then `this` will be its own "origin". In that + // case, we want to exclude nodes for which there is also a different + // origin, as that would indicate that some paths failed and some did not. + this.refersTo(_, _, this) and + not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) + or + // If `this` is a use of a variable, then we must have complete points-to + // for that variable. + exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) + } +} + +/** + * Check whether a SSA variable has complete points-to information. + * This would mean that the analysis managed to infer an overapproximation + * of possible values at runtime. + */ +private predicate varHasCompletePointsToSet(SsaVariable var) { + // Global variables may be modified non-locally or concurrently. + not var.getVariable() instanceof GlobalVariable and + ( + // If we have complete points-to information on the definition of + // this variable, then the variable has complete information. + var.getDefinition() + .(DefinitionNode) + .getValue() + .(ControlFlowNodeWithPointsTo) + .hasCompletePointsToSet() + or + // If this variable is a phi output, then we have complete + // points-to information about it if all phi inputs had complete + // information. + forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | + varHasCompletePointsToSet(phiInput) + ) + ) +} diff --git a/python/ql/lib/analysis/DefinitionTracking.qll b/python/ql/lib/analysis/DefinitionTracking.qll index e015d0f70a97..53f8e791cd8b 100644 --- a/python/ql/lib/analysis/DefinitionTracking.qll +++ b/python/ql/lib/analysis/DefinitionTracking.qll @@ -3,6 +3,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import IDEContextual @@ -36,22 +37,22 @@ private predicate jump_to_defn(ControlFlowNode use, Definition defn) { ) or exists(PythonModuleObject mod | - use.(ImportExprNode).refersTo(mod) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(mod) and defn.getAstNode() = mod.getModule() ) or exists(PythonModuleObject mod, string name | - use.(ImportMemberNode).getModule(name).refersTo(mod) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(mod) and scope_jump_to_defn_attribute(mod.getModule(), name, defn) ) or exists(PackageObject package | - use.(ImportExprNode).refersTo(package) and + use.(ImportExprNode).(ControlFlowNodeWithPointsTo).refersTo(package) and defn.getAstNode() = package.getInitModule().getModule() ) or exists(PackageObject package, string name | - use.(ImportMemberNode).getModule(name).refersTo(package) and + use.(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).refersTo(package) and scope_jump_to_defn_attribute(package.getInitModule().getModule(), name, defn) ) or @@ -230,7 +231,7 @@ private predicate module_and_name_for_import_star_helper( ModuleObject mod, string name, ImportStarNode im_star, ImportStarRefinement def ) { im_star = def.getDefiningNode() and - im_star.getModule().refersTo(mod) and + im_star.getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and name = def.getSourceVariable().getName() } @@ -239,7 +240,7 @@ pragma[noinline] private predicate variable_not_redefined_by_import_star(EssaVariable var, ImportStarRefinement def) { var = def.getInput() and exists(ModuleObject mod | - def.getDefiningNode().(ImportStarNode).getModule().refersTo(mod) and + def.getDefiningNode().(ImportStarNode).getModule().(ControlFlowNodeWithPointsTo).refersTo(mod) and not mod.exports(var.getSourceVariable().getName()) ) } @@ -352,7 +353,9 @@ private predicate scope_jump_to_defn_attribute(ImportTimeScope s, string name, D ) } -private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Definition defn) { +private predicate jump_to_defn_attribute( + ControlFlowNodeWithPointsTo use, string name, Definition defn +) { /* Local attribute */ exists(EssaVariable var | use = var.getASourceUse() and @@ -367,7 +370,7 @@ private predicate jump_to_defn_attribute(ControlFlowNode use, string name, Defin /* Super attributes */ exists(AttrNode f, SuperBoundMethod sbm, Object function | use = f.getObject(name) and - f.refersTo(sbm) and + f.(ControlFlowNodeWithPointsTo).refersTo(sbm) and function = sbm.getFunction(_) and function.getOrigin() = defn.getAstNode() ) @@ -408,7 +411,7 @@ private predicate attribute_assignment_jump_to_defn_attribute( private predicate sets_attribute(ArgumentRefinement def, string name) { exists(CallNode call | call = def.getDefiningNode() and - call.getFunction().refersTo(Object::builtin("setattr")) and + call.getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("setattr")) and def.getInput().getAUse() = call.getArg(0) and call.getArg(1).getNode().(StringLiteral).getText() = name ) diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index a7f67b0b80ea..e288078247a9 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.pointsto.PointsTo private import semmle.python.objects.ObjectInternal private import semmle.python.internal.CachedStages @@ -71,7 +72,9 @@ class Expr extends Expr_, AstNode { * Gets what this expression might "refer-to" in the given `context`. */ predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { - this.getAFlowNode().refersTo(context, obj, cls, origin.getAFlowNode()) + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .refersTo(context, obj, cls, origin.getAFlowNode()) } /** @@ -82,7 +85,7 @@ class Expr extends Expr_, AstNode { */ pragma[nomagic] predicate refersTo(Object obj, AstNode origin) { - this.getAFlowNode().refersTo(obj, origin.getAFlowNode()) + this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) } /** @@ -96,14 +99,16 @@ class Expr extends Expr_, AstNode { * in the given `context`. */ predicate pointsTo(Context context, Value value, AstNode origin) { - this.getAFlowNode().pointsTo(context, value, origin.getAFlowNode()) + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .pointsTo(context, value, origin.getAFlowNode()) } /** * Holds if this expression might "point-to" to `value` which is from `origin`. */ predicate pointsTo(Value value, AstNode origin) { - this.getAFlowNode().pointsTo(value, origin.getAFlowNode()) + this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) } /** diff --git a/python/ql/lib/semmle/python/Flow.qll b/python/ql/lib/semmle/python/Flow.qll index 621013adcd56..496c1abc52a1 100644 --- a/python/ql/lib/semmle/python/Flow.qll +++ b/python/ql/lib/semmle/python/Flow.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.pointsto.PointsTo private import semmle.python.internal.CachedStages private import codeql.controlflow.BasicBlock as BB @@ -144,56 +143,6 @@ class ControlFlowNode extends @py_flow_node { /** Whether this flow node is the first in its scope */ predicate isEntryNode() { py_scope_flow(this, _, -1) } - /** Gets the value that this ControlFlowNode points-to. */ - predicate pointsTo(Value value) { this.pointsTo(_, value, _) } - - /** Gets the value that this ControlFlowNode points-to. */ - Value pointsTo() { this.pointsTo(_, result, _) } - - /** Gets a value that this ControlFlowNode may points-to. */ - Value inferredValue() { this.pointsTo(_, result, _) } - - /** Gets the value and origin that this ControlFlowNode points-to. */ - predicate pointsTo(Value value, ControlFlowNode origin) { this.pointsTo(_, value, origin) } - - /** Gets the value and origin that this ControlFlowNode points-to, given the context. */ - predicate pointsTo(Context context, Value value, ControlFlowNode origin) { - PointsTo::pointsTo(this, context, value, origin) - } - - /** - * Gets what this flow node might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - */ - pragma[nomagic] - predicate refersTo(Object obj, ClassObject cls, ControlFlowNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** Gets what this expression might "refer-to" in the given `context`. */ - pragma[nomagic] - predicate refersTo(Context context, Object obj, ClassObject cls, ControlFlowNode origin) { - not obj = unknownValue() and - not cls = theUnknownType() and - PointsTo::points_to(this, context, obj, cls, origin) - } - - /** - * Whether this flow node might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)` this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, ControlFlowNode origin) { - not obj = unknownValue() and - PointsTo::points_to(this, _, obj, _, origin) - } - - /** Equivalent to `this.refersTo(value, _)` */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - /** Gets the basic block containing this flow node */ BasicBlock getBasicBlock() { result.contains(this) } @@ -259,23 +208,6 @@ class ControlFlowNode extends @py_flow_node { ) } - /** - * Check whether this control-flow node has complete points-to information. - * This would mean that the analysis managed to infer an over approximation - * of possible values at runtime. - */ - predicate hasCompletePointsToSet() { - // If the tracking failed, then `this` will be its own "origin". In that - // case, we want to exclude nodes for which there is also a different - // origin, as that would indicate that some paths failed and some did not. - this.refersTo(_, _, this) and - not exists(ControlFlowNode other | other != this and this.refersTo(_, _, other)) - or - // If `this` is a use of a variable, then we must have complete points-to - // for that variable. - exists(SsaVariable v | v.getAUse() = this | varHasCompletePointsToSet(v)) - } - /** Whether this strictly dominates other. */ pragma[inline] predicate strictlyDominates(ControlFlowNode other) { @@ -332,28 +264,6 @@ private class AnyNode extends ControlFlowNode { override AstNode getNode() { result = super.getNode() } } -/** - * Check whether a SSA variable has complete points-to information. - * This would mean that the analysis managed to infer an overapproximation - * of possible values at runtime. - */ -private predicate varHasCompletePointsToSet(SsaVariable var) { - // Global variables may be modified non-locally or concurrently. - not var.getVariable() instanceof GlobalVariable and - ( - // If we have complete points-to information on the definition of - // this variable, then the variable has complete information. - var.getDefinition().(DefinitionNode).getValue().hasCompletePointsToSet() - or - // If this variable is a phi output, then we have complete - // points-to information about it if all phi inputs had complete - // information. - forex(SsaVariable phiInput | phiInput = var.getAPhiInput() | - varHasCompletePointsToSet(phiInput) - ) - ) -} - /** A control flow node corresponding to a call expression, such as `func(...)` */ class CallNode extends ControlFlowNode { CallNode() { toAst(this) instanceof Call } diff --git a/python/ql/lib/semmle/python/Metrics.qll b/python/ql/lib/semmle/python/Metrics.qll index e5130ba000f5..16d89711eea3 100644 --- a/python/ql/lib/semmle/python/Metrics.qll +++ b/python/ql/lib/semmle/python/Metrics.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** The metrics for a function */ class FunctionMetrics extends Function { @@ -59,7 +60,7 @@ class FunctionMetrics extends Function { not non_coupling_method(result) and exists(Call call | call.getScope() = this | exists(FunctionObject callee | callee.getFunction() = result | - call.getAFlowNode().getFunction().refersTo(callee) + call.getAFlowNode().getFunction().(ControlFlowNodeWithPointsTo).refersTo(callee) ) or exists(Attribute a | call.getFunc() = a | diff --git a/python/ql/lib/semmle/python/SpecialMethods.qll b/python/ql/lib/semmle/python/SpecialMethods.qll index a5832ae45ae1..ea9e753d0f89 100644 --- a/python/ql/lib/semmle/python/SpecialMethods.qll +++ b/python/ql/lib/semmle/python/SpecialMethods.qll @@ -9,6 +9,7 @@ */ private import python +private import LegacyPointsTo /** A control flow node which might correspond to a special method call. */ class PotentialSpecialMethodCallNode extends ControlFlowNode instanceof SpecialMethod::Potential { } @@ -106,7 +107,11 @@ class SpecialMethodCallNode extends PotentialSpecialMethodCallNode { SpecialMethodCallNode() { exists(SpecialMethod::Potential pot | this = pot and - pot.getSelf().pointsTo().getClass().lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod + pot.getSelf() + .(ControlFlowNodeWithPointsTo) + .pointsTo() + .getClass() + .lookup(pot.getSpecialMethodName()) = resolvedSpecialMethod ) } diff --git a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll index 19197f4bd306..83476db803c6 100644 --- a/python/ql/lib/semmle/python/dataflow/old/Implementation.qll +++ b/python/ql/lib/semmle/python/dataflow/old/Implementation.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.Filters as Filters @@ -374,7 +375,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi exists(ModuleValue m, string name | src = TTaintTrackingNode_(_, context, path, kind, this) and this.moduleAttributeTainted(m, name, src) and - node.asCfgNode().(ImportMemberNode).getModule(name).pointsTo(m) + node.asCfgNode().(ImportMemberNode).getModule(name).(ControlFlowNodeWithPointsTo).pointsTo(m) ) } @@ -408,7 +409,9 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi src = TTaintTrackingNode_(srcnode, context, srcpath, srckind, this) and exists(CallNode call, ControlFlowNode arg | call = node.asCfgNode() and - call.getFunction().pointsTo(ObjectInternal::builtin("getattr")) and + call.getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("getattr")) and arg = call.getArg(0) and attrname = call.getArg(1).getNode().(StringLiteral).getText() and arg = srcnode.asCfgNode() @@ -515,7 +518,7 @@ class TaintTrackingImplementation extends string instanceof TaintTracking::Confi TaintTrackingContext caller, TaintTrackingContext callee ) { exists(ClassValue cls | - call.getFunction().pointsTo(cls) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(cls) and cls.lookup("__init__") = init | exists(int arg, TaintKind callerKind, AttributePath callerPath, DataFlow::Node argument | @@ -878,7 +881,7 @@ private class EssaTaintTracking extends string instanceof TaintTracking::Configu const.getNode() instanceof ImmutableLiteral ) or - exists(ControlFlowNode c, ClassValue cls | + exists(ControlFlowNodeWithPointsTo c, ClassValue cls | Filters::isinstance(test, c, use) and c.pointsTo(cls) | @@ -978,7 +981,7 @@ module Implementation { tonode.getArg(0) = fromnode ) or - tonode.getFunction().pointsTo(ObjectInternal::builtin("reversed")) and + tonode.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(ObjectInternal::builtin("reversed")) and tonode.getArg(0) = fromnode } } diff --git a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll index 0ce4bc27790e..15459a310438 100644 --- a/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll +++ b/python/ql/lib/semmle/python/dataflow/old/TaintTracking.qll @@ -87,6 +87,7 @@ */ import python +private import LegacyPointsTo private import semmle.python.pointsto.Filters as Filters private import semmle.python.objects.ObjectInternal private import semmle.python.dataflow.Implementation @@ -267,7 +268,11 @@ module DictKind { Implementation::copyCall(fromnode, tonode) and edgeLabel = "dict copy" or - tonode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + tonode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and tonode.(CallNode).getArg(0) = fromnode and edgeLabel = "dict() call" } @@ -615,7 +620,7 @@ module DataFlow { TCfgNode(ControlFlowNode node) abstract class Node extends TDataFlowNode { - abstract ControlFlowNode asCfgNode(); + abstract ControlFlowNodeWithPointsTo asCfgNode(); abstract EssaVariable asVariable(); @@ -632,7 +637,7 @@ module DataFlow { } class CfgNode extends Node, TCfgNode { - override ControlFlowNode asCfgNode() { this = TCfgNode(result) } + override ControlFlowNodeWithPointsTo asCfgNode() { this = TCfgNode(result) } override EssaVariable asVariable() { none() } @@ -647,7 +652,7 @@ module DataFlow { } class EssaNode extends Node, TEssaNode { - override ControlFlowNode asCfgNode() { none() } + override ControlFlowNodeWithPointsTo asCfgNode() { none() } override EssaVariable asVariable() { this = TEssaNode(result) } @@ -668,7 +673,11 @@ pragma[noinline] private predicate dict_construct(ControlFlowNode itemnode, ControlFlowNode dictnode) { dictnode.(DictNode).getAValue() = itemnode or - dictnode.(CallNode).getFunction().pointsTo(ObjectInternal::builtin("dict")) and + dictnode + .(CallNode) + .getFunction() + .(ControlFlowNodeWithPointsTo) + .pointsTo(ObjectInternal::builtin("dict")) and dictnode.(CallNode).getArgByName(_) = itemnode } @@ -688,7 +697,7 @@ private predicate sequence_construct(ControlFlowNode itemnode, ControlFlowNode s pragma[noinline] private predicate sequence_call(ControlFlowNode fromnode, CallNode tonode) { tonode.getArg(0) = fromnode and - exists(ControlFlowNode cls | cls = tonode.getFunction() | + exists(ControlFlowNodeWithPointsTo cls | cls = tonode.getFunction() | cls.pointsTo(ObjectInternal::builtin("list")) or cls.pointsTo(ObjectInternal::builtin("tuple")) diff --git a/python/ql/lib/semmle/python/dependencies/Dependencies.qll b/python/ql/lib/semmle/python/dependencies/Dependencies.qll index 6f70c7e4ec06..a224ad1b9601 100644 --- a/python/ql/lib/semmle/python/dependencies/Dependencies.qll +++ b/python/ql/lib/semmle/python/dependencies/Dependencies.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dependencies.DependencyKind private predicate importDependency(Object target, AstNode source) { @@ -59,7 +60,7 @@ class PythonUse extends DependencyKind { interesting(target) and this = this and source != target.(ControlFlowNode).getNode() and - exists(ControlFlowNode use, Object obj | + exists(ControlFlowNodeWithPointsTo use, Object obj | use.getNode() = source and use.refersTo(obj) and use.isLoad() @@ -114,12 +115,14 @@ private predicate attribute_access_dependency(Object target, AstNode source) { private predicate use_of_attribute(Attribute attr, Scope s, string name) { exists(AttrNode cfg | cfg.isLoad() and cfg.getNode() = attr | - exists(Object obj | cfg.getObject(name).refersTo(obj) | + exists(Object obj | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(obj) | s = obj.(PythonModuleObject).getModule() or s = obj.(ClassObject).getPyClass() ) or - exists(ClassObject cls | cfg.getObject(name).refersTo(_, cls, _) | s = cls.getPyClass()) + exists(ClassObject cls | cfg.getObject(name).(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) | + s = cls.getPyClass() + ) ) or exists(SelfAttributeRead sar | sar = attr | diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index 4a36ec6d847f..26c57a78c179 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo private import TObject private import semmle.python.objects.ObjectInternal private import semmle.python.pointsto.PointsTo @@ -704,12 +705,14 @@ abstract class FunctionValue extends CallableValue { abstract ClassValue getARaisedType(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().pointsTo() = this } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = this + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().pointsTo() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).pointsTo() = bm and bm.getFunction() = this ) } @@ -753,7 +756,7 @@ class PythonFunctionValue extends FunctionValue { * explicit return nodes that we can query and get the class of. */ - result = this.getAReturnedNode().pointsTo().getClass() + result = this.getAReturnedNode().(ControlFlowNodeWithPointsTo).pointsTo().getClass() } } diff --git a/python/ql/lib/semmle/python/types/ClassObject.qll b/python/ql/lib/semmle/python/types/ClassObject.qll index e3ad51ea1626..6954a83463c6 100644 --- a/python/ql/lib/semmle/python/types/ClassObject.qll +++ b/python/ql/lib/semmle/python/types/ClassObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.Classes private import semmle.python.objects.Instances private import semmle.python.pointsto.PointsTo @@ -193,7 +194,9 @@ class ClassObject extends Object { * It is guaranteed that getProbableSingletonInstance() returns at most one Object for each ClassObject. */ Object getProbableSingletonInstance() { - exists(ControlFlowNode use, Expr origin | use.refersTo(result, this, origin.getAFlowNode()) | + exists(ControlFlowNodeWithPointsTo use, Expr origin | + use.refersTo(result, this, origin.getAFlowNode()) + | this.hasStaticallyUniqueInstance() and /* Ensure that original expression will be executed only one. */ origin.getScope() instanceof ImportTimeScope and @@ -351,7 +354,7 @@ class ClassObject extends Object { * Gets a call to this class. Note that the call may not create a new instance of * this class, as that depends on the `__new__` method of this class. */ - CallNode getACall() { result.getFunction().refersTo(this) } + CallNode getACall() { result.getFunction().(ControlFlowNodeWithPointsTo).refersTo(this) } override predicate notClass() { none() } } diff --git a/python/ql/lib/semmle/python/types/Exceptions.qll b/python/ql/lib/semmle/python/types/Exceptions.qll index 93bace1cf516..5e982aa01346 100644 --- a/python/ql/lib/semmle/python/types/Exceptions.qll +++ b/python/ql/lib/semmle/python/types/Exceptions.qll @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /** The subset of ControlFlowNodes which might raise an exception */ class RaisingNode extends ControlFlowNode { @@ -30,7 +31,9 @@ class RaisingNode extends ControlFlowNode { ) } - private predicate quits() { this.(CallNode).getFunction().refersTo(Object::quitter(_)) } + private predicate quits() { + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::quitter(_)) + } /** * Gets the type of an exception that may be raised @@ -68,7 +71,7 @@ class RaisingNode extends ControlFlowNode { private ClassObject localRaisedType_objectapi() { result.isSubclassOf(theBaseExceptionType()) and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.refersTo(result) or ex.refersTo(_, result, _)) ) @@ -95,7 +98,7 @@ class RaisingNode extends ControlFlowNode { private ClassValue localRaisedType() { result.getASuperType() = ClassValue::baseException() and ( - exists(ControlFlowNode ex | + exists(ControlFlowNodeWithPointsTo ex | ex = this.getExceptionNode() and (ex.pointsTo(result) or ex.pointsTo().getClass() = result) ) @@ -153,7 +156,9 @@ class RaisingNode extends ControlFlowNode { /* Call to an unknown object */ this.getNode() instanceof Call and not exists(FunctionObject func | this = func.getACall()) and - not exists(ClassObject known | this.(CallNode).getFunction().refersTo(known)) + not exists(ClassObject known | + this.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(known) + ) or this.getNode() instanceof Exec or @@ -371,7 +376,7 @@ class ExceptFlowNode extends ControlFlowNode { * Gets the type handled by this exception handler. * `ExceptionType` in `except ExceptionType as e:` */ - ControlFlowNode getType() { + ControlFlowNodeWithPointsTo getType() { exists(ExceptStmt ex | this.getBasicBlock().dominates(result.getBasicBlock()) and ex = this.getNode() and @@ -470,7 +475,7 @@ class ExceptGroupFlowNode extends ControlFlowNode { } } -private ControlFlowNode element_from_tuple_objectapi(Object tuple) { +private ControlFlowNodeWithPointsTo element_from_tuple_objectapi(Object tuple) { exists(Tuple t | t = tuple.getOrigin() and result = t.getAnElt().getAFlowNode()) } diff --git a/python/ql/lib/semmle/python/types/FunctionObject.qll b/python/ql/lib/semmle/python/types/FunctionObject.qll index f64c02b9c6bf..72ddb9411fb1 100644 --- a/python/ql/lib/semmle/python/types/FunctionObject.qll +++ b/python/ql/lib/semmle/python/types/FunctionObject.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.types.Exceptions private import semmle.python.pointsto.PointsTo private import semmle.python.objects.Callables @@ -32,27 +33,31 @@ abstract class FunctionObject extends Object { abstract string descriptiveString(); /** Gets a call-site from where this function is called as a function */ - CallNode getAFunctionCall() { result.getFunction().inferredValue() = this.theCallable() } + CallNode getAFunctionCall() { + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = this.theCallable() + } /** Gets a call-site from where this function is called as a method */ CallNode getAMethodCall() { exists(BoundMethodObjectInternal bm | - result.getFunction().inferredValue() = bm and + result.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and bm.getFunction() = this.theCallable() ) } /** Gets a call-site from where this function is called */ - ControlFlowNode getACall() { result = this.theCallable().getACall() } + ControlFlowNodeWithPointsTo getACall() { result = this.theCallable().getACall() } /** Gets a call-site from where this function is called, given the `context` */ - ControlFlowNode getACall(Context context) { result = this.theCallable().getACall(context) } + ControlFlowNodeWithPointsTo getACall(Context context) { + result = this.theCallable().getACall(context) + } /** * Gets the `ControlFlowNode` that will be passed as the nth argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the zeroth argument. */ - ControlFlowNode getArgumentForCall(CallNode call, int n) { + ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { result = this.theCallable().getArgumentForCall(call, n) } @@ -60,7 +65,7 @@ abstract class FunctionObject extends Object { * Gets the `ControlFlowNode` that will be passed as the named argument to `this` when called at `call`. * This predicate will correctly handle `x.y()`, treating `x` as the self argument. */ - ControlFlowNode getNamedArgumentForCall(CallNode call, string name) { + ControlFlowNodeWithPointsTo getNamedArgumentForCall(CallNode call, string name) { result = this.theCallable().getNamedArgumentForCall(call, name) } @@ -134,7 +139,9 @@ class PyFunctionObject extends FunctionObject { override predicate raisesUnknownType() { scope_raises_unknown(this.getFunction()) } /** Gets a control flow node corresponding to the value of a return statement */ - ControlFlowNode getAReturnedNode() { result = this.getFunction().getAReturnValueFlowNode() } + ControlFlowNodeWithPointsTo getAReturnedNode() { + result = this.getFunction().getAReturnValueFlowNode() + } override string descriptiveString() { if this.getFunction().isMethod() @@ -216,7 +223,7 @@ abstract class BuiltinCallable extends FunctionObject { abstract override string getQualifiedName(); - override ControlFlowNode getArgumentForCall(CallNode call, int n) { + override ControlFlowNodeWithPointsTo getArgumentForCall(CallNode call, int n) { call = this.getACall() and result = call.getArg(n) } } diff --git a/python/ql/lib/semmle/python/types/Object.qll b/python/ql/lib/semmle/python/types/Object.qll index 6c76067dc68e..1e0868648be0 100644 --- a/python/ql/lib/semmle/python/types/Object.qll +++ b/python/ql/lib/semmle/python/types/Object.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo private import semmle.python.objects.ObjectInternal private import semmle.python.types.Builtins private import semmle.python.internal.CachedStages @@ -41,7 +42,7 @@ class Object extends @py_object { * for a control flow node 'f' */ ClassObject getAnInferredType() { - exists(ControlFlowNode somewhere | somewhere.refersTo(this, result, _)) + exists(ControlFlowNodeWithPointsTo somewhere | somewhere.refersTo(this, result, _)) or this.asBuiltin().getClass() = result.asBuiltin() and not this = unknownValue() or @@ -327,7 +328,7 @@ abstract class SequenceObject extends Object { Object getInferredElement(int n) { result = this.getBuiltinElement(n) or - this.getSourceElement(n).refersTo(result) + this.getSourceElement(n).(ControlFlowNodeWithPointsTo).refersTo(result) } } @@ -438,7 +439,8 @@ class SuperBoundMethod extends Object { string name; SuperBoundMethod() { - this.(AttrNode).getObject(name).inferredValue().getClass() = Value::named("super") + this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue().getClass() = + Value::named("super") } override string toString() { result = "super()." + name } @@ -446,7 +448,7 @@ class SuperBoundMethod extends Object { Object getFunction(string fname) { fname = name and exists(SuperInstance sup, BoundMethodObjectInternal m | - sup = this.(AttrNode).getObject(name).inferredValue() and + sup = this.(AttrNode).getObject(name).(ControlFlowNodeWithPointsTo).inferredValue() and sup.attribute(name, m, _) and result = m.getFunction().getSource() ) diff --git a/python/ql/lib/semmle/python/types/Properties.qll b/python/ql/lib/semmle/python/types/Properties.qll index a0efe6ca5eb9..899f0a3407ec 100644 --- a/python/ql/lib/semmle/python/types/Properties.qll +++ b/python/ql/lib/semmle/python/types/Properties.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** * A Python property: @@ -77,32 +78,32 @@ class BuiltinPropertyObject extends PropertyObject { } private predicate property_getter(CallNode decorated, FunctionObject getter) { - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(0).refersTo(getter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(getter) } private predicate property_setter(CallNode decorated, FunctionObject setter) { property_getter(decorated, _) and exists(CallNode setter_call, AttrNode prop_setter | - prop_setter.getObject("setter").refersTo(decorated) + prop_setter.getObject("setter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - setter_call.getArg(0).refersTo(setter) and + setter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(setter) and setter_call.getFunction() = prop_setter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(1).refersTo(setter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(1).(ControlFlowNodeWithPointsTo).refersTo(setter) } private predicate property_deleter(CallNode decorated, FunctionObject deleter) { property_getter(decorated, _) and exists(CallNode deleter_call, AttrNode prop_deleter | - prop_deleter.getObject("deleter").refersTo(decorated) + prop_deleter.getObject("deleter").(ControlFlowNodeWithPointsTo).refersTo(decorated) | - deleter_call.getArg(0).refersTo(deleter) and + deleter_call.getArg(0).(ControlFlowNodeWithPointsTo).refersTo(deleter) and deleter_call.getFunction() = prop_deleter ) or - decorated.getFunction().refersTo(thePropertyType()) and - decorated.getArg(2).refersTo(deleter) + decorated.getFunction().(ControlFlowNodeWithPointsTo).refersTo(thePropertyType()) and + decorated.getArg(2).(ControlFlowNodeWithPointsTo).refersTo(deleter) } diff --git a/python/ql/lib/semmle/python/values/StringAttributes.qll b/python/ql/lib/semmle/python/values/StringAttributes.qll index 792ee9232275..e94540dbf204 100644 --- a/python/ql/lib/semmle/python/values/StringAttributes.qll +++ b/python/ql/lib/semmle/python/values/StringAttributes.qll @@ -1,6 +1,10 @@ import python +private import LegacyPointsTo +private import semmle.python.types.Object +private import semmle.python.types.ClassObject +private import semmle.python.types.FunctionObject -predicate string_attribute_all(ControlFlowNode n, string attr) { +predicate string_attribute_all(ControlFlowNodeWithPointsTo n, string attr) { (n.getNode() instanceof Unicode or n.getNode() instanceof Bytes) and attr = "const" or @@ -19,18 +23,27 @@ predicate tracked_object(ControlFlowNode obj, string attr) { tracked_object_any(obj, attr) } -predicate open_file(Object obj) { obj.(CallNode).getFunction().refersTo(Object::builtin("open")) } +predicate open_file(Object obj) { + obj.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(Object::builtin("open")) +} -predicate string_attribute_any(ControlFlowNode n, string attr) { +predicate string_attribute_any(ControlFlowNodeWithPointsTo n, string attr) { attr = "user-input" and - exists(Object input | n.(CallNode).getFunction().refersTo(input) | + exists(Object input | n.(CallNode).getFunction().(ControlFlowNodeWithPointsTo).refersTo(input) | if major_version() = 2 then input = Object::builtin("raw_input") else input = Object::builtin("input") ) or attr = "file-input" and - exists(Object fd | n.(CallNode).getFunction().(AttrNode).getObject("read").refersTo(fd) | + exists(Object fd | + n.(CallNode) + .getFunction() + .(AttrNode) + .getObject("read") + .(ControlFlowNodeWithPointsTo) + .refersTo(fd) + | open_file(fd) ) or @@ -65,7 +78,7 @@ ControlFlowNode sequence_for_iterator(ControlFlowNode f) { } pragma[noinline] -private predicate tracking_step(ControlFlowNode src, ControlFlowNode dest) { +private predicate tracking_step(ControlFlowNode src, ControlFlowNodeWithPointsTo dest) { src = dest.(BinaryExprNode).getAnOperand() or src = dest.(UnaryExprNode).getOperand() diff --git a/python/ql/src/Expressions/ContainsNonContainer.ql b/python/ql/src/Expressions/ContainsNonContainer.ql index cf6af5ce7b18..fd2123dd436e 100644 --- a/python/ql/src/Expressions/ContainsNonContainer.ql +++ b/python/ql/src/Expressions/ContainsNonContainer.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { @@ -20,7 +21,8 @@ predicate rhs_in_expr(ControlFlowNode rhs, Compare cmp) { ) } -from ControlFlowNode non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin +from + ControlFlowNodeWithPointsTo non_seq, Compare cmp, Value v, ClassValue cls, ControlFlowNode origin where rhs_in_expr(non_seq, cmp) and non_seq.pointsTo(_, v, origin) and diff --git a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll index 7da80ffa0278..d98286d85faf 100644 --- a/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll +++ b/python/ql/src/Expressions/Formatting/AdvancedFormatting.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo /** A string constant that looks like it may be used in string formatting operations. */ class PossibleAdvancedFormatString extends StringLiteral { @@ -98,11 +99,15 @@ private predicate brace_pair(PossibleAdvancedFormatString fmt, int start, int en private predicate advanced_format_call(Call format_expr, PossibleAdvancedFormatString fmt, int args) { exists(CallNode call | call = format_expr.getAFlowNode() | - call.getFunction().pointsTo(Value::named("format")) and - call.getArg(0).pointsTo(_, fmt.getAFlowNode()) and + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("format")) and + call.getArg(0).(ControlFlowNodeWithPointsTo).pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) - 1 or - call.getFunction().(AttrNode).getObject("format").pointsTo(_, fmt.getAFlowNode()) and + call.getFunction() + .(AttrNode) + .getObject("format") + .(ControlFlowNodeWithPointsTo) + .pointsTo(_, fmt.getAFlowNode()) and args = count(format_expr.getAnArg()) ) } diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index eb86f3b55332..795865987603 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* * This assumes that any indexing operation where the value is not a sequence or numpy array involves hashing. @@ -41,13 +42,13 @@ predicate unhashable_subscript(ControlFlowNode f, ClassValue c, ControlFlowNode is_unhashable(f, c, origin) and exists(SubscriptNode sub | sub.getIndex() = f | exists(Value custom_getitem | - sub.getObject().pointsTo(custom_getitem) and + sub.getObject().(ControlFlowNodeWithPointsTo).pointsTo(custom_getitem) and not has_custom_getitem(custom_getitem) ) ) } -predicate is_unhashable(ControlFlowNode f, ClassValue cls, ControlFlowNode origin) { +predicate is_unhashable(ControlFlowNodeWithPointsTo f, ClassValue cls, ControlFlowNode origin) { exists(Value v | f.pointsTo(v, origin) and v.getClass() = cls | not cls.hasAttribute("__hash__") and not cls.failedInference(_) and cls.isNewStyle() or diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 7825d01999b9..25058206c862 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -1,6 +1,7 @@ /** INTERNAL - Helper predicates for queries that inspect the comparison of objects using `is`. */ import python +private import LegacyPointsTo /** Holds if the comparison `comp` uses `is` or `is not` (represented as `op`) to compare its `left` and `right` arguments. */ predicate comparison_using_is(Compare comp, ControlFlowNode left, Cmpop op, ControlFlowNode right) { @@ -42,7 +43,7 @@ predicate invalid_to_use_is_portably(ClassValue c) { } /** Holds if the control flow node `f` points to either `True`, `False`, or `None`. */ -predicate simple_constant(ControlFlowNode f) { +predicate simple_constant(ControlFlowNodeWithPointsTo f) { exists(Value val | f.pointsTo(val) | val = Value::named("True") or val = Value::named("False") or val = Value::named("None") ) @@ -84,7 +85,7 @@ predicate universally_interned_constant(Expr e) { } private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, ClassValue cls2) { - exists(ControlFlowNode op1, ControlFlowNode op2 | + exists(ControlFlowNodeWithPointsTo op1, ControlFlowNodeWithPointsTo op2 | comparison_using_is(comp, op1, op, op2) or comparison_using_is(comp, op2, op, op1) | op1.inferredValue().getClass() = cls1 and @@ -94,7 +95,7 @@ private predicate comparison_both_types(Compare comp, Cmpop op, ClassValue cls1, private predicate comparison_one_type(Compare comp, Cmpop op, ClassValue cls) { not comparison_both_types(comp, _, _, _) and - exists(ControlFlowNode operand | + exists(ControlFlowNodeWithPointsTo operand | comparison_using_is(comp, operand, op, _) or comparison_using_is(comp, _, op, operand) | operand.inferredValue().getClass() = cls diff --git a/python/ql/src/Expressions/TruncatedDivision.ql b/python/ql/src/Expressions/TruncatedDivision.ql index 54758b4b78e2..c731a21f7d26 100644 --- a/python/ql/src/Expressions/TruncatedDivision.ql +++ b/python/ql/src/Expressions/TruncatedDivision.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo from BinaryExpr div, ControlFlowNode left, ControlFlowNode right where @@ -20,9 +21,9 @@ where exists(BinaryExprNode bin, Value lval, Value rval | bin = div.getAFlowNode() and bin.getNode().getOp() instanceof Div and - bin.getLeft().pointsTo(lval, left) and + bin.getLeft().(ControlFlowNodeWithPointsTo).pointsTo(lval, left) and lval.getClass() = ClassValue::int_() and - bin.getRight().pointsTo(rval, right) and + bin.getRight().(ControlFlowNodeWithPointsTo).pointsTo(rval, right) and rval.getClass() = ClassValue::int_() and // Ignore instances where integer division leaves no remainder not lval.(NumericValue).getIntValue() % rval.(NumericValue).getIntValue() = 0 and diff --git a/python/ql/src/Expressions/UseofApply.ql b/python/ql/src/Expressions/UseofApply.ql index 7a0d72b43cf6..2012f2d93618 100644 --- a/python/ql/src/Expressions/UseofApply.ql +++ b/python/ql/src/Expressions/UseofApply.ql @@ -10,8 +10,9 @@ */ import python +private import LegacyPointsTo private import semmle.python.types.Builtins -from CallNode call, ControlFlowNode func +from CallNode call, ControlFlowNodeWithPointsTo func where major_version() = 2 and call.getFunction() = func and func.pointsTo(Value::named("apply")) select call, "Call to the obsolete builtin function 'apply'." diff --git a/python/ql/src/Imports/FromImportOfMutableAttribute.ql b/python/ql/src/Imports/FromImportOfMutableAttribute.ql index c66a7578de61..63198bece30c 100644 --- a/python/ql/src/Imports/FromImportOfMutableAttribute.ql +++ b/python/ql/src/Imports/FromImportOfMutableAttribute.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests from ImportMember im, ModuleValue m, AttrNode store_attr, string name @@ -23,7 +24,7 @@ where /* variable resulting from import must have a long lifetime */ not im.getScope() instanceof Function and store_attr.isStore() and - store_attr.getObject(name).pointsTo(m) and + store_attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(m) and /* Import not in same module as modification. */ not im.getEnclosingModule() = store_attr.getScope().getEnclosingModule() and /* Modification is not in a test */ diff --git a/python/ql/src/Statements/IterableStringOrSequence.ql b/python/ql/src/Statements/IterableStringOrSequence.ql index 5cf92754f622..d1c4a507f0d1 100644 --- a/python/ql/src/Statements/IterableStringOrSequence.ql +++ b/python/ql/src/Statements/IterableStringOrSequence.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import semmle.python.filters.Tests predicate has_string_type(Value v) { @@ -21,7 +22,7 @@ predicate has_string_type(Value v) { } from - For loop, ControlFlowNode iter, Value str, Value seq, ControlFlowNode seq_origin, + For loop, ControlFlowNodeWithPointsTo iter, Value str, Value seq, ControlFlowNode seq_origin, ControlFlowNode str_origin where loop.getIter().getAFlowNode() = iter and diff --git a/python/ql/src/Statements/ModificationOfLocals.ql b/python/ql/src/Statements/ModificationOfLocals.ql index 05c2095f88cb..e4791a410f7a 100644 --- a/python/ql/src/Statements/ModificationOfLocals.ql +++ b/python/ql/src/Statements/ModificationOfLocals.ql @@ -12,8 +12,11 @@ */ import python +private import LegacyPointsTo -predicate originIsLocals(ControlFlowNode n) { n.pointsTo(_, _, Value::named("locals").getACall()) } +predicate originIsLocals(ControlFlowNodeWithPointsTo n) { + n.pointsTo(_, _, Value::named("locals").getACall()) +} predicate modification_of_locals(ControlFlowNode f) { originIsLocals(f.(SubscriptNode).getObject()) and diff --git a/python/ql/src/Statements/NonIteratorInForLoop.ql b/python/ql/src/Statements/NonIteratorInForLoop.ql index 92527a10e3bb..f8e6e51b55ff 100644 --- a/python/ql/src/Statements/NonIteratorInForLoop.ql +++ b/python/ql/src/Statements/NonIteratorInForLoop.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from For loop, ControlFlowNode iter, Value v, ClassValue t, ControlFlowNode origin +from For loop, ControlFlowNodeWithPointsTo iter, Value v, ClassValue t, ControlFlowNode origin where loop.getIter().getAFlowNode() = iter and iter.pointsTo(_, v, origin) and diff --git a/python/ql/src/Statements/ShouldUseWithStatement.ql b/python/ql/src/Statements/ShouldUseWithStatement.ql index 2ad76b5c832d..eb5cf9237d57 100644 --- a/python/ql/src/Statements/ShouldUseWithStatement.ql +++ b/python/ql/src/Statements/ShouldUseWithStatement.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate calls_close(Call c) { exists(Attribute a | c.getFunc() = a and a.getName() = "close") } @@ -22,7 +23,7 @@ predicate only_stmt_in_finally(Try t, Call c) { ) } -predicate points_to_context_manager(ControlFlowNode f, ClassValue cls) { +predicate points_to_context_manager(ControlFlowNodeWithPointsTo f, ClassValue cls) { forex(Value v | f.pointsTo(v) | v.getClass() = cls) and cls.isContextManager() } diff --git a/python/ql/src/Statements/StringConcatenationInLoop.ql b/python/ql/src/Statements/StringConcatenationInLoop.ql index 563a42e5462a..c85292cf26aa 100644 --- a/python/ql/src/Statements/StringConcatenationInLoop.ql +++ b/python/ql/src/Statements/StringConcatenationInLoop.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo predicate string_concat_in_loop(BinaryExpr b) { b.getOp() instanceof Add and @@ -19,7 +20,7 @@ predicate string_concat_in_loop(BinaryExpr b) { | d.getDefinition().(DefinitionNode).getValue() = add and u.getAUse() = add.getAnOperand() and - add.getAnOperand().pointsTo().getClass() = ClassValue::str() + add.getAnOperand().(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::str() ) } diff --git a/python/ql/src/Statements/UseOfExit.ql b/python/ql/src/Statements/UseOfExit.ql index be3579481fcb..437ff93b5371 100644 --- a/python/ql/src/Statements/UseOfExit.ql +++ b/python/ql/src/Statements/UseOfExit.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo from CallNode call, string name -where call.getFunction().pointsTo(Value::siteQuitter(name)) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::siteQuitter(name)) select call, "The '" + name + "' site.Quitter object may not exist if the 'site' module is not loaded or is modified." diff --git a/python/ql/src/Testing/Mox.qll b/python/ql/src/Testing/Mox.qll index a131ca7eecaf..969c49c68438 100644 --- a/python/ql/src/Testing/Mox.qll +++ b/python/ql/src/Testing/Mox.qll @@ -1,9 +1,10 @@ import python +private import LegacyPointsTo /** Whether `mox` or `.StubOutWithMock()` is used in thin module `m`. */ predicate useOfMoxInModule(Module m) { exists(ModuleObject mox | mox.getName() = "mox" or mox.getName() = "mox3.mox" | - exists(ControlFlowNode use | + exists(ControlFlowNodeWithPointsTo use | use.refersTo(mox) and use.getScope().getEnclosingModule() = m ) diff --git a/python/ql/src/Variables/MonkeyPatched.qll b/python/ql/src/Variables/MonkeyPatched.qll index ab842afbf265..86d9edac0a9b 100644 --- a/python/ql/src/Variables/MonkeyPatched.qll +++ b/python/ql/src/Variables/MonkeyPatched.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate monkey_patched_builtin(string name) { exists(AttrNode attr, SubscriptNode subscr, StringLiteral s | @@ -6,19 +7,19 @@ predicate monkey_patched_builtin(string name) { subscr.getIndex().getNode() = s and s.getText() = name and subscr.getObject() = attr and - attr.getObject("__dict__").pointsTo(Module::builtinModule()) + attr.getObject("__dict__").(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) or - exists(CallNode call, ControlFlowNode bltn, StringLiteral s | + exists(CallNode call, ControlFlowNodeWithPointsTo bltn, StringLiteral s | call.getArg(0) = bltn and bltn.pointsTo(Module::builtinModule()) and call.getArg(1).getNode() = s and s.getText() = name and - call.getFunction().pointsTo(Value::named("setattr")) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(Value::named("setattr")) ) or exists(AttrNode attr | attr.isStore() and - attr.getObject(name).pointsTo(Module::builtinModule()) + attr.getObject(name).(ControlFlowNodeWithPointsTo).pointsTo(Module::builtinModule()) ) } diff --git a/python/ql/src/Variables/ShadowGlobal.ql b/python/ql/src/Variables/ShadowGlobal.ql index 2f06e4fe57d7..fad86935cf1d 100644 --- a/python/ql/src/Variables/ShadowGlobal.ql +++ b/python/ql/src/Variables/ShadowGlobal.ql @@ -15,6 +15,7 @@ */ import python +private import LegacyPointsTo import Shadowing import semmle.python.types.Builtins @@ -35,7 +36,9 @@ predicate shadows(Name d, GlobalVariable g, Function scope, int line) { /* pytest dynamically populates its namespace so, we cannot look directly for the pytest.fixture function */ AttrNode pytest_fixture_attr() { - exists(ModuleValue pytest | result.getObject("fixture").pointsTo(pytest)) + exists(ModuleValue pytest | + result.getObject("fixture").(ControlFlowNodeWithPointsTo).pointsTo(pytest) + ) } Value pytest_fixture() { @@ -44,14 +47,15 @@ Value pytest_fixture() { or call.getFunction().(CallNode).getFunction() = pytest_fixture_attr() | - call.pointsTo(result) + call.(ControlFlowNodeWithPointsTo).pointsTo(result) ) } /* pytest fixtures require that the parameter name is also a global */ predicate assigned_pytest_fixture(GlobalVariable v) { exists(NameNode def | - def.defines(v) and def.(DefinitionNode).getValue().pointsTo(pytest_fixture()) + def.defines(v) and + def.(DefinitionNode).getValue().(ControlFlowNodeWithPointsTo).pointsTo(pytest_fixture()) ) } diff --git a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql index fbeb9b2b4f96..87900c48fc58 100644 --- a/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql +++ b/python/ql/src/Variables/SuspiciousUnusedLoopIterationVariable.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Definition predicate is_increment(Stmt s) { @@ -55,7 +56,7 @@ predicate points_to_call_to_range(ControlFlowNode f) { ) or /* Handle list(range(...)) and list(list(range(...))) */ - f.(CallNode).pointsTo().getClass() = ClassValue::list() and + f.(CallNode).(ControlFlowNodeWithPointsTo).pointsTo().getClass() = ClassValue::list() and points_to_call_to_range(f.(CallNode).getArg(0)) } diff --git a/python/ql/src/Variables/UndefinedExport.ql b/python/ql/src/Variables/UndefinedExport.ql index 173139e224a8..ff3f78ec4bcc 100644 --- a/python/ql/src/Variables/UndefinedExport.ql +++ b/python/ql/src/Variables/UndefinedExport.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo /** Whether name is declared in the __all__ list of this module */ predicate declaredInAll(Module m, StringLiteral name) { @@ -44,7 +45,7 @@ predicate mutates_globals(ModuleValue m) { enum_convert = enum_class.attr("_convert") and exists(CallNode call | call.getScope() = m.getScope() | enum_convert.getACall() = call or - call.getFunction().pointsTo(enum_convert) + call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(enum_convert) ) ) or @@ -52,7 +53,11 @@ predicate mutates_globals(ModuleValue m) { // analysis doesn't handle that well enough. So we need a special case for this not exists(enum_class.attr("_convert")) and exists(CallNode call | call.getScope() = m.getScope() | - call.getFunction().(AttrNode).getObject(["_convert", "_convert_"]).pointsTo() = enum_class + call.getFunction() + .(AttrNode) + .getObject(["_convert", "_convert_"]) + .(ControlFlowNodeWithPointsTo) + .pointsTo() = enum_class ) ) ) @@ -65,9 +70,9 @@ predicate is_exported_submodule_name(ModuleValue m, string exported_name) { predicate contains_unknown_import_star(ModuleValue m) { exists(ImportStarNode imp | imp.getEnclosingModule() = m.getScope() | - imp.getModule().pointsTo().isAbsent() + imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo().isAbsent() or - not exists(imp.getModule().pointsTo()) + not exists(imp.getModule().(ControlFlowNodeWithPointsTo).pointsTo()) ) } diff --git a/python/ql/src/analysis/Consistency.ql b/python/ql/src/analysis/Consistency.ql index f7d80a5da957..aafb461a5045 100644 --- a/python/ql/src/analysis/Consistency.ql +++ b/python/ql/src/analysis/Consistency.ql @@ -5,6 +5,7 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking predicate uniqueness_error(int number, string what, string problem) { @@ -208,18 +209,22 @@ predicate function_object_consistency(string clsname, string problem, string wha predicate multiple_origins_per_object(Object obj) { not obj.isC() and not obj instanceof ModuleObject and - exists(ControlFlowNode use, Context ctx | + exists(ControlFlowNodeWithPointsTo use, Context ctx | strictcount(ControlFlowNode orig | use.refersTo(ctx, obj, _, orig)) > 1 ) } -predicate intermediate_origins(ControlFlowNode use, ControlFlowNode inter, Object obj) { +predicate intermediate_origins( + ControlFlowNodeWithPointsTo use, ControlFlowNodeWithPointsTo inter, Object obj +) { exists(ControlFlowNode orig, Context ctx | not inter = orig | use.refersTo(ctx, obj, _, inter) and inter.refersTo(ctx, obj, _, orig) and // It can sometimes happen that two different modules (e.g. cPickle and Pickle) // have the same attribute, but different origins. - not strictcount(Object val | inter.(AttrNode).getObject().refersTo(val)) > 1 + not strictcount(Object val | + inter.(AttrNode).getObject().(ControlFlowNodeWithPointsTo).refersTo(val) + ) > 1 ) } diff --git a/python/ql/src/analysis/Efficiency.ql b/python/ql/src/analysis/Efficiency.ql index ff44fc2c47d0..37cb5c973879 100644 --- a/python/ql/src/analysis/Efficiency.ql +++ b/python/ql/src/analysis/Efficiency.ql @@ -4,6 +4,7 @@ */ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext @@ -18,11 +19,11 @@ predicate trivial(ControlFlowNode f) { from int interesting_facts, int interesting_facts_in_source, int total_size, float efficiency where interesting_facts = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) ) and interesting_facts_in_source = - strictcount(ControlFlowNode f, Object value, ClassObject cls | + strictcount(ControlFlowNodeWithPointsTo f, Object value, ClassObject cls | f.refersTo(value, cls, _) and not trivial(f) and exists(f.getScope().getEnclosingModule().getFile().getRelativePath()) diff --git a/python/ql/src/analysis/ImportFailure.ql b/python/ql/src/analysis/ImportFailure.ql index 62de72f3b3ea..9dd6ac52adcf 100644 --- a/python/ql/src/analysis/ImportFailure.ql +++ b/python/ql/src/analysis/ImportFailure.ql @@ -7,6 +7,7 @@ */ import python +private import LegacyPointsTo ImportExpr alternative_import(ImportExpr ie) { exists(Alias thisalias, Alias otheralias | @@ -62,7 +63,10 @@ class VersionTest extends ControlFlowNode { VersionTest() { exists(string name | name.matches("%version%") and - this.(CompareNode).getAChild+().pointsTo(Module::named("sys").attr(name)) + this.(CompareNode) + .getAChild+() + .(ControlFlowNodeWithPointsTo) + .pointsTo(Module::named("sys").attr(name)) ) } diff --git a/python/ql/src/analysis/PointsToFailure.ql b/python/ql/src/analysis/PointsToFailure.ql index 66ff2d811a36..7b9a2ac06595 100644 --- a/python/ql/src/analysis/PointsToFailure.ql +++ b/python/ql/src/analysis/PointsToFailure.ql @@ -9,7 +9,8 @@ */ import python +private import LegacyPointsTo from Expr e -where exists(ControlFlowNode f | f = e.getAFlowNode() | not f.refersTo(_)) +where exists(ControlFlowNodeWithPointsTo f | f = e.getAFlowNode() | not f.refersTo(_)) select e, "Expression does not 'point-to' any object." diff --git a/python/ql/src/analysis/TypeInferenceFailure.ql b/python/ql/src/analysis/TypeInferenceFailure.ql index 70c4e880879d..5cfafee36b1e 100644 --- a/python/ql/src/analysis/TypeInferenceFailure.ql +++ b/python/ql/src/analysis/TypeInferenceFailure.ql @@ -8,8 +8,9 @@ */ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o +from ControlFlowNodeWithPointsTo f, Object o where f.refersTo(o) and not f.refersTo(o, _, _) diff --git a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e64..382312a4b5c6 100644 --- a/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/2/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql index 7a46cc8cad13..aad100c14d52 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql index f694bc64cf01..19add3600a04 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql index 99a5f7b81630..09c330596c96 100644 --- a/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql +++ b/python/ql/test/2/library-tests/PointsTo/imports2/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql index 4c7a4fff3588..3f923bc63fa3 100644 --- a/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql +++ b/python/ql/test/2/library-tests/PointsTo/origin_uniqueness/Origin.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo string short_loc(Location l) { result = l.getFile().getShortName() + ":" + l.getStartLine() } -from ControlFlowNode use, Object obj, ControlFlowNode orig, int line +from ControlFlowNodeWithPointsTo use, Object obj, ControlFlowNode orig, int line where use.refersTo(obj, orig) and use.getLocation().getFile().getShortName() = "test.py" and diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql index cc191d7c7d84..ad7b74f8c581 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/Test.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql index 2b4b8a8c70ca..dc19fefb4ce3 100644 --- a/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/attributes/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) select f.getLocation().getStartLine(), f.toString(), o.toString(), c.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql index 3281b8d26e64..382312a4b5c6 100644 --- a/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql +++ b/python/ql/test/3/library-tests/PointsTo/class_properties/ClassValues.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from ClassValue cls, string res where exists(CallNode call | call.getFunction().(NameNode).getId() = "test" and - call.getAnArg().pointsTo(cls) + call.getAnArg().(ControlFlowNodeWithPointsTo).pointsTo(cls) ) and ( cls.isSequence() and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql index f694bc64cf01..19add3600a04 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/Runtime.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql index 99a5f7b81630..09c330596c96 100644 --- a/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql +++ b/python/ql/test/3/library-tests/PointsTo/imports/RuntimeWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Object o, ClassObject cls, ControlFlowNode orig +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls, ControlFlowNode orig where not f.getLocation().getFile().inStdlib() and f.refersTo(o, cls, orig) and diff --git a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql index 192468a2248c..be451d6f5960 100644 --- a/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql +++ b/python/ql/test/3/library-tests/PointsTo/typehints/Values.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/absent/Absent.ql b/python/ql/test/library-tests/PointsTo/absent/Absent.ql index 95cdf3a10844..b73eb9b5296c 100644 --- a/python/ql/test/library-tests/PointsTo/absent/Absent.ql +++ b/python/ql/test/library-tests/PointsTo/absent/Absent.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import semmle.python.objects.Modules -from Value val, ControlFlowNode f +from Value val, ControlFlowNodeWithPointsTo f where f.pointsTo(val) select f, val diff --git a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql index 10247a98f941..70a9bbd914b0 100644 --- a/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/calls/CallPointsTo.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from CallNode call, Value func -where call.getFunction().pointsTo(func) +where call.getFunction().(ControlFlowNodeWithPointsTo).pointsTo(func) select call.getLocation().getStartLine(), call.toString(), func.toString() diff --git a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql index 61f802a2ea5a..31d2f1cab36c 100644 --- a/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/comparisons/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from int line, ControlFlowNode f, Value v +from int line, ControlFlowNodeWithPointsTo f, Value v where any(ExprStmt s).getValue() = f.getNode() and line = f.getLocation().getStartLine() and diff --git a/python/ql/test/library-tests/PointsTo/decorators/Test.ql b/python/ql/test/library-tests/PointsTo/decorators/Test.ql index b5175845070d..b237ce513d2b 100644 --- a/python/ql/test/library-tests/PointsTo/decorators/Test.ql +++ b/python/ql/test/library-tests/PointsTo/decorators/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo // We don't care about the internals of functools which vary from // version to version, just the end result. from NameNode f, Object o, ControlFlowNode x, int line where - f.refersTo(o, x) and + f.(ControlFlowNodeWithPointsTo).refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" and line = f.getLocation().getStartLine() select line, f.toString(), o.toString(), x.getLocation().toString() diff --git a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql index 8caa54ccc237..e90674bab2e3 100644 --- a/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/GlobalPointsTo.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import interesting -from int line, ControlFlowNode f, Object o, ImportTimeScope n +from int line, ControlFlowNodeWithPointsTo f, Object o, ImportTimeScope n where of_interest(f, line) and f.refersTo(o) and diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql index aee2cb11bf4c..76d711c00e08 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsTo.ql @@ -6,10 +6,11 @@ */ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o +from int line, ControlFlowNodeWithPointsTo f, Object o where of_interest(f, line) and f.refersTo(o) diff --git a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql index fe14e61e01b4..8b5e008d60a0 100644 --- a/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql +++ b/python/ql/test/library-tests/PointsTo/general/LocalPointsToType.ql @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo import interesting import Util -from int line, ControlFlowNode f, Object o, ClassObject cls +from int line, ControlFlowNodeWithPointsTo f, Object o, ClassObject cls where of_interest(f, line) and f.refersTo(o, cls, _) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql index db4710786ac1..c264bf040136 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsTo.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql index 1c294e642820..f7c3d5a5c717 100644 --- a/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql +++ b/python/ql/test/library-tests/PointsTo/guarded/PointsToWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and exists(CallNode call | call.getFunction().getNode().(Name).getId() = "use" and call.getArg(0) = f) diff --git a/python/ql/test/library-tests/PointsTo/import_star/Values.ql b/python/ql/test/library-tests/PointsTo/import_star/Values.ql index b54b8c6c78dc..f8c620662d63 100644 --- a/python/ql/test/library-tests/PointsTo/import_star/Values.ql +++ b/python/ql/test/library-tests/PointsTo/import_star/Values.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f, ctx, v diff --git a/python/ql/test/library-tests/PointsTo/indexing/Test.ql b/python/ql/test/library-tests/PointsTo/indexing/Test.ql index 694e4d8e98e0..d9a9d7156dea 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/Test.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ControlFlowNode x where f.refersTo(o, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql index 9f16abc2de07..b3888d5bf109 100644 --- a/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql +++ b/python/ql/test/library-tests/PointsTo/indexing/TestWithType.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode f, Object o, ClassObject c, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, Object o, ClassObject c, ControlFlowNode x where f.refersTo(o, c, x) and f.getLocation().getFile().getBaseName() = "test.py" diff --git a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql index 050690fd1cb5..571f39d34ab5 100644 --- a/python/ql/test/library-tests/PointsTo/inheritance/Self.ql +++ b/python/ql/test/library-tests/PointsTo/inheritance/Self.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo from NameNode n, Object value, ClassObject cls -where n.getId() = "self" and n.refersTo(value, cls, _) +where n.getId() = "self" and n.(ControlFlowNodeWithPointsTo).refersTo(value, cls, _) select n.getNode().getLocation().getStartLine(), value.toString(), cls.toString() diff --git a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql index 620cac343329..da4b46595e67 100644 --- a/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql +++ b/python/ql/test/library-tests/PointsTo/new/ImpliesDataflow.ql @@ -4,10 +4,11 @@ */ private import python +private import LegacyPointsTo import semmle.python.dataflow.new.DataFlow predicate pointsToOrigin(DataFlow::CfgNode pointer, DataFlow::CfgNode origin) { - origin.getNode() = pointer.getNode().pointsTo().getOrigin() + origin.getNode() = pointer.getNode().(ControlFlowNodeWithPointsTo).pointsTo().getOrigin() } module PointsToConfig implements DataFlow::ConfigSig { diff --git a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql index c5009ad4cb67..8dca05a8a273 100644 --- a/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql +++ b/python/ql/test/library-tests/PointsTo/new/PointsToNone.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, ControlFlowNode x +from ControlFlowNodeWithPointsTo f, ControlFlowNode x where f.refersTo(theNoneObject(), _, x) select locate(f.getLocation(), "abcdghijklmopqr"), f.toString(), x.getLocation().getStartLine() diff --git a/python/ql/test/library-tests/PointsTo/new/Values.ql b/python/ql/test/library-tests/PointsTo/new/Values.ql index 668e7a6b2655..9e49b44d37ea 100644 --- a/python/ql/test/library-tests/PointsTo/new/Values.ql +++ b/python/ql/test/library-tests/PointsTo/new/Values.ql @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo import Util -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select locate(f.getLocation(), "abeghijklmnpqrstu"), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/properties/Values.ql b/python/ql/test/library-tests/PointsTo/properties/Values.ql index 23416efc0ebd..6ab52924bb9e 100644 --- a/python/ql/test/library-tests/PointsTo/properties/Values.ql +++ b/python/ql/test/library-tests/PointsTo/properties/Values.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.objects.ObjectInternal string vrepr(Value v) { @@ -8,6 +9,6 @@ string vrepr(Value v) { v = ObjectInternal::boundMethod() and result = "builtin-class method" } -from ControlFlowNode f, Context ctx, Value v, ControlFlowNode origin +from ControlFlowNodeWithPointsTo f, Context ctx, Value v, ControlFlowNode origin where f.pointsTo(ctx, v, origin) select f.getLocation(), f.toString(), ctx, vrepr(v), vrepr(v.getClass()) diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/if-urlsplit-access/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/re-compile/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql index db02e9c4f085..87b4bb605d74 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/missing/uncalled-function/Test.ql @@ -1,6 +1,7 @@ import python +private import LegacyPointsTo -from ControlFlowNode arg, CallNode call, string debug +from ControlFlowNodeWithPointsTo arg, CallNode call, string debug where call.getAnArg() = arg and call.getFunction().(NameNode).getId() = "check" and diff --git a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql index 700e0dd72a59..a7be670276fd 100644 --- a/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql +++ b/python/ql/test/library-tests/PointsTo/regressions/wrong/classmethod/Test.ql @@ -1,10 +1,11 @@ import python +private import LegacyPointsTo from NameNode name, CallNode call, string debug where call.getAnArg() = name and call.getFunction().(NameNode).getId() = "check" and - if exists(name.pointsTo()) - then debug = name.pointsTo().toString() + if exists(name.(ControlFlowNodeWithPointsTo).pointsTo()) + then debug = name.(ControlFlowNodeWithPointsTo).pointsTo().toString() else debug = "" select name, debug diff --git a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql index 86ad5bee155f..43149df47b81 100644 --- a/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql +++ b/python/ql/test/library-tests/PointsTo/super/SuperMethodCall.ql @@ -1,11 +1,12 @@ import python +private import LegacyPointsTo import semmle.python.pointsto.PointsTo import semmle.python.pointsto.PointsToContext import semmle.python.objects.ObjectInternal from CallNode call, SuperInstance sup, BoundMethodObjectInternal bm where - call.getFunction().inferredValue() = bm and - call.getFunction().(AttrNode).getObject().inferredValue() = sup + call.getFunction().(ControlFlowNodeWithPointsTo).inferredValue() = bm and + call.getFunction().(AttrNode).getObject().(ControlFlowNodeWithPointsTo).inferredValue() = sup select call.getLocation().getStartLine(), call.toString(), bm.getFunction().getSource().(FunctionObject).getQualifiedName() diff --git a/python/ql/test/library-tests/objects/Strings.ql b/python/ql/test/library-tests/objects/Strings.ql index eca8dec51fd3..4c79df89dafd 100644 --- a/python/ql/test/library-tests/objects/Strings.ql +++ b/python/ql/test/library-tests/objects/Strings.ql @@ -1,5 +1,6 @@ import python +private import LegacyPointsTo -from StringObject s, ControlFlowNode f +from StringObject s, ControlFlowNodeWithPointsTo f where f.refersTo(s) select f.getLocation().toString(), s.getText() diff --git a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll index 4ae53e94a381..e6874512f5cd 100644 --- a/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll +++ b/python/ql/test/library-tests/taint/extensions/ExtensionsLib.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo import semmle.python.dataflow.TaintTracking class SimpleTest extends TaintKind { @@ -30,7 +31,7 @@ predicate visit_call(CallNode call, FunctionObject func) { exists(AttrNode attr, ClassObject cls, string name | name.matches("visit\\_%") and func = cls.lookupAttribute(name) and - attr.getObject("visit").refersTo(_, cls, _) and + attr.getObject("visit").(ControlFlowNodeWithPointsTo).refersTo(_, cls, _) and attr = call.getFunction() ) } From b434ce460ee45da3e63f8c2a267cc7650ad3dcc1 Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 11:50:07 +0000 Subject: [PATCH 03/57] Python: Get rid of `getLiteralValue` This had only two uses in our libraries, so I simply inlined the predicate body in both places. --- python/ql/lib/semmle/python/Exprs.qll | 2 -- python/ql/src/Expressions/IsComparisons.qll | 3 ++- python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index e288078247a9..88562cb76986 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -337,8 +337,6 @@ abstract class ImmutableLiteral extends Expr { abstract Object getLiteralObject(); abstract boolean booleanValue(); - - final Value getLiteralValue() { result.(ConstantObjectInternal).getLiteral() = this } } /** A numerical constant expression, such as `7` or `4.2` */ diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 25058206c862..575c53a03e12 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -2,6 +2,7 @@ import python private import LegacyPointsTo +private import semmle.python.objects.ObjectInternal /** Holds if the comparison `comp` uses `is` or `is not` (represented as `op`) to compare its `left` and `right` arguments. */ predicate comparison_using_is(Compare comp, ControlFlowNode left, Cmpop op, ControlFlowNode right) { @@ -121,7 +122,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) // OK to use 'is' when comparing items from a known set of objects not exists(Expr left, Expr right, Value val | comp.compares(left, op, right) and - exists(ImmutableLiteral il | il.getLiteralValue() = val) + exists(ImmutableLiteral il | il = val.(ConstantObjectInternal).getLiteral()) | left.pointsTo(val) and right.pointsTo(val) or diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index e47d4a55bf5d..3c4b66f6982d 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -14,6 +14,7 @@ */ import python +import semmle.python.objects.ObjectInternal import semmle.python.strings predicate string_format(BinaryExpr operation, StringLiteral str, Value args, AstNode origin) { @@ -31,7 +32,7 @@ int sequence_length(Value args) { not seq.getAnElt() instanceof Starred ) or - exists(ImmutableLiteral i | i.getLiteralValue() = args | result = 1) + exists(ImmutableLiteral i | i = args.(ConstantObjectInternal).getLiteral() | result = 1) } from From b93ce986128f86ddb227149f8717f00f67c0f54b Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 11:52:39 +0000 Subject: [PATCH 04/57] Python: Remove points-to from `Expr` --- python/ql/examples/snippets/builtin_object.ql | 3 +- .../ql/examples/snippets/catch_exception.ql | 3 +- .../snippets/conditional_expression.ql | 5 +- python/ql/examples/snippets/new_instance.ql | 3 +- python/ql/examples/snippets/print.ql | 3 +- .../ql/examples/snippets/raise_exception.ql | 3 +- python/ql/lib/LegacyPointsTo.qll | 72 +++++++++++++++++++ python/ql/lib/semmle/python/Exprs.qll | 70 +----------------- python/ql/lib/semmle/python/Metrics.qll | 4 +- .../lib/semmle/python/objects/ObjectAPI.qll | 4 +- python/ql/src/Exceptions/NotImplemented.qll | 3 +- python/ql/src/Exceptions/Raising.qll | 3 +- python/ql/src/Expressions/CallArgs.qll | 5 +- .../ExpectedMappingForFormatString.ql | 3 +- python/ql/src/Expressions/HashedButNoHash.ql | 2 +- python/ql/src/Expressions/IsComparisons.qll | 8 +-- .../ql/src/Expressions/NonCallableCalled.ql | 3 +- .../ql/src/Expressions/UnnecessaryLambda.ql | 3 +- .../WrongNumberArgumentsForFormat.ql | 7 +- .../ql/src/Functions/ExplicitReturnInInit.ql | 3 +- .../Functions/UseImplicitNoneReturnValue.ql | 7 +- python/ql/src/Imports/Cyclic.qll | 8 ++- python/ql/src/Imports/DeprecatedModule.ql | 3 +- python/ql/src/Imports/UnusedImport.ql | 5 +- .../MismatchInMultipleAssignment.ql | 3 +- .../ql/src/Statements/RedundantAssignment.ql | 7 +- python/ql/src/Statements/StatementNoEffect.ql | 11 +-- python/ql/src/Statements/UnreachableCode.ql | 7 +- .../src/Statements/UnusedExceptionObject.ql | 3 +- python/ql/src/Variables/UndefinedGlobal.ql | 3 +- python/ql/src/Variables/UninitializedLocal.ql | 3 +- python/ql/src/analysis/ImportFailure.ql | 4 +- python/ql/src/analysis/RatioOfDefinitions.ql | 3 +- .../ql/test/2/library-tests/six/pointsto.ql | 3 +- .../ql/test/3/library-tests/six/pointsto.ql | 3 +- 35 files changed, 164 insertions(+), 119 deletions(-) diff --git a/python/ql/examples/snippets/builtin_object.ql b/python/ql/examples/snippets/builtin_object.ql index 7f552a5aa796..36b2d92e0b97 100644 --- a/python/ql/examples/snippets/builtin_object.ql +++ b/python/ql/examples/snippets/builtin_object.ql @@ -8,7 +8,8 @@ */ import python +private import LegacyPointsTo -from Expr e, string name +from ExprWithPointsTo e, string name where e.pointsTo(Value::named(name)) and not name.charAt(_) = "." select e diff --git a/python/ql/examples/snippets/catch_exception.ql b/python/ql/examples/snippets/catch_exception.ql index 9d67d0056b62..b4a77f267d09 100644 --- a/python/ql/examples/snippets/catch_exception.ql +++ b/python/ql/examples/snippets/catch_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from ExceptStmt ex, ClassValue cls where cls.getName() = "MyExceptionClass" and - ex.getType().pointsTo(cls) + ex.getType().(ExprWithPointsTo).pointsTo(cls) select ex diff --git a/python/ql/examples/snippets/conditional_expression.ql b/python/ql/examples/snippets/conditional_expression.ql index 8af55ca104ff..876c34678692 100644 --- a/python/ql/examples/snippets/conditional_expression.ql +++ b/python/ql/examples/snippets/conditional_expression.ql @@ -9,10 +9,11 @@ */ import python +private import LegacyPointsTo from IfExp e, ClassObject cls1, ClassObject cls2 where - e.getBody().refersTo(_, cls1, _) and - e.getOrelse().refersTo(_, cls2, _) and + e.getBody().(ExprWithPointsTo).refersTo(_, cls1, _) and + e.getOrelse().(ExprWithPointsTo).refersTo(_, cls2, _) and cls1 != cls2 select e diff --git a/python/ql/examples/snippets/new_instance.ql b/python/ql/examples/snippets/new_instance.ql index 75a1ea635d53..b0be6f77197c 100644 --- a/python/ql/examples/snippets/new_instance.ql +++ b/python/ql/examples/snippets/new_instance.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Call new, ClassValue cls where cls.getName() = "MyClass" and - new.getFunc().pointsTo(cls) + new.getFunc().(ExprWithPointsTo).pointsTo(cls) select new diff --git a/python/ql/examples/snippets/print.ql b/python/ql/examples/snippets/print.ql index f0ba47eafeb3..ba4d730118d6 100644 --- a/python/ql/examples/snippets/print.ql +++ b/python/ql/examples/snippets/print.ql @@ -6,6 +6,7 @@ */ import python +private import LegacyPointsTo from AstNode print where @@ -13,5 +14,5 @@ where print instanceof Print or /* Python 3 or with `from __future__ import print_function` */ - print.(Call).getFunc().pointsTo(Value::named("print")) + print.(Call).getFunc().(ExprWithPointsTo).pointsTo(Value::named("print")) select print diff --git a/python/ql/examples/snippets/raise_exception.ql b/python/ql/examples/snippets/raise_exception.ql index 12e4f93a349c..23cf26a8c60a 100644 --- a/python/ql/examples/snippets/raise_exception.ql +++ b/python/ql/examples/snippets/raise_exception.ql @@ -8,9 +8,10 @@ */ import python +private import LegacyPointsTo from Raise raise, ClassValue ex where ex.getName() = "AnException" and - raise.getException().pointsTo(ex.getASuperType()) + raise.getException().(ExprWithPointsTo).pointsTo(ex.getASuperType()) select raise, "Don't raise instances of 'AnException'" diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll index f195bc20a519..d5961fc02136 100644 --- a/python/ql/lib/LegacyPointsTo.qll +++ b/python/ql/lib/LegacyPointsTo.qll @@ -119,3 +119,75 @@ private predicate varHasCompletePointsToSet(SsaVariable var) { ) ) } + +/** + * An extension of `Expr` that provides points-to predicates. + */ +class ExprWithPointsTo extends Expr { + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to + * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly + * precise, but may not provide information for a significant number of flow-nodes. + * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. + * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use + * `ControlFlowNode.refersTo(...)` instead. + */ + predicate refersTo(Object obj, ClassObject cls, AstNode origin) { + this.refersTo(_, obj, cls, origin) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Gets what this expression might "refer-to" in the given `context`. + */ + predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .refersTo(context, obj, cls, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Holds if this expression might "refer-to" to `value` which is from `origin` + * Unlike `this.refersTo(value, _, origin)`, this predicate includes results + * where the class cannot be inferred. + */ + pragma[nomagic] + predicate refersTo(Object obj, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) + } + + /** + * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. + * Equivalent to `this.refersTo(value, _)` + */ + predicate refersTo(Object obj) { this.refersTo(obj, _) } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin` + * in the given `context`. + */ + predicate pointsTo(Context context, Value value, AstNode origin) { + this.getAFlowNode() + .(ControlFlowNodeWithPointsTo) + .pointsTo(context, value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value` which is from `origin`. + */ + predicate pointsTo(Value value, AstNode origin) { + this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) + } + + /** + * Holds if this expression might "point-to" to `value`. + */ + predicate pointsTo(Value value) { this.pointsTo(value, _) } + + /** Gets a value that this expression might "point-to". */ + Value pointsTo() { this.pointsTo(result) } + + override string getAQlClass() { none() } +} diff --git a/python/ql/lib/semmle/python/Exprs.qll b/python/ql/lib/semmle/python/Exprs.qll index 88562cb76986..e5ee2bdb28c7 100644 --- a/python/ql/lib/semmle/python/Exprs.qll +++ b/python/ql/lib/semmle/python/Exprs.qll @@ -1,7 +1,4 @@ -import python -private import LegacyPointsTo -private import semmle.python.pointsto.PointsTo -private import semmle.python.objects.ObjectInternal +private import python private import semmle.python.internal.CachedStages /** An expression */ @@ -53,71 +50,6 @@ class Expr extends Expr_, AstNode { Expr getASubExpression() { none() } override AstNode getAChildNode() { result = this.getASubExpression() } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to". Performs a combination of localized (intra-procedural) points-to - * analysis and global module-level analysis. This points-to analysis favours precision over recall. It is highly - * precise, but may not provide information for a significant number of flow-nodes. - * If the class is unimportant then use `refersTo(value)` or `refersTo(value, origin)` instead. - * NOTE: For complex dataflow, involving multiple stages of points-to analysis, it may be more precise to use - * `ControlFlowNode.refersTo(...)` instead. - */ - predicate refersTo(Object obj, ClassObject cls, AstNode origin) { - this.refersTo(_, obj, cls, origin) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Gets what this expression might "refer-to" in the given `context`. - */ - predicate refersTo(Context context, Object obj, ClassObject cls, AstNode origin) { - this.getAFlowNode() - .(ControlFlowNodeWithPointsTo) - .refersTo(context, obj, cls, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Holds if this expression might "refer-to" to `value` which is from `origin` - * Unlike `this.refersTo(value, _, origin)`, this predicate includes results - * where the class cannot be inferred. - */ - pragma[nomagic] - predicate refersTo(Object obj, AstNode origin) { - this.getAFlowNode().(ControlFlowNodeWithPointsTo).refersTo(obj, origin.getAFlowNode()) - } - - /** - * NOTE: `refersTo` will be deprecated in 2019. Use `pointsTo` instead. - * Equivalent to `this.refersTo(value, _)` - */ - predicate refersTo(Object obj) { this.refersTo(obj, _) } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin` - * in the given `context`. - */ - predicate pointsTo(Context context, Value value, AstNode origin) { - this.getAFlowNode() - .(ControlFlowNodeWithPointsTo) - .pointsTo(context, value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value` which is from `origin`. - */ - predicate pointsTo(Value value, AstNode origin) { - this.getAFlowNode().(ControlFlowNodeWithPointsTo).pointsTo(value, origin.getAFlowNode()) - } - - /** - * Holds if this expression might "point-to" to `value`. - */ - predicate pointsTo(Value value) { this.pointsTo(value, _) } - - /** Gets a value that this expression might "point-to". */ - Value pointsTo() { this.pointsTo(result) } } /** An assignment expression, such as `x := y` */ diff --git a/python/ql/lib/semmle/python/Metrics.qll b/python/ql/lib/semmle/python/Metrics.qll index 16d89711eea3..dcc5cf959d93 100644 --- a/python/ql/lib/semmle/python/Metrics.qll +++ b/python/ql/lib/semmle/python/Metrics.qll @@ -124,7 +124,7 @@ class ClassMetrics extends Class { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass() = other ) ) @@ -293,7 +293,7 @@ class ModuleMetrics extends Module { ) or exists(Function f, Call c, ClassObject cls | c.getScope() = f and f.getScope() = this | - c.getFunc().refersTo(cls) and + c.getFunc().(ExprWithPointsTo).refersTo(cls) and cls.getPyClass().getEnclosingModule() = other ) ) diff --git a/python/ql/lib/semmle/python/objects/ObjectAPI.qll b/python/ql/lib/semmle/python/objects/ObjectAPI.qll index 26c57a78c179..45247c5d9d44 100644 --- a/python/ql/lib/semmle/python/objects/ObjectAPI.qll +++ b/python/ql/lib/semmle/python/objects/ObjectAPI.qll @@ -697,7 +697,9 @@ abstract class FunctionValue extends CallableValue { exists(ClassValue cls, string name | cls.declaredAttribute(name) = this and name != "__new__" and - exists(Expr expr, AstNode origin | expr.pointsTo(this, origin) | not origin instanceof Lambda) + exists(ExprWithPointsTo expr, AstNode origin | expr.pointsTo(this, origin) | + not origin instanceof Lambda + ) ) } diff --git a/python/ql/src/Exceptions/NotImplemented.qll b/python/ql/src/Exceptions/NotImplemented.qll index 2186a7b5f30b..498165d29826 100644 --- a/python/ql/src/Exceptions/NotImplemented.qll +++ b/python/ql/src/Exceptions/NotImplemented.qll @@ -1,7 +1,8 @@ import python +private import LegacyPointsTo /** Holds if `notimpl` refers to `NotImplemented` or `NotImplemented()` in the `raise` statement */ -predicate use_of_not_implemented_in_raise(Raise raise, Expr notimpl) { +predicate use_of_not_implemented_in_raise(Raise raise, ExprWithPointsTo notimpl) { notimpl.pointsTo(Value::named("NotImplemented")) and ( notimpl = raise.getException() or diff --git a/python/ql/src/Exceptions/Raising.qll b/python/ql/src/Exceptions/Raising.qll index c81494811875..c509c41819d6 100644 --- a/python/ql/src/Exceptions/Raising.qll +++ b/python/ql/src/Exceptions/Raising.qll @@ -1,8 +1,9 @@ import python +private import LegacyPointsTo /** Whether the raise statement 'r' raises 'type' from origin 'orig' */ predicate type_or_typeof(Raise r, ClassValue type, AstNode orig) { - exists(Expr exception | exception = r.getRaised() | + exists(ExprWithPointsTo exception | exception = r.getRaised() | exception.pointsTo(type, orig) or not exists(ClassValue exc_type | exception.pointsTo(exc_type)) and diff --git a/python/ql/src/Expressions/CallArgs.qll b/python/ql/src/Expressions/CallArgs.qll index d2f94ca7cf08..709915afbc61 100644 --- a/python/ql/src/Expressions/CallArgs.qll +++ b/python/ql/src/Expressions/CallArgs.qll @@ -1,12 +1,13 @@ /** INTERNAL - Methods used by queries that test whether functions are invoked correctly. */ import python +private import LegacyPointsTo import Testing.Mox private int varargs_length_objectapi(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleObject t | call.getStarargs().refersTo(t) | result = t.getLength()) + exists(TupleObject t | call.getStarargs().(ExprWithPointsTo).refersTo(t) | result = t.getLength()) or result = count(call.getStarargs().(List).getAnElt()) } @@ -14,7 +15,7 @@ private int varargs_length_objectapi(Call call) { private int varargs_length(Call call) { not exists(call.getStarargs()) and result = 0 or - exists(TupleValue t | call.getStarargs().pointsTo(t) | result = t.length()) + exists(TupleValue t | call.getStarargs().(ExprWithPointsTo).pointsTo(t) | result = t.length()) or result = count(call.getStarargs().(List).getAnElt()) } diff --git a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql index 4342062270b7..c11ab58688ea 100644 --- a/python/ql/src/Expressions/ExpectedMappingForFormatString.ql +++ b/python/ql/src/Expressions/ExpectedMappingForFormatString.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import semmle.python.strings -from Expr e, ClassValue t +from ExprWithPointsTo e, ClassValue t where exists(BinaryExpr b | b.getOp() instanceof Mod and diff --git a/python/ql/src/Expressions/HashedButNoHash.ql b/python/ql/src/Expressions/HashedButNoHash.ql index 795865987603..705806bf3605 100644 --- a/python/ql/src/Expressions/HashedButNoHash.ql +++ b/python/ql/src/Expressions/HashedButNoHash.ql @@ -72,7 +72,7 @@ predicate is_unhashable(ControlFlowNodeWithPointsTo f, ClassValue cls, ControlFl predicate typeerror_is_caught(ControlFlowNode f) { exists(Try try | try.getBody().contains(f.getNode()) and - try.getAHandler().getType().pointsTo(ClassValue::typeError()) + try.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::typeError()) ) } diff --git a/python/ql/src/Expressions/IsComparisons.qll b/python/ql/src/Expressions/IsComparisons.qll index 575c53a03e12..1ed4534bd234 100644 --- a/python/ql/src/Expressions/IsComparisons.qll +++ b/python/ql/src/Expressions/IsComparisons.qll @@ -76,12 +76,12 @@ private predicate universally_interned_value(Expr e) { } /** Holds if the expression `e` points to an interned constant in CPython. */ -predicate cpython_interned_constant(Expr e) { +predicate cpython_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | cpython_interned_value(const)) } /** Holds if the expression `e` points to a value that can be reasonably expected to be interned across all implementations of Python. */ -predicate universally_interned_constant(Expr e) { +predicate universally_interned_constant(ExprWithPointsTo e) { exists(Expr const | e.pointsTo(_, const) | universally_interned_value(const)) } @@ -120,7 +120,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing items from a known set of objects - not exists(Expr left, Expr right, Value val | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, Value val | comp.compares(left, op, right) and exists(ImmutableLiteral il | il = val.(ConstantObjectInternal).getLiteral()) | @@ -134,7 +134,7 @@ predicate invalid_portable_is_comparison(Compare comp, Cmpop op, ClassValue cls) ) ) and // OK to use 'is' when comparing with a member of an enum - not exists(Expr left, Expr right, AstNode origin | + not exists(ExprWithPointsTo left, ExprWithPointsTo right, AstNode origin | comp.compares(left, op, right) and enum_member(origin) | diff --git a/python/ql/src/Expressions/NonCallableCalled.ql b/python/ql/src/Expressions/NonCallableCalled.ql index 2740dbe5fb26..2e593f88ca50 100644 --- a/python/ql/src/Expressions/NonCallableCalled.ql +++ b/python/ql/src/Expressions/NonCallableCalled.ql @@ -12,9 +12,10 @@ */ import python +private import LegacyPointsTo import Exceptions.NotImplemented -from Call c, Value v, ClassValue t, Expr f, AstNode origin +from Call c, Value v, ClassValue t, ExprWithPointsTo f, AstNode origin where f = c.getFunc() and f.pointsTo(v, origin) and diff --git a/python/ql/src/Expressions/UnnecessaryLambda.ql b/python/ql/src/Expressions/UnnecessaryLambda.ql index 5ba2dd171240..770dde6fece4 100644 --- a/python/ql/src/Expressions/UnnecessaryLambda.ql +++ b/python/ql/src/Expressions/UnnecessaryLambda.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo /* f consists of a single return statement, whose value is a call. The arguments of the call are exactly the parameters of f */ predicate simple_wrapper(Lambda l, Expr wrapped) { @@ -39,7 +40,7 @@ predicate simple_wrapper(Lambda l, Expr wrapped) { } /* The expression called will refer to the same object if evaluated when the lambda is created or when the lambda is executed. */ -predicate unnecessary_lambda(Lambda l, Expr e) { +predicate unnecessary_lambda(Lambda l, ExprWithPointsTo e) { simple_wrapper(l, e) and ( /* plain class */ diff --git a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql index 3c4b66f6982d..d7b27e5c3d75 100644 --- a/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql +++ b/python/ql/src/Expressions/WrongNumberArgumentsForFormat.ql @@ -14,20 +14,21 @@ */ import python +import LegacyPointsTo import semmle.python.objects.ObjectInternal import semmle.python.strings predicate string_format(BinaryExpr operation, StringLiteral str, Value args, AstNode origin) { operation.getOp() instanceof Mod and exists(Context ctx | - operation.getLeft().pointsTo(ctx, _, str) and - operation.getRight().pointsTo(ctx, args, origin) + operation.getLeft().(ExprWithPointsTo).pointsTo(ctx, _, str) and + operation.getRight().(ExprWithPointsTo).pointsTo(ctx, args, origin) ) } int sequence_length(Value args) { /* Guess length of sequence */ - exists(Tuple seq | seq.pointsTo(args, _) | + exists(Tuple seq | seq.(ExprWithPointsTo).pointsTo(args, _) | result = strictcount(seq.getAnElt()) and not seq.getAnElt() instanceof Starred ) diff --git a/python/ql/src/Functions/ExplicitReturnInInit.ql b/python/ql/src/Functions/ExplicitReturnInInit.ql index c4deea6111c6..f1300afbfd0a 100644 --- a/python/ql/src/Functions/ExplicitReturnInInit.ql +++ b/python/ql/src/Functions/ExplicitReturnInInit.ql @@ -12,8 +12,9 @@ */ import python +private import LegacyPointsTo -from Return r, Expr rv +from Return r, ExprWithPointsTo rv where exists(Function init | init.isInitMethod() and r.getScope() = init) and r.getValue() = rv and diff --git a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql index aeac382f6380..4a8b8edd6235 100644 --- a/python/ql/src/Functions/UseImplicitNoneReturnValue.ql +++ b/python/ql/src/Functions/UseImplicitNoneReturnValue.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Testing.Mox predicate is_used(Call c) { @@ -31,10 +32,12 @@ from Call c, FunctionValue func where /* Call result is used, but callee is a procedure */ is_used(c) and - c.getFunc().pointsTo(func) and + c.getFunc().(ExprWithPointsTo).pointsTo(func) and func.getScope().isProcedure() and /* All callees are procedures */ - forall(FunctionValue callee | c.getFunc().pointsTo(callee) | callee.getScope().isProcedure()) and + forall(FunctionValue callee | c.getFunc().(ExprWithPointsTo).pointsTo(callee) | + callee.getScope().isProcedure() + ) and /* Mox return objects have an `AndReturn` method */ not useOfMoxInModule(c.getEnclosingModule()) select c, "The result of $@ is used even though it is always None.", func, func.getQualifiedName() diff --git a/python/ql/src/Imports/Cyclic.qll b/python/ql/src/Imports/Cyclic.qll index dd25f06d0e5d..720ea8f00481 100644 --- a/python/ql/src/Imports/Cyclic.qll +++ b/python/ql/src/Imports/Cyclic.qll @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo predicate is_import_time(Stmt s) { not s.getScope+() instanceof Function } @@ -21,7 +22,7 @@ predicate circular_import(ModuleValue m1, ModuleValue m2) { ModuleValue stmt_imports(ImportingStmt s) { exists(string name | result.importedAs(name) and not name = "__main__" | name = s.getAnImportedModuleName() and - s.getASubExpression().pointsTo(result) and + s.getASubExpression().(ExprWithPointsTo).pointsTo(result) and not result.isPackage() ) } @@ -57,7 +58,7 @@ predicate import_time_transitive_import(ModuleValue base, Stmt imp, ModuleValue * Returns import-time usages of module 'm' in module 'enclosing' */ predicate import_time_module_use(ModuleValue m, ModuleValue enclosing, Expr use, string attr) { - exists(Expr mod | + exists(ExprWithPointsTo mod | use.getEnclosingModule() = enclosing.getScope() and not use.getScope+() instanceof Function and mod.pointsTo(m) and @@ -90,7 +91,8 @@ predicate is_used_in_annotation(Expr use) { */ predicate is_annotation_with_from_future_import_annotations(Expr use) { exists(ImportMember i | i.getScope() = use.getEnclosingModule() | - i.getModule().pointsTo().getName() = "__future__" and i.getName() = "annotations" + i.getModule().(ExprWithPointsTo).pointsTo().getName() = "__future__" and + i.getName() = "annotations" ) and is_used_in_annotation(use) } diff --git a/python/ql/src/Imports/DeprecatedModule.ql b/python/ql/src/Imports/DeprecatedModule.ql index 5f5a8af3ae9a..3d529943fb8f 100644 --- a/python/ql/src/Imports/DeprecatedModule.ql +++ b/python/ql/src/Imports/DeprecatedModule.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo /** * Holds if the module `name` was deprecated in Python version `major`.`minor`, @@ -79,7 +80,7 @@ where name = imp.getName() and deprecated_module(name, instead, _, _) and not exists(Try try, ExceptStmt except | except = try.getAHandler() | - except.getType().pointsTo(ClassValue::importError()) and + except.getType().(ExprWithPointsTo).pointsTo(ClassValue::importError()) and except.containsInScope(imp) ) select imp, deprecation_message(name) + replacement_message(name) diff --git a/python/ql/src/Imports/UnusedImport.ql b/python/ql/src/Imports/UnusedImport.ql index 020356901652..370daf405fe7 100644 --- a/python/ql/src/Imports/UnusedImport.ql +++ b/python/ql/src/Imports/UnusedImport.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Variables.Definition import semmle.python.ApiGraphs @@ -94,7 +95,7 @@ private string typehint_annotation_in_module(Module module_scope) { or annotation = any(FunctionExpr f).getReturns().getASubExpression*() | - annotation.pointsTo(Value::forString(result)) and + annotation.(ExprWithPointsTo).pointsTo(Value::forString(result)) and annotation.getEnclosingModule() = module_scope ) } @@ -144,7 +145,7 @@ predicate unused_import(Import imp, Variable name) { not is_pytest_fixture(imp, name) and // Only consider import statements that actually point-to something (possibly an unknown module). // If this is not the case, it's likely that the import statement never gets executed. - imp.getAName().getValue().pointsTo(_) + imp.getAName().getValue().(ExprWithPointsTo).pointsTo(_) } from Stmt s, Variable name diff --git a/python/ql/src/Statements/MismatchInMultipleAssignment.ql b/python/ql/src/Statements/MismatchInMultipleAssignment.ql index 188bdd7b9156..c44d8e348c66 100644 --- a/python/ql/src/Statements/MismatchInMultipleAssignment.ql +++ b/python/ql/src/Statements/MismatchInMultipleAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo private int len(ExprList el) { result = count(el.getAnItem()) } @@ -41,7 +42,7 @@ predicate mismatched_tuple_rhs(Assign a, int lcount, int rcount, Location loc) { a.getATarget().(Tuple).getElts() = l or a.getATarget().(List).getElts() = l ) and - a.getValue().pointsTo(r, origin) and + a.getValue().(ExprWithPointsTo).pointsTo(r, origin) and loc = origin.getLocation() and lcount = len(l) and rcount = r.length() and diff --git a/python/ql/src/Statements/RedundantAssignment.ql b/python/ql/src/Statements/RedundantAssignment.ql index 42561905bacd..357364c41b2f 100644 --- a/python/ql/src/Statements/RedundantAssignment.ql +++ b/python/ql/src/Statements/RedundantAssignment.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate assignment(AssignStmt a, Expr left, Expr right) { a.getATarget() = left and a.getValue() = right @@ -57,7 +58,9 @@ predicate same_name(Name n1, Name n2) { not maybe_defined_in_outer_scope(n2) } -ClassValue value_type(Attribute a) { a.getObject().pointsTo().getClass() = result } +ClassValue value_type(Attribute a) { + a.getObject().(ExprWithPointsTo).pointsTo().getClass() = result +} predicate is_property_access(Attribute a) { value_type(a).lookup(a.getName()) instanceof PropertyValue @@ -87,7 +90,7 @@ predicate pyflakes_commented(AssignStmt assignment) { predicate side_effecting_lhs(Attribute lhs) { exists(ClassValue cls, ClassValue decl | - lhs.getObject().pointsTo().getClass() = cls and + lhs.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and decl = cls.getASuperType() and not decl.isBuiltin() | diff --git a/python/ql/src/Statements/StatementNoEffect.ql b/python/ql/src/Statements/StatementNoEffect.ql index a5806e7082dd..222907f24e33 100644 --- a/python/ql/src/Statements/StatementNoEffect.ql +++ b/python/ql/src/Statements/StatementNoEffect.ql @@ -13,10 +13,11 @@ */ import python +private import LegacyPointsTo predicate understood_attribute(Attribute attr, ClassValue cls, ClassValue attr_cls) { exists(string name | attr.getName() = name | - attr.getObject().pointsTo().getClass() = cls and + attr.getObject().(ExprWithPointsTo).pointsTo().getClass() = cls and cls.attr(name).getClass() = attr_cls ) } @@ -30,7 +31,7 @@ predicate side_effecting_attribute(Attribute attr) { } predicate maybe_side_effecting_attribute(Attribute attr) { - not understood_attribute(attr, _, _) and not attr.pointsTo(_) + not understood_attribute(attr, _, _) and not attr.(ExprWithPointsTo).pointsTo(_) or side_effecting_attribute(attr) } @@ -68,7 +69,7 @@ predicate side_effecting_binary(Expr b) { pragma[nomagic] private predicate binary_operator_special_method( - BinaryExpr b, Expr sub, ClassValue cls, string method_name + BinaryExpr b, ExprWithPointsTo sub, ClassValue cls, string method_name ) { method_name = special_method() and sub = b.getLeft() and @@ -77,7 +78,9 @@ private predicate binary_operator_special_method( } pragma[nomagic] -private predicate comparison_special_method(Compare b, Expr sub, ClassValue cls, string method_name) { +private predicate comparison_special_method( + Compare b, ExprWithPointsTo sub, ClassValue cls, string method_name +) { exists(Cmpop op | b.compares(sub, op, _) and method_name = op.getSpecialMethodName() diff --git a/python/ql/src/Statements/UnreachableCode.ql b/python/ql/src/Statements/UnreachableCode.ql index 98c99ac12185..55582ed2f061 100644 --- a/python/ql/src/Statements/UnreachableCode.ql +++ b/python/ql/src/Statements/UnreachableCode.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo predicate typing_import(ImportingStmt is) { exists(Module m | @@ -33,7 +34,11 @@ predicate unique_yield(Stmt s) { /** Holds if `contextlib.suppress` may be used in the same scope as `s` */ predicate suppression_in_scope(Stmt s) { exists(With w | - w.getContextExpr().(Call).getFunc().pointsTo(Value::named("contextlib.suppress")) and + w.getContextExpr() + .(Call) + .getFunc() + .(ExprWithPointsTo) + .pointsTo(Value::named("contextlib.suppress")) and w.getScope() = s.getScope() ) } diff --git a/python/ql/src/Statements/UnusedExceptionObject.ql b/python/ql/src/Statements/UnusedExceptionObject.ql index 90724b9f1671..9a6a3650b7e6 100644 --- a/python/ql/src/Statements/UnusedExceptionObject.ql +++ b/python/ql/src/Statements/UnusedExceptionObject.ql @@ -12,10 +12,11 @@ */ import python +private import LegacyPointsTo from Call call, ClassValue ex where - call.getFunc().pointsTo(ex) and + call.getFunc().(ExprWithPointsTo).pointsTo(ex) and ex.getASuperType() = ClassValue::exception() and exists(ExprStmt s | s.getValue() = call) select call, "Instantiating an exception, but not raising it, has no effect." diff --git a/python/ql/src/Variables/UndefinedGlobal.ql b/python/ql/src/Variables/UndefinedGlobal.ql index f88f5504df81..3ea1c0d38eb6 100644 --- a/python/ql/src/Variables/UndefinedGlobal.ql +++ b/python/ql/src/Variables/UndefinedGlobal.ql @@ -11,6 +11,7 @@ */ import python +private import LegacyPointsTo import Variables.MonkeyPatched import Loop import semmle.python.pointsto.PointsTo @@ -95,7 +96,7 @@ predicate undefined_use(Name u) { not contains_unknown_import_star(u.getEnclosingModule()) and not use_of_exec(u.getEnclosingModule()) and not exists(u.getVariable().getAStore()) and - not u.pointsTo(_) and + not u.(ExprWithPointsTo).pointsTo(_) and not probably_defined_in_loop(u) } diff --git a/python/ql/src/Variables/UninitializedLocal.ql b/python/ql/src/Variables/UninitializedLocal.ql index a6ac7d490ce6..d4d94f5a4f37 100644 --- a/python/ql/src/Variables/UninitializedLocal.ql +++ b/python/ql/src/Variables/UninitializedLocal.ql @@ -12,6 +12,7 @@ */ import python +private import LegacyPointsTo import Undefined import semmle.python.pointsto.PointsTo @@ -30,7 +31,7 @@ predicate uninitialized_local(NameNode use) { predicate explicitly_guarded(NameNode u) { exists(Try t | t.getBody().contains(u.getNode()) and - t.getAHandler().getType().pointsTo(ClassValue::nameError()) + t.getAHandler().getType().(ExprWithPointsTo).pointsTo(ClassValue::nameError()) ) } diff --git a/python/ql/src/analysis/ImportFailure.ql b/python/ql/src/analysis/ImportFailure.ql index 9dd6ac52adcf..c9289a8b474a 100644 --- a/python/ql/src/analysis/ImportFailure.ql +++ b/python/ql/src/analysis/ImportFailure.ql @@ -54,7 +54,7 @@ string os_specific_import(ImportExpr ie) { string get_os() { py_flags_versioned("sys.platform", result, major_version().toString()) } predicate ok_to_fail(ImportExpr ie) { - alternative_import(ie).refersTo(_) + alternative_import(ie).(ExprWithPointsTo).refersTo(_) or os_specific_import(ie) != get_os() } @@ -80,7 +80,7 @@ class VersionGuard extends ConditionBlock { from ImportExpr ie where - not ie.refersTo(_) and + not ie.(ExprWithPointsTo).refersTo(_) and exists(Context c | c.appliesTo(ie.getAFlowNode())) and not ok_to_fail(ie) and not exists(VersionGuard guard | guard.controls(ie.getAFlowNode().getBasicBlock(), _)) diff --git a/python/ql/src/analysis/RatioOfDefinitions.ql b/python/ql/src/analysis/RatioOfDefinitions.ql index 562deb750051..84b8d7602ec7 100644 --- a/python/ql/src/analysis/RatioOfDefinitions.ql +++ b/python/ql/src/analysis/RatioOfDefinitions.ql @@ -3,9 +3,10 @@ */ import python +private import LegacyPointsTo import analysis.DefinitionTracking -predicate want_to_have_definition(Expr e) { +predicate want_to_have_definition(ExprWithPointsTo e) { /* not builtin object like len, tuple, etc. */ not exists(Value builtin | e.pointsTo(builtin) and builtin.isBuiltin()) and ( diff --git a/python/ql/test/2/library-tests/six/pointsto.ql b/python/ql/test/2/library-tests/six/pointsto.ql index cca7eeede109..66a9d449a768 100644 --- a/python/ql/test/2/library-tests/six/pointsto.ql +++ b/python/ql/test/2/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() diff --git a/python/ql/test/3/library-tests/six/pointsto.ql b/python/ql/test/3/library-tests/six/pointsto.ql index cca7eeede109..66a9d449a768 100644 --- a/python/ql/test/3/library-tests/six/pointsto.ql +++ b/python/ql/test/3/library-tests/six/pointsto.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo string longname(Expr e) { result = e.(Name).getId() @@ -6,6 +7,6 @@ string longname(Expr e) { exists(Attribute a | a = e | result = longname(a.getObject()) + "." + a.getName()) } -from Expr e, Value v +from ExprWithPointsTo e, Value v where e.pointsTo(v) and e.getLocation().getFile().getShortName() = "test.py" select longname(e), v.toString() From 820d8e76c44dc4dd4b22be36c61275629d22e38f Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 12:04:31 +0000 Subject: [PATCH 05/57] Python: Remove points-to from `Module` --- python/ql/lib/LegacyPointsTo.qll | 17 +++++++++++++++++ python/ql/lib/semmle/python/Module.qll | 10 ---------- python/ql/src/Variables/UnusedModuleVariable.ql | 3 ++- python/ql/test/extractor-tests/exports/Test.ql | 3 ++- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/python/ql/lib/LegacyPointsTo.qll b/python/ql/lib/LegacyPointsTo.qll index d5961fc02136..3e6758546018 100644 --- a/python/ql/lib/LegacyPointsTo.qll +++ b/python/ql/lib/LegacyPointsTo.qll @@ -21,6 +21,7 @@ private import python private import semmle.python.pointsto.PointsTo +private import semmle.python.objects.Modules /** * An extension of `ControlFlowNode` that provides points-to predicates. @@ -191,3 +192,19 @@ class ExprWithPointsTo extends Expr { override string getAQlClass() { none() } } + +/** + * An extension of `Module` that provides points-to related methods. + */ +class ModuleWithPointsTo extends Module { + /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ + string getAnExport() { + py_exports(this, result) + or + exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | + mod.(ModuleValue).exports(result) + ) + } + + override string getAQlClass() { none() } +} diff --git a/python/ql/lib/semmle/python/Module.qll b/python/ql/lib/semmle/python/Module.qll index 307433fe95bc..666217874b79 100644 --- a/python/ql/lib/semmle/python/Module.qll +++ b/python/ql/lib/semmle/python/Module.qll @@ -1,5 +1,4 @@ import python -private import semmle.python.objects.Modules private import semmle.python.internal.CachedStages /** @@ -66,15 +65,6 @@ class Module extends Module_, Scope, AstNode { /** Whether this module is a package initializer */ predicate isPackageInit() { this.getName().matches("%\\_\\_init\\_\\_") and not this.isPackage() } - /** Gets a name exported by this module, that is the names that will be added to a namespace by 'from this-module import *' */ - string getAnExport() { - py_exports(this, result) - or - exists(ModuleObjectInternal mod | mod.getSource() = this.getEntryNode() | - mod.(ModuleValue).exports(result) - ) - } - /** Gets the source file for this module */ File getFile() { py_module_path(this, result) } diff --git a/python/ql/src/Variables/UnusedModuleVariable.ql b/python/ql/src/Variables/UnusedModuleVariable.ql index 855ca27a7417..24d6559d6fea 100644 --- a/python/ql/src/Variables/UnusedModuleVariable.ql +++ b/python/ql/src/Variables/UnusedModuleVariable.ql @@ -13,6 +13,7 @@ */ import python +private import LegacyPointsTo import Definition /** @@ -58,7 +59,7 @@ predicate unused_global(Name unused, GlobalVariable v) { // indirectly defn.getBasicBlock().reachesExit() and u.getScope() != unused.getScope() ) and - not unused.getEnclosingModule().getAnExport() = v.getId() and + not unused.getEnclosingModule().(ModuleWithPointsTo).getAnExport() = v.getId() and not exists(unused.getParentNode().(ClassDef).getDefinedClass().getADecorator()) and not exists(unused.getParentNode().(FunctionDef).getDefinedFunction().getADecorator()) and unused.defines(v) and diff --git a/python/ql/test/extractor-tests/exports/Test.ql b/python/ql/test/extractor-tests/exports/Test.ql index 50bc0a4ab56d..b04a904197ca 100644 --- a/python/ql/test/extractor-tests/exports/Test.ql +++ b/python/ql/test/extractor-tests/exports/Test.ql @@ -1,4 +1,5 @@ import python +private import LegacyPointsTo -from Module m +from ModuleWithPointsTo m select m.toString(), m.getAnExport().toString() From e702d3bfc86df03ef53f12b89bebfd97ff42a06e Mon Sep 17 00:00:00 2001 From: Taus Date: Thu, 30 Oct 2025 15:16:51 +0000 Subject: [PATCH 06/57] Python: Add change note I wasn't entirely sure if this should be classified as `deprecated` or `breaking`, but seeing as these changes technically _could_ break existing queries (requiring a small rewrite), I opted for the latter. --- .../2025-10-30-remove-points-to-from-cfg-and-expr.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md diff --git a/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md b/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md new file mode 100644 index 000000000000..9b8eef6bcbae --- /dev/null +++ b/python/ql/lib/change-notes/2025-10-30-remove-points-to-from-cfg-and-expr.md @@ -0,0 +1,5 @@ +--- +category: breaking +--- + +- The classes `ControlFlowNode`, `Expr`, and `Module` no longer expose predicates that invoke the points-to analysis. To access these predicates, import the module `LegacyPointsTo` and follow the instructions given therein. From f410c3c93a5669750c10bb6bcfedb63056048554 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:16:07 +0100 Subject: [PATCH 07/57] C#: Update Microsft.Build, Roslyn and Binlog dependencies. --- csharp/paket.dependencies | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/paket.dependencies b/csharp/paket.dependencies index 9413de7b1fe4..cd2ac36422bc 100644 --- a/csharp/paket.dependencies +++ b/csharp/paket.dependencies @@ -4,16 +4,16 @@ source https://api.nuget.org/v3/index.json # behave like nuget in choosing transitive dependency versions strategy: max -nuget Basic.CompilerLog.Util 0.9.8 +nuget Basic.CompilerLog.Util 0.9.21 nuget Mono.Posix.NETStandard nuget Newtonsoft.Json nuget xunit nuget xunit.runner.visualstudio nuget xunit.runner.utility nuget Microsoft.NET.Test.Sdk -nuget Microsoft.CodeAnalysis.CSharp 4.12.0 -nuget Microsoft.CodeAnalysis 4.12.0 -nuget Microsoft.Build 17.12.6 +nuget Microsoft.CodeAnalysis.CSharp 4.14.0 +nuget Microsoft.CodeAnalysis 4.14.0 +nuget Microsoft.Build 17.14.28 nuget Microsoft.Win32.Primitives nuget System.Net.Primitives nuget System.Security.Principal From 0484be6b5b62b48533e97a83974d45f36e99da9e Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:16:35 +0100 Subject: [PATCH 08/57] C#: Update lock files. --- csharp/paket.lock | 273 +++++++++++++++++++++--------------------- csharp/paket.main.bzl | 104 ++++++++-------- 2 files changed, 192 insertions(+), 185 deletions(-) diff --git a/csharp/paket.lock b/csharp/paket.lock index 8120aadb5bd4..d503e19d87df 100644 --- a/csharp/paket.lock +++ b/csharp/paket.lock @@ -3,143 +3,148 @@ STRATEGY: MAX RESTRICTION: == net9.0 NUGET remote: https://api.nuget.org/v3/index.json - Basic.CompilerLog.Util (0.9.8) - MessagePack (>= 2.5.187) - Microsoft.CodeAnalysis (>= 4.12) - Microsoft.CodeAnalysis.CSharp (>= 4.12) - Microsoft.CodeAnalysis.VisualBasic (>= 4.12) - Microsoft.Extensions.ObjectPool (>= 9.0.2) - MSBuild.StructuredLogger (>= 2.2.243) - System.Buffers (>= 4.6) + Basic.CompilerLog.Util (0.9.21) + MessagePack (>= 3.1.4) + Microsoft.Bcl.Memory (>= 9.0.10) + Microsoft.CodeAnalysis (>= 4.8) + Microsoft.CodeAnalysis.CSharp (>= 4.8) + Microsoft.CodeAnalysis.VisualBasic (>= 4.8) + Microsoft.Extensions.ObjectPool (>= 9.0.10) + MSBuild.StructuredLogger (>= 2.3.71) + NaturalSort.Extension (>= 4.4) Humanizer.Core (2.14.1) - MessagePack (3.0.300) - MessagePack.Annotations (>= 3.0.300) - MessagePackAnalyzer (>= 3.0.300) + MessagePack (3.1.4) + MessagePack.Annotations (>= 3.1.4) + MessagePackAnalyzer (>= 3.1.4) Microsoft.NET.StringTools (>= 17.11.4) - MessagePack.Annotations (3.0.300) - MessagePackAnalyzer (3.0.300) - Microsoft.Bcl.AsyncInterfaces (9.0) - Microsoft.Build (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - System.Reflection.Metadata (>= 8.0) - System.Reflection.MetadataLoadContext (>= 8.0) - Microsoft.Build.Framework (17.12.6) - Microsoft.Build.Utilities.Core (17.12.6) - Microsoft.Build.Framework (>= 17.12.6) - Microsoft.NET.StringTools (>= 17.12.6) - System.Collections.Immutable (>= 8.0) - System.Configuration.ConfigurationManager (>= 8.0) - Microsoft.CodeAnalysis (4.12) + MessagePack.Annotations (3.1.4) + MessagePackAnalyzer (3.1.4) + Microsoft.Bcl.AsyncInterfaces (9.0.10) + Microsoft.Bcl.Memory (9.0.10) + Microsoft.Build (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Reflection.MetadataLoadContext (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.Build.Framework (17.14.28) + Microsoft.Build.Utilities.Core (17.14.28) + Microsoft.Build.Framework (>= 17.14.28) + Microsoft.NET.StringTools (>= 17.14.28) + System.Collections.Immutable (>= 9.0) + System.Configuration.ConfigurationManager (>= 9.0) + System.Diagnostics.EventLog (>= 9.0) + System.Security.Cryptography.ProtectedData (>= 9.0) + Microsoft.CodeAnalysis (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.Bcl.AsyncInterfaces (>= 8.0) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.Bcl.AsyncInterfaces (>= 9.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) System.Buffers (>= 4.5.1) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) System.Memory (>= 4.5.5) System.Numerics.Vectors (>= 4.5) - System.Reflection.Metadata (>= 8.0) + System.Reflection.Metadata (>= 9.0) System.Runtime.CompilerServices.Unsafe (>= 6.0) System.Text.Encoding.CodePages (>= 7.0) System.Threading.Channels (>= 7.0) System.Threading.Tasks.Extensions (>= 4.5.4) Microsoft.CodeAnalysis.Analyzers (3.11) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.CSharp.Workspaces (4.12) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.CSharp.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.CSharp (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.CSharp (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Reflection.Metadata (>= 8.0) - Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.12) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Reflection.Metadata (>= 9.0) + Microsoft.CodeAnalysis.VisualBasic.Workspaces (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - Microsoft.CodeAnalysis.VisualBasic (4.12) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + Microsoft.CodeAnalysis.VisualBasic (4.14) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeAnalysis.Workspaces.Common (4.12) + Microsoft.CodeAnalysis.Workspaces.Common (4.14) Humanizer.Core (>= 2.14.1) - Microsoft.CodeAnalysis.Analyzers (>= 3.3.4) - Microsoft.CodeAnalysis.Common (4.12) - System.Collections.Immutable (>= 8.0) - System.Composition (>= 8.0) - System.IO.Pipelines (>= 8.0) - System.Reflection.Metadata (>= 8.0) + Microsoft.CodeAnalysis.Analyzers (>= 3.11) + Microsoft.CodeAnalysis.Common (4.14) + System.Collections.Immutable (>= 9.0) + System.Composition (>= 9.0) + System.IO.Pipelines (>= 9.0) + System.Reflection.Metadata (>= 9.0) System.Threading.Channels (>= 7.0) - Microsoft.CodeCoverage (17.12) - Microsoft.Extensions.ObjectPool (9.0.3) - Microsoft.NET.StringTools (17.12.6) - Microsoft.NET.Test.Sdk (17.12) - Microsoft.CodeCoverage (>= 17.12) - Microsoft.TestPlatform.TestHost (>= 17.12) + Microsoft.CodeCoverage (18.0) + Microsoft.Extensions.ObjectPool (9.0.10) + Microsoft.NET.StringTools (17.14.28) + Microsoft.NET.Test.Sdk (18.0) + Microsoft.CodeCoverage (>= 18.0) + Microsoft.TestPlatform.TestHost (>= 18.0) Microsoft.NETCore.Platforms (7.0.4) Microsoft.NETCore.Targets (5.0) - Microsoft.TestPlatform.ObjectModel (17.12) - System.Reflection.Metadata (>= 1.6) - Microsoft.TestPlatform.TestHost (17.12) - Microsoft.TestPlatform.ObjectModel (>= 17.12) - Newtonsoft.Json (>= 13.0.1) + Microsoft.TestPlatform.ObjectModel (18.0) + System.Reflection.Metadata (>= 8.0) + Microsoft.TestPlatform.TestHost (18.0) + Microsoft.TestPlatform.ObjectModel (>= 18.0) + Newtonsoft.Json (>= 13.0.3) Microsoft.Win32.Primitives (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) Mono.Posix.NETStandard (1.0) - MSBuild.StructuredLogger (2.2.386) + MSBuild.StructuredLogger (2.3.71) Microsoft.Build.Framework (>= 17.5) Microsoft.Build.Utilities.Core (>= 17.5) System.Collections.Immutable (>= 8.0) - Newtonsoft.Json (13.0.3) - System.Buffers (4.6) - System.Collections.Immutable (9.0) - System.Composition (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Convention (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.TypedParts (>= 9.0) - System.Composition.AttributedModel (9.0) - System.Composition.Convention (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (9.0) - System.Composition.Runtime (>= 9.0) - System.Composition.Runtime (9.0) - System.Composition.TypedParts (9.0) - System.Composition.AttributedModel (>= 9.0) - System.Composition.Hosting (>= 9.0) - System.Composition.Runtime (>= 9.0) - System.Configuration.ConfigurationManager (9.0) - System.Diagnostics.EventLog (>= 9.0) - System.Security.Cryptography.ProtectedData (>= 9.0) - System.Diagnostics.EventLog (9.0) + NaturalSort.Extension (4.4) + Newtonsoft.Json (13.0.4) + System.Buffers (4.6.1) + System.Collections.Immutable (9.0.10) + System.Composition (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Convention (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.TypedParts (>= 9.0.10) + System.Composition.AttributedModel (9.0.10) + System.Composition.Convention (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Composition.Runtime (9.0.10) + System.Composition.TypedParts (9.0.10) + System.Composition.AttributedModel (>= 9.0.10) + System.Composition.Hosting (>= 9.0.10) + System.Composition.Runtime (>= 9.0.10) + System.Configuration.ConfigurationManager (9.0.10) + System.Diagnostics.EventLog (>= 9.0.10) + System.Security.Cryptography.ProtectedData (>= 9.0.10) + System.Diagnostics.EventLog (9.0.10) System.IO (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) @@ -157,55 +162,55 @@ NUGET System.Threading.Tasks (>= 4.3) System.IO.FileSystem.Primitives (4.3) System.Runtime (>= 4.3) - System.IO.Pipelines (9.0) - System.Memory (4.6) + System.IO.Pipelines (9.0.10) + System.Memory (4.6.3) System.Net.Primitives (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) System.Runtime (>= 4.3.1) System.Runtime.Handles (>= 4.3) - System.Numerics.Vectors (4.6) - System.Reflection.Metadata (9.0) - System.Reflection.MetadataLoadContext (9.0) + System.Numerics.Vectors (4.6.1) + System.Reflection.Metadata (9.0.10) + System.Reflection.MetadataLoadContext (9.0.10) System.Runtime (4.3.1) Microsoft.NETCore.Platforms (>= 1.1.1) Microsoft.NETCore.Targets (>= 1.1.3) - System.Runtime.CompilerServices.Unsafe (6.1) + System.Runtime.CompilerServices.Unsafe (6.1.2) System.Runtime.Handles (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Security.Cryptography.ProtectedData (9.0) + System.Security.Cryptography.ProtectedData (9.0.10) System.Security.Principal (4.3) System.Runtime (>= 4.3) System.Text.Encoding (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Text.Encoding.CodePages (9.0) - System.Threading.Channels (9.0) + System.Text.Encoding.CodePages (9.0.10) + System.Threading.Channels (9.0.10) System.Threading.Tasks (4.3) Microsoft.NETCore.Platforms (>= 1.1) Microsoft.NETCore.Targets (>= 1.1) System.Runtime (>= 4.3) - System.Threading.Tasks.Extensions (4.6) + System.Threading.Tasks.Extensions (4.6.3) System.Threading.ThreadPool (4.3) System.Runtime (>= 4.3) System.Runtime.Handles (>= 4.3) - xunit (2.9.2) - xunit.analyzers (>= 1.16) - xunit.assert (>= 2.9.2) - xunit.core (2.9.2) + xunit (2.9.3) + xunit.analyzers (>= 1.18) + xunit.assert (>= 2.9.3) + xunit.core (2.9.3) xunit.abstractions (2.0.3) - xunit.analyzers (1.17) - xunit.assert (2.9.2) - xunit.core (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) + xunit.analyzers (1.24) + xunit.assert (2.9.3) + xunit.core (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.extensibility.execution (2.9.2) - xunit.extensibility.core (2.9.2) - xunit.runner.utility (2.9.2) + xunit.extensibility.execution (2.9.3) + xunit.extensibility.core (2.9.3) + xunit.runner.utility (2.9.3) xunit.abstractions (>= 2.0.3) - xunit.runner.visualstudio (2.8.2) + xunit.runner.visualstudio (3.1.5) diff --git a/csharp/paket.main.bzl b/csharp/paket.main.bzl index 90d568ba3a83..1ef6f63df8f4 100644 --- a/csharp/paket.main.bzl +++ b/csharp/paket.main.bzl @@ -7,73 +7,75 @@ def main(): nuget_repo( name = "paket.main", packages = [ - {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.8", "sha512": "sha512-bBlxHTdPRrmaw4AqoNwtx3jyAP63RVp2kwCn+UegxrimDYVCmhdgCkFjzlAc2Bo1LbO7HrsFhfh6lFijugOX3A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Basic.CompilerLog.Util", "id": "Basic.CompilerLog.Util", "version": "0.9.21", "sha512": "sha512-l+Qbzh3nVaLLwZYgv/v5zIEdprseLgxcprHBvbNBzOyer7m6XD/N5GJC+FPChnSP48kK1/p7Nj7mvQH8d5NOtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net462": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net47": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net471": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net472": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net48": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net5.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net6.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net7.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "net8.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "net9.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp2.2": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netcoreapp3.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"], "netstandard2.1": ["MSBuild.StructuredLogger", "MessagePack", "Microsoft.Bcl.Memory", "Microsoft.CodeAnalysis", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.Extensions.ObjectPool", "NaturalSort.Extension", "System.Buffers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Humanizer.Core", "id": "Humanizer.Core", "version": "2.14.1", "sha512": "sha512-yzqGU/HKNLZ9Uvr6kvSc3wYV/S5O/IvklIUW5WF7MuivGLY8wS5IZnLPkt7D1KW8Et2Enl0I3Lzg2vGWM24Xsw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack", "id": "MessagePack", "version": "3.0.300", "sha512": "sha512-5Mdl6CrQcxVVLawvqebPLALFdIMgWOnEGxxFvXWjJ/8KGyyhbfKMusj34Wv1AwE+uE9VAb+McVxtR9HDZIUwuA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.0.300", "sha512": "sha512-Jh9+7EsDtDSEciX8RfXHWxtRlC94wvCmmv+sFzGdzPF4fAp7OAGFktzViPBHMkCxrSh3hmM7jGUB7yMyUmzRCA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.0.300", "sha512": "sha512-Ad0UHGpotoXZYkBjJgO5Z1aTJz5YIsFGVrxc75OiHO/fNKSRKFiM1X2E1WTB5h7pk3uDzqXfh0M5fEEQVZ8FiQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.0", "sha512": "sha512-bYp2ksSR5uB6xqOa4NyD2gBOeFrc2n8FAWoh781MNMDcPjk1ysD7DNpv7r7sQOXfdFJT6F/syX7fN4lmUsn+RQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.12.6", "sha512": "sha512-YEiL5xKowbwnr52YroALNHg8YurjLyFTlhv3USrswhubuxN2ldY1TmQpBKQ4K28UgWJV9BxTVXY9/CecMNDeOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.12.6", "sha512": "sha512-UjfxnrQN9BPVtO0Kvv2FB5dpN2CX5snc7coq5vVQdbCV6kdSpI/r+GZTLvU/5BTT8y8bvIUqoocxRR674N6bWg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.12.6", "sha512": "sha512-YPtNsiLEPn3g3EcO+Kyr7fIdufg6wdzibzufclQYZjIDS80krFsYi2rTpeTmHtlCK0PhyLvxJAQZ3NecgJHTkg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.12.0", "sha512": "sha512-saGSG86irNb5MX0/7j0Lx2T0jSGQuqa6QlohBHBcTzObPyMunQZIuIWVXlEiKwcrcEQm4rtUg/5FW43s0dqH7Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack", "id": "MessagePack", "version": "3.1.4", "sha512": "sha512-O0JoklM97ru+Rqr1hGnlCbSAxi8MOk48pwoaT458RzboCHuAkQWTh+Of9MUoN3LE0Cb2tapku0FRPt2hnk+o0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net6.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net7.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "net8.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "net9.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netcoreapp3.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Threading.Tasks.Extensions", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["MessagePackAnalyzer", "MessagePack.Annotations", "Microsoft.NET.StringTools", "System.Collections.Immutable"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePack.Annotations", "id": "MessagePack.Annotations", "version": "3.1.4", "sha512": "sha512-kIgD3A0OHs8+VUabMhIJT9ZF4oGHqjCocaRDmERI/Ds2hzJ5q3kcvzn5zI7V3CJ2NlQ4HDI80uh6zCqglwgQCQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MessagePackAnalyzer", "id": "MessagePackAnalyzer", "version": "3.1.4", "sha512": "sha512-DFlhiA5fia4iK6i0S+L7sYMYmo5XRgWydKxiaxwz7tfcbvIhU7nmG4JzN1D9Y2XCEmLNExvNwTzXVEgURu4GnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.AsyncInterfaces", "id": "Microsoft.Bcl.AsyncInterfaces", "version": "9.0.10", "sha512": "sha512-Di823U3L+0A2YQGU1HqJC7Gh8o/nuSXle5u6QDgho9s920QbVk6BS5fKJ0s+pzW+WbqM9+aPUQ2DJsfP6tLdKg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Threading.Tasks.Extensions"], "net462": ["System.Threading.Tasks.Extensions"], "net47": ["System.Threading.Tasks.Extensions"], "net471": ["System.Threading.Tasks.Extensions"], "net472": ["System.Threading.Tasks.Extensions"], "net48": ["System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Bcl.Memory", "id": "Microsoft.Bcl.Memory", "version": "9.0.10", "sha512": "sha512-BZV+TVnrDf9O+Ak5gN47uOkECCtpiVq6MpEYX5lQcG1WFD6/Bnx5eyfueX9giDQPEk6azzhSPTGmJcWNXRBc+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build", "id": "Microsoft.Build", "version": "17.14.28", "sha512": "sha512-/J3DY36eYjSi/NYf/m4fS4HlxN8Zy+bCsopJUN0j4NNnrws4NR9ueWd0HKyhWEYYUa29Q1kjG1uKSGN1jBWg4g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Reflection.MetadataLoadContext", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Configuration.ConfigurationManager", "System.Reflection.MetadataLoadContext", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Framework", "id": "Microsoft.Build.Framework", "version": "17.14.28", "sha512": "sha512-Gj4C8LNilfH6u6xu7QI/y0tkJCp3yQQpde/3qeK8E2FOfrZ4ENOoG/r2eKZws15bN6HPj09PhaJoqBhdbJdLpA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Runtime.CompilerServices.Unsafe", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Build.Utilities.Core", "id": "Microsoft.Build.Utilities.Core", "version": "17.14.28", "sha512": "sha512-A5uyO5HysGJRFR3IjjVKJ0Y69USn3E5Vlt/h51yID5Ynts4zHdh5ZELeU1gCoeF8i3tE21gO2u+QQLqQlb/iUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net462": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net47": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net471": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net472": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.NET.StringTools", "System.Collections.Immutable", "System.Configuration.ConfigurationManager", "System.Text.Encoding.CodePages", "System.Memory", "System.Runtime.CompilerServices.Unsafe", "System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis", "id": "Microsoft.CodeAnalysis", "version": "4.14.0", "sha512": "sha512-eNBbL927Lc1Nh24ElWJmlGA928O9tu4mgWGOqmMFe6sskqQWCdnronCrrzwUdhBsBIjfx898MOCMOXuZQMtqOg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net9.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.CSharp.Workspaces", "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.CodeAnalysis.Analyzers", "id": "Microsoft.CodeAnalysis.Analyzers", "version": "3.11.0", "sha512": "sha512-tP9SLzLK72XCExlh8KXfrKbU6ycmZL3ExGl/a3Ml7LNy2Uaam7gFjjUmdzyTYkMXTyckCHHpzx7bD6BMumh8Bg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.12.0", "sha512": "sha512-83sYPF0SekVhecApCFXsLCsQL9qFzAl5ieCEqVb8Uo08nV34YD3cfq7FLv6EkhnAwPbP7ky19sAEEqYLDUrxWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.12.0", "sha512": "sha512-Dbb/taxFill9/+2HRJufXW3udAtJaQw3+LzbWTDyYx7Z02HVdU5ydMXXTqg5lFgSmLDNBe+B8jRuI2eYw8OBOA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.12.0", "sha512": "sha512-YwFqDAYHJrf02FyGU8nQnaWNryZXuDV0r8pVgWjRtxAFDWfaU5CZxvU/4NsS6GSnEsWp6W/e49QMHsDXTJW/KA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.12.0", "sha512": "sha512-le1vRWFDjf9mYrVwhxw+rNZpRg/AvBi9aK+4zfn47qN2S7XPXtDwdz/dvxVg8bKJMfkwK1WPi2Bvlc7naPdaYg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.12.0", "sha512": "sha512-j/XDFfNu38FSTJOIhkB8pvLWNVNqNhaZTRtLuH/WsHUsnYfIztaDW9seR7OsUBF5LuZIKQ9uaCrj7p+0/BgPkw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.12.0", "sha512": "sha512-bzZOMF3kAtQhc5kcUILy0GyhgePksk/j9DJtlvFex1UYNgXJUoEkA6IUGootH1Z6GH4Z5BuLNXiFzsz9oJwbcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "17.12.0", "sha512": "sha512-POBqg788rrLApvncy8rvtyJ3ynsBdU0/SGUXD+vPqyRDM/aUJbPZWx01qalGJRK1GcArSku8QDd9AVMa0TkCkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.3", "sha512": "sha512-0s2vnkWqUSPhhe+Llybuli0LMon5Mf7Mx9NSO9ErGFGU+dSZqwz1Ixa7mXJo2W+Y74BXYE+yfU0HIsPUMOkwZQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.12.6", "sha512": "sha512-uCT/G0W1wUteqfrriWHfLfFmArka8ISo6nUkC5gQzYZYm2PSTuqfS14DEsY0gqDuQpcLLLaYTDcEM0SA2Za5vA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "17.12.0", "sha512": "sha512-hGf8I8+yo15etavoMd+7OXcOG6/G7HYPDEJg5aQnhMzsxaUpq+udNZzSxmEN9rGTWMZOAVFcyNXNL7YBsN6chw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net6.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net7.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Common", "id": "Microsoft.CodeAnalysis.Common", "version": "4.14.0", "sha512": "sha512-k9AIzOrtcZVqr9+lmcEW0vY80emyXx5JB/757K0HUF96GeUeiTD+djOlFF2y7k4XPZo20Lru4tDgQos+VKBr0w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net462": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net47": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net471": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net472": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net48": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net5.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net6.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net7.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "net8.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"], "netstandard2.1": ["Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Memory", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions", "System.Buffers", "System.Numerics.Vectors"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp", "id": "Microsoft.CodeAnalysis.CSharp", "version": "4.14.0", "sha512": "sha512-kqS2NihVvNQHxzLePtyYiiJmFzoYO9Wm46O9DhfUgIIf5NwTbvSy66kV9EM+qAHmGpi7zQy4w8JU6DFnPlAyTA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.CSharp.Workspaces", "id": "Microsoft.CodeAnalysis.CSharp.Workspaces", "version": "4.14.0", "sha512": "sha512-q9VD/wqMEGW0S5WIKuTZ4Wr9EpsZJQrQxqCodxjlsfW0bWl7mOQ4zA7k0Nf80ZrEe7Edaz6+3SBvrALiUcaHzA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.CSharp", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic", "id": "Microsoft.CodeAnalysis.VisualBasic", "version": "4.14.0", "sha512": "sha512-vXhNyQk07THoSHzsu/fM48tFFHYAZQumfT7uDJuL/5ZO4CRgJK9Zr6UOJOwX1Df8N//lRMeymYyT+qiAmnWiYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "id": "Microsoft.CodeAnalysis.VisualBasic.Workspaces", "version": "4.14.0", "sha512": "sha512-LZMVjjbRTcKOtgVDz/sZn+AXBNGL4iKYnWwu5eOvvRcdXaLNlOA7bYtTZOnSMlqig7b/3gMzkoaLqcJ+7hgddg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Reflection.Metadata", "System.Threading.Channels"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Microsoft.CodeAnalysis.VisualBasic", "Microsoft.CodeAnalysis.Workspaces.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Composition", "System.IO.Pipelines", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Channels", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeAnalysis.Workspaces.Common", "id": "Microsoft.CodeAnalysis.Workspaces.Common", "version": "4.14.0", "sha512": "sha512-m/c+FWBNr/JgCYRJ/jh14U9oAtPxHTgDiujb+19QG1AA3KMNZed+UQ51PRSaOt9CbIoMubZp2AkUMSeioz4EHQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net5.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net6.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net7.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "net8.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Collections.Immutable", "System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["Microsoft.CodeAnalysis.Common", "Humanizer.Core", "Microsoft.Bcl.AsyncInterfaces", "System.Composition", "System.IO.Pipelines", "System.Threading.Channels", "Microsoft.CodeAnalysis.Analyzers", "System.Buffers", "System.Collections.Immutable", "System.Memory", "System.Numerics.Vectors", "System.Reflection.Metadata", "System.Runtime.CompilerServices.Unsafe", "System.Text.Encoding.CodePages", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.CodeCoverage", "id": "Microsoft.CodeCoverage", "version": "18.0.0", "sha512": "sha512-HT0zpIWW9Q0Csllqo7lefZ27HE6dl5gfh7NA4FPZjEURenH2GsvpRSZ63b1d3klDphxiX8bpxKwVSzyURhhgkQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.Extensions.ObjectPool", "id": "Microsoft.Extensions.ObjectPool", "version": "9.0.10", "sha512": "sha512-mx7sdMdkCBJuJQkSEaV9wQaB39+ciVUX0VCB7YrqAGvxyBkLRR0mgl9v7j4c6lVMeRZH79FgKOy1WaQbSyhVKA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.StringTools", "id": "Microsoft.NET.StringTools", "version": "17.14.28", "sha512": "sha512-oJDGPNoVuWOmKTPpFK0lJnVwbLMRsm2oxgxBFOMKBYzSZtmiS0kcoednhArAeAicV2aSUFiuor1pw7JK/p2LwQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.NET.Test.Sdk", "id": "Microsoft.NET.Test.Sdk", "version": "18.0.0", "sha512": "sha512-+0iHCuP77nxZLLfEhCNDMOcy8+qC7IFtsLrSwSzp0qc7pUs2J28Stu2c+m9AEKkKdvhsMKB/AhlFOSyeOpdKVg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.CodeCoverage"], "net47": ["Microsoft.CodeCoverage"], "net471": ["Microsoft.CodeCoverage"], "net472": ["Microsoft.CodeCoverage"], "net48": ["Microsoft.CodeCoverage"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "net9.0": ["Microsoft.TestPlatform.TestHost", "Microsoft.CodeCoverage"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Platforms", "id": "Microsoft.NETCore.Platforms", "version": "7.0.4", "sha512": "sha512-mcQWjuDBh4WHGG4WcBI0k025WAdA2afMm6fs42sm1f+3gRyNQUiuMVT5gAWNUGSHmlu6qn/TCnAQpfl4Gm6cBw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.NETCore.Targets", "id": "Microsoft.NETCore.Targets", "version": "5.0.0", "sha512": "sha512-hYHm3JAjQO/nySxcl1EpZhYEW+2P3H1eLZNr+QxgO5TnLS6hqtfi5WchjQzjid45MYmhy2X7IOmcWtDP4fpMGw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "17.12.0", "sha512": "sha512-klsXMgAPNWYo3ceakLkod4wYrk4lAV2Ehi676zUKgiVpQ5Yj6q3vsMhk/3pm97Ltk/hdcSW0rJKJvcQvTzPgYA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "17.12.0", "sha512": "sha512-gYM2BOGQvFEP2fZt61f3f5Gu+imL1G1bvGUrbJjpYcl66R6uzs5yESg0XMn8IgUgldz8RldOOaYmjk2KcSeG1Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net6.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net7.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.ObjectModel", "id": "Microsoft.TestPlatform.ObjectModel", "version": "18.0.0", "sha512": "sha512-/ShCZQuIxaxzGjRQqCYTLD/KnG1yQKsNZXDUtjO2d55IOB8FEyhXleLw2hw8QlK/1gkblyJsp4BfQ8BQFaEAlg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Reflection.Metadata"], "net462": ["System.Reflection.Metadata"], "net47": ["System.Reflection.Metadata"], "net471": ["System.Reflection.Metadata"], "net472": ["System.Reflection.Metadata"], "net48": ["System.Reflection.Metadata"], "net5.0": ["System.Reflection.Metadata"], "net6.0": ["System.Reflection.Metadata"], "net7.0": ["System.Reflection.Metadata"], "net8.0": ["System.Reflection.Metadata"], "net9.0": ["System.Reflection.Metadata"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Reflection.Metadata"], "netcoreapp2.1": ["System.Reflection.Metadata"], "netcoreapp2.2": ["System.Reflection.Metadata"], "netcoreapp3.0": ["System.Reflection.Metadata"], "netcoreapp3.1": ["System.Reflection.Metadata"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Reflection.Metadata"], "netstandard2.1": ["System.Reflection.Metadata"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Microsoft.TestPlatform.TestHost", "id": "Microsoft.TestPlatform.TestHost", "version": "18.0.0", "sha512": "sha512-9IZUooXUUnh+z04QtWCu5iku4D4FAfJajP1su+I6741AxXa0bnXPo2125vqjvK0Khfsk16zskgDpG6vf2Mjubg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "net9.0": ["Microsoft.TestPlatform.ObjectModel", "Newtonsoft.Json"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Microsoft.Win32.Primitives", "id": "Microsoft.Win32.Primitives", "version": "4.3.0", "sha512": "sha512-Nm8Hp51y9tYcK3xD6qk43Wjftrg1mdH24CCJsTb6gr7HS21U1uA+CKPGEtUcVZbjU1y8Kynzm5eoJ7Pnx5gm8A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "Mono.Posix.NETStandard", "id": "Mono.Posix.NETStandard", "version": "1.0.0", "sha512": "sha512-RtGiutQZJAmajvQ0QvBvh73VJye85iW9f9tjZlzF88idLxNMo4lAktP/4Y9ilCpais0LDO0tpoICt9Hdv6wooA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.2.386", "sha512": "sha512-m8ErawcbeDJ+nWtN62vh2OPHARvLpSqhOBCedtYniPGB059wSs2vuGPxfBcVGqVcjpZgntEY4vDOzGyAVB7atA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.3", "sha512": "sha512-mbJSvHfRxfX3tR/U6n1WU+mWHXswYc+SB/hkOpx8yZZe68hNZGfymJu0cjsaJEkVzCMqePiU6LdIyogqfIn7kg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.0", "sha512": "sha512-iRbJyTSX9bJVpURLGLiW8Fgk5Vfm5iGCztw4IG4IJYcxJy+BXTCEgEWFeJtO6c+kPnUmQu87KK5m188+qbErcQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.0", "sha512": "sha512-z/Oo7nxWmZ0Y578vj8EUVrFJZ3DX6OMuUGlgeYgeeUZOFGT89XfaM8fDFMvJy6+mOIqW6ux5NdNzEnlTnQGJ7A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition", "id": "System.Composition", "version": "9.0.0", "sha512": "sha512-aWcyK90nIChHyxq7rpQ83Bbvt/t9l1X6yQtkvODaZ+rJlYHUMVpSji0YXIZTX5VlcWRCVRFdeEY767BCOzueaw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.0", "sha512": "sha512-oYuQzlIvO31GxSlTo6NCU+RnK9dVb1m154BNE7VGm9PUyJM+RrOQss8cNbMj+iIWVcp6VRnyJlBJ3MfzYo14AA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.0", "sha512": "sha512-3efhxn/7hQI9kNy6M6UUwWrMJCzdBZZ4hkYS3MUxqXyGdQ2sLCWToX1nLnnrRYafcdRSMOY2naMPNlRAEKDAGA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.0", "sha512": "sha512-zLPGbMYw6y2GoNBjcoPnvXt7wSJM/qIG1fU2Do8kDObDTYWHG6fFOhulSViX0Ip2j+qGeuCESqEswCRG+xDvwA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.0", "sha512": "sha512-P777aBPIwmLvL0Q8mPA7RiiomfjqLTbpX/xzKpk7YTJLcvPDMTvRIfNFognEpfJYRLadBymaBIU81vW3MzZYnA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.0", "sha512": "sha512-7b7mkn4H0149jNKD1tZRUG2gmkszNzO6YAGV+xEsxdfIU+5SLhxWRYJpqm1zKzKNdzpKUW93oyEFGcTuoNvqGg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.0", "sha512": "sha512-RMASWXcds+sKAl/W6itFM8hvq9aha8CRqSv2nrjb8TUTSMLjjn80h1Lrob7km+v/1UfpUU/Nr67egAjZjsCgIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.0", "sha512": "sha512-ouyDUtZFOgkAPYmYUzioIjMxmgdI/E3j1sIuAbkXv4cTFOisf5FvQrbwi0KC84GUJMjkImXbaZqlTH9M5dJz2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "MSBuild.StructuredLogger", "id": "MSBuild.StructuredLogger", "version": "2.3.71", "sha512": "sha512-u2Tw1WLYy+2VdccrQWyN3AY8zcFj4evfwqWMd7aBiicX3eGfkWkME7lsh9K2XS/+S8KVkjGNPI/g78E2A7Zx0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "net9.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["Microsoft.Build.Framework", "Microsoft.Build.Utilities.Core", "System.Collections.Immutable", "System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "NaturalSort.Extension", "id": "NaturalSort.Extension", "version": "4.4.0", "sha512": "sha512-lcwYGJO2xZylcLW6B64tp6wE9UAt6fSn6el8MSAly5+6QG1vc/9uXQz+dsi69q1DxFv2TOaWrrheHNzg4yvy3Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "Newtonsoft.Json", "id": "Newtonsoft.Json", "version": "13.0.4", "sha512": "sha512-bR+v+E/yJ6g7GV2uXw2OrUSjYYfjLkOLC8JD4kCS23msLapnKtdJPBJA75fwHH++ErIffeIqzYITLxAur4KAXA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Buffers", "id": "System.Buffers", "version": "4.6.1", "sha512": "sha512-qve/dFwECwehSWlZmpkrrlIeATCvo/Hw2koyMrUVcDBy5gXAQrnwX8pHEoqgj8DgkrWuWW1DrQbFqoMbo+Fvrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Collections.Immutable", "id": "System.Collections.Immutable", "version": "9.0.10", "sha512": "sha512-00LI4a7blU063Z0lCdRVLlh0Mzl1yYLZaxlOZe0MiNH+TELklX0Mne/XKU7UuCZQQh6FHrcEUPDjxIsy2jZUxg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition", "id": "System.Composition", "version": "9.0.10", "sha512": "sha512-PyUH0f6tdjlQBntP/73cqaR53fjAZkaqGRatIi1BgZIfQH/Z0k1rPHaklBZqFV5+wKUkL74+49TrFPnB/zw+2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net462": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net47": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net471": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net472": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net48": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Convention", "System.Composition.Hosting", "System.Composition.Runtime", "System.Composition.TypedParts"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.AttributedModel", "id": "System.Composition.AttributedModel", "version": "9.0.10", "sha512": "sha512-9Gx8SRD1DJcQLca7ZaeMjU+qUd4EdxDj6urKR4TizWx+NM7L+beoAn07XCKkdJsweqF6gUK7el93DhUbpssSqA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Convention", "id": "System.Composition.Convention", "version": "9.0.10", "sha512": "sha512-hzvwytBYpKoDX+OJpHXKoupR+BYy+QCUY5vSWOTvJLagAm3zYJKxAUR3l8OyPy46tnQ+3lK/6f5DeLHiTfbIIw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel"], "net462": ["System.Composition.AttributedModel"], "net47": ["System.Composition.AttributedModel"], "net471": ["System.Composition.AttributedModel"], "net472": ["System.Composition.AttributedModel"], "net48": ["System.Composition.AttributedModel"], "net5.0": ["System.Composition.AttributedModel"], "net6.0": ["System.Composition.AttributedModel"], "net7.0": ["System.Composition.AttributedModel"], "net8.0": ["System.Composition.AttributedModel"], "net9.0": ["System.Composition.AttributedModel"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel"], "netcoreapp2.1": ["System.Composition.AttributedModel"], "netcoreapp2.2": ["System.Composition.AttributedModel"], "netcoreapp3.0": ["System.Composition.AttributedModel"], "netcoreapp3.1": ["System.Composition.AttributedModel"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel"], "netstandard2.1": ["System.Composition.AttributedModel"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Hosting", "id": "System.Composition.Hosting", "version": "9.0.10", "sha512": "sha512-fPTM06IdvHrFIRJyYEpVKl5W7UTT4U3E+iiAVg3DFfuQ4Abe4XVhkoHn3DB4pUTOU2RpVc2+PxQ6y9hULPta1A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.Runtime"], "net462": ["System.Composition.Runtime"], "net47": ["System.Composition.Runtime"], "net471": ["System.Composition.Runtime"], "net472": ["System.Composition.Runtime"], "net48": ["System.Composition.Runtime"], "net5.0": ["System.Composition.Runtime"], "net6.0": ["System.Composition.Runtime"], "net7.0": ["System.Composition.Runtime"], "net8.0": ["System.Composition.Runtime"], "net9.0": ["System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.Runtime"], "netstandard2.1": ["System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.Runtime", "id": "System.Composition.Runtime", "version": "9.0.10", "sha512": "sha512-8iDtNLXkjiFwir6Ocrm4XCC19Jzj06OHTvDeL6BZ4guWhCCGRCl6nWJVPonq6G2kZmNiDfraOwC8RgV5qPAAjg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Composition.TypedParts", "id": "System.Composition.TypedParts", "version": "9.0.10", "sha512": "sha512-7OUDlDYszrhjJ8/r5na3N07XzBWl8e6/87dyGoDraDHlkl+APL4dbZ8TfniaXLJxZabDHVaaMLpViiIf+Fb9Ng==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net462": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net47": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net471": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net472": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net48": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net5.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net6.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net7.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net8.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "net9.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp2.2": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netcoreapp3.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"], "netstandard2.1": ["System.Composition.AttributedModel", "System.Composition.Hosting", "System.Composition.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Configuration.ConfigurationManager", "id": "System.Configuration.ConfigurationManager", "version": "9.0.10", "sha512": "sha512-/LM2cc6vZulHDcDsd+9vntVD9j953k8WCCzB4Fea6YxOoIexpGP8iJhC7v13hKN5V66MDprjCJRjHHhDaDuOXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Security.Cryptography.ProtectedData"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Security.Cryptography.ProtectedData"], "net6.0": ["System.Security.Cryptography.ProtectedData"], "net7.0": ["System.Security.Cryptography.ProtectedData"], "net8.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "net9.0": ["System.Diagnostics.EventLog", "System.Security.Cryptography.ProtectedData"], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.1": ["System.Security.Cryptography.ProtectedData"], "netcoreapp2.2": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.0": ["System.Security.Cryptography.ProtectedData"], "netcoreapp3.1": ["System.Security.Cryptography.ProtectedData"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Security.Cryptography.ProtectedData"], "netstandard2.1": ["System.Security.Cryptography.ProtectedData"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Diagnostics.EventLog", "id": "System.Diagnostics.EventLog", "version": "9.0.10", "sha512": "sha512-3rC2TD7/ikgwu5Z7BzViMVDDp7RGyaej8pvVDzhy6rI7QZ9+x6DPiOPD5y4FjePxTLh/rFjMNcP7nG9IHWsB2Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO", "id": "System.IO", "version": "4.3.0", "sha512": "sha512-v8paIePhmGuXZbE9xvvNb4uJ5ME4OFXR1+8la/G/L1GIl2nbU2WFnddgb79kVK3U2us7q1aZT/uY/R0D/ovB5g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem", "id": "System.IO.FileSystem", "version": "4.3.0", "sha512": "sha512-T7WB1vhblSmgkaDpdGM3Uqo55Qsr5sip5eyowrwiXOoHBkzOx3ePd9+Zh97r9NzOwFCxqX7awO6RBxQuao7n7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": ["System.IO.FileSystem.Primitives"], "net461": ["System.IO.FileSystem.Primitives"], "net462": ["System.IO.FileSystem.Primitives"], "net47": ["System.IO.FileSystem.Primitives"], "net471": ["System.IO.FileSystem.Primitives"], "net472": ["System.IO.FileSystem.Primitives"], "net48": ["System.IO.FileSystem.Primitives"], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.IO", "System.IO.FileSystem.Primitives", "System.Runtime", "System.Runtime.Handles", "System.Text.Encoding", "System.Threading.Tasks"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.IO.FileSystem.Primitives", "id": "System.IO.FileSystem.Primitives", "version": "4.3.0", "sha512": "sha512-WIWVPQlYLP/Zc9I6IakpBk1y8ryVGK83MtZx//zGKKi2hvHQWKAB7moRQCOz5Is/wNDksiYpocf3FeA3le6e5Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.0", "sha512": "sha512-XIeVKR80wuDl05DI4Hufye7TT4D1Ca1Bm4zJPc7mgnodrCy0OfcQ1C00A7se56dMvg48cI64TMD+YKcZl+qOaA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Memory", "id": "System.Memory", "version": "4.6.0", "sha512": "sha512-TY7NpV4Vv0vwanZ6J8vrLGfybbPKhAvL3oTx7EndsZ/J/71sm01JPCHImtvYtwh1vmFat/GPS/id9htqIPK+6g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.IO.Pipelines", "id": "System.IO.Pipelines", "version": "9.0.10", "sha512": "sha512-kQg8x+mbt8Xi1mwm32DVEz6DtfqKn9XUGziGQvdNJ2QEGWvufcZfRWtxAf9nB+/B1FT1x7W4Wh2Fr9lcKlVWPA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net462": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net47": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net471": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net472": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net48": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net5.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net6.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net7.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netcoreapp3.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"], "netstandard2.1": ["System.Buffers", "System.Memory", "System.Threading.Tasks.Extensions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Memory", "id": "System.Memory", "version": "4.6.3", "sha512": "sha512-NXcNYlWoXe5cz9sb8Huo6x2dCZVYkhwKtgE00n/MoI8V4ZI/7/t+EI5bOhQFlZfFjjqM8+U6prjU/aARt7H/tA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Buffers", "System.Numerics.Vectors", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Net.Primitives", "id": "System.Net.Primitives", "version": "4.3.1", "sha512": "sha512-BgdlyYCI7rrdh36p3lMTqbkvaafPETpB1bk9iQlFdQxYE692kiXvmseXs8ghL+gEgQF2xgDc8GH4QLkSgUUs+Q==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.0", "sha512": "sha512-dxZWbnnb21+5QuKAiUEntJirh5KiU1nqlLWtBu4v9/Fx1RnsgNn8T4XbmQhvCq/T94201P6EsGG2z2Y5ded1yA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.0", "sha512": "sha512-jz+Y2m/CpdPvdjCNRigiWJYKFusdkfJlxDx4V5cWX2TubAMaz5CZpODBD/P2+20SpWvmZG6J3UYjl+R2Yg7yFw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.0", "sha512": "sha512-or1DAn2dl2SjxPA4tuDG9RxTxeERdHIU7gUJjNf8WhT6D08ZsHbmSZpP2rKpgGOXHMhmXf3CTDNmfa4cSD2DtA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Numerics.Vectors", "id": "System.Numerics.Vectors", "version": "4.6.1", "sha512": "sha512-/rkvpUeUPlCY/2qYVQKiUsj5IKaXZcy2+SQAGAfemAdyEF5AgIgYOFNSTMWDXo09JWFX9HB+wV1yCyi2Mwi3TA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.Metadata", "id": "System.Reflection.Metadata", "version": "9.0.10", "sha512": "sha512-3ZztNrfQJww1qZ9UgdB5aTAYlAIWd5dMyyBagAC8jth6iG5vxawtaGbZJMh4xkL9A5v6Ng48YL+hAjt08GBWKQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Memory"], "net8.0": ["System.Collections.Immutable"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Reflection.MetadataLoadContext", "id": "System.Reflection.MetadataLoadContext", "version": "9.0.10", "sha512": "sha512-qf9IjoUO2XfK4BTPhCIFDYAsiWtFCTpyiklmxoNK2Ys1wZdoVe5C3j5BH2ajSDWy2mAQcN1n+Eh/3uhd3oUcEA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net462": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net47": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net471": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net472": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net48": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net5.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net6.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net7.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "net8.0": ["System.Collections.Immutable", "System.Reflection.Metadata"], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp2.2": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netcoreapp3.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"], "netstandard2.1": ["System.Collections.Immutable", "System.Reflection.Metadata", "System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime", "id": "System.Runtime", "version": "4.3.1", "sha512": "sha512-Al69mPDfzdD+bKGK2HAfB+lNFOHFqnkqzNnUJmmvUe1/qEPK9M7EiTT4zuycKDPy7ev11xz8XVgJWKP0hm7NIA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.0", "sha512": "sha512-iY0upfdQeiaCfoxT+m4XJyb0IJNk4B9TLQFanOCOrU9X5x1x2TjKx0OFbLmg1VG2dOyL5nHMn198SBQ91Yy1kQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Runtime.CompilerServices.Unsafe", "id": "System.Runtime.CompilerServices.Unsafe", "version": "6.1.2", "sha512": "sha512-t2aXWJZBkAkRrTOnw31OBELKEVSDD5YvC3O5dXaHFsR66/nRTKm1y3Iq6NwFI5u5IlKrWYfdan66V+GKKkY8hQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Runtime.Handles", "id": "System.Runtime.Handles", "version": "4.3.0", "sha512": "sha512-CluvHdVUv54BvLTOCCyybugreDNk/rR8unMPruzXDtxSjvrQOU3M4R831/lQf4YI8VYp668FGQa/01E+Rq8PEQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.0", "sha512": "sha512-Mbc5s1XBLje0N1idqILQUqWnG8RVj9p7uK110yxZXTzZq3CN7jaCFEySK52kA+dPYtByzcRtA/FUnK4o/sinSw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Security.Cryptography.ProtectedData", "id": "System.Security.Cryptography.ProtectedData", "version": "9.0.10", "sha512": "sha512-yR8dvnme5ndA3L6Q6F/2N+4QBCi8sdfGWg9lmRVNBZO+evqIt323UdXMu8b8MnMYoyxXaml+vTEl74t5Nu7ABQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory"], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Memory"], "net6.0": ["System.Memory"], "net7.0": ["System.Memory"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory"], "netcoreapp2.1": ["System.Memory"], "netcoreapp2.2": ["System.Memory"], "netcoreapp3.0": ["System.Memory"], "netcoreapp3.1": ["System.Memory"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory"], "netstandard2.1": ["System.Memory"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Security.Principal", "id": "System.Security.Principal", "version": "4.3.0", "sha512": "sha512-24oe0NGJY32e+DFHVQzl2okM9uwYmn0Aa6nehqtVZ55/Al4Yva7S3BN934Kn5qATH7TVTUJkgxhisdfF7mKDfg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime"], "net6.0": ["System.Runtime"], "net7.0": ["System.Runtime"], "net8.0": ["System.Runtime"], "net9.0": ["System.Runtime"], "netcoreapp1.0": ["System.Runtime"], "netcoreapp1.1": ["System.Runtime"], "netcoreapp2.0": ["System.Runtime"], "netcoreapp2.1": ["System.Runtime"], "netcoreapp2.2": ["System.Runtime"], "netcoreapp3.0": ["System.Runtime"], "netcoreapp3.1": ["System.Runtime"], "netstandard": [], "netstandard1.0": ["System.Runtime"], "netstandard1.1": ["System.Runtime"], "netstandard1.2": ["System.Runtime"], "netstandard1.3": ["System.Runtime"], "netstandard1.4": ["System.Runtime"], "netstandard1.5": ["System.Runtime"], "netstandard1.6": ["System.Runtime"], "netstandard2.0": ["System.Runtime"], "netstandard2.1": ["System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Text.Encoding", "id": "System.Text.Encoding", "version": "4.3.0", "sha512": "sha512-b/f+7HMTpxIfeV7H03bkuHKMFylCGfr9/U6gePnfFFW0aF8LOWLDgQCY6V1oWUqDksC3mdNuyChM1vy9TP4sZw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.0", "sha512": "sha512-rMAcE2cpS8RvPR5iK6WkYdZKJLsUw5BRqG3d/LR0dl8x17ezOj43AWRhp4LRIFgydWjOOn/Z4w//l8wcowngvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.0", "sha512": "sha512-6q+SC/qL5eeX9t3zUjmtsccStVusUvYXdJFYGf3ihM/8TionV+iZxi3mxDPPFXOiepRe7WgrIOuoaCi4+bwZ0g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Text.Encoding.CodePages", "id": "System.Text.Encoding.CodePages", "version": "9.0.10", "sha512": "sha512-LPoLnlvwb3D12yjwva2nvfzDqm4XNUBrAf/zQ5ad2IOqhTWqRm4GIXxlH4lSr3W/ET31aLtM4C4vHbr8sGEzWA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net5.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net6.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net7.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.2": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netcoreapp3.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Memory", "System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Channels", "id": "System.Threading.Channels", "version": "9.0.10", "sha512": "sha512-wMh3VX2qbwFg8rZllC1QsiXl4NjLkamNVT+O6bJG5V3sN6cwRZRza2v7f2ohFNGdGlViwUAO/PKSZgJfuJNXTg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net462": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net47": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net471": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net472": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net48": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.1": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp2.2": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["Microsoft.Bcl.AsyncInterfaces", "System.Threading.Tasks.Extensions"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.Tasks", "id": "System.Threading.Tasks", "version": "4.3.0", "sha512": "sha512-fUiP+CyyCjs872OA8trl6p97qma/da1xGq3h4zAbJZk8zyaU4zyEfqW5vbkP80xG/Nimun1vlWBboMEk7XxdEw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net6.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net7.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net8.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "net9.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp2.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netcoreapp3.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard": [], "netstandard1.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.2": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.3": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.4": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.5": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard1.6": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.0": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"], "netstandard2.1": ["Microsoft.NETCore.Platforms", "Microsoft.NETCore.Targets", "System.Runtime"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.0", "sha512": "sha512-ph8eP2gKhA6mNhj/teYwn9xCrHMc7+nBMlSMKX7BUXcZn33RVLe45TWABkcgyS6TJWYx1v1WwtylHmF3Fvg0qQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": ["System.Runtime.CompilerServices.Unsafe"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "System.Threading.Tasks.Extensions", "id": "System.Threading.Tasks.Extensions", "version": "4.6.3", "sha512": "sha512-zWRHXIBnbfzQE1SamNoW9X5NjEcW/JNAtvVxGKd3bcg71wQVmoI3pDq+WUa2A+temXSNCm7707hmAFwwcYlK0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": ["System.Runtime.CompilerServices.Unsafe"], "net462": ["System.Runtime.CompilerServices.Unsafe"], "net47": ["System.Runtime.CompilerServices.Unsafe"], "net471": ["System.Runtime.CompilerServices.Unsafe"], "net472": ["System.Runtime.CompilerServices.Unsafe"], "net48": ["System.Runtime.CompilerServices.Unsafe"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": ["System.Runtime.CompilerServices.Unsafe"], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": ["System.Runtime.CompilerServices.Unsafe"], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "System.Threading.ThreadPool", "id": "System.Threading.ThreadPool", "version": "4.3.0", "sha512": "sha512-RQpA+UpI6Tlpeedk5JStYk2DM/M3i5HqabI/yDbfj1xDu9bIz9kdoquVpHbh/wQjOJaOCbcgRH8iQcAUv8dRWQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": ["System.Runtime", "System.Runtime.Handles"], "net6.0": ["System.Runtime", "System.Runtime.Handles"], "net7.0": ["System.Runtime", "System.Runtime.Handles"], "net8.0": ["System.Runtime", "System.Runtime.Handles"], "net9.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp1.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.1": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp2.2": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.0": ["System.Runtime", "System.Runtime.Handles"], "netcoreapp3.1": ["System.Runtime", "System.Runtime.Handles"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.4": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.5": ["System.Runtime", "System.Runtime.Handles"], "netstandard1.6": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.0": ["System.Runtime", "System.Runtime.Handles"], "netstandard2.1": ["System.Runtime", "System.Runtime.Handles"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit", "id": "xunit", "version": "2.9.2", "sha512": "sha512-bs4ccplaqCT7+jdAJhtt75uKq9qA3Jeld1ugiOgGEGSnzq8gkoa0VUqNEKkMPkBwV5COlAllNJGtGBfgxoZDrA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit", "id": "xunit", "version": "2.9.3", "sha512": "sha512-3/ayVPC7NQWQENR5REbOgXYsbhoJsmpnxQa5pO4lxbjGbckOs62nsm4kLErzc8ng7V5Xz08uwVjMqaZGJiXCrg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net20": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net30": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net35": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net40": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net403": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net45": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net451": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net452": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net46": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net461": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net462": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net47": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net471": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net472": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net48": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net5.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net6.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net7.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net8.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "net9.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp2.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netcoreapp3.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.1": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.2": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.3": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.4": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.5": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard1.6": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.0": ["xunit.core", "xunit.assert", "xunit.analyzers"], "netstandard2.1": ["xunit.core", "xunit.assert", "xunit.analyzers"]}, "targeting_pack_overrides": [], "framework_list": []}, {"name": "xunit.abstractions", "id": "xunit.abstractions", "version": "2.0.3", "sha512": "sha512-PKJri5f0qEQPFvgY6CZR9XG8JROlWSdC/ZYLkkDQuID++Egn+yWjB+Yf57AZ8U6GRlP7z33uDQ4/r5BZPer2JA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.17.0", "sha512": "sha512-36BC2a5gEL5TDXjkzhD8dK4toNcPGdwFb4tbIODwTp4eXhRS6BURiTclfZD2vFNTq4obCzPOdwnayhppP4qtUg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.2", "sha512": "sha512-huNfINLH5HnyiPImimKv7liIJJ2MgRdJYT7ky3464zR62SH7o9JjsgMiSZRXha46kgTCNjKSNN1VvctC+USp7w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.core", "id": "xunit.core", "version": "2.9.2", "sha512": "sha512-kW48d7YL7ryT4zuWTjJN491cJwY8aYiIAxDaXJRebgMIw40PmlREiiaIz33QUFmglcfLlaoRyZcI4sl70kARiw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.2", "sha512": "sha512-sosk+dg5Cn4N9MKOjQ1wFTvfgduqiX1DLRZHEYXIaLOuTJbCJeXfn7XhAVDGY+zeB8aX3jCKL8BcDp4EJCdZXw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.2", "sha512": "sha512-oOnG3GsmntYZqZleKMHFlAxxCxn+ZQrcY7GEKDFP0Zpjx/sTE61cEblJk4Dkl4He0t02DN4gmJ4hsQDoLTdo7g==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.2", "sha512": "sha512-uXH4JqD2cHxrS6L/NXbaKPa+i0/RarJp68Fu+9NMVKJuDjVXDQFtnzgaP9gB+77GbjsJ14SWdJEDkh+D+UX7jw==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, - {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "2.8.2", "sha512": "sha512-z+EzhXxLlgn/n7FQ5J0DJxbGns/1vx1kPJh4Uq+OPChRpdSy3x/MCqQ/jtkboc7BRMthz14k7pL0D3iq/e4d0A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": ["Microsoft.TestPlatform.ObjectModel"], "net47": ["Microsoft.TestPlatform.ObjectModel"], "net471": ["Microsoft.TestPlatform.ObjectModel"], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.analyzers", "id": "xunit.analyzers", "version": "1.24.0", "sha512": "sha512-LiogS9RX6I4MHFN8V3dNgEQ4QJrtvtKq49h9k5NAOvmwcrbR1IeNMZvyuez3YITKAeF+ka9yVG3+OH6vApPB/A==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.assert", "id": "xunit.assert", "version": "2.9.3", "sha512": "sha512-wfqwCKAhSWGy9P/dPqDGSIBnPW3sUJ49MEfcTqNF+5BgJwjwtHb9SE7ajYZuR8ymTd8dwxoEGnlJHiejbgDv9w==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": [], "net48": [], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.core", "id": "xunit.core", "version": "2.9.3", "sha512": "sha512-cv2sO37qJkIbBL3fXDIn3EPQ2zK8LQ6FkMJNnn1xc9n8mo3ik0URA4MfUNCmwDDCx83ZiJeRrJ0y1ykasojNJg==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net20": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net30": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net35": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net40": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net403": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net45": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net451": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net452": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net46": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net461": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net462": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net47": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net471": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net472": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net48": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net5.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net6.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net7.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net8.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "net9.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp2.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netcoreapp3.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.1": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.2": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.3": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.4": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.5": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard1.6": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.0": ["xunit.extensibility.core", "xunit.extensibility.execution"], "netstandard2.1": ["xunit.extensibility.core", "xunit.extensibility.execution"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.core", "id": "xunit.extensibility.core", "version": "2.9.3", "sha512": "sha512-S0a+jmIF/DraKuJ+FfWbqXMwvpcKxjP3GdrQzz5pr3GYtgII2XfDdAhkU/5VIWqWon2R6Q31X/9sTGaU+koDaQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.extensibility.execution", "id": "xunit.extensibility.execution", "version": "2.9.3", "sha512": "sha512-IidoBSrGw/KhWzZsKXIcStohj/oRFZizbWeUv+0hOFLeMJMegSW5QoGNzmjQuF8BuRtCyPQQukWSYdNnnfPAkA==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": ["xunit.extensibility.core"], "net451": ["xunit.extensibility.core"], "net452": ["xunit.extensibility.core"], "net46": ["xunit.extensibility.core"], "net461": ["xunit.extensibility.core"], "net462": ["xunit.extensibility.core"], "net47": ["xunit.extensibility.core"], "net471": ["xunit.extensibility.core"], "net472": ["xunit.extensibility.core"], "net48": ["xunit.extensibility.core"], "net5.0": ["xunit.extensibility.core"], "net6.0": ["xunit.extensibility.core"], "net7.0": ["xunit.extensibility.core"], "net8.0": ["xunit.extensibility.core"], "net9.0": ["xunit.extensibility.core"], "netcoreapp1.0": ["xunit.extensibility.core"], "netcoreapp1.1": ["xunit.extensibility.core"], "netcoreapp2.0": ["xunit.extensibility.core"], "netcoreapp2.1": ["xunit.extensibility.core"], "netcoreapp2.2": ["xunit.extensibility.core"], "netcoreapp3.0": ["xunit.extensibility.core"], "netcoreapp3.1": ["xunit.extensibility.core"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.extensibility.core"], "netstandard1.2": ["xunit.extensibility.core"], "netstandard1.3": ["xunit.extensibility.core"], "netstandard1.4": ["xunit.extensibility.core"], "netstandard1.5": ["xunit.extensibility.core"], "netstandard1.6": ["xunit.extensibility.core"], "netstandard2.0": ["xunit.extensibility.core"], "netstandard2.1": ["xunit.extensibility.core"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.utility", "id": "xunit.runner.utility", "version": "2.9.3", "sha512": "sha512-L2zlPa7Ci/Awf5LdeTOvKOanev1bB6xV2Gxbrc+EDDN1hO/j0AIbu5PM8lXgkX69/8xaaex7zrxHZd8gcz2ilQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": ["xunit.abstractions"], "net40": ["xunit.abstractions"], "net403": ["xunit.abstractions"], "net45": ["xunit.abstractions"], "net451": ["xunit.abstractions"], "net452": ["xunit.abstractions"], "net46": ["xunit.abstractions"], "net461": ["xunit.abstractions"], "net462": ["xunit.abstractions"], "net47": ["xunit.abstractions"], "net471": ["xunit.abstractions"], "net472": ["xunit.abstractions"], "net48": ["xunit.abstractions"], "net5.0": ["xunit.abstractions"], "net6.0": ["xunit.abstractions"], "net7.0": ["xunit.abstractions"], "net8.0": ["xunit.abstractions"], "net9.0": ["xunit.abstractions"], "netcoreapp1.0": ["xunit.abstractions"], "netcoreapp1.1": ["xunit.abstractions"], "netcoreapp2.0": ["xunit.abstractions"], "netcoreapp2.1": ["xunit.abstractions"], "netcoreapp2.2": ["xunit.abstractions"], "netcoreapp3.0": ["xunit.abstractions"], "netcoreapp3.1": ["xunit.abstractions"], "netstandard": [], "netstandard1.0": [], "netstandard1.1": ["xunit.abstractions"], "netstandard1.2": ["xunit.abstractions"], "netstandard1.3": ["xunit.abstractions"], "netstandard1.4": ["xunit.abstractions"], "netstandard1.5": ["xunit.abstractions"], "netstandard1.6": ["xunit.abstractions"], "netstandard2.0": ["xunit.abstractions"], "netstandard2.1": ["xunit.abstractions"]}, "targeting_pack_overrides": [], "framework_list": []}, + {"name": "xunit.runner.visualstudio", "id": "xunit.runner.visualstudio", "version": "3.1.5", "sha512": "sha512-b/tvN9kXtUd3wSSYbC80Ic6y/dYlYbNSvatYiv71iozPhXqM4EaOuHujkIJh85b+wY6dgf25k9ENSy8jN6mlvQ==", "sources": ["https://api.nuget.org/v3/index.json"], "dependencies": {"net11": [], "net20": [], "net30": [], "net35": [], "net40": [], "net403": [], "net45": [], "net451": [], "net452": [], "net46": [], "net461": [], "net462": [], "net47": [], "net471": [], "net472": ["Microsoft.TestPlatform.ObjectModel"], "net48": ["Microsoft.TestPlatform.ObjectModel"], "net5.0": [], "net6.0": [], "net7.0": [], "net8.0": [], "net9.0": [], "netcoreapp1.0": [], "netcoreapp1.1": [], "netcoreapp2.0": [], "netcoreapp2.1": [], "netcoreapp2.2": [], "netcoreapp3.0": [], "netcoreapp3.1": [], "netstandard": [], "netstandard1.0": [], "netstandard1.1": [], "netstandard1.2": [], "netstandard1.3": [], "netstandard1.4": [], "netstandard1.5": [], "netstandard1.6": [], "netstandard2.0": [], "netstandard2.1": []}, "targeting_pack_overrides": [], "framework_list": []}, ], ) From ad02559b48c67bd123396b5d96792d395e58603b Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 09:36:22 +0100 Subject: [PATCH 09/57] C#: Fix Binlog API breaking change. --- .../extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index 3c01893dd89c..69aa7c479097 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -182,7 +182,7 @@ static bool filter(CompilerCall compilerCall) var compilerCall = compilationData.CompilerCall; var diagnosticName = compilerCall.GetDiagnosticName(); logger.LogInfo($" Processing compilation {diagnosticName} at {compilerCall.ProjectDirectory}"); - var compilerArgs = compilerCall.GetArguments(); + var compilerArgs = reader.ReadArguments(compilerCall); var compilationIdentifierPath = string.Empty; try From ee6dd0f771155cea1d0d87e05835ce6961ec9971 Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Fri, 31 Oct 2025 10:37:49 +0100 Subject: [PATCH 10/57] C#: Update integration tests expected output. --- .../Assemblies.expected | 2 ++ 1 file changed, 2 insertions(+) diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected index a706f914cd9f..bbfd3417df37 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected @@ -3,6 +3,7 @@ | [...]/csharp/tools/[...]/MessagePack.Annotations.dll | | [...]/csharp/tools/[...]/MessagePack.dll | | [...]/csharp/tools/[...]/Microsoft.Bcl.AsyncInterfaces.dll | +| [...]/csharp/tools/[...]/Microsoft.Bcl.Memory.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Framework.dll | | [...]/csharp/tools/[...]/Microsoft.Build.Utilities.Core.dll | | [...]/csharp/tools/[...]/Microsoft.Build.dll | @@ -20,6 +21,7 @@ | [...]/csharp/tools/[...]/Microsoft.Win32.Primitives.dll | | [...]/csharp/tools/[...]/Microsoft.Win32.Registry.dll | | [...]/csharp/tools/[...]/Mono.Posix.NETStandard.dll | +| [...]/csharp/tools/[...]/NaturalSort.Extension.dll | | [...]/csharp/tools/[...]/Newtonsoft.Json.dll | | [...]/csharp/tools/[...]/StructuredLogger.dll | | [...]/csharp/tools/[...]/System.AppContext.dll | From 09bef0f4df84665b332f81f51431f3acb4e60bad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 12:51:08 +0000 Subject: [PATCH 11/57] Initial plan From 6011ecbef4d8dd5a1c57757456b54bee68e589a4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:01:25 +0000 Subject: [PATCH 12/57] Add ConstAccess class with getConst() predicate and test cases Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- rust/ql/lib/codeql/rust/elements/Const.qll | 14 +++++++ .../rust/elements/internal/ConstImpl.qll | 33 +++++++++++++++ .../library-tests/const_access/Cargo.lock | 7 ++++ .../const_access/const_access.ql | 23 ++++++++++ .../test/library-tests/const_access/main.rs | 42 +++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 rust/ql/test/library-tests/const_access/Cargo.lock create mode 100644 rust/ql/test/library-tests/const_access/const_access.ql create mode 100644 rust/ql/test/library-tests/const_access/main.rs diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 39aea3e25dc4..1226d195eeb9 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -22,3 +22,17 @@ import codeql.rust.elements.WhereClause * ``` */ final class Const = Impl::Const; + +/** + * A constant access. + * + * For example: + * ```rust + * const X: i32 = 42; + * + * fn main() { + * println!("{}", X); + * } + * ``` + */ +final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index d2f3cde2d037..8144475f36c6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -6,6 +6,9 @@ */ private import codeql.rust.elements.internal.generated.Const +private import codeql.rust.elements.PathExpr +private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl +private import codeql.rust.internal.PathResolution /** * INTERNAL: This module contains the customizable definition of `Const` and should not @@ -21,4 +24,34 @@ module Impl { * ``` */ class Const extends Generated::Const { } + + /** + * A constant access. + * + * For example: + * ```rust + * const X: i32 = 42; + * + * fn main() { + * println!("{}", X); + * } + * ``` + */ + class ConstAccess extends PathExprBaseImpl::PathExprBase { + private Const c; + + ConstAccess() { + exists(PathExpr pe | + pe = this and + c = resolvePath(pe.getPath()) + ) + } + + /** Gets the constant being accessed. */ + Const getConst() { result = c } + + override string toStringImpl() { result = c.getName().getText() } + + override string getAPrimaryQlClass() { result = "ConstAccess" } + } } diff --git a/rust/ql/test/library-tests/const_access/Cargo.lock b/rust/ql/test/library-tests/const_access/Cargo.lock new file mode 100644 index 000000000000..876cd502126b --- /dev/null +++ b/rust/ql/test/library-tests/const_access/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "const_access_test" +version = "0.1.0" diff --git a/rust/ql/test/library-tests/const_access/const_access.ql b/rust/ql/test/library-tests/const_access/const_access.ql new file mode 100644 index 000000000000..27b8f85e3dc3 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.ql @@ -0,0 +1,23 @@ +import rust +import utils.test.InlineExpectationsTest +import TestUtils + +query predicate constAccess(ConstAccess ca, Const c) { + toBeTested(ca) and c = ca.getConst() +} + +module ConstAccessTest implements TestSig { + string getARelevantTag() { result = "const_access" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(ConstAccess ca | + toBeTested(ca) and + location = ca.getLocation() and + element = ca.toString() and + tag = "const_access" and + value = ca.getConst().getName().getText() + ) + } +} + +import MakeTest diff --git a/rust/ql/test/library-tests/const_access/main.rs b/rust/ql/test/library-tests/const_access/main.rs new file mode 100644 index 000000000000..b8a363adfdb0 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/main.rs @@ -0,0 +1,42 @@ +const GLOBAL_CONST: i32 = 42; +const STRING_CONST: &str = "hello"; + +struct MyStruct { + value: i32, +} + +impl MyStruct { + const ASSOC_CONST: i32 = 100; +} + +mod my_module { + pub const MODULE_CONST: i32 = 200; +} + +fn use_consts() { + // $ const_access=GLOBAL_CONST + let x = GLOBAL_CONST; + // $ const_access=GLOBAL_CONST + println!("{}", GLOBAL_CONST); + + // $ const_access=STRING_CONST + let s = STRING_CONST; + + // $ const_access=ASSOC_CONST + let y = MyStruct::ASSOC_CONST; + + // $ const_access=MODULE_CONST + let z = my_module::MODULE_CONST; + + // $ const_access=GLOBAL_CONST + if GLOBAL_CONST > 0 { + println!("positive"); + } + + // $ const_access=ASSOC_CONST + let arr = [MyStruct::ASSOC_CONST; 5]; +} + +fn main() { + use_consts(); +} From ad51b61a2b5ba7deb525221e892d13f1ef8f8f81 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:07:04 +0000 Subject: [PATCH 13/57] Fix trailing whitespace in documentation comments Co-authored-by: hvitved <3667920+hvitved@users.noreply.github.com> --- rust/ql/lib/codeql/rust/elements/Const.qll | 2 +- rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index 1226d195eeb9..d15154835554 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -29,7 +29,7 @@ final class Const = Impl::Const; * For example: * ```rust * const X: i32 = 42; - * + * * fn main() { * println!("{}", X); * } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 8144475f36c6..99d76dd644aa 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -31,7 +31,7 @@ module Impl { * For example: * ```rust * const X: i32 = 42; - * + * * fn main() { * println!("{}", X); * } From ab2c2ef6ae034923810a815e5f4a6ba870e600a2 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 13:52:56 +0100 Subject: [PATCH 14/57] C#: Update isUnreachableInCall in dataflow to use Guards library. --- .../semmle/code/csharp/controlflow/Guards.qll | 11 ++++-- .../dataflow/internal/DataFlowPrivate.qll | 36 ++++++------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 4914450dfc9a..040ea47f7859 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -49,8 +49,15 @@ private module GuardsInput implements override predicate isNull() { any() } } - private class BooleanConstant extends ConstantExpr instanceof BoolLiteral { - override boolean asBooleanValue() { result = super.getBoolValue() } + private predicate boolConst(Expr e, boolean b) { + e.getType() instanceof BoolType and + e.getValue() = b.toString() + } + + private class BooleanConstant extends ConstantExpr { + BooleanConstant() { boolConst(this, _) } + + override boolean asBooleanValue() { boolConst(this, result) } } private predicate intConst(Expr e, int i) { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index f4a76b2f5770..4f7f0141da2a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -2583,10 +2583,10 @@ class NodeRegion instanceof ControlFlow::BasicBlock { * Holds if the nodes in `nr` are unreachable when the call context is `call`. */ predicate isUnreachableInCall(NodeRegion nr, DataFlowCall call) { - exists(ExplicitParameterNode paramNode, Guard guard, ControlFlow::BooleanSuccessor bs | - viableConstantBooleanParamArg(paramNode, bs.getValue().booleanNot(), call) and + exists(ExplicitParameterNode paramNode, Guard guard, GuardValue val | + viableConstantParamArg(paramNode, val.getDualValue(), call) and paramNode.getSsaDefinition().getARead() = guard and - guard.controlsBlock(nr, bs, _) + guard.valueControls(nr, val) ) } @@ -2904,33 +2904,19 @@ class CastNode extends Node { class DataFlowExpr = Expr; -/** Holds if `e` is an expression that always has the same Boolean value `val`. */ -private predicate constantBooleanExpr(Expr e, boolean val) { - e.getType() instanceof BoolType and - e.getValue() = val.toString() - or - exists(Ssa::ExplicitDefinition def, Expr src | - e = def.getARead() and - src = def.getADefinition().getSource() and - constantBooleanExpr(src, val) - ) -} +/** An argument that always has the same value. */ +private class ConstantArgumentNode extends ExprNode { + ConstantArgumentNode() { Guards::InternalUtil::exprHasValue(this.(ArgumentNode).asExpr(), _) } -/** An argument that always has the same Boolean value. */ -private class ConstantBooleanArgumentNode extends ExprNode { - ConstantBooleanArgumentNode() { constantBooleanExpr(this.(ArgumentNode).asExpr(), _) } - - /** Gets the Boolean value of this expression. */ - boolean getBooleanValue() { constantBooleanExpr(this.getExpr(), result) } + /** Gets the value of this expression. */ + GuardValue getValue() { Guards::InternalUtil::exprHasValue(this.getExpr(), result) } } pragma[noinline] -private predicate viableConstantBooleanParamArg( - ParameterNode paramNode, boolean b, DataFlowCall call -) { - exists(ConstantBooleanArgumentNode arg | +private predicate viableConstantParamArg(ParameterNode paramNode, GuardValue val, DataFlowCall call) { + exists(ConstantArgumentNode arg | viableParamArg(call, paramNode, arg) and - b = arg.getBooleanValue() + val = arg.getValue() ) } From f6dfcf1ca4252eb354c7f96e5f1f17eb5d99c8db Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 29 Oct 2025 16:02:55 +0100 Subject: [PATCH 15/57] C#: Delete splitting-aware controls implementation. --- csharp/ql/lib/semmle/code/csharp/Caching.qll | 2 - .../csharp/controlflow/ControlFlowElement.qll | 132 ------------------ 2 files changed, 134 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/Caching.qll b/csharp/ql/lib/semmle/code/csharp/Caching.qll index 50a789f79897..bbe310fe69e5 100644 --- a/csharp/ql/lib/semmle/code/csharp/Caching.qll +++ b/csharp/ql/lib/semmle/code/csharp/Caching.qll @@ -33,8 +33,6 @@ module Stages { cached private predicate forceCachingInSameStageRev() { - any(ControlFlowElement cfe).controlsBlock(_, _, _) - or exists(GuardedExpr ge) or forceCachingInSameStageRev() diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index 784dab415f3e..ee2ae8c22a7c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -87,148 +87,16 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { result.getAControlFlowNode() } - pragma[noinline] - private predicate immediatelyControlsBlockSplit0( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s - ) { - // Only calculate dominance by explicit recursion for split nodes; - // all other nodes can use regular CFG dominance - this instanceof Impl::SplitAstNode and - cb.getLastNode() = this.getAControlFlowNode() and - succ = cb.getASuccessor(s) - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit1( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - pred = succ.getAPredecessorByType(t) and - pred != cb - } - - pragma[noinline] - private predicate immediatelyControlsBlockSplit2( - ConditionBlock cb, BasicBlock succ, ConditionalSuccessor s, BasicBlock pred, SuccessorType t - ) { - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) and - ( - succ.dominates(pred) - or - // `pred` might be another split of this element - pred.getLastNode().getAstNode() = this and - t = s - ) - } - - /** - * Holds if basic block `succ` is immediately controlled by this control flow - * element with conditional value `s`. That is, `succ` can only be reached from - * the callable entry point by going via the `s` edge out of *some* basic block - * `pred` ending with this element, and `pred` is an immediate predecessor - * of `succ`. - * - * Moreover, this control flow element corresponds to multiple control flow nodes, - * which is why - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.immediatelyControls(succ, s) - * ) - * ``` - * - * does not work. - * - * `cb` records all of the possible condition blocks for this control flow element - * that a path from the callable entry point to `succ` may go through. - */ - pragma[nomagic] - private predicate immediatelyControlsBlockSplit( - BasicBlock succ, ConditionalSuccessor s, ConditionBlock cb - ) { - this.immediatelyControlsBlockSplit0(cb, succ, s) and - forall(BasicBlock pred, SuccessorType t | - this.immediatelyControlsBlockSplit1(cb, succ, s, pred, t) - | - this.immediatelyControlsBlockSplit2(cb, succ, s, pred, t) - ) - } - - pragma[noinline] - private predicate controlsJoinBlockPredecessor( - JoinBlock controlled, ConditionalSuccessor s, int i, ConditionBlock cb - ) { - this.controlsBlockSplit(controlled.getJoinBlockPredecessor(i), s, cb) - } - - private predicate controlsJoinBlockSplit(JoinBlock controlled, ConditionalSuccessor s, int i) { - i = -1 and - this.controlsJoinBlockPredecessor(controlled, s, _, _) - or - this.controlsJoinBlockSplit(controlled, s, i - 1) and - ( - this.controlsJoinBlockPredecessor(controlled, s, i, _) - or - controlled.dominates(controlled.getJoinBlockPredecessor(i)) - ) - } - - cached - private predicate controlsBlockSplit( - BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb - ) { - Stages::GuardsStage::forceCachingInSameStage() and - this.immediatelyControlsBlockSplit(controlled, s, cb) - or - // Equivalent with - // - // ```ql - // exists(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // ) and - // forall(JoinBlockPredecessor pred | pred = controlled.getAPredecessor() | - // this.controlsBlockSplit(pred, s) - // or - // controlled.dominates(pred) - // ) - // ``` - // - // but uses no universal recursion for better performance. - exists(int last | - last = max(int i | exists(controlled.(JoinBlock).getJoinBlockPredecessor(i))) - | - this.controlsJoinBlockSplit(controlled, s, last) - ) and - this.controlsJoinBlockPredecessor(controlled, s, _, cb) - or - not controlled instanceof JoinBlock and - this.controlsBlockSplit(controlled.getAPredecessor(), s, cb) - } - /** * Holds if basic block `controlled` is controlled by this control flow element * with conditional value `s`. That is, `controlled` can only be reached from * the callable entry point by going via the `s` edge out of *some* basic block * ending with this element. * - * This predicate is different from - * - * ```ql - * exists(ConditionBlock cb | - * cb.getLastNode() = this.getAControlFlowNode() | - * cb.controls(controlled, s) - * ) - * ``` - * - * as control flow splitting is taken into account. - * * `cb` records all of the possible condition blocks for this control flow element * that a path from the callable entry point to `controlled` may go through. */ predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb) { - this.controlsBlockSplit(controlled, s, cb) - or cb.getLastNode() = this.getAControlFlowNode() and cb.edgeDominates(controlled, s) } From 4de564eb4e35d300865e788f229456dc8875acad Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 14:01:12 +0100 Subject: [PATCH 16/57] C#: Replace reference to controlsBlock and simplify. --- .../csharp/security/dataflow/ConditionalBypassQuery.qll | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll index f2b46e4ebac1..53b44f873a64 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll @@ -72,17 +72,10 @@ class ReverseDnsSource extends Source { } } -pragma[noinline] -private predicate conditionControlsCall0( - SensitiveExecutionMethodCall call, Expr e, ControlFlow::BooleanSuccessor s -) { - forex(BasicBlock bb | bb = call.getAControlFlowNode().getBasicBlock() | e.controlsBlock(bb, s, _)) -} - private predicate conditionControlsCall( SensitiveExecutionMethodCall call, SensitiveExecutionMethod def, Expr e, boolean cond ) { - exists(ControlFlow::BooleanSuccessor s | cond = s.getValue() | conditionControlsCall0(call, e, s)) and + e.(Guard).directlyControls(call.getBasicBlock(), cond) and def = call.getTarget().getUnboundDeclaration() } From eb93e8ed41c0eecd166cc228bd5e2248bbacfdf9 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Fri, 31 Oct 2025 14:22:11 +0100 Subject: [PATCH 17/57] C#: Deprecate controlsBlock. --- .../semmle/code/csharp/controlflow/ControlFlowElement.qll | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index ee2ae8c22a7c..0d0ed6819698 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -88,6 +88,8 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { } /** + * DEPRECATED: Use `Guard` class instead. + * * Holds if basic block `controlled` is controlled by this control flow element * with conditional value `s`. That is, `controlled` can only be reached from * the callable entry point by going via the `s` edge out of *some* basic block @@ -96,7 +98,9 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { * `cb` records all of the possible condition blocks for this control flow element * that a path from the callable entry point to `controlled` may go through. */ - predicate controlsBlock(BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb) { + deprecated predicate controlsBlock( + BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb + ) { cb.getLastNode() = this.getAControlFlowNode() and cb.edgeDominates(controlled, s) } From aaa3b1bcb45195c3111c4815deec4c035114488c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:20:52 +0000 Subject: [PATCH 18/57] Rust: Add a couple of new test cases. --- .../security/CWE-020/RegexInjection.expected | 36 ++++- .../CWE-020/RegexInjectionSink.expected | 1 + .../test/query-tests/security/CWE-020/main.rs | 12 +- .../security/CWE-117/LogInjection.expected | 129 ++++++++++-------- .../test/query-tests/security/CWE-117/main.rs | 6 +- 5 files changed, 119 insertions(+), 65 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 2814af2b5ede..7627221edb11 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -1,5 +1,6 @@ #select | main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | +| main.rs:21:25:21:30 | ®ex | main.rs:19:23:19:35 | ...::var | main.rs:21:25:21:30 | ®ex | This regular expression is constructed from a $@. | main.rs:19:23:19:35 | ...::var | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | | main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | @@ -8,14 +9,28 @@ edges | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:3 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:4 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:5 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | +| main.rs:19:9:19:19 | user_number | main.rs:20:25:20:47 | MacroExpr | provenance | | +| main.rs:19:23:19:35 | ...::var | main.rs:19:23:19:43 | ...::var(...) [Ok] | provenance | Src:MaD:1 | +| main.rs:19:23:19:43 | ...::var(...) [Ok] | main.rs:19:23:19:70 | ... .unwrap_or(...) | provenance | MaD:2 | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | +| main.rs:19:23:19:85 | ... .parse() [Ok] | main.rs:19:23:19:98 | ... .unwrap_or(...) | provenance | MaD:2 | +| main.rs:19:23:19:98 | ... .unwrap_or(...) | main.rs:19:9:19:19 | user_number | provenance | | +| main.rs:20:9:20:13 | regex | main.rs:21:26:21:30 | regex | provenance | | +| main.rs:20:25:20:47 | ...::format(...) | main.rs:20:25:20:47 | { ... } | provenance | | +| main.rs:20:25:20:47 | ...::must_use(...) | main.rs:20:9:20:13 | regex | provenance | | +| main.rs:20:25:20:47 | MacroExpr | main.rs:20:25:20:47 | ...::format(...) | provenance | MaD:4 | +| main.rs:20:25:20:47 | { ... } | main.rs:20:25:20:47 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:21:26:21:30 | regex | main.rs:21:25:21:30 | ®ex | provenance | | models | 1 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 2 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 3 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:4:9:4:16 | username | semmle.label | username | | main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | @@ -28,4 +43,17 @@ nodes | main.rs:5:25:5:44 | { ... } | semmle.label | { ... } | | main.rs:6:25:6:30 | ®ex | semmle.label | ®ex | | main.rs:6:26:6:30 | regex | semmle.label | regex | +| main.rs:19:9:19:19 | user_number | semmle.label | user_number | +| main.rs:19:23:19:35 | ...::var | semmle.label | ...::var | +| main.rs:19:23:19:43 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:19:23:19:70 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:19:23:19:85 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | +| main.rs:19:23:19:98 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:20:9:20:13 | regex | semmle.label | regex | +| main.rs:20:25:20:47 | ...::format(...) | semmle.label | ...::format(...) | +| main.rs:20:25:20:47 | ...::must_use(...) | semmle.label | ...::must_use(...) | +| main.rs:20:25:20:47 | MacroExpr | semmle.label | MacroExpr | +| main.rs:20:25:20:47 | { ... } | semmle.label | { ... } | +| main.rs:21:25:21:30 | ®ex | semmle.label | ®ex | +| main.rs:21:26:21:30 | regex | semmle.label | regex | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected index 4ea46a385870..9bbf1a6904ff 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjectionSink.expected @@ -1,2 +1,3 @@ | main.rs:6:25:6:30 | ®ex | | main.rs:14:25:14:30 | ®ex | +| main.rs:21:25:21:30 | ®ex | diff --git a/rust/ql/test/query-tests/security/CWE-020/main.rs b/rust/ql/test/query-tests/security/CWE-020/main.rs index a03e5d4b4942..fcd66e1e3ce0 100644 --- a/rust/ql/test/query-tests/security/CWE-020/main.rs +++ b/rust/ql/test/query-tests/security/CWE-020/main.rs @@ -7,7 +7,7 @@ fn simple_bad(hay: &str) -> Option { Some(re.is_match(hay)) } -fn simple_good(hay: &str) -> Option { +fn simple_good_escaped(hay: &str) -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let escaped = regex::escape(&username); let regex = format!("foo{}bar", escaped); @@ -15,6 +15,13 @@ fn simple_good(hay: &str) -> Option { Some(re.is_match(hay)) } +fn simple_good_numeric(hay: &str) -> Option { + let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); // $ Source=env + let regex = format!("foo{}bar", user_number); + let re = Regex::new(®ex).unwrap(); // $ SPURIOUS: Alert[rust/regex-injection]=env + Some(re.is_match(hay)) +} + fn not_a_sink_literal() -> Option { let username = std::env::var("USER").unwrap_or("".to_string()); let re = Regex::new("literal string").unwrap(); @@ -30,7 +37,8 @@ fn not_a_sink_raw_literal() -> Option { fn main() { let hay = "a string"; simple_bad(hay); - simple_good(hay); + simple_good_escaped(hay); + simple_good_numeric(hay); not_a_sink_literal(); not_a_sink_raw_literal(); } diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index adc258a886aa..6a4995a27280 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -3,14 +3,15 @@ | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:108:9:108:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:108:9:108:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:109:9:109:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:109:9:109:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:110:9:110:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:110:9:110:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:111:9:111:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:111:9:111:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:112:9:112:14 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:112:9:112:14 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:115:9:115:13 | ...::log | main.rs:105:25:105:38 | ...::args | main.rs:115:9:115:13 | ...::log | Log entry depends on a $@. | main.rs:105:25:105:38 | ...::args | user-provided value | -| main.rs:122:9:122:16 | ...::_print | main.rs:119:25:119:37 | ...::var | main.rs:122:9:122:16 | ...::_print | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | -| main.rs:123:9:123:17 | ...::_eprint | main.rs:119:25:119:37 | ...::var | main.rs:123:9:123:17 | ...::_eprint | Log entry depends on a $@. | main.rs:119:25:119:37 | ...::var | user-provided value | +| main.rs:49:5:49:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:49:5:49:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | +| main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:115:9:115:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:115:9:115:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:116:9:116:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:116:9:116:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:119:9:119:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:119:9:119:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | +| main.rs:126:9:126:16 | ...::_print | main.rs:123:25:123:37 | ...::var | main.rs:126:9:126:16 | ...::_print | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | +| main.rs:127:9:127:17 | ...::_eprint | main.rs:123:25:123:37 | ...::var | main.rs:127:9:127:17 | ...::_eprint | Log entry depends on a $@. | main.rs:123:25:123:37 | ...::var | user-provided value | edges | main.rs:10:9:10:18 | user_input | main.rs:16:11:16:44 | MacroExpr | provenance | | | main.rs:10:9:10:18 | user_input | main.rs:19:12:19:39 | MacroExpr | provenance | | @@ -19,38 +20,44 @@ edges | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | +| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | +| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | | main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:4 | | main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:9 | -| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:12 | +| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:13 | | main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:10 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | | main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:105:13:105:21 | user_data | main.rs:108:15:108:35 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:109:15:109:38 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:110:16:110:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:111:16:111:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:112:16:112:37 | MacroExpr | provenance | | -| main.rs:105:13:105:21 | user_data | main.rs:115:15:115:75 | MacroExpr | provenance | | -| main.rs:105:25:105:38 | ...::args | main.rs:105:25:105:40 | ...::args(...) [element] | provenance | Src:MaD:5 | -| main.rs:105:25:105:40 | ...::args(...) [element] | main.rs:105:25:105:47 | ... .nth(...) [Some] | provenance | MaD:7 | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | main.rs:105:25:105:67 | ... .unwrap_or_default() | provenance | MaD:8 | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | main.rs:105:13:105:21 | user_data | provenance | | -| main.rs:108:15:108:35 | MacroExpr | main.rs:108:9:108:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:109:15:109:38 | MacroExpr | main.rs:109:9:109:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:110:16:110:37 | MacroExpr | main.rs:110:9:110:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:111:16:111:37 | MacroExpr | main.rs:111:9:111:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:112:16:112:37 | MacroExpr | main.rs:112:9:112:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:115:15:115:75 | MacroExpr | main.rs:115:9:115:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:119:13:119:21 | user_data | main.rs:122:18:122:38 | MacroExpr | provenance | | -| main.rs:119:13:119:21 | user_data | main.rs:123:19:123:49 | MacroExpr | provenance | | -| main.rs:119:25:119:37 | ...::var | main.rs:119:25:119:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | main.rs:119:25:119:65 | ... .unwrap_or_default() | provenance | MaD:11 | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | main.rs:119:13:119:21 | user_data | provenance | | -| main.rs:122:18:122:38 | MacroExpr | main.rs:122:9:122:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | -| main.rs:123:19:123:49 | MacroExpr | main.rs:123:9:123:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | +| main.rs:48:9:48:14 | number | main.rs:49:11:49:30 | MacroExpr | provenance | | +| main.rs:48:18:48:43 | remote_data.parse() [Ok] | main.rs:48:18:48:56 | ... .unwrap_or(...) | provenance | MaD:10 | +| main.rs:48:18:48:56 | ... .unwrap_or(...) | main.rs:48:9:48:14 | number | provenance | | +| main.rs:49:11:49:30 | MacroExpr | main.rs:49:5:49:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:115:16:115:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:116:16:116:37 | MacroExpr | provenance | | +| main.rs:109:13:109:21 | user_data | main.rs:119:15:119:75 | MacroExpr | provenance | | +| main.rs:109:25:109:38 | ...::args | main.rs:109:25:109:40 | ...::args(...) [element] | provenance | Src:MaD:5 | +| main.rs:109:25:109:40 | ...::args(...) [element] | main.rs:109:25:109:47 | ... .nth(...) [Some] | provenance | MaD:7 | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | main.rs:109:25:109:67 | ... .unwrap_or_default() | provenance | MaD:8 | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | main.rs:109:13:109:21 | user_data | provenance | | +| main.rs:112:15:112:35 | MacroExpr | main.rs:112:9:112:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:113:15:113:38 | MacroExpr | main.rs:113:9:113:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:114:16:114:37 | MacroExpr | main.rs:114:9:114:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:115:16:115:37 | MacroExpr | main.rs:115:9:115:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:116:16:116:37 | MacroExpr | main.rs:116:9:116:14 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:119:15:119:75 | MacroExpr | main.rs:119:9:119:13 | ...::log | provenance | MaD:1 Sink:MaD:1 | +| main.rs:123:13:123:21 | user_data | main.rs:126:18:126:38 | MacroExpr | provenance | | +| main.rs:123:13:123:21 | user_data | main.rs:127:19:127:49 | MacroExpr | provenance | | +| main.rs:123:25:123:37 | ...::var | main.rs:123:25:123:45 | ...::var(...) [Ok] | provenance | Src:MaD:6 | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | main.rs:123:25:123:65 | ... .unwrap_or_default() | provenance | MaD:11 | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | main.rs:123:13:123:21 | user_data | provenance | | +| main.rs:126:18:126:38 | MacroExpr | main.rs:126:9:126:16 | ...::_print | provenance | MaD:3 Sink:MaD:3 | +| main.rs:127:19:127:49 | MacroExpr | main.rs:127:9:127:17 | ...::_eprint | provenance | MaD:2 Sink:MaD:2 | models | 1 | Sink: log::__private_api::log; Argument[0]; log-injection | | 2 | Sink: std::io::stdio::_eprint; Argument[0]; log-injection | @@ -63,7 +70,8 @@ models | 9 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 10 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 11 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 13 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | @@ -83,29 +91,34 @@ nodes | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | -| main.rs:105:13:105:21 | user_data | semmle.label | user_data | -| main.rs:105:25:105:38 | ...::args | semmle.label | ...::args | -| main.rs:105:25:105:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | -| main.rs:105:25:105:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | -| main.rs:105:25:105:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:108:9:108:13 | ...::log | semmle.label | ...::log | -| main.rs:108:15:108:35 | MacroExpr | semmle.label | MacroExpr | -| main.rs:109:9:109:13 | ...::log | semmle.label | ...::log | -| main.rs:109:15:109:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:110:9:110:14 | ...::log | semmle.label | ...::log | -| main.rs:110:16:110:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:111:9:111:14 | ...::log | semmle.label | ...::log | -| main.rs:111:16:111:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:112:9:112:14 | ...::log | semmle.label | ...::log | -| main.rs:112:16:112:37 | MacroExpr | semmle.label | MacroExpr | -| main.rs:115:9:115:13 | ...::log | semmle.label | ...::log | -| main.rs:115:15:115:75 | MacroExpr | semmle.label | MacroExpr | -| main.rs:119:13:119:21 | user_data | semmle.label | user_data | -| main.rs:119:25:119:37 | ...::var | semmle.label | ...::var | -| main.rs:119:25:119:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| main.rs:119:25:119:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | -| main.rs:122:9:122:16 | ...::_print | semmle.label | ...::_print | -| main.rs:122:18:122:38 | MacroExpr | semmle.label | MacroExpr | -| main.rs:123:9:123:17 | ...::_eprint | semmle.label | ...::_eprint | -| main.rs:123:19:123:49 | MacroExpr | semmle.label | MacroExpr | +| main.rs:48:9:48:14 | number | semmle.label | number | +| main.rs:48:18:48:43 | remote_data.parse() [Ok] | semmle.label | remote_data.parse() [Ok] | +| main.rs:48:18:48:56 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | +| main.rs:49:5:49:9 | ...::log | semmle.label | ...::log | +| main.rs:49:11:49:30 | MacroExpr | semmle.label | MacroExpr | +| main.rs:109:13:109:21 | user_data | semmle.label | user_data | +| main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | +| main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | +| main.rs:109:25:109:47 | ... .nth(...) [Some] | semmle.label | ... .nth(...) [Some] | +| main.rs:109:25:109:67 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:112:9:112:13 | ...::log | semmle.label | ...::log | +| main.rs:112:15:112:35 | MacroExpr | semmle.label | MacroExpr | +| main.rs:113:9:113:13 | ...::log | semmle.label | ...::log | +| main.rs:113:15:113:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:114:9:114:14 | ...::log | semmle.label | ...::log | +| main.rs:114:16:114:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:115:9:115:14 | ...::log | semmle.label | ...::log | +| main.rs:115:16:115:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:116:9:116:14 | ...::log | semmle.label | ...::log | +| main.rs:116:16:116:37 | MacroExpr | semmle.label | MacroExpr | +| main.rs:119:9:119:13 | ...::log | semmle.label | ...::log | +| main.rs:119:15:119:75 | MacroExpr | semmle.label | MacroExpr | +| main.rs:123:13:123:21 | user_data | semmle.label | user_data | +| main.rs:123:25:123:37 | ...::var | semmle.label | ...::var | +| main.rs:123:25:123:45 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | +| main.rs:123:25:123:65 | ... .unwrap_or_default() | semmle.label | ... .unwrap_or_default() | +| main.rs:126:9:126:16 | ...::_print | semmle.label | ...::_print | +| main.rs:126:18:126:38 | MacroExpr | semmle.label | MacroExpr | +| main.rs:127:9:127:17 | ...::_eprint | semmle.label | ...::_eprint | +| main.rs:127:19:127:49 | MacroExpr | semmle.label | MacroExpr | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index 10bb03eb02ca..883505153148 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -40,10 +40,14 @@ fn main() { let system_time = std::time::SystemTime::now(); info!("Current time: {:?}", system_time); - // GOOD: Numeric data derived from user input (not directly logged) + // GOOD: Numeric data derived from user input (indirectly) let user_id = username.len(); info!("User ID length: {}", user_id); + // GOOD: Numeric data derived from user input (directly) + let number = remote_data.parse::().unwrap_or(0); + info!("Number: {}", number); // $ SPURIOUS: Alert[rust/log-injection]=remote + // More complex test cases test_complex_scenarios(&username, &user_input); test_indirect_flows(&remote_data); From 47019f7f24388dfc2ef326e61256afbbc88f95b8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:38:19 +0000 Subject: [PATCH 19/57] Rust: Define NumericType, IntegralType and FloatingPointType in Builtins.qll. --- .../rust/frameworks/stdlib/Builtins.qll | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 0c4999bba5e7..56de2d97b6f7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -31,6 +31,30 @@ class BuiltinType extends Struct { string getName() { result = super.getName().getText() } } +/** + * A numerical type, such as `i64`, `usize`, `f32` or `f64`. + */ +abstract private class NumericTypeImpl extends BuiltinType { +} + +final class NumericType = NumericTypeImpl; + +/** + * An integral numerical type, such as `i64` or `usize`. + */ +abstract private class IntegralTypeImpl extends NumericTypeImpl { +} + +final class IntegralType = IntegralTypeImpl; + +/** + * A floating-point numerical type, such as `f32` or `f64`. + */ +abstract private class FloatingPointTypeImpl extends NumericTypeImpl { +} + +final class FloatingPointType = FloatingPointTypeImpl; + /** The builtin `bool` type. */ class Bool extends BuiltinType { Bool() { this.getName() = "bool" } @@ -47,71 +71,71 @@ class Str extends BuiltinType { } /** The builtin `i8` type. */ -class I8 extends BuiltinType { +class I8 extends IntegralTypeImpl { I8() { this.getName() = "i8" } } /** The builtin `i16` type. */ -class I16 extends BuiltinType { +class I16 extends IntegralTypeImpl { I16() { this.getName() = "i16" } } /** The builtin `i32` type. */ -class I32 extends BuiltinType { +class I32 extends IntegralTypeImpl { I32() { this.getName() = "i32" } } /** The builtin `i64` type. */ -class I64 extends BuiltinType { +class I64 extends IntegralTypeImpl { I64() { this.getName() = "i64" } } /** The builtin `i128` type. */ -class I128 extends BuiltinType { +class I128 extends IntegralTypeImpl { I128() { this.getName() = "i128" } } /** The builtin `u8` type. */ -class U8 extends BuiltinType { +class U8 extends IntegralTypeImpl { U8() { this.getName() = "u8" } } /** The builtin `u16` type. */ -class U16 extends BuiltinType { +class U16 extends IntegralTypeImpl { U16() { this.getName() = "u16" } } /** The builtin `u32` type. */ -class U32 extends BuiltinType { +class U32 extends IntegralTypeImpl { U32() { this.getName() = "u32" } } /** The builtin `u64` type. */ -class U64 extends BuiltinType { +class U64 extends IntegralTypeImpl { U64() { this.getName() = "u64" } } /** The builtin `u128` type. */ -class U128 extends BuiltinType { +class U128 extends IntegralTypeImpl { U128() { this.getName() = "u128" } } /** The builtin `usize` type. */ -class Usize extends BuiltinType { +class Usize extends IntegralTypeImpl { Usize() { this.getName() = "usize" } } /** The builtin `isize` type. */ -class Isize extends BuiltinType { +class Isize extends IntegralTypeImpl { Isize() { this.getName() = "isize" } } /** The builtin `f32` type. */ -class F32 extends BuiltinType { +class F32 extends FloatingPointTypeImpl { F32() { this.getName() = "f32" } } /** The builtin `f64` type. */ -class F64 extends BuiltinType { +class F64 extends FloatingPointTypeImpl { F64() { this.getName() = "f64" } } From 6433bec69946d9c3a6e5570603e18f4945fab004 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:58:00 +0000 Subject: [PATCH 20/57] Rust: Add a test for BuiltinTypes. --- .../elements/builtintypes/BuiltinTypes.expected | 17 +++++++++++++++++ .../elements/builtintypes/BuiltinTypes.ql | 14 ++++++++++++++ .../elements/builtintypes/Cargo.lock | 7 +++++++ .../library-tests/elements/builtintypes/test.rs | 5 +++++ 4 files changed, 43 insertions(+) create mode 100644 rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected create mode 100644 rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql create mode 100644 rust/ql/test/library-tests/elements/builtintypes/Cargo.lock create mode 100644 rust/ql/test/library-tests/elements/builtintypes/test.rs diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected new file mode 100644 index 000000000000..2b0aecda049e --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.expected @@ -0,0 +1,17 @@ +| struct bool | | +| struct char | | +| struct f32 | FloatingPointType, NumericType | +| struct f64 | FloatingPointType, NumericType | +| struct i8 | IntegralType, NumericType | +| struct i16 | IntegralType, NumericType | +| struct i32 | IntegralType, NumericType | +| struct i64 | IntegralType, NumericType | +| struct i128 | IntegralType, NumericType | +| struct isize | IntegralType, NumericType | +| struct str | | +| struct u8 | IntegralType, NumericType | +| struct u16 | IntegralType, NumericType | +| struct u32 | IntegralType, NumericType | +| struct u64 | IntegralType, NumericType | +| struct u128 | IntegralType, NumericType | +| struct usize | IntegralType, NumericType | diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql new file mode 100644 index 000000000000..a5a1a0a48e0c --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -0,0 +1,14 @@ +import rust +import codeql.rust.frameworks.stdlib.Builtins +import codeql.rust.internal.Type + +string describe(BuiltinType t) { + (t instanceof NumericType and result = "NumericType") + or + (t instanceof IntegralType and result = "IntegralType") + or + (t instanceof FloatingPointType and result = "FloatingPointType") +} + +from BuiltinType t +select t.toString(), concat(describe(t), ", ") diff --git a/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock new file mode 100644 index 000000000000..b9856cfaf77d --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/elements/builtintypes/test.rs b/rust/ql/test/library-tests/elements/builtintypes/test.rs new file mode 100644 index 000000000000..a00a4833c4c4 --- /dev/null +++ b/rust/ql/test/library-tests/elements/builtintypes/test.rs @@ -0,0 +1,5 @@ + +// --- tests --- + +fn test_types() { +} From 52397f0ce0a7f86aeceea0e891a3a4fc8841f02c Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 11:15:52 +0000 Subject: [PATCH 21/57] Rust: Add numeric type barrier for SQL injection. --- rust/ql/lib/codeql/rust/security/Barriers.qll | 26 ++++++++++ .../rust/security/SqlInjectionExtensions.qll | 7 +++ .../security/CWE-089/SqlInjection.expected | 48 ++++--------------- .../test/query-tests/security/CWE-089/sqlx.rs | 2 +- 4 files changed, 44 insertions(+), 39 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/security/Barriers.qll diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll new file mode 100644 index 000000000000..66d47146d308 --- /dev/null +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -0,0 +1,26 @@ +/** + * Classes to represent barriers commonly used in dataflow and taint tracking + * configurations. + */ + +import rust +private import codeql.rust.dataflow.DataFlow +private import codeql.rust.internal.TypeInference as TypeInference +private import codeql.rust.internal.Type +private import codeql.rust.frameworks.stdlib.Builtins + +/** + * A node whose type is a numeric or boolean type, which may be an appropriate + * taint flow barrier for some queries. + */ +class NumericTypeBarrier extends DataFlow::Node { + NumericTypeBarrier() { + exists(TypeInference::Type t | + t = TypeInference::inferType(this.asExpr().getExpr()) and + ( + t.(StructType).getStruct() instanceof NumericType or + t.(StructType).getStruct() instanceof Bool + ) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll index f2921ef0cc13..ff81df37e405 100644 --- a/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/SqlInjectionExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting SQL injection @@ -57,4 +58,10 @@ module SqlInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "sql-injection") } } + + /** + * A barrier for SQL injection vulnerabilities for nodes whose type is a numeric or + * boolean type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa79376..fafde42ff653 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -21,7 +21,6 @@ | mysql.rs:121:14:121:22 | query_map | mysql.rs:97:33:97:54 | ...::get | mysql.rs:121:14:121:22 | query_map | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:149:26:149:29 | prep | mysql.rs:97:33:97:54 | ...::get | mysql.rs:149:26:149:29 | prep | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | | mysql.rs:154:15:154:24 | query_drop | mysql.rs:97:33:97:54 | ...::get | mysql.rs:154:15:154:24 | query_drop | This query depends on a $@. | mysql.rs:97:33:97:54 | ...::get | user-provided value | -| sqlx.rs:77:13:77:23 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:77:13:77:23 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:78:13:78:23 | ...::query | sqlx.rs:47:22:47:35 | ...::args | sqlx.rs:78:13:78:23 | ...::query | This query depends on a $@. | sqlx.rs:47:22:47:35 | ...::args | user-provided value | | sqlx.rs:80:17:80:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:80:17:80:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | | sqlx.rs:81:17:81:27 | ...::query | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:81:17:81:27 | ...::query | This query depends on a $@. | sqlx.rs:48:25:48:46 | ...::get | user-provided value | @@ -37,7 +36,7 @@ edges | mysql.rs:12:13:12:29 | mut remote_string | mysql.rs:18:71:18:83 | remote_string | provenance | | | mysql.rs:12:33:12:54 | ...::get | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:12:33:12:77 | ...::get(...) [Ok] | mysql.rs:12:33:13:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:12:33:13:21 | ... .unwrap() | mysql.rs:12:33:14:19 | ... .text() [Ok] | provenance | MaD:34 | | mysql.rs:12:33:14:19 | ... .text() [Ok] | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:12:33:15:40 | ... .unwrap_or(...) | mysql.rs:12:13:12:29 | mut remote_string | provenance | | | mysql.rs:17:13:17:24 | unsafe_query | mysql.rs:25:38:25:49 | unsafe_query | provenance | | @@ -114,7 +113,7 @@ edges | mysql.rs:97:13:97:29 | mut remote_string | mysql.rs:103:71:103:83 | remote_string | provenance | | | mysql.rs:97:33:97:54 | ...::get | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | mysql.rs:97:33:97:77 | ...::get(...) [Ok] | mysql.rs:97:33:98:21 | ... .unwrap() | provenance | MaD:31 | -| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:35 | +| mysql.rs:97:33:98:21 | ... .unwrap() | mysql.rs:97:33:99:19 | ... .text() [Ok] | provenance | MaD:34 | | mysql.rs:97:33:99:19 | ... .text() [Ok] | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | provenance | MaD:32 | | mysql.rs:97:33:100:40 | ... .unwrap_or(...) | mysql.rs:97:13:97:29 | mut remote_string | provenance | | | mysql.rs:102:13:102:24 | unsafe_query | mysql.rs:110:38:110:49 | unsafe_query | provenance | | @@ -173,25 +172,14 @@ edges | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | | sqlx.rs:48:25:48:46 | ...::get | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:48:25:48:69 | ...::get(...) [Ok] | sqlx.rs:48:25:48:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:48:25:48:78 | ... .unwrap() | sqlx.rs:48:25:48:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | sqlx.rs:48:9:48:21 | remote_string | provenance | | -| sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:32 | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | -| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:29 | -| sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:32:52:87 | { ... } | provenance | | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | sqlx.rs:52:9:52:20 | safe_query_3 | provenance | | -| sqlx.rs:52:32:52:87 | MacroExpr | sqlx.rs:52:32:52:87 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:52:32:52:87 | { ... } | sqlx.rs:52:32:52:87 | ...::must_use(...) | provenance | MaD:37 | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | @@ -212,11 +200,8 @@ edges | sqlx.rs:56:9:56:22 | unsafe_query_4 | sqlx.rs:82:29:82:51 | unsafe_query_4.as_str() | provenance | MaD:29 | | sqlx.rs:59:17:59:72 | ...::format(...) | sqlx.rs:59:17:59:72 | { ... } | provenance | | | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | -| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:36 | -| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:37 | -| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | provenance | MaD:29 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | sqlx.rs:77:13:77:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | +| sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:35 | +| sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:36 | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | sqlx.rs:78:13:78:23 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | sqlx.rs:80:17:80:27 | ...::query | provenance | MaD:20 Sink:MaD:20 | | sqlx.rs:81:29:81:42 | unsafe_query_3 | sqlx.rs:81:29:81:51 | unsafe_query_3.as_str() [&ref] | provenance | MaD:29 | @@ -228,7 +213,7 @@ edges | sqlx.rs:100:9:100:21 | remote_string | sqlx.rs:102:84:102:96 | remote_string | provenance | | | sqlx.rs:100:25:100:46 | ...::get | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:100:25:100:69 | ...::get(...) [Ok] | sqlx.rs:100:25:100:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:100:25:100:78 | ... .unwrap() | sqlx.rs:100:25:100:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:100:25:100:85 | ... .text() [Ok] | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:100:25:100:118 | ... .unwrap_or(...) | sqlx.rs:100:9:100:21 | remote_string | provenance | | | sqlx.rs:102:9:102:22 | unsafe_query_1 | sqlx.rs:113:31:113:44 | unsafe_query_1 | provenance | | @@ -270,7 +255,7 @@ edges | sqlx.rs:173:9:173:21 | remote_string | sqlx.rs:175:84:175:96 | remote_string | provenance | | | sqlx.rs:173:25:173:46 | ...::get | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | provenance | Src:MaD:23 | | sqlx.rs:173:25:173:69 | ...::get(...) [Ok] | sqlx.rs:173:25:173:78 | ... .unwrap() | provenance | MaD:31 | -| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:35 | +| sqlx.rs:173:25:173:78 | ... .unwrap() | sqlx.rs:173:25:173:85 | ... .text() [Ok] | provenance | MaD:34 | | sqlx.rs:173:25:173:85 | ... .text() [Ok] | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | provenance | MaD:32 | | sqlx.rs:173:25:173:118 | ... .unwrap_or(...) | sqlx.rs:173:9:173:21 | remote_string | provenance | | | sqlx.rs:175:9:175:22 | unsafe_query_1 | sqlx.rs:188:29:188:42 | unsafe_query_1 | provenance | | @@ -318,10 +303,9 @@ models | 31 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 32 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 33 | Summary: ::as_str; Argument[self]; ReturnValue; value | -| 34 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 35 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 36 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 37 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 34 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 35 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 36 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | mysql.rs:12:13:12:29 | mut remote_string | semmle.label | mut remote_string | | mysql.rs:12:33:12:54 | ...::get | semmle.label | ...::get | @@ -444,14 +428,6 @@ nodes | sqlx.rs:48:25:48:78 | ... .unwrap() | semmle.label | ... .unwrap() | | sqlx.rs:48:25:48:85 | ... .text() [Ok] | semmle.label | ... .text() [Ok] | | sqlx.rs:48:25:48:118 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:49:9:49:21 | remote_number | semmle.label | remote_number | -| sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | semmle.label | remote_string.parse() [Ok] | -| sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| sqlx.rs:52:9:52:20 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:52:32:52:87 | ...::format(...) | semmle.label | ...::format(...) | -| sqlx.rs:52:32:52:87 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| sqlx.rs:52:32:52:87 | MacroExpr | semmle.label | MacroExpr | -| sqlx.rs:52:32:52:87 | { ... } | semmle.label | { ... } | | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | semmle.label | unsafe_query_1 [&ref] | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | semmle.label | &arg_string [&ref] | | sqlx.rs:53:27:53:36 | arg_string | semmle.label | arg_string | @@ -468,10 +444,6 @@ nodes | sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | -| sqlx.rs:77:13:77:23 | ...::query | semmle.label | ...::query | -| sqlx.rs:77:25:77:36 | safe_query_3 | semmle.label | safe_query_3 | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | -| sqlx.rs:77:25:77:45 | safe_query_3.as_str() [&ref] | semmle.label | safe_query_3.as_str() [&ref] | | sqlx.rs:78:13:78:23 | ...::query | semmle.label | ...::query | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | semmle.label | unsafe_query_1.as_str() [&ref] | | sqlx.rs:80:17:80:27 | ...::query | semmle.label | ...::query | diff --git a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs index 151f9fa7c82e..915625f76348 100644 --- a/rust/ql/test/query-tests/security/CWE-089/sqlx.rs +++ b/rust/ql/test/query-tests/security/CWE-089/sqlx.rs @@ -74,7 +74,7 @@ async fn test_sqlx_mysql(url: &str, enable_remote: bool) -> Result<(), sqlx::Err // prepared queries let _ = sqlx::query(safe_query_1.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(safe_query_2.as_str()).execute(&pool).await?; // $ sql-sink - let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink $ SPURIOUS: Alert[rust/sql-injection]=remote1 + let _ = sqlx::query(safe_query_3.as_str()).execute(&pool).await?; // $ sql-sink let _ = sqlx::query(unsafe_query_1.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=args1 if enable_remote { let _ = sqlx::query(unsafe_query_2.as_str()).execute(&pool).await?; // $ sql-sink Alert[rust/sql-injection]=remote1 From 2d4369ac6c899a0450c710aa46f61620f506bc6e Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:46:37 +0000 Subject: [PATCH 22/57] Rust: Add numeric type barrier for log injection. --- .../rust/security/LogInjectionExtensions.qll | 7 +++++++ .../security/CWE-117/LogInjection.expected | 17 ++--------------- .../test/query-tests/security/CWE-117/main.rs | 2 +- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll index a0282a0ff29f..dafebc96731e 100644 --- a/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/LogInjectionExtensions.qll @@ -8,6 +8,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts private import codeql.util.Unit +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting log injection @@ -42,4 +43,10 @@ module LogInjection { private class ModelsAsDataSink extends Sink { ModelsAsDataSink() { sinkNode(this, "log-injection") } } + + /** + * A barrier for log injection vulnerabilities for nodes whose type is a + * numeric or boolean type, which is unlikely to expose any vulnerability. + */ + private class NumericTypeBarrier extends Barrier instanceof Barriers::NumericTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected index 6a4995a27280..2e00f941c24e 100644 --- a/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-117/LogInjection.expected @@ -3,7 +3,6 @@ | main.rs:17:5:17:10 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:17:5:17:10 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:19:5:19:10 | ...::log | main.rs:10:22:10:34 | ...::var | main.rs:19:5:19:10 | ...::log | Log entry depends on a $@. | main.rs:10:22:10:34 | ...::var | user-provided value | | main.rs:30:5:30:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:30:5:30:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | -| main.rs:49:5:49:9 | ...::log | main.rs:11:23:11:44 | ...::get | main.rs:49:5:49:9 | ...::log | Log entry depends on a $@. | main.rs:11:23:11:44 | ...::get | user-provided value | | main.rs:112:9:112:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:112:9:112:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:113:9:113:13 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:113:9:113:13 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | | main.rs:114:9:114:14 | ...::log | main.rs:109:25:109:38 | ...::args | main.rs:114:9:114:14 | ...::log | Log entry depends on a $@. | main.rs:109:25:109:38 | ...::args | user-provided value | @@ -20,21 +19,15 @@ edges | main.rs:10:22:10:81 | ... .unwrap_or(...) | main.rs:10:9:10:18 | user_input | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:17:12:17:46 | MacroExpr | provenance | | | main.rs:11:9:11:19 | remote_data | main.rs:30:11:30:66 | MacroExpr | provenance | | -| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | -| main.rs:11:9:11:19 | remote_data | main.rs:48:18:48:43 | remote_data.parse() [Ok] | provenance | MaD:12 | | main.rs:11:23:11:44 | ...::get | main.rs:11:23:11:71 | ...::get(...) [Ok] | provenance | Src:MaD:4 | | main.rs:11:23:11:71 | ...::get(...) [Ok] | main.rs:11:23:12:17 | ... .unwrap() | provenance | MaD:9 | -| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:13 | +| main.rs:11:23:12:17 | ... .unwrap() | main.rs:11:23:12:24 | ... .text() [Ok] | provenance | MaD:12 | | main.rs:11:23:12:24 | ... .text() [Ok] | main.rs:11:23:12:61 | ... .unwrap_or(...) | provenance | MaD:10 | | main.rs:11:23:12:61 | ... .unwrap_or(...) | main.rs:11:9:11:19 | remote_data | provenance | | | main.rs:16:11:16:44 | MacroExpr | main.rs:16:5:16:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:17:12:17:46 | MacroExpr | main.rs:17:5:17:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:19:12:19:39 | MacroExpr | main.rs:19:5:19:10 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:30:11:30:66 | MacroExpr | main.rs:30:5:30:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | -| main.rs:48:9:48:14 | number | main.rs:49:11:49:30 | MacroExpr | provenance | | -| main.rs:48:18:48:43 | remote_data.parse() [Ok] | main.rs:48:18:48:56 | ... .unwrap_or(...) | provenance | MaD:10 | -| main.rs:48:18:48:56 | ... .unwrap_or(...) | main.rs:48:9:48:14 | number | provenance | | -| main.rs:49:11:49:30 | MacroExpr | main.rs:49:5:49:9 | ...::log | provenance | MaD:1 Sink:MaD:1 | | main.rs:109:13:109:21 | user_data | main.rs:112:15:112:35 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:113:15:113:38 | MacroExpr | provenance | | | main.rs:109:13:109:21 | user_data | main.rs:114:16:114:37 | MacroExpr | provenance | | @@ -70,8 +63,7 @@ models | 9 | Summary: ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 10 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | | 11 | Summary: ::unwrap_or_default; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 12 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 13 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | +| 12 | Summary: ::text; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | nodes | main.rs:10:9:10:18 | user_input | semmle.label | user_input | | main.rs:10:22:10:34 | ...::var | semmle.label | ...::var | @@ -91,11 +83,6 @@ nodes | main.rs:19:12:19:39 | MacroExpr | semmle.label | MacroExpr | | main.rs:30:5:30:9 | ...::log | semmle.label | ...::log | | main.rs:30:11:30:66 | MacroExpr | semmle.label | MacroExpr | -| main.rs:48:9:48:14 | number | semmle.label | number | -| main.rs:48:18:48:43 | remote_data.parse() [Ok] | semmle.label | remote_data.parse() [Ok] | -| main.rs:48:18:48:56 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:49:5:49:9 | ...::log | semmle.label | ...::log | -| main.rs:49:11:49:30 | MacroExpr | semmle.label | MacroExpr | | main.rs:109:13:109:21 | user_data | semmle.label | user_data | | main.rs:109:25:109:38 | ...::args | semmle.label | ...::args | | main.rs:109:25:109:40 | ...::args(...) [element] | semmle.label | ...::args(...) [element] | diff --git a/rust/ql/test/query-tests/security/CWE-117/main.rs b/rust/ql/test/query-tests/security/CWE-117/main.rs index 883505153148..f5001846d1bf 100644 --- a/rust/ql/test/query-tests/security/CWE-117/main.rs +++ b/rust/ql/test/query-tests/security/CWE-117/main.rs @@ -46,7 +46,7 @@ fn main() { // GOOD: Numeric data derived from user input (directly) let number = remote_data.parse::().unwrap_or(0); - info!("Number: {}", number); // $ SPURIOUS: Alert[rust/log-injection]=remote + info!("Number: {}", number); // More complex test cases test_complex_scenarios(&username, &user_input); From 33efed92b8cb52f03604df0b6e23adcc17efc915 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 15:54:23 +0000 Subject: [PATCH 23/57] Rust: Add integral type barrier for Regex injection. --- rust/ql/lib/codeql/rust/security/Barriers.qll | 16 +++++++++ .../regex/RegexInjectionExtensions.qll | 10 ++++++ .../security/CWE-020/RegexInjection.expected | 36 +++---------------- .../test/query-tests/security/CWE-020/main.rs | 4 +-- 4 files changed, 32 insertions(+), 34 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 66d47146d308..8eec065f8f23 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -24,3 +24,19 @@ class NumericTypeBarrier extends DataFlow::Node { ) } } + +/** + * A node whose type is an integral (integer) or boolean type, which may be an + * appropriate taint flow barrier for some queries. + */ +class IntegralOrBooleanTypeBarrier extends DataFlow::Node { + IntegralOrBooleanTypeBarrier() { + exists(TypeInference::Type t | + t = TypeInference::inferType(this.asExpr().getExpr()) and + ( + t.(StructType).getStruct() instanceof IntegralType or + t.(StructType).getStruct() instanceof Bool + ) + ) + } +} diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 61d26f2f938b..7e82bdd678a8 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -9,6 +9,7 @@ private import codeql.rust.dataflow.DataFlow private import codeql.rust.controlflow.CfgNodes private import codeql.rust.dataflow.FlowSink private import codeql.rust.Concepts +private import codeql.rust.security.Barriers as Barriers /** * Provides default sources, sinks and barriers for detecting regular expression @@ -87,4 +88,13 @@ module RegexInjection { .getText() = "escape" } } + + /** + * A barrier for regular expression injection vulnerabilities for nodes whose + * type is an integral or boolean type, which is unlikely to expose any vulnerability. + * + * We don't include floating point types in this barrier, as `.` is a special character + * in regular expressions. + */ + private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier { } } diff --git a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected index 7627221edb11..2814af2b5ede 100644 --- a/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-020/RegexInjection.expected @@ -1,6 +1,5 @@ #select | main.rs:6:25:6:30 | ®ex | main.rs:4:20:4:32 | ...::var | main.rs:6:25:6:30 | ®ex | This regular expression is constructed from a $@. | main.rs:4:20:4:32 | ...::var | user-provided value | -| main.rs:21:25:21:30 | ®ex | main.rs:19:23:19:35 | ...::var | main.rs:21:25:21:30 | ®ex | This regular expression is constructed from a $@. | main.rs:19:23:19:35 | ...::var | user-provided value | edges | main.rs:4:9:4:16 | username | main.rs:5:25:5:44 | MacroExpr | provenance | | | main.rs:4:20:4:32 | ...::var | main.rs:4:20:4:40 | ...::var(...) [Ok] | provenance | Src:MaD:1 | @@ -9,28 +8,14 @@ edges | main.rs:5:9:5:13 | regex | main.rs:6:26:6:30 | regex | provenance | | | main.rs:5:25:5:44 | ...::format(...) | main.rs:5:25:5:44 | { ... } | provenance | | | main.rs:5:25:5:44 | ...::must_use(...) | main.rs:5:9:5:13 | regex | provenance | | -| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:4 | -| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:5 | +| main.rs:5:25:5:44 | MacroExpr | main.rs:5:25:5:44 | ...::format(...) | provenance | MaD:3 | +| main.rs:5:25:5:44 | { ... } | main.rs:5:25:5:44 | ...::must_use(...) | provenance | MaD:4 | | main.rs:6:26:6:30 | regex | main.rs:6:25:6:30 | ®ex | provenance | | -| main.rs:19:9:19:19 | user_number | main.rs:20:25:20:47 | MacroExpr | provenance | | -| main.rs:19:23:19:35 | ...::var | main.rs:19:23:19:43 | ...::var(...) [Ok] | provenance | Src:MaD:1 | -| main.rs:19:23:19:43 | ...::var(...) [Ok] | main.rs:19:23:19:70 | ... .unwrap_or(...) | provenance | MaD:2 | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | main.rs:19:23:19:85 | ... .parse() [Ok] | provenance | MaD:3 | -| main.rs:19:23:19:85 | ... .parse() [Ok] | main.rs:19:23:19:98 | ... .unwrap_or(...) | provenance | MaD:2 | -| main.rs:19:23:19:98 | ... .unwrap_or(...) | main.rs:19:9:19:19 | user_number | provenance | | -| main.rs:20:9:20:13 | regex | main.rs:21:26:21:30 | regex | provenance | | -| main.rs:20:25:20:47 | ...::format(...) | main.rs:20:25:20:47 | { ... } | provenance | | -| main.rs:20:25:20:47 | ...::must_use(...) | main.rs:20:9:20:13 | regex | provenance | | -| main.rs:20:25:20:47 | MacroExpr | main.rs:20:25:20:47 | ...::format(...) | provenance | MaD:4 | -| main.rs:20:25:20:47 | { ... } | main.rs:20:25:20:47 | ...::must_use(...) | provenance | MaD:5 | -| main.rs:21:26:21:30 | regex | main.rs:21:25:21:30 | ®ex | provenance | | models | 1 | Source: std::env::var; ReturnValue.Field[core::result::Result::Ok(0)]; environment | | 2 | Summary: ::unwrap_or; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 3 | Summary: ::parse; Argument[self]; ReturnValue.Field[core::result::Result::Ok(0)]; taint | -| 4 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | -| 5 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | +| 3 | Summary: alloc::fmt::format; Argument[0]; ReturnValue; taint | +| 4 | Summary: core::hint::must_use; Argument[0]; ReturnValue; value | nodes | main.rs:4:9:4:16 | username | semmle.label | username | | main.rs:4:20:4:32 | ...::var | semmle.label | ...::var | @@ -43,17 +28,4 @@ nodes | main.rs:5:25:5:44 | { ... } | semmle.label | { ... } | | main.rs:6:25:6:30 | ®ex | semmle.label | ®ex | | main.rs:6:26:6:30 | regex | semmle.label | regex | -| main.rs:19:9:19:19 | user_number | semmle.label | user_number | -| main.rs:19:23:19:35 | ...::var | semmle.label | ...::var | -| main.rs:19:23:19:43 | ...::var(...) [Ok] | semmle.label | ...::var(...) [Ok] | -| main.rs:19:23:19:70 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:19:23:19:85 | ... .parse() [Ok] | semmle.label | ... .parse() [Ok] | -| main.rs:19:23:19:98 | ... .unwrap_or(...) | semmle.label | ... .unwrap_or(...) | -| main.rs:20:9:20:13 | regex | semmle.label | regex | -| main.rs:20:25:20:47 | ...::format(...) | semmle.label | ...::format(...) | -| main.rs:20:25:20:47 | ...::must_use(...) | semmle.label | ...::must_use(...) | -| main.rs:20:25:20:47 | MacroExpr | semmle.label | MacroExpr | -| main.rs:20:25:20:47 | { ... } | semmle.label | { ... } | -| main.rs:21:25:21:30 | ®ex | semmle.label | ®ex | -| main.rs:21:26:21:30 | regex | semmle.label | regex | subpaths diff --git a/rust/ql/test/query-tests/security/CWE-020/main.rs b/rust/ql/test/query-tests/security/CWE-020/main.rs index fcd66e1e3ce0..3a8e3d014611 100644 --- a/rust/ql/test/query-tests/security/CWE-020/main.rs +++ b/rust/ql/test/query-tests/security/CWE-020/main.rs @@ -16,9 +16,9 @@ fn simple_good_escaped(hay: &str) -> Option { } fn simple_good_numeric(hay: &str) -> Option { - let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); // $ Source=env + let user_number = std::env::var("USER").unwrap_or("0".to_string()).parse::().unwrap_or(0); let regex = format!("foo{}bar", user_number); - let re = Regex::new(®ex).unwrap(); // $ SPURIOUS: Alert[rust/regex-injection]=env + let re = Regex::new(®ex).unwrap(); Some(re.is_match(hay)) } From 34f75952d0901a9fba547f7f6fcd13983a67ee01 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:40:02 +0000 Subject: [PATCH 24/57] Rust: Change note. --- rust/ql/src/change-notes/2025-10-31-barriers.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 rust/ql/src/change-notes/2025-10-31-barriers.md diff --git a/rust/ql/src/change-notes/2025-10-31-barriers.md b/rust/ql/src/change-notes/2025-10-31-barriers.md new file mode 100644 index 000000000000..1504380d8d03 --- /dev/null +++ b/rust/ql/src/change-notes/2025-10-31-barriers.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Taint flow barriers have been added to the `rust/regex-injection`, `rust/sql-injection` and `rust/log-injection`, reducing the frequency of false positive results for these queries. From 8548c167be39c4d88981cfc4263b68076ded75d9 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Fri, 31 Oct 2025 17:30:04 +0000 Subject: [PATCH 25/57] Rust: Autoformat. --- rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll | 9 +++------ .../rust/security/regex/RegexInjectionExtensions.qll | 3 ++- .../library-tests/elements/builtintypes/BuiltinTypes.ql | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll index 56de2d97b6f7..9269aff2bdcd 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/Builtins.qll @@ -34,24 +34,21 @@ class BuiltinType extends Struct { /** * A numerical type, such as `i64`, `usize`, `f32` or `f64`. */ -abstract private class NumericTypeImpl extends BuiltinType { -} +abstract private class NumericTypeImpl extends BuiltinType { } final class NumericType = NumericTypeImpl; /** * An integral numerical type, such as `i64` or `usize`. */ -abstract private class IntegralTypeImpl extends NumericTypeImpl { -} +abstract private class IntegralTypeImpl extends NumericTypeImpl { } final class IntegralType = IntegralTypeImpl; /** * A floating-point numerical type, such as `f32` or `f64`. */ -abstract private class FloatingPointTypeImpl extends NumericTypeImpl { -} +abstract private class FloatingPointTypeImpl extends NumericTypeImpl { } final class FloatingPointType = FloatingPointTypeImpl; diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 7e82bdd678a8..750517708af9 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -96,5 +96,6 @@ module RegexInjection { * We don't include floating point types in this barrier, as `.` is a special character * in regular expressions. */ - private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier { } + private class IntegralOrBooleanTypeBarrier extends Barrier instanceof Barriers::IntegralOrBooleanTypeBarrier + { } } diff --git a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql index a5a1a0a48e0c..4da1117a3fbf 100644 --- a/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql +++ b/rust/ql/test/library-tests/elements/builtintypes/BuiltinTypes.ql @@ -3,11 +3,11 @@ import codeql.rust.frameworks.stdlib.Builtins import codeql.rust.internal.Type string describe(BuiltinType t) { - (t instanceof NumericType and result = "NumericType") + t instanceof NumericType and result = "NumericType" or - (t instanceof IntegralType and result = "IntegralType") + t instanceof IntegralType and result = "IntegralType" or - (t instanceof FloatingPointType and result = "FloatingPointType") + t instanceof FloatingPointType and result = "FloatingPointType" } from BuiltinType t From c38115312599c8d7f733608fae88892cf80f1eb0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 09:38:43 +0000 Subject: [PATCH 26/57] Apply suggestions from code review Co-authored-by: Tom Hvitved --- rust/ql/lib/codeql/rust/security/Barriers.qll | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/rust/ql/lib/codeql/rust/security/Barriers.qll b/rust/ql/lib/codeql/rust/security/Barriers.qll index 8eec065f8f23..398e4f567128 100644 --- a/rust/ql/lib/codeql/rust/security/Barriers.qll +++ b/rust/ql/lib/codeql/rust/security/Barriers.qll @@ -15,12 +15,12 @@ private import codeql.rust.frameworks.stdlib.Builtins */ class NumericTypeBarrier extends DataFlow::Node { NumericTypeBarrier() { - exists(TypeInference::Type t | + exists(StructType t, Struct s | t = TypeInference::inferType(this.asExpr().getExpr()) and - ( - t.(StructType).getStruct() instanceof NumericType or - t.(StructType).getStruct() instanceof Bool - ) + s = t.getStruct() + | + s instanceof NumericType or + s instanceof Bool ) } } @@ -31,12 +31,12 @@ class NumericTypeBarrier extends DataFlow::Node { */ class IntegralOrBooleanTypeBarrier extends DataFlow::Node { IntegralOrBooleanTypeBarrier() { - exists(TypeInference::Type t | + exists(StructType t, Struct s | t = TypeInference::inferType(this.asExpr().getExpr()) and - ( - t.(StructType).getStruct() instanceof IntegralType or - t.(StructType).getStruct() instanceof Bool - ) + s = t.getStruct() + | + s instanceof IntegralType or + s instanceof Bool ) } } From c1ede51fe85cea172695925540b9388ea90da25b Mon Sep 17 00:00:00 2001 From: Michael Nebel Date: Mon, 3 Nov 2025 12:52:27 +0100 Subject: [PATCH 27/57] C#: Add change note. --- csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md diff --git a/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md b/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md new file mode 100644 index 000000000000..92231d3be2fc --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-11-03-roslyn-and-binlog.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* Updated *roslyn* and *binlog* dependencies in the extractor, which may improve database and analysis quality. From 0ca62ca5b6d34a5bf8ad8fbd2049b323d382dd5e Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Mon, 3 Nov 2025 12:58:29 +0100 Subject: [PATCH 28/57] Fix copilot implementation --- rust/ql/.generated.list | 1 - rust/ql/.gitattributes | 1 - rust/ql/lib/codeql/rust/elements/Const.qll | 14 ------------- .../lib/codeql/rust/elements/ConstAccess.qll | 7 +++++++ .../rust/elements/internal/ConstImpl.qll | 16 ++++----------- rust/ql/lib/rust.qll | 1 + .../macro-expansion/PrintAst.expected | 2 +- .../library-tests/const_access/Cargo.lock | 6 +++--- .../const_access/const_access.expected | 8 ++++++++ .../const_access/const_access.ql | 4 +--- .../test/library-tests/const_access/main.rs | 20 ++++++------------- 11 files changed, 31 insertions(+), 49 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/elements/ConstAccess.qll create mode 100644 rust/ql/test/library-tests/const_access/const_access.expected diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index ffe947da742b..1f580178999e 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -247,7 +247,6 @@ lib/codeql/rust/elements/internal/ConstArgImpl.qll dc7e7b5fe1a6eeb61dd30a55a3ed2 lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll ddb4a0045635d477e87360ecafec0ba90ddcffc6e62996eb6e7edd5a5d65b860 442061d0497a615b3f008b990f5e3c4f045110f76500eff81a7f44ffd1319acf lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll 2082a3244c21e03b6dadfba9b3f97a00981324e10d1465d3a51cf3c921eb89e4 889e347834d8c6e90dfef9714af073b3b2193f6830f1c8356cee9c6573b3ecb4 lib/codeql/rust/elements/internal/ConstConstructor.qll 72a31fd9b8b3fd910e35af1b2b30fa54cc4d9e14e7eabdb94b4cd2af95b2df38 3edc0a82a7b446fdfd3e71947801f3c7cac010b2a217b8accb69980387bdd67a -lib/codeql/rust/elements/internal/ConstImpl.qll 058b474b9aaf2ad687ab1e62ebc8a51ba93d9ea4340c2f41768b71613ac330c1 c2c5d4746a588096cbbdfa4355ee73d806c7a4ac9507930a120e49060f9d5347 lib/codeql/rust/elements/internal/ConstParamConstructor.qll f6645f952aac87c7e00e5e9661275312a1df47172088b4de6b5a253d5c4ed048 eda737470a7b89cf6a02715c9147d074041d6d00fd50d5b2d70266add6e4b571 lib/codeql/rust/elements/internal/ConstParamImpl.qll c6995be58f84d1df65897c80f7ee3dd8eb410bb3e634ff1bfe1be94dfb3fdf32 bcfb5547b40f24bcec20056fe1d36724b734c920b0bc7538fe2974b03f4478fe lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7e8deba92f6a76187f6009c454f3ea07e89ba459de57ca6 6f658e7d580c4c9068b01d6dd6f72888b8800860668a6653f8c3b27dc9996935 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index df4a65e7d957..ff149fb36d36 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -249,7 +249,6 @@ /lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ConstImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/Const.qll b/rust/ql/lib/codeql/rust/elements/Const.qll index d15154835554..39aea3e25dc4 100644 --- a/rust/ql/lib/codeql/rust/elements/Const.qll +++ b/rust/ql/lib/codeql/rust/elements/Const.qll @@ -22,17 +22,3 @@ import codeql.rust.elements.WhereClause * ``` */ final class Const = Impl::Const; - -/** - * A constant access. - * - * For example: - * ```rust - * const X: i32 = 42; - * - * fn main() { - * println!("{}", X); - * } - * ``` - */ -final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/ConstAccess.qll b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll new file mode 100644 index 000000000000..ae2f6c3e333c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/ConstAccess.qll @@ -0,0 +1,7 @@ +/** + * This module provides the public class `ConstAccess`. + */ + +private import internal.ConstImpl + +final class ConstAccess = Impl::ConstAccess; diff --git a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll index 99d76dd644aa..0234f7cf7302 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ConstImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Const`. * @@ -6,8 +5,7 @@ */ private import codeql.rust.elements.internal.generated.Const -private import codeql.rust.elements.PathExpr -private import codeql.rust.elements.internal.PathExprBaseImpl::Impl as PathExprBaseImpl +private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl private import codeql.rust.internal.PathResolution /** @@ -15,6 +13,7 @@ private import codeql.rust.internal.PathResolution * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A constant item declaration. * @@ -37,21 +36,14 @@ module Impl { * } * ``` */ - class ConstAccess extends PathExprBaseImpl::PathExprBase { + class ConstAccess extends PathExprImpl::PathExpr { private Const c; - ConstAccess() { - exists(PathExpr pe | - pe = this and - c = resolvePath(pe.getPath()) - ) - } + ConstAccess() { c = resolvePath(this.getPath()) } /** Gets the constant being accessed. */ Const getConst() { result = c } - override string toStringImpl() { result = c.getName().getText() } - override string getAPrimaryQlClass() { result = "ConstAccess" } } } diff --git a/rust/ql/lib/rust.qll b/rust/ql/lib/rust.qll index b46e96868f63..d209672028b9 100644 --- a/rust/ql/lib/rust.qll +++ b/rust/ql/lib/rust.qll @@ -9,6 +9,7 @@ import codeql.rust.elements.ArithmeticOperation import codeql.rust.elements.AssignmentOperation import codeql.rust.elements.BitwiseOperation import codeql.rust.elements.ComparisonOperation +import codeql.rust.elements.ConstAccess import codeql.rust.elements.DerefExpr import codeql.rust.elements.LiteralExprExt import codeql.rust.elements.LogicalOperation diff --git a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected index 60e193113cc8..ffff0f53e7e5 100644 --- a/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected +++ b/rust/ql/test/extractor-tests/macro-expansion/PrintAst.expected @@ -1043,7 +1043,7 @@ macro_expansion.rs: # 98| getParamList(): [ParamList] ParamList # 99| getFunctionBody(): [BlockExpr] { ... } # 99| getStmtList(): [StmtList] StmtList -# 99| getTailExpr(): [PathExpr] CONST_MyDeriveUnion +# 99| getTailExpr(): [ConstAccess] CONST_MyDeriveUnion # 99| getPath(): [Path] CONST_MyDeriveUnion # 99| getSegment(): [PathSegment] CONST_MyDeriveUnion # 99| getIdentifier(): [NameRef] CONST_MyDeriveUnion diff --git a/rust/ql/test/library-tests/const_access/Cargo.lock b/rust/ql/test/library-tests/const_access/Cargo.lock index 876cd502126b..b9856cfaf77d 100644 --- a/rust/ql/test/library-tests/const_access/Cargo.lock +++ b/rust/ql/test/library-tests/const_access/Cargo.lock @@ -1,7 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "const_access_test" -version = "0.1.0" +name = "test" +version = "0.0.1" diff --git a/rust/ql/test/library-tests/const_access/const_access.expected b/rust/ql/test/library-tests/const_access/const_access.expected new file mode 100644 index 000000000000..83c5022aca84 --- /dev/null +++ b/rust/ql/test/library-tests/const_access/const_access.expected @@ -0,0 +1,8 @@ +testFailures +constAccess +| main.rs:17:13:17:24 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:19:13:19:24 | STRING_CONST | main.rs:2:1:2:35 | Const | +| main.rs:21:13:21:33 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | +| main.rs:23:13:23:35 | ...::MODULE_CONST | main.rs:13:5:13:38 | Const | +| main.rs:25:8:25:19 | GLOBAL_CONST | main.rs:1:1:1:29 | Const | +| main.rs:29:16:29:36 | ...::ASSOC_CONST | main.rs:9:5:9:33 | Const | diff --git a/rust/ql/test/library-tests/const_access/const_access.ql b/rust/ql/test/library-tests/const_access/const_access.ql index 27b8f85e3dc3..b3bb73633927 100644 --- a/rust/ql/test/library-tests/const_access/const_access.ql +++ b/rust/ql/test/library-tests/const_access/const_access.ql @@ -2,9 +2,7 @@ import rust import utils.test.InlineExpectationsTest import TestUtils -query predicate constAccess(ConstAccess ca, Const c) { - toBeTested(ca) and c = ca.getConst() -} +query predicate constAccess(ConstAccess ca, Const c) { toBeTested(ca) and c = ca.getConst() } module ConstAccessTest implements TestSig { string getARelevantTag() { result = "const_access" } diff --git a/rust/ql/test/library-tests/const_access/main.rs b/rust/ql/test/library-tests/const_access/main.rs index b8a363adfdb0..0cf2467d100a 100644 --- a/rust/ql/test/library-tests/const_access/main.rs +++ b/rust/ql/test/library-tests/const_access/main.rs @@ -14,27 +14,19 @@ mod my_module { } fn use_consts() { - // $ const_access=GLOBAL_CONST - let x = GLOBAL_CONST; - // $ const_access=GLOBAL_CONST - println!("{}", GLOBAL_CONST); + let x = GLOBAL_CONST; // $ const_access=GLOBAL_CONST - // $ const_access=STRING_CONST - let s = STRING_CONST; + let s = STRING_CONST; // $ const_access=STRING_CONST - // $ const_access=ASSOC_CONST - let y = MyStruct::ASSOC_CONST; + let y = MyStruct::ASSOC_CONST; // $ const_access=ASSOC_CONST - // $ const_access=MODULE_CONST - let z = my_module::MODULE_CONST; + let z = my_module::MODULE_CONST; // $ const_access=MODULE_CONST - // $ const_access=GLOBAL_CONST - if GLOBAL_CONST > 0 { + if GLOBAL_CONST > 0 { // $ const_access=GLOBAL_CONST println!("positive"); } - // $ const_access=ASSOC_CONST - let arr = [MyStruct::ASSOC_CONST; 5]; + let arr = [MyStruct::ASSOC_CONST; 5]; // $ const_access=ASSOC_CONST } fn main() { From 4b3a1c5abb374e85b8810c1a35c6111655bf5261 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:24:28 +0000 Subject: [PATCH 29/57] Rust: Move a model file into subdirectory. --- .../{tokio-postgres.model.yml => tokio/postgres.model.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rust/ql/lib/codeql/rust/frameworks/{tokio-postgres.model.yml => tokio/postgres.model.yml} (100%) diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/tokio-postgres.model.yml rename to rust/ql/lib/codeql/rust/frameworks/tokio/postgres.model.yml From 1b435ed07d539f9548b30d301e17750e5a4be599 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:26:37 +0000 Subject: [PATCH 30/57] Rust: Move another model file into subdirectory. --- .../frameworks/{async-rs.model.yml => asyncstd/net.model.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename rust/ql/lib/codeql/rust/frameworks/{async-rs.model.yml => asyncstd/net.model.yml} (100%) diff --git a/rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml similarity index 100% rename from rust/ql/lib/codeql/rust/frameworks/async-rs.model.yml rename to rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml From 8a2c117a0e3c2c0314a3186dab17945c56e4321f Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:31:25 +0000 Subject: [PATCH 31/57] Rust: Move models between core.model.yml and alloc.model.yml. --- .../rust/frameworks/stdlib/alloc.model.yml | 26 ++++++++++++++----- .../rust/frameworks/stdlib/core.model.yml | 26 ++++++------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 56131c704620..324f6244516c 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -27,18 +27,30 @@ extensions: - ["::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] + # Conversions + - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] # Fmt - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] + # Layout + - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] + - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String - - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Vec - ["alloc::vec::from_elem", "Argument[0]", "ReturnValue.Element", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 9a29741bd37e..76a38bd546bb 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -3,10 +3,13 @@ extensions: pack: codeql/rust-all extensible: summaryModel data: + # Arithmetic + - ["<_ as core::ops::arith::Add>::add", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::ops::arith::Add>::add", "Argument[0].Reference", "ReturnValue", "taint", "manual"] # Clone - ["<_ as core::clone::Clone>::clone", "Argument[self].Reference", "ReturnValue", "value", "manual"] # Conversions - - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Element", "ReturnValue.Element", "taint", "manual"] - ["<_ as core::convert::Into>::into", "Argument[self].Reference.Element", "ReturnValue.Element", "taint", "manual"] # From @@ -23,21 +26,6 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - # Layout - - ["::from_size_align", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::from_size_align_unchecked", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["::array", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::repeat_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::repeat_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)].Field[0]", "taint", "manual"] - - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] @@ -53,10 +41,12 @@ extensions: - ["core::ptr::write_unaligned", "Argument[1]", "Argument[0].Reference", "value", "manual"] - ["core::ptr::write_volatile", "Argument[1]", "Argument[0].Reference", "value", "manual"] # Str + - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] + - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] From 144fa7dd392c88267d311843ae1151eca15d9e98 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:33:37 +0000 Subject: [PATCH 32/57] Rust: Deduplicate some models. --- rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml | 2 -- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 4 ---- 2 files changed, 6 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 324f6244516c..4dd9db8489cf 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -47,8 +47,6 @@ extensions: - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::as_str", "Argument[self]", "ReturnValue", "value", "manual"] - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["<_ as alloc::string::ToString>::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index 76a38bd546bb..eeeb948bf3a7 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -45,11 +45,7 @@ extensions: - ["::as_bytes", "Argument[self]", "ReturnValue", "value", "manual"] - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - - ["::as_str", "Argument[self]", "ReturnValue", "taint", "value"] - - ["::as_bytes", "Argument[self]", "ReturnValue", "taint", "value"] - ["::to_string", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["::parse", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["::trim", "Argument[self]", "ReturnValue.Reference", "taint", "manual"] - addsTo: pack: codeql/rust-all extensible: sourceModel From 5af83787d82dfc8deb236ac7f1ead56c0b13cab7 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:35:27 +0000 Subject: [PATCH 33/57] Rust: Move a few more models. --- rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml | 3 +++ rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml index eeeb948bf3a7..46eea8f9c4ef 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/core.model.yml @@ -26,6 +26,9 @@ extensions: - ["<_ as core::iter::traits::iterator::Iterator>::collect", "Argument[self].Element", "ReturnValue.Element", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["<_ as core::iter::traits::iterator::Iterator>::for_each", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] + - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] # Pin - ["core::pin::Pin", "Argument[0]", "ReturnValue", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue", "value", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml index ae58b2a077aa..17b0451793d8 100644 --- a/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/tokio/io.model.yml @@ -46,6 +46,3 @@ extensions: - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>:::read_f32_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["<_ as tokio::io::util::async_read_ext::AsyncReadExt>::read_f64_le", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[self]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::chain", "Argument[0]", "ReturnValue", "taint", "manual"] - - ["<_ as core::iter::traits::iterator::Iterator>::take", "Argument[self]", "ReturnValue", "taint", "manual"] From 687cc6f544ace4a398a8b0029ae7b328d9b225f8 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:53:58 +0000 Subject: [PATCH 34/57] Rust: Re-arrange models slightly. --- rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml index 4dd9db8489cf..5199a0e8117b 100644 --- a/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/stdlib/alloc.model.yml @@ -27,8 +27,6 @@ extensions: - ["::pin", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::new", "Argument[0]", "ReturnValue.Reference", "value", "manual"] - ["::into_pin", "Argument[0]", "ReturnValue", "value", "manual"] - # Conversions - - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] # Fmt - ["alloc::fmt::format", "Argument[0]", "ReturnValue", "taint", "manual"] # Layout @@ -44,6 +42,7 @@ extensions: - ["::extend_packed", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::extend_packed", "Argument[0]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] - ["::align_to", "Argument[self]", "ReturnValue.Field[core::result::Result::Ok(0)]", "taint", "manual"] + - ["::align_to", "Argument[self].Element", "ReturnValue.Field[0,1,2].Reference.Element", "taint", "manual"] - ["::pad_to_align", "Argument[self]", "ReturnValue", "taint", "manual"] - ["::size", "Argument[self]", "ReturnValue", "taint", "manual"] # String From 50597685a2151906bc615c739252d49abb0a4b79 Mon Sep 17 00:00:00 2001 From: Chad Bentz <1760475+felickz@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:55:36 -0500 Subject: [PATCH 35/57] Add 'code-quality-extended' to query packs list --- misc/scripts/generate-code-scanning-query-list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index 02d59c473ec7..e592875e4bd3 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -31,7 +31,7 @@ # Define which languages and query packs to consider languages = [ "actions", "cpp", "csharp", "go", "java", "javascript", "python", "ruby", "rust", "swift" ] -packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality"] +packs = [ "code-scanning", "security-and-quality", "security-extended", "security-experimental", "code-quality", "code-quality-extended"] class CodeQL: def __init__(self): From 4346c61e976b8463c635aea17e9c2a7d1a05a841 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:19:07 +0000 Subject: [PATCH 36/57] Initial plan From 7b6b703d06f58e4a55609f535c7d8165e4e7dc1d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:31:04 +0000 Subject: [PATCH 37/57] Add quality tag to Actions maintainability query Co-authored-by: felickz <1760475+felickz@users.noreply.github.com> --- .../CodeQL/UnnecessaryUseOfAdvancedConfig.ql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql index dc65fab292b3..f6af52fd83fa 100644 --- a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql +++ b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql @@ -5,8 +5,9 @@ * @problem.severity recommendation * @precision high * @id actions/unnecessary-use-of-advanced-config - * @tags actions + * @tags quality * maintainability + * actions */ import codeql.actions.Violations_Of_Best_Practices.DefaultableCodeQLInitiatlizeActionQuery From 0fc25029bb6cf208300609af320b397d18c18918 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Nov 2025 16:46:56 +0000 Subject: [PATCH 38/57] Revert query file change and fix script to handle empty code-quality-extended suites Co-authored-by: felickz <1760475+felickz@users.noreply.github.com> --- .../CodeQL/UnnecessaryUseOfAdvancedConfig.ql | 3 +-- misc/scripts/generate-code-scanning-query-list.py | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql index f6af52fd83fa..dc65fab292b3 100644 --- a/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql +++ b/actions/ql/src/Violations Of Best Practice/CodeQL/UnnecessaryUseOfAdvancedConfig.ql @@ -5,9 +5,8 @@ * @problem.severity recommendation * @precision high * @id actions/unnecessary-use-of-advanced-config - * @tags quality + * @tags actions * maintainability - * actions */ import codeql.actions.Violations_Of_Best_Practices.DefaultableCodeQLInitiatlizeActionQuery diff --git a/misc/scripts/generate-code-scanning-query-list.py b/misc/scripts/generate-code-scanning-query-list.py index e592875e4bd3..24ed1d5de004 100755 --- a/misc/scripts/generate-code-scanning-query-list.py +++ b/misc/scripts/generate-code-scanning-query-list.py @@ -184,8 +184,8 @@ def subprocess_run(cmd): sys.exit("You can use '--ignore-missing-query-packs' to ignore this error") # Exception for the code-quality suites, which might be empty, but must be resolvable. - if pack == 'code-quality' and queries_subp == '': - print(f'Warning: skipping empty suite code-quality', file=sys.stderr) + if pack in ['code-quality', 'code-quality-extended'] and queries_subp == '': + print(f'Warning: skipping empty suite {pack}', file=sys.stderr) continue # Investigate metadata for every query by using 'codeql resolve metadata' From 56e98c45ec57eaa17e0282a507de6b700cd76f3b Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:08:22 +0000 Subject: [PATCH 39/57] Rust: Accept trivial changes to test .expected files. --- .../ql/test/query-tests/security/CWE-089/SqlInjection.expected | 3 +-- .../security/CWE-770/UncontrolledAllocationSize.expected | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ecd8cfa79376..3195a0b606e3 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -174,7 +174,6 @@ edges | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | @@ -195,9 +194,9 @@ edges | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:53:26:53:36 | &arg_string [&ref] | sqlx.rs:53:9:53:22 | unsafe_query_1 [&ref] | provenance | | | sqlx.rs:53:27:53:36 | arg_string | sqlx.rs:53:26:53:36 | &arg_string [&ref] | provenance | | -| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:29 | | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | +| sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() [&ref] | provenance | MaD:33 | | sqlx.rs:54:26:54:39 | &remote_string [&ref] | sqlx.rs:54:9:54:22 | unsafe_query_2 [&ref] | provenance | | | sqlx.rs:54:27:54:39 | remote_string | sqlx.rs:54:26:54:39 | &remote_string [&ref] | provenance | | | sqlx.rs:55:9:55:22 | unsafe_query_3 | sqlx.rs:81:29:81:42 | unsafe_query_3 | provenance | | diff --git a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected index 64875e0a8ac9..8fcbd27ac02e 100644 --- a/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected +++ b/rust/ql/test/query-tests/security/CWE-770/UncontrolledAllocationSize.expected @@ -252,7 +252,6 @@ edges | main.rs:230:46:230:46 | v | main.rs:231:42:231:42 | v | provenance | | | main.rs:231:42:231:42 | v | main.rs:231:13:231:40 | ...::with_capacity_in | provenance | MaD:4 Sink:MaD:4 | | main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | -| main.rs:279:24:279:41 | ...: String | main.rs:280:21:280:47 | user_input.parse() [Ok] | provenance | MaD:41 | | main.rs:280:9:280:17 | num_bytes | main.rs:282:54:282:62 | num_bytes | provenance | | | main.rs:280:21:280:47 | user_input.parse() [Ok] | main.rs:280:21:280:48 | TryExpr | provenance | | | main.rs:280:21:280:48 | TryExpr | main.rs:280:9:280:17 | num_bytes | provenance | | @@ -277,7 +276,6 @@ edges | main.rs:317:13:317:28 | ...::args(...) [element] | main.rs:317:13:317:35 | ... .nth(...) [Some] | provenance | MaD:23 | | main.rs:317:13:317:35 | ... .nth(...) [Some] | main.rs:317:13:317:65 | ... .unwrap_or(...) | provenance | MaD:38 | | main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | -| main.rs:317:13:317:65 | ... .unwrap_or(...) | main.rs:317:13:317:82 | ... .parse() [Ok] | provenance | MaD:41 | | main.rs:317:13:317:82 | ... .parse() [Ok] | main.rs:317:13:317:91 | ... .unwrap() | provenance | MaD:40 | | main.rs:317:13:317:91 | ... .unwrap() | main.rs:317:9:317:9 | v | provenance | | | main.rs:320:34:320:34 | v | main.rs:12:36:12:43 | ...: usize | provenance | | From c4d23d16edfde2566c4986e4dd7b7a177940886d Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 09:37:33 +0100 Subject: [PATCH 40/57] Actions: dont fail if no JS/TS code was found --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 6 ++++-- .../src/com/semmle/js/extractor/EnvironmentVariables.java | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 8d00712b653b..23f15bcf35f2 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -489,13 +489,15 @@ public int run() throws IOException { diagnosticsToClose.forEach(DiagnosticWriter::close); } - if (!hasSeenCode()) { + // Fail extraction is no relevant files were found. + if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); } else { warn("No JavaScript or TypeScript code found."); } - // ensuring that the finalize steps detects that no code was seen. + // Ensuring that the finalize steps detects that no code was seen. + // This is necessary to ensure we don't produce an overlay-base database without externs. Path srcFolder = Paths.get(EnvironmentVariables.getWipDatabase(), "src"); try { FileUtil8.recursiveDelete(srcFolder); diff --git a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java index 39dfa70b285b..f2ac4227589f 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java +++ b/javascript/extractor/src/com/semmle/js/extractor/EnvironmentVariables.java @@ -18,6 +18,9 @@ public class EnvironmentVariables { public static final String CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR = "CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE"; + public static final String CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR = + "CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE"; + public static final String CODEQL_DIST_ENV_VAR = "CODEQL_DIST"; /** @@ -94,4 +97,8 @@ public static String getCodeQLDist() { public static String getWipDatabase() { return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_JAVASCRIPT_WIP_DATABASE_ENV_VAR); } + + public static boolean isActionsExtractor() { + return Env.systemEnv().getNonEmpty(CODEQL_EXTRACTOR_ACTIONS_WIP_DATABASE_ENV_VAR) != null; + } } From 105213df032e4427f6097a981ceb2c47dd3e4e3e Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 09:51:56 +0100 Subject: [PATCH 41/57] Update javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 23f15bcf35f2..5deb786bc923 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -489,7 +489,7 @@ public int run() throws IOException { diagnosticsToClose.forEach(DiagnosticWriter::close); } - // Fail extraction is no relevant files were found. + // Fail extraction if no relevant files were found. if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); From 81bb07a7ba0ee715df7c2dfd3e6344065489402d Mon Sep 17 00:00:00 2001 From: Asger F Date: Tue, 4 Nov 2025 11:45:20 +0100 Subject: [PATCH 42/57] JS: Fix check to account for override in tests The code was written on the assumption that 'seenCode' implies 'seenFiles' but the unit test override 'hasSeenCode()' to always return true. Which meant we would start taking this branch in the unit tests. --- .../extractor/src/com/semmle/js/extractor/AutoBuild.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java index 5deb786bc923..416fa237e97e 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java +++ b/javascript/extractor/src/com/semmle/js/extractor/AutoBuild.java @@ -490,7 +490,10 @@ public int run() throws IOException { } // Fail extraction if no relevant files were found. - if (!seenFiles || !hasSeenCode() && !EnvironmentVariables.isActionsExtractor()) { + boolean seenRelevantFiles = EnvironmentVariables.isActionsExtractor() + ? seenFiles // assume all files are relevant for Actions extractor + : hasSeenCode(); + if (!seenRelevantFiles) { if (seenFiles) { warn("Only found JavaScript or TypeScript files that were empty or contained syntax errors."); } else { From 7ab25b593d990b8fed63e29e1eca6473eb29dba4 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 4 Nov 2025 15:43:49 +0100 Subject: [PATCH 43/57] C#: Change note. --- .../ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md diff --git a/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md b/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md new file mode 100644 index 000000000000..a3c69932917d --- /dev/null +++ b/csharp/ql/lib/change-notes/2025-10-04-deprecate-controlsblock.md @@ -0,0 +1,4 @@ +--- +category: deprecated +--- +* `ControlFlowElement.controlsBlock` has been deprecated in favor of the Guards library. From 41bf91072d21b7d86a878f5a55293c8126838787 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Tue, 4 Nov 2025 15:56:39 +0100 Subject: [PATCH 44/57] Swift: Update supported versions in the documentation Also document that we need to update the supported versions, so we don't forget it next time around. --- docs/codeql/reusables/supported-versions-compilers.rst | 2 +- swift/third_party/resources/updating.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/codeql/reusables/supported-versions-compilers.rst b/docs/codeql/reusables/supported-versions-compilers.rst index fb204bc4685e..8dcfd1a5dc0f 100644 --- a/docs/codeql/reusables/supported-versions-compilers.rst +++ b/docs/codeql/reusables/supported-versions-compilers.rst @@ -26,7 +26,7 @@ Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13",Not applicable,``.py`` Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``" Rust [11]_,"Rust editions 2021 and 2024","Rust compiler","``.rs``, ``Cargo.toml``" - Swift [12]_ [13]_,"Swift 5.4-6.1","Swift compiler","``.swift``" + Swift [12]_ [13]_,"Swift 5.4-6.2","Swift compiler","``.swift``" TypeScript [14]_,"2.6-5.9",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``" .. container:: footnote-group diff --git a/swift/third_party/resources/updating.md b/swift/third_party/resources/updating.md index 766d3e9410ee..492f07f27423 100644 --- a/swift/third_party/resources/updating.md +++ b/swift/third_party/resources/updating.md @@ -23,4 +23,5 @@ In order to perform a Swift update: (or whatever you have overridden). This will pull the staged archives in the repository for git LFS. 8. Clear `_override` in [`load.bzl`](../load.bzl). 9. Add a change note to the [library change note directory](../../ql/lib/change-notes/) that mentions that we now support the Swift version we updated to. -10. Push and your PR will be ready for `main`. +10. If this not patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. +11. Push and your PR will be ready for `main`. From a29c9af4a765ad6ad59fc59f9fb90d9ca08fe19a Mon Sep 17 00:00:00 2001 From: Jeroen Ketema <93738568+jketema@users.noreply.github.com> Date: Tue, 4 Nov 2025 16:00:23 +0100 Subject: [PATCH 45/57] Update swift/third_party/resources/updating.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- swift/third_party/resources/updating.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swift/third_party/resources/updating.md b/swift/third_party/resources/updating.md index 492f07f27423..0d5874aa5661 100644 --- a/swift/third_party/resources/updating.md +++ b/swift/third_party/resources/updating.md @@ -23,5 +23,5 @@ In order to perform a Swift update: (or whatever you have overridden). This will pull the staged archives in the repository for git LFS. 8. Clear `_override` in [`load.bzl`](../load.bzl). 9. Add a change note to the [library change note directory](../../ql/lib/change-notes/) that mentions that we now support the Swift version we updated to. -10. If this not patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. +10. If this is not a patch update, then update the [supported versions](../../../docs/codeql/reusables/supported-versions-compilers.rst) with the Swift version we updated to. 11. Push and your PR will be ready for `main`. From 4014df9a6eab1337da1aa894ae0789a9a9a6f7a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 4 Nov 2025 17:57:52 +0000 Subject: [PATCH 46/57] Post-release preparation for codeql-cli-2.23.4 --- actions/ql/lib/qlpack.yml | 2 +- actions/ql/src/qlpack.yml | 2 +- cpp/ql/lib/qlpack.yml | 2 +- cpp/ql/src/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/lib/qlpack.yml | 2 +- csharp/ql/campaigns/Solorigate/src/qlpack.yml | 2 +- csharp/ql/lib/qlpack.yml | 2 +- csharp/ql/src/qlpack.yml | 2 +- go/ql/consistency-queries/qlpack.yml | 2 +- go/ql/lib/qlpack.yml | 2 +- go/ql/src/qlpack.yml | 2 +- java/ql/lib/qlpack.yml | 2 +- java/ql/src/qlpack.yml | 2 +- javascript/ql/lib/qlpack.yml | 2 +- javascript/ql/src/qlpack.yml | 2 +- misc/suite-helpers/qlpack.yml | 2 +- python/ql/lib/qlpack.yml | 2 +- python/ql/src/qlpack.yml | 2 +- ruby/ql/lib/qlpack.yml | 2 +- ruby/ql/src/qlpack.yml | 2 +- rust/ql/lib/qlpack.yml | 2 +- rust/ql/src/qlpack.yml | 2 +- shared/concepts/qlpack.yml | 2 +- shared/controlflow/qlpack.yml | 2 +- shared/dataflow/qlpack.yml | 2 +- shared/mad/qlpack.yml | 2 +- shared/quantum/qlpack.yml | 2 +- shared/rangeanalysis/qlpack.yml | 2 +- shared/regex/qlpack.yml | 2 +- shared/ssa/qlpack.yml | 2 +- shared/threat-models/qlpack.yml | 2 +- shared/tutorial/qlpack.yml | 2 +- shared/typeflow/qlpack.yml | 2 +- shared/typeinference/qlpack.yml | 2 +- shared/typetracking/qlpack.yml | 2 +- shared/typos/qlpack.yml | 2 +- shared/util/qlpack.yml | 2 +- shared/xml/qlpack.yml | 2 +- shared/yaml/qlpack.yml | 2 +- swift/ql/lib/qlpack.yml | 2 +- swift/ql/src/qlpack.yml | 2 +- 41 files changed, 41 insertions(+), 41 deletions(-) diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 3217afc182bc..295d925c3189 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.20 +version: 0.4.21-dev library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 7c14b3a91721..b612696b8162 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.12 +version: 0.6.13-dev library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index 9ce21e2a8da1..8b2113533238 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 6.0.1 +version: 6.0.2-dev groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index 178947f2549a..39cdb717ca7d 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.5.3 +version: 1.5.4-dev groups: - cpp - queries diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 649b7e60de7d..7877ad717e23 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index b3977a0ef72d..6427ecbb9358 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.51 +version: 1.7.52-dev groups: - csharp - solorigate diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 7d6d2e1ed4ee..a19e72b95ecd 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.3.0 +version: 5.3.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 4305c1d899ef..2597e99f55b6 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.4.3 +version: 1.4.4-dev groups: - csharp - queries diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index f8a661692dc2..be82fc786d23 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 1.0.34 +version: 1.0.35-dev groups: - go - queries diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index fba4fc5f83e0..f4f9d02faed3 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 5.0.1 +version: 5.0.2-dev groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4a68e3757034..4a0baaa78369 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.4.8 +version: 1.4.9-dev groups: - go - queries diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index b1c5cbb54ed6..bcfc194a4cbb 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 7.7.3 +version: 7.7.4-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 198798cf67db..98f0bdd57106 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.9.0 +version: 1.9.1-dev groups: - java - queries diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 46e5661f216e..bd19febdfaa6 100644 --- a/javascript/ql/lib/qlpack.yml +++ b/javascript/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-all -version: 2.6.14 +version: 2.6.15-dev groups: javascript dbscheme: semmlecode.javascript.dbscheme extractor: javascript diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 8a50977ba71e..93dd9cf7ae7c 100644 --- a/javascript/ql/src/qlpack.yml +++ b/javascript/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/javascript-queries -version: 2.1.3 +version: 2.1.4-dev groups: - javascript - queries diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index 5aad5f4b49d1..e3283b5dc3f9 100644 --- a/misc/suite-helpers/qlpack.yml +++ b/misc/suite-helpers/qlpack.yml @@ -1,4 +1,4 @@ name: codeql/suite-helpers -version: 1.0.34 +version: 1.0.35-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 88b85332fbac..bb28a8f63157 100644 --- a/python/ql/lib/qlpack.yml +++ b/python/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-all -version: 4.1.0 +version: 4.1.1-dev groups: python dbscheme: semmlecode.python.dbscheme extractor: python diff --git a/python/ql/src/qlpack.yml b/python/ql/src/qlpack.yml index dd29d5c31a2f..7280bbcb67c9 100644 --- a/python/ql/src/qlpack.yml +++ b/python/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/python-queries -version: 1.6.8 +version: 1.6.9-dev groups: - python - queries diff --git a/ruby/ql/lib/qlpack.yml b/ruby/ql/lib/qlpack.yml index eec414da0f09..3a400018dec5 100644 --- a/ruby/ql/lib/qlpack.yml +++ b/ruby/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-all -version: 5.1.2 +version: 5.1.3-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index aaac6c00522f..37c9e4be5221 100644 --- a/ruby/ql/src/qlpack.yml +++ b/ruby/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ruby-queries -version: 1.4.8 +version: 1.4.9-dev groups: - ruby - queries diff --git a/rust/ql/lib/qlpack.yml b/rust/ql/lib/qlpack.yml index b46b494c4212..3c045cd83e56 100644 --- a/rust/ql/lib/qlpack.yml +++ b/rust/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-all -version: 0.1.19 +version: 0.1.20-dev groups: rust extractor: rust dbscheme: rust.dbscheme diff --git a/rust/ql/src/qlpack.yml b/rust/ql/src/qlpack.yml index da14aa08a024..a26c9d35de5d 100644 --- a/rust/ql/src/qlpack.yml +++ b/rust/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rust-queries -version: 0.1.19 +version: 0.1.20-dev groups: - rust - queries diff --git a/shared/concepts/qlpack.yml b/shared/concepts/qlpack.yml index a9fd8ce78e75..f76c1f2ae45d 100644 --- a/shared/concepts/qlpack.yml +++ b/shared/concepts/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/concepts -version: 0.0.8 +version: 0.0.9-dev groups: shared library: true dependencies: diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index 565ff51c42bb..fdf7de8e6a70 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 75920f8f5a0a..7f969fdef424 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 290eedf639c3..13a5b8507b36 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/quantum/qlpack.yml b/shared/quantum/qlpack.yml index 8aaa96a86306..0cc0fbad9065 100644 --- a/shared/quantum/qlpack.yml +++ b/shared/quantum/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/quantum -version: 0.0.12 +version: 0.0.13-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 2769814d3e33..24b697d1f49a 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index f06235bc4d31..f66b9d743f6f 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index dcf19c605a17..0aada9508eea 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 2.0.10 +version: 2.0.11-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index 48d215a1d9a3..4bb9cb4cb5f9 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.34 +version: 1.0.35-dev library: true groups: shared dataExtensions: diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index 51e6e2a59848..fa53c0be99f3 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 6c01f40eff65..94cae6f26a66 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/typeinference/qlpack.yml b/shared/typeinference/qlpack.yml index b09de2187e9a..000088497029 100644 --- a/shared/typeinference/qlpack.yml +++ b/shared/typeinference/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeinference -version: 0.0.15 +version: 0.0.16-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index 14ca67d8ba8b..0c5881829119 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 2.0.18 +version: 2.0.19-dev groups: shared library: true dependencies: diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index 5675b883f19f..b876c84bbe37 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 155a5b33b782..4d4b671071ee 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 2.0.21 +version: 2.0.22-dev groups: shared library: true dependencies: null diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 2bdbef9aa767..40a7eadd8285 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true dependencies: diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 7dcc28b82698..a1af32ac0796 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.34 +version: 1.0.35-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 2f395ceb198d..ba8c8aac0443 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 6.0.0 +version: 6.0.1-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index bec494006097..d5a55b365f1e 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.2.8 +version: 1.2.9-dev groups: - swift - queries From 68cd9ab3ab82fcd880b18950d6ce90075fc25c13 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 09:33:06 +0100 Subject: [PATCH 47/57] Swift: Update to Swift 6.2.1 --- swift/third_party/load.bzl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index d19345a18803..29d552bd3e2d 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,6 +5,10 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main + "swift-prebuilt-macOS-swift-6.2.1-RELEASE-133.tar.zst": "c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7", + "swift-prebuilt-Linux-swift-6.2.1-RELEASE-133.tar.zst": "1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d", + "resource-dir-macOS-swift-6.2.1-RELEASE-133.zip": "e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8", + "resource-dir-Linux-swift-6.2.1-RELEASE-133.zip": "e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 51475df5a9cc941109b1002cd50233c128693f0e Mon Sep 17 00:00:00 2001 From: idrissrio Date: Wed, 5 Nov 2025 10:04:16 +0100 Subject: [PATCH 48/57] CODEOWNERS: Add code-scanning-language-coverage team to all extractors --- CODEOWNERS | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index ae1506f12a3c..0a7504ba5924 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -5,19 +5,25 @@ /actions/ @github/codeql-dynamic /cpp/ @github/codeql-c-analysis /csharp/ @github/codeql-csharp -/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor -/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor +/csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor @github/code-scanning-language-coverage +/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor @github/code-scanning-language-coverage /go/ @github/codeql-go +/go/extractor/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript +/javascript/extractor/ @github/codeql-javascript @github/code-scanning-language-coverage /python/ @github/codeql-python +/python/extractor/ @github/codeql-python @github/code-scanning-language-coverage /ql/ @github/codeql-ql-for-ql-reviewers /ruby/ @github/codeql-ruby +/ruby/extractor/ @github/codeql-ruby @github/code-scanning-language-coverage /rust/ @github/codeql-rust +/rust/extractor/ @github/codeql-rust @github/code-scanning-language-coverage /shared/ @github/codeql-shared-libraries-reviewers /swift/ @github/codeql-swift +/swift/extractor/ @github/codeql-swift @github/code-scanning-language-coverage /misc/codegen/ @github/codeql-swift -/java/kotlin-extractor/ @github/codeql-kotlin +/java/kotlin-extractor/ @github/codeql-kotlin @github/code-scanning-language-coverage /java/ql/test-kotlin1/ @github/codeql-kotlin /java/ql/test-kotlin2/ @github/codeql-kotlin From db7b187961ffd2f85fdbd4b495bd665d96894e82 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 5 Nov 2025 15:32:24 +0100 Subject: [PATCH 49/57] Rust: Add more variables tests --- .../test/library-tests/variables/Cfg.expected | 2050 +++++++++-------- .../test/library-tests/variables/Ssa.expected | 797 +++---- rust/ql/test/library-tests/variables/main.rs | 12 + .../variables/variables.expected | 740 +++--- 4 files changed, 1831 insertions(+), 1768 deletions(-) diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index 2e64a70cb5fa..7d8da915bfb5 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -881,1030 +881,1062 @@ edges | main.rs:367:20:367:20 | x | main.rs:365:5:369:9 | match x { ... } | | | main.rs:368:13:368:13 | _ | main.rs:368:18:368:18 | 0 | match | | main.rs:368:18:368:18 | 0 | main.rs:365:5:369:9 | match x { ... } | | -| main.rs:372:1:382:1 | enter fn param_pattern1 | main.rs:373:5:373:6 | a8 | | -| main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | main.rs:372:1:382:1 | exit fn param_pattern1 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:12 | ...: ... | match | -| main.rs:373:5:373:12 | ...: ... | main.rs:374:5:377:5 | TuplePat | | -| main.rs:374:5:377:5 | TuplePat | main.rs:375:9:375:10 | b3 | match | -| main.rs:374:5:377:19 | ...: ... | main.rs:379:5:379:18 | ExprStmt | | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | | -| main.rs:375:9:375:10 | b3 | main.rs:376:9:376:10 | c1 | match | -| main.rs:376:9:376:10 | c1 | main.rs:374:5:377:19 | ...: ... | match | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | | -| main.rs:378:9:382:1 | { ... } | main.rs:372:1:382:1 | exit fn param_pattern1 (normal) | | -| main.rs:379:5:379:13 | print_str | main.rs:379:15:379:16 | a8 | | -| main.rs:379:5:379:17 | print_str(...) | main.rs:380:5:380:18 | ExprStmt | | -| main.rs:379:5:379:18 | ExprStmt | main.rs:379:5:379:13 | print_str | | -| main.rs:379:15:379:16 | a8 | main.rs:379:5:379:17 | print_str(...) | | -| main.rs:380:5:380:13 | print_str | main.rs:380:15:380:16 | b3 | | -| main.rs:380:5:380:17 | print_str(...) | main.rs:381:5:381:18 | ExprStmt | | -| main.rs:380:5:380:18 | ExprStmt | main.rs:380:5:380:13 | print_str | | -| main.rs:380:15:380:16 | b3 | main.rs:380:5:380:17 | print_str(...) | | -| main.rs:381:5:381:13 | print_str | main.rs:381:15:381:16 | c1 | | -| main.rs:381:5:381:17 | print_str(...) | main.rs:378:9:382:1 | { ... } | | -| main.rs:381:5:381:18 | ExprStmt | main.rs:381:5:381:13 | print_str | | -| main.rs:381:15:381:16 | c1 | main.rs:381:5:381:17 | print_str(...) | | -| main.rs:384:1:387:1 | enter fn param_pattern2 | main.rs:384:20:384:35 | ...::Left(...) | | -| main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | main.rs:384:1:387:1 | exit fn param_pattern2 | | -| main.rs:384:19:384:64 | ...: Either | main.rs:386:5:386:18 | ExprStmt | | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:33:384:34 | a9 | match | -| main.rs:384:20:384:35 | ...::Left(...) | main.rs:384:39:384:55 | ...::Right(...) | no-match | -| main.rs:384:20:384:55 | ... \| ... | main.rs:384:19:384:64 | ...: Either | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:33:384:34 | a9 | main.rs:384:33:384:34 | a9 | | -| main.rs:384:39:384:55 | ...::Right(...) | main.rs:384:53:384:54 | a9 | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | ... \| ... | match | -| main.rs:384:53:384:54 | a9 | main.rs:384:53:384:54 | a9 | | -| main.rs:385:9:387:1 | { ... } | main.rs:384:1:387:1 | exit fn param_pattern2 (normal) | | -| main.rs:386:5:386:13 | print_i64 | main.rs:386:15:386:16 | a9 | | -| main.rs:386:5:386:17 | print_i64(...) | main.rs:385:9:387:1 | { ... } | | -| main.rs:386:5:386:18 | ExprStmt | main.rs:386:5:386:13 | print_i64 | | -| main.rs:386:15:386:16 | a9 | main.rs:386:5:386:17 | print_i64(...) | | -| main.rs:389:1:424:1 | enter fn destruct_assignment | main.rs:390:5:394:18 | let ... = ... | | -| main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | main.rs:389:1:424:1 | exit fn destruct_assignment | | -| main.rs:389:26:424:1 | { ... } | main.rs:389:1:424:1 | exit fn destruct_assignment (normal) | | -| main.rs:390:5:394:18 | let ... = ... | main.rs:394:10:394:10 | 1 | | -| main.rs:390:9:394:5 | TuplePat | main.rs:391:13:391:15 | a10 | match | -| main.rs:391:9:391:15 | mut a10 | main.rs:392:13:392:14 | b4 | match | -| main.rs:391:13:391:15 | a10 | main.rs:391:9:391:15 | mut a10 | | -| main.rs:392:9:392:14 | mut b4 | main.rs:393:13:393:14 | c2 | match | -| main.rs:392:13:392:14 | b4 | main.rs:392:9:392:14 | mut b4 | | -| main.rs:393:9:393:14 | mut c2 | main.rs:395:5:395:19 | ExprStmt | match | -| main.rs:393:13:393:14 | c2 | main.rs:393:9:393:14 | mut c2 | | -| main.rs:394:9:394:17 | TupleExpr | main.rs:390:9:394:5 | TuplePat | | -| main.rs:394:10:394:10 | 1 | main.rs:394:13:394:13 | 2 | | -| main.rs:394:13:394:13 | 2 | main.rs:394:16:394:16 | 3 | | -| main.rs:394:16:394:16 | 3 | main.rs:394:9:394:17 | TupleExpr | | -| main.rs:395:5:395:13 | print_i64 | main.rs:395:15:395:17 | a10 | | -| main.rs:395:5:395:18 | print_i64(...) | main.rs:396:5:396:18 | ExprStmt | | -| main.rs:395:5:395:19 | ExprStmt | main.rs:395:5:395:13 | print_i64 | | -| main.rs:395:15:395:17 | a10 | main.rs:395:5:395:18 | print_i64(...) | | -| main.rs:396:5:396:13 | print_i64 | main.rs:396:15:396:16 | b4 | | -| main.rs:396:5:396:17 | print_i64(...) | main.rs:397:5:397:18 | ExprStmt | | -| main.rs:396:5:396:18 | ExprStmt | main.rs:396:5:396:13 | print_i64 | | -| main.rs:396:15:396:16 | b4 | main.rs:396:5:396:17 | print_i64(...) | | -| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | c2 | | -| main.rs:397:5:397:17 | print_i64(...) | main.rs:399:5:407:6 | ExprStmt | | +| main.rs:372:1:381:1 | enter fn match_pattern16 | main.rs:373:5:373:21 | let ... = ... | | +| main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | main.rs:372:1:381:1 | exit fn match_pattern16 | | +| main.rs:372:22:381:1 | { ... } | main.rs:372:1:381:1 | exit fn match_pattern16 (normal) | | +| main.rs:373:5:373:21 | let ... = ... | main.rs:373:13:373:16 | Some | | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | +| main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | match | +| main.rs:373:13:373:16 | Some | main.rs:373:18:373:19 | 32 | | +| main.rs:373:13:373:20 | Some(...) | main.rs:373:9:373:9 | x | | +| main.rs:373:18:373:19 | 32 | main.rs:373:13:373:20 | Some(...) | | +| main.rs:374:5:380:5 | match x { ... } | main.rs:372:22:381:1 | { ... } | | +| main.rs:374:11:374:11 | x | main.rs:375:9:375:15 | Some(...) | | +| main.rs:375:9:375:15 | Some(...) | main.rs:375:14:375:14 | y | match | +| main.rs:375:9:375:15 | Some(...) | main.rs:379:9:379:9 | _ | no-match | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | | +| main.rs:375:14:375:14 | y | main.rs:377:17:377:20 | Some | match | +| main.rs:376:16:377:23 | [boolean(false)] let ... = ... | main.rs:379:9:379:9 | _ | false | +| main.rs:376:16:377:23 | [boolean(true)] let ... = ... | main.rs:378:16:378:24 | print_i64 | true | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:16:377:23 | [boolean(false)] let ... = ... | no-match | +| main.rs:376:20:376:26 | Some(...) | main.rs:376:25:376:25 | y | match | +| main.rs:376:25:376:25 | y | main.rs:376:16:377:23 | [boolean(true)] let ... = ... | match | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | +| main.rs:377:17:377:20 | Some | main.rs:377:22:377:22 | y | | +| main.rs:377:17:377:23 | Some(...) | main.rs:376:20:376:26 | Some(...) | | +| main.rs:377:22:377:22 | y | main.rs:377:17:377:23 | Some(...) | | +| main.rs:378:16:378:24 | print_i64 | main.rs:378:26:378:26 | y | | +| main.rs:378:16:378:27 | print_i64(...) | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:378:26:378:26 | y | main.rs:378:16:378:27 | print_i64(...) | | +| main.rs:379:9:379:9 | _ | main.rs:379:14:379:15 | { ... } | match | +| main.rs:379:14:379:15 | { ... } | main.rs:374:5:380:5 | match x { ... } | | +| main.rs:383:1:393:1 | enter fn param_pattern1 | main.rs:384:5:384:6 | a8 | | +| main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | main.rs:383:1:393:1 | exit fn param_pattern1 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:12 | ...: ... | match | +| main.rs:384:5:384:12 | ...: ... | main.rs:385:5:388:5 | TuplePat | | +| main.rs:385:5:388:5 | TuplePat | main.rs:386:9:386:10 | b3 | match | +| main.rs:385:5:388:19 | ...: ... | main.rs:390:5:390:18 | ExprStmt | | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | +| main.rs:386:9:386:10 | b3 | main.rs:387:9:387:10 | c1 | match | +| main.rs:387:9:387:10 | c1 | main.rs:385:5:388:19 | ...: ... | match | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | | +| main.rs:389:9:393:1 | { ... } | main.rs:383:1:393:1 | exit fn param_pattern1 (normal) | | +| main.rs:390:5:390:13 | print_str | main.rs:390:15:390:16 | a8 | | +| main.rs:390:5:390:17 | print_str(...) | main.rs:391:5:391:18 | ExprStmt | | +| main.rs:390:5:390:18 | ExprStmt | main.rs:390:5:390:13 | print_str | | +| main.rs:390:15:390:16 | a8 | main.rs:390:5:390:17 | print_str(...) | | +| main.rs:391:5:391:13 | print_str | main.rs:391:15:391:16 | b3 | | +| main.rs:391:5:391:17 | print_str(...) | main.rs:392:5:392:18 | ExprStmt | | +| main.rs:391:5:391:18 | ExprStmt | main.rs:391:5:391:13 | print_str | | +| main.rs:391:15:391:16 | b3 | main.rs:391:5:391:17 | print_str(...) | | +| main.rs:392:5:392:13 | print_str | main.rs:392:15:392:16 | c1 | | +| main.rs:392:5:392:17 | print_str(...) | main.rs:389:9:393:1 | { ... } | | +| main.rs:392:5:392:18 | ExprStmt | main.rs:392:5:392:13 | print_str | | +| main.rs:392:15:392:16 | c1 | main.rs:392:5:392:17 | print_str(...) | | +| main.rs:395:1:398:1 | enter fn param_pattern2 | main.rs:395:20:395:35 | ...::Left(...) | | +| main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | main.rs:395:1:398:1 | exit fn param_pattern2 | | +| main.rs:395:19:395:64 | ...: Either | main.rs:397:5:397:18 | ExprStmt | | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:33:395:34 | a9 | match | +| main.rs:395:20:395:35 | ...::Left(...) | main.rs:395:39:395:55 | ...::Right(...) | no-match | +| main.rs:395:20:395:55 | ... \| ... | main.rs:395:19:395:64 | ...: Either | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:33:395:34 | a9 | main.rs:395:33:395:34 | a9 | | +| main.rs:395:39:395:55 | ...::Right(...) | main.rs:395:53:395:54 | a9 | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | ... \| ... | match | +| main.rs:395:53:395:54 | a9 | main.rs:395:53:395:54 | a9 | | +| main.rs:396:9:398:1 | { ... } | main.rs:395:1:398:1 | exit fn param_pattern2 (normal) | | +| main.rs:397:5:397:13 | print_i64 | main.rs:397:15:397:16 | a9 | | +| main.rs:397:5:397:17 | print_i64(...) | main.rs:396:9:398:1 | { ... } | | | main.rs:397:5:397:18 | ExprStmt | main.rs:397:5:397:13 | print_i64 | | -| main.rs:397:15:397:16 | c2 | main.rs:397:5:397:17 | print_i64(...) | | -| main.rs:399:5:403:5 | TupleExpr | main.rs:404:9:404:11 | a10 | | -| main.rs:399:5:407:5 | ... = ... | main.rs:408:5:408:19 | ExprStmt | | -| main.rs:399:5:407:6 | ExprStmt | main.rs:400:9:400:10 | c2 | | -| main.rs:400:9:400:10 | c2 | main.rs:401:9:401:10 | b4 | | -| main.rs:401:9:401:10 | b4 | main.rs:402:9:402:11 | a10 | | -| main.rs:402:9:402:11 | a10 | main.rs:399:5:403:5 | TupleExpr | | -| main.rs:403:9:407:5 | TupleExpr | main.rs:399:5:407:5 | ... = ... | | -| main.rs:404:9:404:11 | a10 | main.rs:405:9:405:10 | b4 | | -| main.rs:405:9:405:10 | b4 | main.rs:406:9:406:10 | c2 | | -| main.rs:406:9:406:10 | c2 | main.rs:403:9:407:5 | TupleExpr | | -| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:17 | a10 | | -| main.rs:408:5:408:18 | print_i64(...) | main.rs:409:5:409:18 | ExprStmt | | -| main.rs:408:5:408:19 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | -| main.rs:408:15:408:17 | a10 | main.rs:408:5:408:18 | print_i64(...) | | -| main.rs:409:5:409:13 | print_i64 | main.rs:409:15:409:16 | b4 | | -| main.rs:409:5:409:17 | print_i64(...) | main.rs:410:5:410:18 | ExprStmt | | -| main.rs:409:5:409:18 | ExprStmt | main.rs:409:5:409:13 | print_i64 | | -| main.rs:409:15:409:16 | b4 | main.rs:409:5:409:17 | print_i64(...) | | -| main.rs:410:5:410:13 | print_i64 | main.rs:410:15:410:16 | c2 | | -| main.rs:410:5:410:17 | print_i64(...) | main.rs:412:5:420:5 | ExprStmt | | -| main.rs:410:5:410:18 | ExprStmt | main.rs:410:5:410:13 | print_i64 | | -| main.rs:410:15:410:16 | c2 | main.rs:410:5:410:17 | print_i64(...) | | -| main.rs:412:5:420:5 | ExprStmt | main.rs:412:12:412:12 | 4 | | -| main.rs:412:5:420:5 | match ... { ... } | main.rs:422:5:422:19 | ExprStmt | | -| main.rs:412:11:412:16 | TupleExpr | main.rs:413:9:416:9 | TuplePat | | -| main.rs:412:12:412:12 | 4 | main.rs:412:15:412:15 | 5 | | -| main.rs:412:15:412:15 | 5 | main.rs:412:11:412:16 | TupleExpr | | -| main.rs:413:9:416:9 | TuplePat | main.rs:414:13:414:15 | a10 | match | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | | -| main.rs:414:13:414:15 | a10 | main.rs:415:13:415:14 | b4 | match | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | | -| main.rs:415:13:415:14 | b4 | main.rs:417:13:417:27 | ExprStmt | match | -| main.rs:416:14:419:9 | { ... } | main.rs:412:5:420:5 | match ... { ... } | | -| main.rs:417:13:417:21 | print_i64 | main.rs:417:23:417:25 | a10 | | -| main.rs:417:13:417:26 | print_i64(...) | main.rs:418:13:418:26 | ExprStmt | | -| main.rs:417:13:417:27 | ExprStmt | main.rs:417:13:417:21 | print_i64 | | -| main.rs:417:23:417:25 | a10 | main.rs:417:13:417:26 | print_i64(...) | | -| main.rs:418:13:418:21 | print_i64 | main.rs:418:23:418:24 | b4 | | -| main.rs:418:13:418:25 | print_i64(...) | main.rs:416:14:419:9 | { ... } | | -| main.rs:418:13:418:26 | ExprStmt | main.rs:418:13:418:21 | print_i64 | | -| main.rs:418:23:418:24 | b4 | main.rs:418:13:418:25 | print_i64(...) | | -| main.rs:422:5:422:13 | print_i64 | main.rs:422:15:422:17 | a10 | | -| main.rs:422:5:422:18 | print_i64(...) | main.rs:423:5:423:18 | ExprStmt | | -| main.rs:422:5:422:19 | ExprStmt | main.rs:422:5:422:13 | print_i64 | | -| main.rs:422:15:422:17 | a10 | main.rs:422:5:422:18 | print_i64(...) | | -| main.rs:423:5:423:13 | print_i64 | main.rs:423:15:423:16 | b4 | | -| main.rs:423:5:423:17 | print_i64(...) | main.rs:389:26:424:1 | { ... } | | -| main.rs:423:5:423:18 | ExprStmt | main.rs:423:5:423:13 | print_i64 | | -| main.rs:423:15:423:16 | b4 | main.rs:423:5:423:17 | print_i64(...) | | -| main.rs:426:1:441:1 | enter fn closure_variable | main.rs:427:5:429:10 | let ... = ... | | -| main.rs:426:1:441:1 | exit fn closure_variable (normal) | main.rs:426:1:441:1 | exit fn closure_variable | | -| main.rs:426:23:441:1 | { ... } | main.rs:426:1:441:1 | exit fn closure_variable (normal) | | -| main.rs:427:5:429:10 | let ... = ... | main.rs:428:9:429:9 | \|...\| x | | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | | -| main.rs:427:9:427:23 | example_closure | main.rs:430:5:431:27 | let ... = ... | match | -| main.rs:428:9:429:9 | \|...\| x | main.rs:427:9:427:23 | example_closure | | -| main.rs:428:9:429:9 | enter \|...\| x | main.rs:428:10:428:10 | x | | -| main.rs:428:9:429:9 | exit \|...\| x (normal) | main.rs:428:9:429:9 | exit \|...\| x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:15 | ...: i64 | match | -| main.rs:428:10:428:15 | ...: i64 | main.rs:429:9:429:9 | x | | -| main.rs:429:9:429:9 | x | main.rs:428:9:429:9 | exit \|...\| x (normal) | | -| main.rs:430:5:431:27 | let ... = ... | main.rs:431:9:431:23 | example_closure | | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | | -| main.rs:430:9:430:10 | n1 | main.rs:432:5:432:18 | ExprStmt | match | -| main.rs:431:9:431:23 | example_closure | main.rs:431:25:431:25 | 5 | | -| main.rs:431:9:431:26 | example_closure(...) | main.rs:430:9:430:10 | n1 | | -| main.rs:431:25:431:25 | 5 | main.rs:431:9:431:26 | example_closure(...) | | -| main.rs:432:5:432:13 | print_i64 | main.rs:432:15:432:16 | n1 | | -| main.rs:432:5:432:17 | print_i64(...) | main.rs:434:5:434:25 | ExprStmt | | -| main.rs:432:5:432:18 | ExprStmt | main.rs:432:5:432:13 | print_i64 | | -| main.rs:432:15:432:16 | n1 | main.rs:432:5:432:17 | print_i64(...) | | -| main.rs:434:5:434:22 | immutable_variable | main.rs:434:5:434:24 | immutable_variable(...) | | -| main.rs:434:5:434:24 | immutable_variable(...) | main.rs:435:5:437:10 | let ... = ... | | -| main.rs:434:5:434:25 | ExprStmt | main.rs:434:5:434:22 | immutable_variable | | -| main.rs:435:5:437:10 | let ... = ... | main.rs:436:5:437:9 | \|...\| x | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:435:9:435:26 | immutable_variable | main.rs:438:5:439:30 | let ... = ... | match | -| main.rs:436:5:437:9 | \|...\| x | main.rs:435:9:435:26 | immutable_variable | | -| main.rs:436:5:437:9 | enter \|...\| x | main.rs:436:6:436:6 | x | | -| main.rs:436:5:437:9 | exit \|...\| x (normal) | main.rs:436:5:437:9 | exit \|...\| x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:11 | ...: i64 | match | -| main.rs:436:6:436:11 | ...: i64 | main.rs:437:9:437:9 | x | | -| main.rs:437:9:437:9 | x | main.rs:436:5:437:9 | exit \|...\| x (normal) | | -| main.rs:438:5:439:30 | let ... = ... | main.rs:439:9:439:26 | immutable_variable | | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | | -| main.rs:438:9:438:10 | n2 | main.rs:440:5:440:18 | ExprStmt | match | -| main.rs:439:9:439:26 | immutable_variable | main.rs:439:28:439:28 | 6 | | -| main.rs:439:9:439:29 | immutable_variable(...) | main.rs:438:9:438:10 | n2 | | -| main.rs:439:28:439:28 | 6 | main.rs:439:9:439:29 | immutable_variable(...) | | -| main.rs:440:5:440:13 | print_i64 | main.rs:440:15:440:16 | n2 | | -| main.rs:440:5:440:17 | print_i64(...) | main.rs:426:23:441:1 | { ... } | | -| main.rs:440:5:440:18 | ExprStmt | main.rs:440:5:440:13 | print_i64 | | -| main.rs:440:15:440:16 | n2 | main.rs:440:5:440:17 | print_i64(...) | | -| main.rs:443:1:473:1 | enter fn nested_function | main.rs:445:5:447:10 | let ... = ... | | -| main.rs:443:1:473:1 | exit fn nested_function (normal) | main.rs:443:1:473:1 | exit fn nested_function | | -| main.rs:443:22:473:1 | { ... } | main.rs:443:1:473:1 | exit fn nested_function (normal) | | -| main.rs:445:5:447:10 | let ... = ... | main.rs:446:9:447:9 | \|...\| x | | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | | -| main.rs:445:9:445:9 | f | main.rs:448:5:448:20 | ExprStmt | match | -| main.rs:446:9:447:9 | \|...\| x | main.rs:445:9:445:9 | f | | -| main.rs:446:9:447:9 | enter \|...\| x | main.rs:446:10:446:10 | x | | -| main.rs:446:9:447:9 | exit \|...\| x (normal) | main.rs:446:9:447:9 | exit \|...\| x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:15 | ...: i64 | match | -| main.rs:446:10:446:15 | ...: i64 | main.rs:447:9:447:9 | x | | -| main.rs:447:9:447:9 | x | main.rs:446:9:447:9 | exit \|...\| x (normal) | | -| main.rs:448:5:448:13 | print_i64 | main.rs:448:15:448:15 | f | | -| main.rs:448:5:448:19 | print_i64(...) | main.rs:450:5:453:5 | fn f | | -| main.rs:448:5:448:20 | ExprStmt | main.rs:448:5:448:13 | print_i64 | | -| main.rs:448:15:448:15 | f | main.rs:448:17:448:17 | 1 | | -| main.rs:448:15:448:18 | f(...) | main.rs:448:5:448:19 | print_i64(...) | | -| main.rs:448:17:448:17 | 1 | main.rs:448:15:448:18 | f(...) | | -| main.rs:450:5:453:5 | enter fn f | main.rs:450:10:450:10 | x | | -| main.rs:450:5:453:5 | exit fn f (normal) | main.rs:450:5:453:5 | exit fn f | | -| main.rs:450:5:453:5 | fn f | main.rs:455:5:455:20 | ExprStmt | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:15 | ...: i64 | match | -| main.rs:450:10:450:15 | ...: i64 | main.rs:452:9:452:9 | x | | -| main.rs:451:5:453:5 | { ... } | main.rs:450:5:453:5 | exit fn f (normal) | | -| main.rs:452:9:452:9 | x | main.rs:452:13:452:13 | 1 | | -| main.rs:452:9:452:13 | ... + ... | main.rs:451:5:453:5 | { ... } | | -| main.rs:452:13:452:13 | 1 | main.rs:452:9:452:13 | ... + ... | | -| main.rs:455:5:455:13 | print_i64 | main.rs:455:15:455:15 | f | | -| main.rs:455:5:455:19 | print_i64(...) | main.rs:458:9:458:24 | ExprStmt | | -| main.rs:455:5:455:20 | ExprStmt | main.rs:455:5:455:13 | print_i64 | | -| main.rs:455:15:455:15 | f | main.rs:455:17:455:17 | 2 | | -| main.rs:455:15:455:18 | f(...) | main.rs:455:5:455:19 | print_i64(...) | | -| main.rs:455:17:455:17 | 2 | main.rs:455:15:455:18 | f(...) | | -| main.rs:457:5:472:5 | { ... } | main.rs:443:22:473:1 | { ... } | | -| main.rs:458:9:458:17 | print_i64 | main.rs:458:19:458:19 | f | | -| main.rs:458:9:458:23 | print_i64(...) | main.rs:459:9:462:9 | fn f | | -| main.rs:458:9:458:24 | ExprStmt | main.rs:458:9:458:17 | print_i64 | | -| main.rs:458:19:458:19 | f | main.rs:458:21:458:21 | 3 | | -| main.rs:458:19:458:22 | f(...) | main.rs:458:9:458:23 | print_i64(...) | | -| main.rs:458:21:458:21 | 3 | main.rs:458:19:458:22 | f(...) | | -| main.rs:459:9:462:9 | enter fn f | main.rs:459:14:459:14 | x | | -| main.rs:459:9:462:9 | exit fn f (normal) | main.rs:459:9:462:9 | exit fn f | | -| main.rs:459:9:462:9 | fn f | main.rs:464:9:466:9 | ExprStmt | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:19 | ...: i64 | match | -| main.rs:459:14:459:19 | ...: i64 | main.rs:461:13:461:13 | 2 | | -| main.rs:460:9:462:9 | { ... } | main.rs:459:9:462:9 | exit fn f (normal) | | -| main.rs:461:13:461:13 | 2 | main.rs:461:17:461:17 | x | | -| main.rs:461:13:461:17 | ... * ... | main.rs:460:9:462:9 | { ... } | | -| main.rs:461:17:461:17 | x | main.rs:461:13:461:17 | ... * ... | | -| main.rs:464:9:466:9 | ExprStmt | main.rs:465:13:465:28 | ExprStmt | | -| main.rs:464:9:466:9 | { ... } | main.rs:468:9:470:14 | let ... = ... | | -| main.rs:465:13:465:21 | print_i64 | main.rs:465:23:465:23 | f | | -| main.rs:465:13:465:27 | print_i64(...) | main.rs:464:9:466:9 | { ... } | | -| main.rs:465:13:465:28 | ExprStmt | main.rs:465:13:465:21 | print_i64 | | -| main.rs:465:23:465:23 | f | main.rs:465:25:465:25 | 4 | | -| main.rs:465:23:465:26 | f(...) | main.rs:465:13:465:27 | print_i64(...) | | -| main.rs:465:25:465:25 | 4 | main.rs:465:23:465:26 | f(...) | | -| main.rs:468:9:470:14 | let ... = ... | main.rs:469:13:470:13 | \|...\| x | | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | | -| main.rs:468:13:468:13 | f | main.rs:471:9:471:24 | ExprStmt | match | -| main.rs:469:13:470:13 | \|...\| x | main.rs:468:13:468:13 | f | | -| main.rs:469:13:470:13 | enter \|...\| x | main.rs:469:14:469:14 | x | | -| main.rs:469:13:470:13 | exit \|...\| x (normal) | main.rs:469:13:470:13 | exit \|...\| x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:19 | ...: i64 | match | -| main.rs:469:14:469:19 | ...: i64 | main.rs:470:13:470:13 | x | | -| main.rs:470:13:470:13 | x | main.rs:469:13:470:13 | exit \|...\| x (normal) | | -| main.rs:471:9:471:17 | print_i64 | main.rs:471:19:471:19 | f | | -| main.rs:471:9:471:23 | print_i64(...) | main.rs:457:5:472:5 | { ... } | | -| main.rs:471:9:471:24 | ExprStmt | main.rs:471:9:471:17 | print_i64 | | -| main.rs:471:19:471:19 | f | main.rs:471:21:471:21 | 5 | | -| main.rs:471:19:471:22 | f(...) | main.rs:471:9:471:23 | print_i64(...) | | -| main.rs:471:21:471:21 | 5 | main.rs:471:19:471:22 | f(...) | | -| main.rs:475:1:482:1 | enter fn for_variable | main.rs:476:5:476:42 | let ... = ... | | -| main.rs:475:1:482:1 | exit fn for_variable (normal) | main.rs:475:1:482:1 | exit fn for_variable | | -| main.rs:475:19:482:1 | { ... } | main.rs:475:1:482:1 | exit fn for_variable (normal) | | -| main.rs:476:5:476:42 | let ... = ... | main.rs:476:15:476:22 | "apples" | | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | | -| main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | match | -| main.rs:476:13:476:41 | &... | main.rs:476:9:476:9 | v | | -| main.rs:476:14:476:41 | [...] | main.rs:476:13:476:41 | &... | | -| main.rs:476:15:476:22 | "apples" | main.rs:476:25:476:30 | "cake" | | -| main.rs:476:25:476:30 | "cake" | main.rs:476:33:476:40 | "coffee" | | -| main.rs:476:33:476:40 | "coffee" | main.rs:476:14:476:41 | [...] | | -| main.rs:478:5:481:5 | for ... in ... { ... } | main.rs:475:19:482:1 | { ... } | | -| main.rs:478:9:478:12 | text | main.rs:478:5:481:5 | for ... in ... { ... } | no-match | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | | -| main.rs:478:9:478:12 | text | main.rs:480:9:480:24 | ExprStmt | match | -| main.rs:479:12:479:12 | v | main.rs:478:9:478:12 | text | | -| main.rs:479:14:481:5 | { ... } | main.rs:478:9:478:12 | text | | -| main.rs:480:9:480:17 | print_str | main.rs:480:19:480:22 | text | | -| main.rs:480:9:480:23 | print_str(...) | main.rs:479:14:481:5 | { ... } | | -| main.rs:480:9:480:24 | ExprStmt | main.rs:480:9:480:17 | print_str | | -| main.rs:480:19:480:22 | text | main.rs:480:9:480:23 | print_str(...) | | -| main.rs:484:1:490:1 | enter fn add_assign | main.rs:485:5:485:18 | let ... = 0 | | -| main.rs:484:1:490:1 | exit fn add_assign (normal) | main.rs:484:1:490:1 | exit fn add_assign | | -| main.rs:484:17:490:1 | { ... } | main.rs:484:1:490:1 | exit fn add_assign (normal) | | -| main.rs:485:5:485:18 | let ... = 0 | main.rs:485:17:485:17 | 0 | | -| main.rs:485:9:485:13 | mut a | main.rs:486:5:486:11 | ExprStmt | match | -| main.rs:485:13:485:13 | a | main.rs:485:9:485:13 | mut a | | -| main.rs:485:17:485:17 | 0 | main.rs:485:13:485:13 | a | | -| main.rs:486:5:486:5 | a | main.rs:486:10:486:10 | 1 | | -| main.rs:486:5:486:10 | ... += ... | main.rs:487:5:487:17 | ExprStmt | | -| main.rs:486:5:486:11 | ExprStmt | main.rs:486:5:486:5 | a | | -| main.rs:486:10:486:10 | 1 | main.rs:486:5:486:10 | ... += ... | | -| main.rs:487:5:487:13 | print_i64 | main.rs:487:15:487:15 | a | | -| main.rs:487:5:487:16 | print_i64(...) | main.rs:488:5:488:28 | ExprStmt | | -| main.rs:487:5:487:17 | ExprStmt | main.rs:487:5:487:13 | print_i64 | | -| main.rs:487:15:487:15 | a | main.rs:487:5:487:16 | print_i64(...) | | -| main.rs:488:5:488:27 | ... .add_assign(...) | main.rs:489:5:489:17 | ExprStmt | | -| main.rs:488:5:488:28 | ExprStmt | main.rs:488:11:488:11 | a | | -| main.rs:488:6:488:11 | &mut a | main.rs:488:25:488:26 | 10 | | -| main.rs:488:11:488:11 | a | main.rs:488:6:488:11 | &mut a | | -| main.rs:488:25:488:26 | 10 | main.rs:488:5:488:27 | ... .add_assign(...) | | -| main.rs:489:5:489:13 | print_i64 | main.rs:489:15:489:15 | a | | -| main.rs:489:5:489:16 | print_i64(...) | main.rs:484:17:490:1 | { ... } | | -| main.rs:489:5:489:17 | ExprStmt | main.rs:489:5:489:13 | print_i64 | | -| main.rs:489:15:489:15 | a | main.rs:489:5:489:16 | print_i64(...) | | -| main.rs:492:1:498:1 | enter fn mutate | main.rs:493:5:493:18 | let ... = 1 | | -| main.rs:492:1:498:1 | exit fn mutate (normal) | main.rs:492:1:498:1 | exit fn mutate | | -| main.rs:492:13:498:1 | { ... } | main.rs:492:1:498:1 | exit fn mutate (normal) | | -| main.rs:493:5:493:18 | let ... = 1 | main.rs:493:17:493:17 | 1 | | -| main.rs:493:9:493:13 | mut i | main.rs:494:5:495:15 | let ... = ... | match | -| main.rs:493:13:493:13 | i | main.rs:493:9:493:13 | mut i | | -| main.rs:493:17:493:17 | 1 | main.rs:493:13:493:13 | i | | -| main.rs:494:5:495:15 | let ... = ... | main.rs:495:14:495:14 | i | | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | | -| main.rs:494:9:494:13 | ref_i | main.rs:496:5:496:15 | ExprStmt | match | -| main.rs:495:9:495:14 | &mut i | main.rs:494:9:494:13 | ref_i | | -| main.rs:495:14:495:14 | i | main.rs:495:9:495:14 | &mut i | | -| main.rs:496:5:496:10 | * ... | main.rs:496:14:496:14 | 2 | | -| main.rs:496:5:496:14 | ... = ... | main.rs:497:5:497:17 | ExprStmt | | -| main.rs:496:5:496:15 | ExprStmt | main.rs:496:6:496:10 | ref_i | | -| main.rs:496:6:496:10 | ref_i | main.rs:496:5:496:10 | * ... | | -| main.rs:496:14:496:14 | 2 | main.rs:496:5:496:14 | ... = ... | | -| main.rs:497:5:497:13 | print_i64 | main.rs:497:15:497:15 | i | | -| main.rs:497:5:497:16 | print_i64(...) | main.rs:492:13:498:1 | { ... } | | -| main.rs:497:5:497:17 | ExprStmt | main.rs:497:5:497:13 | print_i64 | | -| main.rs:497:15:497:15 | i | main.rs:497:5:497:16 | print_i64(...) | | -| main.rs:500:1:505:1 | enter fn mutate_param | main.rs:500:17:500:17 | x | | -| main.rs:500:1:505:1 | exit fn mutate_param (normal) | main.rs:500:1:505:1 | exit fn mutate_param | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:27 | ...: ... | match | -| main.rs:500:17:500:27 | ...: ... | main.rs:501:5:503:11 | ExprStmt | | -| main.rs:501:5:501:6 | * ... | main.rs:502:10:502:10 | x | | -| main.rs:501:5:503:10 | ... = ... | main.rs:504:5:504:13 | ExprStmt | | -| main.rs:501:5:503:11 | ExprStmt | main.rs:501:6:501:6 | x | | -| main.rs:501:6:501:6 | x | main.rs:501:5:501:6 | * ... | | -| main.rs:502:9:502:10 | * ... | main.rs:503:10:503:10 | x | | -| main.rs:502:9:503:10 | ... + ... | main.rs:501:5:503:10 | ... = ... | | -| main.rs:502:10:502:10 | x | main.rs:502:9:502:10 | * ... | | -| main.rs:503:9:503:10 | * ... | main.rs:502:9:503:10 | ... + ... | | -| main.rs:503:10:503:10 | x | main.rs:503:9:503:10 | * ... | | -| main.rs:504:5:504:12 | return x | main.rs:500:1:505:1 | exit fn mutate_param (normal) | return | -| main.rs:504:5:504:13 | ExprStmt | main.rs:504:12:504:12 | x | | -| main.rs:504:12:504:12 | x | main.rs:504:5:504:12 | return x | | -| main.rs:507:1:513:1 | enter fn mutate_param2 | main.rs:507:22:507:22 | x | | -| main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | main.rs:507:1:513:1 | exit fn mutate_param2 | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:35 | ...: ... | match | -| main.rs:507:22:507:35 | ...: ... | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:56 | ...: ... | match | -| main.rs:507:38:507:56 | ...: ... | main.rs:508:5:510:11 | ExprStmt | | -| main.rs:507:59:513:1 | { ... } | main.rs:507:1:513:1 | exit fn mutate_param2 (normal) | | -| main.rs:508:5:508:6 | * ... | main.rs:509:10:509:10 | x | | -| main.rs:508:5:510:10 | ... = ... | main.rs:511:5:512:10 | ExprStmt | | -| main.rs:508:5:510:11 | ExprStmt | main.rs:508:6:508:6 | x | | -| main.rs:508:6:508:6 | x | main.rs:508:5:508:6 | * ... | | -| main.rs:509:9:509:10 | * ... | main.rs:510:10:510:10 | x | | -| main.rs:509:9:510:10 | ... + ... | main.rs:508:5:510:10 | ... = ... | | -| main.rs:509:10:509:10 | x | main.rs:509:9:509:10 | * ... | | -| main.rs:510:9:510:10 | * ... | main.rs:509:9:510:10 | ... + ... | | -| main.rs:510:10:510:10 | x | main.rs:510:9:510:10 | * ... | | -| main.rs:511:5:511:6 | * ... | main.rs:512:9:512:9 | x | | -| main.rs:511:5:512:9 | ... = ... | main.rs:507:59:513:1 | { ... } | | -| main.rs:511:5:512:10 | ExprStmt | main.rs:511:6:511:6 | y | | -| main.rs:511:6:511:6 | y | main.rs:511:5:511:6 | * ... | | -| main.rs:512:9:512:9 | x | main.rs:511:5:512:9 | ... = ... | | -| main.rs:515:1:535:1 | enter fn mutate_arg | main.rs:516:5:516:18 | let ... = 2 | | -| main.rs:515:1:535:1 | exit fn mutate_arg (normal) | main.rs:515:1:535:1 | exit fn mutate_arg | | -| main.rs:515:17:535:1 | { ... } | main.rs:515:1:535:1 | exit fn mutate_arg (normal) | | -| main.rs:516:5:516:18 | let ... = 2 | main.rs:516:17:516:17 | 2 | | -| main.rs:516:9:516:13 | mut x | main.rs:517:5:518:29 | let ... = ... | match | -| main.rs:516:13:516:13 | x | main.rs:516:9:516:13 | mut x | | -| main.rs:516:17:516:17 | 2 | main.rs:516:13:516:13 | x | | -| main.rs:517:5:518:29 | let ... = ... | main.rs:518:9:518:20 | mutate_param | | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | | -| main.rs:517:9:517:9 | y | main.rs:519:5:519:12 | ExprStmt | match | -| main.rs:518:9:518:20 | mutate_param | main.rs:518:27:518:27 | x | | -| main.rs:518:9:518:28 | mutate_param(...) | main.rs:517:9:517:9 | y | | -| main.rs:518:22:518:27 | &mut x | main.rs:518:9:518:28 | mutate_param(...) | | -| main.rs:518:27:518:27 | x | main.rs:518:22:518:27 | &mut x | | -| main.rs:519:5:519:6 | * ... | main.rs:519:10:519:11 | 10 | | -| main.rs:519:5:519:11 | ... = ... | main.rs:522:5:522:17 | ExprStmt | | -| main.rs:519:5:519:12 | ExprStmt | main.rs:519:6:519:6 | y | | -| main.rs:519:6:519:6 | y | main.rs:519:5:519:6 | * ... | | -| main.rs:519:10:519:11 | 10 | main.rs:519:5:519:11 | ... = ... | | -| main.rs:522:5:522:13 | print_i64 | main.rs:522:15:522:15 | x | | -| main.rs:522:5:522:16 | print_i64(...) | main.rs:524:5:524:18 | let ... = 4 | | -| main.rs:522:5:522:17 | ExprStmt | main.rs:522:5:522:13 | print_i64 | | -| main.rs:522:15:522:15 | x | main.rs:522:5:522:16 | print_i64(...) | | -| main.rs:524:5:524:18 | let ... = 4 | main.rs:524:17:524:17 | 4 | | -| main.rs:524:9:524:13 | mut z | main.rs:525:5:526:20 | let ... = ... | match | -| main.rs:524:13:524:13 | z | main.rs:524:9:524:13 | mut z | | -| main.rs:524:17:524:17 | 4 | main.rs:524:13:524:13 | z | | -| main.rs:525:5:526:20 | let ... = ... | main.rs:526:19:526:19 | x | | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | | -| main.rs:525:9:525:9 | w | main.rs:527:5:530:6 | ExprStmt | match | -| main.rs:526:9:526:19 | &mut ... | main.rs:525:9:525:9 | w | | -| main.rs:526:14:526:19 | &mut x | main.rs:526:9:526:19 | &mut ... | | -| main.rs:526:19:526:19 | x | main.rs:526:14:526:19 | &mut x | | -| main.rs:527:5:527:17 | mutate_param2 | main.rs:528:14:528:14 | z | | -| main.rs:527:5:530:5 | mutate_param2(...) | main.rs:531:5:531:13 | ExprStmt | | -| main.rs:527:5:530:6 | ExprStmt | main.rs:527:5:527:17 | mutate_param2 | | -| main.rs:528:9:528:14 | &mut z | main.rs:529:9:529:9 | w | | -| main.rs:528:14:528:14 | z | main.rs:528:9:528:14 | &mut z | | -| main.rs:529:9:529:9 | w | main.rs:527:5:530:5 | mutate_param2(...) | | -| main.rs:531:5:531:7 | * ... | main.rs:531:11:531:12 | 11 | | -| main.rs:531:5:531:12 | ... = ... | main.rs:534:5:534:17 | ExprStmt | | -| main.rs:531:5:531:13 | ExprStmt | main.rs:531:7:531:7 | w | | -| main.rs:531:6:531:7 | * ... | main.rs:531:5:531:7 | * ... | | -| main.rs:531:7:531:7 | w | main.rs:531:6:531:7 | * ... | | -| main.rs:531:11:531:12 | 11 | main.rs:531:5:531:12 | ... = ... | | -| main.rs:534:5:534:13 | print_i64 | main.rs:534:15:534:15 | z | | -| main.rs:534:5:534:16 | print_i64(...) | main.rs:515:17:535:1 | { ... } | | -| main.rs:534:5:534:17 | ExprStmt | main.rs:534:5:534:13 | print_i64 | | -| main.rs:534:15:534:15 | z | main.rs:534:5:534:16 | print_i64(...) | | -| main.rs:537:1:543:1 | enter fn alias | main.rs:538:5:538:18 | let ... = 1 | | -| main.rs:537:1:543:1 | exit fn alias (normal) | main.rs:537:1:543:1 | exit fn alias | | -| main.rs:537:12:543:1 | { ... } | main.rs:537:1:543:1 | exit fn alias (normal) | | -| main.rs:538:5:538:18 | let ... = 1 | main.rs:538:17:538:17 | 1 | | -| main.rs:538:9:538:13 | mut x | main.rs:539:5:540:15 | let ... = ... | match | -| main.rs:538:13:538:13 | x | main.rs:538:9:538:13 | mut x | | -| main.rs:538:17:538:17 | 1 | main.rs:538:13:538:13 | x | | -| main.rs:539:5:540:15 | let ... = ... | main.rs:540:14:540:14 | x | | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | | -| main.rs:539:9:539:9 | y | main.rs:541:5:541:11 | ExprStmt | match | -| main.rs:540:9:540:14 | &mut x | main.rs:539:9:539:9 | y | | -| main.rs:540:14:540:14 | x | main.rs:540:9:540:14 | &mut x | | -| main.rs:541:5:541:6 | * ... | main.rs:541:10:541:10 | 2 | | -| main.rs:541:5:541:10 | ... = ... | main.rs:542:5:542:17 | ExprStmt | | -| main.rs:541:5:541:11 | ExprStmt | main.rs:541:6:541:6 | y | | -| main.rs:541:6:541:6 | y | main.rs:541:5:541:6 | * ... | | -| main.rs:541:10:541:10 | 2 | main.rs:541:5:541:10 | ... = ... | | -| main.rs:542:5:542:13 | print_i64 | main.rs:542:15:542:15 | x | | -| main.rs:542:5:542:16 | print_i64(...) | main.rs:537:12:543:1 | { ... } | | -| main.rs:542:5:542:17 | ExprStmt | main.rs:542:5:542:13 | print_i64 | | -| main.rs:542:15:542:15 | x | main.rs:542:5:542:16 | print_i64(...) | | -| main.rs:545:1:554:1 | enter fn capture_immut | main.rs:546:5:546:16 | let ... = 100 | | -| main.rs:545:1:554:1 | exit fn capture_immut (normal) | main.rs:545:1:554:1 | exit fn capture_immut | | -| main.rs:545:20:554:1 | { ... } | main.rs:545:1:554:1 | exit fn capture_immut (normal) | | -| main.rs:546:5:546:16 | let ... = 100 | main.rs:546:13:546:15 | 100 | | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | | -| main.rs:546:9:546:9 | x | main.rs:549:5:551:6 | let ... = ... | match | -| main.rs:546:13:546:15 | 100 | main.rs:546:9:546:9 | x | | -| main.rs:549:5:551:6 | let ... = ... | main.rs:549:15:551:5 | \|...\| ... | | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | | -| main.rs:549:9:549:11 | cap | main.rs:552:5:552:10 | ExprStmt | match | -| main.rs:549:15:551:5 | \|...\| ... | main.rs:549:9:549:11 | cap | | -| main.rs:549:15:551:5 | enter \|...\| ... | main.rs:550:9:550:21 | ExprStmt | | -| main.rs:549:15:551:5 | exit \|...\| ... (normal) | main.rs:549:15:551:5 | exit \|...\| ... | | -| main.rs:549:18:551:5 | { ... } | main.rs:549:15:551:5 | exit \|...\| ... (normal) | | -| main.rs:550:9:550:17 | print_i64 | main.rs:550:19:550:19 | x | | -| main.rs:550:9:550:20 | print_i64(...) | main.rs:549:18:551:5 | { ... } | | -| main.rs:550:9:550:21 | ExprStmt | main.rs:550:9:550:17 | print_i64 | | -| main.rs:550:19:550:19 | x | main.rs:550:9:550:20 | print_i64(...) | | -| main.rs:552:5:552:7 | cap | main.rs:552:5:552:9 | cap(...) | | -| main.rs:552:5:552:9 | cap(...) | main.rs:553:5:553:17 | ExprStmt | | -| main.rs:552:5:552:10 | ExprStmt | main.rs:552:5:552:7 | cap | | +| main.rs:397:15:397:16 | a9 | main.rs:397:5:397:17 | print_i64(...) | | +| main.rs:400:1:435:1 | enter fn destruct_assignment | main.rs:401:5:405:18 | let ... = ... | | +| main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | main.rs:400:1:435:1 | exit fn destruct_assignment | | +| main.rs:400:26:435:1 | { ... } | main.rs:400:1:435:1 | exit fn destruct_assignment (normal) | | +| main.rs:401:5:405:18 | let ... = ... | main.rs:405:10:405:10 | 1 | | +| main.rs:401:9:405:5 | TuplePat | main.rs:402:13:402:15 | a10 | match | +| main.rs:402:9:402:15 | mut a10 | main.rs:403:13:403:14 | b4 | match | +| main.rs:402:13:402:15 | a10 | main.rs:402:9:402:15 | mut a10 | | +| main.rs:403:9:403:14 | mut b4 | main.rs:404:13:404:14 | c2 | match | +| main.rs:403:13:403:14 | b4 | main.rs:403:9:403:14 | mut b4 | | +| main.rs:404:9:404:14 | mut c2 | main.rs:406:5:406:19 | ExprStmt | match | +| main.rs:404:13:404:14 | c2 | main.rs:404:9:404:14 | mut c2 | | +| main.rs:405:9:405:17 | TupleExpr | main.rs:401:9:405:5 | TuplePat | | +| main.rs:405:10:405:10 | 1 | main.rs:405:13:405:13 | 2 | | +| main.rs:405:13:405:13 | 2 | main.rs:405:16:405:16 | 3 | | +| main.rs:405:16:405:16 | 3 | main.rs:405:9:405:17 | TupleExpr | | +| main.rs:406:5:406:13 | print_i64 | main.rs:406:15:406:17 | a10 | | +| main.rs:406:5:406:18 | print_i64(...) | main.rs:407:5:407:18 | ExprStmt | | +| main.rs:406:5:406:19 | ExprStmt | main.rs:406:5:406:13 | print_i64 | | +| main.rs:406:15:406:17 | a10 | main.rs:406:5:406:18 | print_i64(...) | | +| main.rs:407:5:407:13 | print_i64 | main.rs:407:15:407:16 | b4 | | +| main.rs:407:5:407:17 | print_i64(...) | main.rs:408:5:408:18 | ExprStmt | | +| main.rs:407:5:407:18 | ExprStmt | main.rs:407:5:407:13 | print_i64 | | +| main.rs:407:15:407:16 | b4 | main.rs:407:5:407:17 | print_i64(...) | | +| main.rs:408:5:408:13 | print_i64 | main.rs:408:15:408:16 | c2 | | +| main.rs:408:5:408:17 | print_i64(...) | main.rs:410:5:418:6 | ExprStmt | | +| main.rs:408:5:408:18 | ExprStmt | main.rs:408:5:408:13 | print_i64 | | +| main.rs:408:15:408:16 | c2 | main.rs:408:5:408:17 | print_i64(...) | | +| main.rs:410:5:414:5 | TupleExpr | main.rs:415:9:415:11 | a10 | | +| main.rs:410:5:418:5 | ... = ... | main.rs:419:5:419:19 | ExprStmt | | +| main.rs:410:5:418:6 | ExprStmt | main.rs:411:9:411:10 | c2 | | +| main.rs:411:9:411:10 | c2 | main.rs:412:9:412:10 | b4 | | +| main.rs:412:9:412:10 | b4 | main.rs:413:9:413:11 | a10 | | +| main.rs:413:9:413:11 | a10 | main.rs:410:5:414:5 | TupleExpr | | +| main.rs:414:9:418:5 | TupleExpr | main.rs:410:5:418:5 | ... = ... | | +| main.rs:415:9:415:11 | a10 | main.rs:416:9:416:10 | b4 | | +| main.rs:416:9:416:10 | b4 | main.rs:417:9:417:10 | c2 | | +| main.rs:417:9:417:10 | c2 | main.rs:414:9:418:5 | TupleExpr | | +| main.rs:419:5:419:13 | print_i64 | main.rs:419:15:419:17 | a10 | | +| main.rs:419:5:419:18 | print_i64(...) | main.rs:420:5:420:18 | ExprStmt | | +| main.rs:419:5:419:19 | ExprStmt | main.rs:419:5:419:13 | print_i64 | | +| main.rs:419:15:419:17 | a10 | main.rs:419:5:419:18 | print_i64(...) | | +| main.rs:420:5:420:13 | print_i64 | main.rs:420:15:420:16 | b4 | | +| main.rs:420:5:420:17 | print_i64(...) | main.rs:421:5:421:18 | ExprStmt | | +| main.rs:420:5:420:18 | ExprStmt | main.rs:420:5:420:13 | print_i64 | | +| main.rs:420:15:420:16 | b4 | main.rs:420:5:420:17 | print_i64(...) | | +| main.rs:421:5:421:13 | print_i64 | main.rs:421:15:421:16 | c2 | | +| main.rs:421:5:421:17 | print_i64(...) | main.rs:423:5:431:5 | ExprStmt | | +| main.rs:421:5:421:18 | ExprStmt | main.rs:421:5:421:13 | print_i64 | | +| main.rs:421:15:421:16 | c2 | main.rs:421:5:421:17 | print_i64(...) | | +| main.rs:423:5:431:5 | ExprStmt | main.rs:423:12:423:12 | 4 | | +| main.rs:423:5:431:5 | match ... { ... } | main.rs:433:5:433:19 | ExprStmt | | +| main.rs:423:11:423:16 | TupleExpr | main.rs:424:9:427:9 | TuplePat | | +| main.rs:423:12:423:12 | 4 | main.rs:423:15:423:15 | 5 | | +| main.rs:423:15:423:15 | 5 | main.rs:423:11:423:16 | TupleExpr | | +| main.rs:424:9:427:9 | TuplePat | main.rs:425:13:425:15 | a10 | match | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | | +| main.rs:425:13:425:15 | a10 | main.rs:426:13:426:14 | b4 | match | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | | +| main.rs:426:13:426:14 | b4 | main.rs:428:13:428:27 | ExprStmt | match | +| main.rs:427:14:430:9 | { ... } | main.rs:423:5:431:5 | match ... { ... } | | +| main.rs:428:13:428:21 | print_i64 | main.rs:428:23:428:25 | a10 | | +| main.rs:428:13:428:26 | print_i64(...) | main.rs:429:13:429:26 | ExprStmt | | +| main.rs:428:13:428:27 | ExprStmt | main.rs:428:13:428:21 | print_i64 | | +| main.rs:428:23:428:25 | a10 | main.rs:428:13:428:26 | print_i64(...) | | +| main.rs:429:13:429:21 | print_i64 | main.rs:429:23:429:24 | b4 | | +| main.rs:429:13:429:25 | print_i64(...) | main.rs:427:14:430:9 | { ... } | | +| main.rs:429:13:429:26 | ExprStmt | main.rs:429:13:429:21 | print_i64 | | +| main.rs:429:23:429:24 | b4 | main.rs:429:13:429:25 | print_i64(...) | | +| main.rs:433:5:433:13 | print_i64 | main.rs:433:15:433:17 | a10 | | +| main.rs:433:5:433:18 | print_i64(...) | main.rs:434:5:434:18 | ExprStmt | | +| main.rs:433:5:433:19 | ExprStmt | main.rs:433:5:433:13 | print_i64 | | +| main.rs:433:15:433:17 | a10 | main.rs:433:5:433:18 | print_i64(...) | | +| main.rs:434:5:434:13 | print_i64 | main.rs:434:15:434:16 | b4 | | +| main.rs:434:5:434:17 | print_i64(...) | main.rs:400:26:435:1 | { ... } | | +| main.rs:434:5:434:18 | ExprStmt | main.rs:434:5:434:13 | print_i64 | | +| main.rs:434:15:434:16 | b4 | main.rs:434:5:434:17 | print_i64(...) | | +| main.rs:437:1:452:1 | enter fn closure_variable | main.rs:438:5:440:10 | let ... = ... | | +| main.rs:437:1:452:1 | exit fn closure_variable (normal) | main.rs:437:1:452:1 | exit fn closure_variable | | +| main.rs:437:23:452:1 | { ... } | main.rs:437:1:452:1 | exit fn closure_variable (normal) | | +| main.rs:438:5:440:10 | let ... = ... | main.rs:439:9:440:9 | \|...\| x | | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | | +| main.rs:438:9:438:23 | example_closure | main.rs:441:5:442:27 | let ... = ... | match | +| main.rs:439:9:440:9 | \|...\| x | main.rs:438:9:438:23 | example_closure | | +| main.rs:439:9:440:9 | enter \|...\| x | main.rs:439:10:439:10 | x | | +| main.rs:439:9:440:9 | exit \|...\| x (normal) | main.rs:439:9:440:9 | exit \|...\| x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:15 | ...: i64 | match | +| main.rs:439:10:439:15 | ...: i64 | main.rs:440:9:440:9 | x | | +| main.rs:440:9:440:9 | x | main.rs:439:9:440:9 | exit \|...\| x (normal) | | +| main.rs:441:5:442:27 | let ... = ... | main.rs:442:9:442:23 | example_closure | | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | | +| main.rs:441:9:441:10 | n1 | main.rs:443:5:443:18 | ExprStmt | match | +| main.rs:442:9:442:23 | example_closure | main.rs:442:25:442:25 | 5 | | +| main.rs:442:9:442:26 | example_closure(...) | main.rs:441:9:441:10 | n1 | | +| main.rs:442:25:442:25 | 5 | main.rs:442:9:442:26 | example_closure(...) | | +| main.rs:443:5:443:13 | print_i64 | main.rs:443:15:443:16 | n1 | | +| main.rs:443:5:443:17 | print_i64(...) | main.rs:445:5:445:25 | ExprStmt | | +| main.rs:443:5:443:18 | ExprStmt | main.rs:443:5:443:13 | print_i64 | | +| main.rs:443:15:443:16 | n1 | main.rs:443:5:443:17 | print_i64(...) | | +| main.rs:445:5:445:22 | immutable_variable | main.rs:445:5:445:24 | immutable_variable(...) | | +| main.rs:445:5:445:24 | immutable_variable(...) | main.rs:446:5:448:10 | let ... = ... | | +| main.rs:445:5:445:25 | ExprStmt | main.rs:445:5:445:22 | immutable_variable | | +| main.rs:446:5:448:10 | let ... = ... | main.rs:447:5:448:9 | \|...\| x | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:446:9:446:26 | immutable_variable | main.rs:449:5:450:30 | let ... = ... | match | +| main.rs:447:5:448:9 | \|...\| x | main.rs:446:9:446:26 | immutable_variable | | +| main.rs:447:5:448:9 | enter \|...\| x | main.rs:447:6:447:6 | x | | +| main.rs:447:5:448:9 | exit \|...\| x (normal) | main.rs:447:5:448:9 | exit \|...\| x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:11 | ...: i64 | match | +| main.rs:447:6:447:11 | ...: i64 | main.rs:448:9:448:9 | x | | +| main.rs:448:9:448:9 | x | main.rs:447:5:448:9 | exit \|...\| x (normal) | | +| main.rs:449:5:450:30 | let ... = ... | main.rs:450:9:450:26 | immutable_variable | | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | | +| main.rs:449:9:449:10 | n2 | main.rs:451:5:451:18 | ExprStmt | match | +| main.rs:450:9:450:26 | immutable_variable | main.rs:450:28:450:28 | 6 | | +| main.rs:450:9:450:29 | immutable_variable(...) | main.rs:449:9:449:10 | n2 | | +| main.rs:450:28:450:28 | 6 | main.rs:450:9:450:29 | immutable_variable(...) | | +| main.rs:451:5:451:13 | print_i64 | main.rs:451:15:451:16 | n2 | | +| main.rs:451:5:451:17 | print_i64(...) | main.rs:437:23:452:1 | { ... } | | +| main.rs:451:5:451:18 | ExprStmt | main.rs:451:5:451:13 | print_i64 | | +| main.rs:451:15:451:16 | n2 | main.rs:451:5:451:17 | print_i64(...) | | +| main.rs:454:1:484:1 | enter fn nested_function | main.rs:456:5:458:10 | let ... = ... | | +| main.rs:454:1:484:1 | exit fn nested_function (normal) | main.rs:454:1:484:1 | exit fn nested_function | | +| main.rs:454:22:484:1 | { ... } | main.rs:454:1:484:1 | exit fn nested_function (normal) | | +| main.rs:456:5:458:10 | let ... = ... | main.rs:457:9:458:9 | \|...\| x | | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | | +| main.rs:456:9:456:9 | f | main.rs:459:5:459:20 | ExprStmt | match | +| main.rs:457:9:458:9 | \|...\| x | main.rs:456:9:456:9 | f | | +| main.rs:457:9:458:9 | enter \|...\| x | main.rs:457:10:457:10 | x | | +| main.rs:457:9:458:9 | exit \|...\| x (normal) | main.rs:457:9:458:9 | exit \|...\| x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:15 | ...: i64 | match | +| main.rs:457:10:457:15 | ...: i64 | main.rs:458:9:458:9 | x | | +| main.rs:458:9:458:9 | x | main.rs:457:9:458:9 | exit \|...\| x (normal) | | +| main.rs:459:5:459:13 | print_i64 | main.rs:459:15:459:15 | f | | +| main.rs:459:5:459:19 | print_i64(...) | main.rs:461:5:464:5 | fn f | | +| main.rs:459:5:459:20 | ExprStmt | main.rs:459:5:459:13 | print_i64 | | +| main.rs:459:15:459:15 | f | main.rs:459:17:459:17 | 1 | | +| main.rs:459:15:459:18 | f(...) | main.rs:459:5:459:19 | print_i64(...) | | +| main.rs:459:17:459:17 | 1 | main.rs:459:15:459:18 | f(...) | | +| main.rs:461:5:464:5 | enter fn f | main.rs:461:10:461:10 | x | | +| main.rs:461:5:464:5 | exit fn f (normal) | main.rs:461:5:464:5 | exit fn f | | +| main.rs:461:5:464:5 | fn f | main.rs:466:5:466:20 | ExprStmt | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:15 | ...: i64 | match | +| main.rs:461:10:461:15 | ...: i64 | main.rs:463:9:463:9 | x | | +| main.rs:462:5:464:5 | { ... } | main.rs:461:5:464:5 | exit fn f (normal) | | +| main.rs:463:9:463:9 | x | main.rs:463:13:463:13 | 1 | | +| main.rs:463:9:463:13 | ... + ... | main.rs:462:5:464:5 | { ... } | | +| main.rs:463:13:463:13 | 1 | main.rs:463:9:463:13 | ... + ... | | +| main.rs:466:5:466:13 | print_i64 | main.rs:466:15:466:15 | f | | +| main.rs:466:5:466:19 | print_i64(...) | main.rs:469:9:469:24 | ExprStmt | | +| main.rs:466:5:466:20 | ExprStmt | main.rs:466:5:466:13 | print_i64 | | +| main.rs:466:15:466:15 | f | main.rs:466:17:466:17 | 2 | | +| main.rs:466:15:466:18 | f(...) | main.rs:466:5:466:19 | print_i64(...) | | +| main.rs:466:17:466:17 | 2 | main.rs:466:15:466:18 | f(...) | | +| main.rs:468:5:483:5 | { ... } | main.rs:454:22:484:1 | { ... } | | +| main.rs:469:9:469:17 | print_i64 | main.rs:469:19:469:19 | f | | +| main.rs:469:9:469:23 | print_i64(...) | main.rs:470:9:473:9 | fn f | | +| main.rs:469:9:469:24 | ExprStmt | main.rs:469:9:469:17 | print_i64 | | +| main.rs:469:19:469:19 | f | main.rs:469:21:469:21 | 3 | | +| main.rs:469:19:469:22 | f(...) | main.rs:469:9:469:23 | print_i64(...) | | +| main.rs:469:21:469:21 | 3 | main.rs:469:19:469:22 | f(...) | | +| main.rs:470:9:473:9 | enter fn f | main.rs:470:14:470:14 | x | | +| main.rs:470:9:473:9 | exit fn f (normal) | main.rs:470:9:473:9 | exit fn f | | +| main.rs:470:9:473:9 | fn f | main.rs:475:9:477:9 | ExprStmt | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:19 | ...: i64 | match | +| main.rs:470:14:470:19 | ...: i64 | main.rs:472:13:472:13 | 2 | | +| main.rs:471:9:473:9 | { ... } | main.rs:470:9:473:9 | exit fn f (normal) | | +| main.rs:472:13:472:13 | 2 | main.rs:472:17:472:17 | x | | +| main.rs:472:13:472:17 | ... * ... | main.rs:471:9:473:9 | { ... } | | +| main.rs:472:17:472:17 | x | main.rs:472:13:472:17 | ... * ... | | +| main.rs:475:9:477:9 | ExprStmt | main.rs:476:13:476:28 | ExprStmt | | +| main.rs:475:9:477:9 | { ... } | main.rs:479:9:481:14 | let ... = ... | | +| main.rs:476:13:476:21 | print_i64 | main.rs:476:23:476:23 | f | | +| main.rs:476:13:476:27 | print_i64(...) | main.rs:475:9:477:9 | { ... } | | +| main.rs:476:13:476:28 | ExprStmt | main.rs:476:13:476:21 | print_i64 | | +| main.rs:476:23:476:23 | f | main.rs:476:25:476:25 | 4 | | +| main.rs:476:23:476:26 | f(...) | main.rs:476:13:476:27 | print_i64(...) | | +| main.rs:476:25:476:25 | 4 | main.rs:476:23:476:26 | f(...) | | +| main.rs:479:9:481:14 | let ... = ... | main.rs:480:13:481:13 | \|...\| x | | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | | +| main.rs:479:13:479:13 | f | main.rs:482:9:482:24 | ExprStmt | match | +| main.rs:480:13:481:13 | \|...\| x | main.rs:479:13:479:13 | f | | +| main.rs:480:13:481:13 | enter \|...\| x | main.rs:480:14:480:14 | x | | +| main.rs:480:13:481:13 | exit \|...\| x (normal) | main.rs:480:13:481:13 | exit \|...\| x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:19 | ...: i64 | match | +| main.rs:480:14:480:19 | ...: i64 | main.rs:481:13:481:13 | x | | +| main.rs:481:13:481:13 | x | main.rs:480:13:481:13 | exit \|...\| x (normal) | | +| main.rs:482:9:482:17 | print_i64 | main.rs:482:19:482:19 | f | | +| main.rs:482:9:482:23 | print_i64(...) | main.rs:468:5:483:5 | { ... } | | +| main.rs:482:9:482:24 | ExprStmt | main.rs:482:9:482:17 | print_i64 | | +| main.rs:482:19:482:19 | f | main.rs:482:21:482:21 | 5 | | +| main.rs:482:19:482:22 | f(...) | main.rs:482:9:482:23 | print_i64(...) | | +| main.rs:482:21:482:21 | 5 | main.rs:482:19:482:22 | f(...) | | +| main.rs:486:1:493:1 | enter fn for_variable | main.rs:487:5:487:42 | let ... = ... | | +| main.rs:486:1:493:1 | exit fn for_variable (normal) | main.rs:486:1:493:1 | exit fn for_variable | | +| main.rs:486:19:493:1 | { ... } | main.rs:486:1:493:1 | exit fn for_variable (normal) | | +| main.rs:487:5:487:42 | let ... = ... | main.rs:487:15:487:22 | "apples" | | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | | +| main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | match | +| main.rs:487:13:487:41 | &... | main.rs:487:9:487:9 | v | | +| main.rs:487:14:487:41 | [...] | main.rs:487:13:487:41 | &... | | +| main.rs:487:15:487:22 | "apples" | main.rs:487:25:487:30 | "cake" | | +| main.rs:487:25:487:30 | "cake" | main.rs:487:33:487:40 | "coffee" | | +| main.rs:487:33:487:40 | "coffee" | main.rs:487:14:487:41 | [...] | | +| main.rs:489:5:492:5 | for ... in ... { ... } | main.rs:486:19:493:1 | { ... } | | +| main.rs:489:9:489:12 | text | main.rs:489:5:492:5 | for ... in ... { ... } | no-match | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | | +| main.rs:489:9:489:12 | text | main.rs:491:9:491:24 | ExprStmt | match | +| main.rs:490:12:490:12 | v | main.rs:489:9:489:12 | text | | +| main.rs:490:14:492:5 | { ... } | main.rs:489:9:489:12 | text | | +| main.rs:491:9:491:17 | print_str | main.rs:491:19:491:22 | text | | +| main.rs:491:9:491:23 | print_str(...) | main.rs:490:14:492:5 | { ... } | | +| main.rs:491:9:491:24 | ExprStmt | main.rs:491:9:491:17 | print_str | | +| main.rs:491:19:491:22 | text | main.rs:491:9:491:23 | print_str(...) | | +| main.rs:495:1:501:1 | enter fn add_assign | main.rs:496:5:496:18 | let ... = 0 | | +| main.rs:495:1:501:1 | exit fn add_assign (normal) | main.rs:495:1:501:1 | exit fn add_assign | | +| main.rs:495:17:501:1 | { ... } | main.rs:495:1:501:1 | exit fn add_assign (normal) | | +| main.rs:496:5:496:18 | let ... = 0 | main.rs:496:17:496:17 | 0 | | +| main.rs:496:9:496:13 | mut a | main.rs:497:5:497:11 | ExprStmt | match | +| main.rs:496:13:496:13 | a | main.rs:496:9:496:13 | mut a | | +| main.rs:496:17:496:17 | 0 | main.rs:496:13:496:13 | a | | +| main.rs:497:5:497:5 | a | main.rs:497:10:497:10 | 1 | | +| main.rs:497:5:497:10 | ... += ... | main.rs:498:5:498:17 | ExprStmt | | +| main.rs:497:5:497:11 | ExprStmt | main.rs:497:5:497:5 | a | | +| main.rs:497:10:497:10 | 1 | main.rs:497:5:497:10 | ... += ... | | +| main.rs:498:5:498:13 | print_i64 | main.rs:498:15:498:15 | a | | +| main.rs:498:5:498:16 | print_i64(...) | main.rs:499:5:499:28 | ExprStmt | | +| main.rs:498:5:498:17 | ExprStmt | main.rs:498:5:498:13 | print_i64 | | +| main.rs:498:15:498:15 | a | main.rs:498:5:498:16 | print_i64(...) | | +| main.rs:499:5:499:27 | ... .add_assign(...) | main.rs:500:5:500:17 | ExprStmt | | +| main.rs:499:5:499:28 | ExprStmt | main.rs:499:11:499:11 | a | | +| main.rs:499:6:499:11 | &mut a | main.rs:499:25:499:26 | 10 | | +| main.rs:499:11:499:11 | a | main.rs:499:6:499:11 | &mut a | | +| main.rs:499:25:499:26 | 10 | main.rs:499:5:499:27 | ... .add_assign(...) | | +| main.rs:500:5:500:13 | print_i64 | main.rs:500:15:500:15 | a | | +| main.rs:500:5:500:16 | print_i64(...) | main.rs:495:17:501:1 | { ... } | | +| main.rs:500:5:500:17 | ExprStmt | main.rs:500:5:500:13 | print_i64 | | +| main.rs:500:15:500:15 | a | main.rs:500:5:500:16 | print_i64(...) | | +| main.rs:503:1:509:1 | enter fn mutate | main.rs:504:5:504:18 | let ... = 1 | | +| main.rs:503:1:509:1 | exit fn mutate (normal) | main.rs:503:1:509:1 | exit fn mutate | | +| main.rs:503:13:509:1 | { ... } | main.rs:503:1:509:1 | exit fn mutate (normal) | | +| main.rs:504:5:504:18 | let ... = 1 | main.rs:504:17:504:17 | 1 | | +| main.rs:504:9:504:13 | mut i | main.rs:505:5:506:15 | let ... = ... | match | +| main.rs:504:13:504:13 | i | main.rs:504:9:504:13 | mut i | | +| main.rs:504:17:504:17 | 1 | main.rs:504:13:504:13 | i | | +| main.rs:505:5:506:15 | let ... = ... | main.rs:506:14:506:14 | i | | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | | +| main.rs:505:9:505:13 | ref_i | main.rs:507:5:507:15 | ExprStmt | match | +| main.rs:506:9:506:14 | &mut i | main.rs:505:9:505:13 | ref_i | | +| main.rs:506:14:506:14 | i | main.rs:506:9:506:14 | &mut i | | +| main.rs:507:5:507:10 | * ... | main.rs:507:14:507:14 | 2 | | +| main.rs:507:5:507:14 | ... = ... | main.rs:508:5:508:17 | ExprStmt | | +| main.rs:507:5:507:15 | ExprStmt | main.rs:507:6:507:10 | ref_i | | +| main.rs:507:6:507:10 | ref_i | main.rs:507:5:507:10 | * ... | | +| main.rs:507:14:507:14 | 2 | main.rs:507:5:507:14 | ... = ... | | +| main.rs:508:5:508:13 | print_i64 | main.rs:508:15:508:15 | i | | +| main.rs:508:5:508:16 | print_i64(...) | main.rs:503:13:509:1 | { ... } | | +| main.rs:508:5:508:17 | ExprStmt | main.rs:508:5:508:13 | print_i64 | | +| main.rs:508:15:508:15 | i | main.rs:508:5:508:16 | print_i64(...) | | +| main.rs:511:1:516:1 | enter fn mutate_param | main.rs:511:17:511:17 | x | | +| main.rs:511:1:516:1 | exit fn mutate_param (normal) | main.rs:511:1:516:1 | exit fn mutate_param | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:27 | ...: ... | match | +| main.rs:511:17:511:27 | ...: ... | main.rs:512:5:514:11 | ExprStmt | | +| main.rs:512:5:512:6 | * ... | main.rs:513:10:513:10 | x | | +| main.rs:512:5:514:10 | ... = ... | main.rs:515:5:515:13 | ExprStmt | | +| main.rs:512:5:514:11 | ExprStmt | main.rs:512:6:512:6 | x | | +| main.rs:512:6:512:6 | x | main.rs:512:5:512:6 | * ... | | +| main.rs:513:9:513:10 | * ... | main.rs:514:10:514:10 | x | | +| main.rs:513:9:514:10 | ... + ... | main.rs:512:5:514:10 | ... = ... | | +| main.rs:513:10:513:10 | x | main.rs:513:9:513:10 | * ... | | +| main.rs:514:9:514:10 | * ... | main.rs:513:9:514:10 | ... + ... | | +| main.rs:514:10:514:10 | x | main.rs:514:9:514:10 | * ... | | +| main.rs:515:5:515:12 | return x | main.rs:511:1:516:1 | exit fn mutate_param (normal) | return | +| main.rs:515:5:515:13 | ExprStmt | main.rs:515:12:515:12 | x | | +| main.rs:515:12:515:12 | x | main.rs:515:5:515:12 | return x | | +| main.rs:518:1:524:1 | enter fn mutate_param2 | main.rs:518:22:518:22 | x | | +| main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | main.rs:518:1:524:1 | exit fn mutate_param2 | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:35 | ...: ... | match | +| main.rs:518:22:518:35 | ...: ... | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:56 | ...: ... | match | +| main.rs:518:38:518:56 | ...: ... | main.rs:519:5:521:11 | ExprStmt | | +| main.rs:518:59:524:1 | { ... } | main.rs:518:1:524:1 | exit fn mutate_param2 (normal) | | +| main.rs:519:5:519:6 | * ... | main.rs:520:10:520:10 | x | | +| main.rs:519:5:521:10 | ... = ... | main.rs:522:5:523:10 | ExprStmt | | +| main.rs:519:5:521:11 | ExprStmt | main.rs:519:6:519:6 | x | | +| main.rs:519:6:519:6 | x | main.rs:519:5:519:6 | * ... | | +| main.rs:520:9:520:10 | * ... | main.rs:521:10:521:10 | x | | +| main.rs:520:9:521:10 | ... + ... | main.rs:519:5:521:10 | ... = ... | | +| main.rs:520:10:520:10 | x | main.rs:520:9:520:10 | * ... | | +| main.rs:521:9:521:10 | * ... | main.rs:520:9:521:10 | ... + ... | | +| main.rs:521:10:521:10 | x | main.rs:521:9:521:10 | * ... | | +| main.rs:522:5:522:6 | * ... | main.rs:523:9:523:9 | x | | +| main.rs:522:5:523:9 | ... = ... | main.rs:518:59:524:1 | { ... } | | +| main.rs:522:5:523:10 | ExprStmt | main.rs:522:6:522:6 | y | | +| main.rs:522:6:522:6 | y | main.rs:522:5:522:6 | * ... | | +| main.rs:523:9:523:9 | x | main.rs:522:5:523:9 | ... = ... | | +| main.rs:526:1:546:1 | enter fn mutate_arg | main.rs:527:5:527:18 | let ... = 2 | | +| main.rs:526:1:546:1 | exit fn mutate_arg (normal) | main.rs:526:1:546:1 | exit fn mutate_arg | | +| main.rs:526:17:546:1 | { ... } | main.rs:526:1:546:1 | exit fn mutate_arg (normal) | | +| main.rs:527:5:527:18 | let ... = 2 | main.rs:527:17:527:17 | 2 | | +| main.rs:527:9:527:13 | mut x | main.rs:528:5:529:29 | let ... = ... | match | +| main.rs:527:13:527:13 | x | main.rs:527:9:527:13 | mut x | | +| main.rs:527:17:527:17 | 2 | main.rs:527:13:527:13 | x | | +| main.rs:528:5:529:29 | let ... = ... | main.rs:529:9:529:20 | mutate_param | | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | | +| main.rs:528:9:528:9 | y | main.rs:530:5:530:12 | ExprStmt | match | +| main.rs:529:9:529:20 | mutate_param | main.rs:529:27:529:27 | x | | +| main.rs:529:9:529:28 | mutate_param(...) | main.rs:528:9:528:9 | y | | +| main.rs:529:22:529:27 | &mut x | main.rs:529:9:529:28 | mutate_param(...) | | +| main.rs:529:27:529:27 | x | main.rs:529:22:529:27 | &mut x | | +| main.rs:530:5:530:6 | * ... | main.rs:530:10:530:11 | 10 | | +| main.rs:530:5:530:11 | ... = ... | main.rs:533:5:533:17 | ExprStmt | | +| main.rs:530:5:530:12 | ExprStmt | main.rs:530:6:530:6 | y | | +| main.rs:530:6:530:6 | y | main.rs:530:5:530:6 | * ... | | +| main.rs:530:10:530:11 | 10 | main.rs:530:5:530:11 | ... = ... | | +| main.rs:533:5:533:13 | print_i64 | main.rs:533:15:533:15 | x | | +| main.rs:533:5:533:16 | print_i64(...) | main.rs:535:5:535:18 | let ... = 4 | | +| main.rs:533:5:533:17 | ExprStmt | main.rs:533:5:533:13 | print_i64 | | +| main.rs:533:15:533:15 | x | main.rs:533:5:533:16 | print_i64(...) | | +| main.rs:535:5:535:18 | let ... = 4 | main.rs:535:17:535:17 | 4 | | +| main.rs:535:9:535:13 | mut z | main.rs:536:5:537:20 | let ... = ... | match | +| main.rs:535:13:535:13 | z | main.rs:535:9:535:13 | mut z | | +| main.rs:535:17:535:17 | 4 | main.rs:535:13:535:13 | z | | +| main.rs:536:5:537:20 | let ... = ... | main.rs:537:19:537:19 | x | | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | | +| main.rs:536:9:536:9 | w | main.rs:538:5:541:6 | ExprStmt | match | +| main.rs:537:9:537:19 | &mut ... | main.rs:536:9:536:9 | w | | +| main.rs:537:14:537:19 | &mut x | main.rs:537:9:537:19 | &mut ... | | +| main.rs:537:19:537:19 | x | main.rs:537:14:537:19 | &mut x | | +| main.rs:538:5:538:17 | mutate_param2 | main.rs:539:14:539:14 | z | | +| main.rs:538:5:541:5 | mutate_param2(...) | main.rs:542:5:542:13 | ExprStmt | | +| main.rs:538:5:541:6 | ExprStmt | main.rs:538:5:538:17 | mutate_param2 | | +| main.rs:539:9:539:14 | &mut z | main.rs:540:9:540:9 | w | | +| main.rs:539:14:539:14 | z | main.rs:539:9:539:14 | &mut z | | +| main.rs:540:9:540:9 | w | main.rs:538:5:541:5 | mutate_param2(...) | | +| main.rs:542:5:542:7 | * ... | main.rs:542:11:542:12 | 11 | | +| main.rs:542:5:542:12 | ... = ... | main.rs:545:5:545:17 | ExprStmt | | +| main.rs:542:5:542:13 | ExprStmt | main.rs:542:7:542:7 | w | | +| main.rs:542:6:542:7 | * ... | main.rs:542:5:542:7 | * ... | | +| main.rs:542:7:542:7 | w | main.rs:542:6:542:7 | * ... | | +| main.rs:542:11:542:12 | 11 | main.rs:542:5:542:12 | ... = ... | | +| main.rs:545:5:545:13 | print_i64 | main.rs:545:15:545:15 | z | | +| main.rs:545:5:545:16 | print_i64(...) | main.rs:526:17:546:1 | { ... } | | +| main.rs:545:5:545:17 | ExprStmt | main.rs:545:5:545:13 | print_i64 | | +| main.rs:545:15:545:15 | z | main.rs:545:5:545:16 | print_i64(...) | | +| main.rs:548:1:554:1 | enter fn alias | main.rs:549:5:549:18 | let ... = 1 | | +| main.rs:548:1:554:1 | exit fn alias (normal) | main.rs:548:1:554:1 | exit fn alias | | +| main.rs:548:12:554:1 | { ... } | main.rs:548:1:554:1 | exit fn alias (normal) | | +| main.rs:549:5:549:18 | let ... = 1 | main.rs:549:17:549:17 | 1 | | +| main.rs:549:9:549:13 | mut x | main.rs:550:5:551:15 | let ... = ... | match | +| main.rs:549:13:549:13 | x | main.rs:549:9:549:13 | mut x | | +| main.rs:549:17:549:17 | 1 | main.rs:549:13:549:13 | x | | +| main.rs:550:5:551:15 | let ... = ... | main.rs:551:14:551:14 | x | | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | | +| main.rs:550:9:550:9 | y | main.rs:552:5:552:11 | ExprStmt | match | +| main.rs:551:9:551:14 | &mut x | main.rs:550:9:550:9 | y | | +| main.rs:551:14:551:14 | x | main.rs:551:9:551:14 | &mut x | | +| main.rs:552:5:552:6 | * ... | main.rs:552:10:552:10 | 2 | | +| main.rs:552:5:552:10 | ... = ... | main.rs:553:5:553:17 | ExprStmt | | +| main.rs:552:5:552:11 | ExprStmt | main.rs:552:6:552:6 | y | | +| main.rs:552:6:552:6 | y | main.rs:552:5:552:6 | * ... | | +| main.rs:552:10:552:10 | 2 | main.rs:552:5:552:10 | ... = ... | | | main.rs:553:5:553:13 | print_i64 | main.rs:553:15:553:15 | x | | -| main.rs:553:5:553:16 | print_i64(...) | main.rs:545:20:554:1 | { ... } | | +| main.rs:553:5:553:16 | print_i64(...) | main.rs:548:12:554:1 | { ... } | | | main.rs:553:5:553:17 | ExprStmt | main.rs:553:5:553:13 | print_i64 | | | main.rs:553:15:553:15 | x | main.rs:553:5:553:16 | print_i64(...) | | -| main.rs:556:1:583:1 | enter fn capture_mut | main.rs:557:5:557:18 | let ... = 1 | | -| main.rs:556:1:583:1 | exit fn capture_mut (normal) | main.rs:556:1:583:1 | exit fn capture_mut | | -| main.rs:556:18:583:1 | { ... } | main.rs:556:1:583:1 | exit fn capture_mut (normal) | | -| main.rs:557:5:557:18 | let ... = 1 | main.rs:557:17:557:17 | 1 | | -| main.rs:557:9:557:13 | mut x | main.rs:560:5:562:6 | let ... = ... | match | -| main.rs:557:13:557:13 | x | main.rs:557:9:557:13 | mut x | | -| main.rs:557:17:557:17 | 1 | main.rs:557:13:557:13 | x | | -| main.rs:560:5:562:6 | let ... = ... | main.rs:560:20:562:5 | \|...\| ... | | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:15 | ExprStmt | match | -| main.rs:560:20:562:5 | \|...\| ... | main.rs:560:9:560:16 | closure1 | | -| main.rs:560:20:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | -| main.rs:560:20:562:5 | exit \|...\| ... (normal) | main.rs:560:20:562:5 | exit \|...\| ... | | -| main.rs:560:23:562:5 | { ... } | main.rs:560:20:562:5 | exit \|...\| ... (normal) | | +| main.rs:556:1:565:1 | enter fn capture_immut | main.rs:557:5:557:16 | let ... = 100 | | +| main.rs:556:1:565:1 | exit fn capture_immut (normal) | main.rs:556:1:565:1 | exit fn capture_immut | | +| main.rs:556:20:565:1 | { ... } | main.rs:556:1:565:1 | exit fn capture_immut (normal) | | +| main.rs:557:5:557:16 | let ... = 100 | main.rs:557:13:557:15 | 100 | | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | | +| main.rs:557:9:557:9 | x | main.rs:560:5:562:6 | let ... = ... | match | +| main.rs:557:13:557:15 | 100 | main.rs:557:9:557:9 | x | | +| main.rs:560:5:562:6 | let ... = ... | main.rs:560:15:562:5 | \|...\| ... | | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | | +| main.rs:560:9:560:11 | cap | main.rs:563:5:563:10 | ExprStmt | match | +| main.rs:560:15:562:5 | \|...\| ... | main.rs:560:9:560:11 | cap | | +| main.rs:560:15:562:5 | enter \|...\| ... | main.rs:561:9:561:21 | ExprStmt | | +| main.rs:560:15:562:5 | exit \|...\| ... (normal) | main.rs:560:15:562:5 | exit \|...\| ... | | +| main.rs:560:18:562:5 | { ... } | main.rs:560:15:562:5 | exit \|...\| ... (normal) | | | main.rs:561:9:561:17 | print_i64 | main.rs:561:19:561:19 | x | | -| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:23:562:5 | { ... } | | +| main.rs:561:9:561:20 | print_i64(...) | main.rs:560:18:562:5 | { ... } | | | main.rs:561:9:561:21 | ExprStmt | main.rs:561:9:561:17 | print_i64 | | | main.rs:561:19:561:19 | x | main.rs:561:9:561:20 | print_i64(...) | | -| main.rs:563:5:563:12 | closure1 | main.rs:563:5:563:14 | closure1(...) | | -| main.rs:563:5:563:14 | closure1(...) | main.rs:564:5:564:17 | ExprStmt | | -| main.rs:563:5:563:15 | ExprStmt | main.rs:563:5:563:12 | closure1 | | +| main.rs:563:5:563:7 | cap | main.rs:563:5:563:9 | cap(...) | | +| main.rs:563:5:563:9 | cap(...) | main.rs:564:5:564:17 | ExprStmt | | +| main.rs:563:5:563:10 | ExprStmt | main.rs:563:5:563:7 | cap | | | main.rs:564:5:564:13 | print_i64 | main.rs:564:15:564:15 | x | | -| main.rs:564:5:564:16 | print_i64(...) | main.rs:566:5:566:18 | let ... = 2 | | +| main.rs:564:5:564:16 | print_i64(...) | main.rs:556:20:565:1 | { ... } | | | main.rs:564:5:564:17 | ExprStmt | main.rs:564:5:564:13 | print_i64 | | | main.rs:564:15:564:15 | x | main.rs:564:5:564:16 | print_i64(...) | | -| main.rs:566:5:566:18 | let ... = 2 | main.rs:566:17:566:17 | 2 | | -| main.rs:566:9:566:13 | mut y | main.rs:569:5:571:6 | let ... = ... | match | -| main.rs:566:13:566:13 | y | main.rs:566:9:566:13 | mut y | | -| main.rs:566:17:566:17 | 2 | main.rs:566:13:566:13 | y | | -| main.rs:569:5:571:6 | let ... = ... | main.rs:569:24:571:5 | \|...\| ... | | -| main.rs:569:9:569:20 | mut closure2 | main.rs:572:5:572:15 | ExprStmt | match | -| main.rs:569:13:569:20 | closure2 | main.rs:569:9:569:20 | mut closure2 | | -| main.rs:569:24:571:5 | \|...\| ... | main.rs:569:13:569:20 | closure2 | | -| main.rs:569:24:571:5 | enter \|...\| ... | main.rs:570:9:570:14 | ExprStmt | | -| main.rs:569:24:571:5 | exit \|...\| ... (normal) | main.rs:569:24:571:5 | exit \|...\| ... | | -| main.rs:569:27:571:5 | { ... } | main.rs:569:24:571:5 | exit \|...\| ... (normal) | | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | | -| main.rs:570:9:570:13 | ... = ... | main.rs:569:27:571:5 | { ... } | | -| main.rs:570:9:570:14 | ExprStmt | main.rs:570:9:570:9 | y | | -| main.rs:570:13:570:13 | 3 | main.rs:570:9:570:13 | ... = ... | | -| main.rs:572:5:572:12 | closure2 | main.rs:572:5:572:14 | closure2(...) | | -| main.rs:572:5:572:14 | closure2(...) | main.rs:573:5:573:17 | ExprStmt | | -| main.rs:572:5:572:15 | ExprStmt | main.rs:572:5:572:12 | closure2 | | -| main.rs:573:5:573:13 | print_i64 | main.rs:573:15:573:15 | y | | -| main.rs:573:5:573:16 | print_i64(...) | main.rs:575:5:575:18 | let ... = 2 | | -| main.rs:573:5:573:17 | ExprStmt | main.rs:573:5:573:13 | print_i64 | | -| main.rs:573:15:573:15 | y | main.rs:573:5:573:16 | print_i64(...) | | -| main.rs:575:5:575:18 | let ... = 2 | main.rs:575:17:575:17 | 2 | | -| main.rs:575:9:575:13 | mut z | main.rs:578:5:580:6 | let ... = ... | match | -| main.rs:575:13:575:13 | z | main.rs:575:9:575:13 | mut z | | -| main.rs:575:17:575:17 | 2 | main.rs:575:13:575:13 | z | | -| main.rs:578:5:580:6 | let ... = ... | main.rs:578:24:580:5 | \|...\| ... | | -| main.rs:578:9:578:20 | mut closure3 | main.rs:581:5:581:15 | ExprStmt | match | -| main.rs:578:13:578:20 | closure3 | main.rs:578:9:578:20 | mut closure3 | | -| main.rs:578:24:580:5 | \|...\| ... | main.rs:578:13:578:20 | closure3 | | -| main.rs:578:24:580:5 | enter \|...\| ... | main.rs:579:9:579:24 | ExprStmt | | -| main.rs:578:24:580:5 | exit \|...\| ... (normal) | main.rs:578:24:580:5 | exit \|...\| ... | | -| main.rs:578:27:580:5 | { ... } | main.rs:578:24:580:5 | exit \|...\| ... (normal) | | -| main.rs:579:9:579:9 | z | main.rs:579:22:579:22 | 1 | | -| main.rs:579:9:579:23 | z.add_assign(...) | main.rs:578:27:580:5 | { ... } | | -| main.rs:579:9:579:24 | ExprStmt | main.rs:579:9:579:9 | z | | -| main.rs:579:22:579:22 | 1 | main.rs:579:9:579:23 | z.add_assign(...) | | -| main.rs:581:5:581:12 | closure3 | main.rs:581:5:581:14 | closure3(...) | | -| main.rs:581:5:581:14 | closure3(...) | main.rs:582:5:582:17 | ExprStmt | | -| main.rs:581:5:581:15 | ExprStmt | main.rs:581:5:581:12 | closure3 | | -| main.rs:582:5:582:13 | print_i64 | main.rs:582:15:582:15 | z | | -| main.rs:582:5:582:16 | print_i64(...) | main.rs:556:18:583:1 | { ... } | | -| main.rs:582:5:582:17 | ExprStmt | main.rs:582:5:582:13 | print_i64 | | -| main.rs:582:15:582:15 | z | main.rs:582:5:582:16 | print_i64(...) | | -| main.rs:585:1:593:1 | enter fn async_block_capture | main.rs:586:5:586:23 | let ... = 0 | | -| main.rs:585:1:593:1 | exit fn async_block_capture (normal) | main.rs:585:1:593:1 | exit fn async_block_capture | | -| main.rs:585:32:593:1 | { ... } | main.rs:585:1:593:1 | exit fn async_block_capture (normal) | | -| main.rs:586:5:586:23 | let ... = 0 | main.rs:586:22:586:22 | 0 | | -| main.rs:586:9:586:13 | mut i | main.rs:587:5:589:6 | let ... = ... | match | -| main.rs:586:13:586:13 | i | main.rs:586:9:586:13 | mut i | | -| main.rs:586:22:586:22 | 0 | main.rs:586:13:586:13 | i | | -| main.rs:587:5:589:6 | let ... = ... | main.rs:587:17:589:5 | { ... } | | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | | -| main.rs:587:9:587:13 | block | main.rs:591:5:591:16 | ExprStmt | match | -| main.rs:587:17:589:5 | enter { ... } | main.rs:588:9:588:14 | ExprStmt | | -| main.rs:587:17:589:5 | exit { ... } (normal) | main.rs:587:17:589:5 | exit { ... } | | -| main.rs:587:17:589:5 | { ... } | main.rs:587:9:587:13 | block | | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | | -| main.rs:588:9:588:13 | ... = ... | main.rs:587:17:589:5 | exit { ... } (normal) | | -| main.rs:588:9:588:14 | ExprStmt | main.rs:588:9:588:9 | i | | -| main.rs:588:13:588:13 | 1 | main.rs:588:9:588:13 | ... = ... | | -| main.rs:591:5:591:9 | block | main.rs:591:5:591:15 | await block | | -| main.rs:591:5:591:15 | await block | main.rs:592:5:592:17 | ExprStmt | | -| main.rs:591:5:591:16 | ExprStmt | main.rs:591:5:591:9 | block | | -| main.rs:592:5:592:13 | print_i64 | main.rs:592:15:592:15 | i | | -| main.rs:592:5:592:16 | print_i64(...) | main.rs:585:32:593:1 | { ... } | | -| main.rs:592:5:592:17 | ExprStmt | main.rs:592:5:592:13 | print_i64 | | -| main.rs:592:15:592:15 | i | main.rs:592:5:592:16 | print_i64(...) | | -| main.rs:595:1:611:1 | enter fn phi | main.rs:595:8:595:8 | b | | -| main.rs:595:1:611:1 | exit fn phi (normal) | main.rs:595:1:611:1 | exit fn phi | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:14 | ...: bool | match | -| main.rs:595:8:595:14 | ...: bool | main.rs:596:5:596:18 | let ... = 1 | | -| main.rs:595:17:611:1 | { ... } | main.rs:595:1:611:1 | exit fn phi (normal) | | -| main.rs:596:5:596:18 | let ... = 1 | main.rs:596:17:596:17 | 1 | | -| main.rs:596:9:596:13 | mut x | main.rs:597:5:597:17 | ExprStmt | match | -| main.rs:596:13:596:13 | x | main.rs:596:9:596:13 | mut x | | -| main.rs:596:17:596:17 | 1 | main.rs:596:13:596:13 | x | | -| main.rs:597:5:597:13 | print_i64 | main.rs:597:15:597:15 | x | | -| main.rs:597:5:597:16 | print_i64(...) | main.rs:598:5:598:21 | ExprStmt | | -| main.rs:597:5:597:17 | ExprStmt | main.rs:597:5:597:13 | print_i64 | | -| main.rs:597:15:597:15 | x | main.rs:597:5:597:16 | print_i64(...) | | -| main.rs:598:5:598:13 | print_i64 | main.rs:598:15:598:15 | x | | -| main.rs:598:5:598:20 | print_i64(...) | main.rs:599:5:609:6 | let _ = ... | | -| main.rs:598:5:598:21 | ExprStmt | main.rs:598:5:598:13 | print_i64 | | -| main.rs:598:15:598:15 | x | main.rs:598:19:598:19 | 1 | | -| main.rs:598:15:598:19 | ... + ... | main.rs:598:5:598:20 | print_i64(...) | | -| main.rs:598:19:598:19 | 1 | main.rs:598:15:598:19 | ... + ... | | -| main.rs:599:5:609:6 | let _ = ... | main.rs:600:16:600:16 | b | | -| main.rs:600:9:600:9 | _ | main.rs:610:5:610:17 | ExprStmt | match | -| main.rs:600:13:609:5 | if b {...} else {...} | main.rs:600:9:600:9 | _ | | -| main.rs:600:16:600:16 | b | main.rs:602:9:602:14 | ExprStmt | true | -| main.rs:600:16:600:16 | b | main.rs:606:9:606:14 | ExprStmt | false | -| main.rs:601:5:605:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | | -| main.rs:602:9:602:13 | ... = ... | main.rs:603:9:603:21 | ExprStmt | | -| main.rs:602:9:602:14 | ExprStmt | main.rs:602:9:602:9 | x | | -| main.rs:602:13:602:13 | 2 | main.rs:602:9:602:13 | ... = ... | | -| main.rs:603:9:603:17 | print_i64 | main.rs:603:19:603:19 | x | | -| main.rs:603:9:603:20 | print_i64(...) | main.rs:604:9:604:25 | ExprStmt | | -| main.rs:603:9:603:21 | ExprStmt | main.rs:603:9:603:17 | print_i64 | | -| main.rs:603:19:603:19 | x | main.rs:603:9:603:20 | print_i64(...) | | -| main.rs:604:9:604:17 | print_i64 | main.rs:604:19:604:19 | x | | -| main.rs:604:9:604:24 | print_i64(...) | main.rs:601:5:605:5 | { ... } | | -| main.rs:604:9:604:25 | ExprStmt | main.rs:604:9:604:17 | print_i64 | | -| main.rs:604:19:604:19 | x | main.rs:604:23:604:23 | 1 | | -| main.rs:604:19:604:23 | ... + ... | main.rs:604:9:604:24 | print_i64(...) | | -| main.rs:604:23:604:23 | 1 | main.rs:604:19:604:23 | ... + ... | | -| main.rs:605:12:609:5 | { ... } | main.rs:600:13:609:5 | if b {...} else {...} | | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | | -| main.rs:606:9:606:13 | ... = ... | main.rs:607:9:607:21 | ExprStmt | | -| main.rs:606:9:606:14 | ExprStmt | main.rs:606:9:606:9 | x | | -| main.rs:606:13:606:13 | 3 | main.rs:606:9:606:13 | ... = ... | | -| main.rs:607:9:607:17 | print_i64 | main.rs:607:19:607:19 | x | | -| main.rs:607:9:607:20 | print_i64(...) | main.rs:608:9:608:25 | ExprStmt | | -| main.rs:607:9:607:21 | ExprStmt | main.rs:607:9:607:17 | print_i64 | | -| main.rs:607:19:607:19 | x | main.rs:607:9:607:20 | print_i64(...) | | -| main.rs:608:9:608:17 | print_i64 | main.rs:608:19:608:19 | x | | -| main.rs:608:9:608:24 | print_i64(...) | main.rs:605:12:609:5 | { ... } | | -| main.rs:608:9:608:25 | ExprStmt | main.rs:608:9:608:17 | print_i64 | | -| main.rs:608:19:608:19 | x | main.rs:608:23:608:23 | 1 | | -| main.rs:608:19:608:23 | ... + ... | main.rs:608:9:608:24 | print_i64(...) | | -| main.rs:608:23:608:23 | 1 | main.rs:608:19:608:23 | ... + ... | | -| main.rs:610:5:610:13 | print_i64 | main.rs:610:15:610:15 | x | | -| main.rs:610:5:610:16 | print_i64(...) | main.rs:595:17:611:1 | { ... } | | -| main.rs:610:5:610:17 | ExprStmt | main.rs:610:5:610:13 | print_i64 | | -| main.rs:610:15:610:15 | x | main.rs:610:5:610:16 | print_i64(...) | | -| main.rs:613:1:630:1 | enter fn phi_read | main.rs:613:13:613:14 | b1 | | -| main.rs:613:1:630:1 | exit fn phi_read (normal) | main.rs:613:1:630:1 | exit fn phi_read | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:20 | ...: bool | match | -| main.rs:613:13:613:20 | ...: bool | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:30 | ...: bool | match | -| main.rs:613:23:613:30 | ...: bool | main.rs:614:5:614:14 | let ... = 1 | | -| main.rs:613:33:630:1 | { ... } | main.rs:613:1:630:1 | exit fn phi_read (normal) | | -| main.rs:614:5:614:14 | let ... = 1 | main.rs:614:13:614:13 | 1 | | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | | -| main.rs:614:9:614:9 | x | main.rs:615:5:621:6 | let _ = ... | match | -| main.rs:614:13:614:13 | 1 | main.rs:614:9:614:9 | x | | -| main.rs:615:5:621:6 | let _ = ... | main.rs:616:16:616:17 | b1 | | -| main.rs:616:9:616:9 | _ | main.rs:623:5:629:6 | let _ = ... | match | -| main.rs:616:13:621:5 | if b1 {...} else {...} | main.rs:616:9:616:9 | _ | | -| main.rs:616:16:616:17 | b1 | main.rs:618:9:618:21 | ExprStmt | true | -| main.rs:616:16:616:17 | b1 | main.rs:620:9:620:21 | ExprStmt | false | -| main.rs:617:5:619:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | +| main.rs:567:1:594:1 | enter fn capture_mut | main.rs:568:5:568:18 | let ... = 1 | | +| main.rs:567:1:594:1 | exit fn capture_mut (normal) | main.rs:567:1:594:1 | exit fn capture_mut | | +| main.rs:567:18:594:1 | { ... } | main.rs:567:1:594:1 | exit fn capture_mut (normal) | | +| main.rs:568:5:568:18 | let ... = 1 | main.rs:568:17:568:17 | 1 | | +| main.rs:568:9:568:13 | mut x | main.rs:571:5:573:6 | let ... = ... | match | +| main.rs:568:13:568:13 | x | main.rs:568:9:568:13 | mut x | | +| main.rs:568:17:568:17 | 1 | main.rs:568:13:568:13 | x | | +| main.rs:571:5:573:6 | let ... = ... | main.rs:571:20:573:5 | \|...\| ... | | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:15 | ExprStmt | match | +| main.rs:571:20:573:5 | \|...\| ... | main.rs:571:9:571:16 | closure1 | | +| main.rs:571:20:573:5 | enter \|...\| ... | main.rs:572:9:572:21 | ExprStmt | | +| main.rs:571:20:573:5 | exit \|...\| ... (normal) | main.rs:571:20:573:5 | exit \|...\| ... | | +| main.rs:571:23:573:5 | { ... } | main.rs:571:20:573:5 | exit \|...\| ... (normal) | | +| main.rs:572:9:572:17 | print_i64 | main.rs:572:19:572:19 | x | | +| main.rs:572:9:572:20 | print_i64(...) | main.rs:571:23:573:5 | { ... } | | +| main.rs:572:9:572:21 | ExprStmt | main.rs:572:9:572:17 | print_i64 | | +| main.rs:572:19:572:19 | x | main.rs:572:9:572:20 | print_i64(...) | | +| main.rs:574:5:574:12 | closure1 | main.rs:574:5:574:14 | closure1(...) | | +| main.rs:574:5:574:14 | closure1(...) | main.rs:575:5:575:17 | ExprStmt | | +| main.rs:574:5:574:15 | ExprStmt | main.rs:574:5:574:12 | closure1 | | +| main.rs:575:5:575:13 | print_i64 | main.rs:575:15:575:15 | x | | +| main.rs:575:5:575:16 | print_i64(...) | main.rs:577:5:577:18 | let ... = 2 | | +| main.rs:575:5:575:17 | ExprStmt | main.rs:575:5:575:13 | print_i64 | | +| main.rs:575:15:575:15 | x | main.rs:575:5:575:16 | print_i64(...) | | +| main.rs:577:5:577:18 | let ... = 2 | main.rs:577:17:577:17 | 2 | | +| main.rs:577:9:577:13 | mut y | main.rs:580:5:582:6 | let ... = ... | match | +| main.rs:577:13:577:13 | y | main.rs:577:9:577:13 | mut y | | +| main.rs:577:17:577:17 | 2 | main.rs:577:13:577:13 | y | | +| main.rs:580:5:582:6 | let ... = ... | main.rs:580:24:582:5 | \|...\| ... | | +| main.rs:580:9:580:20 | mut closure2 | main.rs:583:5:583:15 | ExprStmt | match | +| main.rs:580:13:580:20 | closure2 | main.rs:580:9:580:20 | mut closure2 | | +| main.rs:580:24:582:5 | \|...\| ... | main.rs:580:13:580:20 | closure2 | | +| main.rs:580:24:582:5 | enter \|...\| ... | main.rs:581:9:581:14 | ExprStmt | | +| main.rs:580:24:582:5 | exit \|...\| ... (normal) | main.rs:580:24:582:5 | exit \|...\| ... | | +| main.rs:580:27:582:5 | { ... } | main.rs:580:24:582:5 | exit \|...\| ... (normal) | | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | | +| main.rs:581:9:581:13 | ... = ... | main.rs:580:27:582:5 | { ... } | | +| main.rs:581:9:581:14 | ExprStmt | main.rs:581:9:581:9 | y | | +| main.rs:581:13:581:13 | 3 | main.rs:581:9:581:13 | ... = ... | | +| main.rs:583:5:583:12 | closure2 | main.rs:583:5:583:14 | closure2(...) | | +| main.rs:583:5:583:14 | closure2(...) | main.rs:584:5:584:17 | ExprStmt | | +| main.rs:583:5:583:15 | ExprStmt | main.rs:583:5:583:12 | closure2 | | +| main.rs:584:5:584:13 | print_i64 | main.rs:584:15:584:15 | y | | +| main.rs:584:5:584:16 | print_i64(...) | main.rs:586:5:586:18 | let ... = 2 | | +| main.rs:584:5:584:17 | ExprStmt | main.rs:584:5:584:13 | print_i64 | | +| main.rs:584:15:584:15 | y | main.rs:584:5:584:16 | print_i64(...) | | +| main.rs:586:5:586:18 | let ... = 2 | main.rs:586:17:586:17 | 2 | | +| main.rs:586:9:586:13 | mut z | main.rs:589:5:591:6 | let ... = ... | match | +| main.rs:586:13:586:13 | z | main.rs:586:9:586:13 | mut z | | +| main.rs:586:17:586:17 | 2 | main.rs:586:13:586:13 | z | | +| main.rs:589:5:591:6 | let ... = ... | main.rs:589:24:591:5 | \|...\| ... | | +| main.rs:589:9:589:20 | mut closure3 | main.rs:592:5:592:15 | ExprStmt | match | +| main.rs:589:13:589:20 | closure3 | main.rs:589:9:589:20 | mut closure3 | | +| main.rs:589:24:591:5 | \|...\| ... | main.rs:589:13:589:20 | closure3 | | +| main.rs:589:24:591:5 | enter \|...\| ... | main.rs:590:9:590:24 | ExprStmt | | +| main.rs:589:24:591:5 | exit \|...\| ... (normal) | main.rs:589:24:591:5 | exit \|...\| ... | | +| main.rs:589:27:591:5 | { ... } | main.rs:589:24:591:5 | exit \|...\| ... (normal) | | +| main.rs:590:9:590:9 | z | main.rs:590:22:590:22 | 1 | | +| main.rs:590:9:590:23 | z.add_assign(...) | main.rs:589:27:591:5 | { ... } | | +| main.rs:590:9:590:24 | ExprStmt | main.rs:590:9:590:9 | z | | +| main.rs:590:22:590:22 | 1 | main.rs:590:9:590:23 | z.add_assign(...) | | +| main.rs:592:5:592:12 | closure3 | main.rs:592:5:592:14 | closure3(...) | | +| main.rs:592:5:592:14 | closure3(...) | main.rs:593:5:593:17 | ExprStmt | | +| main.rs:592:5:592:15 | ExprStmt | main.rs:592:5:592:12 | closure3 | | +| main.rs:593:5:593:13 | print_i64 | main.rs:593:15:593:15 | z | | +| main.rs:593:5:593:16 | print_i64(...) | main.rs:567:18:594:1 | { ... } | | +| main.rs:593:5:593:17 | ExprStmt | main.rs:593:5:593:13 | print_i64 | | +| main.rs:593:15:593:15 | z | main.rs:593:5:593:16 | print_i64(...) | | +| main.rs:596:1:604:1 | enter fn async_block_capture | main.rs:597:5:597:23 | let ... = 0 | | +| main.rs:596:1:604:1 | exit fn async_block_capture (normal) | main.rs:596:1:604:1 | exit fn async_block_capture | | +| main.rs:596:32:604:1 | { ... } | main.rs:596:1:604:1 | exit fn async_block_capture (normal) | | +| main.rs:597:5:597:23 | let ... = 0 | main.rs:597:22:597:22 | 0 | | +| main.rs:597:9:597:13 | mut i | main.rs:598:5:600:6 | let ... = ... | match | +| main.rs:597:13:597:13 | i | main.rs:597:9:597:13 | mut i | | +| main.rs:597:22:597:22 | 0 | main.rs:597:13:597:13 | i | | +| main.rs:598:5:600:6 | let ... = ... | main.rs:598:17:600:5 | { ... } | | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | | +| main.rs:598:9:598:13 | block | main.rs:602:5:602:16 | ExprStmt | match | +| main.rs:598:17:600:5 | enter { ... } | main.rs:599:9:599:14 | ExprStmt | | +| main.rs:598:17:600:5 | exit { ... } (normal) | main.rs:598:17:600:5 | exit { ... } | | +| main.rs:598:17:600:5 | { ... } | main.rs:598:9:598:13 | block | | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | | +| main.rs:599:9:599:13 | ... = ... | main.rs:598:17:600:5 | exit { ... } (normal) | | +| main.rs:599:9:599:14 | ExprStmt | main.rs:599:9:599:9 | i | | +| main.rs:599:13:599:13 | 1 | main.rs:599:9:599:13 | ... = ... | | +| main.rs:602:5:602:9 | block | main.rs:602:5:602:15 | await block | | +| main.rs:602:5:602:15 | await block | main.rs:603:5:603:17 | ExprStmt | | +| main.rs:602:5:602:16 | ExprStmt | main.rs:602:5:602:9 | block | | +| main.rs:603:5:603:13 | print_i64 | main.rs:603:15:603:15 | i | | +| main.rs:603:5:603:16 | print_i64(...) | main.rs:596:32:604:1 | { ... } | | +| main.rs:603:5:603:17 | ExprStmt | main.rs:603:5:603:13 | print_i64 | | +| main.rs:603:15:603:15 | i | main.rs:603:5:603:16 | print_i64(...) | | +| main.rs:606:1:622:1 | enter fn phi | main.rs:606:8:606:8 | b | | +| main.rs:606:1:622:1 | exit fn phi (normal) | main.rs:606:1:622:1 | exit fn phi | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:14 | ...: bool | match | +| main.rs:606:8:606:14 | ...: bool | main.rs:607:5:607:18 | let ... = 1 | | +| main.rs:606:17:622:1 | { ... } | main.rs:606:1:622:1 | exit fn phi (normal) | | +| main.rs:607:5:607:18 | let ... = 1 | main.rs:607:17:607:17 | 1 | | +| main.rs:607:9:607:13 | mut x | main.rs:608:5:608:17 | ExprStmt | match | +| main.rs:607:13:607:13 | x | main.rs:607:9:607:13 | mut x | | +| main.rs:607:17:607:17 | 1 | main.rs:607:13:607:13 | x | | +| main.rs:608:5:608:13 | print_i64 | main.rs:608:15:608:15 | x | | +| main.rs:608:5:608:16 | print_i64(...) | main.rs:609:5:609:21 | ExprStmt | | +| main.rs:608:5:608:17 | ExprStmt | main.rs:608:5:608:13 | print_i64 | | +| main.rs:608:15:608:15 | x | main.rs:608:5:608:16 | print_i64(...) | | +| main.rs:609:5:609:13 | print_i64 | main.rs:609:15:609:15 | x | | +| main.rs:609:5:609:20 | print_i64(...) | main.rs:610:5:620:6 | let _ = ... | | +| main.rs:609:5:609:21 | ExprStmt | main.rs:609:5:609:13 | print_i64 | | +| main.rs:609:15:609:15 | x | main.rs:609:19:609:19 | 1 | | +| main.rs:609:15:609:19 | ... + ... | main.rs:609:5:609:20 | print_i64(...) | | +| main.rs:609:19:609:19 | 1 | main.rs:609:15:609:19 | ... + ... | | +| main.rs:610:5:620:6 | let _ = ... | main.rs:611:16:611:16 | b | | +| main.rs:611:9:611:9 | _ | main.rs:621:5:621:17 | ExprStmt | match | +| main.rs:611:13:620:5 | if b {...} else {...} | main.rs:611:9:611:9 | _ | | +| main.rs:611:16:611:16 | b | main.rs:613:9:613:14 | ExprStmt | true | +| main.rs:611:16:611:16 | b | main.rs:617:9:617:14 | ExprStmt | false | +| main.rs:612:5:616:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | | +| main.rs:613:9:613:13 | ... = ... | main.rs:614:9:614:21 | ExprStmt | | +| main.rs:613:9:613:14 | ExprStmt | main.rs:613:9:613:9 | x | | +| main.rs:613:13:613:13 | 2 | main.rs:613:9:613:13 | ... = ... | | +| main.rs:614:9:614:17 | print_i64 | main.rs:614:19:614:19 | x | | +| main.rs:614:9:614:20 | print_i64(...) | main.rs:615:9:615:25 | ExprStmt | | +| main.rs:614:9:614:21 | ExprStmt | main.rs:614:9:614:17 | print_i64 | | +| main.rs:614:19:614:19 | x | main.rs:614:9:614:20 | print_i64(...) | | +| main.rs:615:9:615:17 | print_i64 | main.rs:615:19:615:19 | x | | +| main.rs:615:9:615:24 | print_i64(...) | main.rs:612:5:616:5 | { ... } | | +| main.rs:615:9:615:25 | ExprStmt | main.rs:615:9:615:17 | print_i64 | | +| main.rs:615:19:615:19 | x | main.rs:615:23:615:23 | 1 | | +| main.rs:615:19:615:23 | ... + ... | main.rs:615:9:615:24 | print_i64(...) | | +| main.rs:615:23:615:23 | 1 | main.rs:615:19:615:23 | ... + ... | | +| main.rs:616:12:620:5 | { ... } | main.rs:611:13:620:5 | if b {...} else {...} | | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | | +| main.rs:617:9:617:13 | ... = ... | main.rs:618:9:618:21 | ExprStmt | | +| main.rs:617:9:617:14 | ExprStmt | main.rs:617:9:617:9 | x | | +| main.rs:617:13:617:13 | 3 | main.rs:617:9:617:13 | ... = ... | | | main.rs:618:9:618:17 | print_i64 | main.rs:618:19:618:19 | x | | -| main.rs:618:9:618:20 | print_i64(...) | main.rs:617:5:619:5 | { ... } | | +| main.rs:618:9:618:20 | print_i64(...) | main.rs:619:9:619:25 | ExprStmt | | | main.rs:618:9:618:21 | ExprStmt | main.rs:618:9:618:17 | print_i64 | | | main.rs:618:19:618:19 | x | main.rs:618:9:618:20 | print_i64(...) | | -| main.rs:619:12:621:5 | { ... } | main.rs:616:13:621:5 | if b1 {...} else {...} | | -| main.rs:620:9:620:17 | print_i64 | main.rs:620:19:620:19 | x | | -| main.rs:620:9:620:20 | print_i64(...) | main.rs:619:12:621:5 | { ... } | | -| main.rs:620:9:620:21 | ExprStmt | main.rs:620:9:620:17 | print_i64 | | -| main.rs:620:19:620:19 | x | main.rs:620:9:620:20 | print_i64(...) | | -| main.rs:623:5:629:6 | let _ = ... | main.rs:624:16:624:17 | b2 | | -| main.rs:624:9:624:9 | _ | main.rs:613:33:630:1 | { ... } | match | -| main.rs:624:13:629:5 | if b2 {...} else {...} | main.rs:624:9:624:9 | _ | | -| main.rs:624:16:624:17 | b2 | main.rs:626:9:626:21 | ExprStmt | true | -| main.rs:624:16:624:17 | b2 | main.rs:628:9:628:21 | ExprStmt | false | -| main.rs:625:5:627:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:626:9:626:17 | print_i64 | main.rs:626:19:626:19 | x | | -| main.rs:626:9:626:20 | print_i64(...) | main.rs:625:5:627:5 | { ... } | | -| main.rs:626:9:626:21 | ExprStmt | main.rs:626:9:626:17 | print_i64 | | -| main.rs:626:19:626:19 | x | main.rs:626:9:626:20 | print_i64(...) | | -| main.rs:627:12:629:5 | { ... } | main.rs:624:13:629:5 | if b2 {...} else {...} | | -| main.rs:628:9:628:17 | print_i64 | main.rs:628:19:628:19 | x | | -| main.rs:628:9:628:20 | print_i64(...) | main.rs:627:12:629:5 | { ... } | | -| main.rs:628:9:628:21 | ExprStmt | main.rs:628:9:628:17 | print_i64 | | -| main.rs:628:19:628:19 | x | main.rs:628:9:628:20 | print_i64(...) | | -| main.rs:637:5:639:5 | enter fn my_get | main.rs:637:20:637:23 | self | | -| main.rs:637:5:639:5 | exit fn my_get (normal) | main.rs:637:5:639:5 | exit fn my_get | | -| main.rs:637:15:637:23 | SelfParam | main.rs:638:9:638:24 | ExprStmt | | -| main.rs:637:20:637:23 | self | main.rs:637:15:637:23 | SelfParam | | -| main.rs:638:9:638:23 | return ... | main.rs:637:5:639:5 | exit fn my_get (normal) | return | -| main.rs:638:9:638:24 | ExprStmt | main.rs:638:16:638:19 | self | | -| main.rs:638:16:638:19 | self | main.rs:638:16:638:23 | self.val | | -| main.rs:638:16:638:23 | self.val | main.rs:638:9:638:23 | return ... | | -| main.rs:641:5:643:5 | enter fn id | main.rs:641:11:641:14 | self | | -| main.rs:641:5:643:5 | exit fn id (normal) | main.rs:641:5:643:5 | exit fn id | | -| main.rs:641:11:641:14 | SelfParam | main.rs:642:9:642:12 | self | | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | SelfParam | | -| main.rs:641:25:643:5 | { ... } | main.rs:641:5:643:5 | exit fn id (normal) | | -| main.rs:642:9:642:12 | self | main.rs:641:25:643:5 | { ... } | | -| main.rs:645:5:652:5 | enter fn my_method | main.rs:645:23:645:26 | self | | -| main.rs:645:5:652:5 | exit fn my_method (normal) | main.rs:645:5:652:5 | exit fn my_method | | -| main.rs:645:18:645:26 | SelfParam | main.rs:646:9:649:10 | let ... = ... | | -| main.rs:645:23:645:26 | self | main.rs:645:18:645:26 | SelfParam | | -| main.rs:645:29:652:5 | { ... } | main.rs:645:5:652:5 | exit fn my_method (normal) | | -| main.rs:646:9:649:10 | let ... = ... | main.rs:646:21:649:9 | \|...\| ... | | -| main.rs:646:13:646:17 | mut f | main.rs:650:9:650:13 | ExprStmt | match | -| main.rs:646:17:646:17 | f | main.rs:646:13:646:17 | mut f | | -| main.rs:646:21:649:9 | \|...\| ... | main.rs:646:17:646:17 | f | | -| main.rs:646:21:649:9 | enter \|...\| ... | main.rs:646:22:646:22 | n | | -| main.rs:646:21:649:9 | exit \|...\| ... (normal) | main.rs:646:21:649:9 | exit \|...\| ... | | -| main.rs:646:22:646:22 | ... | main.rs:648:13:648:26 | ExprStmt | | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | ... | match | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | | -| main.rs:646:25:649:9 | { ... } | main.rs:646:21:649:9 | exit \|...\| ... (normal) | | -| main.rs:648:13:648:16 | self | main.rs:648:13:648:20 | self.val | | -| main.rs:648:13:648:20 | self.val | main.rs:648:25:648:25 | n | | -| main.rs:648:13:648:25 | ... += ... | main.rs:646:25:649:9 | { ... } | | -| main.rs:648:13:648:26 | ExprStmt | main.rs:648:13:648:16 | self | | -| main.rs:648:25:648:25 | n | main.rs:648:13:648:25 | ... += ... | | -| main.rs:650:9:650:9 | f | main.rs:650:11:650:11 | 3 | | -| main.rs:650:9:650:12 | f(...) | main.rs:651:9:651:13 | ExprStmt | | -| main.rs:650:9:650:13 | ExprStmt | main.rs:650:9:650:9 | f | | -| main.rs:650:11:650:11 | 3 | main.rs:650:9:650:12 | f(...) | | -| main.rs:651:9:651:9 | f | main.rs:651:11:651:11 | 4 | | -| main.rs:651:9:651:12 | f(...) | main.rs:645:29:652:5 | { ... } | | -| main.rs:651:9:651:13 | ExprStmt | main.rs:651:9:651:9 | f | | -| main.rs:651:11:651:11 | 4 | main.rs:651:9:651:12 | f(...) | | -| main.rs:655:1:662:1 | enter fn structs | main.rs:656:5:656:36 | let ... = ... | | -| main.rs:655:1:662:1 | exit fn structs (normal) | main.rs:655:1:662:1 | exit fn structs | | -| main.rs:655:14:662:1 | { ... } | main.rs:655:1:662:1 | exit fn structs (normal) | | -| main.rs:656:5:656:36 | let ... = ... | main.rs:656:33:656:33 | 1 | | -| main.rs:656:9:656:13 | mut a | main.rs:657:5:657:26 | ExprStmt | match | -| main.rs:656:13:656:13 | a | main.rs:656:9:656:13 | mut a | | -| main.rs:656:17:656:35 | MyStruct {...} | main.rs:656:13:656:13 | a | | -| main.rs:656:33:656:33 | 1 | main.rs:656:17:656:35 | MyStruct {...} | | -| main.rs:657:5:657:13 | print_i64 | main.rs:657:15:657:15 | a | | -| main.rs:657:5:657:25 | print_i64(...) | main.rs:658:5:658:14 | ExprStmt | | -| main.rs:657:5:657:26 | ExprStmt | main.rs:657:5:657:13 | print_i64 | | -| main.rs:657:15:657:15 | a | main.rs:657:15:657:24 | a.my_get() | | -| main.rs:657:15:657:24 | a.my_get() | main.rs:657:5:657:25 | print_i64(...) | | -| main.rs:658:5:658:5 | a | main.rs:658:5:658:9 | a.val | | -| main.rs:658:5:658:9 | a.val | main.rs:658:13:658:13 | 5 | | -| main.rs:658:5:658:13 | ... = ... | main.rs:659:5:659:26 | ExprStmt | | -| main.rs:658:5:658:14 | ExprStmt | main.rs:658:5:658:5 | a | | -| main.rs:658:13:658:13 | 5 | main.rs:658:5:658:13 | ... = ... | | -| main.rs:659:5:659:13 | print_i64 | main.rs:659:15:659:15 | a | | -| main.rs:659:5:659:25 | print_i64(...) | main.rs:660:5:660:28 | ExprStmt | | -| main.rs:659:5:659:26 | ExprStmt | main.rs:659:5:659:13 | print_i64 | | -| main.rs:659:15:659:15 | a | main.rs:659:15:659:24 | a.my_get() | | -| main.rs:659:15:659:24 | a.my_get() | main.rs:659:5:659:25 | print_i64(...) | | -| main.rs:660:5:660:5 | a | main.rs:660:25:660:25 | 2 | | -| main.rs:660:5:660:27 | ... = ... | main.rs:661:5:661:26 | ExprStmt | | -| main.rs:660:5:660:28 | ExprStmt | main.rs:660:5:660:5 | a | | -| main.rs:660:9:660:27 | MyStruct {...} | main.rs:660:5:660:27 | ... = ... | | -| main.rs:660:25:660:25 | 2 | main.rs:660:9:660:27 | MyStruct {...} | | -| main.rs:661:5:661:13 | print_i64 | main.rs:661:15:661:15 | a | | -| main.rs:661:5:661:25 | print_i64(...) | main.rs:655:14:662:1 | { ... } | | -| main.rs:661:5:661:26 | ExprStmt | main.rs:661:5:661:13 | print_i64 | | -| main.rs:661:15:661:15 | a | main.rs:661:15:661:24 | a.my_get() | | -| main.rs:661:15:661:24 | a.my_get() | main.rs:661:5:661:25 | print_i64(...) | | -| main.rs:664:1:671:1 | enter fn arrays | main.rs:665:5:665:26 | let ... = ... | | -| main.rs:664:1:671:1 | exit fn arrays (normal) | main.rs:664:1:671:1 | exit fn arrays | | -| main.rs:664:13:671:1 | { ... } | main.rs:664:1:671:1 | exit fn arrays (normal) | | -| main.rs:665:5:665:26 | let ... = ... | main.rs:665:18:665:18 | 1 | | -| main.rs:665:9:665:13 | mut a | main.rs:666:5:666:20 | ExprStmt | match | -| main.rs:665:13:665:13 | a | main.rs:665:9:665:13 | mut a | | -| main.rs:665:17:665:25 | [...] | main.rs:665:13:665:13 | a | | -| main.rs:665:18:665:18 | 1 | main.rs:665:21:665:21 | 2 | | -| main.rs:665:21:665:21 | 2 | main.rs:665:24:665:24 | 3 | | -| main.rs:665:24:665:24 | 3 | main.rs:665:17:665:25 | [...] | | -| main.rs:666:5:666:13 | print_i64 | main.rs:666:15:666:15 | a | | -| main.rs:666:5:666:19 | print_i64(...) | main.rs:667:5:667:13 | ExprStmt | | -| main.rs:666:5:666:20 | ExprStmt | main.rs:666:5:666:13 | print_i64 | | -| main.rs:666:15:666:15 | a | main.rs:666:17:666:17 | 0 | | -| main.rs:666:15:666:18 | a[0] | main.rs:666:5:666:19 | print_i64(...) | | -| main.rs:666:17:666:17 | 0 | main.rs:666:15:666:18 | a[0] | | -| main.rs:667:5:667:5 | a | main.rs:667:7:667:7 | 1 | | -| main.rs:667:5:667:8 | a[1] | main.rs:667:12:667:12 | 5 | | -| main.rs:667:5:667:12 | ... = ... | main.rs:668:5:668:20 | ExprStmt | | -| main.rs:667:5:667:13 | ExprStmt | main.rs:667:5:667:5 | a | | -| main.rs:667:7:667:7 | 1 | main.rs:667:5:667:8 | a[1] | | -| main.rs:667:12:667:12 | 5 | main.rs:667:5:667:12 | ... = ... | | +| main.rs:619:9:619:17 | print_i64 | main.rs:619:19:619:19 | x | | +| main.rs:619:9:619:24 | print_i64(...) | main.rs:616:12:620:5 | { ... } | | +| main.rs:619:9:619:25 | ExprStmt | main.rs:619:9:619:17 | print_i64 | | +| main.rs:619:19:619:19 | x | main.rs:619:23:619:23 | 1 | | +| main.rs:619:19:619:23 | ... + ... | main.rs:619:9:619:24 | print_i64(...) | | +| main.rs:619:23:619:23 | 1 | main.rs:619:19:619:23 | ... + ... | | +| main.rs:621:5:621:13 | print_i64 | main.rs:621:15:621:15 | x | | +| main.rs:621:5:621:16 | print_i64(...) | main.rs:606:17:622:1 | { ... } | | +| main.rs:621:5:621:17 | ExprStmt | main.rs:621:5:621:13 | print_i64 | | +| main.rs:621:15:621:15 | x | main.rs:621:5:621:16 | print_i64(...) | | +| main.rs:624:1:641:1 | enter fn phi_read | main.rs:624:13:624:14 | b1 | | +| main.rs:624:1:641:1 | exit fn phi_read (normal) | main.rs:624:1:641:1 | exit fn phi_read | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:20 | ...: bool | match | +| main.rs:624:13:624:20 | ...: bool | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:30 | ...: bool | match | +| main.rs:624:23:624:30 | ...: bool | main.rs:625:5:625:14 | let ... = 1 | | +| main.rs:624:33:641:1 | { ... } | main.rs:624:1:641:1 | exit fn phi_read (normal) | | +| main.rs:625:5:625:14 | let ... = 1 | main.rs:625:13:625:13 | 1 | | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | | +| main.rs:625:9:625:9 | x | main.rs:626:5:632:6 | let _ = ... | match | +| main.rs:625:13:625:13 | 1 | main.rs:625:9:625:9 | x | | +| main.rs:626:5:632:6 | let _ = ... | main.rs:627:16:627:17 | b1 | | +| main.rs:627:9:627:9 | _ | main.rs:634:5:640:6 | let _ = ... | match | +| main.rs:627:13:632:5 | if b1 {...} else {...} | main.rs:627:9:627:9 | _ | | +| main.rs:627:16:627:17 | b1 | main.rs:629:9:629:21 | ExprStmt | true | +| main.rs:627:16:627:17 | b1 | main.rs:631:9:631:21 | ExprStmt | false | +| main.rs:628:5:630:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:629:9:629:17 | print_i64 | main.rs:629:19:629:19 | x | | +| main.rs:629:9:629:20 | print_i64(...) | main.rs:628:5:630:5 | { ... } | | +| main.rs:629:9:629:21 | ExprStmt | main.rs:629:9:629:17 | print_i64 | | +| main.rs:629:19:629:19 | x | main.rs:629:9:629:20 | print_i64(...) | | +| main.rs:630:12:632:5 | { ... } | main.rs:627:13:632:5 | if b1 {...} else {...} | | +| main.rs:631:9:631:17 | print_i64 | main.rs:631:19:631:19 | x | | +| main.rs:631:9:631:20 | print_i64(...) | main.rs:630:12:632:5 | { ... } | | +| main.rs:631:9:631:21 | ExprStmt | main.rs:631:9:631:17 | print_i64 | | +| main.rs:631:19:631:19 | x | main.rs:631:9:631:20 | print_i64(...) | | +| main.rs:634:5:640:6 | let _ = ... | main.rs:635:16:635:17 | b2 | | +| main.rs:635:9:635:9 | _ | main.rs:624:33:641:1 | { ... } | match | +| main.rs:635:13:640:5 | if b2 {...} else {...} | main.rs:635:9:635:9 | _ | | +| main.rs:635:16:635:17 | b2 | main.rs:637:9:637:21 | ExprStmt | true | +| main.rs:635:16:635:17 | b2 | main.rs:639:9:639:21 | ExprStmt | false | +| main.rs:636:5:638:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:637:9:637:17 | print_i64 | main.rs:637:19:637:19 | x | | +| main.rs:637:9:637:20 | print_i64(...) | main.rs:636:5:638:5 | { ... } | | +| main.rs:637:9:637:21 | ExprStmt | main.rs:637:9:637:17 | print_i64 | | +| main.rs:637:19:637:19 | x | main.rs:637:9:637:20 | print_i64(...) | | +| main.rs:638:12:640:5 | { ... } | main.rs:635:13:640:5 | if b2 {...} else {...} | | +| main.rs:639:9:639:17 | print_i64 | main.rs:639:19:639:19 | x | | +| main.rs:639:9:639:20 | print_i64(...) | main.rs:638:12:640:5 | { ... } | | +| main.rs:639:9:639:21 | ExprStmt | main.rs:639:9:639:17 | print_i64 | | +| main.rs:639:19:639:19 | x | main.rs:639:9:639:20 | print_i64(...) | | +| main.rs:648:5:650:5 | enter fn my_get | main.rs:648:20:648:23 | self | | +| main.rs:648:5:650:5 | exit fn my_get (normal) | main.rs:648:5:650:5 | exit fn my_get | | +| main.rs:648:15:648:23 | SelfParam | main.rs:649:9:649:24 | ExprStmt | | +| main.rs:648:20:648:23 | self | main.rs:648:15:648:23 | SelfParam | | +| main.rs:649:9:649:23 | return ... | main.rs:648:5:650:5 | exit fn my_get (normal) | return | +| main.rs:649:9:649:24 | ExprStmt | main.rs:649:16:649:19 | self | | +| main.rs:649:16:649:19 | self | main.rs:649:16:649:23 | self.val | | +| main.rs:649:16:649:23 | self.val | main.rs:649:9:649:23 | return ... | | +| main.rs:652:5:654:5 | enter fn id | main.rs:652:11:652:14 | self | | +| main.rs:652:5:654:5 | exit fn id (normal) | main.rs:652:5:654:5 | exit fn id | | +| main.rs:652:11:652:14 | SelfParam | main.rs:653:9:653:12 | self | | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | SelfParam | | +| main.rs:652:25:654:5 | { ... } | main.rs:652:5:654:5 | exit fn id (normal) | | +| main.rs:653:9:653:12 | self | main.rs:652:25:654:5 | { ... } | | +| main.rs:656:5:663:5 | enter fn my_method | main.rs:656:23:656:26 | self | | +| main.rs:656:5:663:5 | exit fn my_method (normal) | main.rs:656:5:663:5 | exit fn my_method | | +| main.rs:656:18:656:26 | SelfParam | main.rs:657:9:660:10 | let ... = ... | | +| main.rs:656:23:656:26 | self | main.rs:656:18:656:26 | SelfParam | | +| main.rs:656:29:663:5 | { ... } | main.rs:656:5:663:5 | exit fn my_method (normal) | | +| main.rs:657:9:660:10 | let ... = ... | main.rs:657:21:660:9 | \|...\| ... | | +| main.rs:657:13:657:17 | mut f | main.rs:661:9:661:13 | ExprStmt | match | +| main.rs:657:17:657:17 | f | main.rs:657:13:657:17 | mut f | | +| main.rs:657:21:660:9 | \|...\| ... | main.rs:657:17:657:17 | f | | +| main.rs:657:21:660:9 | enter \|...\| ... | main.rs:657:22:657:22 | n | | +| main.rs:657:21:660:9 | exit \|...\| ... (normal) | main.rs:657:21:660:9 | exit \|...\| ... | | +| main.rs:657:22:657:22 | ... | main.rs:659:13:659:26 | ExprStmt | | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | ... | match | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | | +| main.rs:657:25:660:9 | { ... } | main.rs:657:21:660:9 | exit \|...\| ... (normal) | | +| main.rs:659:13:659:16 | self | main.rs:659:13:659:20 | self.val | | +| main.rs:659:13:659:20 | self.val | main.rs:659:25:659:25 | n | | +| main.rs:659:13:659:25 | ... += ... | main.rs:657:25:660:9 | { ... } | | +| main.rs:659:13:659:26 | ExprStmt | main.rs:659:13:659:16 | self | | +| main.rs:659:25:659:25 | n | main.rs:659:13:659:25 | ... += ... | | +| main.rs:661:9:661:9 | f | main.rs:661:11:661:11 | 3 | | +| main.rs:661:9:661:12 | f(...) | main.rs:662:9:662:13 | ExprStmt | | +| main.rs:661:9:661:13 | ExprStmt | main.rs:661:9:661:9 | f | | +| main.rs:661:11:661:11 | 3 | main.rs:661:9:661:12 | f(...) | | +| main.rs:662:9:662:9 | f | main.rs:662:11:662:11 | 4 | | +| main.rs:662:9:662:12 | f(...) | main.rs:656:29:663:5 | { ... } | | +| main.rs:662:9:662:13 | ExprStmt | main.rs:662:9:662:9 | f | | +| main.rs:662:11:662:11 | 4 | main.rs:662:9:662:12 | f(...) | | +| main.rs:666:1:673:1 | enter fn structs | main.rs:667:5:667:36 | let ... = ... | | +| main.rs:666:1:673:1 | exit fn structs (normal) | main.rs:666:1:673:1 | exit fn structs | | +| main.rs:666:14:673:1 | { ... } | main.rs:666:1:673:1 | exit fn structs (normal) | | +| main.rs:667:5:667:36 | let ... = ... | main.rs:667:33:667:33 | 1 | | +| main.rs:667:9:667:13 | mut a | main.rs:668:5:668:26 | ExprStmt | match | +| main.rs:667:13:667:13 | a | main.rs:667:9:667:13 | mut a | | +| main.rs:667:17:667:35 | MyStruct {...} | main.rs:667:13:667:13 | a | | +| main.rs:667:33:667:33 | 1 | main.rs:667:17:667:35 | MyStruct {...} | | | main.rs:668:5:668:13 | print_i64 | main.rs:668:15:668:15 | a | | -| main.rs:668:5:668:19 | print_i64(...) | main.rs:669:5:669:18 | ExprStmt | | -| main.rs:668:5:668:20 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | -| main.rs:668:15:668:15 | a | main.rs:668:17:668:17 | 1 | | -| main.rs:668:15:668:18 | a[1] | main.rs:668:5:668:19 | print_i64(...) | | -| main.rs:668:17:668:17 | 1 | main.rs:668:15:668:18 | a[1] | | -| main.rs:669:5:669:5 | a | main.rs:669:10:669:10 | 4 | | -| main.rs:669:5:669:17 | ... = ... | main.rs:670:5:670:20 | ExprStmt | | -| main.rs:669:5:669:18 | ExprStmt | main.rs:669:5:669:5 | a | | -| main.rs:669:9:669:17 | [...] | main.rs:669:5:669:17 | ... = ... | | -| main.rs:669:10:669:10 | 4 | main.rs:669:13:669:13 | 5 | | -| main.rs:669:13:669:13 | 5 | main.rs:669:16:669:16 | 6 | | -| main.rs:669:16:669:16 | 6 | main.rs:669:9:669:17 | [...] | | +| main.rs:668:5:668:25 | print_i64(...) | main.rs:669:5:669:14 | ExprStmt | | +| main.rs:668:5:668:26 | ExprStmt | main.rs:668:5:668:13 | print_i64 | | +| main.rs:668:15:668:15 | a | main.rs:668:15:668:24 | a.my_get() | | +| main.rs:668:15:668:24 | a.my_get() | main.rs:668:5:668:25 | print_i64(...) | | +| main.rs:669:5:669:5 | a | main.rs:669:5:669:9 | a.val | | +| main.rs:669:5:669:9 | a.val | main.rs:669:13:669:13 | 5 | | +| main.rs:669:5:669:13 | ... = ... | main.rs:670:5:670:26 | ExprStmt | | +| main.rs:669:5:669:14 | ExprStmt | main.rs:669:5:669:5 | a | | +| main.rs:669:13:669:13 | 5 | main.rs:669:5:669:13 | ... = ... | | | main.rs:670:5:670:13 | print_i64 | main.rs:670:15:670:15 | a | | -| main.rs:670:5:670:19 | print_i64(...) | main.rs:664:13:671:1 | { ... } | | -| main.rs:670:5:670:20 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | -| main.rs:670:15:670:15 | a | main.rs:670:17:670:17 | 2 | | -| main.rs:670:15:670:18 | a[2] | main.rs:670:5:670:19 | print_i64(...) | | -| main.rs:670:17:670:17 | 2 | main.rs:670:15:670:18 | a[2] | | -| main.rs:673:1:680:1 | enter fn ref_arg | main.rs:674:5:674:15 | let ... = 16 | | -| main.rs:673:1:680:1 | exit fn ref_arg (normal) | main.rs:673:1:680:1 | exit fn ref_arg | | -| main.rs:673:14:680:1 | { ... } | main.rs:673:1:680:1 | exit fn ref_arg (normal) | | -| main.rs:674:5:674:15 | let ... = 16 | main.rs:674:13:674:14 | 16 | | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | | -| main.rs:674:9:674:9 | x | main.rs:675:5:675:22 | ExprStmt | match | -| main.rs:674:13:674:14 | 16 | main.rs:674:9:674:9 | x | | -| main.rs:675:5:675:17 | print_i64_ref | main.rs:675:20:675:20 | x | | -| main.rs:675:5:675:21 | print_i64_ref(...) | main.rs:676:5:676:17 | ExprStmt | | -| main.rs:675:5:675:22 | ExprStmt | main.rs:675:5:675:17 | print_i64_ref | | -| main.rs:675:19:675:20 | &x | main.rs:675:5:675:21 | print_i64_ref(...) | | -| main.rs:675:20:675:20 | x | main.rs:675:19:675:20 | &x | | -| main.rs:676:5:676:13 | print_i64 | main.rs:676:15:676:15 | x | | -| main.rs:676:5:676:16 | print_i64(...) | main.rs:678:5:678:15 | let ... = 17 | | -| main.rs:676:5:676:17 | ExprStmt | main.rs:676:5:676:13 | print_i64 | | -| main.rs:676:15:676:15 | x | main.rs:676:5:676:16 | print_i64(...) | | -| main.rs:678:5:678:15 | let ... = 17 | main.rs:678:13:678:14 | 17 | | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | | -| main.rs:678:9:678:9 | z | main.rs:679:5:679:22 | ExprStmt | match | -| main.rs:678:13:678:14 | 17 | main.rs:678:9:678:9 | z | | -| main.rs:679:5:679:17 | print_i64_ref | main.rs:679:20:679:20 | z | | -| main.rs:679:5:679:21 | print_i64_ref(...) | main.rs:673:14:680:1 | { ... } | | -| main.rs:679:5:679:22 | ExprStmt | main.rs:679:5:679:17 | print_i64_ref | | -| main.rs:679:19:679:20 | &z | main.rs:679:5:679:21 | print_i64_ref(...) | | -| main.rs:679:20:679:20 | z | main.rs:679:19:679:20 | &z | | -| main.rs:687:5:689:5 | enter fn bar | main.rs:687:17:687:20 | self | | -| main.rs:687:5:689:5 | exit fn bar (normal) | main.rs:687:5:689:5 | exit fn bar | | -| main.rs:687:12:687:20 | SelfParam | main.rs:688:9:688:36 | ExprStmt | | -| main.rs:687:17:687:20 | self | main.rs:687:12:687:20 | SelfParam | | -| main.rs:687:23:689:5 | { ... } | main.rs:687:5:689:5 | exit fn bar (normal) | | -| main.rs:688:9:688:13 | * ... | main.rs:688:33:688:33 | 3 | | -| main.rs:688:9:688:35 | ... = ... | main.rs:687:23:689:5 | { ... } | | -| main.rs:688:9:688:36 | ExprStmt | main.rs:688:10:688:13 | self | | -| main.rs:688:10:688:13 | self | main.rs:688:9:688:13 | * ... | | -| main.rs:688:17:688:35 | MyStruct {...} | main.rs:688:9:688:35 | ... = ... | | -| main.rs:688:33:688:33 | 3 | main.rs:688:17:688:35 | MyStruct {...} | | -| main.rs:692:1:698:1 | enter fn ref_methodcall_receiver | main.rs:693:5:693:36 | let ... = ... | | -| main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver | | -| main.rs:692:30:698:1 | { ... } | main.rs:692:1:698:1 | exit fn ref_methodcall_receiver (normal) | | -| main.rs:693:5:693:36 | let ... = ... | main.rs:693:33:693:33 | 1 | | -| main.rs:693:9:693:13 | mut a | main.rs:694:5:694:12 | ExprStmt | match | -| main.rs:693:13:693:13 | a | main.rs:693:9:693:13 | mut a | | -| main.rs:693:17:693:35 | MyStruct {...} | main.rs:693:13:693:13 | a | | -| main.rs:693:33:693:33 | 1 | main.rs:693:17:693:35 | MyStruct {...} | | -| main.rs:694:5:694:5 | a | main.rs:694:5:694:11 | a.bar() | | -| main.rs:694:5:694:11 | a.bar() | main.rs:697:5:697:21 | ExprStmt | | -| main.rs:694:5:694:12 | ExprStmt | main.rs:694:5:694:5 | a | | -| main.rs:697:5:697:13 | print_i64 | main.rs:697:15:697:15 | a | | -| main.rs:697:5:697:20 | print_i64(...) | main.rs:692:30:698:1 | { ... } | | -| main.rs:697:5:697:21 | ExprStmt | main.rs:697:5:697:13 | print_i64 | | -| main.rs:697:15:697:15 | a | main.rs:697:15:697:19 | a.val | | -| main.rs:697:15:697:19 | a.val | main.rs:697:5:697:20 | print_i64(...) | | -| main.rs:714:1:725:1 | enter fn macro_invocation | main.rs:715:5:716:26 | let ... = ... | | -| main.rs:714:1:725:1 | exit fn macro_invocation (normal) | main.rs:714:1:725:1 | exit fn macro_invocation | | -| main.rs:714:23:725:1 | { ... } | main.rs:714:1:725:1 | exit fn macro_invocation (normal) | | -| main.rs:715:5:716:26 | let ... = ... | main.rs:716:23:716:24 | let ... = 37 | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:715:9:715:22 | var_from_macro | main.rs:717:5:717:30 | ExprStmt | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | match | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | { ... } | | -| main.rs:716:9:716:25 | MacroExpr | main.rs:715:9:715:22 | var_from_macro | | -| main.rs:716:9:716:25 | let_in_macro!... | main.rs:716:9:716:25 | MacroExpr | | -| main.rs:716:23:716:24 | 37 | main.rs:716:9:716:21 | var_in_macro | | -| main.rs:716:23:716:24 | let ... = 37 | main.rs:716:23:716:24 | 37 | | -| main.rs:716:23:716:24 | { ... } | main.rs:716:9:716:25 | let_in_macro!... | | -| main.rs:717:5:717:13 | print_i64 | main.rs:717:15:717:28 | var_from_macro | | -| main.rs:717:5:717:29 | print_i64(...) | main.rs:718:5:718:26 | let ... = 33 | | -| main.rs:717:5:717:30 | ExprStmt | main.rs:717:5:717:13 | print_i64 | | -| main.rs:717:15:717:28 | var_from_macro | main.rs:717:5:717:29 | print_i64(...) | | -| main.rs:718:5:718:26 | let ... = 33 | main.rs:718:24:718:25 | 33 | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:718:9:718:20 | var_in_macro | main.rs:723:5:723:44 | ExprStmt | match | -| main.rs:718:24:718:25 | 33 | main.rs:718:9:718:20 | var_in_macro | | -| main.rs:723:5:723:13 | print_i64 | main.rs:723:15:723:28 | let ... = 0 | | -| main.rs:723:5:723:43 | print_i64(...) | main.rs:724:5:724:28 | ExprStmt | | -| main.rs:723:5:723:44 | ExprStmt | main.rs:723:5:723:13 | print_i64 | | -| main.rs:723:15:723:28 | 0 | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | let ... = 0 | main.rs:723:15:723:28 | 0 | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | match | -| main.rs:723:15:723:42 | MacroExpr | main.rs:723:5:723:43 | print_i64(...) | | -| main.rs:723:15:723:42 | let_in_macro2!... | main.rs:723:15:723:42 | MacroExpr | | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:30:723:41 | { ... } | | -| main.rs:723:30:723:41 | { ... } | main.rs:723:15:723:42 | let_in_macro2!... | | -| main.rs:724:5:724:13 | print_i64 | main.rs:724:15:724:26 | var_in_macro | | -| main.rs:724:5:724:27 | print_i64(...) | main.rs:714:23:725:1 | { ... } | | -| main.rs:724:5:724:28 | ExprStmt | main.rs:724:5:724:13 | print_i64 | | -| main.rs:724:15:724:26 | var_in_macro | main.rs:724:5:724:27 | print_i64(...) | | -| main.rs:727:1:731:1 | enter fn let_without_initializer | main.rs:728:5:728:10 | let ... | | -| main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | main.rs:727:1:731:1 | exit fn let_without_initializer | | -| main.rs:727:30:731:1 | { ... } | main.rs:727:1:731:1 | exit fn let_without_initializer (normal) | | -| main.rs:728:5:728:10 | let ... | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:728:9:728:9 | x | | -| main.rs:728:9:728:9 | x | main.rs:729:5:729:10 | ExprStmt | match | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | | -| main.rs:729:5:729:9 | ... = ... | main.rs:730:5:730:17 | ExprStmt | | -| main.rs:729:5:729:10 | ExprStmt | main.rs:729:5:729:5 | x | | -| main.rs:729:9:729:9 | 1 | main.rs:729:5:729:9 | ... = ... | | -| main.rs:730:5:730:13 | print_i64 | main.rs:730:15:730:15 | x | | -| main.rs:730:5:730:16 | print_i64(...) | main.rs:727:30:731:1 | { ... } | | -| main.rs:730:5:730:17 | ExprStmt | main.rs:730:5:730:13 | print_i64 | | -| main.rs:730:15:730:15 | x | main.rs:730:5:730:16 | print_i64(...) | | -| main.rs:733:1:743:1 | enter fn capture_phi | main.rs:734:5:734:20 | let ... = 100 | | -| main.rs:733:1:743:1 | exit fn capture_phi (normal) | main.rs:733:1:743:1 | exit fn capture_phi | | -| main.rs:733:18:743:1 | { ... } | main.rs:733:1:743:1 | exit fn capture_phi (normal) | | -| main.rs:734:5:734:20 | let ... = 100 | main.rs:734:17:734:19 | 100 | | -| main.rs:734:9:734:13 | mut x | main.rs:735:5:740:6 | let ... = ... | match | -| main.rs:734:13:734:13 | x | main.rs:734:9:734:13 | mut x | | -| main.rs:734:17:734:19 | 100 | main.rs:734:13:734:13 | x | | -| main.rs:735:5:740:6 | let ... = ... | main.rs:735:19:740:5 | \|...\| ... | | -| main.rs:735:9:735:15 | mut cap | main.rs:741:5:741:14 | ExprStmt | match | -| main.rs:735:13:735:15 | cap | main.rs:735:9:735:15 | mut cap | | -| main.rs:735:19:740:5 | \|...\| ... | main.rs:735:13:735:15 | cap | | -| main.rs:735:19:740:5 | enter \|...\| ... | main.rs:735:20:735:20 | b | | -| main.rs:735:19:740:5 | exit \|...\| ... (normal) | main.rs:735:19:740:5 | exit \|...\| ... | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:26 | ...: bool | match | -| main.rs:735:20:735:26 | ...: bool | main.rs:736:9:739:10 | let _ = ... | | -| main.rs:735:29:740:5 | { ... } | main.rs:735:19:740:5 | exit \|...\| ... (normal) | | -| main.rs:736:9:739:10 | let _ = ... | main.rs:737:20:737:20 | b | | -| main.rs:737:13:737:13 | _ | main.rs:735:29:740:5 | { ... } | match | -| main.rs:737:17:739:9 | if b {...} | main.rs:737:13:737:13 | _ | | -| main.rs:737:20:737:20 | b | main.rs:737:17:739:9 | if b {...} | false | -| main.rs:737:20:737:20 | b | main.rs:738:13:738:20 | ExprStmt | true | -| main.rs:737:22:739:9 | { ... } | main.rs:737:17:739:9 | if b {...} | | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | | -| main.rs:738:13:738:19 | ... = ... | main.rs:737:22:739:9 | { ... } | | -| main.rs:738:13:738:20 | ExprStmt | main.rs:738:13:738:13 | x | | -| main.rs:738:17:738:19 | 200 | main.rs:738:13:738:19 | ... = ... | | -| main.rs:741:5:741:7 | cap | main.rs:741:9:741:12 | true | | -| main.rs:741:5:741:13 | cap(...) | main.rs:742:5:742:17 | ExprStmt | | -| main.rs:741:5:741:14 | ExprStmt | main.rs:741:5:741:7 | cap | | -| main.rs:741:9:741:12 | true | main.rs:741:5:741:13 | cap(...) | | -| main.rs:742:5:742:13 | print_i64 | main.rs:742:15:742:15 | x | | -| main.rs:742:5:742:16 | print_i64(...) | main.rs:733:18:743:1 | { ... } | | -| main.rs:742:5:742:17 | ExprStmt | main.rs:742:5:742:13 | print_i64 | | -| main.rs:742:15:742:15 | x | main.rs:742:5:742:16 | print_i64(...) | | -| main.rs:745:1:788:1 | enter fn main | main.rs:746:5:746:25 | ExprStmt | | -| main.rs:745:1:788:1 | exit fn main (normal) | main.rs:745:1:788:1 | exit fn main | | -| main.rs:745:11:788:1 | { ... } | main.rs:745:1:788:1 | exit fn main (normal) | | -| main.rs:746:5:746:22 | immutable_variable | main.rs:746:5:746:24 | immutable_variable(...) | | -| main.rs:746:5:746:24 | immutable_variable(...) | main.rs:747:5:747:23 | ExprStmt | | -| main.rs:746:5:746:25 | ExprStmt | main.rs:746:5:746:22 | immutable_variable | | -| main.rs:747:5:747:20 | mutable_variable | main.rs:747:5:747:22 | mutable_variable(...) | | -| main.rs:747:5:747:22 | mutable_variable(...) | main.rs:748:5:748:40 | ExprStmt | | -| main.rs:747:5:747:23 | ExprStmt | main.rs:747:5:747:20 | mutable_variable | | -| main.rs:748:5:748:37 | mutable_variable_immutable_borrow | main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | | -| main.rs:748:5:748:39 | mutable_variable_immutable_borrow(...) | main.rs:749:5:749:23 | ExprStmt | | -| main.rs:748:5:748:40 | ExprStmt | main.rs:748:5:748:37 | mutable_variable_immutable_borrow | | -| main.rs:749:5:749:20 | variable_shadow1 | main.rs:749:5:749:22 | variable_shadow1(...) | | -| main.rs:749:5:749:22 | variable_shadow1(...) | main.rs:750:5:750:23 | ExprStmt | | -| main.rs:749:5:749:23 | ExprStmt | main.rs:749:5:749:20 | variable_shadow1 | | -| main.rs:750:5:750:20 | variable_shadow2 | main.rs:750:5:750:22 | variable_shadow2(...) | | -| main.rs:750:5:750:22 | variable_shadow2(...) | main.rs:751:5:751:19 | ExprStmt | | -| main.rs:750:5:750:23 | ExprStmt | main.rs:750:5:750:20 | variable_shadow2 | | -| main.rs:751:5:751:16 | let_pattern1 | main.rs:751:5:751:18 | let_pattern1(...) | | -| main.rs:751:5:751:18 | let_pattern1(...) | main.rs:752:5:752:19 | ExprStmt | | -| main.rs:751:5:751:19 | ExprStmt | main.rs:751:5:751:16 | let_pattern1 | | -| main.rs:752:5:752:16 | let_pattern2 | main.rs:752:5:752:18 | let_pattern2(...) | | -| main.rs:752:5:752:18 | let_pattern2(...) | main.rs:753:5:753:19 | ExprStmt | | -| main.rs:752:5:752:19 | ExprStmt | main.rs:752:5:752:16 | let_pattern2 | | -| main.rs:753:5:753:16 | let_pattern3 | main.rs:753:5:753:18 | let_pattern3(...) | | -| main.rs:753:5:753:18 | let_pattern3(...) | main.rs:754:5:754:19 | ExprStmt | | -| main.rs:753:5:753:19 | ExprStmt | main.rs:753:5:753:16 | let_pattern3 | | -| main.rs:754:5:754:16 | let_pattern4 | main.rs:754:5:754:18 | let_pattern4(...) | | -| main.rs:754:5:754:18 | let_pattern4(...) | main.rs:755:5:755:21 | ExprStmt | | -| main.rs:754:5:754:19 | ExprStmt | main.rs:754:5:754:16 | let_pattern4 | | -| main.rs:755:5:755:18 | match_pattern1 | main.rs:755:5:755:20 | match_pattern1(...) | | -| main.rs:755:5:755:20 | match_pattern1(...) | main.rs:756:5:756:21 | ExprStmt | | -| main.rs:755:5:755:21 | ExprStmt | main.rs:755:5:755:18 | match_pattern1 | | -| main.rs:756:5:756:18 | match_pattern2 | main.rs:756:5:756:20 | match_pattern2(...) | | -| main.rs:756:5:756:20 | match_pattern2(...) | main.rs:757:5:757:21 | ExprStmt | | -| main.rs:756:5:756:21 | ExprStmt | main.rs:756:5:756:18 | match_pattern2 | | -| main.rs:757:5:757:18 | match_pattern3 | main.rs:757:5:757:20 | match_pattern3(...) | | -| main.rs:757:5:757:20 | match_pattern3(...) | main.rs:758:5:758:21 | ExprStmt | | -| main.rs:757:5:757:21 | ExprStmt | main.rs:757:5:757:18 | match_pattern3 | | -| main.rs:758:5:758:18 | match_pattern4 | main.rs:758:5:758:20 | match_pattern4(...) | | -| main.rs:758:5:758:20 | match_pattern4(...) | main.rs:759:5:759:21 | ExprStmt | | -| main.rs:758:5:758:21 | ExprStmt | main.rs:758:5:758:18 | match_pattern4 | | -| main.rs:759:5:759:18 | match_pattern5 | main.rs:759:5:759:20 | match_pattern5(...) | | -| main.rs:759:5:759:20 | match_pattern5(...) | main.rs:760:5:760:21 | ExprStmt | | -| main.rs:759:5:759:21 | ExprStmt | main.rs:759:5:759:18 | match_pattern5 | | -| main.rs:760:5:760:18 | match_pattern6 | main.rs:760:5:760:20 | match_pattern6(...) | | -| main.rs:760:5:760:20 | match_pattern6(...) | main.rs:761:5:761:21 | ExprStmt | | -| main.rs:760:5:760:21 | ExprStmt | main.rs:760:5:760:18 | match_pattern6 | | -| main.rs:761:5:761:18 | match_pattern7 | main.rs:761:5:761:20 | match_pattern7(...) | | -| main.rs:761:5:761:20 | match_pattern7(...) | main.rs:762:5:762:21 | ExprStmt | | -| main.rs:761:5:761:21 | ExprStmt | main.rs:761:5:761:18 | match_pattern7 | | -| main.rs:762:5:762:18 | match_pattern8 | main.rs:762:5:762:20 | match_pattern8(...) | | -| main.rs:762:5:762:20 | match_pattern8(...) | main.rs:763:5:763:21 | ExprStmt | | -| main.rs:762:5:762:21 | ExprStmt | main.rs:762:5:762:18 | match_pattern8 | | -| main.rs:763:5:763:18 | match_pattern9 | main.rs:763:5:763:20 | match_pattern9(...) | | -| main.rs:763:5:763:20 | match_pattern9(...) | main.rs:764:5:764:22 | ExprStmt | | -| main.rs:763:5:763:21 | ExprStmt | main.rs:763:5:763:18 | match_pattern9 | | -| main.rs:764:5:764:19 | match_pattern10 | main.rs:764:5:764:21 | match_pattern10(...) | | -| main.rs:764:5:764:21 | match_pattern10(...) | main.rs:765:5:765:22 | ExprStmt | | -| main.rs:764:5:764:22 | ExprStmt | main.rs:764:5:764:19 | match_pattern10 | | -| main.rs:765:5:765:19 | match_pattern11 | main.rs:765:5:765:21 | match_pattern11(...) | | -| main.rs:765:5:765:21 | match_pattern11(...) | main.rs:766:5:766:22 | ExprStmt | | -| main.rs:765:5:765:22 | ExprStmt | main.rs:765:5:765:19 | match_pattern11 | | -| main.rs:766:5:766:19 | match_pattern12 | main.rs:766:5:766:21 | match_pattern12(...) | | -| main.rs:766:5:766:21 | match_pattern12(...) | main.rs:767:5:767:22 | ExprStmt | | -| main.rs:766:5:766:22 | ExprStmt | main.rs:766:5:766:19 | match_pattern12 | | -| main.rs:767:5:767:19 | match_pattern13 | main.rs:767:5:767:21 | match_pattern13(...) | | -| main.rs:767:5:767:21 | match_pattern13(...) | main.rs:768:5:768:22 | ExprStmt | | -| main.rs:767:5:767:22 | ExprStmt | main.rs:767:5:767:19 | match_pattern13 | | -| main.rs:768:5:768:19 | match_pattern14 | main.rs:768:5:768:21 | match_pattern14(...) | | -| main.rs:768:5:768:21 | match_pattern14(...) | main.rs:769:5:769:22 | ExprStmt | | -| main.rs:768:5:768:22 | ExprStmt | main.rs:768:5:768:19 | match_pattern14 | | -| main.rs:769:5:769:19 | match_pattern15 | main.rs:769:5:769:21 | match_pattern15(...) | | -| main.rs:769:5:769:21 | match_pattern15(...) | main.rs:770:5:770:36 | ExprStmt | | -| main.rs:769:5:769:22 | ExprStmt | main.rs:769:5:769:19 | match_pattern15 | | -| main.rs:770:5:770:18 | param_pattern1 | main.rs:770:20:770:22 | "a" | | -| main.rs:770:5:770:35 | param_pattern1(...) | main.rs:771:5:771:37 | ExprStmt | | -| main.rs:770:5:770:36 | ExprStmt | main.rs:770:5:770:18 | param_pattern1 | | -| main.rs:770:20:770:22 | "a" | main.rs:770:26:770:28 | "b" | | -| main.rs:770:25:770:34 | TupleExpr | main.rs:770:5:770:35 | param_pattern1(...) | | -| main.rs:770:26:770:28 | "b" | main.rs:770:31:770:33 | "c" | | -| main.rs:770:31:770:33 | "c" | main.rs:770:25:770:34 | TupleExpr | | -| main.rs:771:5:771:18 | param_pattern2 | main.rs:771:20:771:31 | ...::Left | | -| main.rs:771:5:771:36 | param_pattern2(...) | main.rs:772:5:772:26 | ExprStmt | | -| main.rs:771:5:771:37 | ExprStmt | main.rs:771:5:771:18 | param_pattern2 | | -| main.rs:771:20:771:31 | ...::Left | main.rs:771:33:771:34 | 45 | | -| main.rs:771:20:771:35 | ...::Left(...) | main.rs:771:5:771:36 | param_pattern2(...) | | -| main.rs:771:33:771:34 | 45 | main.rs:771:20:771:35 | ...::Left(...) | | -| main.rs:772:5:772:23 | destruct_assignment | main.rs:772:5:772:25 | destruct_assignment(...) | | -| main.rs:772:5:772:25 | destruct_assignment(...) | main.rs:773:5:773:23 | ExprStmt | | -| main.rs:772:5:772:26 | ExprStmt | main.rs:772:5:772:23 | destruct_assignment | | -| main.rs:773:5:773:20 | closure_variable | main.rs:773:5:773:22 | closure_variable(...) | | -| main.rs:773:5:773:22 | closure_variable(...) | main.rs:774:5:774:22 | ExprStmt | | -| main.rs:773:5:773:23 | ExprStmt | main.rs:773:5:773:20 | closure_variable | | -| main.rs:774:5:774:19 | nested_function | main.rs:774:5:774:21 | nested_function(...) | | -| main.rs:774:5:774:21 | nested_function(...) | main.rs:775:5:775:19 | ExprStmt | | -| main.rs:774:5:774:22 | ExprStmt | main.rs:774:5:774:19 | nested_function | | -| main.rs:775:5:775:16 | for_variable | main.rs:775:5:775:18 | for_variable(...) | | -| main.rs:775:5:775:18 | for_variable(...) | main.rs:776:5:776:17 | ExprStmt | | -| main.rs:775:5:775:19 | ExprStmt | main.rs:775:5:775:16 | for_variable | | -| main.rs:776:5:776:14 | add_assign | main.rs:776:5:776:16 | add_assign(...) | | -| main.rs:776:5:776:16 | add_assign(...) | main.rs:777:5:777:13 | ExprStmt | | -| main.rs:776:5:776:17 | ExprStmt | main.rs:776:5:776:14 | add_assign | | -| main.rs:777:5:777:10 | mutate | main.rs:777:5:777:12 | mutate(...) | | -| main.rs:777:5:777:12 | mutate(...) | main.rs:778:5:778:17 | ExprStmt | | -| main.rs:777:5:777:13 | ExprStmt | main.rs:777:5:777:10 | mutate | | -| main.rs:778:5:778:14 | mutate_arg | main.rs:778:5:778:16 | mutate_arg(...) | | -| main.rs:778:5:778:16 | mutate_arg(...) | main.rs:779:5:779:12 | ExprStmt | | -| main.rs:778:5:778:17 | ExprStmt | main.rs:778:5:778:14 | mutate_arg | | -| main.rs:779:5:779:9 | alias | main.rs:779:5:779:11 | alias(...) | | -| main.rs:779:5:779:11 | alias(...) | main.rs:780:5:780:18 | ExprStmt | | -| main.rs:779:5:779:12 | ExprStmt | main.rs:779:5:779:9 | alias | | -| main.rs:780:5:780:15 | capture_mut | main.rs:780:5:780:17 | capture_mut(...) | | -| main.rs:780:5:780:17 | capture_mut(...) | main.rs:781:5:781:20 | ExprStmt | | -| main.rs:780:5:780:18 | ExprStmt | main.rs:780:5:780:15 | capture_mut | | -| main.rs:781:5:781:17 | capture_immut | main.rs:781:5:781:19 | capture_immut(...) | | -| main.rs:781:5:781:19 | capture_immut(...) | main.rs:782:5:782:26 | ExprStmt | | -| main.rs:781:5:781:20 | ExprStmt | main.rs:781:5:781:17 | capture_immut | | -| main.rs:782:5:782:23 | async_block_capture | main.rs:782:5:782:25 | async_block_capture(...) | | -| main.rs:782:5:782:25 | async_block_capture(...) | main.rs:783:5:783:14 | ExprStmt | | -| main.rs:782:5:782:26 | ExprStmt | main.rs:782:5:782:23 | async_block_capture | | -| main.rs:783:5:783:11 | structs | main.rs:783:5:783:13 | structs(...) | | -| main.rs:783:5:783:13 | structs(...) | main.rs:784:5:784:14 | ExprStmt | | -| main.rs:783:5:783:14 | ExprStmt | main.rs:783:5:783:11 | structs | | -| main.rs:784:5:784:11 | ref_arg | main.rs:784:5:784:13 | ref_arg(...) | | -| main.rs:784:5:784:13 | ref_arg(...) | main.rs:785:5:785:30 | ExprStmt | | -| main.rs:784:5:784:14 | ExprStmt | main.rs:784:5:784:11 | ref_arg | | -| main.rs:785:5:785:27 | ref_methodcall_receiver | main.rs:785:5:785:29 | ref_methodcall_receiver(...) | | -| main.rs:785:5:785:29 | ref_methodcall_receiver(...) | main.rs:786:5:786:23 | ExprStmt | | -| main.rs:785:5:785:30 | ExprStmt | main.rs:785:5:785:27 | ref_methodcall_receiver | | -| main.rs:786:5:786:20 | macro_invocation | main.rs:786:5:786:22 | macro_invocation(...) | | -| main.rs:786:5:786:22 | macro_invocation(...) | main.rs:787:5:787:18 | ExprStmt | | -| main.rs:786:5:786:23 | ExprStmt | main.rs:786:5:786:20 | macro_invocation | | -| main.rs:787:5:787:15 | capture_phi | main.rs:787:5:787:17 | capture_phi(...) | | -| main.rs:787:5:787:17 | capture_phi(...) | main.rs:745:11:788:1 | { ... } | | -| main.rs:787:5:787:18 | ExprStmt | main.rs:787:5:787:15 | capture_phi | | +| main.rs:670:5:670:25 | print_i64(...) | main.rs:671:5:671:28 | ExprStmt | | +| main.rs:670:5:670:26 | ExprStmt | main.rs:670:5:670:13 | print_i64 | | +| main.rs:670:15:670:15 | a | main.rs:670:15:670:24 | a.my_get() | | +| main.rs:670:15:670:24 | a.my_get() | main.rs:670:5:670:25 | print_i64(...) | | +| main.rs:671:5:671:5 | a | main.rs:671:25:671:25 | 2 | | +| main.rs:671:5:671:27 | ... = ... | main.rs:672:5:672:26 | ExprStmt | | +| main.rs:671:5:671:28 | ExprStmt | main.rs:671:5:671:5 | a | | +| main.rs:671:9:671:27 | MyStruct {...} | main.rs:671:5:671:27 | ... = ... | | +| main.rs:671:25:671:25 | 2 | main.rs:671:9:671:27 | MyStruct {...} | | +| main.rs:672:5:672:13 | print_i64 | main.rs:672:15:672:15 | a | | +| main.rs:672:5:672:25 | print_i64(...) | main.rs:666:14:673:1 | { ... } | | +| main.rs:672:5:672:26 | ExprStmt | main.rs:672:5:672:13 | print_i64 | | +| main.rs:672:15:672:15 | a | main.rs:672:15:672:24 | a.my_get() | | +| main.rs:672:15:672:24 | a.my_get() | main.rs:672:5:672:25 | print_i64(...) | | +| main.rs:675:1:682:1 | enter fn arrays | main.rs:676:5:676:26 | let ... = ... | | +| main.rs:675:1:682:1 | exit fn arrays (normal) | main.rs:675:1:682:1 | exit fn arrays | | +| main.rs:675:13:682:1 | { ... } | main.rs:675:1:682:1 | exit fn arrays (normal) | | +| main.rs:676:5:676:26 | let ... = ... | main.rs:676:18:676:18 | 1 | | +| main.rs:676:9:676:13 | mut a | main.rs:677:5:677:20 | ExprStmt | match | +| main.rs:676:13:676:13 | a | main.rs:676:9:676:13 | mut a | | +| main.rs:676:17:676:25 | [...] | main.rs:676:13:676:13 | a | | +| main.rs:676:18:676:18 | 1 | main.rs:676:21:676:21 | 2 | | +| main.rs:676:21:676:21 | 2 | main.rs:676:24:676:24 | 3 | | +| main.rs:676:24:676:24 | 3 | main.rs:676:17:676:25 | [...] | | +| main.rs:677:5:677:13 | print_i64 | main.rs:677:15:677:15 | a | | +| main.rs:677:5:677:19 | print_i64(...) | main.rs:678:5:678:13 | ExprStmt | | +| main.rs:677:5:677:20 | ExprStmt | main.rs:677:5:677:13 | print_i64 | | +| main.rs:677:15:677:15 | a | main.rs:677:17:677:17 | 0 | | +| main.rs:677:15:677:18 | a[0] | main.rs:677:5:677:19 | print_i64(...) | | +| main.rs:677:17:677:17 | 0 | main.rs:677:15:677:18 | a[0] | | +| main.rs:678:5:678:5 | a | main.rs:678:7:678:7 | 1 | | +| main.rs:678:5:678:8 | a[1] | main.rs:678:12:678:12 | 5 | | +| main.rs:678:5:678:12 | ... = ... | main.rs:679:5:679:20 | ExprStmt | | +| main.rs:678:5:678:13 | ExprStmt | main.rs:678:5:678:5 | a | | +| main.rs:678:7:678:7 | 1 | main.rs:678:5:678:8 | a[1] | | +| main.rs:678:12:678:12 | 5 | main.rs:678:5:678:12 | ... = ... | | +| main.rs:679:5:679:13 | print_i64 | main.rs:679:15:679:15 | a | | +| main.rs:679:5:679:19 | print_i64(...) | main.rs:680:5:680:18 | ExprStmt | | +| main.rs:679:5:679:20 | ExprStmt | main.rs:679:5:679:13 | print_i64 | | +| main.rs:679:15:679:15 | a | main.rs:679:17:679:17 | 1 | | +| main.rs:679:15:679:18 | a[1] | main.rs:679:5:679:19 | print_i64(...) | | +| main.rs:679:17:679:17 | 1 | main.rs:679:15:679:18 | a[1] | | +| main.rs:680:5:680:5 | a | main.rs:680:10:680:10 | 4 | | +| main.rs:680:5:680:17 | ... = ... | main.rs:681:5:681:20 | ExprStmt | | +| main.rs:680:5:680:18 | ExprStmt | main.rs:680:5:680:5 | a | | +| main.rs:680:9:680:17 | [...] | main.rs:680:5:680:17 | ... = ... | | +| main.rs:680:10:680:10 | 4 | main.rs:680:13:680:13 | 5 | | +| main.rs:680:13:680:13 | 5 | main.rs:680:16:680:16 | 6 | | +| main.rs:680:16:680:16 | 6 | main.rs:680:9:680:17 | [...] | | +| main.rs:681:5:681:13 | print_i64 | main.rs:681:15:681:15 | a | | +| main.rs:681:5:681:19 | print_i64(...) | main.rs:675:13:682:1 | { ... } | | +| main.rs:681:5:681:20 | ExprStmt | main.rs:681:5:681:13 | print_i64 | | +| main.rs:681:15:681:15 | a | main.rs:681:17:681:17 | 2 | | +| main.rs:681:15:681:18 | a[2] | main.rs:681:5:681:19 | print_i64(...) | | +| main.rs:681:17:681:17 | 2 | main.rs:681:15:681:18 | a[2] | | +| main.rs:684:1:691:1 | enter fn ref_arg | main.rs:685:5:685:15 | let ... = 16 | | +| main.rs:684:1:691:1 | exit fn ref_arg (normal) | main.rs:684:1:691:1 | exit fn ref_arg | | +| main.rs:684:14:691:1 | { ... } | main.rs:684:1:691:1 | exit fn ref_arg (normal) | | +| main.rs:685:5:685:15 | let ... = 16 | main.rs:685:13:685:14 | 16 | | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | | +| main.rs:685:9:685:9 | x | main.rs:686:5:686:22 | ExprStmt | match | +| main.rs:685:13:685:14 | 16 | main.rs:685:9:685:9 | x | | +| main.rs:686:5:686:17 | print_i64_ref | main.rs:686:20:686:20 | x | | +| main.rs:686:5:686:21 | print_i64_ref(...) | main.rs:687:5:687:17 | ExprStmt | | +| main.rs:686:5:686:22 | ExprStmt | main.rs:686:5:686:17 | print_i64_ref | | +| main.rs:686:19:686:20 | &x | main.rs:686:5:686:21 | print_i64_ref(...) | | +| main.rs:686:20:686:20 | x | main.rs:686:19:686:20 | &x | | +| main.rs:687:5:687:13 | print_i64 | main.rs:687:15:687:15 | x | | +| main.rs:687:5:687:16 | print_i64(...) | main.rs:689:5:689:15 | let ... = 17 | | +| main.rs:687:5:687:17 | ExprStmt | main.rs:687:5:687:13 | print_i64 | | +| main.rs:687:15:687:15 | x | main.rs:687:5:687:16 | print_i64(...) | | +| main.rs:689:5:689:15 | let ... = 17 | main.rs:689:13:689:14 | 17 | | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | | +| main.rs:689:9:689:9 | z | main.rs:690:5:690:22 | ExprStmt | match | +| main.rs:689:13:689:14 | 17 | main.rs:689:9:689:9 | z | | +| main.rs:690:5:690:17 | print_i64_ref | main.rs:690:20:690:20 | z | | +| main.rs:690:5:690:21 | print_i64_ref(...) | main.rs:684:14:691:1 | { ... } | | +| main.rs:690:5:690:22 | ExprStmt | main.rs:690:5:690:17 | print_i64_ref | | +| main.rs:690:19:690:20 | &z | main.rs:690:5:690:21 | print_i64_ref(...) | | +| main.rs:690:20:690:20 | z | main.rs:690:19:690:20 | &z | | +| main.rs:698:5:700:5 | enter fn bar | main.rs:698:17:698:20 | self | | +| main.rs:698:5:700:5 | exit fn bar (normal) | main.rs:698:5:700:5 | exit fn bar | | +| main.rs:698:12:698:20 | SelfParam | main.rs:699:9:699:36 | ExprStmt | | +| main.rs:698:17:698:20 | self | main.rs:698:12:698:20 | SelfParam | | +| main.rs:698:23:700:5 | { ... } | main.rs:698:5:700:5 | exit fn bar (normal) | | +| main.rs:699:9:699:13 | * ... | main.rs:699:33:699:33 | 3 | | +| main.rs:699:9:699:35 | ... = ... | main.rs:698:23:700:5 | { ... } | | +| main.rs:699:9:699:36 | ExprStmt | main.rs:699:10:699:13 | self | | +| main.rs:699:10:699:13 | self | main.rs:699:9:699:13 | * ... | | +| main.rs:699:17:699:35 | MyStruct {...} | main.rs:699:9:699:35 | ... = ... | | +| main.rs:699:33:699:33 | 3 | main.rs:699:17:699:35 | MyStruct {...} | | +| main.rs:703:1:709:1 | enter fn ref_methodcall_receiver | main.rs:704:5:704:36 | let ... = ... | | +| main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver | | +| main.rs:703:30:709:1 | { ... } | main.rs:703:1:709:1 | exit fn ref_methodcall_receiver (normal) | | +| main.rs:704:5:704:36 | let ... = ... | main.rs:704:33:704:33 | 1 | | +| main.rs:704:9:704:13 | mut a | main.rs:705:5:705:12 | ExprStmt | match | +| main.rs:704:13:704:13 | a | main.rs:704:9:704:13 | mut a | | +| main.rs:704:17:704:35 | MyStruct {...} | main.rs:704:13:704:13 | a | | +| main.rs:704:33:704:33 | 1 | main.rs:704:17:704:35 | MyStruct {...} | | +| main.rs:705:5:705:5 | a | main.rs:705:5:705:11 | a.bar() | | +| main.rs:705:5:705:11 | a.bar() | main.rs:708:5:708:21 | ExprStmt | | +| main.rs:705:5:705:12 | ExprStmt | main.rs:705:5:705:5 | a | | +| main.rs:708:5:708:13 | print_i64 | main.rs:708:15:708:15 | a | | +| main.rs:708:5:708:20 | print_i64(...) | main.rs:703:30:709:1 | { ... } | | +| main.rs:708:5:708:21 | ExprStmt | main.rs:708:5:708:13 | print_i64 | | +| main.rs:708:15:708:15 | a | main.rs:708:15:708:19 | a.val | | +| main.rs:708:15:708:19 | a.val | main.rs:708:5:708:20 | print_i64(...) | | +| main.rs:725:1:736:1 | enter fn macro_invocation | main.rs:726:5:727:26 | let ... = ... | | +| main.rs:725:1:736:1 | exit fn macro_invocation (normal) | main.rs:725:1:736:1 | exit fn macro_invocation | | +| main.rs:725:23:736:1 | { ... } | main.rs:725:1:736:1 | exit fn macro_invocation (normal) | | +| main.rs:726:5:727:26 | let ... = ... | main.rs:727:23:727:24 | let ... = 37 | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:726:9:726:22 | var_from_macro | main.rs:728:5:728:30 | ExprStmt | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | match | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | { ... } | | +| main.rs:727:9:727:25 | MacroExpr | main.rs:726:9:726:22 | var_from_macro | | +| main.rs:727:9:727:25 | let_in_macro!... | main.rs:727:9:727:25 | MacroExpr | | +| main.rs:727:23:727:24 | 37 | main.rs:727:9:727:21 | var_in_macro | | +| main.rs:727:23:727:24 | let ... = 37 | main.rs:727:23:727:24 | 37 | | +| main.rs:727:23:727:24 | { ... } | main.rs:727:9:727:25 | let_in_macro!... | | +| main.rs:728:5:728:13 | print_i64 | main.rs:728:15:728:28 | var_from_macro | | +| main.rs:728:5:728:29 | print_i64(...) | main.rs:729:5:729:26 | let ... = 33 | | +| main.rs:728:5:728:30 | ExprStmt | main.rs:728:5:728:13 | print_i64 | | +| main.rs:728:15:728:28 | var_from_macro | main.rs:728:5:728:29 | print_i64(...) | | +| main.rs:729:5:729:26 | let ... = 33 | main.rs:729:24:729:25 | 33 | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:729:9:729:20 | var_in_macro | main.rs:734:5:734:44 | ExprStmt | match | +| main.rs:729:24:729:25 | 33 | main.rs:729:9:729:20 | var_in_macro | | +| main.rs:734:5:734:13 | print_i64 | main.rs:734:15:734:28 | let ... = 0 | | +| main.rs:734:5:734:43 | print_i64(...) | main.rs:735:5:735:28 | ExprStmt | | +| main.rs:734:5:734:44 | ExprStmt | main.rs:734:5:734:13 | print_i64 | | +| main.rs:734:15:734:28 | 0 | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | let ... = 0 | main.rs:734:15:734:28 | 0 | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | match | +| main.rs:734:15:734:42 | MacroExpr | main.rs:734:5:734:43 | print_i64(...) | | +| main.rs:734:15:734:42 | let_in_macro2!... | main.rs:734:15:734:42 | MacroExpr | | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:30:734:41 | { ... } | | +| main.rs:734:30:734:41 | { ... } | main.rs:734:15:734:42 | let_in_macro2!... | | +| main.rs:735:5:735:13 | print_i64 | main.rs:735:15:735:26 | var_in_macro | | +| main.rs:735:5:735:27 | print_i64(...) | main.rs:725:23:736:1 | { ... } | | +| main.rs:735:5:735:28 | ExprStmt | main.rs:735:5:735:13 | print_i64 | | +| main.rs:735:15:735:26 | var_in_macro | main.rs:735:5:735:27 | print_i64(...) | | +| main.rs:738:1:742:1 | enter fn let_without_initializer | main.rs:739:5:739:10 | let ... | | +| main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | main.rs:738:1:742:1 | exit fn let_without_initializer | | +| main.rs:738:30:742:1 | { ... } | main.rs:738:1:742:1 | exit fn let_without_initializer (normal) | | +| main.rs:739:5:739:10 | let ... | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:739:9:739:9 | x | | +| main.rs:739:9:739:9 | x | main.rs:740:5:740:10 | ExprStmt | match | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | | +| main.rs:740:5:740:9 | ... = ... | main.rs:741:5:741:17 | ExprStmt | | +| main.rs:740:5:740:10 | ExprStmt | main.rs:740:5:740:5 | x | | +| main.rs:740:9:740:9 | 1 | main.rs:740:5:740:9 | ... = ... | | +| main.rs:741:5:741:13 | print_i64 | main.rs:741:15:741:15 | x | | +| main.rs:741:5:741:16 | print_i64(...) | main.rs:738:30:742:1 | { ... } | | +| main.rs:741:5:741:17 | ExprStmt | main.rs:741:5:741:13 | print_i64 | | +| main.rs:741:15:741:15 | x | main.rs:741:5:741:16 | print_i64(...) | | +| main.rs:744:1:754:1 | enter fn capture_phi | main.rs:745:5:745:20 | let ... = 100 | | +| main.rs:744:1:754:1 | exit fn capture_phi (normal) | main.rs:744:1:754:1 | exit fn capture_phi | | +| main.rs:744:18:754:1 | { ... } | main.rs:744:1:754:1 | exit fn capture_phi (normal) | | +| main.rs:745:5:745:20 | let ... = 100 | main.rs:745:17:745:19 | 100 | | +| main.rs:745:9:745:13 | mut x | main.rs:746:5:751:6 | let ... = ... | match | +| main.rs:745:13:745:13 | x | main.rs:745:9:745:13 | mut x | | +| main.rs:745:17:745:19 | 100 | main.rs:745:13:745:13 | x | | +| main.rs:746:5:751:6 | let ... = ... | main.rs:746:19:751:5 | \|...\| ... | | +| main.rs:746:9:746:15 | mut cap | main.rs:752:5:752:14 | ExprStmt | match | +| main.rs:746:13:746:15 | cap | main.rs:746:9:746:15 | mut cap | | +| main.rs:746:19:751:5 | \|...\| ... | main.rs:746:13:746:15 | cap | | +| main.rs:746:19:751:5 | enter \|...\| ... | main.rs:746:20:746:20 | b | | +| main.rs:746:19:751:5 | exit \|...\| ... (normal) | main.rs:746:19:751:5 | exit \|...\| ... | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:26 | ...: bool | match | +| main.rs:746:20:746:26 | ...: bool | main.rs:747:9:750:10 | let _ = ... | | +| main.rs:746:29:751:5 | { ... } | main.rs:746:19:751:5 | exit \|...\| ... (normal) | | +| main.rs:747:9:750:10 | let _ = ... | main.rs:748:20:748:20 | b | | +| main.rs:748:13:748:13 | _ | main.rs:746:29:751:5 | { ... } | match | +| main.rs:748:17:750:9 | if b {...} | main.rs:748:13:748:13 | _ | | +| main.rs:748:20:748:20 | b | main.rs:748:17:750:9 | if b {...} | false | +| main.rs:748:20:748:20 | b | main.rs:749:13:749:20 | ExprStmt | true | +| main.rs:748:22:750:9 | { ... } | main.rs:748:17:750:9 | if b {...} | | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | | +| main.rs:749:13:749:19 | ... = ... | main.rs:748:22:750:9 | { ... } | | +| main.rs:749:13:749:20 | ExprStmt | main.rs:749:13:749:13 | x | | +| main.rs:749:17:749:19 | 200 | main.rs:749:13:749:19 | ... = ... | | +| main.rs:752:5:752:7 | cap | main.rs:752:9:752:12 | true | | +| main.rs:752:5:752:13 | cap(...) | main.rs:753:5:753:17 | ExprStmt | | +| main.rs:752:5:752:14 | ExprStmt | main.rs:752:5:752:7 | cap | | +| main.rs:752:9:752:12 | true | main.rs:752:5:752:13 | cap(...) | | +| main.rs:753:5:753:13 | print_i64 | main.rs:753:15:753:15 | x | | +| main.rs:753:5:753:16 | print_i64(...) | main.rs:744:18:754:1 | { ... } | | +| main.rs:753:5:753:17 | ExprStmt | main.rs:753:5:753:13 | print_i64 | | +| main.rs:753:15:753:15 | x | main.rs:753:5:753:16 | print_i64(...) | | +| main.rs:756:1:800:1 | enter fn main | main.rs:757:5:757:25 | ExprStmt | | +| main.rs:756:1:800:1 | exit fn main (normal) | main.rs:756:1:800:1 | exit fn main | | +| main.rs:756:11:800:1 | { ... } | main.rs:756:1:800:1 | exit fn main (normal) | | +| main.rs:757:5:757:22 | immutable_variable | main.rs:757:5:757:24 | immutable_variable(...) | | +| main.rs:757:5:757:24 | immutable_variable(...) | main.rs:758:5:758:23 | ExprStmt | | +| main.rs:757:5:757:25 | ExprStmt | main.rs:757:5:757:22 | immutable_variable | | +| main.rs:758:5:758:20 | mutable_variable | main.rs:758:5:758:22 | mutable_variable(...) | | +| main.rs:758:5:758:22 | mutable_variable(...) | main.rs:759:5:759:40 | ExprStmt | | +| main.rs:758:5:758:23 | ExprStmt | main.rs:758:5:758:20 | mutable_variable | | +| main.rs:759:5:759:37 | mutable_variable_immutable_borrow | main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | | +| main.rs:759:5:759:39 | mutable_variable_immutable_borrow(...) | main.rs:760:5:760:23 | ExprStmt | | +| main.rs:759:5:759:40 | ExprStmt | main.rs:759:5:759:37 | mutable_variable_immutable_borrow | | +| main.rs:760:5:760:20 | variable_shadow1 | main.rs:760:5:760:22 | variable_shadow1(...) | | +| main.rs:760:5:760:22 | variable_shadow1(...) | main.rs:761:5:761:23 | ExprStmt | | +| main.rs:760:5:760:23 | ExprStmt | main.rs:760:5:760:20 | variable_shadow1 | | +| main.rs:761:5:761:20 | variable_shadow2 | main.rs:761:5:761:22 | variable_shadow2(...) | | +| main.rs:761:5:761:22 | variable_shadow2(...) | main.rs:762:5:762:19 | ExprStmt | | +| main.rs:761:5:761:23 | ExprStmt | main.rs:761:5:761:20 | variable_shadow2 | | +| main.rs:762:5:762:16 | let_pattern1 | main.rs:762:5:762:18 | let_pattern1(...) | | +| main.rs:762:5:762:18 | let_pattern1(...) | main.rs:763:5:763:19 | ExprStmt | | +| main.rs:762:5:762:19 | ExprStmt | main.rs:762:5:762:16 | let_pattern1 | | +| main.rs:763:5:763:16 | let_pattern2 | main.rs:763:5:763:18 | let_pattern2(...) | | +| main.rs:763:5:763:18 | let_pattern2(...) | main.rs:764:5:764:19 | ExprStmt | | +| main.rs:763:5:763:19 | ExprStmt | main.rs:763:5:763:16 | let_pattern2 | | +| main.rs:764:5:764:16 | let_pattern3 | main.rs:764:5:764:18 | let_pattern3(...) | | +| main.rs:764:5:764:18 | let_pattern3(...) | main.rs:765:5:765:19 | ExprStmt | | +| main.rs:764:5:764:19 | ExprStmt | main.rs:764:5:764:16 | let_pattern3 | | +| main.rs:765:5:765:16 | let_pattern4 | main.rs:765:5:765:18 | let_pattern4(...) | | +| main.rs:765:5:765:18 | let_pattern4(...) | main.rs:766:5:766:21 | ExprStmt | | +| main.rs:765:5:765:19 | ExprStmt | main.rs:765:5:765:16 | let_pattern4 | | +| main.rs:766:5:766:18 | match_pattern1 | main.rs:766:5:766:20 | match_pattern1(...) | | +| main.rs:766:5:766:20 | match_pattern1(...) | main.rs:767:5:767:21 | ExprStmt | | +| main.rs:766:5:766:21 | ExprStmt | main.rs:766:5:766:18 | match_pattern1 | | +| main.rs:767:5:767:18 | match_pattern2 | main.rs:767:5:767:20 | match_pattern2(...) | | +| main.rs:767:5:767:20 | match_pattern2(...) | main.rs:768:5:768:21 | ExprStmt | | +| main.rs:767:5:767:21 | ExprStmt | main.rs:767:5:767:18 | match_pattern2 | | +| main.rs:768:5:768:18 | match_pattern3 | main.rs:768:5:768:20 | match_pattern3(...) | | +| main.rs:768:5:768:20 | match_pattern3(...) | main.rs:769:5:769:21 | ExprStmt | | +| main.rs:768:5:768:21 | ExprStmt | main.rs:768:5:768:18 | match_pattern3 | | +| main.rs:769:5:769:18 | match_pattern4 | main.rs:769:5:769:20 | match_pattern4(...) | | +| main.rs:769:5:769:20 | match_pattern4(...) | main.rs:770:5:770:21 | ExprStmt | | +| main.rs:769:5:769:21 | ExprStmt | main.rs:769:5:769:18 | match_pattern4 | | +| main.rs:770:5:770:18 | match_pattern5 | main.rs:770:5:770:20 | match_pattern5(...) | | +| main.rs:770:5:770:20 | match_pattern5(...) | main.rs:771:5:771:21 | ExprStmt | | +| main.rs:770:5:770:21 | ExprStmt | main.rs:770:5:770:18 | match_pattern5 | | +| main.rs:771:5:771:18 | match_pattern6 | main.rs:771:5:771:20 | match_pattern6(...) | | +| main.rs:771:5:771:20 | match_pattern6(...) | main.rs:772:5:772:21 | ExprStmt | | +| main.rs:771:5:771:21 | ExprStmt | main.rs:771:5:771:18 | match_pattern6 | | +| main.rs:772:5:772:18 | match_pattern7 | main.rs:772:5:772:20 | match_pattern7(...) | | +| main.rs:772:5:772:20 | match_pattern7(...) | main.rs:773:5:773:21 | ExprStmt | | +| main.rs:772:5:772:21 | ExprStmt | main.rs:772:5:772:18 | match_pattern7 | | +| main.rs:773:5:773:18 | match_pattern8 | main.rs:773:5:773:20 | match_pattern8(...) | | +| main.rs:773:5:773:20 | match_pattern8(...) | main.rs:774:5:774:21 | ExprStmt | | +| main.rs:773:5:773:21 | ExprStmt | main.rs:773:5:773:18 | match_pattern8 | | +| main.rs:774:5:774:18 | match_pattern9 | main.rs:774:5:774:20 | match_pattern9(...) | | +| main.rs:774:5:774:20 | match_pattern9(...) | main.rs:775:5:775:22 | ExprStmt | | +| main.rs:774:5:774:21 | ExprStmt | main.rs:774:5:774:18 | match_pattern9 | | +| main.rs:775:5:775:19 | match_pattern10 | main.rs:775:5:775:21 | match_pattern10(...) | | +| main.rs:775:5:775:21 | match_pattern10(...) | main.rs:776:5:776:22 | ExprStmt | | +| main.rs:775:5:775:22 | ExprStmt | main.rs:775:5:775:19 | match_pattern10 | | +| main.rs:776:5:776:19 | match_pattern11 | main.rs:776:5:776:21 | match_pattern11(...) | | +| main.rs:776:5:776:21 | match_pattern11(...) | main.rs:777:5:777:22 | ExprStmt | | +| main.rs:776:5:776:22 | ExprStmt | main.rs:776:5:776:19 | match_pattern11 | | +| main.rs:777:5:777:19 | match_pattern12 | main.rs:777:5:777:21 | match_pattern12(...) | | +| main.rs:777:5:777:21 | match_pattern12(...) | main.rs:778:5:778:22 | ExprStmt | | +| main.rs:777:5:777:22 | ExprStmt | main.rs:777:5:777:19 | match_pattern12 | | +| main.rs:778:5:778:19 | match_pattern13 | main.rs:778:5:778:21 | match_pattern13(...) | | +| main.rs:778:5:778:21 | match_pattern13(...) | main.rs:779:5:779:22 | ExprStmt | | +| main.rs:778:5:778:22 | ExprStmt | main.rs:778:5:778:19 | match_pattern13 | | +| main.rs:779:5:779:19 | match_pattern14 | main.rs:779:5:779:21 | match_pattern14(...) | | +| main.rs:779:5:779:21 | match_pattern14(...) | main.rs:780:5:780:22 | ExprStmt | | +| main.rs:779:5:779:22 | ExprStmt | main.rs:779:5:779:19 | match_pattern14 | | +| main.rs:780:5:780:19 | match_pattern15 | main.rs:780:5:780:21 | match_pattern15(...) | | +| main.rs:780:5:780:21 | match_pattern15(...) | main.rs:781:5:781:22 | ExprStmt | | +| main.rs:780:5:780:22 | ExprStmt | main.rs:780:5:780:19 | match_pattern15 | | +| main.rs:781:5:781:19 | match_pattern16 | main.rs:781:5:781:21 | match_pattern16(...) | | +| main.rs:781:5:781:21 | match_pattern16(...) | main.rs:782:5:782:36 | ExprStmt | | +| main.rs:781:5:781:22 | ExprStmt | main.rs:781:5:781:19 | match_pattern16 | | +| main.rs:782:5:782:18 | param_pattern1 | main.rs:782:20:782:22 | "a" | | +| main.rs:782:5:782:35 | param_pattern1(...) | main.rs:783:5:783:37 | ExprStmt | | +| main.rs:782:5:782:36 | ExprStmt | main.rs:782:5:782:18 | param_pattern1 | | +| main.rs:782:20:782:22 | "a" | main.rs:782:26:782:28 | "b" | | +| main.rs:782:25:782:34 | TupleExpr | main.rs:782:5:782:35 | param_pattern1(...) | | +| main.rs:782:26:782:28 | "b" | main.rs:782:31:782:33 | "c" | | +| main.rs:782:31:782:33 | "c" | main.rs:782:25:782:34 | TupleExpr | | +| main.rs:783:5:783:18 | param_pattern2 | main.rs:783:20:783:31 | ...::Left | | +| main.rs:783:5:783:36 | param_pattern2(...) | main.rs:784:5:784:26 | ExprStmt | | +| main.rs:783:5:783:37 | ExprStmt | main.rs:783:5:783:18 | param_pattern2 | | +| main.rs:783:20:783:31 | ...::Left | main.rs:783:33:783:34 | 45 | | +| main.rs:783:20:783:35 | ...::Left(...) | main.rs:783:5:783:36 | param_pattern2(...) | | +| main.rs:783:33:783:34 | 45 | main.rs:783:20:783:35 | ...::Left(...) | | +| main.rs:784:5:784:23 | destruct_assignment | main.rs:784:5:784:25 | destruct_assignment(...) | | +| main.rs:784:5:784:25 | destruct_assignment(...) | main.rs:785:5:785:23 | ExprStmt | | +| main.rs:784:5:784:26 | ExprStmt | main.rs:784:5:784:23 | destruct_assignment | | +| main.rs:785:5:785:20 | closure_variable | main.rs:785:5:785:22 | closure_variable(...) | | +| main.rs:785:5:785:22 | closure_variable(...) | main.rs:786:5:786:22 | ExprStmt | | +| main.rs:785:5:785:23 | ExprStmt | main.rs:785:5:785:20 | closure_variable | | +| main.rs:786:5:786:19 | nested_function | main.rs:786:5:786:21 | nested_function(...) | | +| main.rs:786:5:786:21 | nested_function(...) | main.rs:787:5:787:19 | ExprStmt | | +| main.rs:786:5:786:22 | ExprStmt | main.rs:786:5:786:19 | nested_function | | +| main.rs:787:5:787:16 | for_variable | main.rs:787:5:787:18 | for_variable(...) | | +| main.rs:787:5:787:18 | for_variable(...) | main.rs:788:5:788:17 | ExprStmt | | +| main.rs:787:5:787:19 | ExprStmt | main.rs:787:5:787:16 | for_variable | | +| main.rs:788:5:788:14 | add_assign | main.rs:788:5:788:16 | add_assign(...) | | +| main.rs:788:5:788:16 | add_assign(...) | main.rs:789:5:789:13 | ExprStmt | | +| main.rs:788:5:788:17 | ExprStmt | main.rs:788:5:788:14 | add_assign | | +| main.rs:789:5:789:10 | mutate | main.rs:789:5:789:12 | mutate(...) | | +| main.rs:789:5:789:12 | mutate(...) | main.rs:790:5:790:17 | ExprStmt | | +| main.rs:789:5:789:13 | ExprStmt | main.rs:789:5:789:10 | mutate | | +| main.rs:790:5:790:14 | mutate_arg | main.rs:790:5:790:16 | mutate_arg(...) | | +| main.rs:790:5:790:16 | mutate_arg(...) | main.rs:791:5:791:12 | ExprStmt | | +| main.rs:790:5:790:17 | ExprStmt | main.rs:790:5:790:14 | mutate_arg | | +| main.rs:791:5:791:9 | alias | main.rs:791:5:791:11 | alias(...) | | +| main.rs:791:5:791:11 | alias(...) | main.rs:792:5:792:18 | ExprStmt | | +| main.rs:791:5:791:12 | ExprStmt | main.rs:791:5:791:9 | alias | | +| main.rs:792:5:792:15 | capture_mut | main.rs:792:5:792:17 | capture_mut(...) | | +| main.rs:792:5:792:17 | capture_mut(...) | main.rs:793:5:793:20 | ExprStmt | | +| main.rs:792:5:792:18 | ExprStmt | main.rs:792:5:792:15 | capture_mut | | +| main.rs:793:5:793:17 | capture_immut | main.rs:793:5:793:19 | capture_immut(...) | | +| main.rs:793:5:793:19 | capture_immut(...) | main.rs:794:5:794:26 | ExprStmt | | +| main.rs:793:5:793:20 | ExprStmt | main.rs:793:5:793:17 | capture_immut | | +| main.rs:794:5:794:23 | async_block_capture | main.rs:794:5:794:25 | async_block_capture(...) | | +| main.rs:794:5:794:25 | async_block_capture(...) | main.rs:795:5:795:14 | ExprStmt | | +| main.rs:794:5:794:26 | ExprStmt | main.rs:794:5:794:23 | async_block_capture | | +| main.rs:795:5:795:11 | structs | main.rs:795:5:795:13 | structs(...) | | +| main.rs:795:5:795:13 | structs(...) | main.rs:796:5:796:14 | ExprStmt | | +| main.rs:795:5:795:14 | ExprStmt | main.rs:795:5:795:11 | structs | | +| main.rs:796:5:796:11 | ref_arg | main.rs:796:5:796:13 | ref_arg(...) | | +| main.rs:796:5:796:13 | ref_arg(...) | main.rs:797:5:797:30 | ExprStmt | | +| main.rs:796:5:796:14 | ExprStmt | main.rs:796:5:796:11 | ref_arg | | +| main.rs:797:5:797:27 | ref_methodcall_receiver | main.rs:797:5:797:29 | ref_methodcall_receiver(...) | | +| main.rs:797:5:797:29 | ref_methodcall_receiver(...) | main.rs:798:5:798:23 | ExprStmt | | +| main.rs:797:5:797:30 | ExprStmt | main.rs:797:5:797:27 | ref_methodcall_receiver | | +| main.rs:798:5:798:20 | macro_invocation | main.rs:798:5:798:22 | macro_invocation(...) | | +| main.rs:798:5:798:22 | macro_invocation(...) | main.rs:799:5:799:18 | ExprStmt | | +| main.rs:798:5:798:23 | ExprStmt | main.rs:798:5:798:20 | macro_invocation | | +| main.rs:799:5:799:15 | capture_phi | main.rs:799:5:799:17 | capture_phi(...) | | +| main.rs:799:5:799:17 | capture_phi(...) | main.rs:756:11:800:1 | { ... } | | +| main.rs:799:5:799:18 | ExprStmt | main.rs:799:5:799:15 | capture_phi | | breakTarget | main.rs:326:9:326:13 | break | main.rs:317:5:327:5 | while ... { ... } | continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index 4b9764b21c9a..e3271f2c20da 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -94,105 +94,107 @@ definition | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | -| main.rs:384:33:384:34 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:384:53:384:54 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | -| main.rs:735:19:740:5 | x | main.rs:734:13:734:13 | x | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | +| main.rs:395:33:395:34 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:395:53:395:54 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | +| main.rs:746:19:751:5 | x | main.rs:745:13:745:13 | x | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | read | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -284,120 +286,123 @@ read | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:455:15:455:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:488:11:488:11 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:512:9:512:9 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:526:19:526:19 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:531:7:531:7 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:598:15:598:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:608:19:608:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:651:9:651:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:659:15:659:15 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:668:15:668:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:676:15:676:15 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:378:26:378:26 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:466:15:466:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:499:11:499:11 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:523:9:523:9 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:537:19:537:19 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:542:7:542:7 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:609:15:609:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:619:19:619:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:662:9:662:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:670:15:670:15 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:679:15:679:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:687:15:687:15 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | firstRead | main.rs:5:14:5:14 | s | main.rs:5:14:5:14 | s | main.rs:7:20:7:20 | s | | main.rs:10:14:10:14 | i | main.rs:10:14:10:14 | i | main.rs:12:20:12:20 | i | @@ -472,95 +477,97 @@ firstRead | main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x | | main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | -| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 | -| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 | -| main.rs:376:9:376:10 | c1 | main.rs:376:9:376:10 | c1 | main.rs:381:15:381:16 | c1 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:386:15:386:16 | a9 | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | main.rs:410:15:410:16 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | -| main.rs:414:13:414:15 | a10 | main.rs:414:13:414:15 | a10 | main.rs:417:23:417:25 | a10 | -| main.rs:415:13:415:14 | b4 | main.rs:415:13:415:14 | b4 | main.rs:418:23:418:24 | b4 | -| main.rs:427:9:427:23 | example_closure | main.rs:427:9:427:23 | example_closure | main.rs:431:9:431:23 | example_closure | -| main.rs:428:10:428:10 | x | main.rs:428:10:428:10 | x | main.rs:429:9:429:9 | x | -| main.rs:430:9:430:10 | n1 | main.rs:430:9:430:10 | n1 | main.rs:432:15:432:16 | n1 | -| main.rs:435:9:435:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | main.rs:439:9:439:26 | immutable_variable | -| main.rs:436:6:436:6 | x | main.rs:436:6:436:6 | x | main.rs:437:9:437:9 | x | -| main.rs:438:9:438:10 | n2 | main.rs:438:9:438:10 | n2 | main.rs:440:15:440:16 | n2 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | -| main.rs:446:10:446:10 | x | main.rs:446:10:446:10 | x | main.rs:447:9:447:9 | x | -| main.rs:450:10:450:10 | x | main.rs:450:10:450:10 | x | main.rs:452:9:452:9 | x | -| main.rs:459:14:459:14 | x | main.rs:459:14:459:14 | x | main.rs:461:17:461:17 | x | -| main.rs:468:13:468:13 | f | main.rs:468:13:468:13 | f | main.rs:471:19:471:19 | f | -| main.rs:469:14:469:14 | x | main.rs:469:14:469:14 | x | main.rs:470:13:470:13 | x | -| main.rs:476:9:476:9 | v | main.rs:476:9:476:9 | v | main.rs:479:12:479:12 | v | -| main.rs:478:9:478:12 | text | main.rs:478:9:478:12 | text | main.rs:480:19:480:22 | text | -| main.rs:485:13:485:13 | a | main.rs:485:13:485:13 | a | main.rs:486:5:486:5 | a | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | -| main.rs:488:6:488:11 | &mut a | main.rs:485:13:485:13 | a | main.rs:489:15:489:15 | a | -| main.rs:493:13:493:13 | i | main.rs:493:13:493:13 | i | main.rs:495:14:495:14 | i | -| main.rs:494:9:494:13 | ref_i | main.rs:494:9:494:13 | ref_i | main.rs:496:6:496:10 | ref_i | -| main.rs:495:9:495:14 | &mut i | main.rs:493:13:493:13 | i | main.rs:497:15:497:15 | i | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | -| main.rs:507:38:507:38 | y | main.rs:507:38:507:38 | y | main.rs:511:6:511:6 | y | -| main.rs:516:13:516:13 | x | main.rs:516:13:516:13 | x | main.rs:518:27:518:27 | x | -| main.rs:517:9:517:9 | y | main.rs:517:9:517:9 | y | main.rs:519:6:519:6 | y | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | -| main.rs:524:13:524:13 | z | main.rs:524:13:524:13 | z | main.rs:528:14:528:14 | z | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | -| main.rs:528:9:528:14 | &mut z | main.rs:524:13:524:13 | z | main.rs:534:15:534:15 | z | -| main.rs:538:13:538:13 | x | main.rs:538:13:538:13 | x | main.rs:540:14:540:14 | x | -| main.rs:539:9:539:9 | y | main.rs:539:9:539:9 | y | main.rs:541:6:541:6 | y | -| main.rs:540:9:540:14 | &mut x | main.rs:538:13:538:13 | x | main.rs:542:15:542:15 | x | -| main.rs:546:9:546:9 | x | main.rs:546:9:546:9 | x | main.rs:553:15:553:15 | x | -| main.rs:549:9:549:11 | cap | main.rs:549:9:549:11 | cap | main.rs:552:5:552:7 | cap | -| main.rs:549:15:551:5 | x | main.rs:546:9:546:9 | x | main.rs:550:19:550:19 | x | -| main.rs:557:13:557:13 | x | main.rs:557:13:557:13 | x | main.rs:564:15:564:15 | x | -| main.rs:560:9:560:16 | closure1 | main.rs:560:9:560:16 | closure1 | main.rs:563:5:563:12 | closure1 | -| main.rs:560:20:562:5 | x | main.rs:557:13:557:13 | x | main.rs:561:19:561:19 | x | -| main.rs:569:13:569:20 | closure2 | main.rs:569:13:569:20 | closure2 | main.rs:572:5:572:12 | closure2 | -| main.rs:572:5:572:14 | y | main.rs:566:13:566:13 | y | main.rs:573:15:573:15 | y | -| main.rs:575:13:575:13 | z | main.rs:575:13:575:13 | z | main.rs:582:15:582:15 | z | -| main.rs:578:13:578:20 | closure3 | main.rs:578:13:578:20 | closure3 | main.rs:581:5:581:12 | closure3 | -| main.rs:578:24:580:5 | z | main.rs:575:13:575:13 | z | main.rs:579:9:579:9 | z | -| main.rs:587:9:587:13 | block | main.rs:587:9:587:13 | block | main.rs:591:5:591:9 | block | -| main.rs:591:5:591:15 | i | main.rs:586:13:586:13 | i | main.rs:592:15:592:15 | i | -| main.rs:595:8:595:8 | b | main.rs:595:8:595:8 | b | main.rs:600:16:600:16 | b | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:610:15:610:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | -| main.rs:613:13:613:14 | b1 | main.rs:613:13:613:14 | b1 | main.rs:616:16:616:17 | b1 | -| main.rs:613:23:613:24 | b2 | main.rs:613:23:613:24 | b2 | main.rs:624:16:624:17 | b2 | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | -| main.rs:637:20:637:23 | self | main.rs:637:20:637:23 | self | main.rs:638:16:638:19 | self | -| main.rs:641:11:641:14 | self | main.rs:641:11:641:14 | self | main.rs:642:9:642:12 | self | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | -| main.rs:646:21:649:9 | self | main.rs:645:23:645:26 | self | main.rs:648:13:648:16 | self | -| main.rs:646:22:646:22 | n | main.rs:646:22:646:22 | n | main.rs:648:25:648:25 | n | -| main.rs:656:13:656:13 | a | main.rs:656:13:656:13 | a | main.rs:657:15:657:15 | a | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | main.rs:661:15:661:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | main.rs:670:15:670:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | -| main.rs:678:9:678:9 | z | main.rs:678:9:678:9 | z | main.rs:679:20:679:20 | z | -| main.rs:687:17:687:20 | self | main.rs:687:17:687:20 | self | main.rs:688:10:688:13 | self | -| main.rs:693:13:693:13 | a | main.rs:693:13:693:13 | a | main.rs:694:5:694:5 | a | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | main.rs:697:15:697:15 | a | -| main.rs:715:9:715:22 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | main.rs:717:15:717:28 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | main.rs:724:15:724:26 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | main.rs:723:30:723:41 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | main.rs:730:15:730:15 | x | -| main.rs:735:13:735:15 | cap | main.rs:735:13:735:15 | cap | main.rs:741:5:741:7 | cap | -| main.rs:735:20:735:20 | b | main.rs:735:20:735:20 | b | main.rs:737:20:737:20 | b | -| main.rs:741:5:741:13 | x | main.rs:734:13:734:13 | x | main.rs:742:15:742:15 | x | +| main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | +| main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | +| main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:397:15:397:16 | a9 | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | main.rs:421:15:421:16 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | +| main.rs:425:13:425:15 | a10 | main.rs:425:13:425:15 | a10 | main.rs:428:23:428:25 | a10 | +| main.rs:426:13:426:14 | b4 | main.rs:426:13:426:14 | b4 | main.rs:429:23:429:24 | b4 | +| main.rs:438:9:438:23 | example_closure | main.rs:438:9:438:23 | example_closure | main.rs:442:9:442:23 | example_closure | +| main.rs:439:10:439:10 | x | main.rs:439:10:439:10 | x | main.rs:440:9:440:9 | x | +| main.rs:441:9:441:10 | n1 | main.rs:441:9:441:10 | n1 | main.rs:443:15:443:16 | n1 | +| main.rs:446:9:446:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | main.rs:450:9:450:26 | immutable_variable | +| main.rs:447:6:447:6 | x | main.rs:447:6:447:6 | x | main.rs:448:9:448:9 | x | +| main.rs:449:9:449:10 | n2 | main.rs:449:9:449:10 | n2 | main.rs:451:15:451:16 | n2 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | +| main.rs:457:10:457:10 | x | main.rs:457:10:457:10 | x | main.rs:458:9:458:9 | x | +| main.rs:461:10:461:10 | x | main.rs:461:10:461:10 | x | main.rs:463:9:463:9 | x | +| main.rs:470:14:470:14 | x | main.rs:470:14:470:14 | x | main.rs:472:17:472:17 | x | +| main.rs:479:13:479:13 | f | main.rs:479:13:479:13 | f | main.rs:482:19:482:19 | f | +| main.rs:480:14:480:14 | x | main.rs:480:14:480:14 | x | main.rs:481:13:481:13 | x | +| main.rs:487:9:487:9 | v | main.rs:487:9:487:9 | v | main.rs:490:12:490:12 | v | +| main.rs:489:9:489:12 | text | main.rs:489:9:489:12 | text | main.rs:491:19:491:22 | text | +| main.rs:496:13:496:13 | a | main.rs:496:13:496:13 | a | main.rs:497:5:497:5 | a | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | +| main.rs:499:6:499:11 | &mut a | main.rs:496:13:496:13 | a | main.rs:500:15:500:15 | a | +| main.rs:504:13:504:13 | i | main.rs:504:13:504:13 | i | main.rs:506:14:506:14 | i | +| main.rs:505:9:505:13 | ref_i | main.rs:505:9:505:13 | ref_i | main.rs:507:6:507:10 | ref_i | +| main.rs:506:9:506:14 | &mut i | main.rs:504:13:504:13 | i | main.rs:508:15:508:15 | i | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | +| main.rs:518:38:518:38 | y | main.rs:518:38:518:38 | y | main.rs:522:6:522:6 | y | +| main.rs:527:13:527:13 | x | main.rs:527:13:527:13 | x | main.rs:529:27:529:27 | x | +| main.rs:528:9:528:9 | y | main.rs:528:9:528:9 | y | main.rs:530:6:530:6 | y | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | +| main.rs:535:13:535:13 | z | main.rs:535:13:535:13 | z | main.rs:539:14:539:14 | z | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | +| main.rs:539:9:539:14 | &mut z | main.rs:535:13:535:13 | z | main.rs:545:15:545:15 | z | +| main.rs:549:13:549:13 | x | main.rs:549:13:549:13 | x | main.rs:551:14:551:14 | x | +| main.rs:550:9:550:9 | y | main.rs:550:9:550:9 | y | main.rs:552:6:552:6 | y | +| main.rs:551:9:551:14 | &mut x | main.rs:549:13:549:13 | x | main.rs:553:15:553:15 | x | +| main.rs:557:9:557:9 | x | main.rs:557:9:557:9 | x | main.rs:564:15:564:15 | x | +| main.rs:560:9:560:11 | cap | main.rs:560:9:560:11 | cap | main.rs:563:5:563:7 | cap | +| main.rs:560:15:562:5 | x | main.rs:557:9:557:9 | x | main.rs:561:19:561:19 | x | +| main.rs:568:13:568:13 | x | main.rs:568:13:568:13 | x | main.rs:575:15:575:15 | x | +| main.rs:571:9:571:16 | closure1 | main.rs:571:9:571:16 | closure1 | main.rs:574:5:574:12 | closure1 | +| main.rs:571:20:573:5 | x | main.rs:568:13:568:13 | x | main.rs:572:19:572:19 | x | +| main.rs:580:13:580:20 | closure2 | main.rs:580:13:580:20 | closure2 | main.rs:583:5:583:12 | closure2 | +| main.rs:583:5:583:14 | y | main.rs:577:13:577:13 | y | main.rs:584:15:584:15 | y | +| main.rs:586:13:586:13 | z | main.rs:586:13:586:13 | z | main.rs:593:15:593:15 | z | +| main.rs:589:13:589:20 | closure3 | main.rs:589:13:589:20 | closure3 | main.rs:592:5:592:12 | closure3 | +| main.rs:589:24:591:5 | z | main.rs:586:13:586:13 | z | main.rs:590:9:590:9 | z | +| main.rs:598:9:598:13 | block | main.rs:598:9:598:13 | block | main.rs:602:5:602:9 | block | +| main.rs:602:5:602:15 | i | main.rs:597:13:597:13 | i | main.rs:603:15:603:15 | i | +| main.rs:606:8:606:8 | b | main.rs:606:8:606:8 | b | main.rs:611:16:611:16 | b | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:621:15:621:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | +| main.rs:624:13:624:14 | b1 | main.rs:624:13:624:14 | b1 | main.rs:627:16:627:17 | b1 | +| main.rs:624:23:624:24 | b2 | main.rs:624:23:624:24 | b2 | main.rs:635:16:635:17 | b2 | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | +| main.rs:648:20:648:23 | self | main.rs:648:20:648:23 | self | main.rs:649:16:649:19 | self | +| main.rs:652:11:652:14 | self | main.rs:652:11:652:14 | self | main.rs:653:9:653:12 | self | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | +| main.rs:657:21:660:9 | self | main.rs:656:23:656:26 | self | main.rs:659:13:659:16 | self | +| main.rs:657:22:657:22 | n | main.rs:657:22:657:22 | n | main.rs:659:25:659:25 | n | +| main.rs:667:13:667:13 | a | main.rs:667:13:667:13 | a | main.rs:668:15:668:15 | a | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | main.rs:672:15:672:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | main.rs:681:15:681:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | +| main.rs:689:9:689:9 | z | main.rs:689:9:689:9 | z | main.rs:690:20:690:20 | z | +| main.rs:698:17:698:20 | self | main.rs:698:17:698:20 | self | main.rs:699:10:699:13 | self | +| main.rs:704:13:704:13 | a | main.rs:704:13:704:13 | a | main.rs:705:5:705:5 | a | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | main.rs:708:15:708:15 | a | +| main.rs:726:9:726:22 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | main.rs:728:15:728:28 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | main.rs:735:15:735:26 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | main.rs:734:30:734:41 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | main.rs:741:15:741:15 | x | +| main.rs:746:13:746:15 | cap | main.rs:746:13:746:15 | cap | main.rs:752:5:752:7 | cap | +| main.rs:746:20:746:20 | b | main.rs:746:20:746:20 | b | main.rs:748:20:748:20 | b | +| main.rs:752:5:752:13 | x | main.rs:745:13:745:13 | x | main.rs:753:15:753:15 | x | adjacentReads | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | main.rs:28:15:28:16 | x2 | main.rs:29:10:29:11 | x2 | | main.rs:41:9:41:10 | x3 | main.rs:41:9:41:10 | x3 | main.rs:42:15:42:16 | x3 | main.rs:44:9:44:10 | x3 | @@ -580,33 +587,34 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 | -| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 | -| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | main.rs:409:15:409:16 | b4 | main.rs:423:15:423:16 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | main.rs:408:15:408:17 | a10 | main.rs:422:15:422:17 | a10 | -| main.rs:445:9:445:9 | f | main.rs:445:9:445:9 | f | main.rs:448:15:448:15 | f | main.rs:455:15:455:15 | f | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | main.rs:487:15:487:15 | a | main.rs:488:11:488:11 | a | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:501:6:501:6 | x | main.rs:502:10:502:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:502:10:502:10 | x | main.rs:503:10:503:10 | x | -| main.rs:500:17:500:17 | x | main.rs:500:17:500:17 | x | main.rs:503:10:503:10 | x | main.rs:504:12:504:12 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:508:6:508:6 | x | main.rs:509:10:509:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:509:10:509:10 | x | main.rs:510:10:510:10 | x | -| main.rs:507:22:507:22 | x | main.rs:507:22:507:22 | x | main.rs:510:10:510:10 | x | main.rs:512:9:512:9 | x | -| main.rs:518:22:518:27 | &mut x | main.rs:516:13:516:13 | x | main.rs:522:15:522:15 | x | main.rs:526:19:526:19 | x | -| main.rs:525:9:525:9 | w | main.rs:525:9:525:9 | w | main.rs:529:9:529:9 | w | main.rs:531:7:531:7 | w | -| main.rs:596:13:596:13 | x | main.rs:596:13:596:13 | x | main.rs:597:15:597:15 | x | main.rs:598:15:598:15 | x | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | main.rs:603:19:603:19 | x | main.rs:604:19:604:19 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | main.rs:607:19:607:19 | x | main.rs:608:19:608:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:618:19:618:19 | x | main.rs:628:19:628:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:626:19:626:19 | x | -| main.rs:614:9:614:9 | x | main.rs:614:9:614:9 | x | main.rs:620:19:620:19 | x | main.rs:628:19:628:19 | x | -| main.rs:646:17:646:17 | f | main.rs:646:17:646:17 | f | main.rs:650:9:650:9 | f | main.rs:651:9:651:9 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | main.rs:658:5:658:5 | a | main.rs:659:15:659:15 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:666:15:666:15 | a | main.rs:667:5:667:5 | a | -| main.rs:665:13:665:13 | a | main.rs:665:13:665:13 | a | main.rs:667:5:667:5 | a | main.rs:668:15:668:15 | a | -| main.rs:674:9:674:9 | x | main.rs:674:9:674:9 | x | main.rs:675:20:675:20 | x | main.rs:676:15:676:15 | x | +| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | main.rs:378:26:378:26 | y | +| main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | +| main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | +| main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | main.rs:420:15:420:16 | b4 | main.rs:434:15:434:16 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | main.rs:419:15:419:17 | a10 | main.rs:433:15:433:17 | a10 | +| main.rs:456:9:456:9 | f | main.rs:456:9:456:9 | f | main.rs:459:15:459:15 | f | main.rs:466:15:466:15 | f | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | main.rs:498:15:498:15 | a | main.rs:499:11:499:11 | a | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:512:6:512:6 | x | main.rs:513:10:513:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:513:10:513:10 | x | main.rs:514:10:514:10 | x | +| main.rs:511:17:511:17 | x | main.rs:511:17:511:17 | x | main.rs:514:10:514:10 | x | main.rs:515:12:515:12 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:519:6:519:6 | x | main.rs:520:10:520:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:520:10:520:10 | x | main.rs:521:10:521:10 | x | +| main.rs:518:22:518:22 | x | main.rs:518:22:518:22 | x | main.rs:521:10:521:10 | x | main.rs:523:9:523:9 | x | +| main.rs:529:22:529:27 | &mut x | main.rs:527:13:527:13 | x | main.rs:533:15:533:15 | x | main.rs:537:19:537:19 | x | +| main.rs:536:9:536:9 | w | main.rs:536:9:536:9 | w | main.rs:540:9:540:9 | w | main.rs:542:7:542:7 | w | +| main.rs:607:13:607:13 | x | main.rs:607:13:607:13 | x | main.rs:608:15:608:15 | x | main.rs:609:15:609:15 | x | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | main.rs:614:19:614:19 | x | main.rs:615:19:615:19 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | main.rs:618:19:618:19 | x | main.rs:619:19:619:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:629:19:629:19 | x | main.rs:639:19:639:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:637:19:637:19 | x | +| main.rs:625:9:625:9 | x | main.rs:625:9:625:9 | x | main.rs:631:19:631:19 | x | main.rs:639:19:639:19 | x | +| main.rs:657:17:657:17 | f | main.rs:657:17:657:17 | f | main.rs:661:9:661:9 | f | main.rs:662:9:662:9 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | main.rs:669:5:669:5 | a | main.rs:670:15:670:15 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:677:15:677:15 | a | main.rs:678:5:678:5 | a | +| main.rs:676:13:676:13 | a | main.rs:676:13:676:13 | a | main.rs:678:5:678:5 | a | main.rs:679:15:679:15 | a | +| main.rs:685:9:685:9 | x | main.rs:685:9:685:9 | x | main.rs:686:20:686:20 | x | main.rs:687:15:687:15 | x | phi | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:9:210:44 | a3 | main.rs:210:42:210:43 | a3 | @@ -630,24 +638,24 @@ phi | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:9:274:109 | a13 | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:20:384:55 | a9 | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:596:13:596:13 | x | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:734:13:734:13 | x | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:20:395:55 | a9 | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:607:13:607:13 | x | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:745:13:745:13 | x | main.rs:749:13:749:13 | x | phiReadNode | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | phiReadNodeFirstRead | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | main.rs:116:11:116:12 | s1 | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:626:19:626:19 | x | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:614:9:614:9 | x | main.rs:628:19:628:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:637:19:637:19 | x | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:625:9:625:9 | x | main.rs:639:19:639:19 | x | phiReadInput | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:113:9:113:10 | s1 | | main.rs:116:11:116:12 | SSA phi read(s1) | main.rs:116:11:116:12 | SSA read(s1) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:618:19:618:19 | SSA read(x) | -| main.rs:616:13:621:5 | SSA phi read(x) | main.rs:620:19:620:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:629:19:629:19 | SSA read(x) | +| main.rs:627:13:632:5 | SSA phi read(x) | main.rs:631:19:631:19 | SSA read(x) | ultimateDef | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:22:210:23 | a3 | | main.rs:210:9:210:44 | SSA phi(a3) | main.rs:210:42:210:43 | a3 | @@ -674,12 +682,12 @@ ultimateDef | main.rs:274:9:274:109 | SSA phi(a13) | main.rs:274:106:274:108 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:54:274:56 | a13 | | main.rs:274:35:274:82 | [match(true)] SSA phi(a13) | main.rs:274:79:274:81 | a13 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:33:384:34 | a9 | -| main.rs:384:20:384:55 | SSA phi(a9) | main.rs:384:53:384:54 | a9 | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:602:9:602:9 | x | -| main.rs:600:13:609:5 | SSA phi(x) | main.rs:606:9:606:9 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:735:19:740:5 | x | -| main.rs:737:17:739:9 | SSA phi(x) | main.rs:738:13:738:13 | x | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:33:395:34 | a9 | +| main.rs:395:20:395:55 | SSA phi(a9) | main.rs:395:53:395:54 | a9 | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:613:9:613:9 | x | +| main.rs:611:13:620:5 | SSA phi(x) | main.rs:617:9:617:9 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:746:19:751:5 | x | +| main.rs:748:17:750:9 | SSA phi(x) | main.rs:749:13:749:13 | x | assigns | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -715,51 +723,52 @@ assigns | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:570:9:570:9 | y | main.rs:570:13:570:13 | 3 | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:588:9:588:9 | i | main.rs:588:13:588:13 | 1 | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:602:9:602:9 | x | main.rs:602:13:602:13 | 2 | -| main.rs:606:9:606:9 | x | main.rs:606:13:606:13 | 3 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:660:5:660:5 | a | main.rs:660:9:660:27 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:669:5:669:5 | a | main.rs:669:9:669:17 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:729:5:729:5 | x | main.rs:729:9:729:9 | 1 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | -| main.rs:738:13:738:13 | x | main.rs:738:17:738:19 | 200 | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:581:9:581:9 | y | main.rs:581:13:581:13 | 3 | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:599:9:599:9 | i | main.rs:599:13:599:13 | 1 | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:613:9:613:9 | x | main.rs:613:13:613:13 | 2 | +| main.rs:617:9:617:9 | x | main.rs:617:13:617:13 | 3 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:671:5:671:5 | a | main.rs:671:9:671:27 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:680:5:680:5 | a | main.rs:680:9:680:17 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:740:5:740:5 | x | main.rs:740:9:740:9 | 1 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | +| main.rs:749:13:749:13 | x | main.rs:749:17:749:19 | 200 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index 3ed78f601d64..b809f498752e 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -369,6 +369,17 @@ fn match_pattern15() { }; } +fn match_pattern16() { + let x = Some(32); + match x { // $ read_access=x + Some(y) // y1 + if let Some(y) = // y2 + Some(y) // $ read_access=y1 + => print_i64(y), // $ MISSING: read_access=y2 $ SPURIOUS: read_access=y1 + _ => {}, + } +} + fn param_pattern1( a8: &str, // a8 ( @@ -767,6 +778,7 @@ fn main() { match_pattern13(); match_pattern14(); match_pattern15(); + match_pattern16(); param_pattern1("a", ("b", "c")); param_pattern2(Either::Left(45)); destruct_assignment(); diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 22c54b9740c9..944a93ccab11 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -70,75 +70,78 @@ variable | main.rs:354:20:354:20 | x | | main.rs:364:9:364:9 | x | | main.rs:366:18:366:18 | x | -| main.rs:373:5:373:6 | a8 | -| main.rs:375:9:375:10 | b3 | -| main.rs:376:9:376:10 | c1 | -| main.rs:384:20:384:55 | a9 | -| main.rs:391:13:391:15 | a10 | -| main.rs:392:13:392:14 | b4 | -| main.rs:393:13:393:14 | c2 | -| main.rs:414:13:414:15 | a10 | -| main.rs:415:13:415:14 | b4 | -| main.rs:427:9:427:23 | example_closure | -| main.rs:428:10:428:10 | x | -| main.rs:430:9:430:10 | n1 | -| main.rs:435:9:435:26 | immutable_variable | -| main.rs:436:6:436:6 | x | -| main.rs:438:9:438:10 | n2 | -| main.rs:445:9:445:9 | f | -| main.rs:446:10:446:10 | x | -| main.rs:450:10:450:10 | x | -| main.rs:459:14:459:14 | x | -| main.rs:468:13:468:13 | f | -| main.rs:469:14:469:14 | x | -| main.rs:476:9:476:9 | v | -| main.rs:478:9:478:12 | text | -| main.rs:485:13:485:13 | a | -| main.rs:493:13:493:13 | i | -| main.rs:494:9:494:13 | ref_i | -| main.rs:500:17:500:17 | x | -| main.rs:507:22:507:22 | x | -| main.rs:507:38:507:38 | y | -| main.rs:516:13:516:13 | x | -| main.rs:517:9:517:9 | y | -| main.rs:524:13:524:13 | z | -| main.rs:525:9:525:9 | w | -| main.rs:538:13:538:13 | x | -| main.rs:539:9:539:9 | y | -| main.rs:546:9:546:9 | x | -| main.rs:549:9:549:11 | cap | -| main.rs:557:13:557:13 | x | -| main.rs:560:9:560:16 | closure1 | -| main.rs:566:13:566:13 | y | -| main.rs:569:13:569:20 | closure2 | -| main.rs:575:13:575:13 | z | -| main.rs:578:13:578:20 | closure3 | -| main.rs:586:13:586:13 | i | -| main.rs:587:9:587:13 | block | -| main.rs:595:8:595:8 | b | -| main.rs:596:13:596:13 | x | -| main.rs:613:13:613:14 | b1 | -| main.rs:613:23:613:24 | b2 | -| main.rs:614:9:614:9 | x | -| main.rs:637:20:637:23 | self | -| main.rs:641:11:641:14 | self | -| main.rs:645:23:645:26 | self | -| main.rs:646:17:646:17 | f | -| main.rs:646:22:646:22 | n | -| main.rs:656:13:656:13 | a | -| main.rs:665:13:665:13 | a | -| main.rs:674:9:674:9 | x | -| main.rs:678:9:678:9 | z | -| main.rs:687:17:687:20 | self | -| main.rs:693:13:693:13 | a | -| main.rs:715:9:715:22 | var_from_macro | -| main.rs:716:9:716:21 | var_in_macro | -| main.rs:718:9:718:20 | var_in_macro | -| main.rs:723:15:723:28 | var_in_macro | -| main.rs:728:9:728:9 | x | -| main.rs:734:13:734:13 | x | -| main.rs:735:13:735:15 | cap | -| main.rs:735:20:735:20 | b | +| main.rs:373:9:373:9 | x | +| main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | +| main.rs:384:5:384:6 | a8 | +| main.rs:386:9:386:10 | b3 | +| main.rs:387:9:387:10 | c1 | +| main.rs:395:20:395:55 | a9 | +| main.rs:402:13:402:15 | a10 | +| main.rs:403:13:403:14 | b4 | +| main.rs:404:13:404:14 | c2 | +| main.rs:425:13:425:15 | a10 | +| main.rs:426:13:426:14 | b4 | +| main.rs:438:9:438:23 | example_closure | +| main.rs:439:10:439:10 | x | +| main.rs:441:9:441:10 | n1 | +| main.rs:446:9:446:26 | immutable_variable | +| main.rs:447:6:447:6 | x | +| main.rs:449:9:449:10 | n2 | +| main.rs:456:9:456:9 | f | +| main.rs:457:10:457:10 | x | +| main.rs:461:10:461:10 | x | +| main.rs:470:14:470:14 | x | +| main.rs:479:13:479:13 | f | +| main.rs:480:14:480:14 | x | +| main.rs:487:9:487:9 | v | +| main.rs:489:9:489:12 | text | +| main.rs:496:13:496:13 | a | +| main.rs:504:13:504:13 | i | +| main.rs:505:9:505:13 | ref_i | +| main.rs:511:17:511:17 | x | +| main.rs:518:22:518:22 | x | +| main.rs:518:38:518:38 | y | +| main.rs:527:13:527:13 | x | +| main.rs:528:9:528:9 | y | +| main.rs:535:13:535:13 | z | +| main.rs:536:9:536:9 | w | +| main.rs:549:13:549:13 | x | +| main.rs:550:9:550:9 | y | +| main.rs:557:9:557:9 | x | +| main.rs:560:9:560:11 | cap | +| main.rs:568:13:568:13 | x | +| main.rs:571:9:571:16 | closure1 | +| main.rs:577:13:577:13 | y | +| main.rs:580:13:580:20 | closure2 | +| main.rs:586:13:586:13 | z | +| main.rs:589:13:589:20 | closure3 | +| main.rs:597:13:597:13 | i | +| main.rs:598:9:598:13 | block | +| main.rs:606:8:606:8 | b | +| main.rs:607:13:607:13 | x | +| main.rs:624:13:624:14 | b1 | +| main.rs:624:23:624:24 | b2 | +| main.rs:625:9:625:9 | x | +| main.rs:648:20:648:23 | self | +| main.rs:652:11:652:14 | self | +| main.rs:656:23:656:26 | self | +| main.rs:657:17:657:17 | f | +| main.rs:657:22:657:22 | n | +| main.rs:667:13:667:13 | a | +| main.rs:676:13:676:13 | a | +| main.rs:685:9:685:9 | x | +| main.rs:689:9:689:9 | z | +| main.rs:698:17:698:20 | self | +| main.rs:704:13:704:13 | a | +| main.rs:726:9:726:22 | var_from_macro | +| main.rs:727:9:727:21 | var_in_macro | +| main.rs:729:9:729:20 | var_in_macro | +| main.rs:734:15:734:28 | var_in_macro | +| main.rs:739:9:739:9 | x | +| main.rs:745:13:745:13 | x | +| main.rs:746:13:746:15 | cap | +| main.rs:746:20:746:20 | b | variableAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -233,146 +236,149 @@ variableAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:486:5:486:5 | a | main.rs:485:13:485:13 | a | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:488:11:488:11 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:495:14:495:14 | i | main.rs:493:13:493:13 | i | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:518:27:518:27 | x | main.rs:516:13:516:13 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:526:19:526:19 | x | main.rs:516:13:516:13 | x | -| main.rs:528:14:528:14 | z | main.rs:524:13:524:13 | z | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:540:14:540:14 | x | main.rs:538:13:538:13 | x | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:675:20:675:20 | x | main.rs:674:9:674:9 | x | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:679:20:679:20 | z | main.rs:678:9:678:9 | z | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:497:5:497:5 | a | main.rs:496:13:496:13 | a | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:499:11:499:11 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:506:14:506:14 | i | main.rs:504:13:504:13 | i | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:529:27:529:27 | x | main.rs:527:13:527:13 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:537:19:537:19 | x | main.rs:527:13:527:13 | x | +| main.rs:539:14:539:14 | z | main.rs:535:13:535:13 | z | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:551:14:551:14 | x | main.rs:549:13:549:13 | x | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:686:20:686:20 | x | main.rs:685:9:685:9 | x | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:690:20:690:20 | z | main.rs:689:9:689:9 | z | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | variableWriteAccess | main.rs:27:5:27:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:29:5:29:6 | x2 | main.rs:25:13:25:14 | x2 | | main.rs:36:5:36:5 | x | main.rs:34:13:34:13 | x | -| main.rs:400:9:400:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:401:9:401:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:402:9:402:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:570:9:570:9 | y | main.rs:566:13:566:13 | y | -| main.rs:588:9:588:9 | i | main.rs:586:13:586:13 | i | -| main.rs:602:9:602:9 | x | main.rs:596:13:596:13 | x | -| main.rs:606:9:606:9 | x | main.rs:596:13:596:13 | x | -| main.rs:660:5:660:5 | a | main.rs:656:13:656:13 | a | -| main.rs:669:5:669:5 | a | main.rs:665:13:665:13 | a | -| main.rs:729:5:729:5 | x | main.rs:728:9:728:9 | x | -| main.rs:738:13:738:13 | x | main.rs:734:13:734:13 | x | +| main.rs:411:9:411:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:412:9:412:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:413:9:413:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:581:9:581:9 | y | main.rs:577:13:577:13 | y | +| main.rs:599:9:599:9 | i | main.rs:597:13:597:13 | i | +| main.rs:613:9:613:9 | x | main.rs:607:13:607:13 | x | +| main.rs:617:9:617:9 | x | main.rs:607:13:607:13 | x | +| main.rs:671:5:671:5 | a | main.rs:667:13:667:13 | a | +| main.rs:680:5:680:5 | a | main.rs:676:13:676:13 | a | +| main.rs:740:5:740:5 | x | main.rs:739:9:739:9 | x | +| main.rs:749:13:749:13 | x | main.rs:745:13:745:13 | x | variableReadAccess | main.rs:7:20:7:20 | s | main.rs:5:14:5:14 | s | | main.rs:12:20:12:20 | i | main.rs:10:14:10:14 | i | @@ -462,111 +468,114 @@ variableReadAccess | main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x | | main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x | | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | -| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 | -| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 | -| main.rs:381:15:381:16 | c1 | main.rs:376:9:376:10 | c1 | -| main.rs:386:15:386:16 | a9 | main.rs:384:20:384:55 | a9 | -| main.rs:395:15:395:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:396:15:396:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:397:15:397:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:404:9:404:11 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:405:9:405:10 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:406:9:406:10 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:408:15:408:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:409:15:409:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:410:15:410:16 | c2 | main.rs:393:13:393:14 | c2 | -| main.rs:417:23:417:25 | a10 | main.rs:414:13:414:15 | a10 | -| main.rs:418:23:418:24 | b4 | main.rs:415:13:415:14 | b4 | -| main.rs:422:15:422:17 | a10 | main.rs:391:13:391:15 | a10 | -| main.rs:423:15:423:16 | b4 | main.rs:392:13:392:14 | b4 | -| main.rs:429:9:429:9 | x | main.rs:428:10:428:10 | x | -| main.rs:431:9:431:23 | example_closure | main.rs:427:9:427:23 | example_closure | -| main.rs:432:15:432:16 | n1 | main.rs:430:9:430:10 | n1 | -| main.rs:437:9:437:9 | x | main.rs:436:6:436:6 | x | -| main.rs:439:9:439:26 | immutable_variable | main.rs:435:9:435:26 | immutable_variable | -| main.rs:440:15:440:16 | n2 | main.rs:438:9:438:10 | n2 | -| main.rs:447:9:447:9 | x | main.rs:446:10:446:10 | x | -| main.rs:448:15:448:15 | f | main.rs:445:9:445:9 | f | -| main.rs:452:9:452:9 | x | main.rs:450:10:450:10 | x | -| main.rs:455:15:455:15 | f | main.rs:445:9:445:9 | f | -| main.rs:461:17:461:17 | x | main.rs:459:14:459:14 | x | -| main.rs:470:13:470:13 | x | main.rs:469:14:469:14 | x | -| main.rs:471:19:471:19 | f | main.rs:468:13:468:13 | f | -| main.rs:479:12:479:12 | v | main.rs:476:9:476:9 | v | -| main.rs:480:19:480:22 | text | main.rs:478:9:478:12 | text | -| main.rs:487:15:487:15 | a | main.rs:485:13:485:13 | a | -| main.rs:489:15:489:15 | a | main.rs:485:13:485:13 | a | -| main.rs:496:6:496:10 | ref_i | main.rs:494:9:494:13 | ref_i | -| main.rs:497:15:497:15 | i | main.rs:493:13:493:13 | i | -| main.rs:501:6:501:6 | x | main.rs:500:17:500:17 | x | -| main.rs:502:10:502:10 | x | main.rs:500:17:500:17 | x | -| main.rs:503:10:503:10 | x | main.rs:500:17:500:17 | x | -| main.rs:504:12:504:12 | x | main.rs:500:17:500:17 | x | -| main.rs:508:6:508:6 | x | main.rs:507:22:507:22 | x | -| main.rs:509:10:509:10 | x | main.rs:507:22:507:22 | x | -| main.rs:510:10:510:10 | x | main.rs:507:22:507:22 | x | -| main.rs:511:6:511:6 | y | main.rs:507:38:507:38 | y | -| main.rs:512:9:512:9 | x | main.rs:507:22:507:22 | x | -| main.rs:519:6:519:6 | y | main.rs:517:9:517:9 | y | -| main.rs:522:15:522:15 | x | main.rs:516:13:516:13 | x | -| main.rs:529:9:529:9 | w | main.rs:525:9:525:9 | w | -| main.rs:531:7:531:7 | w | main.rs:525:9:525:9 | w | -| main.rs:534:15:534:15 | z | main.rs:524:13:524:13 | z | -| main.rs:541:6:541:6 | y | main.rs:539:9:539:9 | y | -| main.rs:542:15:542:15 | x | main.rs:538:13:538:13 | x | -| main.rs:550:19:550:19 | x | main.rs:546:9:546:9 | x | -| main.rs:552:5:552:7 | cap | main.rs:549:9:549:11 | cap | -| main.rs:553:15:553:15 | x | main.rs:546:9:546:9 | x | -| main.rs:561:19:561:19 | x | main.rs:557:13:557:13 | x | -| main.rs:563:5:563:12 | closure1 | main.rs:560:9:560:16 | closure1 | -| main.rs:564:15:564:15 | x | main.rs:557:13:557:13 | x | -| main.rs:572:5:572:12 | closure2 | main.rs:569:13:569:20 | closure2 | -| main.rs:573:15:573:15 | y | main.rs:566:13:566:13 | y | -| main.rs:579:9:579:9 | z | main.rs:575:13:575:13 | z | -| main.rs:581:5:581:12 | closure3 | main.rs:578:13:578:20 | closure3 | -| main.rs:582:15:582:15 | z | main.rs:575:13:575:13 | z | -| main.rs:591:5:591:9 | block | main.rs:587:9:587:13 | block | -| main.rs:592:15:592:15 | i | main.rs:586:13:586:13 | i | -| main.rs:597:15:597:15 | x | main.rs:596:13:596:13 | x | -| main.rs:598:15:598:15 | x | main.rs:596:13:596:13 | x | -| main.rs:600:16:600:16 | b | main.rs:595:8:595:8 | b | -| main.rs:603:19:603:19 | x | main.rs:596:13:596:13 | x | -| main.rs:604:19:604:19 | x | main.rs:596:13:596:13 | x | -| main.rs:607:19:607:19 | x | main.rs:596:13:596:13 | x | -| main.rs:608:19:608:19 | x | main.rs:596:13:596:13 | x | -| main.rs:610:15:610:15 | x | main.rs:596:13:596:13 | x | -| main.rs:616:16:616:17 | b1 | main.rs:613:13:613:14 | b1 | -| main.rs:618:19:618:19 | x | main.rs:614:9:614:9 | x | -| main.rs:620:19:620:19 | x | main.rs:614:9:614:9 | x | -| main.rs:624:16:624:17 | b2 | main.rs:613:23:613:24 | b2 | -| main.rs:626:19:626:19 | x | main.rs:614:9:614:9 | x | -| main.rs:628:19:628:19 | x | main.rs:614:9:614:9 | x | -| main.rs:638:16:638:19 | self | main.rs:637:20:637:23 | self | -| main.rs:642:9:642:12 | self | main.rs:641:11:641:14 | self | -| main.rs:648:13:648:16 | self | main.rs:645:23:645:26 | self | -| main.rs:648:25:648:25 | n | main.rs:646:22:646:22 | n | -| main.rs:650:9:650:9 | f | main.rs:646:17:646:17 | f | -| main.rs:651:9:651:9 | f | main.rs:646:17:646:17 | f | -| main.rs:657:15:657:15 | a | main.rs:656:13:656:13 | a | -| main.rs:658:5:658:5 | a | main.rs:656:13:656:13 | a | -| main.rs:659:15:659:15 | a | main.rs:656:13:656:13 | a | -| main.rs:661:15:661:15 | a | main.rs:656:13:656:13 | a | -| main.rs:666:15:666:15 | a | main.rs:665:13:665:13 | a | -| main.rs:667:5:667:5 | a | main.rs:665:13:665:13 | a | -| main.rs:668:15:668:15 | a | main.rs:665:13:665:13 | a | -| main.rs:670:15:670:15 | a | main.rs:665:13:665:13 | a | -| main.rs:676:15:676:15 | x | main.rs:674:9:674:9 | x | -| main.rs:688:10:688:13 | self | main.rs:687:17:687:20 | self | -| main.rs:694:5:694:5 | a | main.rs:693:13:693:13 | a | -| main.rs:697:15:697:15 | a | main.rs:693:13:693:13 | a | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:9:716:21 | var_in_macro | -| main.rs:717:15:717:28 | var_from_macro | main.rs:715:9:715:22 | var_from_macro | -| main.rs:723:30:723:41 | var_in_macro | main.rs:723:15:723:28 | var_in_macro | -| main.rs:724:15:724:26 | var_in_macro | main.rs:718:9:718:20 | var_in_macro | -| main.rs:730:15:730:15 | x | main.rs:728:9:728:9 | x | -| main.rs:737:20:737:20 | b | main.rs:735:20:735:20 | b | -| main.rs:741:5:741:7 | cap | main.rs:735:13:735:15 | cap | -| main.rs:742:15:742:15 | x | main.rs:734:13:734:13 | x | +| main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | +| main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | +| main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | +| main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | +| main.rs:397:15:397:16 | a9 | main.rs:395:20:395:55 | a9 | +| main.rs:406:15:406:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:407:15:407:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:408:15:408:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:415:9:415:11 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:416:9:416:10 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:417:9:417:10 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:419:15:419:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:420:15:420:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:421:15:421:16 | c2 | main.rs:404:13:404:14 | c2 | +| main.rs:428:23:428:25 | a10 | main.rs:425:13:425:15 | a10 | +| main.rs:429:23:429:24 | b4 | main.rs:426:13:426:14 | b4 | +| main.rs:433:15:433:17 | a10 | main.rs:402:13:402:15 | a10 | +| main.rs:434:15:434:16 | b4 | main.rs:403:13:403:14 | b4 | +| main.rs:440:9:440:9 | x | main.rs:439:10:439:10 | x | +| main.rs:442:9:442:23 | example_closure | main.rs:438:9:438:23 | example_closure | +| main.rs:443:15:443:16 | n1 | main.rs:441:9:441:10 | n1 | +| main.rs:448:9:448:9 | x | main.rs:447:6:447:6 | x | +| main.rs:450:9:450:26 | immutable_variable | main.rs:446:9:446:26 | immutable_variable | +| main.rs:451:15:451:16 | n2 | main.rs:449:9:449:10 | n2 | +| main.rs:458:9:458:9 | x | main.rs:457:10:457:10 | x | +| main.rs:459:15:459:15 | f | main.rs:456:9:456:9 | f | +| main.rs:463:9:463:9 | x | main.rs:461:10:461:10 | x | +| main.rs:466:15:466:15 | f | main.rs:456:9:456:9 | f | +| main.rs:472:17:472:17 | x | main.rs:470:14:470:14 | x | +| main.rs:481:13:481:13 | x | main.rs:480:14:480:14 | x | +| main.rs:482:19:482:19 | f | main.rs:479:13:479:13 | f | +| main.rs:490:12:490:12 | v | main.rs:487:9:487:9 | v | +| main.rs:491:19:491:22 | text | main.rs:489:9:489:12 | text | +| main.rs:498:15:498:15 | a | main.rs:496:13:496:13 | a | +| main.rs:500:15:500:15 | a | main.rs:496:13:496:13 | a | +| main.rs:507:6:507:10 | ref_i | main.rs:505:9:505:13 | ref_i | +| main.rs:508:15:508:15 | i | main.rs:504:13:504:13 | i | +| main.rs:512:6:512:6 | x | main.rs:511:17:511:17 | x | +| main.rs:513:10:513:10 | x | main.rs:511:17:511:17 | x | +| main.rs:514:10:514:10 | x | main.rs:511:17:511:17 | x | +| main.rs:515:12:515:12 | x | main.rs:511:17:511:17 | x | +| main.rs:519:6:519:6 | x | main.rs:518:22:518:22 | x | +| main.rs:520:10:520:10 | x | main.rs:518:22:518:22 | x | +| main.rs:521:10:521:10 | x | main.rs:518:22:518:22 | x | +| main.rs:522:6:522:6 | y | main.rs:518:38:518:38 | y | +| main.rs:523:9:523:9 | x | main.rs:518:22:518:22 | x | +| main.rs:530:6:530:6 | y | main.rs:528:9:528:9 | y | +| main.rs:533:15:533:15 | x | main.rs:527:13:527:13 | x | +| main.rs:540:9:540:9 | w | main.rs:536:9:536:9 | w | +| main.rs:542:7:542:7 | w | main.rs:536:9:536:9 | w | +| main.rs:545:15:545:15 | z | main.rs:535:13:535:13 | z | +| main.rs:552:6:552:6 | y | main.rs:550:9:550:9 | y | +| main.rs:553:15:553:15 | x | main.rs:549:13:549:13 | x | +| main.rs:561:19:561:19 | x | main.rs:557:9:557:9 | x | +| main.rs:563:5:563:7 | cap | main.rs:560:9:560:11 | cap | +| main.rs:564:15:564:15 | x | main.rs:557:9:557:9 | x | +| main.rs:572:19:572:19 | x | main.rs:568:13:568:13 | x | +| main.rs:574:5:574:12 | closure1 | main.rs:571:9:571:16 | closure1 | +| main.rs:575:15:575:15 | x | main.rs:568:13:568:13 | x | +| main.rs:583:5:583:12 | closure2 | main.rs:580:13:580:20 | closure2 | +| main.rs:584:15:584:15 | y | main.rs:577:13:577:13 | y | +| main.rs:590:9:590:9 | z | main.rs:586:13:586:13 | z | +| main.rs:592:5:592:12 | closure3 | main.rs:589:13:589:20 | closure3 | +| main.rs:593:15:593:15 | z | main.rs:586:13:586:13 | z | +| main.rs:602:5:602:9 | block | main.rs:598:9:598:13 | block | +| main.rs:603:15:603:15 | i | main.rs:597:13:597:13 | i | +| main.rs:608:15:608:15 | x | main.rs:607:13:607:13 | x | +| main.rs:609:15:609:15 | x | main.rs:607:13:607:13 | x | +| main.rs:611:16:611:16 | b | main.rs:606:8:606:8 | b | +| main.rs:614:19:614:19 | x | main.rs:607:13:607:13 | x | +| main.rs:615:19:615:19 | x | main.rs:607:13:607:13 | x | +| main.rs:618:19:618:19 | x | main.rs:607:13:607:13 | x | +| main.rs:619:19:619:19 | x | main.rs:607:13:607:13 | x | +| main.rs:621:15:621:15 | x | main.rs:607:13:607:13 | x | +| main.rs:627:16:627:17 | b1 | main.rs:624:13:624:14 | b1 | +| main.rs:629:19:629:19 | x | main.rs:625:9:625:9 | x | +| main.rs:631:19:631:19 | x | main.rs:625:9:625:9 | x | +| main.rs:635:16:635:17 | b2 | main.rs:624:23:624:24 | b2 | +| main.rs:637:19:637:19 | x | main.rs:625:9:625:9 | x | +| main.rs:639:19:639:19 | x | main.rs:625:9:625:9 | x | +| main.rs:649:16:649:19 | self | main.rs:648:20:648:23 | self | +| main.rs:653:9:653:12 | self | main.rs:652:11:652:14 | self | +| main.rs:659:13:659:16 | self | main.rs:656:23:656:26 | self | +| main.rs:659:25:659:25 | n | main.rs:657:22:657:22 | n | +| main.rs:661:9:661:9 | f | main.rs:657:17:657:17 | f | +| main.rs:662:9:662:9 | f | main.rs:657:17:657:17 | f | +| main.rs:668:15:668:15 | a | main.rs:667:13:667:13 | a | +| main.rs:669:5:669:5 | a | main.rs:667:13:667:13 | a | +| main.rs:670:15:670:15 | a | main.rs:667:13:667:13 | a | +| main.rs:672:15:672:15 | a | main.rs:667:13:667:13 | a | +| main.rs:677:15:677:15 | a | main.rs:676:13:676:13 | a | +| main.rs:678:5:678:5 | a | main.rs:676:13:676:13 | a | +| main.rs:679:15:679:15 | a | main.rs:676:13:676:13 | a | +| main.rs:681:15:681:15 | a | main.rs:676:13:676:13 | a | +| main.rs:687:15:687:15 | x | main.rs:685:9:685:9 | x | +| main.rs:699:10:699:13 | self | main.rs:698:17:698:20 | self | +| main.rs:705:5:705:5 | a | main.rs:704:13:704:13 | a | +| main.rs:708:15:708:15 | a | main.rs:704:13:704:13 | a | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:9:727:21 | var_in_macro | +| main.rs:728:15:728:28 | var_from_macro | main.rs:726:9:726:22 | var_from_macro | +| main.rs:734:30:734:41 | var_in_macro | main.rs:734:15:734:28 | var_in_macro | +| main.rs:735:15:735:26 | var_in_macro | main.rs:729:9:729:20 | var_in_macro | +| main.rs:741:15:741:15 | x | main.rs:739:9:739:9 | x | +| main.rs:748:20:748:20 | b | main.rs:746:20:746:20 | b | +| main.rs:752:5:752:7 | cap | main.rs:746:13:746:15 | cap | +| main.rs:753:15:753:15 | x | main.rs:745:13:745:13 | x | variableInitializer | main.rs:20:9:20:10 | x1 | main.rs:20:14:20:16 | "a" | | main.rs:25:13:25:14 | x2 | main.rs:25:18:25:18 | 4 | @@ -599,62 +608,63 @@ variableInitializer | main.rs:337:20:337:20 | x | main.rs:338:18:338:18 | x | | main.rs:348:9:348:9 | x | main.rs:348:13:348:18 | Ok(...) | | main.rs:364:9:364:9 | x | main.rs:364:13:364:19 | Some(...) | -| main.rs:427:9:427:23 | example_closure | main.rs:428:9:429:9 | \|...\| x | -| main.rs:430:9:430:10 | n1 | main.rs:431:9:431:26 | example_closure(...) | -| main.rs:435:9:435:26 | immutable_variable | main.rs:436:5:437:9 | \|...\| x | -| main.rs:438:9:438:10 | n2 | main.rs:439:9:439:29 | immutable_variable(...) | -| main.rs:445:9:445:9 | f | main.rs:446:9:447:9 | \|...\| x | -| main.rs:468:13:468:13 | f | main.rs:469:13:470:13 | \|...\| x | -| main.rs:476:9:476:9 | v | main.rs:476:13:476:41 | &... | -| main.rs:485:13:485:13 | a | main.rs:485:17:485:17 | 0 | -| main.rs:493:13:493:13 | i | main.rs:493:17:493:17 | 1 | -| main.rs:494:9:494:13 | ref_i | main.rs:495:9:495:14 | &mut i | -| main.rs:516:13:516:13 | x | main.rs:516:17:516:17 | 2 | -| main.rs:517:9:517:9 | y | main.rs:518:9:518:28 | mutate_param(...) | -| main.rs:524:13:524:13 | z | main.rs:524:17:524:17 | 4 | -| main.rs:525:9:525:9 | w | main.rs:526:9:526:19 | &mut ... | -| main.rs:538:13:538:13 | x | main.rs:538:17:538:17 | 1 | -| main.rs:539:9:539:9 | y | main.rs:540:9:540:14 | &mut x | -| main.rs:546:9:546:9 | x | main.rs:546:13:546:15 | 100 | -| main.rs:549:9:549:11 | cap | main.rs:549:15:551:5 | \|...\| ... | -| main.rs:557:13:557:13 | x | main.rs:557:17:557:17 | 1 | -| main.rs:560:9:560:16 | closure1 | main.rs:560:20:562:5 | \|...\| ... | -| main.rs:566:13:566:13 | y | main.rs:566:17:566:17 | 2 | -| main.rs:569:13:569:20 | closure2 | main.rs:569:24:571:5 | \|...\| ... | -| main.rs:575:13:575:13 | z | main.rs:575:17:575:17 | 2 | -| main.rs:578:13:578:20 | closure3 | main.rs:578:24:580:5 | \|...\| ... | -| main.rs:586:13:586:13 | i | main.rs:586:22:586:22 | 0 | -| main.rs:587:9:587:13 | block | main.rs:587:17:589:5 | { ... } | -| main.rs:596:13:596:13 | x | main.rs:596:17:596:17 | 1 | -| main.rs:614:9:614:9 | x | main.rs:614:13:614:13 | 1 | -| main.rs:646:17:646:17 | f | main.rs:646:21:649:9 | \|...\| ... | -| main.rs:656:13:656:13 | a | main.rs:656:17:656:35 | MyStruct {...} | -| main.rs:665:13:665:13 | a | main.rs:665:17:665:25 | [...] | -| main.rs:674:9:674:9 | x | main.rs:674:13:674:14 | 16 | -| main.rs:678:9:678:9 | z | main.rs:678:13:678:14 | 17 | -| main.rs:693:13:693:13 | a | main.rs:693:17:693:35 | MyStruct {...} | -| main.rs:715:9:715:22 | var_from_macro | main.rs:716:9:716:25 | MacroExpr | -| main.rs:716:9:716:21 | var_in_macro | main.rs:716:23:716:24 | 37 | -| main.rs:718:9:718:20 | var_in_macro | main.rs:718:24:718:25 | 33 | -| main.rs:723:15:723:28 | var_in_macro | main.rs:723:15:723:28 | 0 | -| main.rs:734:13:734:13 | x | main.rs:734:17:734:19 | 100 | -| main.rs:735:13:735:15 | cap | main.rs:735:19:740:5 | \|...\| ... | +| main.rs:373:9:373:9 | x | main.rs:373:13:373:20 | Some(...) | +| main.rs:438:9:438:23 | example_closure | main.rs:439:9:440:9 | \|...\| x | +| main.rs:441:9:441:10 | n1 | main.rs:442:9:442:26 | example_closure(...) | +| main.rs:446:9:446:26 | immutable_variable | main.rs:447:5:448:9 | \|...\| x | +| main.rs:449:9:449:10 | n2 | main.rs:450:9:450:29 | immutable_variable(...) | +| main.rs:456:9:456:9 | f | main.rs:457:9:458:9 | \|...\| x | +| main.rs:479:13:479:13 | f | main.rs:480:13:481:13 | \|...\| x | +| main.rs:487:9:487:9 | v | main.rs:487:13:487:41 | &... | +| main.rs:496:13:496:13 | a | main.rs:496:17:496:17 | 0 | +| main.rs:504:13:504:13 | i | main.rs:504:17:504:17 | 1 | +| main.rs:505:9:505:13 | ref_i | main.rs:506:9:506:14 | &mut i | +| main.rs:527:13:527:13 | x | main.rs:527:17:527:17 | 2 | +| main.rs:528:9:528:9 | y | main.rs:529:9:529:28 | mutate_param(...) | +| main.rs:535:13:535:13 | z | main.rs:535:17:535:17 | 4 | +| main.rs:536:9:536:9 | w | main.rs:537:9:537:19 | &mut ... | +| main.rs:549:13:549:13 | x | main.rs:549:17:549:17 | 1 | +| main.rs:550:9:550:9 | y | main.rs:551:9:551:14 | &mut x | +| main.rs:557:9:557:9 | x | main.rs:557:13:557:15 | 100 | +| main.rs:560:9:560:11 | cap | main.rs:560:15:562:5 | \|...\| ... | +| main.rs:568:13:568:13 | x | main.rs:568:17:568:17 | 1 | +| main.rs:571:9:571:16 | closure1 | main.rs:571:20:573:5 | \|...\| ... | +| main.rs:577:13:577:13 | y | main.rs:577:17:577:17 | 2 | +| main.rs:580:13:580:20 | closure2 | main.rs:580:24:582:5 | \|...\| ... | +| main.rs:586:13:586:13 | z | main.rs:586:17:586:17 | 2 | +| main.rs:589:13:589:20 | closure3 | main.rs:589:24:591:5 | \|...\| ... | +| main.rs:597:13:597:13 | i | main.rs:597:22:597:22 | 0 | +| main.rs:598:9:598:13 | block | main.rs:598:17:600:5 | { ... } | +| main.rs:607:13:607:13 | x | main.rs:607:17:607:17 | 1 | +| main.rs:625:9:625:9 | x | main.rs:625:13:625:13 | 1 | +| main.rs:657:17:657:17 | f | main.rs:657:21:660:9 | \|...\| ... | +| main.rs:667:13:667:13 | a | main.rs:667:17:667:35 | MyStruct {...} | +| main.rs:676:13:676:13 | a | main.rs:676:17:676:25 | [...] | +| main.rs:685:9:685:9 | x | main.rs:685:13:685:14 | 16 | +| main.rs:689:9:689:9 | z | main.rs:689:13:689:14 | 17 | +| main.rs:704:13:704:13 | a | main.rs:704:17:704:35 | MyStruct {...} | +| main.rs:726:9:726:22 | var_from_macro | main.rs:727:9:727:25 | MacroExpr | +| main.rs:727:9:727:21 | var_in_macro | main.rs:727:23:727:24 | 37 | +| main.rs:729:9:729:20 | var_in_macro | main.rs:729:24:729:25 | 33 | +| main.rs:734:15:734:28 | var_in_macro | main.rs:734:15:734:28 | 0 | +| main.rs:745:13:745:13 | x | main.rs:745:17:745:19 | 100 | +| main.rs:746:13:746:15 | cap | main.rs:746:19:751:5 | \|...\| ... | capturedVariable -| main.rs:546:9:546:9 | x | -| main.rs:557:13:557:13 | x | -| main.rs:566:13:566:13 | y | -| main.rs:575:13:575:13 | z | -| main.rs:586:13:586:13 | i | -| main.rs:645:23:645:26 | self | -| main.rs:734:13:734:13 | x | +| main.rs:557:9:557:9 | x | +| main.rs:568:13:568:13 | x | +| main.rs:577:13:577:13 | y | +| main.rs:586:13:586:13 | z | +| main.rs:597:13:597:13 | i | +| main.rs:656:23:656:26 | self | +| main.rs:745:13:745:13 | x | capturedAccess -| main.rs:550:19:550:19 | x | | main.rs:561:19:561:19 | x | -| main.rs:570:9:570:9 | y | -| main.rs:579:9:579:9 | z | -| main.rs:588:9:588:9 | i | -| main.rs:648:13:648:16 | self | -| main.rs:738:13:738:13 | x | +| main.rs:572:19:572:19 | x | +| main.rs:581:9:581:9 | y | +| main.rs:590:9:590:9 | z | +| main.rs:599:9:599:9 | i | +| main.rs:659:13:659:16 | self | +| main.rs:749:13:749:13 | x | nestedFunctionAccess -| main.rs:458:19:458:19 | f | main.rs:459:9:462:9 | fn f | -| main.rs:465:23:465:23 | f | main.rs:459:9:462:9 | fn f | +| main.rs:469:19:469:19 | f | main.rs:470:9:473:9 | fn f | +| main.rs:476:23:476:23 | f | main.rs:470:9:473:9 | fn f | From a19f49b2acc67b87910dda49c9e9173195883e72 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:41:00 +0100 Subject: [PATCH 50/57] Swift: Update resources --- swift/third_party/resources/resource-dir-linux.zip | 4 ++-- swift/third_party/resources/resource-dir-macos.zip | 4 ++-- swift/third_party/resources/swift-prebuilt-linux.tar.zst | 4 ++-- swift/third_party/resources/swift-prebuilt-macos.tar.zst | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/swift/third_party/resources/resource-dir-linux.zip b/swift/third_party/resources/resource-dir-linux.zip index 6029e7657c01..970660d813f0 100644 --- a/swift/third_party/resources/resource-dir-linux.zip +++ b/swift/third_party/resources/resource-dir-linux.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:44888a0c944227bfcfa47f0e052f59c93b947e56ab070da877b0b0b4d79cdecb -size 385205623 +oid sha256:e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0 +size 385198654 diff --git a/swift/third_party/resources/resource-dir-macos.zip b/swift/third_party/resources/resource-dir-macos.zip index 368fcc2551dc..c802f6fab297 100644 --- a/swift/third_party/resources/resource-dir-macos.zip +++ b/swift/third_party/resources/resource-dir-macos.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:64ac7f77b2d8b9112e0126ff69afb1a033ae940ff18bb8732be982a723610f2e -size 614058230 +oid sha256:e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8 +size 613718859 diff --git a/swift/third_party/resources/swift-prebuilt-linux.tar.zst b/swift/third_party/resources/swift-prebuilt-linux.tar.zst index 2a507b6291d2..1f1dba6a9747 100644 --- a/swift/third_party/resources/swift-prebuilt-linux.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-linux.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:845dd07a3f04adc44ed83ec33ae2bc58a99c4d8f5fc6b8549c3adae91e2b03ff -size 132754495 +oid sha256:1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d +size 132780711 diff --git a/swift/third_party/resources/swift-prebuilt-macos.tar.zst b/swift/third_party/resources/swift-prebuilt-macos.tar.zst index 3f4ac76f795d..c66199543e14 100644 --- a/swift/third_party/resources/swift-prebuilt-macos.tar.zst +++ b/swift/third_party/resources/swift-prebuilt-macos.tar.zst @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0b2ccdd5a93bd0336866f85596987ee4274eaef3425ff95395e2aa8bec49a19e -size 115290456 +oid sha256:c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7 +size 115298493 From 6476f60cd4ef9444bb6982883f60b94d4336f1fa Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:44:20 +0100 Subject: [PATCH 51/57] Swift: Add change note --- swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md diff --git a/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md new file mode 100644 index 000000000000..42a738ff746d --- /dev/null +++ b/swift/ql/lib/change-notes/2025-10-22-swift-6.2.1.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* Upgraded to allow analysis of Swift 6.2.1. From a79c383fd5311e9529fe3337ef2e426a91373ec4 Mon Sep 17 00:00:00 2001 From: Jeroen Ketema Date: Wed, 5 Nov 2025 15:46:42 +0100 Subject: [PATCH 52/57] Swift: update `load.bzl` --- swift/third_party/load.bzl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 29d552bd3e2d..d19345a18803 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -5,10 +5,6 @@ load("//misc/bazel:lfs.bzl", "lfs_archive", "lfs_files") _override = { # these are used to test new artifacts. Must be empty before merging to main - "swift-prebuilt-macOS-swift-6.2.1-RELEASE-133.tar.zst": "c5b96fe3e221accd9435f40dbd123d388c3418e1e451751ffd6e67339b063cf7", - "swift-prebuilt-Linux-swift-6.2.1-RELEASE-133.tar.zst": "1aa54c08025679cea2128499040790c4792debcbe214144b099469debe0d488d", - "resource-dir-macOS-swift-6.2.1-RELEASE-133.zip": "e7505fccfe0a537b1583b754fbdd0720415cd9c5e076b542be0d4ec976c955c8", - "resource-dir-Linux-swift-6.2.1-RELEASE-133.zip": "e08f6da9166c36d8cc1bb6c3c80f18664feade81ae193daeaada5a9a009748b0", } _staging_url = "https://github.com/dsp-testing/codeql-swift-artifacts/releases/download/staging-{}/{}" From 62e77687ca70215432bbdddfaef59b874d9bebcd Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Wed, 5 Nov 2025 15:09:39 +0000 Subject: [PATCH 53/57] Rust: Move async_std::io models. --- rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml | 7 +++++++ rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml new file mode 100644 index 000000000000..99e14d0f0bc6 --- /dev/null +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/io.model.yml @@ -0,0 +1,7 @@ +extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] + - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] diff --git a/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml index 706170d44b89..9e65ba1b1964 100644 --- a/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml +++ b/rust/ql/lib/codeql/rust/frameworks/asyncstd/net.model.yml @@ -4,9 +4,3 @@ extensions: extensible: sourceModel data: - ["::connect", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] - - addsTo: - pack: codeql/rust-all - extensible: summaryModel - data: - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self]", "Argument[0].Reference", "taint", "manual"] - - ["<_ as async_std::io::read::ReadExt>::read", "Argument[self].Reference", "Argument[0].Reference", "taint", "manual"] \ No newline at end of file From c80301d58abbe826fc6af71b148a56a96965ab8c Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 5 Nov 2025 19:46:54 +0100 Subject: [PATCH 54/57] Rust: Handle variables introduced in if-let guards --- .../rust/elements/internal/VariableImpl.qll | 38 +++++++++---------- .../test/library-tests/variables/Ssa.expected | 5 ++- rust/ql/test/library-tests/variables/main.rs | 2 +- .../variables/variables.expected | 4 +- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll index 6f89be716603..61f022c8bfda 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll @@ -15,21 +15,12 @@ module Impl { class BlockExprScope extends VariableScope, BlockExpr { } - abstract class MatchArmScope extends VariableScope { - MatchArm arm; - - bindingset[arm] - MatchArmScope() { exists(arm) } - - Pat getPat() { result = arm.getPat() } + class MatchArmExprScope extends VariableScope { + MatchArmExprScope() { this = any(MatchArm arm).getExpr() } } - class MatchArmExprScope extends MatchArmScope { - MatchArmExprScope() { this = arm.getExpr() } - } - - class MatchArmGuardScope extends MatchArmScope { - MatchArmGuardScope() { this = arm.getGuard() } + class MatchArmGuardScope extends VariableScope { + MatchArmGuardScope() { this = any(MatchArm arm).getGuard() } } class ClosureBodyScope extends VariableScope { @@ -41,7 +32,7 @@ module Impl { * * Such variables are only available in the body guarded by the condition. */ - class ConditionScope extends VariableScope, Expr { + class ConditionScope extends VariableScope { private AstNode parent; private AstNode body; @@ -57,6 +48,12 @@ module Impl { this = we.getCondition() and body = we.getLoopBody() ) + or + parent = + any(MatchArm ma | + this = ma.getGuard() and + body = ma.getExpr() + ) } /** Gets the parent of this condition. */ @@ -417,11 +414,14 @@ module Impl { ord = getPreOrderNumbering(scope, scope) or exists(Pat pat | pat = getAVariablePatAncestor(v) | - scope = - any(MatchArmScope arm | - arm.getPat() = pat and - ord = getPreOrderNumbering(scope, arm) - ) + exists(MatchArm arm | + pat = arm.getPat() and + ord = getPreOrderNumbering(scope, scope) + | + scope = arm.getGuard() + or + not arm.hasGuard() and scope = arm.getExpr() + ) or exists(LetStmt let | let.getPat() = pat and diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index e3271f2c20da..35adac478023 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -96,6 +96,7 @@ definition | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | @@ -288,7 +289,7 @@ read | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | -| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:378:26:378:26 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | @@ -479,6 +480,7 @@ firstRead | main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x | | main.rs:373:9:373:9 | x | main.rs:373:9:373:9 | x | main.rs:374:11:374:11 | x | | main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | +| main.rs:376:25:376:25 | y | main.rs:376:25:376:25 | y | main.rs:378:26:378:26 | y | | main.rs:384:5:384:6 | a8 | main.rs:384:5:384:6 | a8 | main.rs:390:15:390:16 | a8 | | main.rs:386:9:386:10 | b3 | main.rs:386:9:386:10 | b3 | main.rs:391:15:391:16 | b3 | | main.rs:387:9:387:10 | c1 | main.rs:387:9:387:10 | c1 | main.rs:392:15:392:16 | c1 | @@ -587,7 +589,6 @@ adjacentReads | main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x | | main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x | -| main.rs:375:14:375:14 | y | main.rs:375:14:375:14 | y | main.rs:377:22:377:22 | y | main.rs:378:26:378:26 | y | | main.rs:402:13:402:15 | a10 | main.rs:402:13:402:15 | a10 | main.rs:406:15:406:17 | a10 | main.rs:415:9:415:11 | a10 | | main.rs:403:13:403:14 | b4 | main.rs:403:13:403:14 | b4 | main.rs:407:15:407:16 | b4 | main.rs:416:9:416:10 | b4 | | main.rs:404:13:404:14 | c2 | main.rs:404:13:404:14 | c2 | main.rs:408:15:408:16 | c2 | main.rs:417:9:417:10 | c2 | diff --git a/rust/ql/test/library-tests/variables/main.rs b/rust/ql/test/library-tests/variables/main.rs index b809f498752e..cdfe1091ee39 100644 --- a/rust/ql/test/library-tests/variables/main.rs +++ b/rust/ql/test/library-tests/variables/main.rs @@ -375,7 +375,7 @@ fn match_pattern16() { Some(y) // y1 if let Some(y) = // y2 Some(y) // $ read_access=y1 - => print_i64(y), // $ MISSING: read_access=y2 $ SPURIOUS: read_access=y1 + => print_i64(y), // $ read_access=y2 _ => {}, } } diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 944a93ccab11..64431803e6d0 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -238,7 +238,7 @@ variableAccess | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | | main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | -| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | | main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | @@ -470,7 +470,7 @@ variableReadAccess | main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x | | main.rs:374:11:374:11 | x | main.rs:373:9:373:9 | x | | main.rs:377:22:377:22 | y | main.rs:375:14:375:14 | y | -| main.rs:378:26:378:26 | y | main.rs:375:14:375:14 | y | +| main.rs:378:26:378:26 | y | main.rs:376:25:376:25 | y | | main.rs:390:15:390:16 | a8 | main.rs:384:5:384:6 | a8 | | main.rs:391:15:391:16 | b3 | main.rs:386:9:386:10 | b3 | | main.rs:392:15:392:16 | c1 | main.rs:387:9:387:10 | c1 | From 680870dbf3257d4538087b9c3b750b642c5228e0 Mon Sep 17 00:00:00 2001 From: Geoffrey White <40627776+geoffw0@users.noreply.github.com> Date: Thu, 6 Nov 2025 09:39:51 +0000 Subject: [PATCH 55/57] Rust: Fix after merge. --- rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected | 1 - 1 file changed, 1 deletion(-) diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index b74a6ee82e71..e1024e4ad729 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -172,7 +172,6 @@ edges | sqlx.rs:47:22:47:37 | ...::args(...) [element] | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | provenance | MaD:25 | | sqlx.rs:47:22:47:44 | ... .nth(...) [Some] | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | provenance | MaD:30 | | sqlx.rs:47:22:47:77 | ... .unwrap_or(...) | sqlx.rs:47:9:47:18 | arg_string | provenance | | -| sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | provenance | MaD:34 | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:54:27:54:39 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:55:84:55:96 | remote_string | provenance | | | sqlx.rs:48:9:48:21 | remote_string | sqlx.rs:59:17:59:72 | MacroExpr | provenance | | From 0d76d582b5373bcce0884381501ce8e5af238e25 Mon Sep 17 00:00:00 2001 From: Idriss Riouak Date: Thu, 6 Nov 2025 11:12:53 +0100 Subject: [PATCH 56/57] CODEOWNERS: Add Go-related folders for extractor and autobuilder Co-authored-by: Owen Mansel-Chan <62447351+owen-mc@users.noreply.github.com> --- CODEOWNERS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CODEOWNERS b/CODEOWNERS index 0a7504ba5924..131fb1e767d9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,7 +8,11 @@ /csharp/autobuilder/Semmle.Autobuild.Cpp @github/codeql-c-extractor @github/code-scanning-language-coverage /csharp/autobuilder/Semmle.Autobuild.Cpp.Tests @github/codeql-c-extractor @github/code-scanning-language-coverage /go/ @github/codeql-go +/go/codeql-tools/ @github/codeql-go @github/code-scanning-language-coverage +/go/downgrades/ @github/codeql-go @github/code-scanning-language-coverage /go/extractor/ @github/codeql-go @github/code-scanning-language-coverage +/go/extractor-smoke-test/ @github/codeql-go @github/code-scanning-language-coverage +/go/ql/test/extractor-tests/ @github/codeql-go @github/code-scanning-language-coverage /java/ @github/codeql-java /javascript/ @github/codeql-javascript /javascript/extractor/ @github/codeql-javascript @github/code-scanning-language-coverage From 0a817004aab88a70e03a04fbdf0d976cc5926928 Mon Sep 17 00:00:00 2001 From: Enrico Steffinlongo Date: Fri, 7 Nov 2025 16:16:28 +0000 Subject: [PATCH 57/57] Revert "C++: Range analysis measure bounds" --- .../cpp/rangeanalysis/SimpleRangeAnalysis.qll | 428 +- .../SimpleRangeAnalysis/lowerBound.expected | 704 +-- .../SimpleRangeAnalysis/nrOfBounds.expected | 4605 ----------------- .../SimpleRangeAnalysis/nrOfBounds.ql | 5 - .../SimpleRangeAnalysis/ternaryLower.expected | 75 +- .../SimpleRangeAnalysis/ternaryUpper.expected | 75 +- .../rangeanalysis/SimpleRangeAnalysis/test.c | 214 - .../SimpleRangeAnalysis/upperBound.expected | 704 +-- 8 files changed, 418 insertions(+), 6392 deletions(-) delete mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected delete mode 100644 cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql diff --git a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll index fcb99487d2a3..95cdb2624b5b 100644 --- a/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll +++ b/cpp/ql/lib/semmle/code/cpp/rangeanalysis/SimpleRangeAnalysis.qll @@ -93,18 +93,6 @@ private float wideningUpperBounds(ArithmeticType t) { result = 1.0 / 0.0 // +Inf } -/** Gets the widened lower bound for a given type and lower bound. */ -bindingset[type, lb] -float widenLowerBound(Type type, float lb) { - result = max(float widenLB | widenLB = wideningLowerBounds(type) and widenLB <= lb | widenLB) -} - -/** Gets the widened upper bound for a given type and upper bound. */ -bindingset[type, ub] -float widenUpperBound(Type type, float ub) { - result = min(float widenUB | widenUB = wideningUpperBounds(type) and widenUB >= ub | widenUB) -} - /** * Gets the value of the expression `e`, if it is a constant. * This predicate also handles the case of constant variables initialized in different @@ -516,328 +504,6 @@ private predicate isRecursiveExpr(Expr e) { ) } -/** - * Provides predicates that estimate the number of bounds that the range - * analysis might produce. - */ -private module BoundsEstimate { - /** - * Gets the limit beyond which we enable widening. That is, if the estimated - * number of bounds exceeds this limit, we enable widening such that the limit - * will not be reached. - */ - float getBoundsLimit() { - // This limit is arbitrary, but low enough that it prevents timeouts on - // specific observed customer databases (and the in the tests). - result = 2.0.pow(40) - } - - /** Gets the maximum number of bounds possible for `t` when widening is used. */ - private int getNrOfWideningBounds(ArithmeticType t) { - result = strictcount(wideningLowerBounds(t)).maximum(strictcount(wideningUpperBounds(t))) - } - - /** - * Holds if `boundFromGuard(guard, v, _, branch)` holds, but without - * relying on range analysis (which would cause non-monotonic recursion - * elsewhere). - */ - private predicate hasBoundFromGuard(Expr guard, VariableAccess v, boolean branch) { - exists(Expr lhs | linearAccess(lhs, v, _, _) | - relOpWithSwapAndNegate(guard, lhs, _, _, _, branch) - or - eqOpWithSwapAndNegate(guard, lhs, _, true, branch) - or - eqZeroWithNegate(guard, lhs, true, branch) - ) - } - - /** Holds if `def` is a guard phi node for `v` with a bound from a guard. */ - predicate isGuardPhiWithBound(RangeSsaDefinition def, StackVariable v, VariableAccess access) { - exists(Expr guard, boolean branch | - def.isGuardPhi(v, access, guard, branch) and - hasBoundFromGuard(guard, access, branch) - ) - } - - /** - * Gets the number of bounds for `def` when `def` is a guard phi node for the - * variable `v`. - */ - language[monotonicAggregates] - private float nrOfBoundsPhiGuard(RangeSsaDefinition def, StackVariable v) { - // If we have - // - // if (x < c) { e1 } - // e2 - // - // then `e2` is both a guard phi node (guarded by `x < c`) and a normal - // phi node (control is merged after the `if` statement). - // - // Assume `x` has `n` bounds. Then `n` bounds are propagated to the guard - // phi node `{ e1 }` and, since `{ e1 }` is input to `e2` as a normal phi - // node, `n` bounds are propagated to `e2`. If we also propagate the `n` - // bounds to `e2` as a guard phi node, then we square the number of - // bounds. - // - // However in practice `x < c` is going to cut down the number of bounds: - // The tracked bounds can't flow to both branches as that would require - // them to simultaneously be greater and smaller than `c`. To approximate - // this better, the contribution from a guard phi node that is also a - // normal phi node is 1. - exists(def.getAPhiInput(v)) and - isGuardPhiWithBound(def, v, _) and - result = 1 - or - not exists(def.getAPhiInput(v)) and - // If there's different `access`es, then they refer to the same variable - // with the same lower bounds. Hence adding these guards make no sense (the - // implementation will take the union but they'll be removed by - // deduplication). Hence we use `max` as an approximation. - result = - max(VariableAccess access | isGuardPhiWithBound(def, v, access) | nrOfBoundsExpr(access)) - or - def.isPhiNode(v) and - not isGuardPhiWithBound(def, v, _) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is a normal phi node for the - * variable `v`. - */ - language[monotonicAggregates] - private float nrOfBoundsPhiNormal(RangeSsaDefinition def, StackVariable v) { - result = - strictsum(RangeSsaDefinition inputDef | - inputDef = def.getAPhiInput(v) - | - nrOfBoundsDef(inputDef, v) - ) - or - def.isPhiNode(v) and - not exists(def.getAPhiInput(v)) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is an NE phi node for the - * variable `v`. - */ - private float nrOfBoundsNEPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | isNEPhi(v, def, access, _) and result = nrOfBoundsExpr(access)) - or - def.isPhiNode(v) and - not isNEPhi(v, def, _, _) and - result = 0 - } - - /** - * Gets the number of bounds for `def` when `def` is an unsupported guard phi - * node for the variable `v`. - */ - private float nrOfBoundsUnsupportedGuardPhi(RangeSsaDefinition def, StackVariable v) { - exists(VariableAccess access | - isUnsupportedGuardPhi(v, def, access) and - result = nrOfBoundsExpr(access) - ) - or - def.isPhiNode(v) and - not isUnsupportedGuardPhi(v, def, _) and - result = 0 - } - - private float nrOfBoundsPhi(RangeSsaDefinition def, StackVariable v) { - // The cases for phi nodes are not mutually exclusive. For instance a phi - // node can be both a guard phi node and a normal phi node. To handle this - // we sum the contributions from the different cases. - result = - nrOfBoundsPhiGuard(def, v) + nrOfBoundsPhiNormal(def, v) + nrOfBoundsNEPhi(def, v) + - nrOfBoundsUnsupportedGuardPhi(def, v) - } - - /** Gets the estimated number of bounds for `def` and `v`. */ - float nrOfBoundsDef(RangeSsaDefinition def, StackVariable v) { - // Recursive definitions are already widened, so we simply estimate them as - // having the number of widening bounds available. This is crucial as it - // ensures that we don't follow recursive cycles when calculating the - // estimate. Had that not been the case the estimate itself would be at risk - // of causing performance issues and being non-functional. - if isRecursiveDef(def, v) - then result = getNrOfWideningBounds(getVariableRangeType(v)) - else ( - // Definitions with a defining value - exists(Expr defExpr | assignmentDef(def, v, defExpr) and result = nrOfBoundsExpr(defExpr)) - or - // Assignment operations with a defining value - exists(AssignOperation assignOp | - def = assignOp and - assignOp.getLValue() = v.getAnAccess() and - result = nrOfBoundsExpr(assignOp) - ) - or - // Phi nodes - result = nrOfBoundsPhi(def, v) - or - unanalyzableDefBounds(def, v, _, _) and result = 1 - ) - } - - /** - * Gets a naive estimate of the number of bounds for `e`. - * - * The estimate is like an abstract interpretation of the range analysis, - * where the abstract value is the number of bounds. For instance, - * `nrOfBoundsExpr(12) = 1` and `nrOfBoundsExpr(x + y) = nrOfBoundsExpr(x) * - * nrOfBoundsExpr(y)`. - * - * The estimated number of bounds will usually be greater than the actual - * number of bounds, as the estimate can not detect cases where bounds are cut - * down when tracked precisely. For instance, in - * ```c - * int x = 1; - * if (cond) { x = 1; } - * int y = x + x; - * ``` - * the actual number of bounds for `y` is 1. However, the estimate will be 4 - * as the conditional assignment to `x` gives two bounds for `x` on the last - * line and the addition gives 2 * 2 bounds. There are two sources of anncuracies: - * - * 1. Without tracking the lower bounds we can't see that `x` is assigned a - * value that is equal to its lower bound. - * 2. Had the conditional assignment been `x = 2` then the estimate of two - * bounds for `x` would have been correct. However, the estimate of 4 for `y` - * would still be incorrect. Summing the actual bounds `{1,2}` with itself - * gives `{2,3,4}` which is only three bounds. Again, we can't realise this - * without tracking the bounds. - * - * Since these inaccuracies compound the estimated number of bounds can often - * be _much_ greater than the actual number of bounds. Do note though that the - * estimate is not _guaranteed_ to be an upper bound. In some cases the - * approximations might underestimate the number of bounds. - * - * This predicate is functional. This is crucial as: - * - * - It ensures that the computing the estimate itself is fast. - * - Our use of monotonic aggregates assumes functionality. - * - * Any non-functional case should be considered a bug. - */ - float nrOfBoundsExpr(Expr e) { - // Similarly to what we do for definitions, we do not attempt to measure the - // number of bounds for recursive expressions. - if isRecursiveExpr(e) - then result = getNrOfWideningBounds(e.getUnspecifiedType()) - else - if analyzableExpr(e) - then - // The cases here are an abstraction of and mirrors the cases inside - // `getLowerBoundsImpl`/`getUpperBoundsImpl`. - result = 1 and exists(getValue(e).toFloat()) - or - exists(Expr operand | result = nrOfBoundsExpr(operand) | - effectivelyMultipliesByPositive(e, operand, _) - or - effectivelyMultipliesByNegative(e, operand, _) - ) - or - exists(ConditionalExpr condExpr | - e = condExpr and - result = nrOfBoundsExpr(condExpr.getThen()) * nrOfBoundsExpr(condExpr.getElse()) - ) - or - exists(BinaryOperation binop | - e = binop and - result = nrOfBoundsExpr(binop.getLeftOperand()) * nrOfBoundsExpr(binop.getRightOperand()) - | - e instanceof MaxExpr or - e instanceof MinExpr or - e instanceof AddExpr or - e instanceof SubExpr or - e instanceof UnsignedMulExpr or - e instanceof UnsignedBitwiseAndExpr - ) - or - exists(AssignExpr assign | e = assign and result = nrOfBoundsExpr(assign.getRValue())) - or - exists(AssignArithmeticOperation assignOp | - e = assignOp and - result = nrOfBoundsExpr(assignOp.getLValue()) * nrOfBoundsExpr(assignOp.getRValue()) - | - e instanceof AssignAddExpr or - e instanceof AssignSubExpr or - e instanceof UnsignedAssignMulExpr - ) - or - // Handles `AssignMulByPositiveConstantExpr` and `AssignMulByNegativeConstantExpr` - exists(AssignMulByConstantExpr mulExpr | - e = mulExpr and - result = nrOfBoundsExpr(mulExpr.getLValue()) - ) - or - // Handles the prefix and postfix increment and decrement operators. - exists(CrementOperation crementOp | - e = crementOp and result = nrOfBoundsExpr(crementOp.getOperand()) - ) - or - exists(RemExpr remExpr | e = remExpr | result = nrOfBoundsExpr(remExpr.getRightOperand())) - or - exists(Conversion convExpr | - e = convExpr and - if convExpr.getUnspecifiedType() instanceof BoolType - then result = 1 - else result = nrOfBoundsExpr(convExpr.getExpr()) - ) - or - exists(RangeSsaDefinition def, StackVariable v | - e = def.getAUse(v) and - result = nrOfBoundsDef(def, v) and - // Avoid returning two numbers when `e` is a use with a constant value. - not exists(getValue(e).toFloat()) - ) - or - exists(RShiftExpr rsExpr | - e = rsExpr and - exists(getValue(rsExpr.getRightOperand().getFullyConverted()).toInt()) and - result = nrOfBoundsExpr(rsExpr.getLeftOperand()) - ) - else ( - exists(exprMinVal(e)) and result = 1 - ) - } -} - -/** - * Holds if `v` is a variable for which widening should be used, as otherwise a - * very large number of bounds might be generated during the range analysis for - * `v`. - */ -private predicate varHasTooManyBounds(StackVariable v) { - exists(RangeSsaDefinition def | - def.getAVariable() = v and - BoundsEstimate::nrOfBoundsDef(def, v) > BoundsEstimate::getBoundsLimit() - ) -} - -/** - * Holds if `e` is an expression for which widening should be used, as otherwise - * a very large number of bounds might be generated during the range analysis - * for `e`. - */ -private predicate exprHasTooManyBounds(Expr e) { - BoundsEstimate::nrOfBoundsExpr(e) > BoundsEstimate::getBoundsLimit() - or - // A subexpressions of an expression with too many bounds may itself not have - // to many bounds. For instance, `x + y` can have too many bounds without `x` - // having as well. But in these cases, still want to consider `e` as having - // too many bounds since: - // - The overall result is widened anyway, so widening `e` as well is unlikely - // to cause further precision loss. - // - The number of bounds could be very large but still below the arbitrary - // limit. Hence widening `e` can improve performance. - exists(Expr pe | exprHasTooManyBounds(pe) and e.getParent() = pe) -} - /** * Holds if `binop` is a binary operation that's likely to be assigned a * quadratic (or more) number of candidate bounds during the analysis. This can @@ -988,8 +654,13 @@ private float getTruncatedLowerBounds(Expr expr) { if exprMinVal(expr) <= newLB and newLB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) - then result = widenLowerBound(expr.getUnspecifiedType(), newLB) + if isRecursiveBinary(expr) + then + result = + max(float widenLB | + widenLB = wideningLowerBounds(expr.getUnspecifiedType()) and + not widenLB > newLB + ) else result = newLB else result = exprMinVal(expr) ) and @@ -1042,8 +713,13 @@ private float getTruncatedUpperBounds(Expr expr) { if exprMinVal(expr) <= newUB and newUB <= exprMaxVal(expr) then // Apply widening where we might get a combinatorial explosion. - if isRecursiveBinary(expr) or exprHasTooManyBounds(expr) - then result = widenUpperBound(expr.getUnspecifiedType(), newUB) + if isRecursiveBinary(expr) + then + result = + min(float widenUB | + widenUB = wideningUpperBounds(expr.getUnspecifiedType()) and + not widenUB < newUB + ) else result = newUB else result = exprMaxVal(expr) ) @@ -2120,12 +1796,18 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new lower bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) or varHasTooManyBounds(v) + if isRecursiveDef(def, v) then // The new lower bound is from a recursive source, so we round // down to one of a limited set of values to prevent the // recursion from exploding. - result = widenLowerBound(getVariableRangeType(v), truncatedLB) + result = + max(float widenLB | + widenLB = wideningLowerBounds(getVariableRangeType(v)) and + not widenLB > truncatedLB + | + widenLB + ) else result = truncatedLB ) or @@ -2144,12 +1826,18 @@ module SimpleRangeAnalysisInternal { | // Widening: check whether the new upper bound is from a source which // depends recursively on the current definition. - if isRecursiveDef(def, v) or varHasTooManyBounds(v) + if isRecursiveDef(def, v) then // The new upper bound is from a recursive source, so we round // up to one of a fixed set of values to prevent the recursion // from exploding. - result = widenUpperBound(getVariableRangeType(v), truncatedUB) + result = + min(float widenUB | + widenUB = wideningUpperBounds(getVariableRangeType(v)) and + not widenUB < truncatedUB + | + widenUB + ) else result = truncatedUB ) or @@ -2157,60 +1845,4 @@ module SimpleRangeAnalysisInternal { // bound is `typeUpperBound`. defMightOverflowNegatively(def, v) and result = varMaxVal(v) } - - /** Gets the estimate of the number of bounds for `e`. */ - float estimateNrOfBounds(Expr e) { result = BoundsEstimate::nrOfBoundsExpr(e) } -} - -/** Provides predicates for debugging the simple range analysis library. */ -private module Debug { - Locatable getRelevantLocatable() { - exists(string filepath, int startline | - result.getLocation().hasLocationInfo(filepath, startline, _, _, _) and - filepath.matches("%/test.c") and - startline = [621 .. 639] - ) - } - - float debugGetLowerBoundsImpl(Expr e) { - e = getRelevantLocatable() and - result = getLowerBoundsImpl(e) - } - - float debugGetUpperBoundsImpl(Expr e) { - e = getRelevantLocatable() and - result = getUpperBoundsImpl(e) - } - - /** - * Counts the number of lower bounds for a given expression. This predicate is - * useful for identifying performance issues in the range analysis. - */ - predicate countGetLowerBoundsImpl(Expr e, int n) { - e = getRelevantLocatable() and - n = strictcount(float lb | lb = getLowerBoundsImpl(e) | lb) - } - - float debugNrOfBounds(Expr e) { - e = getRelevantLocatable() and - result = BoundsEstimate::nrOfBoundsExpr(e) - } - - /** - * Finds any expressions for which `nrOfBounds` is not functional. The result - * should be empty, so this predicate is useful to debug non-functional cases. - */ - int nonFunctionalNrOfBounds(Expr e) { - strictcount(BoundsEstimate::nrOfBoundsExpr(e)) > 1 and - result = BoundsEstimate::nrOfBoundsExpr(e) - } - - /** - * Holds if `e` is an expression that has a lower bound, but where - * `nrOfBounds` does not compute an estimate. - */ - predicate missingNrOfBounds(Expr e, float n) { - n = lowerBound(e) and - not exists(BoundsEstimate::nrOfBoundsExpr(e)) - } } diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected index 10e31040b5ad..bc8f42dafc3f 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/lowerBound.expected @@ -485,519 +485,197 @@ | test.c:411:59:411:59 | k | 0.205191 | | test.c:411:63:411:63 | l | 0.132041 | | test.c:413:10:413:15 | output | 1.842468 | -| test.c:420:7:420:9 | rhs | 0 | -| test.c:420:19:420:21 | rhs | 0 | -| test.c:421:7:421:9 | rhs | 0 | -| test.c:421:19:421:21 | rhs | 0 | -| test.c:422:7:422:9 | rhs | 0 | -| test.c:422:19:422:21 | rhs | 0 | -| test.c:423:7:423:9 | rhs | 0 | -| test.c:423:19:423:21 | rhs | 0 | -| test.c:424:7:424:9 | rhs | 0 | -| test.c:424:19:424:21 | rhs | 0 | -| test.c:425:10:425:12 | rhs | 0 | -| test.c:432:10:432:11 | ip | 0 | -| test.c:432:20:432:21 | ip | 0 | -| test.c:432:40:432:41 | ip | 0 | -| test.c:433:14:433:15 | ip | 1 | -| test.c:434:14:434:15 | ip | 0 | -| test.c:434:34:434:35 | ip | 0 | -| test.c:435:11:435:12 | ip | 0 | -| test.c:436:13:436:14 | ip | 0 | -| test.c:437:14:437:15 | ip | 0 | -| test.c:438:14:438:15 | ip | 0 | -| test.c:439:15:439:16 | ip | 0 | -| test.c:439:41:439:42 | ip | 0 | -| test.c:439:52:439:53 | ip | 0 | -| test.c:439:67:439:68 | ip | 0 | -| test.c:439:78:439:79 | ip | 0 | -| test.c:440:18:440:19 | ip | 0 | -| test.c:441:23:441:24 | ip | 0 | -| test.c:441:34:441:35 | ip | 0 | -| test.c:442:25:442:26 | ip | 0 | -| test.c:443:20:443:21 | ip | 0 | -| test.c:444:11:444:12 | ip | 0 | -| test.c:444:26:444:27 | ip | 0 | -| test.c:445:16:445:17 | ip | 0 | -| test.c:446:16:446:17 | ip | 0 | -| test.c:447:16:447:17 | ip | 0 | -| test.c:448:17:448:18 | ip | 0 | -| test.c:449:22:449:23 | ip | 0 | -| test.c:449:33:449:34 | ip | 0 | -| test.c:449:48:449:49 | ip | 0 | -| test.c:449:59:449:60 | ip | 0 | -| test.c:450:20:450:21 | ip | 0 | -| test.c:451:25:451:26 | ip | 0 | -| test.c:451:36:451:37 | ip | 0 | -| test.c:452:27:452:28 | ip | 0 | -| test.c:453:22:453:23 | ip | 0 | -| test.c:454:15:454:16 | ip | 0 | -| test.c:454:30:454:31 | ip | 0 | -| test.c:455:11:455:12 | ip | 0 | -| test.c:456:12:456:13 | ip | 0 | -| test.c:457:12:457:13 | ip | 0 | -| test.c:458:13:458:14 | ip | 0 | -| test.c:458:39:458:40 | ip | 0 | -| test.c:458:50:458:51 | ip | 0 | -| test.c:458:65:458:66 | ip | 0 | -| test.c:458:76:458:77 | ip | 0 | -| test.c:459:16:459:17 | ip | 0 | -| test.c:460:21:460:22 | ip | 0 | -| test.c:460:32:460:33 | ip | 0 | -| test.c:461:23:461:24 | ip | 0 | -| test.c:462:18:462:19 | ip | 0 | -| test.c:463:11:463:12 | ip | 0 | -| test.c:463:17:463:18 | ip | 0 | -| test.c:463:37:463:38 | ip | 0 | -| test.c:463:43:463:44 | ip | 0 | -| test.c:464:14:464:15 | ip | 0 | -| test.c:465:14:465:15 | ip | 0 | -| test.c:466:14:466:15 | ip | 0 | -| test.c:467:15:467:16 | ip | 0 | -| test.c:467:41:467:42 | ip | 0 | -| test.c:467:52:467:53 | ip | 0 | -| test.c:467:67:467:68 | ip | 0 | -| test.c:467:78:467:79 | ip | 0 | -| test.c:468:18:468:19 | ip | 0 | -| test.c:469:23:469:24 | ip | 0 | -| test.c:469:34:469:35 | ip | 0 | -| test.c:470:25:470:26 | ip | 0 | -| test.c:471:20:471:21 | ip | 0 | -| test.c:472:14:472:15 | ip | 0 | -| test.c:472:20:472:21 | ip | 0 | -| test.c:473:16:473:17 | ip | 0 | -| test.c:474:12:474:13 | ip | 0 | -| test.c:475:14:475:15 | ip | 0 | -| test.c:476:15:476:16 | ip | 0 | -| test.c:477:16:477:17 | ip | 0 | -| test.c:478:16:478:17 | ip | 0 | -| test.c:479:17:479:18 | ip | 0 | -| test.c:480:22:480:23 | ip | 0 | -| test.c:480:33:480:34 | ip | 0 | -| test.c:480:48:480:49 | ip | 0 | -| test.c:480:59:480:60 | ip | 0 | -| test.c:481:20:481:21 | ip | 0 | -| test.c:482:25:482:26 | ip | 0 | -| test.c:482:36:482:37 | ip | 0 | -| test.c:483:27:483:28 | ip | 0 | -| test.c:484:22:484:23 | ip | 0 | -| test.c:485:13:485:14 | ip | 0 | -| test.c:485:28:485:29 | ip | 0 | -| test.c:486:18:486:19 | ip | 0 | -| test.c:487:18:487:19 | ip | 0 | -| test.c:488:18:488:19 | ip | 0 | -| test.c:489:19:489:20 | ip | 0 | -| test.c:490:24:490:25 | ip | 0 | -| test.c:490:35:490:36 | ip | 0 | -| test.c:490:50:490:51 | ip | 0 | -| test.c:490:61:490:62 | ip | 0 | -| test.c:491:22:491:23 | ip | 0 | -| test.c:492:27:492:28 | ip | 0 | -| test.c:492:38:492:39 | ip | 0 | -| test.c:493:29:493:30 | ip | 0 | -| test.c:494:24:494:25 | ip | 0 | -| test.c:495:17:495:18 | ip | 0 | -| test.c:495:32:495:33 | ip | 0 | -| test.c:496:14:496:15 | ip | 0 | -| test.c:497:18:497:19 | ip | 0 | -| test.c:498:18:498:19 | ip | 0 | -| test.c:499:19:499:20 | ip | 0 | -| test.c:500:24:500:25 | ip | 0 | -| test.c:500:35:500:36 | ip | 0 | -| test.c:500:50:500:51 | ip | 0 | -| test.c:500:61:500:62 | ip | 0 | -| test.c:501:22:501:23 | ip | 0 | -| test.c:502:27:502:28 | ip | 0 | -| test.c:502:38:502:39 | ip | 0 | -| test.c:503:29:503:30 | ip | 0 | -| test.c:504:24:504:25 | ip | 0 | -| test.c:505:17:505:18 | ip | 0 | -| test.c:505:23:505:24 | ip | 0 | -| test.c:505:43:505:44 | ip | 0 | -| test.c:505:49:505:50 | ip | 0 | -| test.c:506:16:506:17 | ip | 0 | -| test.c:507:16:507:17 | ip | 0 | -| test.c:508:16:508:17 | ip | 0 | -| test.c:509:17:509:18 | ip | 0 | -| test.c:510:22:510:23 | ip | 0 | -| test.c:510:33:510:34 | ip | 0 | -| test.c:510:48:510:49 | ip | 0 | -| test.c:510:59:510:60 | ip | 0 | -| test.c:511:20:511:21 | ip | 0 | -| test.c:512:25:512:26 | ip | 0 | -| test.c:512:36:512:37 | ip | 0 | -| test.c:513:27:513:28 | ip | 0 | -| test.c:514:22:514:23 | ip | 0 | -| test.c:515:16:515:17 | ip | 0 | -| test.c:515:22:515:23 | ip | 0 | -| test.c:516:18:516:19 | ip | 0 | -| test.c:517:14:517:15 | ip | 0 | -| test.c:518:14:518:15 | ip | 0 | -| test.c:518:24:518:25 | ip | 0 | -| test.c:518:44:518:45 | ip | 0 | -| test.c:519:16:519:17 | ip | 1 | -| test.c:520:16:520:17 | ip | 0 | -| test.c:520:36:520:37 | ip | 0 | -| test.c:521:14:521:15 | ip | 0 | -| test.c:522:19:522:20 | ip | 0 | -| test.c:523:20:523:21 | ip | 0 | -| test.c:524:20:524:21 | ip | 0 | -| test.c:525:21:525:22 | ip | 0 | -| test.c:526:26:526:27 | ip | 0 | -| test.c:526:37:526:38 | ip | 0 | -| test.c:526:52:526:53 | ip | 0 | -| test.c:526:63:526:64 | ip | 0 | -| test.c:527:24:527:25 | ip | 0 | -| test.c:528:29:528:30 | ip | 0 | -| test.c:528:40:528:41 | ip | 0 | -| test.c:529:31:529:32 | ip | 0 | -| test.c:530:26:530:27 | ip | 0 | -| test.c:531:17:531:18 | ip | 0 | -| test.c:531:32:531:33 | ip | 0 | -| test.c:532:22:532:23 | ip | 0 | -| test.c:533:22:533:23 | ip | 0 | -| test.c:534:22:534:23 | ip | 0 | -| test.c:535:23:535:24 | ip | 0 | -| test.c:536:28:536:29 | ip | 0 | -| test.c:536:39:536:40 | ip | 0 | -| test.c:536:54:536:55 | ip | 0 | -| test.c:536:65:536:66 | ip | 0 | -| test.c:537:26:537:27 | ip | 0 | -| test.c:538:31:538:32 | ip | 0 | -| test.c:538:42:538:43 | ip | 0 | -| test.c:539:33:539:34 | ip | 0 | -| test.c:540:28:540:29 | ip | 0 | -| test.c:541:21:541:22 | ip | 0 | -| test.c:541:36:541:37 | ip | 0 | -| test.c:542:17:542:18 | ip | 0 | -| test.c:543:18:543:19 | ip | 0 | -| test.c:544:18:544:19 | ip | 0 | -| test.c:545:19:545:20 | ip | 0 | -| test.c:546:24:546:25 | ip | 0 | -| test.c:546:35:546:36 | ip | 0 | -| test.c:546:50:546:51 | ip | 0 | -| test.c:546:61:546:62 | ip | 0 | -| test.c:547:22:547:23 | ip | 0 | -| test.c:548:27:548:28 | ip | 0 | -| test.c:548:38:548:39 | ip | 0 | -| test.c:549:29:549:30 | ip | 0 | -| test.c:550:24:550:25 | ip | 0 | -| test.c:551:17:551:18 | ip | 0 | -| test.c:551:23:551:24 | ip | 0 | -| test.c:551:43:551:44 | ip | 0 | -| test.c:551:49:551:50 | ip | 0 | -| test.c:552:20:552:21 | ip | 0 | -| test.c:553:20:553:21 | ip | 0 | -| test.c:554:20:554:21 | ip | 0 | -| test.c:555:21:555:22 | ip | 0 | -| test.c:556:26:556:27 | ip | 0 | -| test.c:556:37:556:38 | ip | 0 | -| test.c:556:52:556:53 | ip | 0 | -| test.c:556:63:556:64 | ip | 0 | -| test.c:557:24:557:25 | ip | 0 | -| test.c:558:29:558:30 | ip | 0 | -| test.c:558:40:558:41 | ip | 0 | -| test.c:559:31:559:32 | ip | 0 | -| test.c:560:26:560:27 | ip | 0 | -| test.c:561:20:561:21 | ip | 0 | -| test.c:561:26:561:27 | ip | 0 | -| test.c:562:22:562:23 | ip | 0 | -| test.c:563:18:563:19 | ip | 0 | -| test.c:564:16:564:17 | ip | 0 | -| test.c:565:17:565:18 | ip | 0 | -| test.c:566:18:566:19 | ip | 0 | -| test.c:567:18:567:19 | ip | 0 | -| test.c:568:19:568:20 | ip | 0 | -| test.c:569:24:569:25 | ip | 0 | -| test.c:569:35:569:36 | ip | 0 | -| test.c:569:50:569:51 | ip | 0 | -| test.c:569:61:569:62 | ip | 0 | -| test.c:570:22:570:23 | ip | 0 | -| test.c:571:27:571:28 | ip | 0 | -| test.c:571:38:571:39 | ip | 0 | -| test.c:572:29:572:30 | ip | 0 | -| test.c:573:24:573:25 | ip | 0 | -| test.c:574:15:574:16 | ip | 0 | -| test.c:574:30:574:31 | ip | 0 | -| test.c:575:20:575:21 | ip | 0 | -| test.c:576:20:576:21 | ip | 0 | -| test.c:577:20:577:21 | ip | 0 | -| test.c:578:21:578:22 | ip | 0 | -| test.c:579:26:579:27 | ip | 0 | -| test.c:579:37:579:38 | ip | 0 | -| test.c:579:52:579:53 | ip | 0 | -| test.c:579:63:579:64 | ip | 0 | -| test.c:580:24:580:25 | ip | 0 | -| test.c:581:29:581:30 | ip | 0 | -| test.c:581:40:581:41 | ip | 0 | -| test.c:582:31:582:32 | ip | 0 | -| test.c:583:26:583:27 | ip | 0 | -| test.c:584:19:584:20 | ip | 0 | -| test.c:584:34:584:35 | ip | 0 | -| test.c:585:16:585:17 | ip | 0 | -| test.c:586:20:586:21 | ip | 0 | -| test.c:587:20:587:21 | ip | 0 | -| test.c:588:21:588:22 | ip | 0 | -| test.c:589:26:589:27 | ip | 0 | -| test.c:589:37:589:38 | ip | 0 | -| test.c:589:52:589:53 | ip | 0 | -| test.c:589:63:589:64 | ip | 0 | -| test.c:590:24:590:25 | ip | 0 | -| test.c:591:29:591:30 | ip | 0 | -| test.c:591:40:591:41 | ip | 0 | -| test.c:592:31:592:32 | ip | 0 | -| test.c:593:26:593:27 | ip | 0 | -| test.c:594:19:594:20 | ip | 0 | -| test.c:594:25:594:26 | ip | 0 | -| test.c:594:45:594:46 | ip | 0 | -| test.c:594:51:594:52 | ip | 0 | -| test.c:595:18:595:19 | ip | 0 | -| test.c:596:18:596:19 | ip | 0 | -| test.c:597:18:597:19 | ip | 0 | -| test.c:598:19:598:20 | ip | 0 | -| test.c:599:24:599:25 | ip | 0 | -| test.c:599:35:599:36 | ip | 0 | -| test.c:599:50:599:51 | ip | 0 | -| test.c:599:61:599:62 | ip | 0 | -| test.c:600:22:600:23 | ip | 0 | -| test.c:601:27:601:28 | ip | 0 | -| test.c:601:38:601:39 | ip | 0 | -| test.c:602:29:602:30 | ip | 0 | -| test.c:603:24:603:25 | ip | 0 | -| test.c:604:18:604:19 | ip | 0 | -| test.c:604:24:604:25 | ip | 0 | -| test.c:605:20:605:21 | ip | 0 | -| test.c:606:16:606:17 | ip | 0 | -| test.c:607:10:607:23 | special_number | 0 | -| test.c:615:7:615:8 | c1 | -2147483648 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | -2147483648 | -| test.c:616:13:616:13 | x | 0 | -| test.c:617:7:617:8 | c3 | -2147483648 | -| test.c:617:13:617:13 | x | 0 | -| test.c:618:7:618:8 | c4 | -2147483648 | -| test.c:618:13:618:13 | x | 0 | -| test.c:619:7:619:8 | c5 | -2147483648 | -| test.c:619:13:619:13 | x | 0 | -| test.c:620:7:620:8 | c1 | -2147483648 | -| test.c:620:13:620:14 | c2 | -2147483648 | -| test.c:620:19:620:19 | x | 0 | -| test.c:621:7:621:8 | c1 | -2147483648 | -| test.c:621:13:621:14 | c3 | -2147483648 | -| test.c:621:19:621:19 | x | 0 | -| test.c:622:7:622:8 | c1 | -2147483648 | -| test.c:622:13:622:14 | c4 | -2147483648 | -| test.c:622:19:622:19 | x | 0 | -| test.c:623:7:623:8 | c1 | -2147483648 | -| test.c:623:13:623:14 | c5 | -2147483648 | -| test.c:623:19:623:19 | x | 0 | -| test.c:624:7:624:8 | c2 | -2147483648 | -| test.c:624:13:624:14 | c3 | -2147483648 | -| test.c:624:19:624:19 | x | 0 | -| test.c:626:11:626:11 | x | 0 | -| test.c:626:15:626:15 | x | 0 | -| test.c:626:19:626:19 | x | 0 | -| test.c:626:23:626:23 | x | 0 | -| test.c:626:27:626:27 | x | 0 | -| test.c:626:31:626:31 | x | 0 | -| test.c:626:35:626:35 | x | 0 | -| test.c:626:39:626:39 | x | 0 | -| test.c:626:43:626:43 | x | 0 | -| test.c:626:47:626:47 | x | 0 | -| test.c:626:51:626:51 | x | 0 | -| test.c:626:55:626:55 | x | 0 | -| test.c:627:10:627:10 | y | -2147483648 | -| test.c:632:20:632:20 | x | 0 | -| test.c:632:30:632:30 | x | 0 | -| test.c:635:3:635:4 | y1 | 0 | -| test.c:635:11:635:11 | y | 0 | -| test.c:635:14:635:14 | y | 1 | -| test.c:636:3:636:4 | y2 | 0 | -| test.c:636:9:636:9 | y | 1 | -| test.c:636:14:636:14 | y | 2 | -| test.c:636:22:636:22 | y | 5 | -| test.c:637:10:637:11 | y1 | 1 | -| test.c:637:15:637:16 | y2 | 5 | -| test.c:645:3:645:3 | i | -2147483648 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | -2147483648 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | -2147483648 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | -2147483648 | -| test.c:656:7:656:7 | j | -2147483648 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | -2147483648 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | -2147483648 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 0 | -| test.c:670:17:670:17 | a | 3 | -| test.c:670:33:670:33 | b | 0 | -| test.c:670:38:670:38 | b | 5 | -| test.c:671:13:671:13 | a | 3 | -| test.c:671:15:671:15 | b | 5 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 15 | -| test.c:674:12:674:12 | a | 0 | -| test.c:674:17:674:17 | a | 3 | -| test.c:674:33:674:33 | b | 0 | -| test.c:674:38:674:38 | b | 0 | -| test.c:675:13:675:13 | a | 3 | -| test.c:675:15:675:15 | b | 0 | -| test.c:676:5:676:9 | total | 0 | -| test.c:676:14:676:14 | r | 0 | -| test.c:678:12:678:12 | a | 0 | -| test.c:678:17:678:17 | a | 3 | -| test.c:678:34:678:34 | b | 0 | -| test.c:678:39:678:39 | b | 13 | -| test.c:679:13:679:13 | a | 3 | -| test.c:679:15:679:15 | b | 13 | -| test.c:680:5:680:9 | total | 0 | -| test.c:680:14:680:14 | r | 39 | -| test.c:683:10:683:14 | total | 0 | -| test.c:689:12:689:12 | b | 0 | -| test.c:689:17:689:17 | b | 5 | -| test.c:690:16:690:16 | b | 5 | -| test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 55 | -| test.c:693:12:693:12 | b | 0 | -| test.c:693:17:693:17 | b | 0 | -| test.c:694:16:694:16 | b | 0 | -| test.c:695:5:695:9 | total | 0 | -| test.c:695:14:695:14 | r | 0 | -| test.c:697:13:697:13 | b | 0 | -| test.c:697:18:697:18 | b | 13 | -| test.c:698:16:698:16 | b | 13 | -| test.c:699:5:699:9 | total | 0 | -| test.c:699:14:699:14 | r | 143 | -| test.c:702:10:702:14 | total | 0 | -| test.c:707:3:707:3 | x | 0 | -| test.c:707:7:707:7 | y | 0 | -| test.c:708:3:708:4 | xy | 0 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 0 | -| test.c:715:3:715:3 | y | 0 | -| test.c:716:3:716:4 | xy | 0 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 0 | -| test.c:722:43:722:44 | ui | 10 | -| test.c:722:48:722:49 | ui | 10 | -| test.c:723:12:723:17 | result | 100 | -| test.c:725:7:725:8 | ul | 0 | -| test.c:726:28:726:29 | ul | 10 | -| test.c:726:33:726:34 | ul | 10 | -| test.c:727:12:727:17 | result | 0 | -| test.c:733:7:733:8 | ui | 0 | -| test.c:733:19:733:20 | ui | 0 | -| test.c:734:5:734:6 | ui | 2 | -| test.c:734:11:734:12 | ui | 2 | -| test.c:735:12:735:13 | ui | 4 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | -2147483648 | -| test.c:747:18:747:18 | i | -1 | -| test.c:748:5:748:5 | i | -2147483648 | -| test.c:748:13:748:13 | i | -1 | -| test.c:749:9:749:9 | i | -5 | -| test.c:751:5:751:5 | i | -2147483648 | -| test.c:751:9:751:9 | i | -5 | -| test.c:752:9:752:9 | i | -30 | -| test.c:754:5:754:5 | i | -30 | -| test.c:755:9:755:9 | i | -210 | -| test.c:757:5:757:5 | i | -210 | -| test.c:758:9:758:9 | i | -1155 | -| test.c:760:7:760:7 | i | -2147483648 | -| test.c:761:5:761:5 | i | -2147483648 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | -2147483648 | -| test.c:764:7:764:7 | i | -2147483648 | -| test.c:765:10:765:10 | i | -2147483648 | -| test.c:768:3:768:3 | i | -2147483648 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | -128 | -| test.c:777:7:777:7 | n | 0 | -| test.c:779:7:779:7 | n | 0 | -| test.c:780:9:780:9 | n | 1 | -| test.c:783:7:783:7 | n | 0 | -| test.c:784:9:784:9 | n | 1 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 0 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 1 | -| test.c:795:10:795:10 | n | 0 | -| test.c:796:5:796:5 | n | 1 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | -32768 | -| test.c:806:7:806:7 | n | 0 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 1 | -| test.c:812:7:812:7 | n | 0 | -| test.c:813:9:813:9 | n | 1 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 0 | -| test.c:819:5:819:5 | n | 1 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | -32768 | -| test.c:827:9:827:9 | n | -32768 | -| test.c:828:11:828:11 | n | 0 | -| test.c:832:7:832:7 | n | -32768 | -| test.c:833:13:833:13 | n | 5 | -| test.c:836:9:836:9 | n | 6 | -| test.c:839:7:839:7 | n | -32768 | -| test.c:839:22:839:22 | n | -32767 | -| test.c:840:9:840:9 | n | -32766 | -| test.c:843:7:843:7 | n | -32768 | -| test.c:844:5:844:5 | n | 0 | -| test.c:844:10:844:10 | n | 1 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 0 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 1 | -| test.c:856:7:856:8 | ss | -32768 | -| test.c:857:9:857:10 | ss | 0 | -| test.c:860:7:860:8 | ss | -32768 | -| test.c:861:9:861:10 | ss | -32768 | -| test.c:864:14:864:15 | us | 0 | -| test.c:865:9:865:10 | us | 0 | -| test.c:868:14:868:15 | us | 0 | -| test.c:869:9:869:10 | us | 0 | -| test.c:872:7:872:8 | ss | -32768 | -| test.c:873:9:873:10 | ss | -32768 | -| test.c:876:7:876:8 | ss | -32768 | -| test.c:877:9:877:10 | ss | -1 | -| test.c:883:8:883:8 | s | -2147483648 | -| test.c:883:15:883:15 | s | 0 | -| test.c:883:23:883:23 | s | 0 | -| test.c:884:18:884:18 | s | 0 | -| test.c:884:22:884:22 | s | 0 | -| test.c:885:9:885:14 | result | 0 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | -2147483648 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 0 | -| test.c:902:12:902:12 | s | -2147483648 | -| test.c:903:7:903:8 | s2 | -4 | -| test.c:908:7:908:7 | x | -2147483648 | -| test.c:909:9:909:9 | y | -2147483648 | -| test.c:913:7:913:7 | y | -2147483648 | -| test.c:922:7:922:7 | x | -2147483648 | -| test.c:927:7:927:7 | x | -2147483648 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:418:20:418:20 | x | 0 | +| test.c:418:30:418:30 | x | 0 | +| test.c:421:3:421:4 | y1 | 0 | +| test.c:421:11:421:11 | y | 0 | +| test.c:421:14:421:14 | y | 1 | +| test.c:422:3:422:4 | y2 | 0 | +| test.c:422:9:422:9 | y | 1 | +| test.c:422:14:422:14 | y | 2 | +| test.c:422:22:422:22 | y | 5 | +| test.c:423:10:423:11 | y1 | 1 | +| test.c:423:15:423:16 | y2 | 5 | +| test.c:431:3:431:3 | i | -2147483648 | +| test.c:432:7:432:7 | i | 10 | +| test.c:434:3:434:3 | i | -2147483648 | +| test.c:435:3:435:3 | i | 10 | +| test.c:436:7:436:7 | i | 20 | +| test.c:438:3:438:3 | i | -2147483648 | +| test.c:439:3:439:3 | i | 40 | +| test.c:440:7:440:7 | i | 30 | +| test.c:442:3:442:3 | i | -2147483648 | +| test.c:442:7:442:7 | j | -2147483648 | +| test.c:443:7:443:7 | i | 40 | +| test.c:445:3:445:3 | i | -2147483648 | +| test.c:445:8:445:8 | j | 40 | +| test.c:446:7:446:7 | i | 50 | +| test.c:448:3:448:3 | i | -2147483648 | +| test.c:448:13:448:13 | j | 50 | +| test.c:449:7:449:7 | i | 60 | +| test.c:456:12:456:12 | a | 0 | +| test.c:456:17:456:17 | a | 3 | +| test.c:456:33:456:33 | b | 0 | +| test.c:456:38:456:38 | b | 5 | +| test.c:457:13:457:13 | a | 3 | +| test.c:457:15:457:15 | b | 5 | +| test.c:458:5:458:9 | total | 0 | +| test.c:458:14:458:14 | r | 15 | +| test.c:460:12:460:12 | a | 0 | +| test.c:460:17:460:17 | a | 3 | +| test.c:460:33:460:33 | b | 0 | +| test.c:460:38:460:38 | b | 0 | +| test.c:461:13:461:13 | a | 3 | +| test.c:461:15:461:15 | b | 0 | +| test.c:462:5:462:9 | total | 0 | +| test.c:462:14:462:14 | r | 0 | +| test.c:464:12:464:12 | a | 0 | +| test.c:464:17:464:17 | a | 3 | +| test.c:464:34:464:34 | b | 0 | +| test.c:464:39:464:39 | b | 13 | +| test.c:465:13:465:13 | a | 3 | +| test.c:465:15:465:15 | b | 13 | +| test.c:466:5:466:9 | total | 0 | +| test.c:466:14:466:14 | r | 39 | +| test.c:469:10:469:14 | total | 0 | +| test.c:475:12:475:12 | b | 0 | +| test.c:475:17:475:17 | b | 5 | +| test.c:476:16:476:16 | b | 5 | +| test.c:477:5:477:9 | total | 0 | +| test.c:477:14:477:14 | r | 55 | +| test.c:479:12:479:12 | b | 0 | +| test.c:479:17:479:17 | b | 0 | +| test.c:480:16:480:16 | b | 0 | +| test.c:481:5:481:9 | total | 0 | +| test.c:481:14:481:14 | r | 0 | +| test.c:483:13:483:13 | b | 0 | +| test.c:483:18:483:18 | b | 13 | +| test.c:484:16:484:16 | b | 13 | +| test.c:485:5:485:9 | total | 0 | +| test.c:485:14:485:14 | r | 143 | +| test.c:488:10:488:14 | total | 0 | +| test.c:493:3:493:3 | x | 0 | +| test.c:493:7:493:7 | y | 0 | +| test.c:494:3:494:4 | xy | 0 | +| test.c:494:8:494:8 | x | 1000000003 | +| test.c:494:12:494:12 | y | 1000000003 | +| test.c:495:10:495:11 | xy | 1000000006000000000 | +| test.c:500:3:500:3 | x | 0 | +| test.c:501:3:501:3 | y | 0 | +| test.c:502:3:502:4 | xy | 0 | +| test.c:502:8:502:8 | x | 274177 | +| test.c:502:12:502:12 | y | 67280421310721 | +| test.c:503:10:503:11 | xy | 18446744073709551616 | +| test.c:507:7:507:8 | ui | 0 | +| test.c:508:43:508:44 | ui | 10 | +| test.c:508:48:508:49 | ui | 10 | +| test.c:509:12:509:17 | result | 100 | +| test.c:511:7:511:8 | ul | 0 | +| test.c:512:28:512:29 | ul | 10 | +| test.c:512:33:512:34 | ul | 10 | +| test.c:513:12:513:17 | result | 0 | +| test.c:519:7:519:8 | ui | 0 | +| test.c:519:19:519:20 | ui | 0 | +| test.c:520:5:520:6 | ui | 2 | +| test.c:520:11:520:12 | ui | 2 | +| test.c:521:12:521:13 | ui | 4 | +| test.c:525:3:525:9 | uiconst | 10 | +| test.c:528:3:528:9 | ulconst | 10 | +| test.c:529:10:529:16 | uiconst | 40 | +| test.c:529:20:529:26 | ulconst | 40 | +| test.c:533:7:533:7 | i | -2147483648 | +| test.c:533:18:533:18 | i | -1 | +| test.c:534:5:534:5 | i | -2147483648 | +| test.c:534:13:534:13 | i | -1 | +| test.c:535:9:535:9 | i | -5 | +| test.c:537:5:537:5 | i | -2147483648 | +| test.c:537:9:537:9 | i | -5 | +| test.c:538:9:538:9 | i | -30 | +| test.c:540:5:540:5 | i | -30 | +| test.c:541:9:541:9 | i | -210 | +| test.c:543:5:543:5 | i | -210 | +| test.c:544:9:544:9 | i | -1155 | +| test.c:546:7:546:7 | i | -2147483648 | +| test.c:547:5:547:5 | i | -2147483648 | +| test.c:547:9:547:9 | i | -1 | +| test.c:548:9:548:9 | i | 1 | +| test.c:550:3:550:3 | i | -2147483648 | +| test.c:550:7:550:7 | i | -2147483648 | +| test.c:551:10:551:10 | i | -2147483648 | +| test.c:554:3:554:3 | i | -2147483648 | +| test.c:554:10:554:11 | sc | 1 | +| test.c:556:7:556:7 | i | -128 | +| test.c:563:7:563:7 | n | 0 | +| test.c:565:7:565:7 | n | 0 | +| test.c:566:9:566:9 | n | 1 | +| test.c:569:7:569:7 | n | 0 | +| test.c:570:9:570:9 | n | 1 | +| test.c:572:9:572:9 | n | 0 | +| test.c:575:8:575:8 | n | 0 | +| test.c:576:9:576:9 | n | 0 | +| test.c:578:9:578:9 | n | 1 | +| test.c:581:10:581:10 | n | 0 | +| test.c:582:5:582:5 | n | 1 | +| test.c:585:7:585:7 | n | 0 | +| test.c:589:7:589:7 | n | -32768 | +| test.c:592:7:592:7 | n | 0 | +| test.c:593:9:593:9 | n | 0 | +| test.c:595:9:595:9 | n | 1 | +| test.c:598:7:598:7 | n | 0 | +| test.c:599:9:599:9 | n | 1 | +| test.c:601:9:601:9 | n | 0 | +| test.c:604:10:604:10 | n | 0 | +| test.c:605:5:605:5 | n | 1 | +| test.c:608:7:608:7 | n | 0 | +| test.c:612:7:612:7 | n | -32768 | +| test.c:613:9:613:9 | n | -32768 | +| test.c:614:11:614:11 | n | 0 | +| test.c:618:7:618:7 | n | -32768 | +| test.c:619:13:619:13 | n | 5 | +| test.c:622:9:622:9 | n | 6 | +| test.c:625:7:625:7 | n | -32768 | +| test.c:625:22:625:22 | n | -32767 | +| test.c:626:9:626:9 | n | -32766 | +| test.c:629:7:629:7 | n | -32768 | +| test.c:630:5:630:5 | n | 0 | +| test.c:630:10:630:10 | n | 1 | +| test.c:630:14:630:14 | n | 0 | +| test.c:631:6:631:6 | n | 0 | +| test.c:631:10:631:10 | n | 0 | +| test.c:631:14:631:14 | n | 1 | +| test.c:642:7:642:8 | ss | -32768 | +| test.c:643:9:643:10 | ss | 0 | +| test.c:646:7:646:8 | ss | -32768 | +| test.c:647:9:647:10 | ss | -32768 | +| test.c:650:14:650:15 | us | 0 | +| test.c:651:9:651:10 | us | 0 | +| test.c:654:14:654:15 | us | 0 | +| test.c:655:9:655:10 | us | 0 | +| test.c:658:7:658:8 | ss | -32768 | +| test.c:659:9:659:10 | ss | -32768 | +| test.c:662:7:662:8 | ss | -32768 | +| test.c:663:9:663:10 | ss | -1 | +| test.c:669:8:669:8 | s | -2147483648 | +| test.c:669:15:669:15 | s | 0 | +| test.c:669:23:669:23 | s | 0 | +| test.c:670:18:670:18 | s | 0 | +| test.c:670:22:670:22 | s | 0 | +| test.c:671:9:671:14 | result | 0 | +| test.c:677:7:677:7 | i | 0 | +| test.c:678:9:678:9 | i | -2147483648 | +| test.c:682:7:682:7 | u | 0 | +| test.c:683:9:683:9 | u | 0 | +| test.c:688:12:688:12 | s | -2147483648 | +| test.c:689:7:689:8 | s2 | -4 | +| test.c:694:7:694:7 | x | -2147483648 | +| test.c:695:9:695:9 | y | -2147483648 | +| test.c:699:7:699:7 | y | -2147483648 | +| test.c:708:7:708:7 | x | -2147483648 | +| test.c:713:7:713:7 | x | -2147483648 | +| test.c:720:8:720:8 | x | 2147483647 | +| test.c:720:12:720:12 | y | 256 | +| test.c:721:9:721:9 | x | 2147483647 | +| test.c:722:9:722:9 | y | 256 | | test.cpp:10:7:10:7 | b | -2147483648 | | test.cpp:11:5:11:5 | x | -2147483648 | | test.cpp:13:10:13:10 | x | -2147483648 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected deleted file mode 100644 index c5905117615d..000000000000 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ /dev/null @@ -1,4605 +0,0 @@ -| inline_assembly.c:9:20:9:20 | 0 | 1.0 | -| inline_assembly.c:9:20:9:20 | (unsigned int)... | 1.0 | -| inline_assembly.c:10:3:10:3 | y | 1.0 | -| inline_assembly.c:10:3:10:7 | ... = ... | 1.0 | -| inline_assembly.c:10:7:10:7 | 1 | 1.0 | -| inline_assembly.c:10:7:10:7 | (unsigned int)... | 1.0 | -| inline_assembly.c:12:3:12:8 | call to printf | 1.0 | -| inline_assembly.c:12:29:12:29 | x | 1.0 | -| inline_assembly.c:12:32:12:32 | y | 1.0 | -| inline_assembly.c:16:25:16:25 | x | 1.0 | -| inline_assembly.c:16:35:16:35 | y | 1.0 | -| inline_assembly.c:21:3:21:8 | call to printf | 1.0 | -| inline_assembly.c:21:29:21:29 | x | 1.0 | -| inline_assembly.c:21:32:21:32 | y | 1.0 | -| inline_assembly.c:23:10:23:10 | 0 | 1.0 | -| minmax.c:16:9:16:10 | 1 | 1.0 | -| minmax.c:16:16:16:17 | 2 | 1.0 | -| minmax.c:16:23:16:24 | 3 | 1.0 | -| minmax.c:18:2:18:7 | call to printf | 1.0 | -| minmax.c:18:37:18:37 | x | 1.0 | -| minmax.c:18:40:18:40 | y | 1.0 | -| minmax.c:18:43:18:43 | z | 1.0 | -| minmax.c:20:2:20:2 | z | 1.0 | -| minmax.c:20:2:24:3 | ... = ... | 2.0 | -| minmax.c:20:6:24:3 | (statement expression) | 2.0 | -| minmax.c:21:10:21:11 | 0 | 1.0 | -| minmax.c:22:7:22:14 | ... != ... | 1.0 | -| minmax.c:22:8:22:8 | x | 1.0 | -| minmax.c:22:14:22:14 | y | 1.0 | -| minmax.c:22:18:22:18 | t | 1.0 | -| minmax.c:22:18:22:22 | ... = ... | 1.0 | -| minmax.c:22:22:22:22 | x | 1.0 | -| minmax.c:23:3:23:3 | t | 2.0 | -| minmax.c:26:2:26:7 | call to printf | 1.0 | -| minmax.c:26:37:26:37 | x | 1.0 | -| minmax.c:26:40:26:40 | y | 1.0 | -| minmax.c:26:43:26:43 | z | 2.0 | -| test.c:6:14:6:15 | 0 | 1.0 | -| test.c:8:5:8:9 | count | 1.0 | -| test.c:8:5:8:19 | ... = ... | 13.0 | -| test.c:8:13:8:17 | count | 13.0 | -| test.c:8:13:8:19 | ... + ... | 13.0 | -| test.c:8:19:8:19 | 1 | 1.0 | -| test.c:10:10:10:14 | count | 13.0 | -| test.c:14:14:14:15 | 0 | 1.0 | -| test.c:16:5:16:9 | count | 1.0 | -| test.c:16:5:16:26 | ... = ... | 13.0 | -| test.c:16:13:16:21 | (...) | 13.0 | -| test.c:16:13:16:26 | ... % ... | 13.0 | -| test.c:16:14:16:18 | count | 13.0 | -| test.c:16:14:16:20 | ... + ... | 13.0 | -| test.c:16:20:16:20 | 1 | 1.0 | -| test.c:16:25:16:26 | 10 | 1.0 | -| test.c:18:10:18:14 | count | 13.0 | -| test.c:22:14:22:15 | 0 | 1.0 | -| test.c:24:5:24:9 | count | 13.0 | -| test.c:24:5:24:11 | ... ++ | 13.0 | -| test.c:25:5:25:9 | count | 1.0 | -| test.c:25:5:25:22 | ... = ... | 13.0 | -| test.c:25:13:25:17 | count | 13.0 | -| test.c:25:13:25:22 | ... % ... | 13.0 | -| test.c:25:21:25:22 | 10 | 1.0 | -| test.c:27:10:27:14 | count | 13.0 | -| test.c:31:10:31:11 | 0 | 1.0 | -| test.c:32:14:32:15 | 0 | 1.0 | -| test.c:33:8:33:8 | i | 1.0 | -| test.c:33:8:33:12 | ... = ... | 1.0 | -| test.c:33:12:33:12 | 0 | 1.0 | -| test.c:33:15:33:15 | i | 13.0 | -| test.c:33:15:33:19 | ... < ... | 1.0 | -| test.c:33:19:33:19 | 2 | 1.0 | -| test.c:33:22:33:22 | i | 1.0 | -| test.c:33:22:33:28 | ... = ... | 13.0 | -| test.c:33:26:33:26 | i | 13.0 | -| test.c:33:26:33:28 | ... + ... | 13.0 | -| test.c:33:28:33:28 | 1 | 1.0 | -| test.c:34:5:34:9 | total | 13.0 | -| test.c:34:5:34:14 | ... += ... | 13.0 | -| test.c:34:14:34:14 | i | 13.0 | -| test.c:36:10:36:14 | total | 13.0 | -| test.c:36:10:36:18 | ... + ... | 13.0 | -| test.c:36:18:36:18 | i | 13.0 | -| test.c:40:10:40:11 | 0 | 1.0 | -| test.c:41:14:41:15 | 0 | 1.0 | -| test.c:42:8:42:8 | i | 1.0 | -| test.c:42:8:42:12 | ... = ... | 1.0 | -| test.c:42:12:42:12 | 0 | 1.0 | -| test.c:42:15:42:15 | i | 13.0 | -| test.c:42:15:42:19 | ... < ... | 1.0 | -| test.c:42:19:42:19 | 2 | 1.0 | -| test.c:42:22:42:22 | i | 13.0 | -| test.c:42:22:42:24 | ... ++ | 13.0 | -| test.c:43:5:43:9 | total | 13.0 | -| test.c:43:5:43:14 | ... += ... | 13.0 | -| test.c:43:14:43:14 | i | 13.0 | -| test.c:45:10:45:14 | total | 13.0 | -| test.c:45:10:45:18 | ... + ... | 13.0 | -| test.c:45:18:45:18 | i | 13.0 | -| test.c:49:10:49:11 | 0 | 1.0 | -| test.c:50:14:50:15 | 0 | 1.0 | -| test.c:51:8:51:8 | i | 1.0 | -| test.c:51:8:51:12 | ... = ... | 1.0 | -| test.c:51:12:51:12 | 0 | 1.0 | -| test.c:51:15:51:15 | i | 13.0 | -| test.c:51:15:51:17 | ... + ... | 13.0 | -| test.c:51:15:51:21 | ... < ... | 1.0 | -| test.c:51:17:51:17 | 2 | 1.0 | -| test.c:51:21:51:21 | 4 | 1.0 | -| test.c:51:24:51:24 | i | 1.0 | -| test.c:51:24:51:30 | ... = ... | 13.0 | -| test.c:51:28:51:28 | i | 13.0 | -| test.c:51:28:51:30 | ... + ... | 13.0 | -| test.c:51:30:51:30 | 1 | 1.0 | -| test.c:52:5:52:9 | total | 13.0 | -| test.c:52:5:52:14 | ... += ... | 13.0 | -| test.c:52:14:52:14 | i | 13.0 | -| test.c:54:10:54:14 | total | 13.0 | -| test.c:54:10:54:18 | ... + ... | 13.0 | -| test.c:54:18:54:18 | i | 13.0 | -| test.c:58:7:58:7 | i | 1.0 | -| test.c:58:7:58:11 | ... < ... | 1.0 | -| test.c:58:11:58:11 | 4 | 1.0 | -| test.c:59:9:59:9 | i | 1.0 | -| test.c:59:9:59:13 | ... < ... | 1.0 | -| test.c:59:13:59:13 | 5 | 1.0 | -| test.c:60:14:60:14 | i | 1.0 | -| test.c:63:10:63:10 | 1 | 1.0 | -| test.c:67:7:67:11 | - ... | 1.0 | -| test.c:67:7:67:15 | ... < ... | 1.0 | -| test.c:67:7:67:25 | ... && ... | 1.0 | -| test.c:67:8:67:11 | 1000 | 1.0 | -| test.c:67:15:67:15 | y | 1.0 | -| test.c:67:20:67:20 | y | 1.0 | -| test.c:67:20:67:25 | ... < ... | 1.0 | -| test.c:67:24:67:25 | 10 | 1.0 | -| test.c:68:9:68:9 | x | 1.0 | -| test.c:68:9:68:15 | ... < ... | 1.0 | -| test.c:68:13:68:13 | y | 1.0 | -| test.c:68:13:68:15 | ... - ... | 1.0 | -| test.c:68:15:68:15 | 2 | 1.0 | -| test.c:69:14:69:14 | x | 1.0 | -| test.c:72:10:72:10 | y | 1.0 | -| test.c:76:7:76:7 | y | 1.0 | -| test.c:76:7:76:12 | ... == ... | 1.0 | -| test.c:76:12:76:12 | 0 | 1.0 | -| test.c:77:9:77:9 | x | 1.0 | -| test.c:77:9:77:13 | ... < ... | 1.0 | -| test.c:77:13:77:13 | 4 | 1.0 | -| test.c:78:14:78:14 | 0 | 1.0 | -| test.c:81:9:81:9 | x | 1.0 | -| test.c:81:9:81:13 | ... < ... | 1.0 | -| test.c:81:13:81:13 | 4 | 1.0 | -| test.c:82:14:82:14 | 1 | 1.0 | -| test.c:85:10:85:10 | x | 1.0 | -| test.c:89:7:89:7 | y | 1.0 | -| test.c:89:7:89:11 | ... > ... | 1.0 | -| test.c:89:11:89:11 | 7 | 1.0 | -| test.c:90:9:90:9 | x | 1.0 | -| test.c:90:9:90:13 | ... < ... | 1.0 | -| test.c:90:13:90:13 | y | 1.0 | -| test.c:91:14:91:14 | 0 | 1.0 | -| test.c:93:12:93:12 | x | 1.0 | -| test.c:95:10:95:10 | 1 | 1.0 | -| test.c:100:3:100:3 | c | 1.0 | -| test.c:100:3:100:8 | ... = ... | 1.0 | -| test.c:100:7:100:8 | * ... | 1.0 | -| test.c:101:7:101:7 | (int)... | 1.0 | -| test.c:101:7:101:7 | c | 1.0 | -| test.c:101:7:101:15 | ... != ... | 1.0 | -| test.c:101:12:101:15 | 0 | 1.0 | -| test.c:102:5:102:8 | * ... | 1.0 | -| test.c:102:5:102:15 | ... = ... | 1.0 | -| test.c:102:12:102:15 | 0 | 1.0 | -| test.c:102:12:102:15 | (char)... | 1.0 | -| test.c:104:7:104:7 | (int)... | 2.0 | -| test.c:104:7:104:7 | c | 2.0 | -| test.c:104:7:104:14 | ... == ... | 1.0 | -| test.c:104:12:104:14 | 58 | 1.0 | -| test.c:105:5:105:5 | c | 1.0 | -| test.c:105:5:105:10 | ... = ... | 1.0 | -| test.c:105:9:105:10 | * ... | 1.0 | -| test.c:106:9:106:9 | (int)... | 1.0 | -| test.c:106:9:106:9 | c | 1.0 | -| test.c:106:9:106:17 | ... != ... | 1.0 | -| test.c:106:14:106:17 | 0 | 1.0 | -| test.c:107:7:107:10 | * ... | 1.0 | -| test.c:107:7:107:17 | ... = ... | 1.0 | -| test.c:107:14:107:17 | 0 | 1.0 | -| test.c:107:14:107:17 | (char)... | 1.0 | -| test.c:109:9:109:9 | (int)... | 2.0 | -| test.c:109:9:109:9 | c | 2.0 | -| test.c:109:9:109:16 | ... != ... | 1.0 | -| test.c:109:14:109:16 | 44 | 1.0 | -| test.c:110:14:110:14 | 1 | 1.0 | -| test.c:112:10:112:10 | 0 | 1.0 | -| test.c:118:24:118:24 | 0 | 1.0 | -| test.c:118:24:118:24 | (size_type)... | 1.0 | -| test.c:119:10:119:10 | n | 1.0 | -| test.c:119:10:119:12 | ... ++ | 1.0 | -| test.c:123:22:123:22 | 0 | 1.0 | -| test.c:123:22:123:22 | (size_type)... | 1.0 | -| test.c:124:11:124:15 | Start | 13.0 | -| test.c:124:11:124:36 | ... <= ... | 1.0 | -| test.c:124:20:124:32 | call to test12_helper | 1.0 | -| test.c:124:20:124:36 | ... - ... | 1.0 | -| test.c:124:36:124:36 | 1 | 1.0 | -| test.c:124:36:124:36 | (unsigned long long)... | 1.0 | -| test.c:126:31:126:43 | call to test12_helper | 1.0 | -| test.c:127:6:127:10 | Start | 13.0 | -| test.c:127:6:127:24 | ... += ... | 13.0 | -| test.c:127:15:127:20 | Length | 1.0 | -| test.c:127:15:127:24 | ... + ... | 1.0 | -| test.c:127:24:127:24 | 1 | 1.0 | -| test.c:127:24:127:24 | (unsigned long long)... | 1.0 | -| test.c:130:11:130:11 | 1 | 1.0 | -| test.c:135:22:135:22 | (unsigned char)... | 1.0 | -| test.c:135:22:135:22 | c | 1.0 | -| test.c:136:20:136:20 | 0 | 1.0 | -| test.c:136:20:136:20 | (unsigned int)... | 1.0 | -| test.c:137:20:137:20 | x | 1.0 | -| test.c:137:20:137:22 | ... - ... | 1.0 | -| test.c:137:22:137:22 | 1 | 1.0 | -| test.c:137:22:137:22 | (unsigned int)... | 1.0 | -| test.c:138:11:138:11 | i | 1.0 | -| test.c:138:11:138:13 | ... + ... | 1.0 | -| test.c:138:13:138:13 | 1 | 1.0 | -| test.c:139:10:139:41 | (double)... | 1.0 | -| test.c:139:10:139:41 | (int)... | 1.0 | -| test.c:139:18:139:41 | (...) | 1.0 | -| test.c:139:19:139:19 | (int)... | 1.0 | -| test.c:139:19:139:19 | c | 1.0 | -| test.c:139:19:139:23 | ... + ... | 1.0 | -| test.c:139:19:139:28 | (unsigned int)... | 1.0 | -| test.c:139:19:139:28 | ... + ... | 1.0 | -| test.c:139:19:139:32 | ... + ... | 1.0 | -| test.c:139:19:139:36 | ... + ... | 1.0 | -| test.c:139:19:139:40 | ... + ... | 1.0 | -| test.c:139:23:139:23 | i | 1.0 | -| test.c:139:27:139:28 | (int)... | 1.0 | -| test.c:139:27:139:28 | uc | 1.0 | -| test.c:139:32:139:32 | x | 1.0 | -| test.c:139:36:139:36 | y | 1.0 | -| test.c:139:40:139:40 | (unsigned int)... | 1.0 | -| test.c:139:40:139:40 | z | 1.0 | -| test.c:144:12:144:23 | (int)... | 1.0 | -| test.c:144:17:144:23 | (char)... | 1.0 | -| test.c:144:23:144:23 | x | 1.0 | -| test.c:145:12:145:32 | (int)... | 1.0 | -| test.c:145:17:145:32 | (unsigned char)... | 1.0 | -| test.c:145:32:145:32 | x | 1.0 | -| test.c:146:12:146:33 | (int)... | 1.0 | -| test.c:146:17:146:33 | (unsigned short)... | 1.0 | -| test.c:146:33:146:33 | x | 1.0 | -| test.c:147:12:147:31 | (int)... | 1.0 | -| test.c:147:17:147:31 | (unsigned int)... | 1.0 | -| test.c:147:31:147:31 | x | 1.0 | -| test.c:148:13:148:13 | (char)... | 1.0 | -| test.c:148:13:148:13 | x | 1.0 | -| test.c:149:23:149:23 | (unsigned short)... | 1.0 | -| test.c:149:23:149:23 | x | 1.0 | -| test.c:150:10:150:11 | x0 | 1.0 | -| test.c:150:10:150:16 | ... + ... | 1.0 | -| test.c:150:10:150:21 | ... + ... | 1.0 | -| test.c:150:10:150:26 | ... + ... | 1.0 | -| test.c:150:10:150:31 | ... + ... | 1.0 | -| test.c:150:10:150:36 | ... + ... | 1.0 | -| test.c:150:15:150:16 | x1 | 1.0 | -| test.c:150:20:150:21 | x2 | 1.0 | -| test.c:150:25:150:26 | x3 | 1.0 | -| test.c:150:30:150:31 | (int)... | 1.0 | -| test.c:150:30:150:31 | c0 | 1.0 | -| test.c:150:35:150:36 | (int)... | 1.0 | -| test.c:150:35:150:36 | s0 | 1.0 | -| test.c:154:10:154:31 | (...) | 1.0 | -| test.c:154:10:154:40 | ... ? ... : ... | 1.0 | -| test.c:154:11:154:11 | x | 1.0 | -| test.c:154:11:154:15 | ... > ... | 1.0 | -| test.c:154:11:154:30 | ... && ... | 1.0 | -| test.c:154:15:154:15 | 0 | 1.0 | -| test.c:154:15:154:15 | (long long)... | 1.0 | -| test.c:154:20:154:20 | x | 1.0 | -| test.c:154:20:154:30 | ... == ... | 1.0 | -| test.c:154:25:154:30 | (int)... | 1.0 | -| test.c:154:25:154:30 | (long long)... | 1.0 | -| test.c:154:30:154:30 | x | 1.0 | -| test.c:154:35:154:35 | x | 1.0 | -| test.c:154:39:154:40 | (long long)... | 1.0 | -| test.c:154:39:154:40 | - ... | 1.0 | -| test.c:154:40:154:40 | 1 | 1.0 | -| test.c:159:14:159:15 | 0 | 1.0 | -| test.c:161:7:161:7 | 3 | 1.0 | -| test.c:161:7:161:12 | ... <= ... | 1.0 | -| test.c:161:7:161:23 | ... && ... | 1.0 | -| test.c:161:12:161:12 | a | 1.0 | -| test.c:161:17:161:17 | a | 1.0 | -| test.c:161:17:161:23 | ... <= ... | 1.0 | -| test.c:161:22:161:23 | 11 | 1.0 | -| test.c:162:13:162:14 | + ... | 1.0 | -| test.c:162:14:162:14 | a | 1.0 | -| test.c:163:13:163:14 | - ... | 1.0 | -| test.c:163:14:163:14 | a | 1.0 | -| test.c:164:5:164:9 | total | 1.0 | -| test.c:164:5:164:16 | ... += ... | 1.0 | -| test.c:164:14:164:14 | b | 1.0 | -| test.c:164:14:164:16 | ... + ... | 1.0 | -| test.c:164:16:164:16 | c | 1.0 | -| test.c:166:7:166:7 | 0 | 1.0 | -| test.c:166:7:166:12 | ... <= ... | 1.0 | -| test.c:166:7:166:23 | ... && ... | 1.0 | -| test.c:166:12:166:12 | a | 2.0 | -| test.c:166:17:166:17 | a | 2.0 | -| test.c:166:17:166:23 | ... <= ... | 1.0 | -| test.c:166:22:166:23 | 11 | 1.0 | -| test.c:167:13:167:14 | + ... | 2.0 | -| test.c:167:14:167:14 | a | 2.0 | -| test.c:168:13:168:14 | - ... | 2.0 | -| test.c:168:14:168:14 | a | 2.0 | -| test.c:169:5:169:9 | total | 2.0 | -| test.c:169:5:169:16 | ... += ... | 8.0 | -| test.c:169:14:169:14 | b | 2.0 | -| test.c:169:14:169:16 | ... + ... | 4.0 | -| test.c:169:16:169:16 | c | 2.0 | -| test.c:171:7:171:8 | - ... | 1.0 | -| test.c:171:7:171:13 | ... <= ... | 1.0 | -| test.c:171:7:171:24 | ... && ... | 1.0 | -| test.c:171:8:171:8 | 7 | 1.0 | -| test.c:171:13:171:13 | a | 3.0 | -| test.c:171:18:171:18 | a | 3.0 | -| test.c:171:18:171:24 | ... <= ... | 1.0 | -| test.c:171:23:171:24 | 11 | 1.0 | -| test.c:172:13:172:14 | + ... | 3.0 | -| test.c:172:14:172:14 | a | 3.0 | -| test.c:173:13:173:14 | - ... | 3.0 | -| test.c:173:14:173:14 | a | 3.0 | -| test.c:174:5:174:9 | total | 10.0 | -| test.c:174:5:174:16 | ... += ... | 90.0 | -| test.c:174:14:174:14 | b | 3.0 | -| test.c:174:14:174:16 | ... + ... | 9.0 | -| test.c:174:16:174:16 | c | 3.0 | -| test.c:176:7:176:8 | - ... | 1.0 | -| test.c:176:7:176:13 | ... <= ... | 1.0 | -| test.c:176:7:176:23 | ... && ... | 1.0 | -| test.c:176:8:176:8 | 7 | 1.0 | -| test.c:176:13:176:13 | a | 4.0 | -| test.c:176:18:176:18 | a | 4.0 | -| test.c:176:18:176:23 | ... <= ... | 1.0 | -| test.c:176:23:176:23 | 1 | 1.0 | -| test.c:177:13:177:14 | + ... | 4.0 | -| test.c:177:14:177:14 | a | 4.0 | -| test.c:178:13:178:14 | - ... | 4.0 | -| test.c:178:14:178:14 | a | 4.0 | -| test.c:179:5:179:9 | total | 100.0 | -| test.c:179:5:179:16 | ... += ... | 1600.0 | -| test.c:179:14:179:14 | b | 4.0 | -| test.c:179:14:179:16 | ... + ... | 16.0 | -| test.c:179:16:179:16 | c | 4.0 | -| test.c:181:7:181:8 | - ... | 1.0 | -| test.c:181:7:181:13 | ... <= ... | 1.0 | -| test.c:181:7:181:23 | ... && ... | 1.0 | -| test.c:181:8:181:8 | 7 | 1.0 | -| test.c:181:13:181:13 | a | 5.0 | -| test.c:181:18:181:18 | a | 5.0 | -| test.c:181:18:181:23 | ... <= ... | 1.0 | -| test.c:181:23:181:23 | 0 | 1.0 | -| test.c:182:13:182:14 | + ... | 5.0 | -| test.c:182:14:182:14 | a | 5.0 | -| test.c:183:13:183:14 | - ... | 5.0 | -| test.c:183:14:183:14 | a | 5.0 | -| test.c:184:5:184:9 | total | 1700.0 | -| test.c:184:5:184:16 | ... += ... | 42500.0 | -| test.c:184:14:184:14 | b | 5.0 | -| test.c:184:14:184:16 | ... + ... | 25.0 | -| test.c:184:16:184:16 | c | 5.0 | -| test.c:186:7:186:8 | - ... | 1.0 | -| test.c:186:7:186:13 | ... <= ... | 1.0 | -| test.c:186:7:186:24 | ... && ... | 1.0 | -| test.c:186:8:186:8 | 7 | 1.0 | -| test.c:186:13:186:13 | a | 6.0 | -| test.c:186:18:186:18 | a | 6.0 | -| test.c:186:18:186:24 | ... <= ... | 1.0 | -| test.c:186:23:186:24 | - ... | 1.0 | -| test.c:186:24:186:24 | 2 | 1.0 | -| test.c:187:13:187:14 | + ... | 6.0 | -| test.c:187:14:187:14 | a | 6.0 | -| test.c:188:13:188:14 | - ... | 6.0 | -| test.c:188:14:188:14 | a | 6.0 | -| test.c:189:5:189:9 | total | 44200.0 | -| test.c:189:5:189:16 | ... += ... | 1591200.0 | -| test.c:189:14:189:14 | b | 6.0 | -| test.c:189:14:189:16 | ... + ... | 36.0 | -| test.c:189:16:189:16 | c | 6.0 | -| test.c:192:10:192:14 | total | 1635400.0 | -| test.c:198:14:198:15 | 0 | 1.0 | -| test.c:200:7:200:7 | 3 | 1.0 | -| test.c:200:7:200:12 | ... <= ... | 1.0 | -| test.c:200:7:200:23 | ... && ... | 1.0 | -| test.c:200:7:200:33 | ... && ... | 1.0 | -| test.c:200:7:200:44 | ... && ... | 1.0 | -| test.c:200:12:200:12 | a | 1.0 | -| test.c:200:17:200:17 | a | 1.0 | -| test.c:200:17:200:23 | ... <= ... | 1.0 | -| test.c:200:22:200:23 | 11 | 1.0 | -| test.c:200:28:200:28 | 5 | 1.0 | -| test.c:200:28:200:33 | ... <= ... | 1.0 | -| test.c:200:33:200:33 | b | 1.0 | -| test.c:200:38:200:38 | b | 1.0 | -| test.c:200:38:200:44 | ... <= ... | 1.0 | -| test.c:200:43:200:44 | 23 | 1.0 | -| test.c:201:13:201:13 | a | 1.0 | -| test.c:201:13:201:15 | ... * ... | 1.0 | -| test.c:201:15:201:15 | b | 1.0 | -| test.c:202:5:202:9 | total | 1.0 | -| test.c:202:5:202:14 | ... += ... | 1.0 | -| test.c:202:14:202:14 | r | 1.0 | -| test.c:204:7:204:7 | 3 | 1.0 | -| test.c:204:7:204:12 | ... <= ... | 1.0 | -| test.c:204:7:204:23 | ... && ... | 1.0 | -| test.c:204:7:204:33 | ... && ... | 1.0 | -| test.c:204:7:204:44 | ... && ... | 1.0 | -| test.c:204:12:204:12 | a | 2.0 | -| test.c:204:17:204:17 | a | 2.0 | -| test.c:204:17:204:23 | ... <= ... | 1.0 | -| test.c:204:22:204:23 | 11 | 1.0 | -| test.c:204:28:204:28 | 0 | 1.0 | -| test.c:204:28:204:33 | ... <= ... | 1.0 | -| test.c:204:33:204:33 | b | 3.0 | -| test.c:204:38:204:38 | b | 3.0 | -| test.c:204:38:204:44 | ... <= ... | 1.0 | -| test.c:204:43:204:44 | 23 | 1.0 | -| test.c:205:13:205:13 | a | 2.0 | -| test.c:205:13:205:15 | ... * ... | 1.0 | -| test.c:205:15:205:15 | b | 3.0 | -| test.c:206:5:206:9 | total | 2.0 | -| test.c:206:5:206:14 | ... += ... | 2.0 | -| test.c:206:14:206:14 | r | 1.0 | -| test.c:208:7:208:7 | 3 | 1.0 | -| test.c:208:7:208:12 | ... <= ... | 1.0 | -| test.c:208:7:208:23 | ... && ... | 1.0 | -| test.c:208:7:208:35 | ... && ... | 1.0 | -| test.c:208:7:208:46 | ... && ... | 1.0 | -| test.c:208:12:208:12 | a | 3.0 | -| test.c:208:17:208:17 | a | 3.0 | -| test.c:208:17:208:23 | ... <= ... | 1.0 | -| test.c:208:22:208:23 | 11 | 1.0 | -| test.c:208:28:208:30 | - ... | 1.0 | -| test.c:208:28:208:35 | ... <= ... | 1.0 | -| test.c:208:29:208:30 | 13 | 1.0 | -| test.c:208:35:208:35 | b | 7.0 | -| test.c:208:40:208:40 | b | 7.0 | -| test.c:208:40:208:46 | ... <= ... | 1.0 | -| test.c:208:45:208:46 | 23 | 1.0 | -| test.c:209:13:209:13 | a | 3.0 | -| test.c:209:13:209:15 | ... * ... | 1.0 | -| test.c:209:15:209:15 | b | 7.0 | -| test.c:210:5:210:9 | total | 4.0 | -| test.c:210:5:210:14 | ... += ... | 4.0 | -| test.c:210:14:210:14 | r | 1.0 | -| test.c:212:7:212:7 | 3 | 1.0 | -| test.c:212:7:212:12 | ... <= ... | 1.0 | -| test.c:212:7:212:23 | ... && ... | 1.0 | -| test.c:212:7:212:35 | ... && ... | 1.0 | -| test.c:212:7:212:45 | ... && ... | 1.0 | -| test.c:212:12:212:12 | a | 4.0 | -| test.c:212:17:212:17 | a | 4.0 | -| test.c:212:17:212:23 | ... <= ... | 1.0 | -| test.c:212:22:212:23 | 11 | 1.0 | -| test.c:212:28:212:30 | - ... | 1.0 | -| test.c:212:28:212:35 | ... <= ... | 1.0 | -| test.c:212:29:212:30 | 13 | 1.0 | -| test.c:212:35:212:35 | b | 15.0 | -| test.c:212:40:212:40 | b | 15.0 | -| test.c:212:40:212:45 | ... <= ... | 1.0 | -| test.c:212:45:212:45 | 0 | 1.0 | -| test.c:213:13:213:13 | a | 4.0 | -| test.c:213:13:213:15 | ... * ... | 1.0 | -| test.c:213:15:213:15 | b | 15.0 | -| test.c:214:5:214:9 | total | 8.0 | -| test.c:214:5:214:14 | ... += ... | 8.0 | -| test.c:214:14:214:14 | r | 1.0 | -| test.c:216:7:216:7 | 3 | 1.0 | -| test.c:216:7:216:12 | ... <= ... | 1.0 | -| test.c:216:7:216:23 | ... && ... | 1.0 | -| test.c:216:7:216:35 | ... && ... | 1.0 | -| test.c:216:7:216:46 | ... && ... | 1.0 | -| test.c:216:12:216:12 | a | 5.0 | -| test.c:216:17:216:17 | a | 5.0 | -| test.c:216:17:216:23 | ... <= ... | 1.0 | -| test.c:216:22:216:23 | 11 | 1.0 | -| test.c:216:28:216:30 | - ... | 1.0 | -| test.c:216:28:216:35 | ... <= ... | 1.0 | -| test.c:216:29:216:30 | 13 | 1.0 | -| test.c:216:35:216:35 | b | 31.0 | -| test.c:216:40:216:40 | b | 31.0 | -| test.c:216:40:216:46 | ... <= ... | 1.0 | -| test.c:216:45:216:46 | - ... | 1.0 | -| test.c:216:46:216:46 | 7 | 1.0 | -| test.c:217:13:217:13 | a | 5.0 | -| test.c:217:13:217:15 | ... * ... | 1.0 | -| test.c:217:15:217:15 | b | 31.0 | -| test.c:218:5:218:9 | total | 16.0 | -| test.c:218:5:218:14 | ... += ... | 16.0 | -| test.c:218:14:218:14 | r | 1.0 | -| test.c:221:10:221:14 | total | 32.0 | -| test.c:226:14:226:15 | 0 | 1.0 | -| test.c:228:7:228:7 | 0 | 1.0 | -| test.c:228:7:228:12 | ... <= ... | 1.0 | -| test.c:228:7:228:23 | ... && ... | 1.0 | -| test.c:228:7:228:33 | ... && ... | 1.0 | -| test.c:228:7:228:44 | ... && ... | 1.0 | -| test.c:228:12:228:12 | a | 1.0 | -| test.c:228:17:228:17 | a | 1.0 | -| test.c:228:17:228:23 | ... <= ... | 1.0 | -| test.c:228:22:228:23 | 11 | 1.0 | -| test.c:228:28:228:28 | 5 | 1.0 | -| test.c:228:28:228:33 | ... <= ... | 1.0 | -| test.c:228:33:228:33 | b | 1.0 | -| test.c:228:38:228:38 | b | 1.0 | -| test.c:228:38:228:44 | ... <= ... | 1.0 | -| test.c:228:43:228:44 | 23 | 1.0 | -| test.c:229:13:229:13 | a | 1.0 | -| test.c:229:13:229:15 | ... * ... | 1.0 | -| test.c:229:15:229:15 | b | 1.0 | -| test.c:230:5:230:9 | total | 1.0 | -| test.c:230:5:230:14 | ... += ... | 1.0 | -| test.c:230:14:230:14 | r | 1.0 | -| test.c:232:7:232:7 | 0 | 1.0 | -| test.c:232:7:232:12 | ... <= ... | 1.0 | -| test.c:232:7:232:23 | ... && ... | 1.0 | -| test.c:232:7:232:33 | ... && ... | 1.0 | -| test.c:232:7:232:44 | ... && ... | 1.0 | -| test.c:232:12:232:12 | a | 2.0 | -| test.c:232:17:232:17 | a | 2.0 | -| test.c:232:17:232:23 | ... <= ... | 1.0 | -| test.c:232:22:232:23 | 11 | 1.0 | -| test.c:232:28:232:28 | 0 | 1.0 | -| test.c:232:28:232:33 | ... <= ... | 1.0 | -| test.c:232:33:232:33 | b | 3.0 | -| test.c:232:38:232:38 | b | 3.0 | -| test.c:232:38:232:44 | ... <= ... | 1.0 | -| test.c:232:43:232:44 | 23 | 1.0 | -| test.c:233:13:233:13 | a | 2.0 | -| test.c:233:13:233:15 | ... * ... | 1.0 | -| test.c:233:15:233:15 | b | 3.0 | -| test.c:234:5:234:9 | total | 2.0 | -| test.c:234:5:234:14 | ... += ... | 2.0 | -| test.c:234:14:234:14 | r | 1.0 | -| test.c:236:7:236:7 | 0 | 1.0 | -| test.c:236:7:236:12 | ... <= ... | 1.0 | -| test.c:236:7:236:23 | ... && ... | 1.0 | -| test.c:236:7:236:35 | ... && ... | 1.0 | -| test.c:236:7:236:46 | ... && ... | 1.0 | -| test.c:236:12:236:12 | a | 3.0 | -| test.c:236:17:236:17 | a | 3.0 | -| test.c:236:17:236:23 | ... <= ... | 1.0 | -| test.c:236:22:236:23 | 11 | 1.0 | -| test.c:236:28:236:30 | - ... | 1.0 | -| test.c:236:28:236:35 | ... <= ... | 1.0 | -| test.c:236:29:236:30 | 13 | 1.0 | -| test.c:236:35:236:35 | b | 7.0 | -| test.c:236:40:236:40 | b | 7.0 | -| test.c:236:40:236:46 | ... <= ... | 1.0 | -| test.c:236:45:236:46 | 23 | 1.0 | -| test.c:237:13:237:13 | a | 3.0 | -| test.c:237:13:237:15 | ... * ... | 1.0 | -| test.c:237:15:237:15 | b | 7.0 | -| test.c:238:5:238:9 | total | 4.0 | -| test.c:238:5:238:14 | ... += ... | 4.0 | -| test.c:238:14:238:14 | r | 1.0 | -| test.c:240:7:240:7 | 0 | 1.0 | -| test.c:240:7:240:12 | ... <= ... | 1.0 | -| test.c:240:7:240:23 | ... && ... | 1.0 | -| test.c:240:7:240:35 | ... && ... | 1.0 | -| test.c:240:7:240:45 | ... && ... | 1.0 | -| test.c:240:12:240:12 | a | 4.0 | -| test.c:240:17:240:17 | a | 4.0 | -| test.c:240:17:240:23 | ... <= ... | 1.0 | -| test.c:240:22:240:23 | 11 | 1.0 | -| test.c:240:28:240:30 | - ... | 1.0 | -| test.c:240:28:240:35 | ... <= ... | 1.0 | -| test.c:240:29:240:30 | 13 | 1.0 | -| test.c:240:35:240:35 | b | 15.0 | -| test.c:240:40:240:40 | b | 15.0 | -| test.c:240:40:240:45 | ... <= ... | 1.0 | -| test.c:240:45:240:45 | 0 | 1.0 | -| test.c:241:13:241:13 | a | 4.0 | -| test.c:241:13:241:15 | ... * ... | 1.0 | -| test.c:241:15:241:15 | b | 15.0 | -| test.c:242:5:242:9 | total | 8.0 | -| test.c:242:5:242:14 | ... += ... | 8.0 | -| test.c:242:14:242:14 | r | 1.0 | -| test.c:244:7:244:7 | 0 | 1.0 | -| test.c:244:7:244:12 | ... <= ... | 1.0 | -| test.c:244:7:244:23 | ... && ... | 1.0 | -| test.c:244:7:244:35 | ... && ... | 1.0 | -| test.c:244:7:244:46 | ... && ... | 1.0 | -| test.c:244:12:244:12 | a | 5.0 | -| test.c:244:17:244:17 | a | 5.0 | -| test.c:244:17:244:23 | ... <= ... | 1.0 | -| test.c:244:22:244:23 | 11 | 1.0 | -| test.c:244:28:244:30 | - ... | 1.0 | -| test.c:244:28:244:35 | ... <= ... | 1.0 | -| test.c:244:29:244:30 | 13 | 1.0 | -| test.c:244:35:244:35 | b | 31.0 | -| test.c:244:40:244:40 | b | 31.0 | -| test.c:244:40:244:46 | ... <= ... | 1.0 | -| test.c:244:45:244:46 | - ... | 1.0 | -| test.c:244:46:244:46 | 7 | 1.0 | -| test.c:245:13:245:13 | a | 5.0 | -| test.c:245:13:245:15 | ... * ... | 1.0 | -| test.c:245:15:245:15 | b | 31.0 | -| test.c:246:5:246:9 | total | 16.0 | -| test.c:246:5:246:14 | ... += ... | 16.0 | -| test.c:246:14:246:14 | r | 1.0 | -| test.c:249:10:249:14 | total | 32.0 | -| test.c:254:14:254:15 | 0 | 1.0 | -| test.c:256:7:256:9 | - ... | 1.0 | -| test.c:256:7:256:14 | ... <= ... | 1.0 | -| test.c:256:7:256:25 | ... && ... | 1.0 | -| test.c:256:7:256:35 | ... && ... | 1.0 | -| test.c:256:7:256:46 | ... && ... | 1.0 | -| test.c:256:8:256:9 | 17 | 1.0 | -| test.c:256:14:256:14 | a | 1.0 | -| test.c:256:19:256:19 | a | 1.0 | -| test.c:256:19:256:25 | ... <= ... | 1.0 | -| test.c:256:24:256:25 | 11 | 1.0 | -| test.c:256:30:256:30 | 5 | 1.0 | -| test.c:256:30:256:35 | ... <= ... | 1.0 | -| test.c:256:35:256:35 | b | 1.0 | -| test.c:256:40:256:40 | b | 1.0 | -| test.c:256:40:256:46 | ... <= ... | 1.0 | -| test.c:256:45:256:46 | 23 | 1.0 | -| test.c:257:13:257:13 | a | 1.0 | -| test.c:257:13:257:15 | ... * ... | 1.0 | -| test.c:257:15:257:15 | b | 1.0 | -| test.c:258:5:258:9 | total | 1.0 | -| test.c:258:5:258:14 | ... += ... | 1.0 | -| test.c:258:14:258:14 | r | 1.0 | -| test.c:260:7:260:9 | - ... | 1.0 | -| test.c:260:7:260:14 | ... <= ... | 1.0 | -| test.c:260:7:260:25 | ... && ... | 1.0 | -| test.c:260:7:260:35 | ... && ... | 1.0 | -| test.c:260:7:260:46 | ... && ... | 1.0 | -| test.c:260:8:260:9 | 17 | 1.0 | -| test.c:260:14:260:14 | a | 2.0 | -| test.c:260:19:260:19 | a | 2.0 | -| test.c:260:19:260:25 | ... <= ... | 1.0 | -| test.c:260:24:260:25 | 11 | 1.0 | -| test.c:260:30:260:30 | 0 | 1.0 | -| test.c:260:30:260:35 | ... <= ... | 1.0 | -| test.c:260:35:260:35 | b | 3.0 | -| test.c:260:40:260:40 | b | 3.0 | -| test.c:260:40:260:46 | ... <= ... | 1.0 | -| test.c:260:45:260:46 | 23 | 1.0 | -| test.c:261:13:261:13 | a | 2.0 | -| test.c:261:13:261:15 | ... * ... | 1.0 | -| test.c:261:15:261:15 | b | 3.0 | -| test.c:262:5:262:9 | total | 2.0 | -| test.c:262:5:262:14 | ... += ... | 2.0 | -| test.c:262:14:262:14 | r | 1.0 | -| test.c:264:7:264:9 | - ... | 1.0 | -| test.c:264:7:264:14 | ... <= ... | 1.0 | -| test.c:264:7:264:25 | ... && ... | 1.0 | -| test.c:264:7:264:37 | ... && ... | 1.0 | -| test.c:264:7:264:48 | ... && ... | 1.0 | -| test.c:264:8:264:9 | 17 | 1.0 | -| test.c:264:14:264:14 | a | 3.0 | -| test.c:264:19:264:19 | a | 3.0 | -| test.c:264:19:264:25 | ... <= ... | 1.0 | -| test.c:264:24:264:25 | 11 | 1.0 | -| test.c:264:30:264:32 | - ... | 1.0 | -| test.c:264:30:264:37 | ... <= ... | 1.0 | -| test.c:264:31:264:32 | 13 | 1.0 | -| test.c:264:37:264:37 | b | 7.0 | -| test.c:264:42:264:42 | b | 7.0 | -| test.c:264:42:264:48 | ... <= ... | 1.0 | -| test.c:264:47:264:48 | 23 | 1.0 | -| test.c:265:13:265:13 | a | 3.0 | -| test.c:265:13:265:15 | ... * ... | 1.0 | -| test.c:265:15:265:15 | b | 7.0 | -| test.c:266:5:266:9 | total | 4.0 | -| test.c:266:5:266:14 | ... += ... | 4.0 | -| test.c:266:14:266:14 | r | 1.0 | -| test.c:268:7:268:9 | - ... | 1.0 | -| test.c:268:7:268:14 | ... <= ... | 1.0 | -| test.c:268:7:268:25 | ... && ... | 1.0 | -| test.c:268:7:268:37 | ... && ... | 1.0 | -| test.c:268:7:268:47 | ... && ... | 1.0 | -| test.c:268:8:268:9 | 17 | 1.0 | -| test.c:268:14:268:14 | a | 4.0 | -| test.c:268:19:268:19 | a | 4.0 | -| test.c:268:19:268:25 | ... <= ... | 1.0 | -| test.c:268:24:268:25 | 11 | 1.0 | -| test.c:268:30:268:32 | - ... | 1.0 | -| test.c:268:30:268:37 | ... <= ... | 1.0 | -| test.c:268:31:268:32 | 13 | 1.0 | -| test.c:268:37:268:37 | b | 15.0 | -| test.c:268:42:268:42 | b | 15.0 | -| test.c:268:42:268:47 | ... <= ... | 1.0 | -| test.c:268:47:268:47 | 0 | 1.0 | -| test.c:269:13:269:13 | a | 4.0 | -| test.c:269:13:269:15 | ... * ... | 1.0 | -| test.c:269:15:269:15 | b | 15.0 | -| test.c:270:5:270:9 | total | 8.0 | -| test.c:270:5:270:14 | ... += ... | 8.0 | -| test.c:270:14:270:14 | r | 1.0 | -| test.c:272:7:272:9 | - ... | 1.0 | -| test.c:272:7:272:14 | ... <= ... | 1.0 | -| test.c:272:7:272:25 | ... && ... | 1.0 | -| test.c:272:7:272:37 | ... && ... | 1.0 | -| test.c:272:7:272:48 | ... && ... | 1.0 | -| test.c:272:8:272:9 | 17 | 1.0 | -| test.c:272:14:272:14 | a | 5.0 | -| test.c:272:19:272:19 | a | 5.0 | -| test.c:272:19:272:25 | ... <= ... | 1.0 | -| test.c:272:24:272:25 | 11 | 1.0 | -| test.c:272:30:272:32 | - ... | 1.0 | -| test.c:272:30:272:37 | ... <= ... | 1.0 | -| test.c:272:31:272:32 | 13 | 1.0 | -| test.c:272:37:272:37 | b | 31.0 | -| test.c:272:42:272:42 | b | 31.0 | -| test.c:272:42:272:48 | ... <= ... | 1.0 | -| test.c:272:47:272:48 | - ... | 1.0 | -| test.c:272:48:272:48 | 7 | 1.0 | -| test.c:273:13:273:13 | a | 5.0 | -| test.c:273:13:273:15 | ... * ... | 1.0 | -| test.c:273:15:273:15 | b | 31.0 | -| test.c:274:5:274:9 | total | 16.0 | -| test.c:274:5:274:14 | ... += ... | 16.0 | -| test.c:274:14:274:14 | r | 1.0 | -| test.c:277:10:277:14 | total | 32.0 | -| test.c:282:14:282:15 | 0 | 1.0 | -| test.c:284:7:284:9 | - ... | 1.0 | -| test.c:284:7:284:14 | ... <= ... | 1.0 | -| test.c:284:7:284:24 | ... && ... | 1.0 | -| test.c:284:7:284:34 | ... && ... | 1.0 | -| test.c:284:7:284:45 | ... && ... | 1.0 | -| test.c:284:8:284:9 | 17 | 1.0 | -| test.c:284:14:284:14 | a | 1.0 | -| test.c:284:19:284:19 | a | 1.0 | -| test.c:284:19:284:24 | ... <= ... | 1.0 | -| test.c:284:24:284:24 | 0 | 1.0 | -| test.c:284:29:284:29 | 5 | 1.0 | -| test.c:284:29:284:34 | ... <= ... | 1.0 | -| test.c:284:34:284:34 | b | 1.0 | -| test.c:284:39:284:39 | b | 1.0 | -| test.c:284:39:284:45 | ... <= ... | 1.0 | -| test.c:284:44:284:45 | 23 | 1.0 | -| test.c:285:13:285:13 | a | 1.0 | -| test.c:285:13:285:15 | ... * ... | 1.0 | -| test.c:285:15:285:15 | b | 1.0 | -| test.c:286:5:286:9 | total | 1.0 | -| test.c:286:5:286:14 | ... += ... | 1.0 | -| test.c:286:14:286:14 | r | 1.0 | -| test.c:288:7:288:9 | - ... | 1.0 | -| test.c:288:7:288:14 | ... <= ... | 1.0 | -| test.c:288:7:288:24 | ... && ... | 1.0 | -| test.c:288:7:288:34 | ... && ... | 1.0 | -| test.c:288:7:288:45 | ... && ... | 1.0 | -| test.c:288:8:288:9 | 17 | 1.0 | -| test.c:288:14:288:14 | a | 2.0 | -| test.c:288:19:288:19 | a | 2.0 | -| test.c:288:19:288:24 | ... <= ... | 1.0 | -| test.c:288:24:288:24 | 0 | 1.0 | -| test.c:288:29:288:29 | 0 | 1.0 | -| test.c:288:29:288:34 | ... <= ... | 1.0 | -| test.c:288:34:288:34 | b | 3.0 | -| test.c:288:39:288:39 | b | 3.0 | -| test.c:288:39:288:45 | ... <= ... | 1.0 | -| test.c:288:44:288:45 | 23 | 1.0 | -| test.c:289:13:289:13 | a | 2.0 | -| test.c:289:13:289:15 | ... * ... | 1.0 | -| test.c:289:15:289:15 | b | 3.0 | -| test.c:290:5:290:9 | total | 2.0 | -| test.c:290:5:290:14 | ... += ... | 2.0 | -| test.c:290:14:290:14 | r | 1.0 | -| test.c:292:7:292:9 | - ... | 1.0 | -| test.c:292:7:292:14 | ... <= ... | 1.0 | -| test.c:292:7:292:24 | ... && ... | 1.0 | -| test.c:292:7:292:36 | ... && ... | 1.0 | -| test.c:292:7:292:47 | ... && ... | 1.0 | -| test.c:292:8:292:9 | 17 | 1.0 | -| test.c:292:14:292:14 | a | 3.0 | -| test.c:292:19:292:19 | a | 3.0 | -| test.c:292:19:292:24 | ... <= ... | 1.0 | -| test.c:292:24:292:24 | 0 | 1.0 | -| test.c:292:29:292:31 | - ... | 1.0 | -| test.c:292:29:292:36 | ... <= ... | 1.0 | -| test.c:292:30:292:31 | 13 | 1.0 | -| test.c:292:36:292:36 | b | 7.0 | -| test.c:292:41:292:41 | b | 7.0 | -| test.c:292:41:292:47 | ... <= ... | 1.0 | -| test.c:292:46:292:47 | 23 | 1.0 | -| test.c:293:13:293:13 | a | 3.0 | -| test.c:293:13:293:15 | ... * ... | 1.0 | -| test.c:293:15:293:15 | b | 7.0 | -| test.c:294:5:294:9 | total | 4.0 | -| test.c:294:5:294:14 | ... += ... | 4.0 | -| test.c:294:14:294:14 | r | 1.0 | -| test.c:296:7:296:9 | - ... | 1.0 | -| test.c:296:7:296:14 | ... <= ... | 1.0 | -| test.c:296:7:296:24 | ... && ... | 1.0 | -| test.c:296:7:296:36 | ... && ... | 1.0 | -| test.c:296:7:296:46 | ... && ... | 1.0 | -| test.c:296:8:296:9 | 17 | 1.0 | -| test.c:296:14:296:14 | a | 4.0 | -| test.c:296:19:296:19 | a | 4.0 | -| test.c:296:19:296:24 | ... <= ... | 1.0 | -| test.c:296:24:296:24 | 0 | 1.0 | -| test.c:296:29:296:31 | - ... | 1.0 | -| test.c:296:29:296:36 | ... <= ... | 1.0 | -| test.c:296:30:296:31 | 13 | 1.0 | -| test.c:296:36:296:36 | b | 15.0 | -| test.c:296:41:296:41 | b | 15.0 | -| test.c:296:41:296:46 | ... <= ... | 1.0 | -| test.c:296:46:296:46 | 0 | 1.0 | -| test.c:297:13:297:13 | a | 4.0 | -| test.c:297:13:297:15 | ... * ... | 1.0 | -| test.c:297:15:297:15 | b | 15.0 | -| test.c:298:5:298:9 | total | 8.0 | -| test.c:298:5:298:14 | ... += ... | 8.0 | -| test.c:298:14:298:14 | r | 1.0 | -| test.c:300:7:300:9 | - ... | 1.0 | -| test.c:300:7:300:14 | ... <= ... | 1.0 | -| test.c:300:7:300:24 | ... && ... | 1.0 | -| test.c:300:7:300:36 | ... && ... | 1.0 | -| test.c:300:7:300:47 | ... && ... | 1.0 | -| test.c:300:8:300:9 | 17 | 1.0 | -| test.c:300:14:300:14 | a | 5.0 | -| test.c:300:19:300:19 | a | 5.0 | -| test.c:300:19:300:24 | ... <= ... | 1.0 | -| test.c:300:24:300:24 | 0 | 1.0 | -| test.c:300:29:300:31 | - ... | 1.0 | -| test.c:300:29:300:36 | ... <= ... | 1.0 | -| test.c:300:30:300:31 | 13 | 1.0 | -| test.c:300:36:300:36 | b | 31.0 | -| test.c:300:41:300:41 | b | 31.0 | -| test.c:300:41:300:47 | ... <= ... | 1.0 | -| test.c:300:46:300:47 | - ... | 1.0 | -| test.c:300:47:300:47 | 7 | 1.0 | -| test.c:301:13:301:13 | a | 5.0 | -| test.c:301:13:301:15 | ... * ... | 1.0 | -| test.c:301:15:301:15 | b | 31.0 | -| test.c:302:5:302:9 | total | 16.0 | -| test.c:302:5:302:14 | ... += ... | 16.0 | -| test.c:302:14:302:14 | r | 1.0 | -| test.c:305:10:305:14 | total | 32.0 | -| test.c:310:14:310:15 | 0 | 1.0 | -| test.c:312:7:312:9 | - ... | 1.0 | -| test.c:312:7:312:14 | ... <= ... | 1.0 | -| test.c:312:7:312:25 | ... && ... | 1.0 | -| test.c:312:7:312:35 | ... && ... | 1.0 | -| test.c:312:7:312:46 | ... && ... | 1.0 | -| test.c:312:8:312:9 | 17 | 1.0 | -| test.c:312:14:312:14 | a | 1.0 | -| test.c:312:19:312:19 | a | 1.0 | -| test.c:312:19:312:25 | ... <= ... | 1.0 | -| test.c:312:24:312:25 | - ... | 1.0 | -| test.c:312:25:312:25 | 2 | 1.0 | -| test.c:312:30:312:30 | 5 | 1.0 | -| test.c:312:30:312:35 | ... <= ... | 1.0 | -| test.c:312:35:312:35 | b | 1.0 | -| test.c:312:40:312:40 | b | 1.0 | -| test.c:312:40:312:46 | ... <= ... | 1.0 | -| test.c:312:45:312:46 | 23 | 1.0 | -| test.c:313:13:313:13 | a | 1.0 | -| test.c:313:13:313:15 | ... * ... | 1.0 | -| test.c:313:15:313:15 | b | 1.0 | -| test.c:314:5:314:9 | total | 1.0 | -| test.c:314:5:314:14 | ... += ... | 1.0 | -| test.c:314:14:314:14 | r | 1.0 | -| test.c:316:7:316:9 | - ... | 1.0 | -| test.c:316:7:316:14 | ... <= ... | 1.0 | -| test.c:316:7:316:25 | ... && ... | 1.0 | -| test.c:316:7:316:35 | ... && ... | 1.0 | -| test.c:316:7:316:46 | ... && ... | 1.0 | -| test.c:316:8:316:9 | 17 | 1.0 | -| test.c:316:14:316:14 | a | 2.0 | -| test.c:316:19:316:19 | a | 2.0 | -| test.c:316:19:316:25 | ... <= ... | 1.0 | -| test.c:316:24:316:25 | - ... | 1.0 | -| test.c:316:25:316:25 | 2 | 1.0 | -| test.c:316:30:316:30 | 0 | 1.0 | -| test.c:316:30:316:35 | ... <= ... | 1.0 | -| test.c:316:35:316:35 | b | 3.0 | -| test.c:316:40:316:40 | b | 3.0 | -| test.c:316:40:316:46 | ... <= ... | 1.0 | -| test.c:316:45:316:46 | 23 | 1.0 | -| test.c:317:13:317:13 | a | 2.0 | -| test.c:317:13:317:15 | ... * ... | 1.0 | -| test.c:317:15:317:15 | b | 3.0 | -| test.c:318:5:318:9 | total | 2.0 | -| test.c:318:5:318:14 | ... += ... | 2.0 | -| test.c:318:14:318:14 | r | 1.0 | -| test.c:320:7:320:9 | - ... | 1.0 | -| test.c:320:7:320:14 | ... <= ... | 1.0 | -| test.c:320:7:320:25 | ... && ... | 1.0 | -| test.c:320:7:320:37 | ... && ... | 1.0 | -| test.c:320:7:320:48 | ... && ... | 1.0 | -| test.c:320:8:320:9 | 17 | 1.0 | -| test.c:320:14:320:14 | a | 3.0 | -| test.c:320:19:320:19 | a | 3.0 | -| test.c:320:19:320:25 | ... <= ... | 1.0 | -| test.c:320:24:320:25 | - ... | 1.0 | -| test.c:320:25:320:25 | 2 | 1.0 | -| test.c:320:30:320:32 | - ... | 1.0 | -| test.c:320:30:320:37 | ... <= ... | 1.0 | -| test.c:320:31:320:32 | 13 | 1.0 | -| test.c:320:37:320:37 | b | 7.0 | -| test.c:320:42:320:42 | b | 7.0 | -| test.c:320:42:320:48 | ... <= ... | 1.0 | -| test.c:320:47:320:48 | 23 | 1.0 | -| test.c:321:13:321:13 | a | 3.0 | -| test.c:321:13:321:15 | ... * ... | 1.0 | -| test.c:321:15:321:15 | b | 7.0 | -| test.c:322:5:322:9 | total | 4.0 | -| test.c:322:5:322:14 | ... += ... | 4.0 | -| test.c:322:14:322:14 | r | 1.0 | -| test.c:324:7:324:9 | - ... | 1.0 | -| test.c:324:7:324:14 | ... <= ... | 1.0 | -| test.c:324:7:324:25 | ... && ... | 1.0 | -| test.c:324:7:324:37 | ... && ... | 1.0 | -| test.c:324:7:324:47 | ... && ... | 1.0 | -| test.c:324:8:324:9 | 17 | 1.0 | -| test.c:324:14:324:14 | a | 4.0 | -| test.c:324:19:324:19 | a | 4.0 | -| test.c:324:19:324:25 | ... <= ... | 1.0 | -| test.c:324:24:324:25 | - ... | 1.0 | -| test.c:324:25:324:25 | 2 | 1.0 | -| test.c:324:30:324:32 | - ... | 1.0 | -| test.c:324:30:324:37 | ... <= ... | 1.0 | -| test.c:324:31:324:32 | 13 | 1.0 | -| test.c:324:37:324:37 | b | 15.0 | -| test.c:324:42:324:42 | b | 15.0 | -| test.c:324:42:324:47 | ... <= ... | 1.0 | -| test.c:324:47:324:47 | 0 | 1.0 | -| test.c:325:13:325:13 | a | 4.0 | -| test.c:325:13:325:15 | ... * ... | 1.0 | -| test.c:325:15:325:15 | b | 15.0 | -| test.c:326:5:326:9 | total | 8.0 | -| test.c:326:5:326:14 | ... += ... | 8.0 | -| test.c:326:14:326:14 | r | 1.0 | -| test.c:328:7:328:9 | - ... | 1.0 | -| test.c:328:7:328:14 | ... <= ... | 1.0 | -| test.c:328:7:328:25 | ... && ... | 1.0 | -| test.c:328:7:328:37 | ... && ... | 1.0 | -| test.c:328:7:328:48 | ... && ... | 1.0 | -| test.c:328:8:328:9 | 17 | 1.0 | -| test.c:328:14:328:14 | a | 5.0 | -| test.c:328:19:328:19 | a | 5.0 | -| test.c:328:19:328:25 | ... <= ... | 1.0 | -| test.c:328:24:328:25 | - ... | 1.0 | -| test.c:328:25:328:25 | 2 | 1.0 | -| test.c:328:30:328:32 | - ... | 1.0 | -| test.c:328:30:328:37 | ... <= ... | 1.0 | -| test.c:328:31:328:32 | 13 | 1.0 | -| test.c:328:37:328:37 | b | 31.0 | -| test.c:328:42:328:42 | b | 31.0 | -| test.c:328:42:328:48 | ... <= ... | 1.0 | -| test.c:328:47:328:48 | - ... | 1.0 | -| test.c:328:48:328:48 | 7 | 1.0 | -| test.c:329:13:329:13 | a | 5.0 | -| test.c:329:13:329:15 | ... * ... | 1.0 | -| test.c:329:15:329:15 | b | 31.0 | -| test.c:330:5:330:9 | total | 16.0 | -| test.c:330:5:330:14 | ... += ... | 16.0 | -| test.c:330:14:330:14 | r | 1.0 | -| test.c:333:10:333:14 | total | 32.0 | -| test.c:337:13:337:14 | 0 | 1.0 | -| test.c:338:7:338:7 | x | 1.0 | -| test.c:338:7:338:11 | ... < ... | 1.0 | -| test.c:338:11:338:11 | 0 | 1.0 | -| test.c:339:12:339:13 | - ... | 1.0 | -| test.c:339:13:339:13 | 1 | 1.0 | -| test.c:342:10:342:10 | i | 13.0 | -| test.c:342:10:342:14 | ... < ... | 1.0 | -| test.c:342:14:342:14 | 3 | 1.0 | -| test.c:343:5:343:5 | i | 13.0 | -| test.c:343:5:343:7 | ... ++ | 13.0 | -| test.c:345:3:345:3 | d | 1.0 | -| test.c:345:3:345:7 | ... = ... | 13.0 | -| test.c:345:7:345:7 | i | 13.0 | -| test.c:346:7:346:7 | x | 1.0 | -| test.c:346:7:346:11 | ... < ... | 1.0 | -| test.c:346:11:346:11 | 0 | 1.0 | -| test.c:347:9:347:9 | d | 13.0 | -| test.c:347:9:347:14 | ... > ... | 1.0 | -| test.c:347:13:347:14 | - ... | 1.0 | -| test.c:347:14:347:14 | x | 1.0 | -| test.c:348:14:348:14 | 1 | 1.0 | -| test.c:351:10:351:10 | 0 | 1.0 | -| test.c:357:3:357:4 | y1 | 1.0 | -| test.c:357:3:357:23 | ... = ... | 1.0 | -| test.c:357:8:357:8 | x | 1.0 | -| test.c:357:8:357:14 | ... < ... | 1.0 | -| test.c:357:8:357:23 | ... ? ... : ... | 1.0 | -| test.c:357:12:357:14 | 100 | 1.0 | -| test.c:357:12:357:14 | (unsigned int)... | 1.0 | -| test.c:357:18:357:18 | x | 1.0 | -| test.c:357:22:357:23 | 10 | 1.0 | -| test.c:357:22:357:23 | (unsigned int)... | 1.0 | -| test.c:358:3:358:4 | y2 | 1.0 | -| test.c:358:3:358:24 | ... = ... | 2.0 | -| test.c:358:8:358:8 | x | 2.0 | -| test.c:358:8:358:15 | ... >= ... | 1.0 | -| test.c:358:8:358:24 | ... ? ... : ... | 2.0 | -| test.c:358:13:358:15 | 100 | 1.0 | -| test.c:358:13:358:15 | (unsigned int)... | 1.0 | -| test.c:358:19:358:20 | 10 | 1.0 | -| test.c:358:19:358:20 | (unsigned int)... | 1.0 | -| test.c:358:24:358:24 | x | 2.0 | -| test.c:359:3:359:4 | y3 | 1.0 | -| test.c:359:3:359:8 | ... = ... | 1.0 | -| test.c:359:8:359:8 | 0 | 1.0 | -| test.c:359:8:359:8 | (unsigned int)... | 1.0 | -| test.c:360:3:360:4 | y4 | 1.0 | -| test.c:360:3:360:8 | ... = ... | 1.0 | -| test.c:360:8:360:8 | 0 | 1.0 | -| test.c:360:8:360:8 | (unsigned int)... | 1.0 | -| test.c:361:3:361:4 | y5 | 1.0 | -| test.c:361:3:361:8 | ... = ... | 1.0 | -| test.c:361:8:361:8 | 0 | 1.0 | -| test.c:361:8:361:8 | (unsigned int)... | 1.0 | -| test.c:362:3:362:4 | y6 | 1.0 | -| test.c:362:3:362:8 | ... = ... | 1.0 | -| test.c:362:8:362:8 | 0 | 1.0 | -| test.c:362:8:362:8 | (unsigned int)... | 1.0 | -| test.c:363:3:363:4 | y7 | 1.0 | -| test.c:363:3:363:8 | ... = ... | 1.0 | -| test.c:363:8:363:8 | 0 | 1.0 | -| test.c:363:8:363:8 | (unsigned int)... | 1.0 | -| test.c:364:3:364:4 | y8 | 1.0 | -| test.c:364:3:364:8 | ... = ... | 1.0 | -| test.c:364:8:364:8 | 0 | 1.0 | -| test.c:364:8:364:8 | (unsigned int)... | 1.0 | -| test.c:365:7:365:7 | x | 4.0 | -| test.c:365:7:365:13 | ... < ... | 1.0 | -| test.c:365:11:365:13 | 300 | 1.0 | -| test.c:365:11:365:13 | (unsigned int)... | 1.0 | -| test.c:366:5:366:6 | y3 | 1.0 | -| test.c:366:5:366:15 | ... = ... | 4.0 | -| test.c:366:10:366:10 | x | 4.0 | -| test.c:366:10:366:15 | ... ? ... : ... | 4.0 | -| test.c:366:15:366:15 | 5 | 1.0 | -| test.c:366:15:366:15 | (unsigned int)... | 1.0 | -| test.c:367:5:367:6 | y4 | 1.0 | -| test.c:367:5:367:17 | ... = ... | 4.0 | -| test.c:367:10:367:10 | x | 4.0 | -| test.c:367:10:367:17 | ... ? ... : ... | 4.0 | -| test.c:367:15:367:17 | 500 | 1.0 | -| test.c:367:15:367:17 | (unsigned int)... | 1.0 | -| test.c:368:5:368:6 | y5 | 1.0 | -| test.c:368:5:368:21 | ... = ... | 4.0 | -| test.c:368:10:368:14 | (...) | 4.0 | -| test.c:368:10:368:21 | ... ? ... : ... | 4.0 | -| test.c:368:11:368:11 | x | 4.0 | -| test.c:368:11:368:13 | ... + ... | 4.0 | -| test.c:368:13:368:13 | 1 | 1.0 | -| test.c:368:13:368:13 | (unsigned int)... | 1.0 | -| test.c:368:19:368:21 | 500 | 1.0 | -| test.c:368:19:368:21 | (unsigned int)... | 1.0 | -| test.c:369:5:369:6 | y6 | 1.0 | -| test.c:369:5:369:36 | ... = ... | 4.0 | -| test.c:369:10:369:31 | (...) | 4.0 | -| test.c:369:10:369:36 | (unsigned int)... | 4.0 | -| test.c:369:10:369:36 | ... ? ... : ... | 4.0 | -| test.c:369:11:369:30 | (unsigned char)... | 4.0 | -| test.c:369:26:369:30 | (...) | 4.0 | -| test.c:369:27:369:27 | x | 4.0 | -| test.c:369:27:369:29 | ... + ... | 4.0 | -| test.c:369:29:369:29 | 1 | 1.0 | -| test.c:369:29:369:29 | (unsigned int)... | 1.0 | -| test.c:369:36:369:36 | 5 | 1.0 | -| test.c:370:5:370:6 | y7 | 1.0 | -| test.c:370:5:370:38 | ... = ... | 4.0 | -| test.c:370:10:370:31 | (...) | 4.0 | -| test.c:370:10:370:38 | (unsigned int)... | 4.0 | -| test.c:370:10:370:38 | ... ? ... : ... | 4.0 | -| test.c:370:11:370:30 | (unsigned char)... | 4.0 | -| test.c:370:26:370:30 | (...) | 4.0 | -| test.c:370:27:370:27 | x | 4.0 | -| test.c:370:27:370:29 | ... + ... | 4.0 | -| test.c:370:29:370:29 | 1 | 1.0 | -| test.c:370:29:370:29 | (unsigned int)... | 1.0 | -| test.c:370:36:370:38 | 500 | 1.0 | -| test.c:371:5:371:6 | y8 | 1.0 | -| test.c:371:5:371:39 | ... = ... | 4.0 | -| test.c:371:10:371:32 | (...) | 4.0 | -| test.c:371:10:371:39 | (unsigned int)... | 4.0 | -| test.c:371:10:371:39 | ... ? ... : ... | 4.0 | -| test.c:371:11:371:31 | (unsigned short)... | 4.0 | -| test.c:371:27:371:31 | (...) | 4.0 | -| test.c:371:28:371:28 | x | 4.0 | -| test.c:371:28:371:30 | ... + ... | 4.0 | -| test.c:371:30:371:30 | 1 | 1.0 | -| test.c:371:30:371:30 | (unsigned int)... | 1.0 | -| test.c:371:37:371:39 | 500 | 1.0 | -| test.c:373:10:373:11 | y1 | 1.0 | -| test.c:373:10:373:16 | ... + ... | 2.0 | -| test.c:373:10:373:21 | ... + ... | 10.0 | -| test.c:373:10:373:26 | ... + ... | 50.0 | -| test.c:373:10:373:31 | ... + ... | 250.0 | -| test.c:373:10:373:36 | ... + ... | 1250.0 | -| test.c:373:10:373:41 | ... + ... | 6250.0 | -| test.c:373:10:373:46 | ... + ... | 31250.0 | -| test.c:373:15:373:16 | y2 | 2.0 | -| test.c:373:20:373:21 | y3 | 5.0 | -| test.c:373:25:373:26 | y4 | 5.0 | -| test.c:373:30:373:31 | y5 | 5.0 | -| test.c:373:35:373:36 | y6 | 5.0 | -| test.c:373:40:373:41 | y7 | 5.0 | -| test.c:373:45:373:46 | y8 | 5.0 | -| test.c:379:3:379:4 | y1 | 1.0 | -| test.c:379:3:379:24 | ... = ... | 1.0 | -| test.c:379:8:379:8 | x | 1.0 | -| test.c:379:8:379:14 | ... > ... | 1.0 | -| test.c:379:8:379:24 | ... ? ... : ... | 1.0 | -| test.c:379:12:379:14 | 100 | 1.0 | -| test.c:379:12:379:14 | (unsigned int)... | 1.0 | -| test.c:379:18:379:18 | x | 1.0 | -| test.c:379:22:379:24 | 110 | 1.0 | -| test.c:379:22:379:24 | (unsigned int)... | 1.0 | -| test.c:380:3:380:4 | y2 | 1.0 | -| test.c:380:3:380:25 | ... = ... | 2.0 | -| test.c:380:8:380:8 | x | 2.0 | -| test.c:380:8:380:15 | ... <= ... | 1.0 | -| test.c:380:8:380:25 | ... ? ... : ... | 2.0 | -| test.c:380:13:380:15 | 100 | 1.0 | -| test.c:380:13:380:15 | (unsigned int)... | 1.0 | -| test.c:380:19:380:21 | 110 | 1.0 | -| test.c:380:19:380:21 | (unsigned int)... | 1.0 | -| test.c:380:25:380:25 | x | 2.0 | -| test.c:381:3:381:4 | y3 | 1.0 | -| test.c:381:3:381:11 | ... = ... | 1.0 | -| test.c:381:8:381:11 | 1000 | 1.0 | -| test.c:381:8:381:11 | (unsigned int)... | 1.0 | -| test.c:382:3:382:4 | y4 | 1.0 | -| test.c:382:3:382:11 | ... = ... | 1.0 | -| test.c:382:8:382:11 | 1000 | 1.0 | -| test.c:382:8:382:11 | (unsigned int)... | 1.0 | -| test.c:383:3:383:4 | y5 | 1.0 | -| test.c:383:3:383:11 | ... = ... | 1.0 | -| test.c:383:8:383:11 | 1000 | 1.0 | -| test.c:383:8:383:11 | (unsigned int)... | 1.0 | -| test.c:384:7:384:7 | x | 4.0 | -| test.c:384:7:384:14 | ... >= ... | 1.0 | -| test.c:384:12:384:14 | 300 | 1.0 | -| test.c:384:12:384:14 | (unsigned int)... | 1.0 | -| test.c:385:5:385:6 | y3 | 1.0 | -| test.c:385:5:385:21 | ... = ... | 4.0 | -| test.c:385:10:385:16 | (...) | 4.0 | -| test.c:385:10:385:21 | ... ? ... : ... | 4.0 | -| test.c:385:11:385:11 | x | 4.0 | -| test.c:385:11:385:15 | ... - ... | 4.0 | -| test.c:385:13:385:15 | 300 | 1.0 | -| test.c:385:13:385:15 | (unsigned int)... | 1.0 | -| test.c:385:21:385:21 | 5 | 1.0 | -| test.c:385:21:385:21 | (unsigned int)... | 1.0 | -| test.c:386:5:386:6 | y4 | 1.0 | -| test.c:386:5:386:21 | ... = ... | 4.0 | -| test.c:386:10:386:16 | (...) | 4.0 | -| test.c:386:10:386:21 | ... ? ... : ... | 4.0 | -| test.c:386:11:386:11 | x | 4.0 | -| test.c:386:11:386:15 | ... - ... | 4.0 | -| test.c:386:13:386:15 | 200 | 1.0 | -| test.c:386:13:386:15 | (unsigned int)... | 1.0 | -| test.c:386:21:386:21 | 5 | 1.0 | -| test.c:386:21:386:21 | (unsigned int)... | 1.0 | -| test.c:387:5:387:6 | y5 | 1.0 | -| test.c:387:5:387:38 | ... = ... | 4.0 | -| test.c:387:10:387:33 | (...) | 4.0 | -| test.c:387:10:387:38 | (unsigned int)... | 4.0 | -| test.c:387:10:387:38 | ... ? ... : ... | 4.0 | -| test.c:387:11:387:32 | (unsigned char)... | 4.0 | -| test.c:387:26:387:32 | (...) | 4.0 | -| test.c:387:27:387:27 | x | 4.0 | -| test.c:387:27:387:31 | ... - ... | 4.0 | -| test.c:387:29:387:31 | 200 | 1.0 | -| test.c:387:29:387:31 | (unsigned int)... | 1.0 | -| test.c:387:38:387:38 | 5 | 1.0 | -| test.c:389:10:389:11 | y1 | 1.0 | -| test.c:389:10:389:16 | ... + ... | 2.0 | -| test.c:389:10:389:21 | ... + ... | 10.0 | -| test.c:389:10:389:26 | ... + ... | 50.0 | -| test.c:389:10:389:31 | ... + ... | 250.0 | -| test.c:389:15:389:16 | y2 | 2.0 | -| test.c:389:20:389:21 | y3 | 5.0 | -| test.c:389:25:389:26 | y4 | 5.0 | -| test.c:389:30:389:31 | y5 | 5.0 | -| test.c:394:14:394:14 | m | 1.0 | -| test.c:394:14:394:108 | ... ? ... : ... | 1.0 | -| test.c:394:18:394:18 | n | 1.0 | -| test.c:394:18:394:95 | ... ? ... : ... | 1.0 | -| test.c:394:22:394:22 | o | 1.0 | -| test.c:394:22:394:82 | ... ? ... : ... | 1.0 | -| test.c:394:26:394:26 | p | 1.0 | -| test.c:394:26:394:69 | ... ? ... : ... | 1.0 | -| test.c:394:30:394:30 | q | 1.0 | -| test.c:394:30:394:56 | ... ? ... : ... | 1.0 | -| test.c:394:34:394:43 | 0.4743882700000000008 | 1.0 | -| test.c:394:47:394:56 | 0.1433388700000000071 | 1.0 | -| test.c:394:60:394:69 | 0.3527920299999999787 | 1.0 | -| test.c:394:73:394:82 | 0.3920645799999999959 | 1.0 | -| test.c:394:86:394:95 | 0.2154022499999999896 | 1.0 | -| test.c:394:99:394:108 | 0.4049680500000000238 | 1.0 | -| test.c:395:14:395:14 | m | 2.0 | -| test.c:395:14:395:108 | ... ? ... : ... | 1.0 | -| test.c:395:18:395:18 | n | 3.0 | -| test.c:395:18:395:95 | ... ? ... : ... | 1.0 | -| test.c:395:22:395:22 | o | 3.0 | -| test.c:395:22:395:82 | ... ? ... : ... | 1.0 | -| test.c:395:26:395:26 | p | 3.0 | -| test.c:395:26:395:69 | ... ? ... : ... | 1.0 | -| test.c:395:30:395:30 | q | 3.0 | -| test.c:395:30:395:56 | ... ? ... : ... | 1.0 | -| test.c:395:34:395:43 | 0.3418334800000000229 | 1.0 | -| test.c:395:47:395:56 | 0.3533464000000000049 | 1.0 | -| test.c:395:60:395:69 | 0.2224785300000000077 | 1.0 | -| test.c:395:73:395:82 | 0.326618929999999974 | 1.0 | -| test.c:395:86:395:95 | 0.5927046500000000551 | 1.0 | -| test.c:395:99:395:108 | 0.5297741000000000255 | 1.0 | -| test.c:396:14:396:14 | m | 4.0 | -| test.c:396:14:396:108 | ... ? ... : ... | 1.0 | -| test.c:396:18:396:18 | n | 9.0 | -| test.c:396:18:396:95 | ... ? ... : ... | 1.0 | -| test.c:396:22:396:22 | o | 9.0 | -| test.c:396:22:396:82 | ... ? ... : ... | 1.0 | -| test.c:396:26:396:26 | p | 9.0 | -| test.c:396:26:396:69 | ... ? ... : ... | 1.0 | -| test.c:396:30:396:30 | q | 9.0 | -| test.c:396:30:396:56 | ... ? ... : ... | 1.0 | -| test.c:396:34:396:43 | 0.774296030000000024 | 1.0 | -| test.c:396:47:396:56 | 0.3147808400000000062 | 1.0 | -| test.c:396:60:396:69 | 0.3123551399999999756 | 1.0 | -| test.c:396:73:396:82 | 0.05121255999999999725 | 1.0 | -| test.c:396:86:396:95 | 0.7931074500000000471 | 1.0 | -| test.c:396:99:396:108 | 0.6798145100000000385 | 1.0 | -| test.c:397:14:397:14 | m | 8.0 | -| test.c:397:14:397:108 | ... ? ... : ... | 1.0 | -| test.c:397:18:397:18 | n | 27.0 | -| test.c:397:18:397:95 | ... ? ... : ... | 1.0 | -| test.c:397:22:397:22 | o | 27.0 | -| test.c:397:22:397:82 | ... ? ... : ... | 1.0 | -| test.c:397:26:397:26 | p | 27.0 | -| test.c:397:26:397:69 | ... ? ... : ... | 1.0 | -| test.c:397:30:397:30 | q | 27.0 | -| test.c:397:30:397:56 | ... ? ... : ... | 1.0 | -| test.c:397:34:397:43 | 0.4472955599999999809 | 1.0 | -| test.c:397:47:397:56 | 0.8059920200000000312 | 1.0 | -| test.c:397:60:397:69 | 0.9899726199999999698 | 1.0 | -| test.c:397:73:397:82 | 0.5995273199999999747 | 1.0 | -| test.c:397:86:397:95 | 0.3697694799999999837 | 1.0 | -| test.c:397:99:397:108 | 0.8386683499999999514 | 1.0 | -| test.c:398:14:398:14 | m | 16.0 | -| test.c:398:14:398:108 | ... ? ... : ... | 1.0 | -| test.c:398:18:398:18 | n | 81.0 | -| test.c:398:18:398:95 | ... ? ... : ... | 1.0 | -| test.c:398:22:398:22 | o | 81.0 | -| test.c:398:22:398:82 | ... ? ... : ... | 1.0 | -| test.c:398:26:398:26 | p | 81.0 | -| test.c:398:26:398:69 | ... ? ... : ... | 1.0 | -| test.c:398:30:398:30 | q | 81.0 | -| test.c:398:30:398:56 | ... ? ... : ... | 1.0 | -| test.c:398:34:398:43 | 0.4931182800000000199 | 1.0 | -| test.c:398:47:398:56 | 0.9038991100000000056 | 1.0 | -| test.c:398:60:398:69 | 0.1059771199999999941 | 1.0 | -| test.c:398:73:398:82 | 0.2177842600000000073 | 1.0 | -| test.c:398:86:398:95 | 0.7248596600000000167 | 1.0 | -| test.c:398:99:398:108 | 0.6873487400000000136 | 1.0 | -| test.c:399:14:399:14 | m | 32.0 | -| test.c:399:14:399:108 | ... ? ... : ... | 1.0 | -| test.c:399:18:399:18 | n | 243.0 | -| test.c:399:18:399:95 | ... ? ... : ... | 1.0 | -| test.c:399:22:399:22 | o | 243.0 | -| test.c:399:22:399:82 | ... ? ... : ... | 1.0 | -| test.c:399:26:399:26 | p | 243.0 | -| test.c:399:26:399:69 | ... ? ... : ... | 1.0 | -| test.c:399:30:399:30 | q | 243.0 | -| test.c:399:30:399:56 | ... ? ... : ... | 1.0 | -| test.c:399:34:399:43 | 0.4745284799999999747 | 1.0 | -| test.c:399:47:399:56 | 0.107866500000000004 | 1.0 | -| test.c:399:60:399:69 | 0.1188457599999999947 | 1.0 | -| test.c:399:73:399:82 | 0.7616405200000000431 | 1.0 | -| test.c:399:86:399:95 | 0.3480889200000000239 | 1.0 | -| test.c:399:99:399:108 | 0.584408649999999974 | 1.0 | -| test.c:400:14:400:14 | m | 64.0 | -| test.c:400:14:400:108 | ... ? ... : ... | 1.0 | -| test.c:400:18:400:18 | n | 729.0 | -| test.c:400:18:400:95 | ... ? ... : ... | 1.0 | -| test.c:400:22:400:22 | o | 729.0 | -| test.c:400:22:400:82 | ... ? ... : ... | 1.0 | -| test.c:400:26:400:26 | p | 729.0 | -| test.c:400:26:400:69 | ... ? ... : ... | 1.0 | -| test.c:400:30:400:30 | q | 729.0 | -| test.c:400:30:400:56 | ... ? ... : ... | 1.0 | -| test.c:400:34:400:43 | 0.02524326 | 1.0 | -| test.c:400:47:400:56 | 0.8290504600000000446 | 1.0 | -| test.c:400:60:400:69 | 0.95823075000000002 | 1.0 | -| test.c:400:73:400:82 | 0.1251655799999999985 | 1.0 | -| test.c:400:86:400:95 | 0.8523517900000000536 | 1.0 | -| test.c:400:99:400:108 | 0.3623238400000000081 | 1.0 | -| test.c:401:14:401:14 | m | 128.0 | -| test.c:401:14:401:108 | ... ? ... : ... | 1.0 | -| test.c:401:18:401:18 | n | 2187.0 | -| test.c:401:18:401:95 | ... ? ... : ... | 1.0 | -| test.c:401:22:401:22 | o | 2187.0 | -| test.c:401:22:401:82 | ... ? ... : ... | 1.0 | -| test.c:401:26:401:26 | p | 2187.0 | -| test.c:401:26:401:69 | ... ? ... : ... | 1.0 | -| test.c:401:30:401:30 | q | 2187.0 | -| test.c:401:30:401:56 | ... ? ... : ... | 1.0 | -| test.c:401:34:401:43 | 0.3870862600000000153 | 1.0 | -| test.c:401:47:401:56 | 0.3287604399999999871 | 1.0 | -| test.c:401:60:401:69 | 0.1496348500000000137 | 1.0 | -| test.c:401:73:401:82 | 0.4504110800000000192 | 1.0 | -| test.c:401:86:401:95 | 0.4864090899999999884 | 1.0 | -| test.c:401:99:401:108 | 0.8433127200000000157 | 1.0 | -| test.c:402:14:402:14 | m | 256.0 | -| test.c:402:14:402:108 | ... ? ... : ... | 1.0 | -| test.c:402:18:402:18 | n | 6561.0 | -| test.c:402:18:402:95 | ... ? ... : ... | 1.0 | -| test.c:402:22:402:22 | o | 6561.0 | -| test.c:402:22:402:82 | ... ? ... : ... | 1.0 | -| test.c:402:26:402:26 | p | 6561.0 | -| test.c:402:26:402:69 | ... ? ... : ... | 1.0 | -| test.c:402:30:402:30 | q | 6561.0 | -| test.c:402:30:402:56 | ... ? ... : ... | 1.0 | -| test.c:402:34:402:43 | 0.1575506299999999971 | 1.0 | -| test.c:402:47:402:56 | 0.7708683299999999905 | 1.0 | -| test.c:402:60:402:69 | 0.2642848099999999811 | 1.0 | -| test.c:402:73:402:82 | 0.1480050800000000111 | 1.0 | -| test.c:402:86:402:95 | 0.374281430000000026 | 1.0 | -| test.c:402:99:402:108 | 0.05328182000000000057 | 1.0 | -| test.c:403:14:403:14 | m | 512.0 | -| test.c:403:14:403:108 | ... ? ... : ... | 1.0 | -| test.c:403:18:403:18 | n | 19683.0 | -| test.c:403:18:403:95 | ... ? ... : ... | 1.0 | -| test.c:403:22:403:22 | o | 19683.0 | -| test.c:403:22:403:82 | ... ? ... : ... | 1.0 | -| test.c:403:26:403:26 | p | 19683.0 | -| test.c:403:26:403:69 | ... ? ... : ... | 1.0 | -| test.c:403:30:403:30 | q | 19683.0 | -| test.c:403:30:403:56 | ... ? ... : ... | 1.0 | -| test.c:403:34:403:43 | 0.4173653600000000186 | 1.0 | -| test.c:403:47:403:56 | 0.7682662799999999681 | 1.0 | -| test.c:403:60:403:69 | 0.2764323799999999776 | 1.0 | -| test.c:403:73:403:82 | 0.5567927400000000082 | 1.0 | -| test.c:403:86:403:95 | 0.3946885700000000163 | 1.0 | -| test.c:403:99:403:108 | 0.6907214400000000198 | 1.0 | -| test.c:404:14:404:14 | m | 1024.0 | -| test.c:404:14:404:108 | ... ? ... : ... | 1.0 | -| test.c:404:18:404:18 | n | 59049.0 | -| test.c:404:18:404:95 | ... ? ... : ... | 1.0 | -| test.c:404:22:404:22 | o | 59049.0 | -| test.c:404:22:404:82 | ... ? ... : ... | 1.0 | -| test.c:404:26:404:26 | p | 59049.0 | -| test.c:404:26:404:69 | ... ? ... : ... | 1.0 | -| test.c:404:30:404:30 | q | 59049.0 | -| test.c:404:30:404:56 | ... ? ... : ... | 1.0 | -| test.c:404:34:404:43 | 0.8895534499999999678 | 1.0 | -| test.c:404:47:404:56 | 0.2990482400000000207 | 1.0 | -| test.c:404:60:404:69 | 0.7624258299999999711 | 1.0 | -| test.c:404:73:404:82 | 0.2051910999999999874 | 1.0 | -| test.c:404:86:404:95 | 0.8874555899999999609 | 1.0 | -| test.c:404:99:404:108 | 0.8137279800000000174 | 1.0 | -| test.c:405:14:405:14 | m | 2048.0 | -| test.c:405:14:405:108 | ... ? ... : ... | 1.0 | -| test.c:405:18:405:18 | n | 177147.0 | -| test.c:405:18:405:95 | ... ? ... : ... | 1.0 | -| test.c:405:22:405:22 | o | 177147.0 | -| test.c:405:22:405:82 | ... ? ... : ... | 1.0 | -| test.c:405:26:405:26 | p | 177147.0 | -| test.c:405:26:405:69 | ... ? ... : ... | 1.0 | -| test.c:405:30:405:30 | q | 177147.0 | -| test.c:405:30:405:56 | ... ? ... : ... | 1.0 | -| test.c:405:34:405:43 | 0.4218627600000000033 | 1.0 | -| test.c:405:47:405:56 | 0.5384335799999999672 | 1.0 | -| test.c:405:60:405:69 | 0.4499667900000000054 | 1.0 | -| test.c:405:73:405:82 | 0.1320411400000000013 | 1.0 | -| test.c:405:86:405:95 | 0.5203124099999999475 | 1.0 | -| test.c:405:99:405:108 | 0.4276264699999999808 | 1.0 | -| test.c:411:19:411:19 | a | 1.0 | -| test.c:411:19:411:23 | ... + ... | 1.0 | -| test.c:411:19:411:27 | ... + ... | 1.0 | -| test.c:411:19:411:31 | ... + ... | 1.0 | -| test.c:411:19:411:35 | ... + ... | 1.0 | -| test.c:411:19:411:39 | ... + ... | 1.0 | -| test.c:411:19:411:43 | ... + ... | 1.0 | -| test.c:411:19:411:47 | ... + ... | 1.0 | -| test.c:411:19:411:51 | ... + ... | 1.0 | -| test.c:411:19:411:55 | ... + ... | 1.0 | -| test.c:411:19:411:59 | ... + ... | 1.0 | -| test.c:411:19:411:63 | ... + ... | 1.0 | -| test.c:411:23:411:23 | b | 1.0 | -| test.c:411:27:411:27 | c | 1.0 | -| test.c:411:31:411:31 | d | 1.0 | -| test.c:411:35:411:35 | e | 1.0 | -| test.c:411:39:411:39 | f | 1.0 | -| test.c:411:43:411:43 | g | 1.0 | -| test.c:411:47:411:47 | h | 1.0 | -| test.c:411:51:411:51 | i | 1.0 | -| test.c:411:55:411:55 | j | 1.0 | -| test.c:411:59:411:59 | k | 1.0 | -| test.c:411:63:411:63 | l | 1.0 | -| test.c:413:10:413:15 | output | 1.0 | -| test.c:420:7:420:9 | rhs | 1.0 | -| test.c:420:7:420:14 | ... < ... | 1.0 | -| test.c:420:13:420:14 | 12 | 1.0 | -| test.c:420:13:420:14 | (unsigned int)... | 1.0 | -| test.c:420:19:420:21 | rhs | 1.0 | -| test.c:420:19:420:26 | ... << ... | 1.0 | -| test.c:420:26:420:26 | 1 | 1.0 | -| test.c:421:7:421:9 | rhs | 2.0 | -| test.c:421:7:421:14 | ... < ... | 1.0 | -| test.c:421:13:421:14 | 13 | 1.0 | -| test.c:421:13:421:14 | (unsigned int)... | 1.0 | -| test.c:421:19:421:21 | rhs | 2.0 | -| test.c:421:19:421:26 | ... << ... | 1.0 | -| test.c:421:26:421:26 | 1 | 1.0 | -| test.c:422:7:422:9 | rhs | 3.0 | -| test.c:422:7:422:14 | ... < ... | 1.0 | -| test.c:422:13:422:14 | 14 | 1.0 | -| test.c:422:13:422:14 | (unsigned int)... | 1.0 | -| test.c:422:19:422:21 | rhs | 3.0 | -| test.c:422:19:422:26 | ... << ... | 1.0 | -| test.c:422:26:422:26 | 1 | 1.0 | -| test.c:423:7:423:9 | rhs | 4.0 | -| test.c:423:7:423:14 | ... < ... | 1.0 | -| test.c:423:13:423:14 | 15 | 1.0 | -| test.c:423:13:423:14 | (unsigned int)... | 1.0 | -| test.c:423:19:423:21 | rhs | 4.0 | -| test.c:423:19:423:26 | ... << ... | 1.0 | -| test.c:423:26:423:26 | 1 | 1.0 | -| test.c:424:7:424:9 | rhs | 5.0 | -| test.c:424:7:424:14 | ... < ... | 1.0 | -| test.c:424:13:424:14 | 16 | 1.0 | -| test.c:424:13:424:14 | (unsigned int)... | 1.0 | -| test.c:424:19:424:21 | rhs | 5.0 | -| test.c:424:19:424:26 | ... << ... | 1.0 | -| test.c:424:26:424:26 | 1 | 1.0 | -| test.c:425:10:425:12 | (int)... | 6.0 | -| test.c:425:10:425:12 | rhs | 6.0 | -| test.c:432:4:434:50 | (...) | 1.0 | -| test.c:432:4:517:26 | ... > ... | 1.0 | -| test.c:432:4:606:27 | ... ? ... : ... | 1.297918419127476E201 | -| test.c:432:5:432:6 | 14 | 1.0 | -| test.c:432:5:432:6 | (unsigned int)... | 1.0 | -| test.c:432:5:432:11 | ... * ... | 1.0 | -| test.c:432:5:432:55 | ... > ... | 1.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 1.0 | -| test.c:432:10:432:11 | ip | 1.0 | -| test.c:432:15:432:26 | (...) | 1.0 | -| test.c:432:15:432:31 | ... * ... | 1.0 | -| test.c:432:15:432:55 | ... + ... | 1.0 | -| test.c:432:16:432:16 | 2 | 1.0 | -| test.c:432:16:432:16 | (unsigned int)... | 1.0 | -| test.c:432:16:432:21 | ... * ... | 1.0 | -| test.c:432:16:432:25 | ... + ... | 1.0 | -| test.c:432:20:432:21 | ip | 1.0 | -| test.c:432:25:432:25 | 1 | 1.0 | -| test.c:432:25:432:25 | (unsigned int)... | 1.0 | -| test.c:432:30:432:31 | 17 | 1.0 | -| test.c:432:30:432:31 | (unsigned int)... | 1.0 | -| test.c:432:35:432:50 | (...) | 1.0 | -| test.c:432:35:432:55 | ... * ... | 1.0 | -| test.c:432:36:432:36 | 2 | 1.0 | -| test.c:432:36:432:36 | (unsigned int)... | 1.0 | -| test.c:432:36:432:41 | ... * ... | 1.0 | -| test.c:432:36:432:45 | ... + ... | 1.0 | -| test.c:432:36:432:49 | ... + ... | 1.0 | -| test.c:432:40:432:41 | ip | 1.0 | -| test.c:432:45:432:45 | 1 | 1.0 | -| test.c:432:45:432:45 | (unsigned int)... | 1.0 | -| test.c:432:49:432:49 | 1 | 1.0 | -| test.c:432:49:432:49 | (unsigned int)... | 1.0 | -| test.c:432:54:432:55 | 17 | 1.0 | -| test.c:432:54:432:55 | (unsigned int)... | 1.0 | -| test.c:433:9:433:10 | 14 | 1.0 | -| test.c:433:9:433:10 | (unsigned int)... | 1.0 | -| test.c:433:9:433:15 | ... * ... | 1.0 | -| test.c:433:14:433:15 | ip | 1.0 | -| test.c:434:9:434:20 | (...) | 1.0 | -| test.c:434:9:434:25 | ... * ... | 1.0 | -| test.c:434:9:434:49 | ... + ... | 1.0 | -| test.c:434:10:434:10 | 2 | 1.0 | -| test.c:434:10:434:10 | (unsigned int)... | 1.0 | -| test.c:434:10:434:15 | ... * ... | 1.0 | -| test.c:434:10:434:19 | ... + ... | 1.0 | -| test.c:434:14:434:15 | ip | 1.0 | -| test.c:434:19:434:19 | 1 | 1.0 | -| test.c:434:19:434:19 | (unsigned int)... | 1.0 | -| test.c:434:24:434:25 | 14 | 1.0 | -| test.c:434:24:434:25 | (unsigned int)... | 1.0 | -| test.c:434:29:434:44 | (...) | 1.0 | -| test.c:434:29:434:49 | ... * ... | 1.0 | -| test.c:434:30:434:30 | 2 | 1.0 | -| test.c:434:30:434:30 | (unsigned int)... | 1.0 | -| test.c:434:30:434:35 | ... * ... | 1.0 | -| test.c:434:30:434:39 | ... + ... | 1.0 | -| test.c:434:30:434:43 | ... + ... | 1.0 | -| test.c:434:34:434:35 | ip | 1.0 | -| test.c:434:39:434:39 | 1 | 1.0 | -| test.c:434:39:434:39 | (unsigned int)... | 1.0 | -| test.c:434:43:434:43 | 1 | 1.0 | -| test.c:434:43:434:43 | (unsigned int)... | 1.0 | -| test.c:434:48:434:49 | 17 | 1.0 | -| test.c:434:48:434:49 | (unsigned int)... | 1.0 | -| test.c:435:5:517:26 | (...) | 9.29462083211502E84 | -| test.c:435:6:435:6 | 2 | 1.0 | -| test.c:435:6:435:6 | (unsigned int)... | 1.0 | -| test.c:435:6:435:23 | ... * ... | 2.0 | -| test.c:435:6:454:42 | ... + ... | 4.524508125E10 | -| test.c:435:6:474:24 | ... > ... | 1.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 9.29462083211502E84 | -| test.c:435:10:435:23 | (...) | 2.0 | -| test.c:435:11:435:12 | ip | 2.0 | -| test.c:435:11:435:17 | ... * ... | 2.0 | -| test.c:435:11:435:22 | ... + ... | 2.0 | -| test.c:435:16:435:17 | 14 | 1.0 | -| test.c:435:16:435:17 | (unsigned int)... | 1.0 | -| test.c:435:21:435:22 | 32 | 1.0 | -| test.c:435:21:435:22 | (unsigned int)... | 1.0 | -| test.c:436:7:454:42 | (...) | 2.2622540625E10 | -| test.c:436:8:436:8 | 4 | 1.0 | -| test.c:436:8:436:8 | (unsigned int)... | 1.0 | -| test.c:436:8:436:25 | ... * ... | 2.0 | -| test.c:436:8:437:26 | ... + ... | 4.0 | -| test.c:436:8:438:26 | ... + ... | 8.0 | -| test.c:436:8:443:22 | ... + ... | 1000.0 | -| test.c:436:8:444:37 | ... > ... | 1.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 2.2622540625E10 | -| test.c:436:12:436:25 | (...) | 2.0 | -| test.c:436:13:436:14 | ip | 2.0 | -| test.c:436:13:436:19 | ... * ... | 2.0 | -| test.c:436:13:436:24 | ... + ... | 2.0 | -| test.c:436:18:436:19 | 14 | 1.0 | -| test.c:436:18:436:19 | (unsigned int)... | 1.0 | -| test.c:436:23:436:24 | 32 | 1.0 | -| test.c:436:23:436:24 | (unsigned int)... | 1.0 | -| test.c:437:9:437:26 | (...) | 2.0 | -| test.c:437:10:437:10 | 2 | 1.0 | -| test.c:437:10:437:10 | (unsigned int)... | 1.0 | -| test.c:437:10:437:15 | ... * ... | 2.0 | -| test.c:437:10:437:20 | ... * ... | 2.0 | -| test.c:437:10:437:25 | ... + ... | 2.0 | -| test.c:437:14:437:15 | ip | 2.0 | -| test.c:437:19:437:20 | 14 | 1.0 | -| test.c:437:19:437:20 | (unsigned int)... | 1.0 | -| test.c:437:24:437:25 | 32 | 1.0 | -| test.c:437:24:437:25 | (unsigned int)... | 1.0 | -| test.c:438:9:438:9 | 2 | 1.0 | -| test.c:438:9:438:9 | (unsigned int)... | 1.0 | -| test.c:438:9:438:26 | ... * ... | 2.0 | -| test.c:438:13:438:26 | (...) | 2.0 | -| test.c:438:14:438:15 | ip | 2.0 | -| test.c:438:14:438:20 | ... * ... | 2.0 | -| test.c:438:14:438:25 | ... + ... | 2.0 | -| test.c:438:19:438:20 | 14 | 1.0 | -| test.c:438:19:438:20 | (unsigned int)... | 1.0 | -| test.c:438:24:438:25 | 64 | 1.0 | -| test.c:438:24:438:25 | (unsigned int)... | 1.0 | -| test.c:439:9:443:22 | (...) | 125.0 | -| test.c:439:10:439:21 | (...) | 2.0 | -| test.c:439:10:439:26 | ... * ... | 2.0 | -| test.c:439:10:439:80 | ... > ... | 1.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 125.0 | -| test.c:439:11:439:11 | 2 | 1.0 | -| test.c:439:11:439:11 | (unsigned int)... | 1.0 | -| test.c:439:11:439:16 | ... * ... | 2.0 | -| test.c:439:11:439:20 | ... + ... | 2.0 | -| test.c:439:15:439:16 | ip | 2.0 | -| test.c:439:20:439:20 | 1 | 1.0 | -| test.c:439:20:439:20 | (unsigned int)... | 1.0 | -| test.c:439:25:439:26 | 14 | 1.0 | -| test.c:439:25:439:26 | (unsigned int)... | 1.0 | -| test.c:439:30:439:80 | (...) | 4.0 | -| test.c:439:31:439:32 | 17 | 1.0 | -| test.c:439:31:439:32 | (unsigned int)... | 1.0 | -| test.c:439:31:439:43 | ... * ... | 2.0 | -| test.c:439:31:439:53 | ... > ... | 1.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.0 | -| test.c:439:36:439:43 | (...) | 2.0 | -| test.c:439:37:439:37 | 2 | 1.0 | -| test.c:439:37:439:37 | (unsigned int)... | 1.0 | -| test.c:439:37:439:42 | ... * ... | 2.0 | -| test.c:439:41:439:42 | ip | 2.0 | -| test.c:439:47:439:48 | 17 | 1.0 | -| test.c:439:47:439:48 | (unsigned int)... | 1.0 | -| test.c:439:47:439:53 | ... * ... | 2.0 | -| test.c:439:52:439:53 | ip | 2.0 | -| test.c:439:57:439:58 | 17 | 1.0 | -| test.c:439:57:439:58 | (unsigned int)... | 1.0 | -| test.c:439:57:439:69 | ... * ... | 2.0 | -| test.c:439:62:439:69 | (...) | 2.0 | -| test.c:439:63:439:63 | 2 | 1.0 | -| test.c:439:63:439:63 | (unsigned int)... | 1.0 | -| test.c:439:63:439:68 | ... * ... | 2.0 | -| test.c:439:67:439:68 | ip | 2.0 | -| test.c:439:73:439:74 | 17 | 1.0 | -| test.c:439:73:439:74 | (unsigned int)... | 1.0 | -| test.c:439:73:439:79 | ... * ... | 2.0 | -| test.c:439:78:439:79 | ip | 2.0 | -| test.c:440:13:440:24 | (...) | 5.0 | -| test.c:440:13:440:29 | ... * ... | 5.0 | -| test.c:440:14:440:14 | 2 | 1.0 | -| test.c:440:14:440:14 | (unsigned int)... | 1.0 | -| test.c:440:14:440:19 | ... * ... | 5.0 | -| test.c:440:14:440:23 | ... + ... | 5.0 | -| test.c:440:18:440:19 | ip | 5.0 | -| test.c:440:23:440:23 | 1 | 1.0 | -| test.c:440:23:440:23 | (unsigned int)... | 1.0 | -| test.c:440:28:440:29 | 14 | 1.0 | -| test.c:440:28:440:29 | (unsigned int)... | 1.0 | -| test.c:441:13:441:14 | 14 | 1.0 | -| test.c:441:13:441:14 | (unsigned int)... | 1.0 | -| test.c:441:13:441:25 | ... * ... | 5.0 | -| test.c:441:13:441:35 | ... > ... | 1.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 25.0 | -| test.c:441:18:441:25 | (...) | 5.0 | -| test.c:441:19:441:19 | 2 | 1.0 | -| test.c:441:19:441:19 | (unsigned int)... | 1.0 | -| test.c:441:19:441:24 | ... * ... | 5.0 | -| test.c:441:23:441:24 | ip | 5.0 | -| test.c:441:29:441:30 | 17 | 1.0 | -| test.c:441:29:441:30 | (unsigned int)... | 1.0 | -| test.c:441:29:441:35 | ... * ... | 5.0 | -| test.c:441:34:441:35 | ip | 5.0 | -| test.c:442:15:442:16 | 14 | 1.0 | -| test.c:442:15:442:16 | (unsigned int)... | 1.0 | -| test.c:442:15:442:27 | ... * ... | 5.0 | -| test.c:442:20:442:27 | (...) | 5.0 | -| test.c:442:21:442:21 | 2 | 1.0 | -| test.c:442:21:442:21 | (unsigned int)... | 1.0 | -| test.c:442:21:442:26 | ... * ... | 5.0 | -| test.c:442:25:442:26 | ip | 5.0 | -| test.c:443:15:443:16 | 14 | 1.0 | -| test.c:443:15:443:16 | (unsigned int)... | 1.0 | -| test.c:443:15:443:21 | ... * ... | 5.0 | -| test.c:443:20:443:21 | ip | 5.0 | -| test.c:444:7:444:7 | 2 | 1.0 | -| test.c:444:7:444:7 | (unsigned int)... | 1.0 | -| test.c:444:7:444:12 | ... * ... | 15.0 | -| test.c:444:7:444:17 | ... * ... | 15.0 | -| test.c:444:7:444:37 | ... + ... | 225.0 | -| test.c:444:11:444:12 | ip | 15.0 | -| test.c:444:16:444:17 | 14 | 1.0 | -| test.c:444:16:444:17 | (unsigned int)... | 1.0 | -| test.c:444:21:444:32 | (...) | 15.0 | -| test.c:444:21:444:37 | ... * ... | 15.0 | -| test.c:444:22:444:22 | 2 | 1.0 | -| test.c:444:22:444:22 | (unsigned int)... | 1.0 | -| test.c:444:22:444:27 | ... * ... | 15.0 | -| test.c:444:22:444:31 | ... + ... | 15.0 | -| test.c:444:26:444:27 | ip | 15.0 | -| test.c:444:31:444:31 | 1 | 1.0 | -| test.c:444:31:444:31 | (unsigned int)... | 1.0 | -| test.c:444:36:444:37 | 17 | 1.0 | -| test.c:444:36:444:37 | (unsigned int)... | 1.0 | -| test.c:445:11:445:11 | 4 | 1.0 | -| test.c:445:11:445:11 | (unsigned int)... | 1.0 | -| test.c:445:11:445:28 | ... * ... | 15.0 | -| test.c:445:11:446:28 | ... + ... | 225.0 | -| test.c:445:11:447:28 | ... + ... | 3375.0 | -| test.c:445:11:453:24 | ... + ... | 1.00544625E8 | -| test.c:445:15:445:28 | (...) | 15.0 | -| test.c:445:16:445:17 | ip | 15.0 | -| test.c:445:16:445:22 | ... * ... | 15.0 | -| test.c:445:16:445:27 | ... + ... | 15.0 | -| test.c:445:21:445:22 | 14 | 1.0 | -| test.c:445:21:445:22 | (unsigned int)... | 1.0 | -| test.c:445:26:445:27 | 32 | 1.0 | -| test.c:445:26:445:27 | (unsigned int)... | 1.0 | -| test.c:446:11:446:28 | (...) | 15.0 | -| test.c:446:12:446:12 | 2 | 1.0 | -| test.c:446:12:446:12 | (unsigned int)... | 1.0 | -| test.c:446:12:446:17 | ... * ... | 15.0 | -| test.c:446:12:446:22 | ... * ... | 15.0 | -| test.c:446:12:446:27 | ... + ... | 15.0 | -| test.c:446:16:446:17 | ip | 15.0 | -| test.c:446:21:446:22 | 14 | 1.0 | -| test.c:446:21:446:22 | (unsigned int)... | 1.0 | -| test.c:446:26:446:27 | 32 | 1.0 | -| test.c:446:26:446:27 | (unsigned int)... | 1.0 | -| test.c:447:11:447:11 | 2 | 1.0 | -| test.c:447:11:447:11 | (unsigned int)... | 1.0 | -| test.c:447:11:447:28 | ... * ... | 15.0 | -| test.c:447:15:447:28 | (...) | 15.0 | -| test.c:447:16:447:17 | ip | 15.0 | -| test.c:447:16:447:22 | ... * ... | 15.0 | -| test.c:447:16:447:27 | ... + ... | 15.0 | -| test.c:447:21:447:22 | 14 | 1.0 | -| test.c:447:21:447:22 | (unsigned int)... | 1.0 | -| test.c:447:26:447:27 | 64 | 1.0 | -| test.c:447:26:447:27 | (unsigned int)... | 1.0 | -| test.c:448:11:453:24 | (...) | 29791.0 | -| test.c:448:12:448:23 | (...) | 15.0 | -| test.c:448:12:448:28 | ... * ... | 15.0 | -| test.c:448:12:449:61 | ... > ... | 1.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 29791.0 | -| test.c:448:13:448:13 | 2 | 1.0 | -| test.c:448:13:448:13 | (unsigned int)... | 1.0 | -| test.c:448:13:448:18 | ... * ... | 15.0 | -| test.c:448:13:448:22 | ... + ... | 15.0 | -| test.c:448:17:448:18 | ip | 15.0 | -| test.c:448:22:448:22 | 1 | 1.0 | -| test.c:448:22:448:22 | (unsigned int)... | 1.0 | -| test.c:448:27:448:28 | 14 | 1.0 | -| test.c:448:27:448:28 | (unsigned int)... | 1.0 | -| test.c:449:11:449:61 | (...) | 225.0 | -| test.c:449:12:449:13 | 14 | 1.0 | -| test.c:449:12:449:13 | (unsigned int)... | 1.0 | -| test.c:449:12:449:24 | ... * ... | 15.0 | -| test.c:449:12:449:34 | ... > ... | 1.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 225.0 | -| test.c:449:17:449:24 | (...) | 15.0 | -| test.c:449:18:449:18 | 2 | 1.0 | -| test.c:449:18:449:18 | (unsigned int)... | 1.0 | -| test.c:449:18:449:23 | ... * ... | 15.0 | -| test.c:449:22:449:23 | ip | 15.0 | -| test.c:449:28:449:29 | 17 | 1.0 | -| test.c:449:28:449:29 | (unsigned int)... | 1.0 | -| test.c:449:28:449:34 | ... * ... | 15.0 | -| test.c:449:33:449:34 | ip | 15.0 | -| test.c:449:38:449:39 | 17 | 1.0 | -| test.c:449:38:449:39 | (unsigned int)... | 1.0 | -| test.c:449:38:449:50 | ... * ... | 15.0 | -| test.c:449:43:449:50 | (...) | 15.0 | -| test.c:449:44:449:44 | 2 | 1.0 | -| test.c:449:44:449:44 | (unsigned int)... | 1.0 | -| test.c:449:44:449:49 | ... * ... | 15.0 | -| test.c:449:48:449:49 | ip | 15.0 | -| test.c:449:54:449:55 | 17 | 1.0 | -| test.c:449:54:449:55 | (unsigned int)... | 1.0 | -| test.c:449:54:449:60 | ... * ... | 15.0 | -| test.c:449:59:449:60 | ip | 15.0 | -| test.c:450:15:450:26 | (...) | 31.0 | -| test.c:450:15:450:31 | ... * ... | 31.0 | -| test.c:450:16:450:16 | 2 | 1.0 | -| test.c:450:16:450:16 | (unsigned int)... | 1.0 | -| test.c:450:16:450:21 | ... * ... | 31.0 | -| test.c:450:16:450:25 | ... + ... | 31.0 | -| test.c:450:20:450:21 | ip | 31.0 | -| test.c:450:25:450:25 | 1 | 1.0 | -| test.c:450:25:450:25 | (unsigned int)... | 1.0 | -| test.c:450:30:450:31 | 14 | 1.0 | -| test.c:450:30:450:31 | (unsigned int)... | 1.0 | -| test.c:451:15:451:16 | 14 | 1.0 | -| test.c:451:15:451:16 | (unsigned int)... | 1.0 | -| test.c:451:15:451:27 | ... * ... | 31.0 | -| test.c:451:15:451:37 | ... > ... | 1.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 961.0 | -| test.c:451:20:451:27 | (...) | 31.0 | -| test.c:451:21:451:21 | 2 | 1.0 | -| test.c:451:21:451:21 | (unsigned int)... | 1.0 | -| test.c:451:21:451:26 | ... * ... | 31.0 | -| test.c:451:25:451:26 | ip | 31.0 | -| test.c:451:31:451:32 | 17 | 1.0 | -| test.c:451:31:451:32 | (unsigned int)... | 1.0 | -| test.c:451:31:451:37 | ... * ... | 31.0 | -| test.c:451:36:451:37 | ip | 31.0 | -| test.c:452:17:452:18 | 14 | 1.0 | -| test.c:452:17:452:18 | (unsigned int)... | 1.0 | -| test.c:452:17:452:29 | ... * ... | 31.0 | -| test.c:452:22:452:29 | (...) | 31.0 | -| test.c:452:23:452:23 | 2 | 1.0 | -| test.c:452:23:452:23 | (unsigned int)... | 1.0 | -| test.c:452:23:452:28 | ... * ... | 31.0 | -| test.c:452:27:452:28 | ip | 31.0 | -| test.c:453:17:453:18 | 14 | 1.0 | -| test.c:453:17:453:18 | (unsigned int)... | 1.0 | -| test.c:453:17:453:23 | ... * ... | 31.0 | -| test.c:453:22:453:23 | ip | 31.0 | -| test.c:454:11:454:11 | 2 | 1.0 | -| test.c:454:11:454:11 | (unsigned int)... | 1.0 | -| test.c:454:11:454:16 | ... * ... | 15.0 | -| test.c:454:11:454:21 | ... * ... | 15.0 | -| test.c:454:11:454:41 | ... + ... | 225.0 | -| test.c:454:15:454:16 | ip | 15.0 | -| test.c:454:20:454:21 | 14 | 1.0 | -| test.c:454:20:454:21 | (unsigned int)... | 1.0 | -| test.c:454:25:454:36 | (...) | 15.0 | -| test.c:454:25:454:41 | ... * ... | 15.0 | -| test.c:454:26:454:26 | 2 | 1.0 | -| test.c:454:26:454:26 | (unsigned int)... | 1.0 | -| test.c:454:26:454:31 | ... * ... | 15.0 | -| test.c:454:26:454:35 | ... + ... | 15.0 | -| test.c:454:30:454:31 | ip | 15.0 | -| test.c:454:35:454:35 | 1 | 1.0 | -| test.c:454:35:454:35 | (unsigned int)... | 1.0 | -| test.c:454:40:454:41 | 17 | 1.0 | -| test.c:454:40:454:41 | (unsigned int)... | 1.0 | -| test.c:455:5:474:24 | (...) | 6.6142118960740864E25 | -| test.c:455:6:455:6 | 4 | 1.0 | -| test.c:455:6:455:6 | (unsigned int)... | 1.0 | -| test.c:455:6:455:23 | ... * ... | 108.0 | -| test.c:455:6:456:24 | ... + ... | 11664.0 | -| test.c:455:6:457:24 | ... + ... | 1259712.0 | -| test.c:455:6:462:20 | ... + ... | 1.2872131505856E13 | -| test.c:455:6:463:55 | ... > ... | 1.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 6.6142118960740864E25 | -| test.c:455:10:455:23 | (...) | 108.0 | -| test.c:455:11:455:12 | ip | 108.0 | -| test.c:455:11:455:17 | ... * ... | 108.0 | -| test.c:455:11:455:22 | ... + ... | 108.0 | -| test.c:455:16:455:17 | 14 | 1.0 | -| test.c:455:16:455:17 | (unsigned int)... | 1.0 | -| test.c:455:21:455:22 | 32 | 1.0 | -| test.c:455:21:455:22 | (unsigned int)... | 1.0 | -| test.c:456:7:456:24 | (...) | 108.0 | -| test.c:456:8:456:8 | 2 | 1.0 | -| test.c:456:8:456:8 | (unsigned int)... | 1.0 | -| test.c:456:8:456:13 | ... * ... | 108.0 | -| test.c:456:8:456:18 | ... * ... | 108.0 | -| test.c:456:8:456:23 | ... + ... | 108.0 | -| test.c:456:12:456:13 | ip | 108.0 | -| test.c:456:17:456:18 | 14 | 1.0 | -| test.c:456:17:456:18 | (unsigned int)... | 1.0 | -| test.c:456:22:456:23 | 32 | 1.0 | -| test.c:456:22:456:23 | (unsigned int)... | 1.0 | -| test.c:457:7:457:7 | 2 | 1.0 | -| test.c:457:7:457:7 | (unsigned int)... | 1.0 | -| test.c:457:7:457:24 | ... * ... | 108.0 | -| test.c:457:11:457:24 | (...) | 108.0 | -| test.c:457:12:457:13 | ip | 108.0 | -| test.c:457:12:457:18 | ... * ... | 108.0 | -| test.c:457:12:457:23 | ... + ... | 108.0 | -| test.c:457:17:457:18 | 14 | 1.0 | -| test.c:457:17:457:18 | (unsigned int)... | 1.0 | -| test.c:457:22:457:23 | 64 | 1.0 | -| test.c:457:22:457:23 | (unsigned int)... | 1.0 | -| test.c:458:7:462:20 | (...) | 1.0218313E7 | -| test.c:458:8:458:19 | (...) | 108.0 | -| test.c:458:8:458:24 | ... * ... | 108.0 | -| test.c:458:8:458:78 | ... > ... | 1.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 1.0218313E7 | -| test.c:458:9:458:9 | 2 | 1.0 | -| test.c:458:9:458:9 | (unsigned int)... | 1.0 | -| test.c:458:9:458:14 | ... * ... | 108.0 | -| test.c:458:9:458:18 | ... + ... | 108.0 | -| test.c:458:13:458:14 | ip | 108.0 | -| test.c:458:18:458:18 | 1 | 1.0 | -| test.c:458:18:458:18 | (unsigned int)... | 1.0 | -| test.c:458:23:458:24 | 14 | 1.0 | -| test.c:458:23:458:24 | (unsigned int)... | 1.0 | -| test.c:458:28:458:78 | (...) | 11664.0 | -| test.c:458:29:458:30 | 17 | 1.0 | -| test.c:458:29:458:30 | (unsigned int)... | 1.0 | -| test.c:458:29:458:41 | ... * ... | 108.0 | -| test.c:458:29:458:51 | ... > ... | 1.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 11664.0 | -| test.c:458:34:458:41 | (...) | 108.0 | -| test.c:458:35:458:35 | 2 | 1.0 | -| test.c:458:35:458:35 | (unsigned int)... | 1.0 | -| test.c:458:35:458:40 | ... * ... | 108.0 | -| test.c:458:39:458:40 | ip | 108.0 | -| test.c:458:45:458:46 | 17 | 1.0 | -| test.c:458:45:458:46 | (unsigned int)... | 1.0 | -| test.c:458:45:458:51 | ... * ... | 108.0 | -| test.c:458:50:458:51 | ip | 108.0 | -| test.c:458:55:458:56 | 17 | 1.0 | -| test.c:458:55:458:56 | (unsigned int)... | 1.0 | -| test.c:458:55:458:67 | ... * ... | 108.0 | -| test.c:458:60:458:67 | (...) | 108.0 | -| test.c:458:61:458:61 | 2 | 1.0 | -| test.c:458:61:458:61 | (unsigned int)... | 1.0 | -| test.c:458:61:458:66 | ... * ... | 108.0 | -| test.c:458:65:458:66 | ip | 108.0 | -| test.c:458:71:458:72 | 17 | 1.0 | -| test.c:458:71:458:72 | (unsigned int)... | 1.0 | -| test.c:458:71:458:77 | ... * ... | 108.0 | -| test.c:458:76:458:77 | ip | 108.0 | -| test.c:459:11:459:22 | (...) | 217.0 | -| test.c:459:11:459:27 | ... * ... | 217.0 | -| test.c:459:12:459:12 | 2 | 1.0 | -| test.c:459:12:459:12 | (unsigned int)... | 1.0 | -| test.c:459:12:459:17 | ... * ... | 217.0 | -| test.c:459:12:459:21 | ... + ... | 217.0 | -| test.c:459:16:459:17 | ip | 217.0 | -| test.c:459:21:459:21 | 1 | 1.0 | -| test.c:459:21:459:21 | (unsigned int)... | 1.0 | -| test.c:459:26:459:27 | 14 | 1.0 | -| test.c:459:26:459:27 | (unsigned int)... | 1.0 | -| test.c:460:11:460:12 | 14 | 1.0 | -| test.c:460:11:460:12 | (unsigned int)... | 1.0 | -| test.c:460:11:460:23 | ... * ... | 217.0 | -| test.c:460:11:460:33 | ... > ... | 1.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 47089.0 | -| test.c:460:16:460:23 | (...) | 217.0 | -| test.c:460:17:460:17 | 2 | 1.0 | -| test.c:460:17:460:17 | (unsigned int)... | 1.0 | -| test.c:460:17:460:22 | ... * ... | 217.0 | -| test.c:460:21:460:22 | ip | 217.0 | -| test.c:460:27:460:28 | 17 | 1.0 | -| test.c:460:27:460:28 | (unsigned int)... | 1.0 | -| test.c:460:27:460:33 | ... * ... | 217.0 | -| test.c:460:32:460:33 | ip | 217.0 | -| test.c:461:13:461:14 | 14 | 1.0 | -| test.c:461:13:461:14 | (unsigned int)... | 1.0 | -| test.c:461:13:461:25 | ... * ... | 217.0 | -| test.c:461:18:461:25 | (...) | 217.0 | -| test.c:461:19:461:19 | 2 | 1.0 | -| test.c:461:19:461:19 | (unsigned int)... | 1.0 | -| test.c:461:19:461:24 | ... * ... | 217.0 | -| test.c:461:23:461:24 | ip | 217.0 | -| test.c:462:13:462:14 | 14 | 1.0 | -| test.c:462:13:462:14 | (unsigned int)... | 1.0 | -| test.c:462:13:462:19 | ... * ... | 217.0 | -| test.c:462:18:462:19 | ip | 217.0 | -| test.c:463:5:463:55 | (...) | 423801.0 | -| test.c:463:6:463:7 | 14 | 1.0 | -| test.c:463:6:463:7 | (unsigned int)... | 1.0 | -| test.c:463:6:463:12 | ... * ... | 651.0 | -| test.c:463:6:463:28 | ... > ... | 1.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 423801.0 | -| test.c:463:11:463:12 | ip | 651.0 | -| test.c:463:16:463:23 | (...) | 651.0 | -| test.c:463:16:463:28 | ... * ... | 651.0 | -| test.c:463:17:463:18 | ip | 651.0 | -| test.c:463:17:463:22 | ... + ... | 651.0 | -| test.c:463:22:463:22 | 1 | 1.0 | -| test.c:463:22:463:22 | (unsigned int)... | 1.0 | -| test.c:463:27:463:28 | 17 | 1.0 | -| test.c:463:27:463:28 | (unsigned int)... | 1.0 | -| test.c:463:32:463:33 | 17 | 1.0 | -| test.c:463:32:463:33 | (unsigned int)... | 1.0 | -| test.c:463:32:463:38 | ... * ... | 651.0 | -| test.c:463:37:463:38 | ip | 651.0 | -| test.c:463:42:463:49 | (...) | 651.0 | -| test.c:463:42:463:54 | ... * ... | 651.0 | -| test.c:463:43:463:44 | ip | 651.0 | -| test.c:463:43:463:48 | ... + ... | 651.0 | -| test.c:463:48:463:48 | 1 | 1.0 | -| test.c:463:48:463:48 | (unsigned int)... | 1.0 | -| test.c:463:53:463:54 | 17 | 1.0 | -| test.c:463:53:463:54 | (unsigned int)... | 1.0 | -| test.c:464:9:464:9 | 4 | 1.0 | -| test.c:464:9:464:9 | (unsigned int)... | 1.0 | -| test.c:464:9:464:26 | ... * ... | 1302.0 | -| test.c:464:9:465:26 | ... + ... | 1695204.0 | -| test.c:464:9:466:26 | ... + ... | 2.207155608E9 | -| test.c:464:9:471:22 | ... + ... | 3.9017203216097214E19 | -| test.c:464:13:464:26 | (...) | 1302.0 | -| test.c:464:14:464:15 | ip | 1302.0 | -| test.c:464:14:464:20 | ... * ... | 1302.0 | -| test.c:464:14:464:25 | ... + ... | 1302.0 | -| test.c:464:19:464:20 | 14 | 1.0 | -| test.c:464:19:464:20 | (unsigned int)... | 1.0 | -| test.c:464:24:464:25 | 32 | 1.0 | -| test.c:464:24:464:25 | (unsigned int)... | 1.0 | -| test.c:465:9:465:26 | (...) | 1302.0 | -| test.c:465:10:465:10 | 2 | 1.0 | -| test.c:465:10:465:10 | (unsigned int)... | 1.0 | -| test.c:465:10:465:15 | ... * ... | 1302.0 | -| test.c:465:10:465:20 | ... * ... | 1302.0 | -| test.c:465:10:465:25 | ... + ... | 1302.0 | -| test.c:465:14:465:15 | ip | 1302.0 | -| test.c:465:19:465:20 | 14 | 1.0 | -| test.c:465:19:465:20 | (unsigned int)... | 1.0 | -| test.c:465:24:465:25 | 32 | 1.0 | -| test.c:465:24:465:25 | (unsigned int)... | 1.0 | -| test.c:466:9:466:9 | 2 | 1.0 | -| test.c:466:9:466:9 | (unsigned int)... | 1.0 | -| test.c:466:9:466:26 | ... * ... | 1302.0 | -| test.c:466:13:466:26 | (...) | 1302.0 | -| test.c:466:14:466:15 | ip | 1302.0 | -| test.c:466:14:466:20 | ... * ... | 1302.0 | -| test.c:466:14:466:25 | ... + ... | 1302.0 | -| test.c:466:19:466:20 | 14 | 1.0 | -| test.c:466:19:466:20 | (unsigned int)... | 1.0 | -| test.c:466:24:466:25 | 64 | 1.0 | -| test.c:466:24:466:25 | (unsigned int)... | 1.0 | -| test.c:467:9:471:22 | (...) | 1.7677595125E10 | -| test.c:467:10:467:21 | (...) | 1302.0 | -| test.c:467:10:467:26 | ... * ... | 1302.0 | -| test.c:467:10:467:80 | ... > ... | 1.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 1.7677595125E10 | -| test.c:467:11:467:11 | 2 | 1.0 | -| test.c:467:11:467:11 | (unsigned int)... | 1.0 | -| test.c:467:11:467:16 | ... * ... | 1302.0 | -| test.c:467:11:467:20 | ... + ... | 1302.0 | -| test.c:467:15:467:16 | ip | 1302.0 | -| test.c:467:20:467:20 | 1 | 1.0 | -| test.c:467:20:467:20 | (unsigned int)... | 1.0 | -| test.c:467:25:467:26 | 14 | 1.0 | -| test.c:467:25:467:26 | (unsigned int)... | 1.0 | -| test.c:467:30:467:80 | (...) | 1695204.0 | -| test.c:467:31:467:32 | 17 | 1.0 | -| test.c:467:31:467:32 | (unsigned int)... | 1.0 | -| test.c:467:31:467:43 | ... * ... | 1302.0 | -| test.c:467:31:467:53 | ... > ... | 1.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 1695204.0 | -| test.c:467:36:467:43 | (...) | 1302.0 | -| test.c:467:37:467:37 | 2 | 1.0 | -| test.c:467:37:467:37 | (unsigned int)... | 1.0 | -| test.c:467:37:467:42 | ... * ... | 1302.0 | -| test.c:467:41:467:42 | ip | 1302.0 | -| test.c:467:47:467:48 | 17 | 1.0 | -| test.c:467:47:467:48 | (unsigned int)... | 1.0 | -| test.c:467:47:467:53 | ... * ... | 1302.0 | -| test.c:467:52:467:53 | ip | 1302.0 | -| test.c:467:57:467:58 | 17 | 1.0 | -| test.c:467:57:467:58 | (unsigned int)... | 1.0 | -| test.c:467:57:467:69 | ... * ... | 1302.0 | -| test.c:467:62:467:69 | (...) | 1302.0 | -| test.c:467:63:467:63 | 2 | 1.0 | -| test.c:467:63:467:63 | (unsigned int)... | 1.0 | -| test.c:467:63:467:68 | ... * ... | 1302.0 | -| test.c:467:67:467:68 | ip | 1302.0 | -| test.c:467:73:467:74 | 17 | 1.0 | -| test.c:467:73:467:74 | (unsigned int)... | 1.0 | -| test.c:467:73:467:79 | ... * ... | 1302.0 | -| test.c:467:78:467:79 | ip | 1302.0 | -| test.c:468:13:468:24 | (...) | 2605.0 | -| test.c:468:13:468:29 | ... * ... | 2605.0 | -| test.c:468:14:468:14 | 2 | 1.0 | -| test.c:468:14:468:14 | (unsigned int)... | 1.0 | -| test.c:468:14:468:19 | ... * ... | 2605.0 | -| test.c:468:14:468:23 | ... + ... | 2605.0 | -| test.c:468:18:468:19 | ip | 2605.0 | -| test.c:468:23:468:23 | 1 | 1.0 | -| test.c:468:23:468:23 | (unsigned int)... | 1.0 | -| test.c:468:28:468:29 | 14 | 1.0 | -| test.c:468:28:468:29 | (unsigned int)... | 1.0 | -| test.c:469:13:469:14 | 14 | 1.0 | -| test.c:469:13:469:14 | (unsigned int)... | 1.0 | -| test.c:469:13:469:25 | ... * ... | 2605.0 | -| test.c:469:13:469:35 | ... > ... | 1.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 6786025.0 | -| test.c:469:18:469:25 | (...) | 2605.0 | -| test.c:469:19:469:19 | 2 | 1.0 | -| test.c:469:19:469:19 | (unsigned int)... | 1.0 | -| test.c:469:19:469:24 | ... * ... | 2605.0 | -| test.c:469:23:469:24 | ip | 2605.0 | -| test.c:469:29:469:30 | 17 | 1.0 | -| test.c:469:29:469:30 | (unsigned int)... | 1.0 | -| test.c:469:29:469:35 | ... * ... | 2605.0 | -| test.c:469:34:469:35 | ip | 2605.0 | -| test.c:470:15:470:16 | 14 | 1.0 | -| test.c:470:15:470:16 | (unsigned int)... | 1.0 | -| test.c:470:15:470:27 | ... * ... | 2605.0 | -| test.c:470:20:470:27 | (...) | 2605.0 | -| test.c:470:21:470:21 | 2 | 1.0 | -| test.c:470:21:470:21 | (unsigned int)... | 1.0 | -| test.c:470:21:470:26 | ... * ... | 2605.0 | -| test.c:470:25:470:26 | ip | 2605.0 | -| test.c:471:15:471:16 | 14 | 1.0 | -| test.c:471:15:471:16 | (unsigned int)... | 1.0 | -| test.c:471:15:471:21 | ... * ... | 2605.0 | -| test.c:471:20:471:21 | ip | 2605.0 | -| test.c:472:9:472:10 | 14 | 1.0 | -| test.c:472:9:472:10 | (unsigned int)... | 1.0 | -| test.c:472:9:472:15 | ... * ... | 1302.0 | -| test.c:472:9:472:31 | ... > ... | 1.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 1695204.0 | -| test.c:472:14:472:15 | ip | 1302.0 | -| test.c:472:19:472:26 | (...) | 1302.0 | -| test.c:472:19:472:31 | ... * ... | 1302.0 | -| test.c:472:20:472:21 | ip | 1302.0 | -| test.c:472:20:472:25 | ... + ... | 1302.0 | -| test.c:472:25:472:25 | 1 | 1.0 | -| test.c:472:25:472:25 | (unsigned int)... | 1.0 | -| test.c:472:30:472:31 | 17 | 1.0 | -| test.c:472:30:472:31 | (unsigned int)... | 1.0 | -| test.c:473:11:473:12 | 14 | 1.0 | -| test.c:473:11:473:12 | (unsigned int)... | 1.0 | -| test.c:473:11:473:17 | ... * ... | 1302.0 | -| test.c:473:16:473:17 | ip | 1302.0 | -| test.c:474:11:474:18 | (...) | 1302.0 | -| test.c:474:11:474:23 | ... * ... | 1302.0 | -| test.c:474:12:474:13 | ip | 1302.0 | -| test.c:474:12:474:17 | ... + ... | 1302.0 | -| test.c:474:17:474:17 | 1 | 1.0 | -| test.c:474:17:474:17 | (unsigned int)... | 1.0 | -| test.c:474:22:474:23 | 14 | 1.0 | -| test.c:474:22:474:23 | (unsigned int)... | 1.0 | -| test.c:475:9:475:9 | 2 | 1.0 | -| test.c:475:9:475:9 | (unsigned int)... | 1.0 | -| test.c:475:9:475:26 | ... * ... | 10419.0 | -| test.c:475:9:495:44 | ... + ... | 1.9449636104972528E43 | -| test.c:475:13:475:26 | (...) | 10419.0 | -| test.c:475:14:475:15 | ip | 10419.0 | -| test.c:475:14:475:20 | ... * ... | 10419.0 | -| test.c:475:14:475:25 | ... + ... | 10419.0 | -| test.c:475:19:475:20 | 14 | 1.0 | -| test.c:475:19:475:20 | (unsigned int)... | 1.0 | -| test.c:475:24:475:25 | 32 | 1.0 | -| test.c:475:24:475:25 | (unsigned int)... | 1.0 | -| test.c:476:9:495:44 | (...) | 1.8667469147684545E39 | -| test.c:476:10:476:10 | 4 | 1.0 | -| test.c:476:10:476:10 | (unsigned int)... | 1.0 | -| test.c:476:10:476:27 | ... * ... | 10419.0 | -| test.c:476:10:477:28 | ... + ... | 1.08555561E8 | -| test.c:476:10:478:28 | ... + ... | 1.131040390059E12 | -| test.c:476:10:484:24 | ... + ... | 1.0235492350954187E25 | -| test.c:476:10:485:39 | ... > ... | 1.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 1.8667469147684545E39 | -| test.c:476:14:476:27 | (...) | 10419.0 | -| test.c:476:15:476:16 | ip | 10419.0 | -| test.c:476:15:476:21 | ... * ... | 10419.0 | -| test.c:476:15:476:26 | ... + ... | 10419.0 | -| test.c:476:20:476:21 | 14 | 1.0 | -| test.c:476:20:476:21 | (unsigned int)... | 1.0 | -| test.c:476:25:476:26 | 32 | 1.0 | -| test.c:476:25:476:26 | (unsigned int)... | 1.0 | -| test.c:477:11:477:28 | (...) | 10419.0 | -| test.c:477:12:477:12 | 2 | 1.0 | -| test.c:477:12:477:12 | (unsigned int)... | 1.0 | -| test.c:477:12:477:17 | ... * ... | 10419.0 | -| test.c:477:12:477:22 | ... * ... | 10419.0 | -| test.c:477:12:477:27 | ... + ... | 10419.0 | -| test.c:477:16:477:17 | ip | 10419.0 | -| test.c:477:21:477:22 | 14 | 1.0 | -| test.c:477:21:477:22 | (unsigned int)... | 1.0 | -| test.c:477:26:477:27 | 32 | 1.0 | -| test.c:477:26:477:27 | (unsigned int)... | 1.0 | -| test.c:478:11:478:11 | 2 | 1.0 | -| test.c:478:11:478:11 | (unsigned int)... | 1.0 | -| test.c:478:11:478:28 | ... * ... | 10419.0 | -| test.c:478:15:478:28 | (...) | 10419.0 | -| test.c:478:16:478:17 | ip | 10419.0 | -| test.c:478:16:478:22 | ... * ... | 10419.0 | -| test.c:478:16:478:27 | ... + ... | 10419.0 | -| test.c:478:21:478:22 | 14 | 1.0 | -| test.c:478:21:478:22 | (unsigned int)... | 1.0 | -| test.c:478:26:478:27 | 64 | 1.0 | -| test.c:478:26:478:27 | (unsigned int)... | 1.0 | -| test.c:479:11:484:24 | (...) | 9.049625849719E12 | -| test.c:479:12:479:23 | (...) | 10419.0 | -| test.c:479:12:479:28 | ... * ... | 10419.0 | -| test.c:479:12:480:61 | ... > ... | 1.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 9.049625849719E12 | -| test.c:479:13:479:13 | 2 | 1.0 | -| test.c:479:13:479:13 | (unsigned int)... | 1.0 | -| test.c:479:13:479:18 | ... * ... | 10419.0 | -| test.c:479:13:479:22 | ... + ... | 10419.0 | -| test.c:479:17:479:18 | ip | 10419.0 | -| test.c:479:22:479:22 | 1 | 1.0 | -| test.c:479:22:479:22 | (unsigned int)... | 1.0 | -| test.c:479:27:479:28 | 14 | 1.0 | -| test.c:479:27:479:28 | (unsigned int)... | 1.0 | -| test.c:480:11:480:61 | (...) | 1.08555561E8 | -| test.c:480:12:480:13 | 14 | 1.0 | -| test.c:480:12:480:13 | (unsigned int)... | 1.0 | -| test.c:480:12:480:24 | ... * ... | 10419.0 | -| test.c:480:12:480:34 | ... > ... | 1.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 1.08555561E8 | -| test.c:480:17:480:24 | (...) | 10419.0 | -| test.c:480:18:480:18 | 2 | 1.0 | -| test.c:480:18:480:18 | (unsigned int)... | 1.0 | -| test.c:480:18:480:23 | ... * ... | 10419.0 | -| test.c:480:22:480:23 | ip | 10419.0 | -| test.c:480:28:480:29 | 17 | 1.0 | -| test.c:480:28:480:29 | (unsigned int)... | 1.0 | -| test.c:480:28:480:34 | ... * ... | 10419.0 | -| test.c:480:33:480:34 | ip | 10419.0 | -| test.c:480:38:480:39 | 17 | 1.0 | -| test.c:480:38:480:39 | (unsigned int)... | 1.0 | -| test.c:480:38:480:50 | ... * ... | 10419.0 | -| test.c:480:43:480:50 | (...) | 10419.0 | -| test.c:480:44:480:44 | 2 | 1.0 | -| test.c:480:44:480:44 | (unsigned int)... | 1.0 | -| test.c:480:44:480:49 | ... * ... | 10419.0 | -| test.c:480:48:480:49 | ip | 10419.0 | -| test.c:480:54:480:55 | 17 | 1.0 | -| test.c:480:54:480:55 | (unsigned int)... | 1.0 | -| test.c:480:54:480:60 | ... * ... | 10419.0 | -| test.c:480:59:480:60 | ip | 10419.0 | -| test.c:481:15:481:26 | (...) | 20839.0 | -| test.c:481:15:481:31 | ... * ... | 20839.0 | -| test.c:481:16:481:16 | 2 | 1.0 | -| test.c:481:16:481:16 | (unsigned int)... | 1.0 | -| test.c:481:16:481:21 | ... * ... | 20839.0 | -| test.c:481:16:481:25 | ... + ... | 20839.0 | -| test.c:481:20:481:21 | ip | 20839.0 | -| test.c:481:25:481:25 | 1 | 1.0 | -| test.c:481:25:481:25 | (unsigned int)... | 1.0 | -| test.c:481:30:481:31 | 14 | 1.0 | -| test.c:481:30:481:31 | (unsigned int)... | 1.0 | -| test.c:482:15:482:16 | 14 | 1.0 | -| test.c:482:15:482:16 | (unsigned int)... | 1.0 | -| test.c:482:15:482:27 | ... * ... | 20839.0 | -| test.c:482:15:482:37 | ... > ... | 1.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.34263921E8 | -| test.c:482:20:482:27 | (...) | 20839.0 | -| test.c:482:21:482:21 | 2 | 1.0 | -| test.c:482:21:482:21 | (unsigned int)... | 1.0 | -| test.c:482:21:482:26 | ... * ... | 20839.0 | -| test.c:482:25:482:26 | ip | 20839.0 | -| test.c:482:31:482:32 | 17 | 1.0 | -| test.c:482:31:482:32 | (unsigned int)... | 1.0 | -| test.c:482:31:482:37 | ... * ... | 20839.0 | -| test.c:482:36:482:37 | ip | 20839.0 | -| test.c:483:17:483:18 | 14 | 1.0 | -| test.c:483:17:483:18 | (unsigned int)... | 1.0 | -| test.c:483:17:483:29 | ... * ... | 20839.0 | -| test.c:483:22:483:29 | (...) | 20839.0 | -| test.c:483:23:483:23 | 2 | 1.0 | -| test.c:483:23:483:23 | (unsigned int)... | 1.0 | -| test.c:483:23:483:28 | ... * ... | 20839.0 | -| test.c:483:27:483:28 | ip | 20839.0 | -| test.c:484:17:484:18 | 14 | 1.0 | -| test.c:484:17:484:18 | (unsigned int)... | 1.0 | -| test.c:484:17:484:23 | ... * ... | 20839.0 | -| test.c:484:22:484:23 | ip | 20839.0 | -| test.c:485:9:485:9 | 2 | 1.0 | -| test.c:485:9:485:9 | (unsigned int)... | 1.0 | -| test.c:485:9:485:14 | ... * ... | 62517.0 | -| test.c:485:9:485:19 | ... * ... | 62517.0 | -| test.c:485:9:485:39 | ... + ... | 3.908375289E9 | -| test.c:485:13:485:14 | ip | 62517.0 | -| test.c:485:18:485:19 | 14 | 1.0 | -| test.c:485:18:485:19 | (unsigned int)... | 1.0 | -| test.c:485:23:485:34 | (...) | 62517.0 | -| test.c:485:23:485:39 | ... * ... | 62517.0 | -| test.c:485:24:485:24 | 2 | 1.0 | -| test.c:485:24:485:24 | (unsigned int)... | 1.0 | -| test.c:485:24:485:29 | ... * ... | 62517.0 | -| test.c:485:24:485:33 | ... + ... | 62517.0 | -| test.c:485:28:485:29 | ip | 62517.0 | -| test.c:485:33:485:33 | 1 | 1.0 | -| test.c:485:33:485:33 | (unsigned int)... | 1.0 | -| test.c:485:38:485:39 | 17 | 1.0 | -| test.c:485:38:485:39 | (unsigned int)... | 1.0 | -| test.c:486:13:486:13 | 4 | 1.0 | -| test.c:486:13:486:13 | (unsigned int)... | 1.0 | -| test.c:486:13:486:30 | ... * ... | 62517.0 | -| test.c:486:13:487:30 | ... + ... | 3.908375289E9 | -| test.c:486:13:488:30 | ... + ... | 2.44339897942413E14 | -| test.c:486:13:494:26 | ... + ... | 4.7762734556795386E29 | -| test.c:486:17:486:30 | (...) | 62517.0 | -| test.c:486:18:486:19 | ip | 62517.0 | -| test.c:486:18:486:24 | ... * ... | 62517.0 | -| test.c:486:18:486:29 | ... + ... | 62517.0 | -| test.c:486:23:486:24 | 14 | 1.0 | -| test.c:486:23:486:24 | (unsigned int)... | 1.0 | -| test.c:486:28:486:29 | 32 | 1.0 | -| test.c:486:28:486:29 | (unsigned int)... | 1.0 | -| test.c:487:13:487:30 | (...) | 62517.0 | -| test.c:487:14:487:14 | 2 | 1.0 | -| test.c:487:14:487:14 | (unsigned int)... | 1.0 | -| test.c:487:14:487:19 | ... * ... | 62517.0 | -| test.c:487:14:487:24 | ... * ... | 62517.0 | -| test.c:487:14:487:29 | ... + ... | 62517.0 | -| test.c:487:18:487:19 | ip | 62517.0 | -| test.c:487:23:487:24 | 14 | 1.0 | -| test.c:487:23:487:24 | (unsigned int)... | 1.0 | -| test.c:487:28:487:29 | 32 | 1.0 | -| test.c:487:28:487:29 | (unsigned int)... | 1.0 | -| test.c:488:13:488:13 | 2 | 1.0 | -| test.c:488:13:488:13 | (unsigned int)... | 1.0 | -| test.c:488:13:488:30 | ... * ... | 62517.0 | -| test.c:488:17:488:30 | (...) | 62517.0 | -| test.c:488:18:488:19 | ip | 62517.0 | -| test.c:488:18:488:24 | ... * ... | 62517.0 | -| test.c:488:18:488:29 | ... + ... | 62517.0 | -| test.c:488:23:488:24 | 14 | 1.0 | -| test.c:488:23:488:24 | (unsigned int)... | 1.0 | -| test.c:488:28:488:29 | 64 | 1.0 | -| test.c:488:28:488:29 | (unsigned int)... | 1.0 | -| test.c:489:13:494:26 | (...) | 1.954766084417875E15 | -| test.c:489:14:489:25 | (...) | 62517.0 | -| test.c:489:14:489:30 | ... * ... | 62517.0 | -| test.c:489:14:490:63 | ... > ... | 1.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 1.954766084417875E15 | -| test.c:489:15:489:15 | 2 | 1.0 | -| test.c:489:15:489:15 | (unsigned int)... | 1.0 | -| test.c:489:15:489:20 | ... * ... | 62517.0 | -| test.c:489:15:489:24 | ... + ... | 62517.0 | -| test.c:489:19:489:20 | ip | 62517.0 | -| test.c:489:24:489:24 | 1 | 1.0 | -| test.c:489:24:489:24 | (unsigned int)... | 1.0 | -| test.c:489:29:489:30 | 14 | 1.0 | -| test.c:489:29:489:30 | (unsigned int)... | 1.0 | -| test.c:490:13:490:63 | (...) | 3.908375289E9 | -| test.c:490:14:490:15 | 14 | 1.0 | -| test.c:490:14:490:15 | (unsigned int)... | 1.0 | -| test.c:490:14:490:26 | ... * ... | 62517.0 | -| test.c:490:14:490:36 | ... > ... | 1.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 3.908375289E9 | -| test.c:490:19:490:26 | (...) | 62517.0 | -| test.c:490:20:490:20 | 2 | 1.0 | -| test.c:490:20:490:20 | (unsigned int)... | 1.0 | -| test.c:490:20:490:25 | ... * ... | 62517.0 | -| test.c:490:24:490:25 | ip | 62517.0 | -| test.c:490:30:490:31 | 17 | 1.0 | -| test.c:490:30:490:31 | (unsigned int)... | 1.0 | -| test.c:490:30:490:36 | ... * ... | 62517.0 | -| test.c:490:35:490:36 | ip | 62517.0 | -| test.c:490:40:490:41 | 17 | 1.0 | -| test.c:490:40:490:41 | (unsigned int)... | 1.0 | -| test.c:490:40:490:52 | ... * ... | 62517.0 | -| test.c:490:45:490:52 | (...) | 62517.0 | -| test.c:490:46:490:46 | 2 | 1.0 | -| test.c:490:46:490:46 | (unsigned int)... | 1.0 | -| test.c:490:46:490:51 | ... * ... | 62517.0 | -| test.c:490:50:490:51 | ip | 62517.0 | -| test.c:490:56:490:57 | 17 | 1.0 | -| test.c:490:56:490:57 | (unsigned int)... | 1.0 | -| test.c:490:56:490:62 | ... * ... | 62517.0 | -| test.c:490:61:490:62 | ip | 62517.0 | -| test.c:491:17:491:28 | (...) | 125035.0 | -| test.c:491:17:491:33 | ... * ... | 125035.0 | -| test.c:491:18:491:18 | 2 | 1.0 | -| test.c:491:18:491:18 | (unsigned int)... | 1.0 | -| test.c:491:18:491:23 | ... * ... | 125035.0 | -| test.c:491:18:491:27 | ... + ... | 125035.0 | -| test.c:491:22:491:23 | ip | 125035.0 | -| test.c:491:27:491:27 | 1 | 1.0 | -| test.c:491:27:491:27 | (unsigned int)... | 1.0 | -| test.c:491:32:491:33 | 14 | 1.0 | -| test.c:491:32:491:33 | (unsigned int)... | 1.0 | -| test.c:492:17:492:18 | 14 | 1.0 | -| test.c:492:17:492:18 | (unsigned int)... | 1.0 | -| test.c:492:17:492:29 | ... * ... | 125035.0 | -| test.c:492:17:492:39 | ... > ... | 1.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 1.5633751225E10 | -| test.c:492:22:492:29 | (...) | 125035.0 | -| test.c:492:23:492:23 | 2 | 1.0 | -| test.c:492:23:492:23 | (unsigned int)... | 1.0 | -| test.c:492:23:492:28 | ... * ... | 125035.0 | -| test.c:492:27:492:28 | ip | 125035.0 | -| test.c:492:33:492:34 | 17 | 1.0 | -| test.c:492:33:492:34 | (unsigned int)... | 1.0 | -| test.c:492:33:492:39 | ... * ... | 125035.0 | -| test.c:492:38:492:39 | ip | 125035.0 | -| test.c:493:19:493:20 | 14 | 1.0 | -| test.c:493:19:493:20 | (unsigned int)... | 1.0 | -| test.c:493:19:493:31 | ... * ... | 125035.0 | -| test.c:493:24:493:31 | (...) | 125035.0 | -| test.c:493:25:493:25 | 2 | 1.0 | -| test.c:493:25:493:25 | (unsigned int)... | 1.0 | -| test.c:493:25:493:30 | ... * ... | 125035.0 | -| test.c:493:29:493:30 | ip | 125035.0 | -| test.c:494:19:494:20 | 14 | 1.0 | -| test.c:494:19:494:20 | (unsigned int)... | 1.0 | -| test.c:494:19:494:25 | ... * ... | 125035.0 | -| test.c:494:24:494:25 | ip | 125035.0 | -| test.c:495:13:495:13 | 2 | 1.0 | -| test.c:495:13:495:13 | (unsigned int)... | 1.0 | -| test.c:495:13:495:18 | ... * ... | 62517.0 | -| test.c:495:13:495:23 | ... * ... | 62517.0 | -| test.c:495:13:495:43 | ... + ... | 3.908375289E9 | -| test.c:495:17:495:18 | ip | 62517.0 | -| test.c:495:22:495:23 | 14 | 1.0 | -| test.c:495:22:495:23 | (unsigned int)... | 1.0 | -| test.c:495:27:495:38 | (...) | 62517.0 | -| test.c:495:27:495:43 | ... * ... | 62517.0 | -| test.c:495:28:495:28 | 2 | 1.0 | -| test.c:495:28:495:28 | (unsigned int)... | 1.0 | -| test.c:495:28:495:33 | ... * ... | 62517.0 | -| test.c:495:28:495:37 | ... + ... | 62517.0 | -| test.c:495:32:495:33 | ip | 62517.0 | -| test.c:495:37:495:37 | 1 | 1.0 | -| test.c:495:37:495:37 | (unsigned int)... | 1.0 | -| test.c:495:42:495:43 | 17 | 1.0 | -| test.c:495:42:495:43 | (unsigned int)... | 1.0 | -| test.c:496:9:496:9 | 4 | 1.0 | -| test.c:496:9:496:9 | (unsigned int)... | 1.0 | -| test.c:496:9:496:26 | ... * ... | 10419.0 | -| test.c:496:9:497:30 | ... + ... | 1.08555561E8 | -| test.c:496:9:498:30 | ... + ... | 1.131040390059E12 | -| test.c:496:9:504:26 | ... + ... | 1.0235492350954187E25 | -| test.c:496:9:505:61 | ... > ... | 1.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.778814771623795E41 | -| test.c:496:13:496:26 | (...) | 10419.0 | -| test.c:496:14:496:15 | ip | 10419.0 | -| test.c:496:14:496:20 | ... * ... | 10419.0 | -| test.c:496:14:496:25 | ... + ... | 10419.0 | -| test.c:496:19:496:20 | 14 | 1.0 | -| test.c:496:19:496:20 | (unsigned int)... | 1.0 | -| test.c:496:24:496:25 | 32 | 1.0 | -| test.c:496:24:496:25 | (unsigned int)... | 1.0 | -| test.c:497:13:497:30 | (...) | 10419.0 | -| test.c:497:14:497:14 | 2 | 1.0 | -| test.c:497:14:497:14 | (unsigned int)... | 1.0 | -| test.c:497:14:497:19 | ... * ... | 10419.0 | -| test.c:497:14:497:24 | ... * ... | 10419.0 | -| test.c:497:14:497:29 | ... + ... | 10419.0 | -| test.c:497:18:497:19 | ip | 10419.0 | -| test.c:497:23:497:24 | 14 | 1.0 | -| test.c:497:23:497:24 | (unsigned int)... | 1.0 | -| test.c:497:28:497:29 | 32 | 1.0 | -| test.c:497:28:497:29 | (unsigned int)... | 1.0 | -| test.c:498:13:498:13 | 2 | 1.0 | -| test.c:498:13:498:13 | (unsigned int)... | 1.0 | -| test.c:498:13:498:30 | ... * ... | 10419.0 | -| test.c:498:17:498:30 | (...) | 10419.0 | -| test.c:498:18:498:19 | ip | 10419.0 | -| test.c:498:18:498:24 | ... * ... | 10419.0 | -| test.c:498:18:498:29 | ... + ... | 10419.0 | -| test.c:498:23:498:24 | 14 | 1.0 | -| test.c:498:23:498:24 | (unsigned int)... | 1.0 | -| test.c:498:28:498:29 | 64 | 1.0 | -| test.c:498:28:498:29 | (unsigned int)... | 1.0 | -| test.c:499:13:504:26 | (...) | 9.049625849719E12 | -| test.c:499:14:499:25 | (...) | 10419.0 | -| test.c:499:14:499:30 | ... * ... | 10419.0 | -| test.c:499:14:500:63 | ... > ... | 1.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 9.049625849719E12 | -| test.c:499:15:499:15 | 2 | 1.0 | -| test.c:499:15:499:15 | (unsigned int)... | 1.0 | -| test.c:499:15:499:20 | ... * ... | 10419.0 | -| test.c:499:15:499:24 | ... + ... | 10419.0 | -| test.c:499:19:499:20 | ip | 10419.0 | -| test.c:499:24:499:24 | 1 | 1.0 | -| test.c:499:24:499:24 | (unsigned int)... | 1.0 | -| test.c:499:29:499:30 | 14 | 1.0 | -| test.c:499:29:499:30 | (unsigned int)... | 1.0 | -| test.c:500:13:500:63 | (...) | 1.08555561E8 | -| test.c:500:14:500:15 | 14 | 1.0 | -| test.c:500:14:500:15 | (unsigned int)... | 1.0 | -| test.c:500:14:500:26 | ... * ... | 10419.0 | -| test.c:500:14:500:36 | ... > ... | 1.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 1.08555561E8 | -| test.c:500:19:500:26 | (...) | 10419.0 | -| test.c:500:20:500:20 | 2 | 1.0 | -| test.c:500:20:500:20 | (unsigned int)... | 1.0 | -| test.c:500:20:500:25 | ... * ... | 10419.0 | -| test.c:500:24:500:25 | ip | 10419.0 | -| test.c:500:30:500:31 | 17 | 1.0 | -| test.c:500:30:500:31 | (unsigned int)... | 1.0 | -| test.c:500:30:500:36 | ... * ... | 10419.0 | -| test.c:500:35:500:36 | ip | 10419.0 | -| test.c:500:40:500:41 | 17 | 1.0 | -| test.c:500:40:500:41 | (unsigned int)... | 1.0 | -| test.c:500:40:500:52 | ... * ... | 10419.0 | -| test.c:500:45:500:52 | (...) | 10419.0 | -| test.c:500:46:500:46 | 2 | 1.0 | -| test.c:500:46:500:46 | (unsigned int)... | 1.0 | -| test.c:500:46:500:51 | ... * ... | 10419.0 | -| test.c:500:50:500:51 | ip | 10419.0 | -| test.c:500:56:500:57 | 17 | 1.0 | -| test.c:500:56:500:57 | (unsigned int)... | 1.0 | -| test.c:500:56:500:62 | ... * ... | 10419.0 | -| test.c:500:61:500:62 | ip | 10419.0 | -| test.c:501:17:501:28 | (...) | 20839.0 | -| test.c:501:17:501:33 | ... * ... | 20839.0 | -| test.c:501:18:501:18 | 2 | 1.0 | -| test.c:501:18:501:18 | (unsigned int)... | 1.0 | -| test.c:501:18:501:23 | ... * ... | 20839.0 | -| test.c:501:18:501:27 | ... + ... | 20839.0 | -| test.c:501:22:501:23 | ip | 20839.0 | -| test.c:501:27:501:27 | 1 | 1.0 | -| test.c:501:27:501:27 | (unsigned int)... | 1.0 | -| test.c:501:32:501:33 | 14 | 1.0 | -| test.c:501:32:501:33 | (unsigned int)... | 1.0 | -| test.c:502:17:502:18 | 14 | 1.0 | -| test.c:502:17:502:18 | (unsigned int)... | 1.0 | -| test.c:502:17:502:29 | ... * ... | 20839.0 | -| test.c:502:17:502:39 | ... > ... | 1.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.34263921E8 | -| test.c:502:22:502:29 | (...) | 20839.0 | -| test.c:502:23:502:23 | 2 | 1.0 | -| test.c:502:23:502:23 | (unsigned int)... | 1.0 | -| test.c:502:23:502:28 | ... * ... | 20839.0 | -| test.c:502:27:502:28 | ip | 20839.0 | -| test.c:502:33:502:34 | 17 | 1.0 | -| test.c:502:33:502:34 | (unsigned int)... | 1.0 | -| test.c:502:33:502:39 | ... * ... | 20839.0 | -| test.c:502:38:502:39 | ip | 20839.0 | -| test.c:503:19:503:20 | 14 | 1.0 | -| test.c:503:19:503:20 | (unsigned int)... | 1.0 | -| test.c:503:19:503:31 | ... * ... | 20839.0 | -| test.c:503:24:503:31 | (...) | 20839.0 | -| test.c:503:25:503:25 | 2 | 1.0 | -| test.c:503:25:503:25 | (unsigned int)... | 1.0 | -| test.c:503:25:503:30 | ... * ... | 20839.0 | -| test.c:503:29:503:30 | ip | 20839.0 | -| test.c:504:19:504:20 | 14 | 1.0 | -| test.c:504:19:504:20 | (unsigned int)... | 1.0 | -| test.c:504:19:504:25 | ... * ... | 20839.0 | -| test.c:504:24:504:25 | ip | 20839.0 | -| test.c:505:11:505:61 | (...) | 3.908375289E9 | -| test.c:505:12:505:13 | 14 | 1.0 | -| test.c:505:12:505:13 | (unsigned int)... | 1.0 | -| test.c:505:12:505:18 | ... * ... | 62517.0 | -| test.c:505:12:505:34 | ... > ... | 1.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 3.908375289E9 | -| test.c:505:17:505:18 | ip | 62517.0 | -| test.c:505:22:505:29 | (...) | 62517.0 | -| test.c:505:22:505:34 | ... * ... | 62517.0 | -| test.c:505:23:505:24 | ip | 62517.0 | -| test.c:505:23:505:28 | ... + ... | 62517.0 | -| test.c:505:28:505:28 | 1 | 1.0 | -| test.c:505:28:505:28 | (unsigned int)... | 1.0 | -| test.c:505:33:505:34 | 17 | 1.0 | -| test.c:505:33:505:34 | (unsigned int)... | 1.0 | -| test.c:505:38:505:39 | 17 | 1.0 | -| test.c:505:38:505:39 | (unsigned int)... | 1.0 | -| test.c:505:38:505:44 | ... * ... | 62517.0 | -| test.c:505:43:505:44 | ip | 62517.0 | -| test.c:505:48:505:55 | (...) | 62517.0 | -| test.c:505:48:505:60 | ... * ... | 62517.0 | -| test.c:505:49:505:50 | ip | 62517.0 | -| test.c:505:49:505:54 | ... + ... | 62517.0 | -| test.c:505:54:505:54 | 1 | 1.0 | -| test.c:505:54:505:54 | (unsigned int)... | 1.0 | -| test.c:505:59:505:60 | 17 | 1.0 | -| test.c:505:59:505:60 | (unsigned int)... | 1.0 | -| test.c:506:11:506:11 | 4 | 1.0 | -| test.c:506:11:506:11 | (unsigned int)... | 1.0 | -| test.c:506:11:506:28 | ... * ... | 125034.0 | -| test.c:506:11:507:28 | ... + ... | 1.5633501156E10 | -| test.c:506:11:508:28 | ... + ... | 1.954719183539304E15 | -| test.c:506:11:514:24 | ... + ... | 3.056778340269433E31 | -| test.c:506:15:506:28 | (...) | 125034.0 | -| test.c:506:16:506:17 | ip | 125034.0 | -| test.c:506:16:506:22 | ... * ... | 125034.0 | -| test.c:506:16:506:27 | ... + ... | 125034.0 | -| test.c:506:21:506:22 | 14 | 1.0 | -| test.c:506:21:506:22 | (unsigned int)... | 1.0 | -| test.c:506:26:506:27 | 32 | 1.0 | -| test.c:506:26:506:27 | (unsigned int)... | 1.0 | -| test.c:507:11:507:28 | (...) | 125034.0 | -| test.c:507:12:507:12 | 2 | 1.0 | -| test.c:507:12:507:12 | (unsigned int)... | 1.0 | -| test.c:507:12:507:17 | ... * ... | 125034.0 | -| test.c:507:12:507:22 | ... * ... | 125034.0 | -| test.c:507:12:507:27 | ... + ... | 125034.0 | -| test.c:507:16:507:17 | ip | 125034.0 | -| test.c:507:21:507:22 | 14 | 1.0 | -| test.c:507:21:507:22 | (unsigned int)... | 1.0 | -| test.c:507:26:507:27 | 32 | 1.0 | -| test.c:507:26:507:27 | (unsigned int)... | 1.0 | -| test.c:508:11:508:11 | 2 | 1.0 | -| test.c:508:11:508:11 | (unsigned int)... | 1.0 | -| test.c:508:11:508:28 | ... * ... | 125034.0 | -| test.c:508:15:508:28 | (...) | 125034.0 | -| test.c:508:16:508:17 | ip | 125034.0 | -| test.c:508:16:508:22 | ... * ... | 125034.0 | -| test.c:508:16:508:27 | ... + ... | 125034.0 | -| test.c:508:21:508:22 | 14 | 1.0 | -| test.c:508:21:508:22 | (unsigned int)... | 1.0 | -| test.c:508:26:508:27 | 64 | 1.0 | -| test.c:508:26:508:27 | (unsigned int)... | 1.0 | -| test.c:509:11:514:24 | (...) | 1.5637941071078508E16 | -| test.c:509:12:509:23 | (...) | 125034.0 | -| test.c:509:12:509:28 | ... * ... | 125034.0 | -| test.c:509:12:510:61 | ... > ... | 1.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 1.5637941071078508E16 | -| test.c:509:13:509:13 | 2 | 1.0 | -| test.c:509:13:509:13 | (unsigned int)... | 1.0 | -| test.c:509:13:509:18 | ... * ... | 125034.0 | -| test.c:509:13:509:22 | ... + ... | 125034.0 | -| test.c:509:17:509:18 | ip | 125034.0 | -| test.c:509:22:509:22 | 1 | 1.0 | -| test.c:509:22:509:22 | (unsigned int)... | 1.0 | -| test.c:509:27:509:28 | 14 | 1.0 | -| test.c:509:27:509:28 | (unsigned int)... | 1.0 | -| test.c:510:11:510:61 | (...) | 1.5633501156E10 | -| test.c:510:12:510:13 | 14 | 1.0 | -| test.c:510:12:510:13 | (unsigned int)... | 1.0 | -| test.c:510:12:510:24 | ... * ... | 125034.0 | -| test.c:510:12:510:34 | ... > ... | 1.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 1.5633501156E10 | -| test.c:510:17:510:24 | (...) | 125034.0 | -| test.c:510:18:510:18 | 2 | 1.0 | -| test.c:510:18:510:18 | (unsigned int)... | 1.0 | -| test.c:510:18:510:23 | ... * ... | 125034.0 | -| test.c:510:22:510:23 | ip | 125034.0 | -| test.c:510:28:510:29 | 17 | 1.0 | -| test.c:510:28:510:29 | (unsigned int)... | 1.0 | -| test.c:510:28:510:34 | ... * ... | 125034.0 | -| test.c:510:33:510:34 | ip | 125034.0 | -| test.c:510:38:510:39 | 17 | 1.0 | -| test.c:510:38:510:39 | (unsigned int)... | 1.0 | -| test.c:510:38:510:50 | ... * ... | 125034.0 | -| test.c:510:43:510:50 | (...) | 125034.0 | -| test.c:510:44:510:44 | 2 | 1.0 | -| test.c:510:44:510:44 | (unsigned int)... | 1.0 | -| test.c:510:44:510:49 | ... * ... | 125034.0 | -| test.c:510:48:510:49 | ip | 125034.0 | -| test.c:510:54:510:55 | 17 | 1.0 | -| test.c:510:54:510:55 | (unsigned int)... | 1.0 | -| test.c:510:54:510:60 | ... * ... | 125034.0 | -| test.c:510:59:510:60 | ip | 125034.0 | -| test.c:511:15:511:26 | (...) | 250069.0 | -| test.c:511:15:511:31 | ... * ... | 250069.0 | -| test.c:511:16:511:16 | 2 | 1.0 | -| test.c:511:16:511:16 | (unsigned int)... | 1.0 | -| test.c:511:16:511:21 | ... * ... | 250069.0 | -| test.c:511:16:511:25 | ... + ... | 250069.0 | -| test.c:511:20:511:21 | ip | 250069.0 | -| test.c:511:25:511:25 | 1 | 1.0 | -| test.c:511:25:511:25 | (unsigned int)... | 1.0 | -| test.c:511:30:511:31 | 14 | 1.0 | -| test.c:511:30:511:31 | (unsigned int)... | 1.0 | -| test.c:512:15:512:16 | 14 | 1.0 | -| test.c:512:15:512:16 | (unsigned int)... | 1.0 | -| test.c:512:15:512:27 | ... * ... | 250069.0 | -| test.c:512:15:512:37 | ... > ... | 1.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 6.2534504761E10 | -| test.c:512:20:512:27 | (...) | 250069.0 | -| test.c:512:21:512:21 | 2 | 1.0 | -| test.c:512:21:512:21 | (unsigned int)... | 1.0 | -| test.c:512:21:512:26 | ... * ... | 250069.0 | -| test.c:512:25:512:26 | ip | 250069.0 | -| test.c:512:31:512:32 | 17 | 1.0 | -| test.c:512:31:512:32 | (unsigned int)... | 1.0 | -| test.c:512:31:512:37 | ... * ... | 250069.0 | -| test.c:512:36:512:37 | ip | 250069.0 | -| test.c:513:17:513:18 | 14 | 1.0 | -| test.c:513:17:513:18 | (unsigned int)... | 1.0 | -| test.c:513:17:513:29 | ... * ... | 250069.0 | -| test.c:513:22:513:29 | (...) | 250069.0 | -| test.c:513:23:513:23 | 2 | 1.0 | -| test.c:513:23:513:23 | (unsigned int)... | 1.0 | -| test.c:513:23:513:28 | ... * ... | 250069.0 | -| test.c:513:27:513:28 | ip | 250069.0 | -| test.c:514:17:514:18 | 14 | 1.0 | -| test.c:514:17:514:18 | (unsigned int)... | 1.0 | -| test.c:514:17:514:23 | ... * ... | 250069.0 | -| test.c:514:22:514:23 | ip | 250069.0 | -| test.c:515:11:515:12 | 14 | 1.0 | -| test.c:515:11:515:12 | (unsigned int)... | 1.0 | -| test.c:515:11:515:17 | ... * ... | 125034.0 | -| test.c:515:11:515:33 | ... > ... | 1.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 1.5633501156E10 | -| test.c:515:16:515:17 | ip | 125034.0 | -| test.c:515:21:515:28 | (...) | 125034.0 | -| test.c:515:21:515:33 | ... * ... | 125034.0 | -| test.c:515:22:515:23 | ip | 125034.0 | -| test.c:515:22:515:27 | ... + ... | 125034.0 | -| test.c:515:27:515:27 | 1 | 1.0 | -| test.c:515:27:515:27 | (unsigned int)... | 1.0 | -| test.c:515:32:515:33 | 17 | 1.0 | -| test.c:515:32:515:33 | (unsigned int)... | 1.0 | -| test.c:516:13:516:14 | 14 | 1.0 | -| test.c:516:13:516:14 | (unsigned int)... | 1.0 | -| test.c:516:13:516:19 | ... * ... | 125034.0 | -| test.c:516:18:516:19 | ip | 125034.0 | -| test.c:517:13:517:20 | (...) | 125034.0 | -| test.c:517:13:517:25 | ... * ... | 125034.0 | -| test.c:517:14:517:15 | ip | 125034.0 | -| test.c:517:14:517:19 | ... + ... | 125034.0 | -| test.c:517:19:517:19 | 1 | 1.0 | -| test.c:517:19:517:19 | (unsigned int)... | 1.0 | -| test.c:517:24:517:25 | 14 | 1.0 | -| test.c:517:24:517:25 | (unsigned int)... | 1.0 | -| test.c:518:9:518:10 | 14 | 1.0 | -| test.c:518:9:518:10 | (unsigned int)... | 1.0 | -| test.c:518:9:518:15 | ... * ... | 1437897.0 | -| test.c:518:9:518:59 | ... > ... | 1.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 2.9729207539701335E18 | -| test.c:518:14:518:15 | ip | 1437897.0 | -| test.c:518:19:518:30 | (...) | 1437897.0 | -| test.c:518:19:518:35 | ... * ... | 1437897.0 | -| test.c:518:19:518:59 | ... + ... | 2.067547782609E12 | -| test.c:518:20:518:20 | 2 | 1.0 | -| test.c:518:20:518:20 | (unsigned int)... | 1.0 | -| test.c:518:20:518:25 | ... * ... | 1437897.0 | -| test.c:518:20:518:29 | ... + ... | 1437897.0 | -| test.c:518:24:518:25 | ip | 1437897.0 | -| test.c:518:29:518:29 | 1 | 1.0 | -| test.c:518:29:518:29 | (unsigned int)... | 1.0 | -| test.c:518:34:518:35 | 17 | 1.0 | -| test.c:518:34:518:35 | (unsigned int)... | 1.0 | -| test.c:518:39:518:54 | (...) | 1437897.0 | -| test.c:518:39:518:59 | ... * ... | 1437897.0 | -| test.c:518:40:518:40 | 2 | 1.0 | -| test.c:518:40:518:40 | (unsigned int)... | 1.0 | -| test.c:518:40:518:45 | ... * ... | 1437897.0 | -| test.c:518:40:518:49 | ... + ... | 1437897.0 | -| test.c:518:40:518:53 | ... + ... | 1437897.0 | -| test.c:518:44:518:45 | ip | 1437897.0 | -| test.c:518:49:518:49 | 1 | 1.0 | -| test.c:518:49:518:49 | (unsigned int)... | 1.0 | -| test.c:518:53:518:53 | 1 | 1.0 | -| test.c:518:53:518:53 | (unsigned int)... | 1.0 | -| test.c:518:58:518:59 | 17 | 1.0 | -| test.c:518:58:518:59 | (unsigned int)... | 1.0 | -| test.c:519:11:519:12 | 14 | 1.0 | -| test.c:519:11:519:12 | (unsigned int)... | 1.0 | -| test.c:519:11:519:17 | ... * ... | 1437897.0 | -| test.c:519:16:519:17 | ip | 1437897.0 | -| test.c:520:11:520:22 | (...) | 1437897.0 | -| test.c:520:11:520:27 | ... * ... | 1437897.0 | -| test.c:520:11:520:51 | ... + ... | 2.067547782609E12 | -| test.c:520:12:520:12 | 2 | 1.0 | -| test.c:520:12:520:12 | (unsigned int)... | 1.0 | -| test.c:520:12:520:17 | ... * ... | 1437897.0 | -| test.c:520:12:520:21 | ... + ... | 1437897.0 | -| test.c:520:16:520:17 | ip | 1437897.0 | -| test.c:520:21:520:21 | 1 | 1.0 | -| test.c:520:21:520:21 | (unsigned int)... | 1.0 | -| test.c:520:26:520:27 | 14 | 1.0 | -| test.c:520:26:520:27 | (unsigned int)... | 1.0 | -| test.c:520:31:520:46 | (...) | 1437897.0 | -| test.c:520:31:520:51 | ... * ... | 1437897.0 | -| test.c:520:32:520:32 | 2 | 1.0 | -| test.c:520:32:520:32 | (unsigned int)... | 1.0 | -| test.c:520:32:520:37 | ... * ... | 1437897.0 | -| test.c:520:32:520:41 | ... + ... | 1437897.0 | -| test.c:520:32:520:45 | ... + ... | 1437897.0 | -| test.c:520:36:520:37 | ip | 1437897.0 | -| test.c:520:41:520:41 | 1 | 1.0 | -| test.c:520:41:520:41 | (unsigned int)... | 1.0 | -| test.c:520:45:520:45 | 1 | 1.0 | -| test.c:520:45:520:45 | (unsigned int)... | 1.0 | -| test.c:520:50:520:51 | 17 | 1.0 | -| test.c:520:50:520:51 | (unsigned int)... | 1.0 | -| test.c:521:9:521:9 | 2 | 1.0 | -| test.c:521:9:521:9 | (unsigned int)... | 1.0 | -| test.c:521:9:521:26 | ... * ... | 1437897.0 | -| test.c:521:9:541:48 | ... + ... | 3.5306223994138077E62 | -| test.c:521:9:563:30 | ... > ... | 1.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.3658022750663434E182 | -| test.c:521:13:521:26 | (...) | 1437897.0 | -| test.c:521:14:521:15 | ip | 1437897.0 | -| test.c:521:14:521:20 | ... * ... | 1437897.0 | -| test.c:521:14:521:25 | ... + ... | 1437897.0 | -| test.c:521:19:521:20 | 14 | 1.0 | -| test.c:521:19:521:20 | (unsigned int)... | 1.0 | -| test.c:521:24:521:25 | 32 | 1.0 | -| test.c:521:24:521:25 | (unsigned int)... | 1.0 | -| test.c:522:13:541:48 | (...) | 2.4554070280512497E56 | -| test.c:522:14:522:14 | 4 | 1.0 | -| test.c:522:14:522:14 | (unsigned int)... | 1.0 | -| test.c:522:14:522:31 | ... * ... | 1437897.0 | -| test.c:522:14:523:32 | ... + ... | 2.067547782609E12 | -| test.c:522:14:524:32 | ... + ... | 2.9729207539701335E18 | -| test.c:522:14:530:28 | ... + ... | 7.070613623498497E37 | -| test.c:522:14:531:43 | ... > ... | 1.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 2.4554070280512497E56 | -| test.c:522:18:522:31 | (...) | 1437897.0 | -| test.c:522:19:522:20 | ip | 1437897.0 | -| test.c:522:19:522:25 | ... * ... | 1437897.0 | -| test.c:522:19:522:30 | ... + ... | 1437897.0 | -| test.c:522:24:522:25 | 14 | 1.0 | -| test.c:522:24:522:25 | (unsigned int)... | 1.0 | -| test.c:522:29:522:30 | 32 | 1.0 | -| test.c:522:29:522:30 | (unsigned int)... | 1.0 | -| test.c:523:15:523:32 | (...) | 1437897.0 | -| test.c:523:16:523:16 | 2 | 1.0 | -| test.c:523:16:523:16 | (unsigned int)... | 1.0 | -| test.c:523:16:523:21 | ... * ... | 1437897.0 | -| test.c:523:16:523:26 | ... * ... | 1437897.0 | -| test.c:523:16:523:31 | ... + ... | 1437897.0 | -| test.c:523:20:523:21 | ip | 1437897.0 | -| test.c:523:25:523:26 | 14 | 1.0 | -| test.c:523:25:523:26 | (unsigned int)... | 1.0 | -| test.c:523:30:523:31 | 32 | 1.0 | -| test.c:523:30:523:31 | (unsigned int)... | 1.0 | -| test.c:524:15:524:15 | 2 | 1.0 | -| test.c:524:15:524:15 | (unsigned int)... | 1.0 | -| test.c:524:15:524:32 | ... * ... | 1437897.0 | -| test.c:524:19:524:32 | (...) | 1437897.0 | -| test.c:524:20:524:21 | ip | 1437897.0 | -| test.c:524:20:524:26 | ... * ... | 1437897.0 | -| test.c:524:20:524:31 | ... + ... | 1437897.0 | -| test.c:524:25:524:26 | 14 | 1.0 | -| test.c:524:25:524:26 | (unsigned int)... | 1.0 | -| test.c:524:30:524:31 | 64 | 1.0 | -| test.c:524:30:524:31 | (unsigned int)... | 1.0 | -| test.c:525:15:530:28 | (...) | 2.3783390842343084E19 | -| test.c:525:16:525:27 | (...) | 1437897.0 | -| test.c:525:16:525:32 | ... * ... | 1437897.0 | -| test.c:525:16:526:65 | ... > ... | 1.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 2.3783390842343084E19 | -| test.c:525:17:525:17 | 2 | 1.0 | -| test.c:525:17:525:17 | (unsigned int)... | 1.0 | -| test.c:525:17:525:22 | ... * ... | 1437897.0 | -| test.c:525:17:525:26 | ... + ... | 1437897.0 | -| test.c:525:21:525:22 | ip | 1437897.0 | -| test.c:525:26:525:26 | 1 | 1.0 | -| test.c:525:26:525:26 | (unsigned int)... | 1.0 | -| test.c:525:31:525:32 | 14 | 1.0 | -| test.c:525:31:525:32 | (unsigned int)... | 1.0 | -| test.c:526:15:526:65 | (...) | 2.067547782609E12 | -| test.c:526:16:526:17 | 14 | 1.0 | -| test.c:526:16:526:17 | (unsigned int)... | 1.0 | -| test.c:526:16:526:28 | ... * ... | 1437897.0 | -| test.c:526:16:526:38 | ... > ... | 1.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 2.067547782609E12 | -| test.c:526:21:526:28 | (...) | 1437897.0 | -| test.c:526:22:526:22 | 2 | 1.0 | -| test.c:526:22:526:22 | (unsigned int)... | 1.0 | -| test.c:526:22:526:27 | ... * ... | 1437897.0 | -| test.c:526:26:526:27 | ip | 1437897.0 | -| test.c:526:32:526:33 | 17 | 1.0 | -| test.c:526:32:526:33 | (unsigned int)... | 1.0 | -| test.c:526:32:526:38 | ... * ... | 1437897.0 | -| test.c:526:37:526:38 | ip | 1437897.0 | -| test.c:526:42:526:43 | 17 | 1.0 | -| test.c:526:42:526:43 | (unsigned int)... | 1.0 | -| test.c:526:42:526:54 | ... * ... | 1437897.0 | -| test.c:526:47:526:54 | (...) | 1437897.0 | -| test.c:526:48:526:48 | 2 | 1.0 | -| test.c:526:48:526:48 | (unsigned int)... | 1.0 | -| test.c:526:48:526:53 | ... * ... | 1437897.0 | -| test.c:526:52:526:53 | ip | 1437897.0 | -| test.c:526:58:526:59 | 17 | 1.0 | -| test.c:526:58:526:59 | (unsigned int)... | 1.0 | -| test.c:526:58:526:64 | ... * ... | 1437897.0 | -| test.c:526:63:526:64 | ip | 1437897.0 | -| test.c:527:19:527:30 | (...) | 2875795.0 | -| test.c:527:19:527:35 | ... * ... | 2875795.0 | -| test.c:527:20:527:20 | 2 | 1.0 | -| test.c:527:20:527:20 | (unsigned int)... | 1.0 | -| test.c:527:20:527:25 | ... * ... | 2875795.0 | -| test.c:527:20:527:29 | ... + ... | 2875795.0 | -| test.c:527:24:527:25 | ip | 2875795.0 | -| test.c:527:29:527:29 | 1 | 1.0 | -| test.c:527:29:527:29 | (unsigned int)... | 1.0 | -| test.c:527:34:527:35 | 14 | 1.0 | -| test.c:527:34:527:35 | (unsigned int)... | 1.0 | -| test.c:528:19:528:20 | 14 | 1.0 | -| test.c:528:19:528:20 | (unsigned int)... | 1.0 | -| test.c:528:19:528:31 | ... * ... | 2875795.0 | -| test.c:528:19:528:41 | ... > ... | 1.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 8.270196882025E12 | -| test.c:528:24:528:31 | (...) | 2875795.0 | -| test.c:528:25:528:25 | 2 | 1.0 | -| test.c:528:25:528:25 | (unsigned int)... | 1.0 | -| test.c:528:25:528:30 | ... * ... | 2875795.0 | -| test.c:528:29:528:30 | ip | 2875795.0 | -| test.c:528:35:528:36 | 17 | 1.0 | -| test.c:528:35:528:36 | (unsigned int)... | 1.0 | -| test.c:528:35:528:41 | ... * ... | 2875795.0 | -| test.c:528:40:528:41 | ip | 2875795.0 | -| test.c:529:21:529:22 | 14 | 1.0 | -| test.c:529:21:529:22 | (unsigned int)... | 1.0 | -| test.c:529:21:529:33 | ... * ... | 2875795.0 | -| test.c:529:26:529:33 | (...) | 2875795.0 | -| test.c:529:27:529:27 | 2 | 1.0 | -| test.c:529:27:529:27 | (unsigned int)... | 1.0 | -| test.c:529:27:529:32 | ... * ... | 2875795.0 | -| test.c:529:31:529:32 | ip | 2875795.0 | -| test.c:530:21:530:22 | 14 | 1.0 | -| test.c:530:21:530:22 | (unsigned int)... | 1.0 | -| test.c:530:21:530:27 | ... * ... | 2875795.0 | -| test.c:530:26:530:27 | ip | 2875795.0 | -| test.c:531:13:531:13 | 2 | 1.0 | -| test.c:531:13:531:13 | (unsigned int)... | 1.0 | -| test.c:531:13:531:18 | ... * ... | 8627385.0 | -| test.c:531:13:531:23 | ... * ... | 8627385.0 | -| test.c:531:13:531:43 | ... + ... | 7.4431771938225E13 | -| test.c:531:17:531:18 | ip | 8627385.0 | -| test.c:531:22:531:23 | 14 | 1.0 | -| test.c:531:22:531:23 | (unsigned int)... | 1.0 | -| test.c:531:27:531:38 | (...) | 8627385.0 | -| test.c:531:27:531:43 | ... * ... | 8627385.0 | -| test.c:531:28:531:28 | 2 | 1.0 | -| test.c:531:28:531:28 | (unsigned int)... | 1.0 | -| test.c:531:28:531:33 | ... * ... | 8627385.0 | -| test.c:531:28:531:37 | ... + ... | 8627385.0 | -| test.c:531:32:531:33 | ip | 8627385.0 | -| test.c:531:37:531:37 | 1 | 1.0 | -| test.c:531:37:531:37 | (unsigned int)... | 1.0 | -| test.c:531:42:531:43 | 17 | 1.0 | -| test.c:531:42:531:43 | (unsigned int)... | 1.0 | -| test.c:532:17:532:17 | 4 | 1.0 | -| test.c:532:17:532:17 | (unsigned int)... | 1.0 | -| test.c:532:17:532:34 | ... * ... | 8627385.0 | -| test.c:532:17:533:34 | ... + ... | 7.4431771938225E13 | -| test.c:532:17:534:34 | ... + ... | 6.421515527432633E20 | -| test.c:532:17:540:30 | ... + ... | 3.298869507082441E42 | -| test.c:532:21:532:34 | (...) | 8627385.0 | -| test.c:532:22:532:23 | ip | 8627385.0 | -| test.c:532:22:532:28 | ... * ... | 8627385.0 | -| test.c:532:22:532:33 | ... + ... | 8627385.0 | -| test.c:532:27:532:28 | 14 | 1.0 | -| test.c:532:27:532:28 | (unsigned int)... | 1.0 | -| test.c:532:32:532:33 | 32 | 1.0 | -| test.c:532:32:532:33 | (unsigned int)... | 1.0 | -| test.c:533:17:533:34 | (...) | 8627385.0 | -| test.c:533:18:533:18 | 2 | 1.0 | -| test.c:533:18:533:18 | (unsigned int)... | 1.0 | -| test.c:533:18:533:23 | ... * ... | 8627385.0 | -| test.c:533:18:533:28 | ... * ... | 8627385.0 | -| test.c:533:18:533:33 | ... + ... | 8627385.0 | -| test.c:533:22:533:23 | ip | 8627385.0 | -| test.c:533:27:533:28 | 14 | 1.0 | -| test.c:533:27:533:28 | (unsigned int)... | 1.0 | -| test.c:533:32:533:33 | 32 | 1.0 | -| test.c:533:32:533:33 | (unsigned int)... | 1.0 | -| test.c:534:17:534:17 | 2 | 1.0 | -| test.c:534:17:534:17 | (unsigned int)... | 1.0 | -| test.c:534:17:534:34 | ... * ... | 8627385.0 | -| test.c:534:21:534:34 | (...) | 8627385.0 | -| test.c:534:22:534:23 | ip | 8627385.0 | -| test.c:534:22:534:28 | ... * ... | 8627385.0 | -| test.c:534:22:534:33 | ... + ... | 8627385.0 | -| test.c:534:27:534:28 | 14 | 1.0 | -| test.c:534:27:534:28 | (unsigned int)... | 1.0 | -| test.c:534:32:534:33 | 64 | 1.0 | -| test.c:534:32:534:33 | (unsigned int)... | 1.0 | -| test.c:535:17:540:30 | (...) | 5.137213315127421E21 | -| test.c:535:18:535:29 | (...) | 8627385.0 | -| test.c:535:18:535:34 | ... * ... | 8627385.0 | -| test.c:535:18:536:67 | ... > ... | 1.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 5.137213315127421E21 | -| test.c:535:19:535:19 | 2 | 1.0 | -| test.c:535:19:535:19 | (unsigned int)... | 1.0 | -| test.c:535:19:535:24 | ... * ... | 8627385.0 | -| test.c:535:19:535:28 | ... + ... | 8627385.0 | -| test.c:535:23:535:24 | ip | 8627385.0 | -| test.c:535:28:535:28 | 1 | 1.0 | -| test.c:535:28:535:28 | (unsigned int)... | 1.0 | -| test.c:535:33:535:34 | 14 | 1.0 | -| test.c:535:33:535:34 | (unsigned int)... | 1.0 | -| test.c:536:17:536:67 | (...) | 7.4431771938225E13 | -| test.c:536:18:536:19 | 14 | 1.0 | -| test.c:536:18:536:19 | (unsigned int)... | 1.0 | -| test.c:536:18:536:30 | ... * ... | 8627385.0 | -| test.c:536:18:536:40 | ... > ... | 1.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 7.4431771938225E13 | -| test.c:536:23:536:30 | (...) | 8627385.0 | -| test.c:536:24:536:24 | 2 | 1.0 | -| test.c:536:24:536:24 | (unsigned int)... | 1.0 | -| test.c:536:24:536:29 | ... * ... | 8627385.0 | -| test.c:536:28:536:29 | ip | 8627385.0 | -| test.c:536:34:536:35 | 17 | 1.0 | -| test.c:536:34:536:35 | (unsigned int)... | 1.0 | -| test.c:536:34:536:40 | ... * ... | 8627385.0 | -| test.c:536:39:536:40 | ip | 8627385.0 | -| test.c:536:44:536:45 | 17 | 1.0 | -| test.c:536:44:536:45 | (unsigned int)... | 1.0 | -| test.c:536:44:536:56 | ... * ... | 8627385.0 | -| test.c:536:49:536:56 | (...) | 8627385.0 | -| test.c:536:50:536:50 | 2 | 1.0 | -| test.c:536:50:536:50 | (unsigned int)... | 1.0 | -| test.c:536:50:536:55 | ... * ... | 8627385.0 | -| test.c:536:54:536:55 | ip | 8627385.0 | -| test.c:536:60:536:61 | 17 | 1.0 | -| test.c:536:60:536:61 | (unsigned int)... | 1.0 | -| test.c:536:60:536:66 | ... * ... | 8627385.0 | -| test.c:536:65:536:66 | ip | 8627385.0 | -| test.c:537:21:537:32 | (...) | 1.7254771E7 | -| test.c:537:21:537:37 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:22 | 2 | 1.0 | -| test.c:537:22:537:22 | (unsigned int)... | 1.0 | -| test.c:537:22:537:27 | ... * ... | 1.7254771E7 | -| test.c:537:22:537:31 | ... + ... | 1.7254771E7 | -| test.c:537:26:537:27 | ip | 1.7254771E7 | -| test.c:537:31:537:31 | 1 | 1.0 | -| test.c:537:31:537:31 | (unsigned int)... | 1.0 | -| test.c:537:36:537:37 | 14 | 1.0 | -| test.c:537:36:537:37 | (unsigned int)... | 1.0 | -| test.c:538:21:538:22 | 14 | 1.0 | -| test.c:538:21:538:22 | (unsigned int)... | 1.0 | -| test.c:538:21:538:33 | ... * ... | 1.7254771E7 | -| test.c:538:21:538:43 | ... > ... | 1.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 2.97727122262441E14 | -| test.c:538:26:538:33 | (...) | 1.7254771E7 | -| test.c:538:27:538:27 | 2 | 1.0 | -| test.c:538:27:538:27 | (unsigned int)... | 1.0 | -| test.c:538:27:538:32 | ... * ... | 1.7254771E7 | -| test.c:538:31:538:32 | ip | 1.7254771E7 | -| test.c:538:37:538:38 | 17 | 1.0 | -| test.c:538:37:538:38 | (unsigned int)... | 1.0 | -| test.c:538:37:538:43 | ... * ... | 1.7254771E7 | -| test.c:538:42:538:43 | ip | 1.7254771E7 | -| test.c:539:23:539:24 | 14 | 1.0 | -| test.c:539:23:539:24 | (unsigned int)... | 1.0 | -| test.c:539:23:539:35 | ... * ... | 1.7254771E7 | -| test.c:539:28:539:35 | (...) | 1.7254771E7 | -| test.c:539:29:539:29 | 2 | 1.0 | -| test.c:539:29:539:29 | (unsigned int)... | 1.0 | -| test.c:539:29:539:34 | ... * ... | 1.7254771E7 | -| test.c:539:33:539:34 | ip | 1.7254771E7 | -| test.c:540:23:540:24 | 14 | 1.0 | -| test.c:540:23:540:24 | (unsigned int)... | 1.0 | -| test.c:540:23:540:29 | ... * ... | 1.7254771E7 | -| test.c:540:28:540:29 | ip | 1.7254771E7 | -| test.c:541:17:541:17 | 2 | 1.0 | -| test.c:541:17:541:17 | (unsigned int)... | 1.0 | -| test.c:541:17:541:22 | ... * ... | 8627385.0 | -| test.c:541:17:541:27 | ... * ... | 8627385.0 | -| test.c:541:17:541:47 | ... + ... | 7.4431771938225E13 | -| test.c:541:21:541:22 | ip | 8627385.0 | -| test.c:541:26:541:27 | 14 | 1.0 | -| test.c:541:26:541:27 | (unsigned int)... | 1.0 | -| test.c:541:31:541:42 | (...) | 8627385.0 | -| test.c:541:31:541:47 | ... * ... | 8627385.0 | -| test.c:541:32:541:32 | 2 | 1.0 | -| test.c:541:32:541:32 | (unsigned int)... | 1.0 | -| test.c:541:32:541:37 | ... * ... | 8627385.0 | -| test.c:541:32:541:41 | ... + ... | 8627385.0 | -| test.c:541:36:541:37 | ip | 8627385.0 | -| test.c:541:41:541:41 | 1 | 1.0 | -| test.c:541:41:541:41 | (unsigned int)... | 1.0 | -| test.c:541:46:541:47 | 17 | 1.0 | -| test.c:541:46:541:47 | (unsigned int)... | 1.0 | -| test.c:542:11:563:30 | (...) | 6.08636382738973E71 | -| test.c:542:12:542:12 | 4 | 1.0 | -| test.c:542:12:542:12 | (unsigned int)... | 1.0 | -| test.c:542:12:542:29 | ... * ... | 6.0391698E7 | -| test.c:542:12:543:30 | ... + ... | 3.647157187323204E15 | -| test.c:542:12:544:30 | ... + ... | 2.2025801541535236E23 | -| test.c:542:12:550:26 | ... + ... | 3.881087564774641E47 | -| test.c:542:12:551:61 | ... > ... | 1.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 6.08636382738973E71 | -| test.c:542:16:542:29 | (...) | 6.0391698E7 | -| test.c:542:17:542:18 | ip | 6.0391698E7 | -| test.c:542:17:542:23 | ... * ... | 6.0391698E7 | -| test.c:542:17:542:28 | ... + ... | 6.0391698E7 | -| test.c:542:22:542:23 | 14 | 1.0 | -| test.c:542:22:542:23 | (unsigned int)... | 1.0 | -| test.c:542:27:542:28 | 32 | 1.0 | -| test.c:542:27:542:28 | (unsigned int)... | 1.0 | -| test.c:543:13:543:30 | (...) | 6.0391698E7 | -| test.c:543:14:543:14 | 2 | 1.0 | -| test.c:543:14:543:14 | (unsigned int)... | 1.0 | -| test.c:543:14:543:19 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:24 | ... * ... | 6.0391698E7 | -| test.c:543:14:543:29 | ... + ... | 6.0391698E7 | -| test.c:543:18:543:19 | ip | 6.0391698E7 | -| test.c:543:23:543:24 | 14 | 1.0 | -| test.c:543:23:543:24 | (unsigned int)... | 1.0 | -| test.c:543:28:543:29 | 32 | 1.0 | -| test.c:543:28:543:29 | (unsigned int)... | 1.0 | -| test.c:544:13:544:13 | 2 | 1.0 | -| test.c:544:13:544:13 | (unsigned int)... | 1.0 | -| test.c:544:13:544:30 | ... * ... | 6.0391698E7 | -| test.c:544:17:544:30 | (...) | 6.0391698E7 | -| test.c:544:18:544:19 | ip | 6.0391698E7 | -| test.c:544:18:544:24 | ... * ... | 6.0391698E7 | -| test.c:544:18:544:29 | ... + ... | 6.0391698E7 | -| test.c:544:23:544:24 | 14 | 1.0 | -| test.c:544:23:544:24 | (unsigned int)... | 1.0 | -| test.c:544:28:544:29 | 64 | 1.0 | -| test.c:544:28:544:29 | (unsigned int)... | 1.0 | -| test.c:545:13:550:26 | (...) | 1.7620641670887053E24 | -| test.c:545:14:545:25 | (...) | 6.0391698E7 | -| test.c:545:14:545:30 | ... * ... | 6.0391698E7 | -| test.c:545:14:546:63 | ... > ... | 1.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 1.7620641670887053E24 | -| test.c:545:15:545:15 | 2 | 1.0 | -| test.c:545:15:545:15 | (unsigned int)... | 1.0 | -| test.c:545:15:545:20 | ... * ... | 6.0391698E7 | -| test.c:545:15:545:24 | ... + ... | 6.0391698E7 | -| test.c:545:19:545:20 | ip | 6.0391698E7 | -| test.c:545:24:545:24 | 1 | 1.0 | -| test.c:545:24:545:24 | (unsigned int)... | 1.0 | -| test.c:545:29:545:30 | 14 | 1.0 | -| test.c:545:29:545:30 | (unsigned int)... | 1.0 | -| test.c:546:13:546:63 | (...) | 3.647157187323204E15 | -| test.c:546:14:546:15 | 14 | 1.0 | -| test.c:546:14:546:15 | (unsigned int)... | 1.0 | -| test.c:546:14:546:26 | ... * ... | 6.0391698E7 | -| test.c:546:14:546:36 | ... > ... | 1.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 3.647157187323204E15 | -| test.c:546:19:546:26 | (...) | 6.0391698E7 | -| test.c:546:20:546:20 | 2 | 1.0 | -| test.c:546:20:546:20 | (unsigned int)... | 1.0 | -| test.c:546:20:546:25 | ... * ... | 6.0391698E7 | -| test.c:546:24:546:25 | ip | 6.0391698E7 | -| test.c:546:30:546:31 | 17 | 1.0 | -| test.c:546:30:546:31 | (unsigned int)... | 1.0 | -| test.c:546:30:546:36 | ... * ... | 6.0391698E7 | -| test.c:546:35:546:36 | ip | 6.0391698E7 | -| test.c:546:40:546:41 | 17 | 1.0 | -| test.c:546:40:546:41 | (unsigned int)... | 1.0 | -| test.c:546:40:546:52 | ... * ... | 6.0391698E7 | -| test.c:546:45:546:52 | (...) | 6.0391698E7 | -| test.c:546:46:546:46 | 2 | 1.0 | -| test.c:546:46:546:46 | (unsigned int)... | 1.0 | -| test.c:546:46:546:51 | ... * ... | 6.0391698E7 | -| test.c:546:50:546:51 | ip | 6.0391698E7 | -| test.c:546:56:546:57 | 17 | 1.0 | -| test.c:546:56:546:57 | (unsigned int)... | 1.0 | -| test.c:546:56:546:62 | ... * ... | 6.0391698E7 | -| test.c:546:61:546:62 | ip | 6.0391698E7 | -| test.c:547:17:547:28 | (...) | 1.20783397E8 | -| test.c:547:17:547:33 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:18 | 2 | 1.0 | -| test.c:547:18:547:18 | (unsigned int)... | 1.0 | -| test.c:547:18:547:23 | ... * ... | 1.20783397E8 | -| test.c:547:18:547:27 | ... + ... | 1.20783397E8 | -| test.c:547:22:547:23 | ip | 1.20783397E8 | -| test.c:547:27:547:27 | 1 | 1.0 | -| test.c:547:27:547:27 | (unsigned int)... | 1.0 | -| test.c:547:32:547:33 | 14 | 1.0 | -| test.c:547:32:547:33 | (unsigned int)... | 1.0 | -| test.c:548:17:548:18 | 14 | 1.0 | -| test.c:548:17:548:18 | (unsigned int)... | 1.0 | -| test.c:548:17:548:29 | ... * ... | 1.20783397E8 | -| test.c:548:17:548:39 | ... > ... | 1.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 1.4588628990859608E16 | -| test.c:548:22:548:29 | (...) | 1.20783397E8 | -| test.c:548:23:548:23 | 2 | 1.0 | -| test.c:548:23:548:23 | (unsigned int)... | 1.0 | -| test.c:548:23:548:28 | ... * ... | 1.20783397E8 | -| test.c:548:27:548:28 | ip | 1.20783397E8 | -| test.c:548:33:548:34 | 17 | 1.0 | -| test.c:548:33:548:34 | (unsigned int)... | 1.0 | -| test.c:548:33:548:39 | ... * ... | 1.20783397E8 | -| test.c:548:38:548:39 | ip | 1.20783397E8 | -| test.c:549:19:549:20 | 14 | 1.0 | -| test.c:549:19:549:20 | (unsigned int)... | 1.0 | -| test.c:549:19:549:31 | ... * ... | 1.20783397E8 | -| test.c:549:24:549:31 | (...) | 1.20783397E8 | -| test.c:549:25:549:25 | 2 | 1.0 | -| test.c:549:25:549:25 | (unsigned int)... | 1.0 | -| test.c:549:25:549:30 | ... * ... | 1.20783397E8 | -| test.c:549:29:549:30 | ip | 1.20783397E8 | -| test.c:550:19:550:20 | 14 | 1.0 | -| test.c:550:19:550:20 | (unsigned int)... | 1.0 | -| test.c:550:19:550:25 | ... * ... | 1.20783397E8 | -| test.c:550:24:550:25 | ip | 1.20783397E8 | -| test.c:551:11:551:61 | (...) | 1.3129766091773648E17 | -| test.c:551:12:551:13 | 14 | 1.0 | -| test.c:551:12:551:13 | (unsigned int)... | 1.0 | -| test.c:551:12:551:18 | ... * ... | 3.62350191E8 | -| test.c:551:12:551:34 | ... > ... | 1.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 1.3129766091773648E17 | -| test.c:551:17:551:18 | ip | 3.62350191E8 | -| test.c:551:22:551:29 | (...) | 3.62350191E8 | -| test.c:551:22:551:34 | ... * ... | 3.62350191E8 | -| test.c:551:23:551:24 | ip | 3.62350191E8 | -| test.c:551:23:551:28 | ... + ... | 3.62350191E8 | -| test.c:551:28:551:28 | 1 | 1.0 | -| test.c:551:28:551:28 | (unsigned int)... | 1.0 | -| test.c:551:33:551:34 | 17 | 1.0 | -| test.c:551:33:551:34 | (unsigned int)... | 1.0 | -| test.c:551:38:551:39 | 17 | 1.0 | -| test.c:551:38:551:39 | (unsigned int)... | 1.0 | -| test.c:551:38:551:44 | ... * ... | 3.62350191E8 | -| test.c:551:43:551:44 | ip | 3.62350191E8 | -| test.c:551:48:551:55 | (...) | 3.62350191E8 | -| test.c:551:48:551:60 | ... * ... | 3.62350191E8 | -| test.c:551:49:551:50 | ip | 3.62350191E8 | -| test.c:551:49:551:54 | ... + ... | 3.62350191E8 | -| test.c:551:54:551:54 | 1 | 1.0 | -| test.c:551:54:551:54 | (unsigned int)... | 1.0 | -| test.c:551:59:551:60 | 17 | 1.0 | -| test.c:551:59:551:60 | (unsigned int)... | 1.0 | -| test.c:552:15:552:15 | 4 | 1.0 | -| test.c:552:15:552:15 | (unsigned int)... | 1.0 | -| test.c:552:15:552:32 | ... * ... | 7.24700382E8 | -| test.c:552:15:553:32 | ... + ... | 5.251906436709459E17 | -| test.c:552:15:554:32 | ... + ... | 3.806058600911604E26 | -| test.c:552:15:560:28 | ... + ... | 1.1588865682845433E54 | -| test.c:552:19:552:32 | (...) | 7.24700382E8 | -| test.c:552:20:552:21 | ip | 7.24700382E8 | -| test.c:552:20:552:26 | ... * ... | 7.24700382E8 | -| test.c:552:20:552:31 | ... + ... | 7.24700382E8 | -| test.c:552:25:552:26 | 14 | 1.0 | -| test.c:552:25:552:26 | (unsigned int)... | 1.0 | -| test.c:552:30:552:31 | 32 | 1.0 | -| test.c:552:30:552:31 | (unsigned int)... | 1.0 | -| test.c:553:15:553:32 | (...) | 7.24700382E8 | -| test.c:553:16:553:16 | 2 | 1.0 | -| test.c:553:16:553:16 | (unsigned int)... | 1.0 | -| test.c:553:16:553:21 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:26 | ... * ... | 7.24700382E8 | -| test.c:553:16:553:31 | ... + ... | 7.24700382E8 | -| test.c:553:20:553:21 | ip | 7.24700382E8 | -| test.c:553:25:553:26 | 14 | 1.0 | -| test.c:553:25:553:26 | (unsigned int)... | 1.0 | -| test.c:553:30:553:31 | 32 | 1.0 | -| test.c:553:30:553:31 | (unsigned int)... | 1.0 | -| test.c:554:15:554:15 | 2 | 1.0 | -| test.c:554:15:554:15 | (unsigned int)... | 1.0 | -| test.c:554:15:554:32 | ... * ... | 7.24700382E8 | -| test.c:554:19:554:32 | (...) | 7.24700382E8 | -| test.c:554:20:554:21 | ip | 7.24700382E8 | -| test.c:554:20:554:26 | ... * ... | 7.24700382E8 | -| test.c:554:20:554:31 | ... + ... | 7.24700382E8 | -| test.c:554:25:554:26 | 14 | 1.0 | -| test.c:554:25:554:26 | (unsigned int)... | 1.0 | -| test.c:554:30:554:31 | 64 | 1.0 | -| test.c:554:30:554:31 | (unsigned int)... | 1.0 | -| test.c:555:15:560:28 | (...) | 3.044846887031571E27 | -| test.c:555:16:555:27 | (...) | 7.24700382E8 | -| test.c:555:16:555:32 | ... * ... | 7.24700382E8 | -| test.c:555:16:556:65 | ... > ... | 1.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 3.044846887031571E27 | -| test.c:555:17:555:17 | 2 | 1.0 | -| test.c:555:17:555:17 | (unsigned int)... | 1.0 | -| test.c:555:17:555:22 | ... * ... | 7.24700382E8 | -| test.c:555:17:555:26 | ... + ... | 7.24700382E8 | -| test.c:555:21:555:22 | ip | 7.24700382E8 | -| test.c:555:26:555:26 | 1 | 1.0 | -| test.c:555:26:555:26 | (unsigned int)... | 1.0 | -| test.c:555:31:555:32 | 14 | 1.0 | -| test.c:555:31:555:32 | (unsigned int)... | 1.0 | -| test.c:556:15:556:65 | (...) | 5.251906436709459E17 | -| test.c:556:16:556:17 | 14 | 1.0 | -| test.c:556:16:556:17 | (unsigned int)... | 1.0 | -| test.c:556:16:556:28 | ... * ... | 7.24700382E8 | -| test.c:556:16:556:38 | ... > ... | 1.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:556:21:556:28 | (...) | 7.24700382E8 | -| test.c:556:22:556:22 | 2 | 1.0 | -| test.c:556:22:556:22 | (unsigned int)... | 1.0 | -| test.c:556:22:556:27 | ... * ... | 7.24700382E8 | -| test.c:556:26:556:27 | ip | 7.24700382E8 | -| test.c:556:32:556:33 | 17 | 1.0 | -| test.c:556:32:556:33 | (unsigned int)... | 1.0 | -| test.c:556:32:556:38 | ... * ... | 7.24700382E8 | -| test.c:556:37:556:38 | ip | 7.24700382E8 | -| test.c:556:42:556:43 | 17 | 1.0 | -| test.c:556:42:556:43 | (unsigned int)... | 1.0 | -| test.c:556:42:556:54 | ... * ... | 7.24700382E8 | -| test.c:556:47:556:54 | (...) | 7.24700382E8 | -| test.c:556:48:556:48 | 2 | 1.0 | -| test.c:556:48:556:48 | (unsigned int)... | 1.0 | -| test.c:556:48:556:53 | ... * ... | 7.24700382E8 | -| test.c:556:52:556:53 | ip | 7.24700382E8 | -| test.c:556:58:556:59 | 17 | 1.0 | -| test.c:556:58:556:59 | (unsigned int)... | 1.0 | -| test.c:556:58:556:64 | ... * ... | 7.24700382E8 | -| test.c:556:63:556:64 | ip | 7.24700382E8 | -| test.c:557:19:557:30 | (...) | 1.449400765E9 | -| test.c:557:19:557:35 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:20 | 2 | 1.0 | -| test.c:557:20:557:20 | (unsigned int)... | 1.0 | -| test.c:557:20:557:25 | ... * ... | 1.449400765E9 | -| test.c:557:20:557:29 | ... + ... | 1.449400765E9 | -| test.c:557:24:557:25 | ip | 1.449400765E9 | -| test.c:557:29:557:29 | 1 | 1.0 | -| test.c:557:29:557:29 | (unsigned int)... | 1.0 | -| test.c:557:34:557:35 | 14 | 1.0 | -| test.c:557:34:557:35 | (unsigned int)... | 1.0 | -| test.c:558:19:558:20 | 14 | 1.0 | -| test.c:558:19:558:20 | (unsigned int)... | 1.0 | -| test.c:558:19:558:31 | ... * ... | 1.449400765E9 | -| test.c:558:19:558:41 | ... > ... | 1.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 2.1007625775825853E18 | -| test.c:558:24:558:31 | (...) | 1.449400765E9 | -| test.c:558:25:558:25 | 2 | 1.0 | -| test.c:558:25:558:25 | (unsigned int)... | 1.0 | -| test.c:558:25:558:30 | ... * ... | 1.449400765E9 | -| test.c:558:29:558:30 | ip | 1.449400765E9 | -| test.c:558:35:558:36 | 17 | 1.0 | -| test.c:558:35:558:36 | (unsigned int)... | 1.0 | -| test.c:558:35:558:41 | ... * ... | 1.449400765E9 | -| test.c:558:40:558:41 | ip | 1.449400765E9 | -| test.c:559:21:559:22 | 14 | 1.0 | -| test.c:559:21:559:22 | (unsigned int)... | 1.0 | -| test.c:559:21:559:33 | ... * ... | 1.449400765E9 | -| test.c:559:26:559:33 | (...) | 1.449400765E9 | -| test.c:559:27:559:27 | 2 | 1.0 | -| test.c:559:27:559:27 | (unsigned int)... | 1.0 | -| test.c:559:27:559:32 | ... * ... | 1.449400765E9 | -| test.c:559:31:559:32 | ip | 1.449400765E9 | -| test.c:560:21:560:22 | 14 | 1.0 | -| test.c:560:21:560:22 | (unsigned int)... | 1.0 | -| test.c:560:21:560:27 | ... * ... | 1.449400765E9 | -| test.c:560:26:560:27 | ip | 1.449400765E9 | -| test.c:561:15:561:16 | 14 | 1.0 | -| test.c:561:15:561:16 | (unsigned int)... | 1.0 | -| test.c:561:15:561:21 | ... * ... | 7.24700382E8 | -| test.c:561:15:561:37 | ... > ... | 1.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 5.251906436709459E17 | -| test.c:561:20:561:21 | ip | 7.24700382E8 | -| test.c:561:25:561:32 | (...) | 7.24700382E8 | -| test.c:561:25:561:37 | ... * ... | 7.24700382E8 | -| test.c:561:26:561:27 | ip | 7.24700382E8 | -| test.c:561:26:561:31 | ... + ... | 7.24700382E8 | -| test.c:561:31:561:31 | 1 | 1.0 | -| test.c:561:31:561:31 | (unsigned int)... | 1.0 | -| test.c:561:36:561:37 | 17 | 1.0 | -| test.c:561:36:561:37 | (unsigned int)... | 1.0 | -| test.c:562:17:562:18 | 14 | 1.0 | -| test.c:562:17:562:18 | (unsigned int)... | 1.0 | -| test.c:562:17:562:23 | ... * ... | 7.24700382E8 | -| test.c:562:22:562:23 | ip | 7.24700382E8 | -| test.c:563:17:563:24 | (...) | 7.24700382E8 | -| test.c:563:17:563:29 | ... * ... | 7.24700382E8 | -| test.c:563:18:563:19 | ip | 7.24700382E8 | -| test.c:563:18:563:23 | ... + ... | 7.24700382E8 | -| test.c:563:23:563:23 | 1 | 1.0 | -| test.c:563:23:563:23 | (unsigned int)... | 1.0 | -| test.c:563:28:563:29 | 14 | 1.0 | -| test.c:563:28:563:29 | (unsigned int)... | 1.0 | -| test.c:564:11:564:11 | 2 | 1.0 | -| test.c:564:11:564:11 | (unsigned int)... | 1.0 | -| test.c:564:11:564:28 | ... * ... | 5.797603059E9 | -| test.c:564:11:584:46 | ... + ... | 9.943431528813442E94 | -| test.c:564:15:564:28 | (...) | 5.797603059E9 | -| test.c:564:16:564:17 | ip | 5.797603059E9 | -| test.c:564:16:564:22 | ... * ... | 5.797603059E9 | -| test.c:564:16:564:27 | ... + ... | 5.797603059E9 | -| test.c:564:21:564:22 | 14 | 1.0 | -| test.c:564:21:564:22 | (unsigned int)... | 1.0 | -| test.c:564:26:564:27 | 32 | 1.0 | -| test.c:564:26:564:27 | (unsigned int)... | 1.0 | -| test.c:565:11:584:46 | (...) | 1.715093535659983E85 | -| test.c:565:12:565:12 | 4 | 1.0 | -| test.c:565:12:565:12 | (unsigned int)... | 1.0 | -| test.c:565:12:565:29 | ... * ... | 5.797603059E9 | -| test.c:565:12:566:30 | ... + ... | 3.361220122972616E19 | -| test.c:565:12:567:30 | ... + ... | 1.9487020066918396E29 | -| test.c:565:12:573:26 | ... + ... | 3.0379516094938436E59 | -| test.c:565:12:574:41 | ... > ... | 1.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 1.715093535659983E85 | -| test.c:565:16:565:29 | (...) | 5.797603059E9 | -| test.c:565:17:565:18 | ip | 5.797603059E9 | -| test.c:565:17:565:23 | ... * ... | 5.797603059E9 | -| test.c:565:17:565:28 | ... + ... | 5.797603059E9 | -| test.c:565:22:565:23 | 14 | 1.0 | -| test.c:565:22:565:23 | (unsigned int)... | 1.0 | -| test.c:565:27:565:28 | 32 | 1.0 | -| test.c:565:27:565:28 | (unsigned int)... | 1.0 | -| test.c:566:13:566:30 | (...) | 5.797603059E9 | -| test.c:566:14:566:14 | 2 | 1.0 | -| test.c:566:14:566:14 | (unsigned int)... | 1.0 | -| test.c:566:14:566:19 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:24 | ... * ... | 5.797603059E9 | -| test.c:566:14:566:29 | ... + ... | 5.797603059E9 | -| test.c:566:18:566:19 | ip | 5.797603059E9 | -| test.c:566:23:566:24 | 14 | 1.0 | -| test.c:566:23:566:24 | (unsigned int)... | 1.0 | -| test.c:566:28:566:29 | 32 | 1.0 | -| test.c:566:28:566:29 | (unsigned int)... | 1.0 | -| test.c:567:13:567:13 | 2 | 1.0 | -| test.c:567:13:567:13 | (unsigned int)... | 1.0 | -| test.c:567:13:567:30 | ... * ... | 5.797603059E9 | -| test.c:567:17:567:30 | (...) | 5.797603059E9 | -| test.c:567:18:567:19 | ip | 5.797603059E9 | -| test.c:567:18:567:24 | ... * ... | 5.797603059E9 | -| test.c:567:18:567:29 | ... + ... | 5.797603059E9 | -| test.c:567:23:567:24 | 14 | 1.0 | -| test.c:567:23:567:24 | (unsigned int)... | 1.0 | -| test.c:567:28:567:29 | 64 | 1.0 | -| test.c:567:28:567:29 | (unsigned int)... | 1.0 | -| test.c:568:13:573:26 | (...) | 1.558961605756818E30 | -| test.c:568:14:568:25 | (...) | 5.797603059E9 | -| test.c:568:14:568:30 | ... * ... | 5.797603059E9 | -| test.c:568:14:569:63 | ... > ... | 1.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:568:15:568:15 | 2 | 1.0 | -| test.c:568:15:568:15 | (unsigned int)... | 1.0 | -| test.c:568:15:568:20 | ... * ... | 5.797603059E9 | -| test.c:568:15:568:24 | ... + ... | 5.797603059E9 | -| test.c:568:19:568:20 | ip | 5.797603059E9 | -| test.c:568:24:568:24 | 1 | 1.0 | -| test.c:568:24:568:24 | (unsigned int)... | 1.0 | -| test.c:568:29:568:30 | 14 | 1.0 | -| test.c:568:29:568:30 | (unsigned int)... | 1.0 | -| test.c:569:13:569:63 | (...) | 3.361220122972616E19 | -| test.c:569:14:569:15 | 14 | 1.0 | -| test.c:569:14:569:15 | (unsigned int)... | 1.0 | -| test.c:569:14:569:26 | ... * ... | 5.797603059E9 | -| test.c:569:14:569:36 | ... > ... | 1.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:569:19:569:26 | (...) | 5.797603059E9 | -| test.c:569:20:569:20 | 2 | 1.0 | -| test.c:569:20:569:20 | (unsigned int)... | 1.0 | -| test.c:569:20:569:25 | ... * ... | 5.797603059E9 | -| test.c:569:24:569:25 | ip | 5.797603059E9 | -| test.c:569:30:569:31 | 17 | 1.0 | -| test.c:569:30:569:31 | (unsigned int)... | 1.0 | -| test.c:569:30:569:36 | ... * ... | 5.797603059E9 | -| test.c:569:35:569:36 | ip | 5.797603059E9 | -| test.c:569:40:569:41 | 17 | 1.0 | -| test.c:569:40:569:41 | (unsigned int)... | 1.0 | -| test.c:569:40:569:52 | ... * ... | 5.797603059E9 | -| test.c:569:45:569:52 | (...) | 5.797603059E9 | -| test.c:569:46:569:46 | 2 | 1.0 | -| test.c:569:46:569:46 | (unsigned int)... | 1.0 | -| test.c:569:46:569:51 | ... * ... | 5.797603059E9 | -| test.c:569:50:569:51 | ip | 5.797603059E9 | -| test.c:569:56:569:57 | 17 | 1.0 | -| test.c:569:56:569:57 | (unsigned int)... | 1.0 | -| test.c:569:56:569:62 | ... * ... | 5.797603059E9 | -| test.c:569:61:569:62 | ip | 5.797603059E9 | -| test.c:570:17:570:28 | (...) | 1.1595206119E10 | -| test.c:570:17:570:33 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:18 | 2 | 1.0 | -| test.c:570:18:570:18 | (unsigned int)... | 1.0 | -| test.c:570:18:570:23 | ... * ... | 1.1595206119E10 | -| test.c:570:18:570:27 | ... + ... | 1.1595206119E10 | -| test.c:570:22:570:23 | ip | 1.1595206119E10 | -| test.c:570:27:570:27 | 1 | 1.0 | -| test.c:570:27:570:27 | (unsigned int)... | 1.0 | -| test.c:570:32:570:33 | 14 | 1.0 | -| test.c:570:32:570:33 | (unsigned int)... | 1.0 | -| test.c:571:17:571:18 | 14 | 1.0 | -| test.c:571:17:571:18 | (unsigned int)... | 1.0 | -| test.c:571:17:571:29 | ... * ... | 1.1595206119E10 | -| test.c:571:17:571:39 | ... > ... | 1.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:571:22:571:29 | (...) | 1.1595206119E10 | -| test.c:571:23:571:23 | 2 | 1.0 | -| test.c:571:23:571:23 | (unsigned int)... | 1.0 | -| test.c:571:23:571:28 | ... * ... | 1.1595206119E10 | -| test.c:571:27:571:28 | ip | 1.1595206119E10 | -| test.c:571:33:571:34 | 17 | 1.0 | -| test.c:571:33:571:34 | (unsigned int)... | 1.0 | -| test.c:571:33:571:39 | ... * ... | 1.1595206119E10 | -| test.c:571:38:571:39 | ip | 1.1595206119E10 | -| test.c:572:19:572:20 | 14 | 1.0 | -| test.c:572:19:572:20 | (unsigned int)... | 1.0 | -| test.c:572:19:572:31 | ... * ... | 1.1595206119E10 | -| test.c:572:24:572:31 | (...) | 1.1595206119E10 | -| test.c:572:25:572:25 | 2 | 1.0 | -| test.c:572:25:572:25 | (unsigned int)... | 1.0 | -| test.c:572:25:572:30 | ... * ... | 1.1595206119E10 | -| test.c:572:29:572:30 | ip | 1.1595206119E10 | -| test.c:573:19:573:20 | 14 | 1.0 | -| test.c:573:19:573:20 | (unsigned int)... | 1.0 | -| test.c:573:19:573:25 | ... * ... | 1.1595206119E10 | -| test.c:573:24:573:25 | ip | 1.1595206119E10 | -| test.c:574:11:574:11 | 2 | 1.0 | -| test.c:574:11:574:11 | (unsigned int)... | 1.0 | -| test.c:574:11:574:16 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:21 | ... * ... | 3.4785618357E10 | -| test.c:574:11:574:41 | ... + ... | 1.2100392444788552E21 | -| test.c:574:15:574:16 | ip | 3.4785618357E10 | -| test.c:574:20:574:21 | 14 | 1.0 | -| test.c:574:20:574:21 | (unsigned int)... | 1.0 | -| test.c:574:25:574:36 | (...) | 3.4785618357E10 | -| test.c:574:25:574:41 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:26 | 2 | 1.0 | -| test.c:574:26:574:26 | (unsigned int)... | 1.0 | -| test.c:574:26:574:31 | ... * ... | 3.4785618357E10 | -| test.c:574:26:574:35 | ... + ... | 3.4785618357E10 | -| test.c:574:30:574:31 | ip | 3.4785618357E10 | -| test.c:574:35:574:35 | 1 | 1.0 | -| test.c:574:35:574:35 | (unsigned int)... | 1.0 | -| test.c:574:40:574:41 | 17 | 1.0 | -| test.c:574:40:574:41 | (unsigned int)... | 1.0 | -| test.c:575:15:575:15 | 4 | 1.0 | -| test.c:575:15:575:15 | (unsigned int)... | 1.0 | -| test.c:575:15:575:32 | ... * ... | 3.4785618357E10 | -| test.c:575:15:576:32 | ... + ... | 1.2100392444788552E21 | -| test.c:575:15:577:32 | ... + ... | 4.209196335543408E31 | -| test.c:575:15:583:28 | ... + ... | 1.417386703353284E64 | -| test.c:575:19:575:32 | (...) | 3.4785618357E10 | -| test.c:575:20:575:21 | ip | 3.4785618357E10 | -| test.c:575:20:575:26 | ... * ... | 3.4785618357E10 | -| test.c:575:20:575:31 | ... + ... | 3.4785618357E10 | -| test.c:575:25:575:26 | 14 | 1.0 | -| test.c:575:25:575:26 | (unsigned int)... | 1.0 | -| test.c:575:30:575:31 | 32 | 1.0 | -| test.c:575:30:575:31 | (unsigned int)... | 1.0 | -| test.c:576:15:576:32 | (...) | 3.4785618357E10 | -| test.c:576:16:576:16 | 2 | 1.0 | -| test.c:576:16:576:16 | (unsigned int)... | 1.0 | -| test.c:576:16:576:21 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:26 | ... * ... | 3.4785618357E10 | -| test.c:576:16:576:31 | ... + ... | 3.4785618357E10 | -| test.c:576:20:576:21 | ip | 3.4785618357E10 | -| test.c:576:25:576:26 | 14 | 1.0 | -| test.c:576:25:576:26 | (unsigned int)... | 1.0 | -| test.c:576:30:576:31 | 32 | 1.0 | -| test.c:576:30:576:31 | (unsigned int)... | 1.0 | -| test.c:577:15:577:15 | 2 | 1.0 | -| test.c:577:15:577:15 | (unsigned int)... | 1.0 | -| test.c:577:15:577:32 | ... * ... | 3.4785618357E10 | -| test.c:577:19:577:32 | (...) | 3.4785618357E10 | -| test.c:577:20:577:21 | ip | 3.4785618357E10 | -| test.c:577:20:577:26 | ... * ... | 3.4785618357E10 | -| test.c:577:20:577:31 | ... + ... | 3.4785618357E10 | -| test.c:577:25:577:26 | 14 | 1.0 | -| test.c:577:25:577:26 | (unsigned int)... | 1.0 | -| test.c:577:30:577:31 | 64 | 1.0 | -| test.c:577:30:577:31 | (unsigned int)... | 1.0 | -| test.c:578:15:583:28 | (...) | 3.367357068579931E32 | -| test.c:578:16:578:27 | (...) | 3.4785618357E10 | -| test.c:578:16:578:32 | ... * ... | 3.4785618357E10 | -| test.c:578:16:579:65 | ... > ... | 1.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 3.367357068579931E32 | -| test.c:578:17:578:17 | 2 | 1.0 | -| test.c:578:17:578:17 | (unsigned int)... | 1.0 | -| test.c:578:17:578:22 | ... * ... | 3.4785618357E10 | -| test.c:578:17:578:26 | ... + ... | 3.4785618357E10 | -| test.c:578:21:578:22 | ip | 3.4785618357E10 | -| test.c:578:26:578:26 | 1 | 1.0 | -| test.c:578:26:578:26 | (unsigned int)... | 1.0 | -| test.c:578:31:578:32 | 14 | 1.0 | -| test.c:578:31:578:32 | (unsigned int)... | 1.0 | -| test.c:579:15:579:65 | (...) | 1.2100392444788552E21 | -| test.c:579:16:579:17 | 14 | 1.0 | -| test.c:579:16:579:17 | (unsigned int)... | 1.0 | -| test.c:579:16:579:28 | ... * ... | 3.4785618357E10 | -| test.c:579:16:579:38 | ... > ... | 1.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:579:21:579:28 | (...) | 3.4785618357E10 | -| test.c:579:22:579:22 | 2 | 1.0 | -| test.c:579:22:579:22 | (unsigned int)... | 1.0 | -| test.c:579:22:579:27 | ... * ... | 3.4785618357E10 | -| test.c:579:26:579:27 | ip | 3.4785618357E10 | -| test.c:579:32:579:33 | 17 | 1.0 | -| test.c:579:32:579:33 | (unsigned int)... | 1.0 | -| test.c:579:32:579:38 | ... * ... | 3.4785618357E10 | -| test.c:579:37:579:38 | ip | 3.4785618357E10 | -| test.c:579:42:579:43 | 17 | 1.0 | -| test.c:579:42:579:43 | (unsigned int)... | 1.0 | -| test.c:579:42:579:54 | ... * ... | 3.4785618357E10 | -| test.c:579:47:579:54 | (...) | 3.4785618357E10 | -| test.c:579:48:579:48 | 2 | 1.0 | -| test.c:579:48:579:48 | (unsigned int)... | 1.0 | -| test.c:579:48:579:53 | ... * ... | 3.4785618357E10 | -| test.c:579:52:579:53 | ip | 3.4785618357E10 | -| test.c:579:58:579:59 | 17 | 1.0 | -| test.c:579:58:579:59 | (unsigned int)... | 1.0 | -| test.c:579:58:579:64 | ... * ... | 3.4785618357E10 | -| test.c:579:63:579:64 | ip | 3.4785618357E10 | -| test.c:580:19:580:30 | (...) | 6.9571236715E10 | -| test.c:580:19:580:35 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:20 | 2 | 1.0 | -| test.c:580:20:580:20 | (unsigned int)... | 1.0 | -| test.c:580:20:580:25 | ... * ... | 6.9571236715E10 | -| test.c:580:20:580:29 | ... + ... | 6.9571236715E10 | -| test.c:580:24:580:25 | ip | 6.9571236715E10 | -| test.c:580:29:580:29 | 1 | 1.0 | -| test.c:580:29:580:29 | (unsigned int)... | 1.0 | -| test.c:580:34:580:35 | 14 | 1.0 | -| test.c:580:34:580:35 | (unsigned int)... | 1.0 | -| test.c:581:19:581:20 | 14 | 1.0 | -| test.c:581:19:581:20 | (unsigned int)... | 1.0 | -| test.c:581:19:581:31 | ... * ... | 6.9571236715E10 | -| test.c:581:19:581:41 | ... > ... | 1.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.840156978054564E21 | -| test.c:581:24:581:31 | (...) | 6.9571236715E10 | -| test.c:581:25:581:25 | 2 | 1.0 | -| test.c:581:25:581:25 | (unsigned int)... | 1.0 | -| test.c:581:25:581:30 | ... * ... | 6.9571236715E10 | -| test.c:581:29:581:30 | ip | 6.9571236715E10 | -| test.c:581:35:581:36 | 17 | 1.0 | -| test.c:581:35:581:36 | (unsigned int)... | 1.0 | -| test.c:581:35:581:41 | ... * ... | 6.9571236715E10 | -| test.c:581:40:581:41 | ip | 6.9571236715E10 | -| test.c:582:21:582:22 | 14 | 1.0 | -| test.c:582:21:582:22 | (unsigned int)... | 1.0 | -| test.c:582:21:582:33 | ... * ... | 6.9571236715E10 | -| test.c:582:26:582:33 | (...) | 6.9571236715E10 | -| test.c:582:27:582:27 | 2 | 1.0 | -| test.c:582:27:582:27 | (unsigned int)... | 1.0 | -| test.c:582:27:582:32 | ... * ... | 6.9571236715E10 | -| test.c:582:31:582:32 | ip | 6.9571236715E10 | -| test.c:583:21:583:22 | 14 | 1.0 | -| test.c:583:21:583:22 | (unsigned int)... | 1.0 | -| test.c:583:21:583:27 | ... * ... | 6.9571236715E10 | -| test.c:583:26:583:27 | ip | 6.9571236715E10 | -| test.c:584:15:584:15 | 2 | 1.0 | -| test.c:584:15:584:15 | (unsigned int)... | 1.0 | -| test.c:584:15:584:20 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:25 | ... * ... | 3.4785618357E10 | -| test.c:584:15:584:45 | ... + ... | 1.2100392444788552E21 | -| test.c:584:19:584:20 | ip | 3.4785618357E10 | -| test.c:584:24:584:25 | 14 | 1.0 | -| test.c:584:24:584:25 | (unsigned int)... | 1.0 | -| test.c:584:29:584:40 | (...) | 3.4785618357E10 | -| test.c:584:29:584:45 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:30 | 2 | 1.0 | -| test.c:584:30:584:30 | (unsigned int)... | 1.0 | -| test.c:584:30:584:35 | ... * ... | 3.4785618357E10 | -| test.c:584:30:584:39 | ... + ... | 3.4785618357E10 | -| test.c:584:34:584:35 | ip | 3.4785618357E10 | -| test.c:584:39:584:39 | 1 | 1.0 | -| test.c:584:39:584:39 | (unsigned int)... | 1.0 | -| test.c:584:44:584:45 | 17 | 1.0 | -| test.c:584:44:584:45 | (unsigned int)... | 1.0 | -| test.c:585:11:585:11 | 4 | 1.0 | -| test.c:585:11:585:11 | (unsigned int)... | 1.0 | -| test.c:585:11:585:28 | ... * ... | 5.797603059E9 | -| test.c:585:11:586:32 | ... + ... | 3.361220122972616E19 | -| test.c:585:11:587:32 | ... + ... | 1.9487020066918396E29 | -| test.c:585:11:593:28 | ... + ... | 3.0379516094938436E59 | -| test.c:585:11:594:63 | ... > ... | 1.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.390639451194891E87 | -| test.c:585:15:585:28 | (...) | 5.797603059E9 | -| test.c:585:16:585:17 | ip | 5.797603059E9 | -| test.c:585:16:585:22 | ... * ... | 5.797603059E9 | -| test.c:585:16:585:27 | ... + ... | 5.797603059E9 | -| test.c:585:21:585:22 | 14 | 1.0 | -| test.c:585:21:585:22 | (unsigned int)... | 1.0 | -| test.c:585:26:585:27 | 32 | 1.0 | -| test.c:585:26:585:27 | (unsigned int)... | 1.0 | -| test.c:586:15:586:32 | (...) | 5.797603059E9 | -| test.c:586:16:586:16 | 2 | 1.0 | -| test.c:586:16:586:16 | (unsigned int)... | 1.0 | -| test.c:586:16:586:21 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:26 | ... * ... | 5.797603059E9 | -| test.c:586:16:586:31 | ... + ... | 5.797603059E9 | -| test.c:586:20:586:21 | ip | 5.797603059E9 | -| test.c:586:25:586:26 | 14 | 1.0 | -| test.c:586:25:586:26 | (unsigned int)... | 1.0 | -| test.c:586:30:586:31 | 32 | 1.0 | -| test.c:586:30:586:31 | (unsigned int)... | 1.0 | -| test.c:587:15:587:15 | 2 | 1.0 | -| test.c:587:15:587:15 | (unsigned int)... | 1.0 | -| test.c:587:15:587:32 | ... * ... | 5.797603059E9 | -| test.c:587:19:587:32 | (...) | 5.797603059E9 | -| test.c:587:20:587:21 | ip | 5.797603059E9 | -| test.c:587:20:587:26 | ... * ... | 5.797603059E9 | -| test.c:587:20:587:31 | ... + ... | 5.797603059E9 | -| test.c:587:25:587:26 | 14 | 1.0 | -| test.c:587:25:587:26 | (unsigned int)... | 1.0 | -| test.c:587:30:587:31 | 64 | 1.0 | -| test.c:587:30:587:31 | (unsigned int)... | 1.0 | -| test.c:588:15:593:28 | (...) | 1.558961605756818E30 | -| test.c:588:16:588:27 | (...) | 5.797603059E9 | -| test.c:588:16:588:32 | ... * ... | 5.797603059E9 | -| test.c:588:16:589:65 | ... > ... | 1.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 1.558961605756818E30 | -| test.c:588:17:588:17 | 2 | 1.0 | -| test.c:588:17:588:17 | (unsigned int)... | 1.0 | -| test.c:588:17:588:22 | ... * ... | 5.797603059E9 | -| test.c:588:17:588:26 | ... + ... | 5.797603059E9 | -| test.c:588:21:588:22 | ip | 5.797603059E9 | -| test.c:588:26:588:26 | 1 | 1.0 | -| test.c:588:26:588:26 | (unsigned int)... | 1.0 | -| test.c:588:31:588:32 | 14 | 1.0 | -| test.c:588:31:588:32 | (unsigned int)... | 1.0 | -| test.c:589:15:589:65 | (...) | 3.361220122972616E19 | -| test.c:589:16:589:17 | 14 | 1.0 | -| test.c:589:16:589:17 | (unsigned int)... | 1.0 | -| test.c:589:16:589:28 | ... * ... | 5.797603059E9 | -| test.c:589:16:589:38 | ... > ... | 1.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 3.361220122972616E19 | -| test.c:589:21:589:28 | (...) | 5.797603059E9 | -| test.c:589:22:589:22 | 2 | 1.0 | -| test.c:589:22:589:22 | (unsigned int)... | 1.0 | -| test.c:589:22:589:27 | ... * ... | 5.797603059E9 | -| test.c:589:26:589:27 | ip | 5.797603059E9 | -| test.c:589:32:589:33 | 17 | 1.0 | -| test.c:589:32:589:33 | (unsigned int)... | 1.0 | -| test.c:589:32:589:38 | ... * ... | 5.797603059E9 | -| test.c:589:37:589:38 | ip | 5.797603059E9 | -| test.c:589:42:589:43 | 17 | 1.0 | -| test.c:589:42:589:43 | (unsigned int)... | 1.0 | -| test.c:589:42:589:54 | ... * ... | 5.797603059E9 | -| test.c:589:47:589:54 | (...) | 5.797603059E9 | -| test.c:589:48:589:48 | 2 | 1.0 | -| test.c:589:48:589:48 | (unsigned int)... | 1.0 | -| test.c:589:48:589:53 | ... * ... | 5.797603059E9 | -| test.c:589:52:589:53 | ip | 5.797603059E9 | -| test.c:589:58:589:59 | 17 | 1.0 | -| test.c:589:58:589:59 | (unsigned int)... | 1.0 | -| test.c:589:58:589:64 | ... * ... | 5.797603059E9 | -| test.c:589:63:589:64 | ip | 5.797603059E9 | -| test.c:590:19:590:30 | (...) | 1.1595206119E10 | -| test.c:590:19:590:35 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:20 | 2 | 1.0 | -| test.c:590:20:590:20 | (unsigned int)... | 1.0 | -| test.c:590:20:590:25 | ... * ... | 1.1595206119E10 | -| test.c:590:20:590:29 | ... + ... | 1.1595206119E10 | -| test.c:590:24:590:25 | ip | 1.1595206119E10 | -| test.c:590:29:590:29 | 1 | 1.0 | -| test.c:590:29:590:29 | (unsigned int)... | 1.0 | -| test.c:590:34:590:35 | 14 | 1.0 | -| test.c:590:34:590:35 | (unsigned int)... | 1.0 | -| test.c:591:19:591:20 | 14 | 1.0 | -| test.c:591:19:591:20 | (unsigned int)... | 1.0 | -| test.c:591:19:591:31 | ... * ... | 1.1595206119E10 | -| test.c:591:19:591:41 | ... > ... | 1.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 1.3444880494209504E20 | -| test.c:591:24:591:31 | (...) | 1.1595206119E10 | -| test.c:591:25:591:25 | 2 | 1.0 | -| test.c:591:25:591:25 | (unsigned int)... | 1.0 | -| test.c:591:25:591:30 | ... * ... | 1.1595206119E10 | -| test.c:591:29:591:30 | ip | 1.1595206119E10 | -| test.c:591:35:591:36 | 17 | 1.0 | -| test.c:591:35:591:36 | (unsigned int)... | 1.0 | -| test.c:591:35:591:41 | ... * ... | 1.1595206119E10 | -| test.c:591:40:591:41 | ip | 1.1595206119E10 | -| test.c:592:21:592:22 | 14 | 1.0 | -| test.c:592:21:592:22 | (unsigned int)... | 1.0 | -| test.c:592:21:592:33 | ... * ... | 1.1595206119E10 | -| test.c:592:26:592:33 | (...) | 1.1595206119E10 | -| test.c:592:27:592:27 | 2 | 1.0 | -| test.c:592:27:592:27 | (unsigned int)... | 1.0 | -| test.c:592:27:592:32 | ... * ... | 1.1595206119E10 | -| test.c:592:31:592:32 | ip | 1.1595206119E10 | -| test.c:593:21:593:22 | 14 | 1.0 | -| test.c:593:21:593:22 | (unsigned int)... | 1.0 | -| test.c:593:21:593:27 | ... * ... | 1.1595206119E10 | -| test.c:593:26:593:27 | ip | 1.1595206119E10 | -| test.c:594:13:594:63 | (...) | 1.2100392444788552E21 | -| test.c:594:14:594:15 | 14 | 1.0 | -| test.c:594:14:594:15 | (unsigned int)... | 1.0 | -| test.c:594:14:594:20 | ... * ... | 3.4785618357E10 | -| test.c:594:14:594:36 | ... > ... | 1.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 1.2100392444788552E21 | -| test.c:594:19:594:20 | ip | 3.4785618357E10 | -| test.c:594:24:594:31 | (...) | 3.4785618357E10 | -| test.c:594:24:594:36 | ... * ... | 3.4785618357E10 | -| test.c:594:25:594:26 | ip | 3.4785618357E10 | -| test.c:594:25:594:30 | ... + ... | 3.4785618357E10 | -| test.c:594:30:594:30 | 1 | 1.0 | -| test.c:594:30:594:30 | (unsigned int)... | 1.0 | -| test.c:594:35:594:36 | 17 | 1.0 | -| test.c:594:35:594:36 | (unsigned int)... | 1.0 | -| test.c:594:40:594:41 | 17 | 1.0 | -| test.c:594:40:594:41 | (unsigned int)... | 1.0 | -| test.c:594:40:594:46 | ... * ... | 3.4785618357E10 | -| test.c:594:45:594:46 | ip | 3.4785618357E10 | -| test.c:594:50:594:57 | (...) | 3.4785618357E10 | -| test.c:594:50:594:62 | ... * ... | 3.4785618357E10 | -| test.c:594:51:594:52 | ip | 3.4785618357E10 | -| test.c:594:51:594:56 | ... + ... | 3.4785618357E10 | -| test.c:594:56:594:56 | 1 | 1.0 | -| test.c:594:56:594:56 | (unsigned int)... | 1.0 | -| test.c:594:61:594:62 | 17 | 1.0 | -| test.c:594:61:594:62 | (unsigned int)... | 1.0 | -| test.c:595:13:595:13 | 4 | 1.0 | -| test.c:595:13:595:13 | (unsigned int)... | 1.0 | -| test.c:595:13:595:30 | ... * ... | 6.9571236714E10 | -| test.c:595:13:596:30 | ... + ... | 4.840156977915421E21 | -| test.c:595:13:597:30 | ... + ... | 3.3673570684347266E32 | -| test.c:595:13:603:26 | ... + ... | 9.071274901265435E65 | -| test.c:595:17:595:30 | (...) | 6.9571236714E10 | -| test.c:595:18:595:19 | ip | 6.9571236714E10 | -| test.c:595:18:595:24 | ... * ... | 6.9571236714E10 | -| test.c:595:18:595:29 | ... + ... | 6.9571236714E10 | -| test.c:595:23:595:24 | 14 | 1.0 | -| test.c:595:23:595:24 | (unsigned int)... | 1.0 | -| test.c:595:28:595:29 | 32 | 1.0 | -| test.c:595:28:595:29 | (unsigned int)... | 1.0 | -| test.c:596:13:596:30 | (...) | 6.9571236714E10 | -| test.c:596:14:596:14 | 2 | 1.0 | -| test.c:596:14:596:14 | (unsigned int)... | 1.0 | -| test.c:596:14:596:19 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:24 | ... * ... | 6.9571236714E10 | -| test.c:596:14:596:29 | ... + ... | 6.9571236714E10 | -| test.c:596:18:596:19 | ip | 6.9571236714E10 | -| test.c:596:23:596:24 | 14 | 1.0 | -| test.c:596:23:596:24 | (unsigned int)... | 1.0 | -| test.c:596:28:596:29 | 32 | 1.0 | -| test.c:596:28:596:29 | (unsigned int)... | 1.0 | -| test.c:597:13:597:13 | 2 | 1.0 | -| test.c:597:13:597:13 | (unsigned int)... | 1.0 | -| test.c:597:13:597:30 | ... * ... | 6.9571236714E10 | -| test.c:597:17:597:30 | (...) | 6.9571236714E10 | -| test.c:597:18:597:19 | ip | 6.9571236714E10 | -| test.c:597:18:597:24 | ... * ... | 6.9571236714E10 | -| test.c:597:18:597:29 | ... + ... | 6.9571236714E10 | -| test.c:597:23:597:24 | 14 | 1.0 | -| test.c:597:23:597:24 | (unsigned int)... | 1.0 | -| test.c:597:28:597:29 | 64 | 1.0 | -| test.c:597:28:597:29 | (unsigned int)... | 1.0 | -| test.c:598:13:603:26 | (...) | 2.693885654805863E33 | -| test.c:598:14:598:25 | (...) | 6.9571236714E10 | -| test.c:598:14:598:30 | ... * ... | 6.9571236714E10 | -| test.c:598:14:599:63 | ... > ... | 1.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 2.693885654805863E33 | -| test.c:598:15:598:15 | 2 | 1.0 | -| test.c:598:15:598:15 | (unsigned int)... | 1.0 | -| test.c:598:15:598:20 | ... * ... | 6.9571236714E10 | -| test.c:598:15:598:24 | ... + ... | 6.9571236714E10 | -| test.c:598:19:598:20 | ip | 6.9571236714E10 | -| test.c:598:24:598:24 | 1 | 1.0 | -| test.c:598:24:598:24 | (unsigned int)... | 1.0 | -| test.c:598:29:598:30 | 14 | 1.0 | -| test.c:598:29:598:30 | (unsigned int)... | 1.0 | -| test.c:599:13:599:63 | (...) | 4.840156977915421E21 | -| test.c:599:14:599:15 | 14 | 1.0 | -| test.c:599:14:599:15 | (unsigned int)... | 1.0 | -| test.c:599:14:599:26 | ... * ... | 6.9571236714E10 | -| test.c:599:14:599:36 | ... > ... | 1.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:599:19:599:26 | (...) | 6.9571236714E10 | -| test.c:599:20:599:20 | 2 | 1.0 | -| test.c:599:20:599:20 | (unsigned int)... | 1.0 | -| test.c:599:20:599:25 | ... * ... | 6.9571236714E10 | -| test.c:599:24:599:25 | ip | 6.9571236714E10 | -| test.c:599:30:599:31 | 17 | 1.0 | -| test.c:599:30:599:31 | (unsigned int)... | 1.0 | -| test.c:599:30:599:36 | ... * ... | 6.9571236714E10 | -| test.c:599:35:599:36 | ip | 6.9571236714E10 | -| test.c:599:40:599:41 | 17 | 1.0 | -| test.c:599:40:599:41 | (unsigned int)... | 1.0 | -| test.c:599:40:599:52 | ... * ... | 6.9571236714E10 | -| test.c:599:45:599:52 | (...) | 6.9571236714E10 | -| test.c:599:46:599:46 | 2 | 1.0 | -| test.c:599:46:599:46 | (unsigned int)... | 1.0 | -| test.c:599:46:599:51 | ... * ... | 6.9571236714E10 | -| test.c:599:50:599:51 | ip | 6.9571236714E10 | -| test.c:599:56:599:57 | 17 | 1.0 | -| test.c:599:56:599:57 | (unsigned int)... | 1.0 | -| test.c:599:56:599:62 | ... * ... | 6.9571236714E10 | -| test.c:599:61:599:62 | ip | 6.9571236714E10 | -| test.c:600:17:600:28 | (...) | 1.39142473429E11 | -| test.c:600:17:600:33 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:18 | 2 | 1.0 | -| test.c:600:18:600:18 | (unsigned int)... | 1.0 | -| test.c:600:18:600:23 | ... * ... | 1.39142473429E11 | -| test.c:600:18:600:27 | ... + ... | 1.39142473429E11 | -| test.c:600:22:600:23 | ip | 1.39142473429E11 | -| test.c:600:27:600:27 | 1 | 1.0 | -| test.c:600:27:600:27 | (unsigned int)... | 1.0 | -| test.c:600:32:600:33 | 14 | 1.0 | -| test.c:600:32:600:33 | (unsigned int)... | 1.0 | -| test.c:601:17:601:18 | 14 | 1.0 | -| test.c:601:17:601:18 | (unsigned int)... | 1.0 | -| test.c:601:17:601:29 | ... * ... | 1.39142473429E11 | -| test.c:601:17:601:39 | ... > ... | 1.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 1.936062791193997E22 | -| test.c:601:22:601:29 | (...) | 1.39142473429E11 | -| test.c:601:23:601:23 | 2 | 1.0 | -| test.c:601:23:601:23 | (unsigned int)... | 1.0 | -| test.c:601:23:601:28 | ... * ... | 1.39142473429E11 | -| test.c:601:27:601:28 | ip | 1.39142473429E11 | -| test.c:601:33:601:34 | 17 | 1.0 | -| test.c:601:33:601:34 | (unsigned int)... | 1.0 | -| test.c:601:33:601:39 | ... * ... | 1.39142473429E11 | -| test.c:601:38:601:39 | ip | 1.39142473429E11 | -| test.c:602:19:602:20 | 14 | 1.0 | -| test.c:602:19:602:20 | (unsigned int)... | 1.0 | -| test.c:602:19:602:31 | ... * ... | 1.39142473429E11 | -| test.c:602:24:602:31 | (...) | 1.39142473429E11 | -| test.c:602:25:602:25 | 2 | 1.0 | -| test.c:602:25:602:25 | (unsigned int)... | 1.0 | -| test.c:602:25:602:30 | ... * ... | 1.39142473429E11 | -| test.c:602:29:602:30 | ip | 1.39142473429E11 | -| test.c:603:19:603:20 | 14 | 1.0 | -| test.c:603:19:603:20 | (unsigned int)... | 1.0 | -| test.c:603:19:603:25 | ... * ... | 1.39142473429E11 | -| test.c:603:24:603:25 | ip | 1.39142473429E11 | -| test.c:604:13:604:14 | 14 | 1.0 | -| test.c:604:13:604:14 | (unsigned int)... | 1.0 | -| test.c:604:13:604:19 | ... * ... | 6.9571236714E10 | -| test.c:604:13:604:35 | ... > ... | 1.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.840156977915421E21 | -| test.c:604:18:604:19 | ip | 6.9571236714E10 | -| test.c:604:23:604:30 | (...) | 6.9571236714E10 | -| test.c:604:23:604:35 | ... * ... | 6.9571236714E10 | -| test.c:604:24:604:25 | ip | 6.9571236714E10 | -| test.c:604:24:604:29 | ... + ... | 6.9571236714E10 | -| test.c:604:29:604:29 | 1 | 1.0 | -| test.c:604:29:604:29 | (unsigned int)... | 1.0 | -| test.c:604:34:604:35 | 17 | 1.0 | -| test.c:604:34:604:35 | (unsigned int)... | 1.0 | -| test.c:605:15:605:16 | 14 | 1.0 | -| test.c:605:15:605:16 | (unsigned int)... | 1.0 | -| test.c:605:15:605:21 | ... * ... | 6.9571236714E10 | -| test.c:605:20:605:21 | ip | 6.9571236714E10 | -| test.c:606:15:606:22 | (...) | 6.9571236714E10 | -| test.c:606:15:606:27 | ... * ... | 6.9571236714E10 | -| test.c:606:16:606:17 | ip | 6.9571236714E10 | -| test.c:606:16:606:21 | ... + ... | 6.9571236714E10 | -| test.c:606:21:606:21 | 1 | 1.0 | -| test.c:606:21:606:21 | (unsigned int)... | 1.0 | -| test.c:606:26:606:27 | 14 | 1.0 | -| test.c:606:26:606:27 | (unsigned int)... | 1.0 | -| test.c:607:10:607:23 | special_number | 1.297918419127476E201 | -| test.c:614:10:614:11 | 0 | 1.0 | -| test.c:615:7:615:8 | c1 | 1.0 | -| test.c:615:13:615:13 | x | 1.0 | -| test.c:615:13:615:23 | ... += ... | 1.0 | -| test.c:615:18:615:23 | 748596 | 1.0 | -| test.c:616:7:616:8 | c2 | 1.0 | -| test.c:616:13:616:13 | x | 2.0 | -| test.c:616:13:616:25 | ... += ... | 2.0 | -| test.c:616:18:616:25 | 84652395 | 1.0 | -| test.c:617:7:617:8 | c3 | 1.0 | -| test.c:617:13:617:13 | x | 4.0 | -| test.c:617:13:617:24 | ... += ... | 4.0 | -| test.c:617:18:617:24 | 3675895 | 1.0 | -| test.c:618:7:618:8 | c4 | 1.0 | -| test.c:618:13:618:13 | x | 8.0 | -| test.c:618:13:618:22 | ... += ... | 8.0 | -| test.c:618:18:618:22 | 98634 | 1.0 | -| test.c:619:7:619:8 | c5 | 1.0 | -| test.c:619:13:619:13 | x | 16.0 | -| test.c:619:13:619:24 | ... += ... | 16.0 | -| test.c:619:18:619:24 | 7834985 | 1.0 | -| test.c:620:7:620:8 | c1 | 2.0 | -| test.c:620:7:620:14 | ... && ... | 1.0 | -| test.c:620:13:620:14 | c2 | 2.0 | -| test.c:620:19:620:19 | x | 32.0 | -| test.c:620:19:620:32 | ... += ... | 32.0 | -| test.c:620:24:620:32 | 938457398 | 1.0 | -| test.c:621:7:621:8 | c1 | 3.0 | -| test.c:621:7:621:14 | ... && ... | 1.0 | -| test.c:621:13:621:14 | c3 | 2.0 | -| test.c:621:19:621:19 | x | 64.0 | -| test.c:621:19:621:31 | ... += ... | 64.0 | -| test.c:621:24:621:31 | 73895648 | 1.0 | -| test.c:622:7:622:8 | c1 | 4.0 | -| test.c:622:7:622:14 | ... && ... | 1.0 | -| test.c:622:13:622:14 | c4 | 2.0 | -| test.c:622:19:622:19 | x | 128.0 | -| test.c:622:19:622:31 | ... += ... | 128.0 | -| test.c:622:24:622:31 | 12345432 | 1.0 | -| test.c:623:7:623:8 | c1 | 5.0 | -| test.c:623:7:623:14 | ... && ... | 1.0 | -| test.c:623:13:623:14 | c5 | 2.0 | -| test.c:623:19:623:19 | x | 256.0 | -| test.c:623:19:623:28 | ... += ... | 256.0 | -| test.c:623:24:623:28 | 38847 | 1.0 | -| test.c:624:7:624:8 | c2 | 5.0 | -| test.c:624:7:624:14 | ... && ... | 1.0 | -| test.c:624:13:624:14 | c3 | 5.0 | -| test.c:624:19:624:19 | x | 512.0 | -| test.c:624:19:624:26 | ... += ... | 512.0 | -| test.c:624:24:624:26 | 234 | 1.0 | -| test.c:626:11:626:11 | x | 1024.0 | -| test.c:626:11:626:15 | ... + ... | 1048576.0 | -| test.c:626:11:626:19 | ... + ... | 1.073741824E9 | -| test.c:626:11:626:23 | ... + ... | 1.099511627776E12 | -| test.c:626:11:626:27 | ... + ... | 1.125899906842624E15 | -| test.c:626:11:626:31 | ... + ... | 1.152921504606847E18 | -| test.c:626:11:626:35 | ... + ... | 1.1805916207174113E21 | -| test.c:626:11:626:39 | ... + ... | 1.2089258196146292E24 | -| test.c:626:11:626:43 | ... + ... | 1.2379400392853803E27 | -| test.c:626:11:626:47 | ... + ... | 1.2676506002282294E30 | -| test.c:626:11:626:51 | ... + ... | 1.298074214633707E33 | -| test.c:626:11:626:55 | ... + ... | 1.329227995784916E36 | -| test.c:626:15:626:15 | x | 1024.0 | -| test.c:626:19:626:19 | x | 1024.0 | -| test.c:626:23:626:23 | x | 1024.0 | -| test.c:626:27:626:27 | x | 1024.0 | -| test.c:626:31:626:31 | x | 1024.0 | -| test.c:626:35:626:35 | x | 1024.0 | -| test.c:626:39:626:39 | x | 1024.0 | -| test.c:626:43:626:43 | x | 1024.0 | -| test.c:626:47:626:47 | x | 1024.0 | -| test.c:626:51:626:51 | x | 1024.0 | -| test.c:626:55:626:55 | x | 1024.0 | -| test.c:627:10:627:10 | y | 1.329227995784916E36 | -| test.c:632:20:632:20 | x | 1.0 | -| test.c:632:20:632:26 | ... < ... | 1.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 1.0 | -| test.c:632:24:632:26 | 100 | 1.0 | -| test.c:632:24:632:26 | (unsigned int)... | 1.0 | -| test.c:632:30:632:30 | x | 1.0 | -| test.c:632:34:632:36 | 100 | 1.0 | -| test.c:632:34:632:36 | (unsigned int)... | 1.0 | -| test.c:635:3:635:4 | y1 | 1.0 | -| test.c:635:9:635:11 | ++ ... | 1.0 | -| test.c:635:11:635:11 | y | 1.0 | -| test.c:636:3:636:4 | y2 | 1.0 | -| test.c:636:19:636:19 | 3 | 1.0 | -| test.c:636:19:636:19 | (unsigned int)... | 1.0 | -| test.c:645:3:645:3 | i | 1.0 | -| test.c:645:3:645:8 | ... = ... | 1.0 | -| test.c:645:7:645:8 | 10 | 1.0 | -| test.c:646:7:646:7 | i | 1.0 | -| test.c:648:3:648:3 | i | 1.0 | -| test.c:648:3:648:8 | ... = ... | 1.0 | -| test.c:648:7:648:8 | 10 | 1.0 | -| test.c:649:3:649:3 | i | 1.0 | -| test.c:649:3:649:9 | ... += ... | 1.0 | -| test.c:649:8:649:9 | 10 | 1.0 | -| test.c:650:7:650:7 | i | 1.0 | -| test.c:652:3:652:3 | i | 1.0 | -| test.c:652:3:652:8 | ... = ... | 1.0 | -| test.c:652:7:652:8 | 40 | 1.0 | -| test.c:653:3:653:3 | i | 1.0 | -| test.c:653:3:653:9 | ... -= ... | 1.0 | -| test.c:653:8:653:9 | 10 | 1.0 | -| test.c:654:7:654:7 | i | 1.0 | -| test.c:656:3:656:3 | i | 1.0 | -| test.c:656:3:656:12 | ... = ... | 1.0 | -| test.c:656:7:656:7 | j | 1.0 | -| test.c:656:7:656:12 | ... = ... | 1.0 | -| test.c:656:11:656:12 | 40 | 1.0 | -| test.c:657:7:657:7 | i | 1.0 | -| test.c:659:3:659:3 | i | 1.0 | -| test.c:659:3:659:15 | ... = ... | 1.0 | -| test.c:659:7:659:15 | (...) | 1.0 | -| test.c:659:8:659:8 | j | 1.0 | -| test.c:659:8:659:14 | ... += ... | 1.0 | -| test.c:659:13:659:14 | 10 | 1.0 | -| test.c:660:7:660:7 | i | 1.0 | -| test.c:662:3:662:3 | i | 1.0 | -| test.c:662:3:662:20 | ... = ... | 1.0 | -| test.c:662:7:662:8 | 20 | 1.0 | -| test.c:662:7:662:20 | ... + ... | 1.0 | -| test.c:662:12:662:20 | (...) | 1.0 | -| test.c:662:13:662:13 | j | 1.0 | -| test.c:662:13:662:19 | ... -= ... | 1.0 | -| test.c:662:18:662:19 | 10 | 1.0 | -| test.c:663:7:663:7 | i | 1.0 | -| test.c:668:14:668:15 | 0 | 1.0 | -| test.c:670:7:670:7 | 3 | 1.0 | -| test.c:670:7:670:7 | (unsigned int)... | 1.0 | -| test.c:670:7:670:12 | ... <= ... | 1.0 | -| test.c:670:7:670:23 | ... && ... | 1.0 | -| test.c:670:7:670:33 | ... && ... | 1.0 | -| test.c:670:7:670:44 | ... && ... | 1.0 | -| test.c:670:12:670:12 | a | 1.0 | -| test.c:670:17:670:17 | a | 1.0 | -| test.c:670:17:670:23 | ... <= ... | 1.0 | -| test.c:670:22:670:23 | 11 | 1.0 | -| test.c:670:22:670:23 | (unsigned int)... | 1.0 | -| test.c:670:28:670:28 | 5 | 1.0 | -| test.c:670:28:670:28 | (unsigned int)... | 1.0 | -| test.c:670:28:670:33 | ... <= ... | 1.0 | -| test.c:670:33:670:33 | b | 1.0 | -| test.c:670:38:670:38 | b | 1.0 | -| test.c:670:38:670:44 | ... <= ... | 1.0 | -| test.c:670:43:670:44 | 23 | 1.0 | -| test.c:670:43:670:44 | (unsigned int)... | 1.0 | -| test.c:671:13:671:13 | a | 1.0 | -| test.c:671:13:671:15 | (int)... | 1.0 | -| test.c:671:13:671:15 | ... * ... | 1.0 | -| test.c:671:15:671:15 | b | 1.0 | -| test.c:672:5:672:9 | total | 1.0 | -| test.c:672:5:672:14 | ... += ... | 1.0 | -| test.c:672:14:672:14 | r | 1.0 | -| test.c:674:7:674:7 | 3 | 1.0 | -| test.c:674:7:674:7 | (unsigned int)... | 1.0 | -| test.c:674:7:674:12 | ... <= ... | 1.0 | -| test.c:674:7:674:23 | ... && ... | 1.0 | -| test.c:674:7:674:33 | ... && ... | 1.0 | -| test.c:674:7:674:44 | ... && ... | 1.0 | -| test.c:674:12:674:12 | a | 2.0 | -| test.c:674:17:674:17 | a | 2.0 | -| test.c:674:17:674:23 | ... <= ... | 1.0 | -| test.c:674:22:674:23 | 11 | 1.0 | -| test.c:674:22:674:23 | (unsigned int)... | 1.0 | -| test.c:674:28:674:28 | 0 | 1.0 | -| test.c:674:28:674:28 | (unsigned int)... | 1.0 | -| test.c:674:28:674:33 | ... <= ... | 1.0 | -| test.c:674:33:674:33 | b | 3.0 | -| test.c:674:38:674:38 | b | 3.0 | -| test.c:674:38:674:44 | ... <= ... | 1.0 | -| test.c:674:43:674:44 | 23 | 1.0 | -| test.c:674:43:674:44 | (unsigned int)... | 1.0 | -| test.c:675:13:675:13 | a | 2.0 | -| test.c:675:13:675:15 | (int)... | 6.0 | -| test.c:675:13:675:15 | ... * ... | 6.0 | -| test.c:675:15:675:15 | b | 3.0 | -| test.c:676:5:676:9 | total | 2.0 | -| test.c:676:5:676:14 | ... += ... | 12.0 | -| test.c:676:14:676:14 | r | 6.0 | -| test.c:678:7:678:7 | 3 | 1.0 | -| test.c:678:7:678:7 | (unsigned int)... | 1.0 | -| test.c:678:7:678:12 | ... <= ... | 1.0 | -| test.c:678:7:678:23 | ... && ... | 1.0 | -| test.c:678:7:678:34 | ... && ... | 1.0 | -| test.c:678:7:678:45 | ... && ... | 1.0 | -| test.c:678:12:678:12 | a | 3.0 | -| test.c:678:17:678:17 | a | 3.0 | -| test.c:678:17:678:23 | ... <= ... | 1.0 | -| test.c:678:22:678:23 | 11 | 1.0 | -| test.c:678:22:678:23 | (unsigned int)... | 1.0 | -| test.c:678:28:678:29 | 13 | 1.0 | -| test.c:678:28:678:29 | (unsigned int)... | 1.0 | -| test.c:678:28:678:34 | ... <= ... | 1.0 | -| test.c:678:34:678:34 | b | 7.0 | -| test.c:678:39:678:39 | b | 7.0 | -| test.c:678:39:678:45 | ... <= ... | 1.0 | -| test.c:678:44:678:45 | 23 | 1.0 | -| test.c:678:44:678:45 | (unsigned int)... | 1.0 | -| test.c:679:13:679:13 | a | 3.0 | -| test.c:679:13:679:15 | (int)... | 21.0 | -| test.c:679:13:679:15 | ... * ... | 21.0 | -| test.c:679:15:679:15 | b | 7.0 | -| test.c:680:5:680:9 | total | 14.0 | -| test.c:680:5:680:14 | ... += ... | 294.0 | -| test.c:680:14:680:14 | r | 21.0 | -| test.c:683:10:683:14 | total | 308.0 | -| test.c:687:14:687:15 | 0 | 1.0 | -| test.c:689:7:689:7 | 5 | 1.0 | -| test.c:689:7:689:7 | (unsigned int)... | 1.0 | -| test.c:689:7:689:12 | ... <= ... | 1.0 | -| test.c:689:7:689:23 | ... && ... | 1.0 | -| test.c:689:12:689:12 | b | 1.0 | -| test.c:689:17:689:17 | b | 1.0 | -| test.c:689:17:689:23 | ... <= ... | 1.0 | -| test.c:689:22:689:23 | 23 | 1.0 | -| test.c:689:22:689:23 | (unsigned int)... | 1.0 | -| test.c:690:13:690:14 | 11 | 1.0 | -| test.c:690:13:690:14 | (unsigned int)... | 1.0 | -| test.c:690:13:690:16 | (int)... | 1.0 | -| test.c:690:13:690:16 | ... * ... | 1.0 | -| test.c:690:16:690:16 | b | 1.0 | -| test.c:691:5:691:9 | total | 1.0 | -| test.c:691:5:691:14 | ... += ... | 1.0 | -| test.c:691:14:691:14 | r | 1.0 | -| test.c:693:7:693:7 | 0 | 1.0 | -| test.c:693:7:693:7 | (unsigned int)... | 1.0 | -| test.c:693:7:693:12 | ... <= ... | 1.0 | -| test.c:693:7:693:23 | ... && ... | 1.0 | -| test.c:693:12:693:12 | b | 2.0 | -| test.c:693:17:693:17 | b | 2.0 | -| test.c:693:17:693:23 | ... <= ... | 1.0 | -| test.c:693:22:693:23 | 23 | 1.0 | -| test.c:693:22:693:23 | (unsigned int)... | 1.0 | -| test.c:694:13:694:14 | 11 | 1.0 | -| test.c:694:13:694:14 | (unsigned int)... | 1.0 | -| test.c:694:13:694:16 | (int)... | 2.0 | -| test.c:694:13:694:16 | ... * ... | 2.0 | -| test.c:694:16:694:16 | b | 2.0 | -| test.c:695:5:695:9 | total | 2.0 | -| test.c:695:5:695:14 | ... += ... | 4.0 | -| test.c:695:14:695:14 | r | 2.0 | -| test.c:697:7:697:8 | 13 | 1.0 | -| test.c:697:7:697:8 | (unsigned int)... | 1.0 | -| test.c:697:7:697:13 | ... <= ... | 1.0 | -| test.c:697:7:697:24 | ... && ... | 1.0 | -| test.c:697:13:697:13 | b | 3.0 | -| test.c:697:18:697:18 | b | 3.0 | -| test.c:697:18:697:24 | ... <= ... | 1.0 | -| test.c:697:23:697:24 | 23 | 1.0 | -| test.c:697:23:697:24 | (unsigned int)... | 1.0 | -| test.c:698:13:698:14 | 11 | 1.0 | -| test.c:698:13:698:14 | (unsigned int)... | 1.0 | -| test.c:698:13:698:16 | (int)... | 3.0 | -| test.c:698:13:698:16 | ... * ... | 3.0 | -| test.c:698:16:698:16 | b | 3.0 | -| test.c:699:5:699:9 | total | 6.0 | -| test.c:699:5:699:14 | ... += ... | 18.0 | -| test.c:699:14:699:14 | r | 3.0 | -| test.c:702:10:702:14 | total | 24.0 | -| test.c:707:3:707:3 | x | 1.0 | -| test.c:707:3:707:22 | ... = ... | 1.0 | -| test.c:707:7:707:7 | y | 1.0 | -| test.c:707:7:707:22 | ... = ... | 1.0 | -| test.c:707:11:707:22 | 1000000003 | 1.0 | -| test.c:708:3:708:4 | xy | 1.0 | -| test.c:708:3:708:12 | ... = ... | 1.0 | -| test.c:708:8:708:8 | x | 1.0 | -| test.c:708:8:708:12 | ... * ... | 1.0 | -| test.c:708:12:708:12 | y | 1.0 | -| test.c:709:10:709:11 | xy | 1.0 | -| test.c:714:3:714:3 | x | 1.0 | -| test.c:714:3:714:14 | ... = ... | 1.0 | -| test.c:714:7:714:14 | 274177 | 1.0 | -| test.c:715:3:715:3 | y | 1.0 | -| test.c:715:3:715:22 | ... = ... | 1.0 | -| test.c:715:7:715:22 | 67280421310721 | 1.0 | -| test.c:716:3:716:4 | xy | 1.0 | -| test.c:716:3:716:12 | ... = ... | 1.0 | -| test.c:716:8:716:8 | x | 1.0 | -| test.c:716:8:716:12 | ... * ... | 1.0 | -| test.c:716:12:716:12 | y | 1.0 | -| test.c:717:10:717:11 | xy | 1.0 | -| test.c:721:7:721:8 | ui | 1.0 | -| test.c:721:7:721:14 | ... >= ... | 1.0 | -| test.c:721:13:721:14 | 10 | 1.0 | -| test.c:721:13:721:14 | (unsigned int)... | 1.0 | -| test.c:722:28:722:44 | (unsigned long)... | 1.0 | -| test.c:722:28:722:49 | ... * ... | 1.0 | -| test.c:722:43:722:44 | ui | 1.0 | -| test.c:722:48:722:49 | (unsigned long)... | 1.0 | -| test.c:722:48:722:49 | ui | 1.0 | -| test.c:723:12:723:17 | result | 1.0 | -| test.c:725:7:725:8 | ul | 1.0 | -| test.c:725:7:725:14 | ... >= ... | 1.0 | -| test.c:725:13:725:14 | 10 | 1.0 | -| test.c:725:13:725:14 | (unsigned long)... | 1.0 | -| test.c:726:28:726:29 | ul | 1.0 | -| test.c:726:28:726:34 | ... * ... | 1.0 | -| test.c:726:33:726:34 | ul | 1.0 | -| test.c:727:12:727:17 | result | 1.0 | -| test.c:729:10:729:10 | 0 | 1.0 | -| test.c:729:10:729:10 | (unsigned long)... | 1.0 | -| test.c:733:7:733:8 | ui | 1.0 | -| test.c:733:7:733:14 | ... <= ... | 1.0 | -| test.c:733:7:733:25 | ... && ... | 1.0 | -| test.c:733:13:733:14 | 10 | 1.0 | -| test.c:733:13:733:14 | (unsigned int)... | 1.0 | -| test.c:733:19:733:20 | ui | 1.0 | -| test.c:733:19:733:25 | ... >= ... | 1.0 | -| test.c:733:25:733:25 | 2 | 1.0 | -| test.c:733:25:733:25 | (unsigned int)... | 1.0 | -| test.c:734:5:734:6 | ui | 1.0 | -| test.c:734:5:734:16 | ... *= ... | 1.0 | -| test.c:734:11:734:12 | ui | 1.0 | -| test.c:734:11:734:16 | ... + ... | 1.0 | -| test.c:734:16:734:16 | 0 | 1.0 | -| test.c:734:16:734:16 | (unsigned int)... | 1.0 | -| test.c:735:12:735:13 | (unsigned long)... | 1.0 | -| test.c:735:12:735:13 | ui | 1.0 | -| test.c:738:26:738:27 | 10 | 1.0 | -| test.c:738:26:738:27 | (unsigned int)... | 1.0 | -| test.c:739:3:739:9 | uiconst | 1.0 | -| test.c:739:3:739:14 | ... *= ... | 1.0 | -| test.c:739:14:739:14 | 4 | 1.0 | -| test.c:739:14:739:14 | (unsigned int)... | 1.0 | -| test.c:741:27:741:28 | 10 | 1.0 | -| test.c:741:27:741:28 | (unsigned long)... | 1.0 | -| test.c:742:3:742:9 | ulconst | 1.0 | -| test.c:742:3:742:14 | ... *= ... | 1.0 | -| test.c:742:14:742:14 | 4 | 1.0 | -| test.c:742:14:742:14 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | (unsigned long)... | 1.0 | -| test.c:743:10:743:16 | uiconst | 1.0 | -| test.c:743:10:743:26 | ... + ... | 1.0 | -| test.c:743:20:743:26 | ulconst | 1.0 | -| test.c:747:7:747:7 | i | 1.0 | -| test.c:747:7:747:13 | ... >= ... | 1.0 | -| test.c:747:7:747:23 | ... && ... | 1.0 | -| test.c:747:12:747:13 | - ... | 1.0 | -| test.c:747:13:747:13 | 1 | 1.0 | -| test.c:747:18:747:18 | i | 1.0 | -| test.c:747:18:747:23 | ... <= ... | 1.0 | -| test.c:747:23:747:23 | 2 | 1.0 | -| test.c:748:5:748:5 | i | 1.0 | -| test.c:748:5:748:13 | ... = ... | 1.0 | -| test.c:748:9:748:9 | 5 | 1.0 | -| test.c:748:9:748:13 | ... * ... | 1.0 | -| test.c:748:13:748:13 | i | 1.0 | -| test.c:749:9:749:9 | i | 1.0 | -| test.c:751:5:751:5 | i | 1.0 | -| test.c:751:5:751:14 | ... = ... | 1.0 | -| test.c:751:9:751:9 | i | 1.0 | -| test.c:751:9:751:14 | ... * ... | 1.0 | -| test.c:751:13:751:14 | - ... | 1.0 | -| test.c:751:14:751:14 | 3 | 1.0 | -| test.c:752:9:752:9 | i | 1.0 | -| test.c:754:5:754:5 | i | 1.0 | -| test.c:754:5:754:10 | ... *= ... | 1.0 | -| test.c:754:10:754:10 | 7 | 1.0 | -| test.c:755:9:755:9 | i | 1.0 | -| test.c:757:5:757:5 | i | 1.0 | -| test.c:757:5:757:12 | ... *= ... | 1.0 | -| test.c:757:10:757:12 | - ... | 1.0 | -| test.c:757:11:757:12 | 11 | 1.0 | -| test.c:758:9:758:9 | i | 1.0 | -| test.c:760:7:760:7 | i | 2.0 | -| test.c:760:7:760:13 | ... == ... | 1.0 | -| test.c:760:12:760:13 | - ... | 1.0 | -| test.c:760:13:760:13 | 1 | 1.0 | -| test.c:761:5:761:5 | i | 1.0 | -| test.c:761:5:761:27 | ... = ... | 2.0 | -| test.c:761:9:761:9 | i | 2.0 | -| test.c:761:9:761:27 | ... * ... | 2.0 | -| test.c:761:13:761:27 | (int)... | 1.0 | -| test.c:761:18:761:27 | 4294967295 | 1.0 | -| test.c:762:9:762:9 | i | 2.0 | -| test.c:764:3:764:3 | i | 1.0 | -| test.c:764:3:764:12 | ... = ... | 4.0 | -| test.c:764:7:764:7 | i | 4.0 | -| test.c:764:7:764:12 | ... * ... | 4.0 | -| test.c:764:11:764:12 | - ... | 1.0 | -| test.c:764:12:764:12 | 1 | 1.0 | -| test.c:765:10:765:10 | i | 4.0 | -| test.c:767:20:767:20 | 1 | 1.0 | -| test.c:767:20:767:20 | (signed char)... | 1.0 | -| test.c:768:3:768:3 | i | 1.0 | -| test.c:768:3:768:17 | ... = ... | 1.0 | -| test.c:768:7:768:17 | (...) | 1.0 | -| test.c:768:7:768:17 | (int)... | 1.0 | -| test.c:768:8:768:11 | * ... | 1.0 | -| test.c:768:8:768:16 | ... *= ... | 1.0 | -| test.c:768:10:768:11 | sc | 1.0 | -| test.c:768:16:768:16 | 2 | 1.0 | -| test.c:770:7:770:7 | i | 1.0 | -| test.c:772:10:772:10 | 0 | 1.0 | -| test.c:777:7:777:7 | (int)... | 1.0 | -| test.c:777:7:777:7 | n | 1.0 | -| test.c:779:7:779:7 | n | 1.0 | -| test.c:779:7:779:11 | ... > ... | 1.0 | -| test.c:779:11:779:11 | 0 | 1.0 | -| test.c:779:11:779:11 | (unsigned int)... | 1.0 | -| test.c:780:9:780:9 | (int)... | 1.0 | -| test.c:780:9:780:9 | n | 1.0 | -| test.c:783:7:783:7 | n | 2.0 | -| test.c:783:7:783:12 | ... != ... | 1.0 | -| test.c:783:12:783:12 | 0 | 1.0 | -| test.c:783:12:783:12 | (unsigned int)... | 1.0 | -| test.c:784:9:784:9 | (int)... | 2.0 | -| test.c:784:9:784:9 | n | 2.0 | -| test.c:786:9:786:9 | (int)... | 2.0 | -| test.c:786:9:786:9 | n | 2.0 | -| test.c:789:7:789:8 | ! ... | 1.0 | -| test.c:789:8:789:8 | n | 4.0 | -| test.c:790:9:790:9 | (int)... | 4.0 | -| test.c:790:9:790:9 | n | 4.0 | -| test.c:792:9:792:9 | (int)... | 4.0 | -| test.c:792:9:792:9 | n | 4.0 | -| test.c:795:10:795:10 | n | 13.0 | -| test.c:795:10:795:15 | ... != ... | 1.0 | -| test.c:795:15:795:15 | 0 | 1.0 | -| test.c:795:15:795:15 | (unsigned int)... | 1.0 | -| test.c:796:5:796:5 | n | 13.0 | -| test.c:796:5:796:7 | ... -- | 13.0 | -| test.c:799:7:799:7 | (int)... | 13.0 | -| test.c:799:7:799:7 | n | 13.0 | -| test.c:803:7:803:7 | (int)... | 1.0 | -| test.c:803:7:803:7 | n | 1.0 | -| test.c:803:7:803:11 | ... < ... | 1.0 | -| test.c:803:11:803:11 | 0 | 1.0 | -| test.c:806:7:806:7 | (int)... | 1.0 | -| test.c:806:7:806:7 | n | 1.0 | -| test.c:806:7:806:12 | ... == ... | 1.0 | -| test.c:806:12:806:12 | 0 | 1.0 | -| test.c:807:9:807:9 | (int)... | 1.0 | -| test.c:807:9:807:9 | n | 1.0 | -| test.c:809:9:809:9 | (int)... | 1.0 | -| test.c:809:9:809:9 | n | 1.0 | -| test.c:812:7:812:7 | n | 2.0 | -| test.c:813:9:813:9 | (int)... | 2.0 | -| test.c:813:9:813:9 | n | 2.0 | -| test.c:815:9:815:9 | (int)... | 2.0 | -| test.c:815:9:815:9 | n | 2.0 | -| test.c:818:10:818:10 | (int)... | 13.0 | -| test.c:818:10:818:10 | n | 12.0 | -| test.c:818:10:818:15 | ... != ... | 1.0 | -| test.c:818:15:818:15 | 0 | 1.0 | -| test.c:819:5:819:5 | n | 12.0 | -| test.c:819:5:819:7 | ... -- | 12.0 | -| test.c:822:7:822:7 | (int)... | 12.0 | -| test.c:822:7:822:7 | n | 12.0 | -| test.c:826:7:826:7 | (int)... | 1.0 | -| test.c:826:7:826:7 | n | 1.0 | -| test.c:826:7:826:12 | ... != ... | 1.0 | -| test.c:826:12:826:12 | 0 | 1.0 | -| test.c:827:9:827:9 | (int)... | 1.0 | -| test.c:827:9:827:9 | n | 1.0 | -| test.c:827:9:827:14 | ... >= ... | 1.0 | -| test.c:827:14:827:14 | 0 | 1.0 | -| test.c:828:11:828:11 | (int)... | 1.0 | -| test.c:828:11:828:11 | n | 1.0 | -| test.c:832:7:832:7 | (int)... | 2.0 | -| test.c:832:7:832:7 | n | 2.0 | -| test.c:832:7:832:12 | ... >= ... | 1.0 | -| test.c:832:12:832:12 | 5 | 1.0 | -| test.c:833:9:833:9 | 2 | 1.0 | -| test.c:833:9:833:13 | ... * ... | 2.0 | -| test.c:833:9:833:18 | ... - ... | 2.0 | -| test.c:833:9:833:23 | ... == ... | 1.0 | -| test.c:833:13:833:13 | (int)... | 2.0 | -| test.c:833:13:833:13 | n | 2.0 | -| test.c:833:17:833:18 | 10 | 1.0 | -| test.c:833:23:833:23 | 0 | 1.0 | -| test.c:836:9:836:9 | (int)... | 2.0 | -| test.c:836:9:836:9 | n | 2.0 | -| test.c:839:7:839:7 | (int)... | 3.0 | -| test.c:839:7:839:7 | n | 3.0 | -| test.c:839:7:839:17 | ... != ... | 1.0 | -| test.c:839:7:839:32 | ... && ... | 1.0 | -| test.c:839:12:839:17 | - ... | 1.0 | -| test.c:839:13:839:17 | 32768 | 1.0 | -| test.c:839:22:839:22 | (int)... | 3.0 | -| test.c:839:22:839:22 | n | 3.0 | -| test.c:839:22:839:32 | ... != ... | 1.0 | -| test.c:839:27:839:32 | - ... | 1.0 | -| test.c:839:28:839:32 | 32767 | 1.0 | -| test.c:840:9:840:9 | (int)... | 3.0 | -| test.c:840:9:840:9 | n | 3.0 | -| test.c:843:7:843:7 | (int)... | 4.0 | -| test.c:843:7:843:7 | n | 4.0 | -| test.c:843:7:843:12 | ... >= ... | 1.0 | -| test.c:843:12:843:12 | 0 | 1.0 | -| test.c:844:5:844:5 | n | 4.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 16.0 | -| test.c:844:10:844:10 | (int)... | 4.0 | -| test.c:844:10:844:10 | n | 4.0 | -| test.c:844:14:844:14 | (int)... | 4.0 | -| test.c:844:14:844:14 | n | 4.0 | -| test.c:845:5:845:6 | ! ... | 1.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 64.0 | -| test.c:845:6:845:6 | n | 8.0 | -| test.c:845:10:845:10 | (int)... | 8.0 | -| test.c:845:10:845:10 | n | 8.0 | -| test.c:845:14:845:14 | (int)... | 8.0 | -| test.c:845:14:845:14 | n | 8.0 | -| test.c:856:7:856:8 | (unsigned long)... | 1.0 | -| test.c:856:7:856:8 | ss | 1.0 | -| test.c:856:7:856:22 | ... < ... | 1.0 | -| test.c:856:12:856:22 | sizeof(int) | 1.0 | -| test.c:857:9:857:10 | (int)... | 1.0 | -| test.c:857:9:857:10 | ss | 1.0 | -| test.c:860:7:860:8 | (int)... | 2.0 | -| test.c:860:7:860:8 | ss | 2.0 | -| test.c:860:7:860:17 | ... < ... | 1.0 | -| test.c:860:12:860:17 | 32769 | 1.0 | -| test.c:861:9:861:10 | (int)... | 2.0 | -| test.c:861:9:861:10 | ss | 2.0 | -| test.c:864:7:864:15 | (int)... | 1.0 | -| test.c:864:7:864:15 | (short)... | 1.0 | -| test.c:864:7:864:20 | ... >= ... | 1.0 | -| test.c:864:14:864:15 | us | 1.0 | -| test.c:864:20:864:20 | 0 | 1.0 | -| test.c:865:9:865:10 | (int)... | 1.0 | -| test.c:865:9:865:10 | us | 1.0 | -| test.c:868:7:868:15 | (int)... | 2.0 | -| test.c:868:7:868:15 | (short)... | 2.0 | -| test.c:868:7:868:21 | ... >= ... | 1.0 | -| test.c:868:14:868:15 | us | 2.0 | -| test.c:868:20:868:21 | - ... | 1.0 | -| test.c:868:21:868:21 | 1 | 1.0 | -| test.c:869:9:869:10 | (int)... | 2.0 | -| test.c:869:9:869:10 | us | 2.0 | -| test.c:872:7:872:8 | (unsigned long)... | 3.0 | -| test.c:872:7:872:8 | ss | 3.0 | -| test.c:872:7:872:23 | ... >= ... | 1.0 | -| test.c:872:13:872:23 | sizeof(int) | 1.0 | -| test.c:873:9:873:10 | (int)... | 3.0 | -| test.c:873:9:873:10 | ss | 3.0 | -| test.c:876:7:876:8 | (int)... | 4.0 | -| test.c:876:7:876:8 | ss | 4.0 | -| test.c:876:7:876:12 | (unsigned long)... | 4.0 | -| test.c:876:7:876:12 | ... + ... | 4.0 | -| test.c:876:7:876:26 | ... < ... | 1.0 | -| test.c:876:12:876:12 | 1 | 1.0 | -| test.c:876:16:876:26 | sizeof(int) | 1.0 | -| test.c:877:9:877:10 | (int)... | 4.0 | -| test.c:877:9:877:10 | ss | 4.0 | -| test.c:883:8:883:8 | s | 1.0 | -| test.c:883:8:883:12 | ... = ... | 1.0 | -| test.c:883:12:883:12 | 0 | 1.0 | -| test.c:883:15:883:15 | s | 13.0 | -| test.c:883:15:883:20 | ... < ... | 1.0 | -| test.c:883:19:883:20 | 10 | 1.0 | -| test.c:883:23:883:23 | s | 13.0 | -| test.c:883:23:883:25 | ... ++ | 13.0 | -| test.c:884:18:884:18 | s | 13.0 | -| test.c:884:18:884:22 | ... + ... | 13.0 | -| test.c:884:22:884:22 | s | 13.0 | -| test.c:885:9:885:14 | result | 13.0 | -| test.c:890:10:890:11 | 0 | 1.0 | -| test.c:891:7:891:7 | i | 1.0 | -| test.c:891:7:891:11 | ... < ... | 1.0 | -| test.c:891:11:891:11 | 0 | 1.0 | -| test.c:892:9:892:9 | i | 1.0 | -| test.c:895:20:895:20 | 0 | 1.0 | -| test.c:895:20:895:20 | (unsigned int)... | 1.0 | -| test.c:896:7:896:7 | u | 1.0 | -| test.c:896:7:896:11 | ... < ... | 1.0 | -| test.c:896:11:896:11 | 0 | 1.0 | -| test.c:896:11:896:11 | (unsigned int)... | 1.0 | -| test.c:897:9:897:9 | (int)... | 1.0 | -| test.c:897:9:897:9 | u | 1.0 | -| test.c:902:12:902:12 | s | 1.0 | -| test.c:902:12:902:16 | ... % ... | 1.0 | -| test.c:902:16:902:16 | 5 | 1.0 | -| test.c:903:7:903:8 | s2 | 1.0 | -| test.c:908:7:908:7 | x | 1.0 | -| test.c:909:9:909:9 | y | 1.0 | -| test.c:909:9:909:14 | ... != ... | 1.0 | -| test.c:909:14:909:14 | 0 | 1.0 | -| test.c:910:12:910:12 | 0 | 1.0 | -| test.c:913:7:913:7 | y | 2.0 | -| test.c:922:7:922:7 | x | 1.0 | -| test.c:922:7:922:13 | ... >= ... | 1.0 | -| test.c:922:12:922:13 | 10 | 1.0 | -| test.c:927:7:927:7 | x | 13.0 | -| test.c:932:16:932:26 | 2147483647 | 1.0 | -| test.c:933:16:933:19 | 256 | 1.0 | -| test.c:934:7:934:13 | (...) | 1.0 | -| test.c:934:7:934:20 | ... <= ... | 1.0 | -| test.c:934:8:934:8 | x | 1.0 | -| test.c:934:8:934:12 | ... + ... | 1.0 | -| test.c:934:12:934:12 | y | 1.0 | -| test.c:934:18:934:20 | 512 | 1.0 | -| test.c:935:9:935:9 | x | 1.0 | -| test.c:936:9:936:9 | y | 1.0 | -| test.cpp:9:11:9:12 | - ... | 1.0 | -| test.cpp:9:12:9:12 | 1 | 1.0 | -| test.cpp:10:7:10:7 | (bool)... | 1.0 | -| test.cpp:10:7:10:7 | b | 1.0 | -| test.cpp:11:5:11:5 | x | 1.0 | -| test.cpp:11:5:11:14 | ... = ... | 1.0 | -| test.cpp:11:12:11:12 | call to operator[] | 1.0 | -| test.cpp:11:12:11:14 | (reference dereference) | 1.0 | -| test.cpp:11:13:11:13 | 3 | 1.0 | -| test.cpp:13:10:13:10 | x | 2.0 | -| test.cpp:18:12:18:31 | (int)... | 1.0 | -| test.cpp:18:12:18:31 | static_cast... | 1.0 | -| test.cpp:18:30:18:30 | x | 1.0 | -| test.cpp:19:10:19:11 | x0 | 1.0 | -| test.cpp:27:7:27:7 | y | 1.0 | -| test.cpp:27:7:27:12 | ... == ... | 1.0 | -| test.cpp:27:12:27:12 | 0 | 1.0 | -| test.cpp:28:5:28:5 | x | 1.0 | -| test.cpp:28:5:28:9 | ... = ... | 1.0 | -| test.cpp:28:9:28:9 | 0 | 1.0 | -| test.cpp:30:7:30:7 | y | 2.0 | -| test.cpp:30:7:30:13 | ... == ... | 1.0 | -| test.cpp:30:12:30:13 | - ... | 1.0 | -| test.cpp:30:13:30:13 | 1 | 1.0 | -| test.cpp:31:5:31:5 | x | 1.0 | -| test.cpp:31:5:31:10 | ... = ... | 1.0 | -| test.cpp:31:9:31:10 | - ... | 1.0 | -| test.cpp:31:10:31:10 | 1 | 1.0 | -| test.cpp:33:7:33:7 | y | 4.0 | -| test.cpp:33:7:33:12 | ... == ... | 1.0 | -| test.cpp:33:12:33:12 | 1 | 1.0 | -| test.cpp:34:5:34:5 | x | 1.0 | -| test.cpp:34:5:34:9 | ... = ... | 1.0 | -| test.cpp:34:9:34:9 | 1 | 1.0 | -| test.cpp:36:7:36:7 | y | 8.0 | -| test.cpp:36:7:36:15 | ... == ... | 1.0 | -| test.cpp:36:12:36:15 | - ... | 1.0 | -| test.cpp:36:13:36:15 | 128 | 1.0 | -| test.cpp:37:5:37:5 | x | 1.0 | -| test.cpp:37:5:37:12 | ... = ... | 1.0 | -| test.cpp:37:9:37:12 | - ... | 1.0 | -| test.cpp:37:10:37:12 | 128 | 1.0 | -| test.cpp:39:7:39:7 | y | 16.0 | -| test.cpp:39:7:39:14 | ... == ... | 1.0 | -| test.cpp:39:12:39:14 | 128 | 1.0 | -| test.cpp:40:5:40:5 | x | 1.0 | -| test.cpp:40:5:40:11 | ... = ... | 1.0 | -| test.cpp:40:9:40:11 | 128 | 1.0 | -| test.cpp:42:7:42:7 | y | 32.0 | -| test.cpp:42:7:42:16 | ... == ... | 1.0 | -| test.cpp:42:12:42:16 | - ... | 1.0 | -| test.cpp:42:13:42:16 | 1024 | 1.0 | -| test.cpp:43:5:43:5 | x | 1.0 | -| test.cpp:43:5:43:13 | ... = ... | 1.0 | -| test.cpp:43:9:43:13 | - ... | 1.0 | -| test.cpp:43:10:43:13 | 1024 | 1.0 | -| test.cpp:45:7:45:7 | y | 64.0 | -| test.cpp:45:7:45:15 | ... == ... | 1.0 | -| test.cpp:45:12:45:15 | 1024 | 1.0 | -| test.cpp:46:5:46:5 | x | 1.0 | -| test.cpp:46:5:46:12 | ... = ... | 1.0 | -| test.cpp:46:9:46:12 | 1024 | 1.0 | -| test.cpp:49:10:49:11 | 0 | 1.0 | -| test.cpp:51:7:51:7 | x | 8.0 | -| test.cpp:51:7:51:12 | ... == ... | 1.0 | -| test.cpp:51:12:51:12 | 0 | 1.0 | -| test.cpp:52:15:52:21 | (bool)... | 1.0 | -| test.cpp:52:21:52:21 | x | 8.0 | -| test.cpp:53:5:53:5 | t | 1.0 | -| test.cpp:53:5:53:16 | ... += ... | 8.0 | -| test.cpp:53:10:53:16 | (int)... | 8.0 | -| test.cpp:53:15:53:16 | xb | 8.0 | -| test.cpp:56:7:56:7 | x | 16.0 | -| test.cpp:56:7:56:11 | ... > ... | 1.0 | -| test.cpp:56:11:56:11 | 0 | 1.0 | -| test.cpp:57:15:57:21 | (bool)... | 1.0 | -| test.cpp:57:21:57:21 | x | 16.0 | -| test.cpp:58:5:58:5 | t | 9.0 | -| test.cpp:58:5:58:16 | ... += ... | 144.0 | -| test.cpp:58:10:58:16 | (int)... | 16.0 | -| test.cpp:58:15:58:16 | xb | 16.0 | -| test.cpp:61:7:61:7 | x | 17.0 | -| test.cpp:61:7:61:11 | ... < ... | 1.0 | -| test.cpp:61:11:61:11 | 0 | 1.0 | -| test.cpp:62:15:62:21 | (bool)... | 1.0 | -| test.cpp:62:21:62:21 | x | 17.0 | -| test.cpp:63:5:63:5 | t | 153.0 | -| test.cpp:63:5:63:16 | ... += ... | 2601.0 | -| test.cpp:63:10:63:16 | (int)... | 17.0 | -| test.cpp:63:15:63:16 | xb | 17.0 | -| test.cpp:66:13:66:19 | (bool)... | 1.0 | -| test.cpp:66:19:66:19 | x | 18.0 | -| test.cpp:67:3:67:3 | t | 2754.0 | -| test.cpp:67:3:67:14 | ... += ... | 49572.0 | -| test.cpp:67:8:67:14 | (int)... | 18.0 | -| test.cpp:67:13:67:14 | xb | 18.0 | -| test.cpp:69:10:69:10 | b | 1.0 | -| test.cpp:69:10:69:21 | ... \|\| ... | 1.0 | -| test.cpp:69:15:69:21 | (bool)... | 1.0 | -| test.cpp:69:21:69:21 | t | 49572.0 | -| test.cpp:74:30:74:30 | (int)... | 1.0 | -| test.cpp:74:30:74:30 | c | 1.0 | -| test.cpp:74:30:74:34 | (unsigned short)... | 1.0 | -| test.cpp:74:30:74:34 | ... + ... | 1.0 | -| test.cpp:74:34:74:34 | (int)... | 1.0 | -| test.cpp:74:34:74:34 | c | 1.0 | -| test.cpp:75:7:75:30 | (int)... | 1.0 | -| test.cpp:75:7:75:30 | (unsigned char)... | 1.0 | -| test.cpp:75:7:75:35 | ... == ... | 1.0 | -| test.cpp:75:22:75:30 | c_times_2 | 1.0 | -| test.cpp:75:35:75:35 | 0 | 1.0 | -| test.cpp:77:5:77:13 | c_times_2 | 1.0 | -| test.cpp:79:3:79:11 | c_times_2 | 1.0 | -| test.cpp:83:16:83:22 | (reference dereference) | 1.0 | -| test.cpp:83:16:83:22 | (reference to) | 1.0 | -| test.cpp:83:16:83:22 | aliased | 1.0 | -| test.cpp:85:7:85:7 | (reference dereference) | 1.0 | -| test.cpp:85:7:85:7 | i | 1.0 | -| test.cpp:85:7:85:12 | ... >= ... | 1.0 | -| test.cpp:85:12:85:12 | 2 | 1.0 | -| test.cpp:86:12:86:12 | (reference dereference) | 1.0 | -| test.cpp:86:12:86:12 | i | 1.0 | -| test.cpp:88:7:88:8 | (reference dereference) | 1.0 | -| test.cpp:88:7:88:8 | ci | 1.0 | -| test.cpp:88:7:88:13 | ... >= ... | 1.0 | -| test.cpp:88:13:88:13 | 2 | 1.0 | -| test.cpp:89:12:89:13 | (reference dereference) | 1.0 | -| test.cpp:89:12:89:13 | ci | 1.0 | -| test.cpp:91:7:91:13 | (reference dereference) | 1.0 | -| test.cpp:91:7:91:13 | aliased | 1.0 | -| test.cpp:91:7:91:18 | ... >= ... | 1.0 | -| test.cpp:91:18:91:18 | 2 | 1.0 | -| test.cpp:92:12:92:18 | (reference dereference) | 1.0 | -| test.cpp:92:12:92:18 | aliased | 1.0 | -| test.cpp:94:7:94:11 | (reference dereference) | 1.0 | -| test.cpp:94:7:94:11 | alias | 1.0 | -| test.cpp:94:7:94:16 | ... >= ... | 1.0 | -| test.cpp:94:16:94:16 | 2 | 1.0 | -| test.cpp:95:12:95:16 | (reference dereference) | 1.0 | -| test.cpp:95:12:95:16 | alias | 1.0 | -| test.cpp:97:10:97:10 | (reference dereference) | 13.0 | -| test.cpp:97:10:97:19 | ... <= ... | 1.0 | -| test.cpp:97:15:97:19 | 12345 | 1.0 | -| test.cpp:97:22:97:22 | (reference dereference) | 13.0 | -| test.cpp:97:22:97:24 | ... ++ | 13.0 | -| test.cpp:98:5:98:5 | (reference dereference) | 1.0 | -| test.cpp:98:5:98:5 | i | 1.0 | -| test.cpp:98:5:98:9 | ... = ... | 13.0 | -| test.cpp:98:9:98:9 | (reference dereference) | 13.0 | -| test.cpp:99:5:99:5 | (reference dereference) | 13.0 | -| test.cpp:102:10:102:10 | 0 | 1.0 | -| test.cpp:106:7:106:7 | (int)... | 1.0 | -| test.cpp:106:7:106:7 | n | 1.0 | -| test.cpp:106:7:106:11 | ... < ... | 1.0 | -| test.cpp:106:11:106:11 | 0 | 1.0 | -| test.cpp:109:7:109:7 | (bool)... | 1.0 | -| test.cpp:109:7:109:7 | n | 1.0 | -| test.cpp:110:5:110:5 | n | 1.0 | -| test.cpp:112:5:112:5 | n | 1.0 | -| test.cpp:115:7:115:8 | ! ... | 1.0 | -| test.cpp:115:8:115:8 | (bool)... | 1.0 | -| test.cpp:115:8:115:8 | n | 2.0 | -| test.cpp:116:5:116:5 | n | 2.0 | -| test.cpp:118:5:118:5 | n | 2.0 | -| test.cpp:121:3:121:3 | (bool)... | 1.0 | -| test.cpp:121:3:121:3 | n | 4.0 | -| test.cpp:121:3:121:12 | ... ? ... : ... | 16.0 | -| test.cpp:121:8:121:8 | n | 4.0 | -| test.cpp:121:12:121:12 | n | 4.0 | -| test.cpp:122:3:122:4 | ! ... | 1.0 | -| test.cpp:122:3:122:12 | ... ? ... : ... | 64.0 | -| test.cpp:122:4:122:4 | (bool)... | 1.0 | -| test.cpp:122:4:122:4 | n | 8.0 | -| test.cpp:122:8:122:8 | n | 8.0 | -| test.cpp:122:12:122:12 | n | 8.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql deleted file mode 100644 index ec82c44ef825..000000000000 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.ql +++ /dev/null @@ -1,5 +0,0 @@ -import cpp -import semmle.code.cpp.rangeanalysis.SimpleRangeAnalysis - -from Expr e -select e, SimpleRangeAnalysisInternal::estimateNrOfBounds(e) diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected index 1d0415e7a786..0cd2437e0730 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryLower.expected @@ -72,77 +72,8 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.13204114 | 0.42186276 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.42186276 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:432:5:434:49 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:435:6:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:436:8:454:41 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:10:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:439:31:439:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:441:13:443:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:448:12:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:449:12:449:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:451:15:453:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:455:6:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:8:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:458:29:458:77 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:460:11:462:19 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:463:6:463:54 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:10:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:467:31:467:79 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:469:13:471:21 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:472:9:474:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:476:10:495:43 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:479:12:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:480:12:480:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:482:15:484:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:489:14:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:490:14:490:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:492:17:494:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:496:9:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:499:14:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:500:14:500:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:502:17:504:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:505:12:505:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:509:12:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:510:12:510:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:512:15:514:23 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:515:11:517:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:518:9:520:51 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:521:9:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:522:14:541:47 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:525:16:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:526:16:526:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:528:19:530:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:535:18:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:536:18:536:66 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:538:21:540:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:542:12:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:545:14:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:546:14:546:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:548:17:550:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:551:12:551:60 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:555:16:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:556:16:556:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:558:19:560:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:561:15:563:29 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:565:12:584:45 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:568:14:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:569:14:569:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:571:17:573:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:578:16:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:579:16:579:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:581:19:583:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:585:11:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:588:16:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:589:16:589:64 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:591:19:593:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:594:14:594:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:598:14:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:599:14:599:62 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:601:17:603:25 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:604:13:606:27 | ... ? ... : ... | 0.0 | 0.0 | 0.0 | -| test.c:632:20:632:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | +| test.c:418:20:418:36 | ... ? ... : ... | 0.0 | 0.0 | 100.0 | +| test.c:630:5:630:14 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | +| test.c:631:5:631:14 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 0.0 | 1.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 0.0 | 0.0 | 1.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected index 4e7d05d9c089..b34beda10d42 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/ternaryUpper.expected @@ -72,77 +72,8 @@ | test.c:405:22:405:82 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.13204114 | | test.c:405:26:405:69 | ... ? ... : ... | 0.53843358 | 0.53843358 | 0.44996679 | | test.c:405:30:405:56 | ... ? ... : ... | 0.53843358 | 0.42186276 | 0.53843358 | -| test.c:432:4:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:432:5:434:49 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:435:6:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:436:8:454:41 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:10:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:439:31:439:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:441:13:443:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:448:12:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:449:12:449:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:451:15:453:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:455:6:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:8:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:458:29:458:77 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:460:11:462:19 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:463:6:463:54 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:10:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:467:31:467:79 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:469:13:471:21 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:472:9:474:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:476:10:495:43 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:479:12:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:480:12:480:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:482:15:484:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:489:14:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:490:14:490:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:492:17:494:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:496:9:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:499:14:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:500:14:500:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:502:17:504:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:505:12:505:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:509:12:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:510:12:510:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:512:15:514:23 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:515:11:517:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:518:9:520:51 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:521:9:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:522:14:541:47 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:525:16:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:526:16:526:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:528:19:530:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:535:18:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:536:18:536:66 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:538:21:540:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:542:12:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:545:14:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:546:14:546:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:548:17:550:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:551:12:551:60 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:555:16:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:556:16:556:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:558:19:560:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:561:15:563:29 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:565:12:584:45 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:568:14:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:569:14:569:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:571:17:573:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:578:16:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:579:16:579:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:581:19:583:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:585:11:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:588:16:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:589:16:589:64 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:591:19:593:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:594:14:594:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:598:14:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:599:14:599:62 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:601:17:603:25 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:604:13:606:27 | ... ? ... : ... | 4.294967295E9 | 4.294967295E9 | 4.294967295E9 | -| test.c:632:20:632:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | -| test.c:844:5:844:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | -| test.c:845:5:845:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | +| test.c:418:20:418:36 | ... ? ... : ... | 100.0 | 99.0 | 100.0 | +| test.c:630:5:630:14 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | +| test.c:631:5:631:14 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | | test.cpp:121:3:121:12 | ... ? ... : ... | 32767.0 | 32767.0 | 0.0 | | test.cpp:122:3:122:12 | ... ? ... : ... | 32767.0 | 0.0 | 32767.0 | diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c index c161dcdbb058..26e6a49e6f64 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/test.c @@ -413,220 +413,6 @@ double test_ternary_nested_of_literals(double m, double n, double o, double p, d return output; } -int repeated_if_statements(unsigned int rhs) { - // Test how many bounds we estimate for `if` statements without `else` - // branches where the following node is both a normal phi node and a guard phi - // node. - if (rhs < 12) { rhs << 1; } - if (rhs < 13) { rhs << 1; } - if (rhs < 14) { rhs << 1; } - if (rhs < 15) { rhs << 1; } - if (rhs < 16) { rhs << 1; } - return rhs; // rhs has 6 bounds -} - -unsigned int conditional_nested_guards(unsigned int ip) { - // This tests a combinatorial explosion that can happen from a large number of - // nested linear guards. - unsigned int special_number = - (14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 - ? 14 * ip - : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17) > - (2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) > - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > (17 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) - : 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 14 * ip > (2 * ip + 1) * 17 + (2 * ip + 1 + 1) * 17 - ? 14 * ip - : (2 * ip + 1) * 14 + (2 * ip + 1 + 1) * 17 - : 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) > - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14) - ? 2 * (ip * 14 + 32) + - (4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - 2 * ip * 14 + (2 * ip + 1) * 17 - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 2 * ip * 14 + (2 * ip + 1) * 17) - : 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) > - (14 * ip > (ip + 1) * 17 ? 17 * ip : (ip + 1) * 17) - ? 4 * (ip * 14 + 32) + - (2 * ip * 14 + 32) + - 2 * (ip * 14 + 64) + - ((2 * ip + 1) * 14 > - (14 * (2 * ip) > 17 * ip ? 17 * (2 * ip) : 17 * ip) - ? (2 * ip + 1) * 14 - : 14 * (2 * ip) > 17 * ip - ? 14 * (2 * ip) - : 14 * ip) - : 14 * ip > (ip + 1) * 17 - ? 14 * ip - : (ip + 1) * 14; - return special_number; -} - -int many_conditional_assignments(int c1, int c2, int c3, int c4, int c5) { - // This tests a combinatorial explosion that can happen from many conditional - // assignments, since each conditional assignment doubles the number of - // bounds. - int x = 0; - if (c1) { x += 748596; } - if (c2) { x += 84652395; } - if (c3) { x += 3675895; } - if (c4) { x += 98634; } - if (c5) { x += 7834985; } - if (c1 && c2) { x += 938457398; } - if (c1 && c3) { x += 73895648; } - if (c1 && c4) { x += 12345432; } - if (c1 && c5) { x += 38847; } - if (c2 && c3) { x += 234; } - // x now has 2^10 bounds, the 10 additions below give (2^10)^10 bounds - int y = x + x + x + x + x + x + x + x + x + x + x + x; - return y; -} - // Test the comma expression. unsigned int test_comma01(unsigned int x) { unsigned int y = x < 100 ? x : 100; diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected index d4c776a065d2..8696ecfe8d09 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/upperBound.expected @@ -485,519 +485,197 @@ | test.c:411:59:411:59 | k | 0.889553 | | test.c:411:63:411:63 | l | 0.538434 | | test.c:413:10:413:15 | output | 9.284378 | -| test.c:420:7:420:9 | rhs | 4294967295 | -| test.c:420:19:420:21 | rhs | 11 | -| test.c:421:7:421:9 | rhs | 4294967295 | -| test.c:421:19:421:21 | rhs | 12 | -| test.c:422:7:422:9 | rhs | 4294967295 | -| test.c:422:19:422:21 | rhs | 13 | -| test.c:423:7:423:9 | rhs | 4294967295 | -| test.c:423:19:423:21 | rhs | 14 | -| test.c:424:7:424:9 | rhs | 4294967295 | -| test.c:424:19:424:21 | rhs | 15 | -| test.c:425:10:425:12 | rhs | 4294967295 | -| test.c:432:10:432:11 | ip | 4294967295 | -| test.c:432:20:432:21 | ip | 4294967295 | -| test.c:432:40:432:41 | ip | 4294967295 | -| test.c:433:14:433:15 | ip | 4294967295 | -| test.c:434:14:434:15 | ip | 4294967295 | -| test.c:434:34:434:35 | ip | 4294967295 | -| test.c:435:11:435:12 | ip | 4294967295 | -| test.c:436:13:436:14 | ip | 4294967295 | -| test.c:437:14:437:15 | ip | 4294967295 | -| test.c:438:14:438:15 | ip | 4294967295 | -| test.c:439:15:439:16 | ip | 4294967295 | -| test.c:439:41:439:42 | ip | 4294967295 | -| test.c:439:52:439:53 | ip | 4294967295 | -| test.c:439:67:439:68 | ip | 4294967295 | -| test.c:439:78:439:79 | ip | 4294967295 | -| test.c:440:18:440:19 | ip | 4294967295 | -| test.c:441:23:441:24 | ip | 4294967295 | -| test.c:441:34:441:35 | ip | 4294967295 | -| test.c:442:25:442:26 | ip | 4294967295 | -| test.c:443:20:443:21 | ip | 4294967295 | -| test.c:444:11:444:12 | ip | 4294967295 | -| test.c:444:26:444:27 | ip | 4294967295 | -| test.c:445:16:445:17 | ip | 4294967295 | -| test.c:446:16:446:17 | ip | 4294967295 | -| test.c:447:16:447:17 | ip | 4294967295 | -| test.c:448:17:448:18 | ip | 4294967295 | -| test.c:449:22:449:23 | ip | 4294967295 | -| test.c:449:33:449:34 | ip | 4294967295 | -| test.c:449:48:449:49 | ip | 4294967295 | -| test.c:449:59:449:60 | ip | 4294967295 | -| test.c:450:20:450:21 | ip | 4294967295 | -| test.c:451:25:451:26 | ip | 4294967295 | -| test.c:451:36:451:37 | ip | 4294967295 | -| test.c:452:27:452:28 | ip | 4294967295 | -| test.c:453:22:453:23 | ip | 4294967295 | -| test.c:454:15:454:16 | ip | 4294967295 | -| test.c:454:30:454:31 | ip | 4294967295 | -| test.c:455:11:455:12 | ip | 4294967295 | -| test.c:456:12:456:13 | ip | 4294967295 | -| test.c:457:12:457:13 | ip | 4294967295 | -| test.c:458:13:458:14 | ip | 4294967295 | -| test.c:458:39:458:40 | ip | 4294967295 | -| test.c:458:50:458:51 | ip | 4294967295 | -| test.c:458:65:458:66 | ip | 4294967295 | -| test.c:458:76:458:77 | ip | 4294967295 | -| test.c:459:16:459:17 | ip | 4294967295 | -| test.c:460:21:460:22 | ip | 4294967295 | -| test.c:460:32:460:33 | ip | 4294967295 | -| test.c:461:23:461:24 | ip | 4294967295 | -| test.c:462:18:462:19 | ip | 4294967295 | -| test.c:463:11:463:12 | ip | 4294967295 | -| test.c:463:17:463:18 | ip | 4294967295 | -| test.c:463:37:463:38 | ip | 4294967295 | -| test.c:463:43:463:44 | ip | 4294967295 | -| test.c:464:14:464:15 | ip | 4294967295 | -| test.c:465:14:465:15 | ip | 4294967295 | -| test.c:466:14:466:15 | ip | 4294967295 | -| test.c:467:15:467:16 | ip | 4294967295 | -| test.c:467:41:467:42 | ip | 4294967295 | -| test.c:467:52:467:53 | ip | 4294967295 | -| test.c:467:67:467:68 | ip | 4294967295 | -| test.c:467:78:467:79 | ip | 4294967295 | -| test.c:468:18:468:19 | ip | 4294967295 | -| test.c:469:23:469:24 | ip | 4294967295 | -| test.c:469:34:469:35 | ip | 4294967295 | -| test.c:470:25:470:26 | ip | 4294967295 | -| test.c:471:20:471:21 | ip | 4294967295 | -| test.c:472:14:472:15 | ip | 4294967295 | -| test.c:472:20:472:21 | ip | 4294967295 | -| test.c:473:16:473:17 | ip | 4294967295 | -| test.c:474:12:474:13 | ip | 4294967295 | -| test.c:475:14:475:15 | ip | 4294967295 | -| test.c:476:15:476:16 | ip | 4294967295 | -| test.c:477:16:477:17 | ip | 4294967295 | -| test.c:478:16:478:17 | ip | 4294967295 | -| test.c:479:17:479:18 | ip | 4294967295 | -| test.c:480:22:480:23 | ip | 4294967295 | -| test.c:480:33:480:34 | ip | 4294967295 | -| test.c:480:48:480:49 | ip | 4294967295 | -| test.c:480:59:480:60 | ip | 4294967295 | -| test.c:481:20:481:21 | ip | 4294967295 | -| test.c:482:25:482:26 | ip | 4294967295 | -| test.c:482:36:482:37 | ip | 4294967295 | -| test.c:483:27:483:28 | ip | 4294967295 | -| test.c:484:22:484:23 | ip | 4294967295 | -| test.c:485:13:485:14 | ip | 4294967295 | -| test.c:485:28:485:29 | ip | 4294967295 | -| test.c:486:18:486:19 | ip | 4294967295 | -| test.c:487:18:487:19 | ip | 4294967295 | -| test.c:488:18:488:19 | ip | 4294967295 | -| test.c:489:19:489:20 | ip | 4294967295 | -| test.c:490:24:490:25 | ip | 4294967295 | -| test.c:490:35:490:36 | ip | 4294967295 | -| test.c:490:50:490:51 | ip | 4294967295 | -| test.c:490:61:490:62 | ip | 4294967295 | -| test.c:491:22:491:23 | ip | 4294967295 | -| test.c:492:27:492:28 | ip | 4294967295 | -| test.c:492:38:492:39 | ip | 4294967295 | -| test.c:493:29:493:30 | ip | 4294967295 | -| test.c:494:24:494:25 | ip | 4294967295 | -| test.c:495:17:495:18 | ip | 4294967295 | -| test.c:495:32:495:33 | ip | 4294967295 | -| test.c:496:14:496:15 | ip | 4294967295 | -| test.c:497:18:497:19 | ip | 4294967295 | -| test.c:498:18:498:19 | ip | 4294967295 | -| test.c:499:19:499:20 | ip | 4294967295 | -| test.c:500:24:500:25 | ip | 4294967295 | -| test.c:500:35:500:36 | ip | 4294967295 | -| test.c:500:50:500:51 | ip | 4294967295 | -| test.c:500:61:500:62 | ip | 4294967295 | -| test.c:501:22:501:23 | ip | 4294967295 | -| test.c:502:27:502:28 | ip | 4294967295 | -| test.c:502:38:502:39 | ip | 4294967295 | -| test.c:503:29:503:30 | ip | 4294967295 | -| test.c:504:24:504:25 | ip | 4294967295 | -| test.c:505:17:505:18 | ip | 4294967295 | -| test.c:505:23:505:24 | ip | 4294967295 | -| test.c:505:43:505:44 | ip | 4294967295 | -| test.c:505:49:505:50 | ip | 4294967295 | -| test.c:506:16:506:17 | ip | 4294967295 | -| test.c:507:16:507:17 | ip | 4294967295 | -| test.c:508:16:508:17 | ip | 4294967295 | -| test.c:509:17:509:18 | ip | 4294967295 | -| test.c:510:22:510:23 | ip | 4294967295 | -| test.c:510:33:510:34 | ip | 4294967295 | -| test.c:510:48:510:49 | ip | 4294967295 | -| test.c:510:59:510:60 | ip | 4294967295 | -| test.c:511:20:511:21 | ip | 4294967295 | -| test.c:512:25:512:26 | ip | 4294967295 | -| test.c:512:36:512:37 | ip | 4294967295 | -| test.c:513:27:513:28 | ip | 4294967295 | -| test.c:514:22:514:23 | ip | 4294967295 | -| test.c:515:16:515:17 | ip | 4294967295 | -| test.c:515:22:515:23 | ip | 4294967295 | -| test.c:516:18:516:19 | ip | 4294967295 | -| test.c:517:14:517:15 | ip | 4294967295 | -| test.c:518:14:518:15 | ip | 4294967295 | -| test.c:518:24:518:25 | ip | 4294967295 | -| test.c:518:44:518:45 | ip | 4294967295 | -| test.c:519:16:519:17 | ip | 4294967295 | -| test.c:520:16:520:17 | ip | 4294967295 | -| test.c:520:36:520:37 | ip | 4294967295 | -| test.c:521:14:521:15 | ip | 4294967295 | -| test.c:522:19:522:20 | ip | 4294967295 | -| test.c:523:20:523:21 | ip | 4294967295 | -| test.c:524:20:524:21 | ip | 4294967295 | -| test.c:525:21:525:22 | ip | 4294967295 | -| test.c:526:26:526:27 | ip | 4294967295 | -| test.c:526:37:526:38 | ip | 4294967295 | -| test.c:526:52:526:53 | ip | 4294967295 | -| test.c:526:63:526:64 | ip | 4294967295 | -| test.c:527:24:527:25 | ip | 4294967295 | -| test.c:528:29:528:30 | ip | 4294967295 | -| test.c:528:40:528:41 | ip | 4294967295 | -| test.c:529:31:529:32 | ip | 4294967295 | -| test.c:530:26:530:27 | ip | 4294967295 | -| test.c:531:17:531:18 | ip | 4294967295 | -| test.c:531:32:531:33 | ip | 4294967295 | -| test.c:532:22:532:23 | ip | 4294967295 | -| test.c:533:22:533:23 | ip | 4294967295 | -| test.c:534:22:534:23 | ip | 4294967295 | -| test.c:535:23:535:24 | ip | 4294967295 | -| test.c:536:28:536:29 | ip | 4294967295 | -| test.c:536:39:536:40 | ip | 4294967295 | -| test.c:536:54:536:55 | ip | 4294967295 | -| test.c:536:65:536:66 | ip | 4294967295 | -| test.c:537:26:537:27 | ip | 4294967295 | -| test.c:538:31:538:32 | ip | 4294967295 | -| test.c:538:42:538:43 | ip | 4294967295 | -| test.c:539:33:539:34 | ip | 4294967295 | -| test.c:540:28:540:29 | ip | 4294967295 | -| test.c:541:21:541:22 | ip | 4294967295 | -| test.c:541:36:541:37 | ip | 4294967295 | -| test.c:542:17:542:18 | ip | 4294967295 | -| test.c:543:18:543:19 | ip | 4294967295 | -| test.c:544:18:544:19 | ip | 4294967295 | -| test.c:545:19:545:20 | ip | 4294967295 | -| test.c:546:24:546:25 | ip | 4294967295 | -| test.c:546:35:546:36 | ip | 4294967295 | -| test.c:546:50:546:51 | ip | 4294967295 | -| test.c:546:61:546:62 | ip | 4294967295 | -| test.c:547:22:547:23 | ip | 4294967295 | -| test.c:548:27:548:28 | ip | 4294967295 | -| test.c:548:38:548:39 | ip | 4294967295 | -| test.c:549:29:549:30 | ip | 4294967295 | -| test.c:550:24:550:25 | ip | 4294967295 | -| test.c:551:17:551:18 | ip | 4294967295 | -| test.c:551:23:551:24 | ip | 4294967295 | -| test.c:551:43:551:44 | ip | 4294967295 | -| test.c:551:49:551:50 | ip | 4294967295 | -| test.c:552:20:552:21 | ip | 4294967295 | -| test.c:553:20:553:21 | ip | 4294967295 | -| test.c:554:20:554:21 | ip | 4294967295 | -| test.c:555:21:555:22 | ip | 4294967295 | -| test.c:556:26:556:27 | ip | 4294967295 | -| test.c:556:37:556:38 | ip | 4294967295 | -| test.c:556:52:556:53 | ip | 4294967295 | -| test.c:556:63:556:64 | ip | 4294967295 | -| test.c:557:24:557:25 | ip | 4294967295 | -| test.c:558:29:558:30 | ip | 4294967295 | -| test.c:558:40:558:41 | ip | 4294967295 | -| test.c:559:31:559:32 | ip | 4294967295 | -| test.c:560:26:560:27 | ip | 4294967295 | -| test.c:561:20:561:21 | ip | 4294967295 | -| test.c:561:26:561:27 | ip | 4294967295 | -| test.c:562:22:562:23 | ip | 4294967295 | -| test.c:563:18:563:19 | ip | 4294967295 | -| test.c:564:16:564:17 | ip | 4294967295 | -| test.c:565:17:565:18 | ip | 4294967295 | -| test.c:566:18:566:19 | ip | 4294967295 | -| test.c:567:18:567:19 | ip | 4294967295 | -| test.c:568:19:568:20 | ip | 4294967295 | -| test.c:569:24:569:25 | ip | 4294967295 | -| test.c:569:35:569:36 | ip | 4294967295 | -| test.c:569:50:569:51 | ip | 4294967295 | -| test.c:569:61:569:62 | ip | 4294967295 | -| test.c:570:22:570:23 | ip | 4294967295 | -| test.c:571:27:571:28 | ip | 4294967295 | -| test.c:571:38:571:39 | ip | 4294967295 | -| test.c:572:29:572:30 | ip | 4294967295 | -| test.c:573:24:573:25 | ip | 4294967295 | -| test.c:574:15:574:16 | ip | 4294967295 | -| test.c:574:30:574:31 | ip | 4294967295 | -| test.c:575:20:575:21 | ip | 4294967295 | -| test.c:576:20:576:21 | ip | 4294967295 | -| test.c:577:20:577:21 | ip | 4294967295 | -| test.c:578:21:578:22 | ip | 4294967295 | -| test.c:579:26:579:27 | ip | 4294967295 | -| test.c:579:37:579:38 | ip | 4294967295 | -| test.c:579:52:579:53 | ip | 4294967295 | -| test.c:579:63:579:64 | ip | 4294967295 | -| test.c:580:24:580:25 | ip | 4294967295 | -| test.c:581:29:581:30 | ip | 4294967295 | -| test.c:581:40:581:41 | ip | 4294967295 | -| test.c:582:31:582:32 | ip | 4294967295 | -| test.c:583:26:583:27 | ip | 4294967295 | -| test.c:584:19:584:20 | ip | 4294967295 | -| test.c:584:34:584:35 | ip | 4294967295 | -| test.c:585:16:585:17 | ip | 4294967295 | -| test.c:586:20:586:21 | ip | 4294967295 | -| test.c:587:20:587:21 | ip | 4294967295 | -| test.c:588:21:588:22 | ip | 4294967295 | -| test.c:589:26:589:27 | ip | 4294967295 | -| test.c:589:37:589:38 | ip | 4294967295 | -| test.c:589:52:589:53 | ip | 4294967295 | -| test.c:589:63:589:64 | ip | 4294967295 | -| test.c:590:24:590:25 | ip | 4294967295 | -| test.c:591:29:591:30 | ip | 4294967295 | -| test.c:591:40:591:41 | ip | 4294967295 | -| test.c:592:31:592:32 | ip | 4294967295 | -| test.c:593:26:593:27 | ip | 4294967295 | -| test.c:594:19:594:20 | ip | 4294967295 | -| test.c:594:25:594:26 | ip | 4294967295 | -| test.c:594:45:594:46 | ip | 4294967295 | -| test.c:594:51:594:52 | ip | 4294967295 | -| test.c:595:18:595:19 | ip | 4294967295 | -| test.c:596:18:596:19 | ip | 4294967295 | -| test.c:597:18:597:19 | ip | 4294967295 | -| test.c:598:19:598:20 | ip | 4294967295 | -| test.c:599:24:599:25 | ip | 4294967295 | -| test.c:599:35:599:36 | ip | 4294967295 | -| test.c:599:50:599:51 | ip | 4294967295 | -| test.c:599:61:599:62 | ip | 4294967295 | -| test.c:600:22:600:23 | ip | 4294967295 | -| test.c:601:27:601:28 | ip | 4294967295 | -| test.c:601:38:601:39 | ip | 4294967295 | -| test.c:602:29:602:30 | ip | 4294967295 | -| test.c:603:24:603:25 | ip | 4294967295 | -| test.c:604:18:604:19 | ip | 4294967295 | -| test.c:604:24:604:25 | ip | 4294967295 | -| test.c:605:20:605:21 | ip | 4294967295 | -| test.c:606:16:606:17 | ip | 4294967295 | -| test.c:607:10:607:23 | special_number | 4294967295 | -| test.c:615:7:615:8 | c1 | 2147483647 | -| test.c:615:13:615:13 | x | 0 | -| test.c:616:7:616:8 | c2 | 2147483647 | -| test.c:616:13:616:13 | x | 748596 | -| test.c:617:7:617:8 | c3 | 2147483647 | -| test.c:617:13:617:13 | x | 85400991 | -| test.c:618:7:618:8 | c4 | 2147483647 | -| test.c:618:13:618:13 | x | 89076886 | -| test.c:619:7:619:8 | c5 | 2147483647 | -| test.c:619:13:619:13 | x | 89175520 | -| test.c:620:7:620:8 | c1 | 2147483647 | -| test.c:620:13:620:14 | c2 | 2147483647 | -| test.c:620:19:620:19 | x | 97010505 | -| test.c:621:7:621:8 | c1 | 2147483647 | -| test.c:621:13:621:14 | c3 | 2147483647 | -| test.c:621:19:621:19 | x | 1035467903 | -| test.c:622:7:622:8 | c1 | 2147483647 | -| test.c:622:13:622:14 | c4 | 2147483647 | -| test.c:622:19:622:19 | x | 1109363551 | -| test.c:623:7:623:8 | c1 | 2147483647 | -| test.c:623:13:623:14 | c5 | 2147483647 | -| test.c:623:19:623:19 | x | 1121708983 | -| test.c:624:7:624:8 | c2 | 2147483647 | -| test.c:624:13:624:14 | c3 | 2147483647 | -| test.c:624:19:624:19 | x | 1121747830 | -| test.c:626:11:626:11 | x | 2147483647 | -| test.c:626:15:626:15 | x | 2147483647 | -| test.c:626:19:626:19 | x | 2147483647 | -| test.c:626:23:626:23 | x | 2147483647 | -| test.c:626:27:626:27 | x | 2147483647 | -| test.c:626:31:626:31 | x | 2147483647 | -| test.c:626:35:626:35 | x | 2147483647 | -| test.c:626:39:626:39 | x | 2147483647 | -| test.c:626:43:626:43 | x | 2147483647 | -| test.c:626:47:626:47 | x | 2147483647 | -| test.c:626:51:626:51 | x | 2147483647 | -| test.c:626:55:626:55 | x | 2147483647 | -| test.c:627:10:627:10 | y | 2147483647 | -| test.c:632:20:632:20 | x | 4294967295 | -| test.c:632:30:632:30 | x | 99 | -| test.c:635:3:635:4 | y1 | 4294967295 | -| test.c:635:11:635:11 | y | 100 | -| test.c:635:14:635:14 | y | 101 | -| test.c:636:3:636:4 | y2 | 4294967295 | -| test.c:636:9:636:9 | y | 101 | -| test.c:636:14:636:14 | y | 102 | -| test.c:636:22:636:22 | y | 105 | -| test.c:637:10:637:11 | y1 | 101 | -| test.c:637:15:637:16 | y2 | 105 | -| test.c:645:3:645:3 | i | 2147483647 | -| test.c:646:7:646:7 | i | 10 | -| test.c:648:3:648:3 | i | 2147483647 | -| test.c:649:3:649:3 | i | 10 | -| test.c:650:7:650:7 | i | 20 | -| test.c:652:3:652:3 | i | 2147483647 | -| test.c:653:3:653:3 | i | 40 | -| test.c:654:7:654:7 | i | 30 | -| test.c:656:3:656:3 | i | 2147483647 | -| test.c:656:7:656:7 | j | 2147483647 | -| test.c:657:7:657:7 | i | 40 | -| test.c:659:3:659:3 | i | 2147483647 | -| test.c:659:8:659:8 | j | 40 | -| test.c:660:7:660:7 | i | 50 | -| test.c:662:3:662:3 | i | 2147483647 | -| test.c:662:13:662:13 | j | 50 | -| test.c:663:7:663:7 | i | 60 | -| test.c:670:12:670:12 | a | 4294967295 | -| test.c:670:17:670:17 | a | 4294967295 | -| test.c:670:33:670:33 | b | 4294967295 | -| test.c:670:38:670:38 | b | 4294967295 | -| test.c:671:13:671:13 | a | 11 | -| test.c:671:15:671:15 | b | 23 | -| test.c:672:5:672:9 | total | 0 | -| test.c:672:14:672:14 | r | 253 | -| test.c:674:12:674:12 | a | 4294967295 | -| test.c:674:17:674:17 | a | 4294967295 | -| test.c:674:33:674:33 | b | 4294967295 | -| test.c:674:38:674:38 | b | 4294967295 | -| test.c:675:13:675:13 | a | 11 | -| test.c:675:15:675:15 | b | 23 | -| test.c:676:5:676:9 | total | 253 | -| test.c:676:14:676:14 | r | 253 | -| test.c:678:12:678:12 | a | 4294967295 | -| test.c:678:17:678:17 | a | 4294967295 | -| test.c:678:34:678:34 | b | 4294967295 | -| test.c:678:39:678:39 | b | 4294967295 | -| test.c:679:13:679:13 | a | 11 | -| test.c:679:15:679:15 | b | 23 | -| test.c:680:5:680:9 | total | 506 | -| test.c:680:14:680:14 | r | 253 | -| test.c:683:10:683:14 | total | 759 | -| test.c:689:12:689:12 | b | 4294967295 | -| test.c:689:17:689:17 | b | 4294967295 | -| test.c:690:16:690:16 | b | 23 | -| test.c:691:5:691:9 | total | 0 | -| test.c:691:14:691:14 | r | 253 | -| test.c:693:12:693:12 | b | 4294967295 | -| test.c:693:17:693:17 | b | 4294967295 | -| test.c:694:16:694:16 | b | 23 | -| test.c:695:5:695:9 | total | 253 | -| test.c:695:14:695:14 | r | 253 | -| test.c:697:13:697:13 | b | 4294967295 | -| test.c:697:18:697:18 | b | 4294967295 | -| test.c:698:16:698:16 | b | 23 | -| test.c:699:5:699:9 | total | 506 | -| test.c:699:14:699:14 | r | 253 | -| test.c:702:10:702:14 | total | 759 | -| test.c:707:3:707:3 | x | 18446744073709551616 | -| test.c:707:7:707:7 | y | 18446744073709551616 | -| test.c:708:3:708:4 | xy | 18446744073709551616 | -| test.c:708:8:708:8 | x | 1000000003 | -| test.c:708:12:708:12 | y | 1000000003 | -| test.c:709:10:709:11 | xy | 1000000006000000000 | -| test.c:714:3:714:3 | x | 18446744073709551616 | -| test.c:715:3:715:3 | y | 18446744073709551616 | -| test.c:716:3:716:4 | xy | 18446744073709551616 | -| test.c:716:8:716:8 | x | 274177 | -| test.c:716:12:716:12 | y | 67280421310721 | -| test.c:717:10:717:11 | xy | 18446744073709551616 | -| test.c:721:7:721:8 | ui | 4294967295 | -| test.c:722:43:722:44 | ui | 4294967295 | -| test.c:722:48:722:49 | ui | 4294967295 | -| test.c:723:12:723:17 | result | 18446744065119617024 | -| test.c:725:7:725:8 | ul | 18446744073709551616 | -| test.c:726:28:726:29 | ul | 18446744073709551616 | -| test.c:726:33:726:34 | ul | 18446744073709551616 | -| test.c:727:12:727:17 | result | 18446744073709551616 | -| test.c:733:7:733:8 | ui | 4294967295 | -| test.c:733:19:733:20 | ui | 10 | -| test.c:734:5:734:6 | ui | 10 | -| test.c:734:11:734:12 | ui | 10 | -| test.c:735:12:735:13 | ui | 100 | -| test.c:739:3:739:9 | uiconst | 10 | -| test.c:742:3:742:9 | ulconst | 10 | -| test.c:743:10:743:16 | uiconst | 40 | -| test.c:743:20:743:26 | ulconst | 40 | -| test.c:747:7:747:7 | i | 2147483647 | -| test.c:747:18:747:18 | i | 2147483647 | -| test.c:748:5:748:5 | i | 2147483647 | -| test.c:748:13:748:13 | i | 2 | -| test.c:749:9:749:9 | i | 10 | -| test.c:751:5:751:5 | i | 2147483647 | -| test.c:751:9:751:9 | i | 10 | -| test.c:752:9:752:9 | i | 15 | -| test.c:754:5:754:5 | i | 15 | -| test.c:755:9:755:9 | i | 105 | -| test.c:757:5:757:5 | i | 105 | -| test.c:758:9:758:9 | i | 2310 | -| test.c:760:7:760:7 | i | 2147483647 | -| test.c:761:5:761:5 | i | 2147483647 | -| test.c:761:9:761:9 | i | -1 | -| test.c:762:9:762:9 | i | 1 | -| test.c:764:3:764:3 | i | 2147483647 | -| test.c:764:7:764:7 | i | 2147483647 | -| test.c:765:10:765:10 | i | 2147483647 | -| test.c:768:3:768:3 | i | 2147483647 | -| test.c:768:10:768:11 | sc | 1 | -| test.c:770:7:770:7 | i | 127 | -| test.c:777:7:777:7 | n | 4294967295 | -| test.c:779:7:779:7 | n | 4294967295 | -| test.c:780:9:780:9 | n | 4294967295 | -| test.c:783:7:783:7 | n | 4294967295 | -| test.c:784:9:784:9 | n | 4294967295 | -| test.c:786:9:786:9 | n | 0 | -| test.c:789:8:789:8 | n | 4294967295 | -| test.c:790:9:790:9 | n | 0 | -| test.c:792:9:792:9 | n | 4294967295 | -| test.c:795:10:795:10 | n | 4294967295 | -| test.c:796:5:796:5 | n | 4294967295 | -| test.c:799:7:799:7 | n | 0 | -| test.c:803:7:803:7 | n | 32767 | -| test.c:806:7:806:7 | n | 32767 | -| test.c:807:9:807:9 | n | 0 | -| test.c:809:9:809:9 | n | 32767 | -| test.c:812:7:812:7 | n | 32767 | -| test.c:813:9:813:9 | n | 32767 | -| test.c:815:9:815:9 | n | 0 | -| test.c:818:10:818:10 | n | 32767 | -| test.c:819:5:819:5 | n | 32767 | -| test.c:822:7:822:7 | n | 0 | -| test.c:826:7:826:7 | n | 32767 | -| test.c:827:9:827:9 | n | 32767 | -| test.c:828:11:828:11 | n | 32767 | -| test.c:832:7:832:7 | n | 32767 | -| test.c:833:13:833:13 | n | 32767 | -| test.c:836:9:836:9 | n | 32767 | -| test.c:839:7:839:7 | n | 32767 | -| test.c:839:22:839:22 | n | 32767 | -| test.c:840:9:840:9 | n | 32767 | -| test.c:843:7:843:7 | n | 32767 | -| test.c:844:5:844:5 | n | 32767 | -| test.c:844:10:844:10 | n | 32767 | -| test.c:844:14:844:14 | n | 0 | -| test.c:845:6:845:6 | n | 32767 | -| test.c:845:10:845:10 | n | 0 | -| test.c:845:14:845:14 | n | 32767 | -| test.c:856:7:856:8 | ss | 32767 | -| test.c:857:9:857:10 | ss | 3 | -| test.c:860:7:860:8 | ss | 32767 | -| test.c:861:9:861:10 | ss | 32767 | -| test.c:864:14:864:15 | us | 65535 | -| test.c:865:9:865:10 | us | 32767 | -| test.c:868:14:868:15 | us | 65535 | -| test.c:869:9:869:10 | us | 65535 | -| test.c:872:7:872:8 | ss | 32767 | -| test.c:873:9:873:10 | ss | 32767 | -| test.c:876:7:876:8 | ss | 32767 | -| test.c:877:9:877:10 | ss | 2 | -| test.c:883:8:883:8 | s | 2147483647 | -| test.c:883:15:883:15 | s | 127 | -| test.c:883:23:883:23 | s | 9 | -| test.c:884:18:884:18 | s | 9 | -| test.c:884:22:884:22 | s | 9 | -| test.c:885:9:885:14 | result | 127 | -| test.c:891:7:891:7 | i | 0 | -| test.c:892:9:892:9 | i | 2147483647 | -| test.c:896:7:896:7 | u | 0 | -| test.c:897:9:897:9 | u | 4294967295 | -| test.c:902:12:902:12 | s | 2147483647 | -| test.c:903:7:903:8 | s2 | 4 | -| test.c:908:7:908:7 | x | 2147483647 | -| test.c:909:9:909:9 | y | 2147483647 | -| test.c:913:7:913:7 | y | 2147483647 | -| test.c:922:7:922:7 | x | 2147483647 | -| test.c:927:7:927:7 | x | 15 | -| test.c:934:8:934:8 | x | 2147483647 | -| test.c:934:12:934:12 | y | 256 | -| test.c:935:9:935:9 | x | 2147483647 | -| test.c:936:9:936:9 | y | 256 | +| test.c:418:20:418:20 | x | 4294967295 | +| test.c:418:30:418:30 | x | 99 | +| test.c:421:3:421:4 | y1 | 4294967295 | +| test.c:421:11:421:11 | y | 100 | +| test.c:421:14:421:14 | y | 101 | +| test.c:422:3:422:4 | y2 | 4294967295 | +| test.c:422:9:422:9 | y | 101 | +| test.c:422:14:422:14 | y | 102 | +| test.c:422:22:422:22 | y | 105 | +| test.c:423:10:423:11 | y1 | 101 | +| test.c:423:15:423:16 | y2 | 105 | +| test.c:431:3:431:3 | i | 2147483647 | +| test.c:432:7:432:7 | i | 10 | +| test.c:434:3:434:3 | i | 2147483647 | +| test.c:435:3:435:3 | i | 10 | +| test.c:436:7:436:7 | i | 20 | +| test.c:438:3:438:3 | i | 2147483647 | +| test.c:439:3:439:3 | i | 40 | +| test.c:440:7:440:7 | i | 30 | +| test.c:442:3:442:3 | i | 2147483647 | +| test.c:442:7:442:7 | j | 2147483647 | +| test.c:443:7:443:7 | i | 40 | +| test.c:445:3:445:3 | i | 2147483647 | +| test.c:445:8:445:8 | j | 40 | +| test.c:446:7:446:7 | i | 50 | +| test.c:448:3:448:3 | i | 2147483647 | +| test.c:448:13:448:13 | j | 50 | +| test.c:449:7:449:7 | i | 60 | +| test.c:456:12:456:12 | a | 4294967295 | +| test.c:456:17:456:17 | a | 4294967295 | +| test.c:456:33:456:33 | b | 4294967295 | +| test.c:456:38:456:38 | b | 4294967295 | +| test.c:457:13:457:13 | a | 11 | +| test.c:457:15:457:15 | b | 23 | +| test.c:458:5:458:9 | total | 0 | +| test.c:458:14:458:14 | r | 253 | +| test.c:460:12:460:12 | a | 4294967295 | +| test.c:460:17:460:17 | a | 4294967295 | +| test.c:460:33:460:33 | b | 4294967295 | +| test.c:460:38:460:38 | b | 4294967295 | +| test.c:461:13:461:13 | a | 11 | +| test.c:461:15:461:15 | b | 23 | +| test.c:462:5:462:9 | total | 253 | +| test.c:462:14:462:14 | r | 253 | +| test.c:464:12:464:12 | a | 4294967295 | +| test.c:464:17:464:17 | a | 4294967295 | +| test.c:464:34:464:34 | b | 4294967295 | +| test.c:464:39:464:39 | b | 4294967295 | +| test.c:465:13:465:13 | a | 11 | +| test.c:465:15:465:15 | b | 23 | +| test.c:466:5:466:9 | total | 506 | +| test.c:466:14:466:14 | r | 253 | +| test.c:469:10:469:14 | total | 759 | +| test.c:475:12:475:12 | b | 4294967295 | +| test.c:475:17:475:17 | b | 4294967295 | +| test.c:476:16:476:16 | b | 23 | +| test.c:477:5:477:9 | total | 0 | +| test.c:477:14:477:14 | r | 253 | +| test.c:479:12:479:12 | b | 4294967295 | +| test.c:479:17:479:17 | b | 4294967295 | +| test.c:480:16:480:16 | b | 23 | +| test.c:481:5:481:9 | total | 253 | +| test.c:481:14:481:14 | r | 253 | +| test.c:483:13:483:13 | b | 4294967295 | +| test.c:483:18:483:18 | b | 4294967295 | +| test.c:484:16:484:16 | b | 23 | +| test.c:485:5:485:9 | total | 506 | +| test.c:485:14:485:14 | r | 253 | +| test.c:488:10:488:14 | total | 759 | +| test.c:493:3:493:3 | x | 18446744073709551616 | +| test.c:493:7:493:7 | y | 18446744073709551616 | +| test.c:494:3:494:4 | xy | 18446744073709551616 | +| test.c:494:8:494:8 | x | 1000000003 | +| test.c:494:12:494:12 | y | 1000000003 | +| test.c:495:10:495:11 | xy | 1000000006000000000 | +| test.c:500:3:500:3 | x | 18446744073709551616 | +| test.c:501:3:501:3 | y | 18446744073709551616 | +| test.c:502:3:502:4 | xy | 18446744073709551616 | +| test.c:502:8:502:8 | x | 274177 | +| test.c:502:12:502:12 | y | 67280421310721 | +| test.c:503:10:503:11 | xy | 18446744073709551616 | +| test.c:507:7:507:8 | ui | 4294967295 | +| test.c:508:43:508:44 | ui | 4294967295 | +| test.c:508:48:508:49 | ui | 4294967295 | +| test.c:509:12:509:17 | result | 18446744065119617024 | +| test.c:511:7:511:8 | ul | 18446744073709551616 | +| test.c:512:28:512:29 | ul | 18446744073709551616 | +| test.c:512:33:512:34 | ul | 18446744073709551616 | +| test.c:513:12:513:17 | result | 18446744073709551616 | +| test.c:519:7:519:8 | ui | 4294967295 | +| test.c:519:19:519:20 | ui | 10 | +| test.c:520:5:520:6 | ui | 10 | +| test.c:520:11:520:12 | ui | 10 | +| test.c:521:12:521:13 | ui | 100 | +| test.c:525:3:525:9 | uiconst | 10 | +| test.c:528:3:528:9 | ulconst | 10 | +| test.c:529:10:529:16 | uiconst | 40 | +| test.c:529:20:529:26 | ulconst | 40 | +| test.c:533:7:533:7 | i | 2147483647 | +| test.c:533:18:533:18 | i | 2147483647 | +| test.c:534:5:534:5 | i | 2147483647 | +| test.c:534:13:534:13 | i | 2 | +| test.c:535:9:535:9 | i | 10 | +| test.c:537:5:537:5 | i | 2147483647 | +| test.c:537:9:537:9 | i | 10 | +| test.c:538:9:538:9 | i | 15 | +| test.c:540:5:540:5 | i | 15 | +| test.c:541:9:541:9 | i | 105 | +| test.c:543:5:543:5 | i | 105 | +| test.c:544:9:544:9 | i | 2310 | +| test.c:546:7:546:7 | i | 2147483647 | +| test.c:547:5:547:5 | i | 2147483647 | +| test.c:547:9:547:9 | i | -1 | +| test.c:548:9:548:9 | i | 1 | +| test.c:550:3:550:3 | i | 2147483647 | +| test.c:550:7:550:7 | i | 2147483647 | +| test.c:551:10:551:10 | i | 2147483647 | +| test.c:554:3:554:3 | i | 2147483647 | +| test.c:554:10:554:11 | sc | 1 | +| test.c:556:7:556:7 | i | 127 | +| test.c:563:7:563:7 | n | 4294967295 | +| test.c:565:7:565:7 | n | 4294967295 | +| test.c:566:9:566:9 | n | 4294967295 | +| test.c:569:7:569:7 | n | 4294967295 | +| test.c:570:9:570:9 | n | 4294967295 | +| test.c:572:9:572:9 | n | 0 | +| test.c:575:8:575:8 | n | 4294967295 | +| test.c:576:9:576:9 | n | 0 | +| test.c:578:9:578:9 | n | 4294967295 | +| test.c:581:10:581:10 | n | 4294967295 | +| test.c:582:5:582:5 | n | 4294967295 | +| test.c:585:7:585:7 | n | 0 | +| test.c:589:7:589:7 | n | 32767 | +| test.c:592:7:592:7 | n | 32767 | +| test.c:593:9:593:9 | n | 0 | +| test.c:595:9:595:9 | n | 32767 | +| test.c:598:7:598:7 | n | 32767 | +| test.c:599:9:599:9 | n | 32767 | +| test.c:601:9:601:9 | n | 0 | +| test.c:604:10:604:10 | n | 32767 | +| test.c:605:5:605:5 | n | 32767 | +| test.c:608:7:608:7 | n | 0 | +| test.c:612:7:612:7 | n | 32767 | +| test.c:613:9:613:9 | n | 32767 | +| test.c:614:11:614:11 | n | 32767 | +| test.c:618:7:618:7 | n | 32767 | +| test.c:619:13:619:13 | n | 32767 | +| test.c:622:9:622:9 | n | 32767 | +| test.c:625:7:625:7 | n | 32767 | +| test.c:625:22:625:22 | n | 32767 | +| test.c:626:9:626:9 | n | 32767 | +| test.c:629:7:629:7 | n | 32767 | +| test.c:630:5:630:5 | n | 32767 | +| test.c:630:10:630:10 | n | 32767 | +| test.c:630:14:630:14 | n | 0 | +| test.c:631:6:631:6 | n | 32767 | +| test.c:631:10:631:10 | n | 0 | +| test.c:631:14:631:14 | n | 32767 | +| test.c:642:7:642:8 | ss | 32767 | +| test.c:643:9:643:10 | ss | 3 | +| test.c:646:7:646:8 | ss | 32767 | +| test.c:647:9:647:10 | ss | 32767 | +| test.c:650:14:650:15 | us | 65535 | +| test.c:651:9:651:10 | us | 32767 | +| test.c:654:14:654:15 | us | 65535 | +| test.c:655:9:655:10 | us | 65535 | +| test.c:658:7:658:8 | ss | 32767 | +| test.c:659:9:659:10 | ss | 32767 | +| test.c:662:7:662:8 | ss | 32767 | +| test.c:663:9:663:10 | ss | 2 | +| test.c:669:8:669:8 | s | 2147483647 | +| test.c:669:15:669:15 | s | 127 | +| test.c:669:23:669:23 | s | 9 | +| test.c:670:18:670:18 | s | 9 | +| test.c:670:22:670:22 | s | 9 | +| test.c:671:9:671:14 | result | 127 | +| test.c:677:7:677:7 | i | 0 | +| test.c:678:9:678:9 | i | 2147483647 | +| test.c:682:7:682:7 | u | 0 | +| test.c:683:9:683:9 | u | 4294967295 | +| test.c:688:12:688:12 | s | 2147483647 | +| test.c:689:7:689:8 | s2 | 4 | +| test.c:694:7:694:7 | x | 2147483647 | +| test.c:695:9:695:9 | y | 2147483647 | +| test.c:699:7:699:7 | y | 2147483647 | +| test.c:708:7:708:7 | x | 2147483647 | +| test.c:713:7:713:7 | x | 15 | +| test.c:720:8:720:8 | x | 2147483647 | +| test.c:720:12:720:12 | y | 256 | +| test.c:721:9:721:9 | x | 2147483647 | +| test.c:722:9:722:9 | y | 256 | | test.cpp:10:7:10:7 | b | 2147483647 | | test.cpp:11:5:11:5 | x | 2147483647 | | test.cpp:13:10:13:10 | x | 2147483647 |