{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:26:02",
  "duplicates" : [ {
    "blockSize" : 51,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 141,
      "endLine" : 217,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 144,
      "endLine" : 220,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 108
    } ]
  }, {
    "blockSize" : 31,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 249,
      "endLine" : 295,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 149
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/ComposeMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 16,
      "endLine" : 62,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 192,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 199,
      "endLine" : 243,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 143
    }, {
      "file" : {
        "relativePath" : "platf-skia/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 96,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 72,
      "endLine" : 116,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 128,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 113,
      "endLine" : 157,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "platf-android/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 192,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 199,
      "endLine" : 243,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaFontManager.kt",
        "extension" : "kt",
        "linesOfCode" : 58,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 43,
      "startLine" : 11,
      "endLine" : 54,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/FontManager.kt",
        "extension" : "kt",
        "linesOfCode" : 46,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 14,
      "endLine" : 57,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 26,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 128,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 113,
      "endLine" : 157,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "platf-skia/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 96,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 72,
      "endLine" : 116,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 141,
      "endLine" : 173,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 99,
      "endLine" : 131,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 6,
      "endLine" : 39,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 6,
      "endLine" : 38,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 141,
      "endLine" : 170,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 102,
      "endLine" : 131,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 313,
      "endLine" : 347,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 181
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/ComposeMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 76,
      "endLine" : 110,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 315,
      "endLine" : 332,
      "cleanedStartLine" : 201,
      "cleanedEndLine" : 217
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/AndroidContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 250,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 190,
      "startLine" : 281,
      "endLine" : 298,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 104,
      "endLine" : 136,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 107,
      "endLine" : 139,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 51,
      "endLine" : 67,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 49,
      "endLine" : 65,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 193,
      "endLine" : 208,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 245,
      "endLine" : 260,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 193,
      "endLine" : 208,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 122
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 219,
      "endLine" : 234,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 138
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 219,
      "endLine" : 234,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 138
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 245,
      "endLine" : 260,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 167,
      "endLine" : 182,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 245,
      "endLine" : 260,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 167,
      "endLine" : 182,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 193,
      "endLine" : 208,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 167,
      "endLine" : 182,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/jvmTest/kotlin/org/jetbrains/letsPlot/skia/shape/SvgComplianceTest.kt",
        "extension" : "kt",
        "linesOfCode" : 230,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 156,
      "startLine" : 219,
      "endLine" : 234,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 138
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 174,
      "endLine" : 189,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 140,
      "endLine" : 156,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 121,
      "startLine" : 143,
      "endLine" : 158,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView2.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 94,
      "endLine" : 109,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 177,
      "endLine" : 192,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 140,
      "endLine" : 156,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 68,
      "endLine" : 87,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 67,
      "endLine" : 86,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 63,
      "endLine" : 71,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 73,
      "endLine" : 83,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 70,
      "endLine" : 80,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 111,
      "endLine" : 121,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 70,
      "endLine" : 80,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 108,
      "endLine" : 118,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 70,
      "endLine" : 80,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 73,
      "endLine" : 83,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 108,
      "endLine" : 118,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/ComposeMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 89,
      "endLine" : 97,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgView.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 126,
      "endLine" : 134,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 73,
      "endLine" : 83,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 111,
      "endLine" : 121,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 136,
      "endLine" : 145,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 163,
      "endLine" : 172,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 41,
      "endLine" : 50,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 49,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgGElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 33,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 23,
      "endLine" : 31,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "platf-skia/src/commonMain/kotlin/org/jetbrains/letsPlot/skia/mapping/svg/SvgSvgElementMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 40,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 22,
      "endLine" : 30,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 326,
      "endLine" : 334,
      "cleanedStartLine" : 167,
      "cleanedEndLine" : 175
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgView.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 78,
      "startLine" : 126,
      "endLine" : 134,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/ComposeMouseEventMapper.kt",
        "extension" : "kt",
        "linesOfCode" : 98,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 49,
      "endLine" : 57,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgViewPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 66,
      "endLine" : 74,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 294,
      "endLine" : 303,
      "cleanedStartLine" : 215,
      "cleanedEndLine" : 222
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 320,
      "endLine" : 328,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 243
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 54,
      "endLine" : 61,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 190,
      "endLine" : 199,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 208,
      "endLine" : 217,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 138
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 56,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 36,
      "endLine" : 47,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 52,
      "endLine" : 61,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 128,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 82,
      "endLine" : 95,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "platf-android/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 192,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 77,
      "endLine" : 90,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 282,
      "endLine" : 290,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/desktop/SvgViewPanel.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 66,
      "endLine" : 74,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 34,
      "endLine" : 41,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 64,
      "endLine" : 71,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelSwingComponent.kt",
        "extension" : "kt",
        "linesOfCode" : 143,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 114,
      "endLine" : 120,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 125,
      "startLine" : 156,
      "endLine" : 162,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 46,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 128,
      "endLine" : 136,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 156,
      "endLine" : 163,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 64,
      "endLine" : 70,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 305,
      "endLine" : 312,
      "cleanedStartLine" : 224,
      "cleanedEndLine" : 230
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 330,
      "endLine" : 337,
      "cleanedStartLine" : 245,
      "cleanedEndLine" : 251
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 40,
      "endLine" : 46,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 41,
      "endLine" : 47,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 64,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 31,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 48,
      "endLine" : 54,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelRaw.kt",
        "extension" : "kt",
        "linesOfCode" : 65,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 53,
      "startLine" : 65,
      "endLine" : 71,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 156,
      "endLine" : 163,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 33,
      "endLine" : 39,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/desktopMain/kotlin/org/jetbrains/letsPlot/compose/canvas/SkiaContext2d.kt",
        "extension" : "kt",
        "linesOfCode" : 314,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelAndroidView.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "lets-plot-compose/src/androidMain/kotlin/org/jetbrains/letsPlot/compose/PlotPanelComposeCanvas.kt",
        "extension" : "kt",
        "linesOfCode" : 268,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 186,
      "startLine" : 153,
      "endLine" : 159,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 128,
      "endLine" : 136,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 128,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "platf-skia/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 96,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 192,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 190,
      "endLine" : 196,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 115
    }, {
      "file" : {
        "relativePath" : "platf-skia/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 96,
        "components" : [ "primary::platf-skia" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 68,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 131,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 44,
      "endLine" : 49,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/Utils.kt",
        "extension" : "kt",
        "linesOfCode" : 131,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 57,
      "endLine" : 62,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 85,
      "endLine" : 91,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 170,
      "endLine" : 177,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 121,
      "startLine" : 41,
      "endLine" : 49,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidMain/kotlin/org/jetbrains/letsPlot/android/canvas/CanvasView2.kt",
        "extension" : "kt",
        "linesOfCode" : 83,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 24,
      "endLine" : 33,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "lets-plot-compose/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 128,
        "components" : [ "primary::lets-plot-compose" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 104,
      "endLine" : 110,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "platf-android/build.gradle.kts",
        "extension" : "kts",
        "linesOfCode" : 192,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 190,
      "endLine" : 196,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 115
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 188,
      "endLine" : 193,
      "cleanedStartLine" : 134,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextPath2dTest.kt",
        "extension" : "kt",
        "linesOfCode" : 326,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 302,
      "startLine" : 215,
      "endLine" : 220,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 252,
      "endLine" : 260,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 164
    }, {
      "file" : {
        "relativePath" : "platf-android/src/androidInstrumentedTest/kotlin/org/jetbrains/letsPlot/android/canvas/ContextClipTest.kt",
        "extension" : "kt",
        "linesOfCode" : 207,
        "components" : [ "primary::platf-android" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 184,
      "startLine" : 274,
      "endLine" : 282,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 178
    } ]
  } ],
  "overallDuplication" : null
}