From 0a4eb24ed4b55d9144a9f252f3aa0ab625839d74 Mon Sep 17 00:00:00 2001 From: ferpasri Date: Wed, 28 Jan 2026 13:07:01 +0100 Subject: [PATCH 1/8] Fix android SPY isDisplayed property --- .../android/spy_visualization/TreeVisualizationAndroid.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java b/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java index 745b82ec7..e2ca3301f 100644 --- a/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java +++ b/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java @@ -389,7 +389,7 @@ private void displayWidgetInfo(Widget nodeWidget) { infoPaneRight.add(new JLabel(String.valueOf(selectedWidget))).setFont(new Font("SansSerif", Font.PLAIN, fontSize)); infoPaneLeft.add(new JLabel("Displayed: ")).setFont(new Font("SansSerif", Font.BOLD, fontSize)); - infoPaneRight.add(new JLabel(String.valueOf(selectedWidget))).setFont(new Font("SansSerif", Font.PLAIN, fontSize)); + infoPaneRight.add(new JLabel(String.valueOf(displayedWidget))).setFont(new Font("SansSerif", Font.PLAIN, fontSize)); infoPaneLeft.add(new JLabel("Current Activity: ")).setFont(new Font("SansSerif", Font.BOLD, fontSize)); infoPaneRight.add(new JLabel(String.valueOf(activityWidget))).setFont(new Font("SansSerif", Font.PLAIN, fontSize)); From 9484c6a3a72fbfb516531fa0e9127d8bd7d468b6 Mon Sep 17 00:00:00 2001 From: ferpasri Date: Wed, 28 Jan 2026 16:13:57 +0100 Subject: [PATCH 2/8] Add Rect overlap method --- core/src/org/testar/monkey/alayer/Rect.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/core/src/org/testar/monkey/alayer/Rect.java b/core/src/org/testar/monkey/alayer/Rect.java index a933eacfd..117849514 100644 --- a/core/src/org/testar/monkey/alayer/Rect.java +++ b/core/src/org/testar/monkey/alayer/Rect.java @@ -1,6 +1,7 @@ /*************************************************************************************************** * -* Copyright (c) 2013, 2014, 2015, 2016, 2017 Universitat Politecnica de Valencia - www.upv.es +* Copyright (c) 2013 - 2026 Universitat Politecnica de Valencia - www.upv.es +* Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -27,10 +28,6 @@ * POSSIBILITY OF SUCH DAMAGE. *******************************************************************************************************/ - -/** - * @author Sebastian Bauersfeld - */ package org.testar.monkey.alayer; import org.testar.monkey.Assert; @@ -47,6 +44,14 @@ public static boolean intersect(Rect r1, Rect r2) { r2.y() + r2.height() < r1.y()); } + public static boolean overlap(Rect r1, Rect r2) { + Assert.notNull(r1, r2); + return !(r1.x() + r1.width() <= r2.x() || + r1.y() + r1.height() <= r2.y() || + r2.x() + r2.width() <= r1.x() || + r2.y() + r2.height() <= r1.y()); + } + public static boolean contains(Rect r1, Rect r2) { Assert.notNull(r1, r2); return r2.x() >= r1.x() && r2.x() + r2.width() <= r1.x() + r1.width() && @@ -102,7 +107,6 @@ public void paint(Canvas canvas, Pen pen) { canvas.rect(pen, x, y, width, height); } - // by urueda @Override public boolean equals(Object o){ if (o == this) return true; From 6101d462bbf5c27132ab95fe48b9d7ed2503bbf6 Mon Sep 17 00:00:00 2001 From: ferpasri Date: Wed, 28 Jan 2026 16:18:33 +0100 Subject: [PATCH 3/8] Update parabank leafWidgetsOverlapping --- .../Protocol_02_webdriver_parabank.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java b/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java index 8ed0eecad..a3cf45e39 100644 --- a/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java +++ b/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java @@ -227,6 +227,8 @@ private boolean containsVerdictInfo(List listOfDetectedErroneousVerdicts } public Verdict leafWidgetsOverlapping(State state) { + Verdict finalVerdict = Verdict.OK; + // Prepare a list that contains all the Rectangles from the leaf widgets List> leafWidgetsRects = new ArrayList<>(); for (Widget w : state) { @@ -242,7 +244,7 @@ public Verdict leafWidgetsOverlapping(State state) { Rect rectOne = leafWidgetsRects.get(i).right(); Rect rectTwo = leafWidgetsRects.get(j).right(); - if (Rect.intersect(rectOne, rectTwo)) { + if (Rect.overlap(rectOne, rectTwo)) { Widget firstWidget = leafWidgetsRects.get(i).left(); Widget secondWidget = leafWidgetsRects.get(j).left(); @@ -259,12 +261,16 @@ public Verdict leafWidgetsOverlapping(State state) { "Invariant Fault", 0.5, 0.5); - return new Verdict(Verdict.Severity.WARNING_UI_VISUAL_OR_RENDERING_FAULT, verdictMsg, visualizer); + Verdict clashVerdict = new Verdict( + Verdict.Severity.WARNING_UI_VISUAL_OR_RENDERING_FAULT, + verdictMsg, + visualizer); + finalVerdict = finalVerdict.join(clashVerdict); } } } - return Verdict.OK; + return finalVerdict; } private Pen getRedPen() { From 96d192606875e39241f3ff1326d64d6360826d5c Mon Sep 17 00:00:00 2001 From: ferpasri Date: Mon, 2 Feb 2026 10:54:33 +0100 Subject: [PATCH 4/8] Update file year dates --- .../android/spy_visualization/TreeVisualizationAndroid.java | 4 ++-- .../02_webdriver_parabank/Protocol_02_webdriver_parabank.java | 4 ++-- testar/src/org/testar/monkey/Main.java | 4 ++-- .../oracles/HeaderAnalysisSecurityOracle.java | 4 ++-- .../securityanalysis/oracles/SqlInjectionSecurityOracle.java | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java b/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java index e2ca3301f..98c5c4376 100644 --- a/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java +++ b/android/src/org/testar/monkey/alayer/android/spy_visualization/TreeVisualizationAndroid.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2020 - 2025 Universitat Politecnica de Valencia - www.upv.es - * Copyright (c) 2020 - 2025 Open Universiteit - www.ou.nl + * Copyright (c) 2020 - 2026 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2020 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java b/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java index a3cf45e39..cbbdd388c 100644 --- a/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java +++ b/testar/resources/settings/02_webdriver_parabank/Protocol_02_webdriver_parabank.java @@ -1,6 +1,6 @@ /** - * Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl - * Copyright (c) 2019 - 2025 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl + * Copyright (c) 2019 - 2026 Universitat Politecnica de Valencia - www.upv.es * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/testar/src/org/testar/monkey/Main.java b/testar/src/org/testar/monkey/Main.java index 675099dd5..7af545acc 100644 --- a/testar/src/org/testar/monkey/Main.java +++ b/testar/src/org/testar/monkey/Main.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2013 - 2025 Universitat Politecnica de Valencia - www.upv.es - * Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl + * Copyright (c) 2013 - 2026 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/testar/src/org/testar/securityanalysis/oracles/HeaderAnalysisSecurityOracle.java b/testar/src/org/testar/securityanalysis/oracles/HeaderAnalysisSecurityOracle.java index 4f6b0c4b1..d9537b5a6 100644 --- a/testar/src/org/testar/securityanalysis/oracles/HeaderAnalysisSecurityOracle.java +++ b/testar/src/org/testar/securityanalysis/oracles/HeaderAnalysisSecurityOracle.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2022 - 2025 Open Universiteit - www.ou.nl - * Copyright (c) 2022 - 2025 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2022 - 2026 Open Universiteit - www.ou.nl + * Copyright (c) 2022 - 2026 Universitat Politecnica de Valencia - www.upv.es * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/testar/src/org/testar/securityanalysis/oracles/SqlInjectionSecurityOracle.java b/testar/src/org/testar/securityanalysis/oracles/SqlInjectionSecurityOracle.java index c7db07718..c8419d761 100644 --- a/testar/src/org/testar/securityanalysis/oracles/SqlInjectionSecurityOracle.java +++ b/testar/src/org/testar/securityanalysis/oracles/SqlInjectionSecurityOracle.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2022 - 2025 Open Universiteit - www.ou.nl - * Copyright (c) 2022 - 2025 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2022 - 2026 Open Universiteit - www.ou.nl + * Copyright (c) 2022 - 2026 Universitat Politecnica de Valencia - www.upv.es * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: From 80e3b99baa904d9e631bbe2bfad9bbc42028eab5 Mon Sep 17 00:00:00 2001 From: ferpasri Date: Mon, 2 Feb 2026 11:01:37 +0100 Subject: [PATCH 5/8] Update TESTAR version --- CHANGELOG | 4 ++++ VERSION | 2 +- testar/src/org/testar/monkey/Main.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 50bef0361..ef62bbe95 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +#TESTAR v2.7.20 (3-Feb-2026) +- Fix android SPY is displayed property +- Add Rect overlap method + #TESTAR v2.7.19 (27-Jan-2026) - Bump org.seleniumhq.selenium:selenium-java from 4.39.0 to 4.40.0 - Update devtools dependencies to v144 diff --git a/VERSION b/VERSION index 2e30274b2..12eda4d84 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.7.19 \ No newline at end of file +2.7.20 \ No newline at end of file diff --git a/testar/src/org/testar/monkey/Main.java b/testar/src/org/testar/monkey/Main.java index 7af545acc..697540641 100644 --- a/testar/src/org/testar/monkey/Main.java +++ b/testar/src/org/testar/monkey/Main.java @@ -62,7 +62,7 @@ public class Main { - public static final String TESTAR_VERSION = "v2.7.19 (27-Jan-2026)"; + public static final String TESTAR_VERSION = "v2.7.20 (3-Feb-2026)"; //public static final String TESTAR_DIR_PROPERTY = "DIRNAME"; //Use the OS environment to obtain TESTAR directory public static final String SETTINGS_FILE = "test.settings"; From 61b52e7fac454283bfeabc891ba9b4d7165277fa Mon Sep 17 00:00:00 2001 From: ferpasri Date: Mon, 2 Feb 2026 12:17:07 +0100 Subject: [PATCH 6/8] Add Visualizer join method --- CHANGELOG | 1 + .../src/org/testar/monkey/alayer/Verdict.java | 6 ++-- .../org/testar/monkey/alayer/Visualizer.java | 33 ++++++++++++++++-- .../org/testar/monkey/alayer/VerdictTest.java | 34 ++++++++++++++----- 4 files changed, 61 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ef62bbe95..af41d0499 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ #TESTAR v2.7.20 (3-Feb-2026) - Fix android SPY is displayed property - Add Rect overlap method +- Add Visualizer join method #TESTAR v2.7.19 (27-Jan-2026) - Bump org.seleniumhq.selenium:selenium-java from 4.39.0 to 4.40.0 diff --git a/core/src/org/testar/monkey/alayer/Verdict.java b/core/src/org/testar/monkey/alayer/Verdict.java index 82f55a9ef..edf29514b 100644 --- a/core/src/org/testar/monkey/alayer/Verdict.java +++ b/core/src/org/testar/monkey/alayer/Verdict.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2013 - 2025 Universitat Politecnica de Valencia - www.upv.es - * Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl + * Copyright (c) 2013 - 2026 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -213,7 +213,7 @@ public Verdict join(Verdict verdict) { String joinedInfo = this.info.contains(verdict.info()) ? this.info : (this.severity == Severity.OK.getValue() ? "" : this.info + "\n") + verdict.info(); - Visualizer joinedVisualizer = (this.severity >= verdict.severity()) ? this.visualizer() : verdict.visualizer(); + Visualizer joinedVisualizer = Visualizer.join(this.visualizer(), verdict.visualizer()); return new Verdict(joinedSeverity, joinedInfo, joinedVisualizer); } diff --git a/core/src/org/testar/monkey/alayer/Visualizer.java b/core/src/org/testar/monkey/alayer/Visualizer.java index 1c20c16fe..060a1af41 100644 --- a/core/src/org/testar/monkey/alayer/Visualizer.java +++ b/core/src/org/testar/monkey/alayer/Visualizer.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2013 - 2025 Universitat Politecnica de Valencia - www.upv.es - * Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl + * Copyright (c) 2013 - 2026 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -31,13 +31,42 @@ package org.testar.monkey.alayer; import java.io.Serializable; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.testar.monkey.Assert; +import org.testar.monkey.Util; + public interface Visualizer extends Serializable { void run(State state, Canvas canvas, Pen pen); default List getShapes() { return Arrays.asList(Rect.from(0, 0, 0, 0)); } + + static Visualizer join(Visualizer first, Visualizer second) { + if (first == second) return first; + if (first == Util.NullVisualizer) return second; + if (second == Util.NullVisualizer) return first; + + return new Visualizer() { + private static final long serialVersionUID = 1L; + + @Override + public void run(State state, Canvas canvas, Pen pen) { + Assert.notNull(state, canvas, pen); + first.run(state, canvas, pen); + second.run(state, canvas, pen); + } + + @Override + public List getShapes() { + ArrayList merged = new ArrayList<>(); + merged.addAll(first.getShapes()); + merged.addAll(second.getShapes()); + return merged; + } + }; + } } diff --git a/core/test/org/testar/monkey/alayer/VerdictTest.java b/core/test/org/testar/monkey/alayer/VerdictTest.java index f2554b7b4..1a5892a16 100644 --- a/core/test/org/testar/monkey/alayer/VerdictTest.java +++ b/core/test/org/testar/monkey/alayer/VerdictTest.java @@ -1,7 +1,7 @@ /*************************************************************************************************** * - * Copyright (c) 2013 - 2025 Universitat Politecnica de Valencia - www.upv.es - * Copyright (c) 2018 - 2025 Open Universiteit - www.ou.nl + * Copyright (c) 2013 - 2026 Universitat Politecnica de Valencia - www.upv.es + * Copyright (c) 2018 - 2026 Open Universiteit - www.ou.nl * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -32,7 +32,11 @@ import static org.junit.Assert.*; +import java.util.Arrays; + import org.junit.Test; +import org.testar.monkey.alayer.visualizers.RegionsVisualizer; +import org.testar.monkey.alayer.visualizers.ShapeVisualizer; public class VerdictTest { @@ -43,10 +47,17 @@ public class VerdictTest { public void run(State s, Canvas c, Pen pen) {} }; - private final Visualizer failVisualizer = new Visualizer(){ - private static final long serialVersionUID = -2732461936562344367L; - public void run(State s, Canvas c, Pen pen) {} - }; + private final Visualizer failVisualizer = new ShapeVisualizer( + Pen.PEN_RED, + Rect.from(0, 0, 10, 10), + "Fail Visualizer", + 0.5, 0.5); + + private final Visualizer issueVisualizer = new RegionsVisualizer( + Pen.PEN_RED, + Arrays.asList(Rect.from(0, 0, 10, 10)), + "Issue Visualizer", + 0.5, 0.5); @Test public void testToString() { @@ -60,6 +71,7 @@ public void testJoin() { Verdict v1 = new Verdict(Verdict.Severity.OK, "Foo Bar"); Verdict v2 = new Verdict(Verdict.Severity.FAIL, "Bar", failVisualizer); Verdict v3 = new Verdict(Verdict.Severity.OK, "Baz", dummyVisualizer); + Verdict v4 = new Verdict(Verdict.Severity.FAIL, "Exception", issueVisualizer); assertTrue("Joining two Verdicts shall create a new Verdict", v1 != v1.join(v2)); @@ -79,11 +91,17 @@ public void testJoin() { "then both infos shall be included separated by a line break", "Bar\nBaz", v2.join(v3).info()); - assertTrue("Joining two Verdicts shall use the Visualizer of the Verdict with high severity", + assertTrue("Joining an OK and Fail Verdicts shall use the Visualizer of the Verdict with high severity", v2.join(v1).visualizer() == failVisualizer); - assertTrue("Joining two Verdicts shall use the Visualizer of the Verdict with high severity", + assertTrue("Joining an OK and Fail Verdicts shall use the Visualizer of the Verdict with high severity", v1.join(v2).visualizer() == failVisualizer); + + assertTrue("Joining Fail and Issue Verdicts must contain Fail Shapes", + v2.join(v4).visualizer().getShapes().containsAll(failVisualizer.getShapes())); + + assertTrue("Joining Fail and Issue Verdicts must contain Issue Shapes", + v2.join(v4).visualizer().getShapes().containsAll(issueVisualizer.getShapes())); } @Test From 84f95aa60e2036207145863b06c3c94752d36edd Mon Sep 17 00:00:00 2001 From: ferpasri Date: Tue, 3 Feb 2026 09:01:34 +0100 Subject: [PATCH 7/8] Update VerdictTest --- core/test/org/testar/monkey/alayer/VerdictTest.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/test/org/testar/monkey/alayer/VerdictTest.java b/core/test/org/testar/monkey/alayer/VerdictTest.java index 1a5892a16..9d9ac2bb2 100644 --- a/core/test/org/testar/monkey/alayer/VerdictTest.java +++ b/core/test/org/testar/monkey/alayer/VerdictTest.java @@ -72,6 +72,7 @@ public void testJoin() { Verdict v2 = new Verdict(Verdict.Severity.FAIL, "Bar", failVisualizer); Verdict v3 = new Verdict(Verdict.Severity.OK, "Baz", dummyVisualizer); Verdict v4 = new Verdict(Verdict.Severity.FAIL, "Exception", issueVisualizer); + Verdict emptyVisualizerVerdict = new Verdict(Verdict.Severity.FAIL, "Empty"); assertTrue("Joining two Verdicts shall create a new Verdict", v1 != v1.join(v2)); @@ -100,8 +101,20 @@ public void testJoin() { assertTrue("Joining Fail and Issue Verdicts must contain Fail Shapes", v2.join(v4).visualizer().getShapes().containsAll(failVisualizer.getShapes())); + assertTrue("Joining Issue and Fail Verdicts must contain Fail Shapes", + v4.join(v2).visualizer().getShapes().containsAll(failVisualizer.getShapes())); + assertTrue("Joining Fail and Issue Verdicts must contain Issue Shapes", v2.join(v4).visualizer().getShapes().containsAll(issueVisualizer.getShapes())); + + assertTrue("Joining Issue and Fail Verdicts must contain Issue Shapes", + v4.join(v2).visualizer().getShapes().containsAll(issueVisualizer.getShapes())); + + assertTrue("Joining Fail and emptyVisualizerVerdict Verdicts must equal Fail visualizer", + v2.join(emptyVisualizerVerdict).visualizer() == failVisualizer); + + assertTrue("Joining emptyVisualizerVerdict and Fail Verdicts must equal Fail visualizer", + emptyVisualizerVerdict.join(v2).visualizer() == failVisualizer); } @Test From 66313bad8f850257ea3a9973b89512ff16c788de Mon Sep 17 00:00:00 2001 From: ferpasri Date: Tue, 3 Feb 2026 09:28:08 +0100 Subject: [PATCH 8/8] Update replayable test sequence for ci tests --- .../paris_parisone.testar | Bin 18170 -> 17074 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/testar/resources/workflow/settings/test_gradle_workflow_webdriver_replay/paris_parisone.testar b/testar/resources/workflow/settings/test_gradle_workflow_webdriver_replay/paris_parisone.testar index 87947c731c245dfa494b532956ca702be6617124..7f0b0b0bfda09ea1b9dfdcdfffb0e805aa67d017 100644 GIT binary patch literal 17074 zcmZ77V{j&2*f#1U6Wi9rwrz7_+qUi8v29Ik+qP}n&YtIecYU?L-PP5<`p2rS?q2J< zj&l(JAc6kp__^|d^2Zf-ah;i*uA|myfdwZBvL@zEar@vS(MV~unn0$OUaoH9k~!q` zbn|p`HT7&ab5qq9murOuMh?UEk507bz=d~%j061@Du6sKK#1rIyGPD(%m5XJ0`h&K zvctQ@Tl$Go)U>o9o?WBs^K{;®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 literal 18170 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