{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:15:12",
  "duplicates" : [ {
    "blockSize" : 119,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 1,
      "endLine" : 182,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 1,
      "endLine" : 182,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Font.cc",
        "extension" : "cc",
        "linesOfCode" : 326,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 268,
      "startLine" : 341,
      "endLine" : 371,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 263
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/paragraph/TextStyle.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 268,
      "startLine" : 350,
      "endLine" : 380,
      "cleanedStartLine" : 233,
      "cleanedEndLine" : 259
    } ]
  }, {
    "blockSize" : 25,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Font.cc",
        "extension" : "cc",
        "linesOfCode" : 301,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 244,
      "startLine" : 322,
      "endLine" : 350,
      "cleanedStartLine" : 216,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/paragraph/TextStyle.cc",
        "extension" : "cc",
        "linesOfCode" : 330,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 350,
      "endLine" : 378,
      "cleanedStartLine" : 231,
      "cleanedEndLine" : 255
    } ]
  }, {
    "blockSize" : 24,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/InternalDirectXApi.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 269,
      "startLine" : 192,
      "endLine" : 226,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 141
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 306,
      "endLine" : 341,
      "cleanedStartLine" : 217,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 1215,
      "endLine" : 1244,
      "cleanedStartLine" : 838,
      "cleanedEndLine" : 860
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 1281,
      "endLine" : 1310,
      "cleanedStartLine" : 885,
      "cleanedEndLine" : 907
    } ]
  }, {
    "blockSize" : 22,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 17,
      "endLine" : 42,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 10,
      "endLine" : 35,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1037,
      "endLine" : 1063,
      "cleanedStartLine" : 358,
      "cleanedEndLine" : 377
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 243,
      "endLine" : 269,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 118
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 204,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 219,
      "endLine" : 243,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 91,
      "endLine" : 114,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 75,
      "endLine" : 97,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 122,
      "endLine" : 144,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 76,
      "endLine" : 98,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 123,
      "endLine" : 145,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/MetalContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 56,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 45,
      "startLine" : 33,
      "endLine" : 52,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/MetalContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 51,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 38,
      "endLine" : 58,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 115,
      "endLine" : 133,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 91
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 186,
      "endLine" : 204,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/DirectSoftwareContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 12,
      "endLine" : 28,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 10,
      "endLine" : 27,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 737,
      "endLine" : 750,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 408
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 793,
      "endLine" : 806,
      "cleanedStartLine" : 424,
      "cleanedEndLine" : 437
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 751,
      "endLine" : 765,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 520
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 224,
      "endLine" : 238,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 554,
      "endLine" : 567,
      "cleanedStartLine" : 458,
      "cleanedEndLine" : 471
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 587,
      "endLine" : 600,
      "cleanedStartLine" : 487,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/AngleRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 60,
      "endLine" : 76,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/Direct3DRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 60,
      "endLine" : 76,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/webTest/kotlin/org/jetbrains/skia/ParagraphWebTest.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 22,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/webTest/kotlin/org/jetbrains/skia/ParagraphWebTest.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 76,
      "endLine" : 91,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/InternalDirectXApi.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 269,
      "startLine" : 160,
      "endLine" : 177,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 275,
      "endLine" : 292,
      "cleanedStartLine" : 196,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 752,
      "endLine" : 766,
      "cleanedStartLine" : 410,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 808,
      "endLine" : 822,
      "cleanedStartLine" : 439,
      "cleanedEndLine" : 451
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/Direct3DSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 70,
      "endLine" : 84,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/MetalSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 70,
      "endLine" : 83,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageTest.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 75,
      "endLine" : 89,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 59
    }, {
      "file" : {
        "relativePath" : "skiko/src/darwinTest/kotlin/org/jetbrains/skia/ImageTest.darwin.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageTest.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 56,
      "endLine" : 70,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageTest.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 75,
      "endLine" : 89,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 817,
      "endLine" : 830,
      "cleanedStartLine" : 559,
      "cleanedEndLine" : 571
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 191,
      "endLine" : 204,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 459,
      "endLine" : 471,
      "cleanedStartLine" : 375,
      "cleanedEndLine" : 387
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 488,
      "endLine" : 500,
      "cleanedStartLine" : 400,
      "cleanedEndLine" : 412
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 322,
      "endLine" : 340,
      "cleanedStartLine" : 212,
      "cleanedEndLine" : 224
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 62,
      "endLine" : 79,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageTest.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 74,
      "startLine" : 56,
      "endLine" : 70,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "skiko/src/darwinTest/kotlin/org/jetbrains/skia/ImageTest.darwin.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/Actuals.native.kt",
        "extension" : "kt",
        "linesOfCode" : 37,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 1,
      "endLine" : 28,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/webMain/kotlin/org/jetbrains/skia/Actuals.js.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 1,
      "endLine" : 25,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 144,
      "endLine" : 155,
      "cleanedStartLine" : 117,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 173,
      "endLine" : 184,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 89,
      "endLine" : 107,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 114,
      "endLine" : 132,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 92,
      "endLine" : 104,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 91,
      "endLine" : 103,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 165,
      "endLine" : 177,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 131
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 204,
      "endLine" : 216,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/CanvasTest.kt",
        "extension" : "kt",
        "linesOfCode" : 269,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 272,
      "endLine" : 285,
      "cleanedStartLine" : 188,
      "cleanedEndLine" : 199
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/CanvasTest.kt",
        "extension" : "kt",
        "linesOfCode" : 269,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 236,
      "startLine" : 295,
      "endLine" : 308,
      "cleanedStartLine" : 204,
      "cleanedEndLine" : 215
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 618,
      "endLine" : 629,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 525
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 871,
      "endLine" : 882,
      "cleanedStartLine" : 733,
      "cleanedEndLine" : 744
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/shaper/Shaper.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/kotlin/org/jetbrains/skia/shaper/Shaper.nativejs.kt",
        "extension" : "kt",
        "linesOfCode" : 202,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 100,
      "endLine" : 111,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 421,
      "endLine" : 432,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 303,
      "endLine" : 314,
      "cleanedStartLine" : 244,
      "cleanedEndLine" : 254
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 421,
      "endLine" : 432,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/BackendTexture.cc",
        "extension" : "cc",
        "linesOfCode" : 37,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 25,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/BackendTexture.cc",
        "extension" : "cc",
        "linesOfCode" : 33,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 18,
      "endLine" : 30,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 190,
      "endLine" : 201,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 421,
      "endLine" : 432,
      "cleanedStartLine" : 338,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 15,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/Direct3DContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 22,
      "endLine" : 35,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 100,
      "endLine" : 111,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 303,
      "endLine" : 314,
      "cleanedStartLine" : 244,
      "cleanedEndLine" : 254
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 557,
      "endLine" : 567,
      "cleanedStartLine" : 461,
      "cleanedEndLine" : 471
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 626,
      "endLine" : 636,
      "cleanedStartLine" : 522,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 362,
      "endLine" : 372,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 247
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/paragraph/TextStyle.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 268,
      "startLine" : 351,
      "endLine" : 361,
      "cleanedStartLine" : 234,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 190,
      "endLine" : 201,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 157
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 303,
      "endLine" : 314,
      "cleanedStartLine" : 244,
      "cleanedEndLine" : 254
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 517,
      "endLine" : 527,
      "cleanedStartLine" : 425,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 828,
      "endLine" : 838,
      "cleanedStartLine" : 693,
      "cleanedEndLine" : 703
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 100,
      "endLine" : 111,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 190,
      "endLine" : 201,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Font.cc",
        "extension" : "cc",
        "linesOfCode" : 326,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 268,
      "startLine" : 342,
      "endLine" : 352,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 248
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 362,
      "endLine" : 372,
      "cleanedStartLine" : 237,
      "cleanedEndLine" : 247
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/Paragraph.kt",
        "extension" : "kt",
        "linesOfCode" : 297,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 237,
      "endLine" : 248,
      "cleanedStartLine" : 159,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/Paragraph.kt",
        "extension" : "kt",
        "linesOfCode" : 297,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 261,
      "endLine" : 272,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 185
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/PlatformOperations.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 86,
      "endLine" : 102,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/PlatformOperations.kt",
        "extension" : "kt",
        "linesOfCode" : 106,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 107,
      "endLine" : 123,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 157,
      "endLine" : 168,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 186,
      "endLine" : 197,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 165
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/FontMgrRunIterator.cc",
        "extension" : "cc",
        "linesOfCode" : 35,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 19,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/FontMgrRunIterator.cc",
        "extension" : "cc",
        "linesOfCode" : 33,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 19,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 176,
      "endLine" : 192,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 110
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 235,
      "endLine" : 251,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 157
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 590,
      "endLine" : 600,
      "cleanedStartLine" : 490,
      "cleanedEndLine" : 500
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 626,
      "endLine" : 636,
      "cleanedStartLine" : 522,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/DirectSoftwareContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 12,
      "endLine" : 24,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 618,
      "endLine" : 627,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 523
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 828,
      "endLine" : 837,
      "cleanedStartLine" : 693,
      "cleanedEndLine" : 702
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 517,
      "endLine" : 526,
      "cleanedStartLine" : 425,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 618,
      "endLine" : 627,
      "cleanedStartLine" : 514,
      "cleanedEndLine" : 523
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 176,
      "endLine" : 185,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 286,
      "endLine" : 295,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 236
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/LinuxOpenGLSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 71,
      "endLine" : 81,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 56
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/MetalSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 73,
      "endLine" : 83,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 43,
      "endLine" : 54,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 124,
      "endLine" : 135,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 85,
      "endLine" : 94,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 286,
      "endLine" : 295,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 236
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/Direct3DSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 74,
      "endLine" : 84,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/LinuxOpenGLSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 71,
      "endLine" : 81,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 845,
      "endLine" : 854,
      "cleanedStartLine" : 709,
      "cleanedEndLine" : 718
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 858,
      "endLine" : 867,
      "cleanedStartLine" : 721,
      "cleanedEndLine" : 730
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 139,
      "endLine" : 149,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 138,
      "endLine" : 148,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegment.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 42,
      "endLine" : 52,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegment.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 108,
      "startLine" : 62,
      "endLine" : 72,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 220,
      "endLine" : 229,
      "cleanedStartLine" : 152,
      "cleanedEndLine" : 161
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 233,
      "endLine" : 242,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 828,
      "endLine" : 837,
      "cleanedStartLine" : 693,
      "cleanedEndLine" : 702
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 871,
      "endLine" : 880,
      "cleanedStartLine" : 733,
      "cleanedEndLine" : 742
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 176,
      "endLine" : 185,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 406,
      "endLine" : 415,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 332
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ParagraphTest.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 55,
      "endLine" : 64,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ParagraphTest.kt",
        "extension" : "kt",
        "linesOfCode" : 189,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 159,
      "startLine" : 75,
      "endLine" : 84,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 59
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 137,
      "endLine" : 148,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 106
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 170,
      "endLine" : 181,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 85,
      "endLine" : 94,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 176,
      "endLine" : 185,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 36,
      "endLine" : 45,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 64,
      "endLine" : 73,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 462,
      "endLine" : 471,
      "cleanedStartLine" : 378,
      "cleanedEndLine" : 387
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 525,
      "endLine" : 534,
      "cleanedStartLine" : 433,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 286,
      "endLine" : 295,
      "cleanedStartLine" : 227,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 406,
      "endLine" : 415,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 332
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 696,
      "endLine" : 706,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 752,
      "endLine" : 762,
      "cleanedStartLine" : 410,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 696,
      "endLine" : 706,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 808,
      "endLine" : 818,
      "cleanedStartLine" : 439,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 572,
      "endLine" : 582,
      "cleanedStartLine" : 476,
      "cleanedEndLine" : 485
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 603,
      "endLine" : 613,
      "cleanedStartLine" : 503,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 85,
      "endLine" : 94,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 87,
      "endLine" : 96,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 517,
      "endLine" : 526,
      "cleanedStartLine" : 425,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 871,
      "endLine" : 880,
      "cleanedStartLine" : 733,
      "cleanedEndLine" : 742
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 82,
      "endLine" : 91,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 113,
      "endLine" : 122,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 77
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 10,
      "endLine" : 22,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 41,
      "endLine" : 53,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 572,
      "endLine" : 582,
      "cleanedStartLine" : 476,
      "cleanedEndLine" : 485
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 642,
      "endLine" : 652,
      "cleanedStartLine" : 538,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Font.kt",
        "extension" : "kt",
        "linesOfCode" : 495,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 401,
      "startLine" : 320,
      "endLine" : 329,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 453,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 334
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 521,
      "endLine" : 531,
      "cleanedStartLine" : 260,
      "cleanedEndLine" : 269
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 555,
      "endLine" : 565,
      "cleanedStartLine" : 291,
      "cleanedEndLine" : 300
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 481,
      "endLine" : 490,
      "cleanedStartLine" : 383,
      "cleanedEndLine" : 392
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 500,
      "endLine" : 509,
      "cleanedStartLine" : 398,
      "cleanedEndLine" : 407
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1065,
      "endLine" : 1075,
      "cleanedStartLine" : 379,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 271,
      "endLine" : 281,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 603,
      "endLine" : 613,
      "cleanedStartLine" : 503,
      "cleanedEndLine" : 512
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 642,
      "endLine" : 652,
      "cleanedStartLine" : 538,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 473,
      "endLine" : 483,
      "cleanedStartLine" : 389,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 502,
      "endLine" : 512,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/node/RenderNodeContext.jvm.cpp",
        "extension" : "cpp",
        "linesOfCode" : 21,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 13,
      "endLine" : 22,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/node/RenderNodeContext.native.cpp",
        "extension" : "cpp",
        "linesOfCode" : 20,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 85,
      "endLine" : 94,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 406,
      "endLine" : 415,
      "cleanedStartLine" : 323,
      "cleanedEndLine" : 332
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TypefaceFontProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 27,
      "startLine" : 31,
      "endLine" : 44,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TypefaceFontProviderWithFallback.kt",
        "extension" : "kt",
        "linesOfCode" : 44,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 27,
      "endLine" : 40,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 491,
      "endLine" : 500,
      "cleanedStartLine" : 403,
      "cleanedEndLine" : 412
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 525,
      "endLine" : 534,
      "cleanedStartLine" : 433,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 168,
      "endLine" : 176,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 754,
      "endLine" : 762,
      "cleanedStartLine" : 524,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 503,
      "endLine" : 512,
      "cleanedStartLine" : 415,
      "cleanedEndLine" : 423
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 540,
      "endLine" : 549,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 1148,
      "endLine" : 1157,
      "cleanedStartLine" : 781,
      "cleanedEndLine" : 789
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 35,
      "endLine" : 45,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 756,
      "endLine" : 766,
      "cleanedStartLine" : 414,
      "cleanedEndLine" : 422
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 879,
      "endLine" : 889,
      "cleanedStartLine" : 478,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 30,
      "endLine" : 38,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 204,
      "endLine" : 212,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 812,
      "endLine" : 822,
      "cleanedStartLine" : 443,
      "cleanedEndLine" : 451
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 879,
      "endLine" : 889,
      "cleanedStartLine" : 478,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix33.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 192,
      "endLine" : 200,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix33.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 231,
      "endLine" : 239,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 169,
      "endLine" : 178,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 945,
      "endLine" : 954,
      "cleanedStartLine" : 658,
      "cleanedEndLine" : 666
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 546,
      "endLine" : 554,
      "cleanedStartLine" : 282,
      "cleanedEndLine" : 290
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 211,
      "endLine" : 219,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 182
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 618,
      "endLine" : 627,
      "cleanedStartLine" : 423,
      "cleanedEndLine" : 431
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 945,
      "endLine" : 954,
      "cleanedStartLine" : 658,
      "cleanedEndLine" : 666
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 88,
      "endLine" : 100,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 137,
      "endLine" : 149,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 153,
      "endLine" : 163,
      "cleanedStartLine" : 108,
      "cleanedEndLine" : 116
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 223,
      "endLine" : 234,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/paragraph/TextStyle.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 268,
      "startLine" : 124,
      "endLine" : 132,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/paragraph/TextStyle.cc",
        "extension" : "cc",
        "linesOfCode" : 330,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 118,
      "endLine" : 126,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 15,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/DirectSoftwareContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 12,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 15,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 10,
      "endLine" : 21,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 43,
      "endLine" : 52,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 195,
      "endLine" : 204,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 15,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 41,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/Direct3DContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 22,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 10,
      "endLine" : 21,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 40,
      "endLine" : 48,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 126,
      "endLine" : 134,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlob.kt",
        "extension" : "kt",
        "linesOfCode" : 290,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 242,
      "startLine" : 66,
      "endLine" : 75,
      "cleanedStartLine" : 34,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 202,
      "endLine" : 211,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 474,
      "endLine" : 483,
      "cleanedStartLine" : 390,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 540,
      "endLine" : 549,
      "cleanedStartLine" : 448,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 191,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 177,
      "endLine" : 186,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 171,
      "endLine" : 180,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/Direct3DContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 22,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/DirectSoftwareContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 45,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 12,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 537,
      "endLine" : 548,
      "cleanedStartLine" : 380,
      "cleanedEndLine" : 388
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 576,
      "endLine" : 587,
      "cleanedStartLine" : 411,
      "cleanedEndLine" : 419
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 169,
      "endLine" : 178,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 618,
      "endLine" : 627,
      "cleanedStartLine" : 423,
      "cleanedEndLine" : 431
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 804,
      "endLine" : 812,
      "cleanedStartLine" : 671,
      "cleanedEndLine" : 679
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 816,
      "endLine" : 824,
      "cleanedStartLine" : 682,
      "cleanedEndLine" : 690
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 504,
      "endLine" : 512,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 251
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 538,
      "endLine" : 546,
      "cleanedStartLine" : 274,
      "cleanedEndLine" : 282
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 34,
      "endLine" : 45,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 13,
      "endLine" : 24,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/skottie/AnimationBuilder.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/skottie/AnimationBuilder.native.kt",
        "extension" : "kt",
        "linesOfCode" : 15,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 9,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/Direct3DContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 78,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 22,
      "endLine" : 33,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 41,
      "endLine" : 52,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 191,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 215,
      "endLine" : 227,
      "cleanedStartLine" : 144,
      "cleanedEndLine" : 152
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 209,
      "endLine" : 221,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 20,
      "endLine" : 31,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 34,
      "endLine" : 45,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 959,
      "endLine" : 966,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 557
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 998,
      "endLine" : 1005,
      "cleanedStartLine" : 585,
      "cleanedEndLine" : 592
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 959,
      "endLine" : 966,
      "cleanedStartLine" : 550,
      "cleanedEndLine" : 557
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 976,
      "endLine" : 983,
      "cleanedStartLine" : 565,
      "cleanedEndLine" : 572
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 618,
      "endLine" : 625,
      "cleanedStartLine" : 423,
      "cleanedEndLine" : 430
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 755,
      "endLine" : 762,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 20,
      "endLine" : 28,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 114,
      "endLine" : 125,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameDispatcherTest.kt",
        "extension" : "kt",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 123,
      "startLine" : 138,
      "endLine" : 149,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 16,
      "endLine" : 24,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 51,
      "endLine" : 59,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 698,
      "endLine" : 705,
      "cleanedStartLine" : 580,
      "cleanedEndLine" : 587
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 709,
      "endLine" : 716,
      "cleanedStartLine" : 590,
      "cleanedEndLine" : 597
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/LinuxOpenGLRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 141,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 8,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/WindowsOpenGLRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 8,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 22,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleTest.kt",
        "extension" : "kt",
        "linesOfCode" : 154,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 98,
      "endLine" : 105,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 205,
      "endLine" : 219,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 143
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 205,
      "endLine" : 219,
      "cleanedStartLine" : 136,
      "cleanedEndLine" : 143
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 58,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 150,
      "endLine" : 158,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/SvgTest.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 14,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/svg/SVGCanvasTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 26,
      "endLine" : 37,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1909,
      "endLine" : 1916,
      "cleanedStartLine" : 572,
      "cleanedEndLine" : 579
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1930,
      "endLine" : 1937,
      "cleanedStartLine" : 593,
      "cleanedEndLine" : 600
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/webTest/kotlin/org/jetbrains/skia/ParagraphWebTest.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 56,
      "endLine" : 63,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 39
    }, {
      "file" : {
        "relativePath" : "skiko/src/webTest/kotlin/org/jetbrains/skia/ParagraphWebTest.kt",
        "extension" : "kt",
        "linesOfCode" : 90,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 96,
      "endLine" : 103,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 124,
      "endLine" : 131,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 13,
      "endLine" : 21,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 124,
      "endLine" : 131,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/shaper/Shaper.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 11,
      "endLine" : 18,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 11,
      "endLine" : 19,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 25,
      "endLine" : 33,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 150,
      "endLine" : 158,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 255,
      "endLine" : 263,
      "cleanedStartLine" : 201,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 755,
      "endLine" : 762,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 532
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 945,
      "endLine" : 952,
      "cleanedStartLine" : 658,
      "cleanedEndLine" : 665
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 581,
      "endLine" : 588,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 610,
      "endLine" : 617,
      "cleanedStartLine" : 479,
      "cleanedEndLine" : 486
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 645,
      "endLine" : 652,
      "cleanedStartLine" : 510,
      "cleanedEndLine" : 517
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 48,
      "endLine" : 56,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 62,
      "endLine" : 70,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 240,
      "endLine" : 247,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 581,
      "endLine" : 588,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 645,
      "endLine" : 652,
      "cleanedStartLine" : 510,
      "cleanedEndLine" : 517
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/androidMain/kotlin/org/jetbrains/skiko/SkiaLayer.android.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 23,
      "endLine" : 35,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/SkiaLayer.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 55,
      "endLine" : 67,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 610,
      "endLine" : 617,
      "cleanedStartLine" : 479,
      "cleanedEndLine" : 486
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 178,
      "endLine" : 185,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/shaper/Shaper.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 11,
      "endLine" : 18,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 58,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 255,
      "endLine" : 263,
      "cleanedStartLine" : 201,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 45,
      "endLine" : 52,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 138,
      "endLine" : 145,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 581,
      "endLine" : 588,
      "cleanedStartLine" : 454,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 610,
      "endLine" : 617,
      "cleanedStartLine" : 479,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 227,
      "endLine" : 235,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 835,
      "endLine" : 842,
      "cleanedStartLine" : 322,
      "cleanedEndLine" : 329
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 212,
      "endLine" : 219,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 182
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 407,
      "endLine" : 414,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 150,
      "endLine" : 158,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 378,
      "endLine" : 386,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 155,
      "endLine" : 162,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 99
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 179,
      "endLine" : 186,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 120
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 645,
      "endLine" : 652,
      "cleanedStartLine" : 510,
      "cleanedEndLine" : 517
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 676,
      "endLine" : 683,
      "cleanedStartLine" : 537,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 547,
      "endLine" : 554,
      "cleanedStartLine" : 283,
      "cleanedEndLine" : 290
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 407,
      "endLine" : 414,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 40,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 50,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 40,
      "endLine" : 51,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 154
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/kotlin/org/jetbrains/skia/shaper/Shaper.nativejs.kt",
        "extension" : "kt",
        "linesOfCode" : 202,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1136,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 428
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1160,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 448
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 14,
      "endLine" : 24,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 721,
      "endLine" : 728,
      "cleanedStartLine" : 601,
      "cleanedEndLine" : 608
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 785,
      "endLine" : 792,
      "cleanedStartLine" : 655,
      "cleanedEndLine" : 662
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1751,
      "endLine" : 1760,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 435
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1795,
      "endLine" : 1804,
      "cleanedStartLine" : 470,
      "cleanedEndLine" : 477
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 241,
      "endLine" : 248,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 290,
      "endLine" : 297,
      "cleanedStartLine" : 211,
      "cleanedEndLine" : 218
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 58,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 378,
      "endLine" : 386,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 1282,
      "endLine" : 1289,
      "cleanedStartLine" : 797,
      "cleanedEndLine" : 804
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 890,
      "endLine" : 897,
      "cleanedStartLine" : 334,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 22,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 22,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 22,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 14,
      "endLine" : 24,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ColorType.kt",
        "extension" : "kt",
        "linesOfCode" : 208,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 92,
      "endLine" : 127,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/SurfaceColorFormat.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 15,
      "endLine" : 24,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 45,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 976,
      "endLine" : 983,
      "cleanedStartLine" : 565,
      "cleanedEndLine" : 572
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 998,
      "endLine" : 1005,
      "cleanedStartLine" : 585,
      "cleanedEndLine" : 592
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 255,
      "endLine" : 263,
      "cleanedStartLine" : 201,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 378,
      "endLine" : 386,
      "cleanedStartLine" : 300,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 124,
      "endLine" : 131,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.hh",
        "extension" : "hh",
        "linesOfCode" : 405,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 318,
      "startLine" : 221,
      "endLine" : 228,
      "cleanedStartLine" : 139,
      "cleanedEndLine" : 146
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.hh",
        "extension" : "hh",
        "linesOfCode" : 405,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 318,
      "startLine" : 276,
      "endLine" : 283,
      "cleanedStartLine" : 183,
      "cleanedEndLine" : 190
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 178,
      "endLine" : 185,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/kotlin/org/jetbrains/skia/shaper/Shaper.nativejs.kt",
        "extension" : "kt",
        "linesOfCode" : 202,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 9,
      "endLine" : 16,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 108,
      "endLine" : 115,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 79
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 28,
      "endLine" : 36,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 47,
      "endLine" : 55,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 124,
      "endLine" : 131,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 107,
      "endLine" : 114,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 131,
      "endLine" : 138,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 124,
      "endLine" : 131,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 148,
      "endLine" : 155,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 148,
      "endLine" : 155,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 1136,
      "endLine" : 1143,
      "cleanedStartLine" : 772,
      "cleanedEndLine" : 779
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/common_interop.cc",
        "extension" : "cc",
        "linesOfCode" : 377,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 178,
      "endLine" : 185,
      "cleanedStartLine" : 112,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 226,
      "endLine" : 233,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 100,
      "endLine" : 107,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 148,
      "endLine" : 155,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 148,
      "endLine" : 155,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 122
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 138,
      "endLine" : 145,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 240,
      "endLine" : 247,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 193
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/ColorFilter.cc",
        "extension" : "cc",
        "linesOfCode" : 111,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 112,
      "endLine" : 119,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/ColorFilter.cc",
        "extension" : "cc",
        "linesOfCode" : 92,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 97,
      "endLine" : 104,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 680,
      "endLine" : 686,
      "cleanedStartLine" : 365,
      "cleanedEndLine" : 371
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 793,
      "endLine" : 799,
      "cleanedStartLine" : 424,
      "cleanedEndLine" : 430
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 870,
      "endLine" : 876,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 284
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 269,
      "endLine" : 275,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 200
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/Convertors.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 71,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/SoftwareContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 59,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 18,
      "endLine" : 24,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 14,
      "endLine" : 21,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 702,
      "endLine" : 710,
      "cleanedStartLine" : 387,
      "cleanedEndLine" : 393
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 945,
      "endLine" : 953,
      "cleanedStartLine" : 540,
      "cleanedEndLine" : 546
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 56,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/paragraph/Paragraph.cc",
        "extension" : "cc",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 96,
      "endLine" : 103,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/paragraph/Paragraph.cc",
        "extension" : "cc",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 110,
      "endLine" : 117,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 151,
      "endLine" : 158,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 192,
      "endLine" : 199,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 14,
      "endLine" : 21,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 101,
      "endLine" : 107,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 861,
      "endLine" : 867,
      "cleanedStartLine" : 724,
      "cleanedEndLine" : 730
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 879,
      "endLine" : 885,
      "cleanedStartLine" : 741,
      "cleanedEndLine" : 747
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 101,
      "endLine" : 107,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 113,
      "endLine" : 119,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 191,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 152,
      "startLine" : 197,
      "endLine" : 204,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/TextLine.cc",
        "extension" : "cc",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 143,
      "startLine" : 191,
      "endLine" : 198,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1217,
      "endLine" : 1223,
      "cleanedStartLine" : 488,
      "cleanedEndLine" : 494
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 388,
      "endLine" : 394,
      "cleanedStartLine" : 275,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleScreenshotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 19,
      "endLine" : 27,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/paragraph/TextStyleScreenshotTest.kt",
        "extension" : "kt",
        "linesOfCode" : 108,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 79,
      "startLine" : 68,
      "endLine" : 76,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 587,
      "endLine" : 593,
      "cleanedStartLine" : 487,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 709,
      "cleanedEndLine" : 715
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/kotlin/org/jetbrains/skia/shaper/Shaper.nativejs.kt",
        "extension" : "kt",
        "linesOfCode" : 202,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 169,
      "startLine" : 10,
      "endLine" : 16,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 494,
      "endLine" : 500,
      "cleanedStartLine" : 406,
      "cleanedEndLine" : 412
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 561,
      "endLine" : 567,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 471
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 143,
      "endLine" : 149,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 181,
      "endLine" : 187,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/Direct3DSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 56,
      "startLine" : 72,
      "endLine" : 78,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "skiko/src/uikitMain/kotlin/org/jetbrains/skiko/redrawer/MetalRedrawer.uikit.kt",
        "extension" : "kt",
        "linesOfCode" : 199,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 151,
      "startLine" : 232,
      "endLine" : 238,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 587,
      "endLine" : 593,
      "cleanedStartLine" : 487,
      "cleanedEndLine" : 493
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 858,
      "endLine" : 864,
      "cleanedStartLine" : 721,
      "cleanedEndLine" : 727
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ColorFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 125,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 51,
      "endLine" : 57,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 470,
      "endLine" : 476,
      "cleanedStartLine" : 375,
      "cleanedEndLine" : 381
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 494,
      "endLine" : 500,
      "cleanedStartLine" : 406,
      "cleanedEndLine" : 412
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 594,
      "endLine" : 600,
      "cleanedStartLine" : 494,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 125,
      "endLine" : 131,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 379,
      "endLine" : 386,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameLimiterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 144,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 21,
      "endLine" : 29,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skiko/FrameLimiterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 144,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 34,
      "endLine" : 42,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 139,
      "endLine" : 145,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 86
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 91,
      "endLine" : 97,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix22.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix33.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 106,
      "endLine" : 116,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 98,
      "endLine" : 104,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 596,
      "endLine" : 602,
      "cleanedStartLine" : 467,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 661,
      "endLine" : 667,
      "cleanedStartLine" : 524,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 49,
      "endLine" : 56,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 149,
      "endLine" : 155,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 688,
      "endLine" : 694,
      "cleanedStartLine" : 547,
      "cleanedEndLine" : 553
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 699,
      "endLine" : 705,
      "cleanedStartLine" : 556,
      "cleanedEndLine" : 562
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 79,
      "endLine" : 85,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/InternalDirectXApi.cc",
        "extension" : "cc",
        "linesOfCode" : 337,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 269,
      "startLine" : 142,
      "endLine" : 150,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 92
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/directXRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 464,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 352,
      "startLine" : 258,
      "endLine" : 266,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 191
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 79,
      "endLine" : 85,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 79,
      "endLine" : 85,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 148,
      "endLine" : 154,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 174
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 688,
      "endLine" : 694,
      "cleanedStartLine" : 373,
      "cleanedEndLine" : 379
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 744,
      "endLine" : 750,
      "cleanedStartLine" : 402,
      "cleanedEndLine" : 408
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 79,
      "endLine" : 85,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlob.kt",
        "extension" : "kt",
        "linesOfCode" : 290,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 242,
      "startLine" : 47,
      "endLine" : 54,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 176,
      "endLine" : 183,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 628,
      "endLine" : 634,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 501
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 661,
      "endLine" : 667,
      "cleanedStartLine" : 524,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 227,
      "endLine" : 233,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 154
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ColorMatrix.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix22.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 192,
      "endLine" : 199,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 554,
      "endLine" : 560,
      "cleanedStartLine" : 458,
      "cleanedEndLine" : 464
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 858,
      "endLine" : 864,
      "cleanedStartLine" : 721,
      "cleanedEndLine" : 727
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 79,
      "endLine" : 85,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 42,
      "endLine" : 48,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix22.kt",
        "extension" : "kt",
        "linesOfCode" : 32,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix44.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 272,
      "endLine" : 278,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 1540,
      "endLine" : 1546,
      "cleanedStartLine" : 1009,
      "cleanedEndLine" : 1015
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 554,
      "endLine" : 560,
      "cleanedStartLine" : 458,
      "cleanedEndLine" : 464
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 845,
      "endLine" : 851,
      "cleanedStartLine" : 709,
      "cleanedEndLine" : 715
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Data.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 97,
      "endLine" : 103,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 52
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/ParagraphStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 285,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 239,
      "startLine" : 21,
      "endLine" : 27,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 94,
      "endLine" : 100,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 688,
      "endLine" : 694,
      "cleanedStartLine" : 373,
      "cleanedEndLine" : 379
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 800,
      "endLine" : 806,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 437
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 192,
      "endLine" : 199,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 379,
      "endLine" : 386,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/MetalSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 81,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 71,
      "endLine" : 77,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "skiko/src/uikitMain/kotlin/org/jetbrains/skiko/redrawer/MetalRedrawer.uikit.kt",
        "extension" : "kt",
        "linesOfCode" : 199,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 151,
      "startLine" : 232,
      "endLine" : 238,
      "cleanedStartLine" : 119,
      "cleanedEndLine" : 125
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 186,
      "endLine" : 193,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 503,
      "endLine" : 511,
      "cleanedStartLine" : 335,
      "cleanedEndLine" : 341
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 532,
      "endLine" : 540,
      "cleanedStartLine" : 361,
      "cleanedEndLine" : 367
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/PathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 52,
      "endLine" : 58,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/PathTest.kt",
        "extension" : "kt",
        "linesOfCode" : 92,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 70,
      "endLine" : 76,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 67
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 82,
      "endLine" : 88,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 63
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 108,
      "endLine" : 114,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 83
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 113,
      "endLine" : 119,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 125,
      "endLine" : 131,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 88
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 556,
      "endLine" : 565,
      "cleanedStartLine" : 396,
      "cleanedEndLine" : 402
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 590,
      "endLine" : 599,
      "cleanedStartLine" : 422,
      "cleanedEndLine" : 428
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 113,
      "endLine" : 119,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 622,
      "endLine" : 628,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 495
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 639,
      "endLine" : 645,
      "cleanedStartLine" : 504,
      "cleanedEndLine" : 510
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 167,
      "endLine" : 173,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 184,
      "endLine" : 190,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 314,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 263,
      "startLine" : 92,
      "endLine" : 98,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/shaper/Shaper.cc",
        "extension" : "cc",
        "linesOfCode" : 378,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 310,
      "startLine" : 138,
      "endLine" : 144,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 63,
      "endLine" : 69,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 178,
      "endLine" : 184,
      "cleanedStartLine" : 147,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 109,
      "endLine" : 115,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 124,
      "endLine" : 130,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1762,
      "endLine" : 1768,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 443
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1807,
      "endLine" : 1813,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/PathMeasure.cc",
        "extension" : "cc",
        "linesOfCode" : 109,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 82,
      "endLine" : 90,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/PathMeasure.cc",
        "extension" : "cc",
        "linesOfCode" : 105,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 420,
      "endLine" : 428,
      "cleanedStartLine" : 262,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 503,
      "endLine" : 511,
      "cleanedStartLine" : 335,
      "cleanedEndLine" : 341
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 88,
      "endLine" : 95,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 141,
      "endLine" : 148,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 305,
      "endLine" : 312,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 420,
      "endLine" : 428,
      "cleanedStartLine" : 262,
      "cleanedEndLine" : 268
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Paint.kt",
        "extension" : "kt",
        "linesOfCode" : 426,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 379,
      "startLine" : 532,
      "endLine" : 540,
      "cleanedStartLine" : 361,
      "cleanedEndLine" : 367
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 113,
      "endLine" : 119,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 108,
      "endLine" : 114,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 120,
      "endLine" : 126,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/StdVectorDecoder.cc",
        "extension" : "cc",
        "linesOfCode" : 27,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 22,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/StdVectorDecoder.cc",
        "extension" : "cc",
        "linesOfCode" : 26,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 151,
      "endLine" : 158,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ColorMatrix.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix33.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 106,
      "endLine" : 116,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 305,
      "endLine" : 312,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 233,
      "endLine" : 239,
      "cleanedStartLine" : 179,
      "cleanedEndLine" : 185
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 279,
      "endLine" : 285,
      "cleanedStartLine" : 220,
      "cleanedEndLine" : 226
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 26,
      "endLine" : 33,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1724,
      "endLine" : 1730,
      "cleanedStartLine" : 401,
      "cleanedEndLine" : 407
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1807,
      "endLine" : 1813,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/objectiveC/macos/Drawlayer.mm",
        "extension" : "mm",
        "linesOfCode" : 345,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 77,
      "endLine" : 85,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/objectiveC/macos/Drawlayer.mm",
        "extension" : "mm",
        "linesOfCode" : 345,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 150,
      "endLine" : 158,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 192,
      "endLine" : 199,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/shaper/Shaper.kt",
        "extension" : "kt",
        "linesOfCode" : 283,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 241,
      "startLine" : 155,
      "endLine" : 161,
      "cleanedStartLine" : 92,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/shaper/Shaper.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 38,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 12,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/karma.config.d/js/config.js",
        "extension" : "js",
        "linesOfCode" : 41,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 45,
      "endLine" : 51,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "skiko/karma.config.d/wasm/config.js",
        "extension" : "js",
        "linesOfCode" : 38,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 20,
      "endLine" : 26,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1724,
      "endLine" : 1730,
      "cleanedStartLine" : 401,
      "cleanedEndLine" : 407
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1762,
      "endLine" : 1768,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 443
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/skottie/Animation.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 12,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 1,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/skottie/Animation.native.kt",
        "extension" : "kt",
        "linesOfCode" : 12,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 1,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ColorMatrix.kt",
        "extension" : "kt",
        "linesOfCode" : 22,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix44.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 596,
      "endLine" : 602,
      "cleanedStartLine" : 467,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 19,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 379,
      "endLine" : 386,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.kt",
        "extension" : "kt",
        "linesOfCode" : 30,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 12,
      "endLine" : 19,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.native.kt",
        "extension" : "kt",
        "linesOfCode" : 31,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 28,
      "endLine" : 35,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 391,
      "endLine" : 397,
      "cleanedStartLine" : 310,
      "cleanedEndLine" : 316
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 404,
      "endLine" : 410,
      "cleanedStartLine" : 321,
      "cleanedEndLine" : 327
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmTest/kotlin/org/jetbrains/skia/skottie/AnimationTest.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 122,
      "endLine" : 128,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 305,
      "endLine" : 312,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 379,
      "endLine" : 386,
      "cleanedStartLine" : 301,
      "cleanedEndLine" : 307
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 102,
      "endLine" : 109,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 151,
      "endLine" : 158,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 101,
      "endLine" : 107,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 465,
      "endLine" : 471,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 387
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 561,
      "endLine" : 567,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 471
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/StrutStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 282,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 207,
      "endLine" : 216,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 143
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 319,
      "endLine" : 329,
      "cleanedStartLine" : 231,
      "cleanedEndLine" : 237
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix33.kt",
        "extension" : "kt",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 129,
      "startLine" : 106,
      "endLine" : 116,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Matrix44.kt",
        "extension" : "kt",
        "linesOfCode" : 35,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 39,
      "endLine" : 45,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 87,
      "endLine" : 93,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 110,
      "endLine" : 116,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 465,
      "endLine" : 471,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 387
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 594,
      "endLine" : 600,
      "cleanedStartLine" : 494,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1795,
      "endLine" : 1803,
      "cleanedStartLine" : 470,
      "cleanedEndLine" : 476
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1839,
      "endLine" : 1849,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 518
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 128,
      "endLine" : 134,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 95
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 87,
      "endLine" : 93,
      "cleanedStartLine" : 54,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/PathSegmentIterator.kt",
        "extension" : "kt",
        "linesOfCode" : 120,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 98,
      "endLine" : 104,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 528,
      "endLine" : 534,
      "cleanedStartLine" : 436,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 594,
      "endLine" : 600,
      "cleanedStartLine" : 494,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 344,
      "endLine" : 350,
      "cleanedStartLine" : 245,
      "cleanedEndLine" : 251
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 356,
      "endLine" : 362,
      "cleanedStartLine" : 256,
      "cleanedEndLine" : 262
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 151,
      "endLine" : 158,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 305,
      "endLine" : 312,
      "cleanedStartLine" : 246,
      "cleanedEndLine" : 252
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 122,
      "endLine" : 128,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 136,
      "endLine" : 142,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 528,
      "endLine" : 534,
      "cleanedStartLine" : 436,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 561,
      "endLine" : 567,
      "cleanedStartLine" : 465,
      "cleanedEndLine" : 471
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 125,
      "endLine" : 131,
      "cleanedStartLine" : 82,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 239,
      "endLine" : 245,
      "cleanedStartLine" : 163,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 423,
      "endLine" : 430,
      "cleanedStartLine" : 340,
      "cleanedEndLine" : 346
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 190,
      "endLine" : 196,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 249,
      "endLine" : 255,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 97
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/FontTests.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 141,
      "endLine" : 147,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 105
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/FontTests.kt",
        "extension" : "kt",
        "linesOfCode" : 145,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 151,
      "endLine" : 157,
      "cleanedStartLine" : 107,
      "cleanedEndLine" : 113
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 628,
      "endLine" : 634,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 501
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 494,
      "endLine" : 500,
      "cleanedStartLine" : 406,
      "cleanedEndLine" : 412
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 630,
      "endLine" : 636,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1751,
      "endLine" : 1759,
      "cleanedStartLine" : 428,
      "cleanedEndLine" : 434
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1839,
      "endLine" : 1849,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 518
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 120,
      "endLine" : 126,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 132,
      "endLine" : 138,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 137,
      "endLine" : 143,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/Native.native.kt",
        "extension" : "kt",
        "linesOfCode" : 225,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 178,
      "startLine" : 152,
      "endLine" : 158,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/impl/RefCnt.cc",
        "extension" : "cc",
        "linesOfCode" : 17,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 12,
      "startLine" : 4,
      "endLine" : 11,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/RefCnt.cc",
        "extension" : "cc",
        "linesOfCode" : 22,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 14,
      "startLine" : 5,
      "endLine" : 12,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 498,
      "endLine" : 505,
      "cleanedStartLine" : 326,
      "cleanedEndLine" : 332
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/interop.cc",
        "extension" : "cc",
        "linesOfCode" : 1019,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 808,
      "startLine" : 657,
      "endLine" : 664,
      "cleanedStartLine" : 434,
      "cleanedEndLine" : 440
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 848,
      "endLine" : 854,
      "cleanedStartLine" : 712,
      "cleanedEndLine" : 718
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 879,
      "endLine" : 885,
      "cleanedStartLine" : 741,
      "cleanedEndLine" : 747
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 596,
      "endLine" : 602,
      "cleanedStartLine" : 467,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 628,
      "endLine" : 634,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 501
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 465,
      "endLine" : 471,
      "cleanedStartLine" : 381,
      "cleanedEndLine" : 387
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 630,
      "endLine" : 636,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/androidMain/kotlin/org/jetbrains/skiko/Renderer.android.kt",
        "extension" : "kt",
        "linesOfCode" : 123,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 57,
      "endLine" : 63,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/SkiaLayer.awt.kt",
        "extension" : "kt",
        "linesOfCode" : 560,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 427,
      "startLine" : 658,
      "endLine" : 664,
      "cleanedStartLine" : 363,
      "cleanedEndLine" : 369
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 680,
      "endLine" : 686,
      "cleanedStartLine" : 365,
      "cleanedEndLine" : 371
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 737,
      "endLine" : 743,
      "cleanedStartLine" : 395,
      "cleanedEndLine" : 401
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 378,
      "endLine" : 384,
      "cleanedStartLine" : 162,
      "cleanedEndLine" : 168
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 394,
      "endLine" : 400,
      "cleanedStartLine" : 175,
      "cleanedEndLine" : 181
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 40,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobTest.kt",
        "extension" : "kt",
        "linesOfCode" : 205,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 185,
      "startLine" : 115,
      "endLine" : 122,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 566,
      "endLine" : 572,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 661,
      "endLine" : 667,
      "cleanedStartLine" : 524,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 139,
      "endLine" : 145,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 197,
      "endLine" : 203,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 395,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 282
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 408,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 293
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 528,
      "endLine" : 534,
      "cleanedStartLine" : 436,
      "cleanedEndLine" : 442
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 630,
      "endLine" : 636,
      "cleanedStartLine" : 526,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1897,
      "endLine" : 1902,
      "cleanedStartLine" : 561,
      "cleanedEndLine" : 566
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1922,
      "endLine" : 1927,
      "cleanedStartLine" : 585,
      "cleanedEndLine" : 590
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 172,
      "endLine" : 177,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 123
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 165,
      "endLine" : 170,
      "cleanedStartLine" : 114,
      "cleanedEndLine" : 119
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 612,
      "endLine" : 617,
      "cleanedStartLine" : 481,
      "cleanedEndLine" : 486
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 629,
      "endLine" : 634,
      "cleanedStartLine" : 496,
      "cleanedEndLine" : 501
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 662,
      "endLine" : 667,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 530
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 678,
      "endLine" : 683,
      "cleanedStartLine" : 539,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 242,
      "endLine" : 247,
      "cleanedStartLine" : 173,
      "cleanedEndLine" : 178
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 245,
      "endLine" : 250,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 38,
      "endLine" : 43,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "skiko/src/webMain/kotlin/org/jetbrains/skiko/CanvasRenderer.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 42,
      "endLine" : 47,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 48,
      "endLine" : 55,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 154,
      "endLine" : 161,
      "cleanedStartLine" : 111,
      "cleanedEndLine" : 116
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 234,
      "endLine" : 239,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 622,
      "endLine" : 627,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 84,
      "endLine" : 92,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 142,
      "endLine" : 148,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 148,
      "endLine" : 153,
      "cleanedStartLine" : 115,
      "cleanedEndLine" : 120
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 198,
      "endLine" : 203,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 257,
      "endLine" : 262,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 100,
      "endLine" : 105,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 201,
      "endLine" : 206,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/impl/RefCnt.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 24,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 7,
      "endLine" : 13,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/RefCnt.native.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 7,
      "endLine" : 13,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 272,
      "endLine" : 277,
      "cleanedStartLine" : 189,
      "cleanedEndLine" : 194
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/PaintFilterCanvas.cc",
        "extension" : "cc",
        "linesOfCode" : 41,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 26,
      "endLine" : 34,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/PaintFilterCanvas.cc",
        "extension" : "cc",
        "linesOfCode" : 51,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 29,
      "endLine" : 37,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 185,
      "endLine" : 190,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 207,
      "endLine" : 212,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 74,
      "endLine" : 81,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/TextBlobBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 169,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 108,
      "endLine" : 115,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 244,
      "endLine" : 249,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 257,
      "endLine" : 262,
      "cleanedStartLine" : 184,
      "cleanedEndLine" : 189
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 275,
      "endLine" : 280,
      "cleanedStartLine" : 199,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 270,
      "endLine" : 275,
      "cleanedStartLine" : 213,
      "cleanedEndLine" : 218
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 285,
      "endLine" : 290,
      "cleanedStartLine" : 226,
      "cleanedEndLine" : 231
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 394,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 807,
      "endLine" : 812,
      "cleanedStartLine" : 674,
      "cleanedEndLine" : 679
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 836,
      "endLine" : 841,
      "cleanedStartLine" : 701,
      "cleanedEndLine" : 706
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 597,
      "endLine" : 602,
      "cleanedStartLine" : 468,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 517
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 166,
      "endLine" : 171,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 83
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 306,
      "endLine" : 311,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Picture.cc",
        "extension" : "cc",
        "linesOfCode" : 84,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 87,
      "endLine" : 92,
      "cleanedStartLine" : 60,
      "cleanedEndLine" : 65
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Picture.cc",
        "extension" : "cc",
        "linesOfCode" : 84,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 67,
      "startLine" : 87,
      "endLine" : 92,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 597,
      "endLine" : 602,
      "cleanedStartLine" : 468,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 678,
      "endLine" : 683,
      "cleanedStartLine" : 539,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 37,
      "endLine" : 42,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 176,
      "endLine" : 181,
      "cleanedStartLine" : 121,
      "cleanedEndLine" : 126
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 253,
      "endLine" : 258,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 268,
      "endLine" : 273,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 328,
      "endLine" : 333,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 224
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 466,
      "endLine" : 471,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 387
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 583,
      "endLine" : 588,
      "cleanedStartLine" : 456,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 629,
      "endLine" : 634,
      "cleanedStartLine" : 496,
      "cleanedEndLine" : 501
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 583,
      "endLine" : 588,
      "cleanedStartLine" : 456,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 597,
      "endLine" : 602,
      "cleanedStartLine" : 468,
      "cleanedEndLine" : 473
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 287,
      "endLine" : 292,
      "cleanedStartLine" : 194,
      "cleanedEndLine" : 199
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 119,
      "endLine" : 124,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 344,
      "endLine" : 349,
      "cleanedStartLine" : 245,
      "cleanedEndLine" : 250
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 1022,
      "endLine" : 1027,
      "cleanedStartLine" : 389,
      "cleanedEndLine" : 394
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Font.kt",
        "extension" : "kt",
        "linesOfCode" : 495,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 401,
      "startLine" : 256,
      "endLine" : 261,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 441,
      "endLine" : 446,
      "cleanedStartLine" : 316,
      "cleanedEndLine" : 321
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 567,
      "endLine" : 572,
      "cleanedStartLine" : 442,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 612,
      "endLine" : 617,
      "cleanedStartLine" : 481,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 459,
      "endLine" : 464,
      "cleanedStartLine" : 375,
      "cleanedEndLine" : 380
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 816,
      "endLine" : 821,
      "cleanedStartLine" : 682,
      "cleanedEndLine" : 687
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1166,
      "endLine" : 1171,
      "cleanedStartLine" : 452,
      "cleanedEndLine" : 457
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 432,
      "endLine" : 437,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 612,
      "endLine" : 617,
      "cleanedStartLine" : 481,
      "cleanedEndLine" : 486
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 662,
      "endLine" : 667,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 459,
      "endLine" : 464,
      "cleanedStartLine" : 375,
      "cleanedEndLine" : 380
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 804,
      "endLine" : 809,
      "cleanedStartLine" : 671,
      "cleanedEndLine" : 676
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 236,
      "endLine" : 244,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skia/impl/Native.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 218,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 173,
      "startLine" : 236,
      "endLine" : 244,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 1558,
      "endLine" : 1563,
      "cleanedStartLine" : 1024,
      "cleanedEndLine" : 1029
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 1694,
      "endLine" : 1699,
      "cleanedStartLine" : 1138,
      "cleanedEndLine" : 1143
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 819,
      "endLine" : 824,
      "cleanedStartLine" : 685,
      "cleanedEndLine" : 690
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 836,
      "endLine" : 841,
      "cleanedStartLine" : 701,
      "cleanedEndLine" : 706
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/linux/SoftwareRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 113,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 83,
      "endLine" : 91,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/windows/SoftwareRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 96,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 66,
      "startLine" : 71,
      "endLine" : 79,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 567,
      "endLine" : 572,
      "cleanedStartLine" : 442,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 517
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 244,
      "endLine" : 249,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 597,
      "endLine" : 602,
      "cleanedStartLine" : 468,
      "cleanedEndLine" : 473
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 612,
      "endLine" : 617,
      "cleanedStartLine" : 481,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 567,
      "endLine" : 572,
      "cleanedStartLine" : 442,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 678,
      "endLine" : 683,
      "cleanedStartLine" : 539,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/BackendRenderTarget.cc",
        "extension" : "cc",
        "linesOfCode" : 48,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 47,
      "endLine" : 52,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/BackendRenderTarget.cc",
        "extension" : "cc",
        "linesOfCode" : 55,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 31,
      "startLine" : 50,
      "endLine" : 55,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1777,
      "endLine" : 1782,
      "cleanedStartLine" : 452,
      "cleanedEndLine" : 457
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1822,
      "endLine" : 1827,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 308,
      "endLine" : 313,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 211,
      "endLine" : 217,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 155
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 38,
      "endLine" : 46,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 179,
      "endLine" : 194,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 562,
      "endLine" : 567,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 471
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/androidMain/kotlin/org/jetbrains/skiko/Renderer.android.kt",
        "extension" : "kt",
        "linesOfCode" : 123,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 122,
      "endLine" : 127,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/LinuxOpenGLSwingRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 86,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 59,
      "endLine" : 64,
      "cleanedStartLine" : 37,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 394,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1141,
      "endLine" : 1146,
      "cleanedStartLine" : 431,
      "cleanedEndLine" : 436
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 631,
      "endLine" : 636,
      "cleanedStartLine" : 527,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 529,
      "endLine" : 534,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/BackendRenderTarget.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 52,
      "endLine" : 57,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/BackendRenderTarget.kt",
        "extension" : "kt",
        "linesOfCode" : 60,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 47,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 244,
      "endLine" : 249,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 700,
      "endLine" : 706,
      "cleanedStartLine" : 385,
      "cleanedEndLine" : 390
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 879,
      "endLine" : 885,
      "cleanedStartLine" : 478,
      "cleanedEndLine" : 483
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/redrawer/MetalRedrawer.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 188,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 121,
      "startLine" : 197,
      "endLine" : 203,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/redrawer/OpenGLRedrawer.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 116,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 82,
      "startLine" : 84,
      "endLine" : 90,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 43,
      "endLine" : 48,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 495,
      "endLine" : 500,
      "cleanedStartLine" : 407,
      "cleanedEndLine" : 412
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 29,
      "endLine" : 35,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 390,
      "endLine" : 397,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 759,
      "endLine" : 766,
      "cleanedStartLine" : 417,
      "cleanedEndLine" : 422
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/impl/Native.kt",
        "extension" : "kt",
        "linesOfCode" : 139,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 87,
      "endLine" : 92,
      "cleanedStartLine" : 56,
      "cleanedEndLine" : 61
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/impl/Native.kt",
        "extension" : "kt",
        "linesOfCode" : 139,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 118,
      "startLine" : 122,
      "endLine" : 127,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 562,
      "endLine" : 567,
      "cleanedStartLine" : 466,
      "cleanedEndLine" : 471
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/AWTRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 57,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 58,
      "endLine" : 63,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/swing/SwingRedrawerBase.kt",
        "extension" : "kt",
        "linesOfCode" : 79,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 58,
      "startLine" : 91,
      "endLine" : 96,
      "cleanedStartLine" : 48,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 394,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/SkiaLayer.awt.kt",
        "extension" : "kt",
        "linesOfCode" : 560,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 427,
      "startLine" : 574,
      "endLine" : 581,
      "cleanedStartLine" : 315,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/SkiaLayer.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 122,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 153,
      "endLine" : 160,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 517
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 662,
      "endLine" : 667,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 103,
      "endLine" : 108,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 110,
      "endLine" : 115,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 71
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 595,
      "endLine" : 600,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 30,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 595,
      "endLine" : 600,
      "cleanedStartLine" : 495,
      "cleanedEndLine" : 500
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/linuxMain/kotlin/org/jetbrains/skiko/Actuals.linux.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 27,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "skiko/src/uikitMain/kotlin/org/jetbrains/skiko/Actuals.uikit.kt",
        "extension" : "kt",
        "linesOfCode" : 20,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 16,
      "startLine" : 21,
      "endLine" : 26,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/TextBlobBuilder.kt",
        "extension" : "kt",
        "linesOfCode" : 162,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 138,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 394,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/buildSrc/src/main/kotlin/tasks/configuration/JvmTasksConfiguration.kt",
        "extension" : "kt",
        "linesOfCode" : 491,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 412,
      "startLine" : 96,
      "endLine" : 101,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "skiko/buildSrc/src/main/kotlin/tasks/configuration/NativeTasksConfiguration.kt",
        "extension" : "kt",
        "linesOfCode" : 320,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 248,
      "startLine" : 136,
      "endLine" : 141,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 390,
      "endLine" : 397,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 815,
      "endLine" : 822,
      "cleanedStartLine" : 446,
      "cleanedEndLine" : 451
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 249,
      "endLine" : 254,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 907,
      "endLine" : 912,
      "cleanedStartLine" : 633,
      "cleanedEndLine" : 638
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 1291,
      "endLine" : 1296,
      "cleanedStartLine" : 892,
      "cleanedEndLine" : 897
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 394,
      "endLine" : 399,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 432,
      "endLine" : 437,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 134
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 123,
      "endLine" : 128,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/context/AngleContextHandler.kt",
        "extension" : "kt",
        "linesOfCode" : 47,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "skiko/src/macosMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.macos.kt",
        "extension" : "kt",
        "linesOfCode" : 68,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 68,
      "endLine" : 73,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 140,
      "endLine" : 145,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 257,
      "endLine" : 262,
      "cleanedStartLine" : 99,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 390,
      "endLine" : 397,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Canvas.kt",
        "extension" : "kt",
        "linesOfCode" : 1364,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1205,
      "startLine" : 882,
      "endLine" : 889,
      "cleanedStartLine" : 481,
      "cleanedEndLine" : 486
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 61,
      "cleanedEndLine" : 66
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Codec.kt",
        "extension" : "kt",
        "linesOfCode" : 197,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 168,
      "startLine" : 190,
      "endLine" : 195,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 137,
      "endLine" : 142,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1129,
      "endLine" : 1134,
      "cleanedStartLine" : 421,
      "cleanedEndLine" : 426
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 907,
      "endLine" : 912,
      "cleanedStartLine" : 633,
      "cleanedEndLine" : 638
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/SkiaLayerTest.kt",
        "extension" : "kt",
        "linesOfCode" : 1247,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 1023,
      "startLine" : 1225,
      "endLine" : 1230,
      "cleanedStartLine" : 845,
      "cleanedEndLine" : 850
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 583,
      "endLine" : 588,
      "cleanedStartLine" : 456,
      "cleanedEndLine" : 461
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 662,
      "endLine" : 667,
      "cleanedStartLine" : 525,
      "cleanedEndLine" : 530
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 23,
      "endLine" : 28,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 159,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 143,
      "endLine" : 148,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 244,
      "endLine" : 249,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 159,
      "endLine" : 164,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 118
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Region.kt",
        "extension" : "kt",
        "linesOfCode" : 373,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 313,
      "startLine" : 218,
      "endLine" : 223,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 253,
      "endLine" : 258,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 18,
      "endLine" : 23,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 109,
      "endLine" : 114,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 244,
      "endLine" : 249,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 488,
      "endLine" : 493,
      "cleanedStartLine" : 400,
      "cleanedEndLine" : 405
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 816,
      "endLine" : 821,
      "cleanedStartLine" : 682,
      "cleanedEndLine" : 687
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 210,
      "endLine" : 215,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 221,
      "endLine" : 226,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 488,
      "endLine" : 493,
      "cleanedStartLine" : 400,
      "cleanedEndLine" : 405
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 804,
      "endLine" : 809,
      "cleanedStartLine" : 671,
      "cleanedEndLine" : 676
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 120,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 402,
      "endLine" : 407,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 292
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 136,
      "endLine" : 141,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 140,
      "endLine" : 145,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 355,
      "endLine" : 360,
      "cleanedStartLine" : 255,
      "cleanedEndLine" : 260
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 389,
      "endLine" : 394,
      "cleanedStartLine" : 276,
      "cleanedEndLine" : 281
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 567,
      "endLine" : 572,
      "cleanedStartLine" : 442,
      "cleanedEndLine" : 447
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 583,
      "endLine" : 588,
      "cleanedStartLine" : 456,
      "cleanedEndLine" : 461
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 126,
      "endLine" : 131,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 88
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/PaintTest.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 28,
      "endLine" : 33,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtTest/kotlin/org/jetbrains/skiko/PaintTest.kt",
        "extension" : "kt",
        "linesOfCode" : 75,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 211,
      "endLine" : 217,
      "cleanedStartLine" : 150,
      "cleanedEndLine" : 155
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 822,
      "endLine" : 827,
      "cleanedStartLine" : 312,
      "cleanedEndLine" : 317
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1803,
      "endLine" : 1808,
      "cleanedStartLine" : 476,
      "cleanedEndLine" : 481
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Path.kt",
        "extension" : "kt",
        "linesOfCode" : 925,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 794,
      "startLine" : 1818,
      "endLine" : 1823,
      "cleanedStartLine" : 491,
      "cleanedEndLine" : 496
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 495,
      "endLine" : 500,
      "cleanedStartLine" : 407,
      "cleanedEndLine" : 412
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/StrutStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 282,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 232,
      "endLine" : 242,
      "cleanedStartLine" : 155,
      "cleanedEndLine" : 160
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 345,
      "endLine" : 355,
      "cleanedStartLine" : 249,
      "cleanedEndLine" : 254
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 127,
      "endLine" : 132,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 134,
      "endLine" : 139,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 91
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 448,
      "endLine" : 454,
      "cleanedStartLine" : 368,
      "cleanedEndLine" : 373
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 431,
      "endLine" : 436,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 1037,
      "endLine" : 1042,
      "cleanedStartLine" : 401,
      "cleanedEndLine" : 406
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 163,
      "endLine" : 168,
      "cleanedStartLine" : 122,
      "cleanedEndLine" : 127
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 175,
      "endLine" : 180,
      "cleanedStartLine" : 132,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 447,
      "endLine" : 452,
      "cleanedStartLine" : 161,
      "cleanedEndLine" : 166
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 485,
      "endLine" : 490,
      "cleanedStartLine" : 170,
      "cleanedEndLine" : 175
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 149,
      "endLine" : 154,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/StrutStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 282,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 218,
      "endLine" : 227,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 150
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 331,
      "endLine" : 340,
      "cleanedStartLine" : 239,
      "cleanedEndLine" : 244
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 529,
      "endLine" : 534,
      "cleanedStartLine" : 437,
      "cleanedEndLine" : 442
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 16,
      "endLine" : 21,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 631,
      "endLine" : 636,
      "cleanedStartLine" : 527,
      "cleanedEndLine" : 532
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 629,
      "endLine" : 634,
      "cleanedStartLine" : 496,
      "cleanedEndLine" : 501
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 647,
      "endLine" : 652,
      "cleanedStartLine" : 512,
      "cleanedEndLine" : 517
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeMain/kotlin/org/jetbrains/skia/impl/RefCnt.native.kt",
        "extension" : "kt",
        "linesOfCode" : 21,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "skiko/src/webMain/kotlin/org/jetbrains/skia/impl/RefCnt.js.kt",
        "extension" : "kt",
        "linesOfCode" : 19,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 18,
      "endLine" : 26,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/kotlin/org/jetbrains/skia/impl/Native.jvm.kt",
        "extension" : "kt",
        "linesOfCode" : 95,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 80,
      "startLine" : 115,
      "endLine" : 124,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/webMain/kotlin/org/jetbrains/skia/impl/Native.js.kt",
        "extension" : "kt",
        "linesOfCode" : 165,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 127,
      "startLine" : 66,
      "endLine" : 75,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 377,
      "endLine" : 384,
      "cleanedStartLine" : 270,
      "cleanedEndLine" : 275
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 121,
      "endLine" : 126,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 466,
      "endLine" : 471,
      "cleanedStartLine" : 382,
      "cleanedEndLine" : 387
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/objectiveC/macos/Drawlayer.mm",
        "extension" : "mm",
        "linesOfCode" : 345,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 117,
      "endLine" : 122,
      "cleanedStartLine" : 57,
      "cleanedEndLine" : 62
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/objectiveC/macos/Drawlayer.mm",
        "extension" : "mm",
        "linesOfCode" : 345,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 237,
      "startLine" : 173,
      "endLine" : 178,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 328,
      "endLine" : 335,
      "cleanedStartLine" : 235,
      "cleanedEndLine" : 240
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 352,
      "endLine" : 359,
      "cleanedStartLine" : 252,
      "cleanedEndLine" : 257
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/ColorFilter.cc",
        "extension" : "cc",
        "linesOfCode" : 111,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 90,
      "startLine" : 95,
      "endLine" : 100,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/ColorFilter.cc",
        "extension" : "cc",
        "linesOfCode" : 92,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 84,
      "endLine" : 89,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 56
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 280,
      "endLine" : 287,
      "cleanedStartLine" : 202,
      "cleanedEndLine" : 207
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 304,
      "endLine" : 311,
      "cleanedStartLine" : 218,
      "cleanedEndLine" : 223
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/cpp/linux/swingRedrawer.cc",
        "extension" : "cc",
        "linesOfCode" : 188,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 137,
      "startLine" : 35,
      "endLine" : 41,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 23
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsTest/cpp/TestHelpers.cc",
        "extension" : "cc",
        "linesOfCode" : 149,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 119,
      "startLine" : 112,
      "endLine" : 118,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 76
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 629,
      "endLine" : 634,
      "cleanedStartLine" : 496,
      "cleanedEndLine" : 501
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 678,
      "endLine" : 683,
      "cleanedStartLine" : 539,
      "cleanedEndLine" : 544
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1062,
      "endLine" : 1067,
      "cleanedStartLine" : 376,
      "cleanedEndLine" : 381
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Picture.kt",
        "extension" : "kt",
        "linesOfCode" : 130,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 110,
      "startLine" : 213,
      "endLine" : 218,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1153,
      "endLine" : 1158,
      "cleanedStartLine" : 441,
      "cleanedEndLine" : 446
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/StrutStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 282,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 54,
      "endLine" : 62,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 144,
      "endLine" : 152,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 543,
      "endLine" : 549,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 102,
      "endLine" : 107,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Pixmap.kt",
        "extension" : "kt",
        "linesOfCode" : 370,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 314,
      "startLine" : 356,
      "endLine" : 361,
      "cleanedStartLine" : 256,
      "cleanedEndLine" : 261
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 1022,
      "endLine" : 1027,
      "cleanedStartLine" : 389,
      "cleanedEndLine" : 394
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 280,
      "endLine" : 285,
      "cleanedStartLine" : 221,
      "cleanedEndLine" : 226
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 622,
      "endLine" : 627,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 253,
      "endLine" : 258,
      "cleanedStartLine" : 169,
      "cleanedEndLine" : 174
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 283,
      "endLine" : 288,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 305,
      "endLine" : 310,
      "cleanedStartLine" : 154,
      "cleanedEndLine" : 159
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 124,
      "endLine" : 129,
      "cleanedStartLine" : 95,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 403,
      "endLine" : 410,
      "cleanedStartLine" : 289,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 191,
      "endLine" : 197,
      "cleanedStartLine" : 160,
      "cleanedEndLine" : 165
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 88,
      "endLine" : 93,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 133,
      "endLine" : 138,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 236,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 194,
      "startLine" : 132,
      "endLine" : 137,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 94
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 477,
      "endLine" : 483,
      "cleanedStartLine" : 393,
      "cleanedEndLine" : 398
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 536,
      "endLine" : 541,
      "cleanedStartLine" : 444,
      "cleanedEndLine" : 449
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 638,
      "endLine" : 643,
      "cleanedStartLine" : 534,
      "cleanedEndLine" : 539
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 115,
      "endLine" : 120,
      "cleanedStartLine" : 74,
      "cleanedEndLine" : 79
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 258,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 210,
      "startLine" : 122,
      "endLine" : 127,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 81
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Image.kt",
        "extension" : "kt",
        "linesOfCode" : 295,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 250,
      "startLine" : 308,
      "endLine" : 313,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Surface.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 479,
      "startLine" : 822,
      "endLine" : 827,
      "cleanedStartLine" : 312,
      "cleanedEndLine" : 317
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 240,
      "endLine" : 245,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 455,
      "endLine" : 462,
      "cleanedStartLine" : 325,
      "cleanedEndLine" : 330
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 351,
      "endLine" : 356,
      "cleanedStartLine" : 275,
      "cleanedEndLine" : 280
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 363,
      "endLine" : 368,
      "cleanedStartLine" : 285,
      "cleanedEndLine" : 290
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 576,
      "endLine" : 582,
      "cleanedStartLine" : 480,
      "cleanedEndLine" : 485
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "skiko/src/nativeJsMain/cpp/Pixmap.cc",
        "extension" : "cc",
        "linesOfCode" : 152,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 126,
      "startLine" : 40,
      "endLine" : 45,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 249,
      "endLine" : 254,
      "cleanedStartLine" : 195,
      "cleanedEndLine" : 200
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 297,
      "endLine" : 302,
      "cleanedStartLine" : 238,
      "cleanedEndLine" : 243
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/Direct3DRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 121,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 89,
      "startLine" : 68,
      "endLine" : 75,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/SoftwareRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 256,
      "endLine" : 263,
      "cleanedStartLine" : 186,
      "cleanedEndLine" : 191
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 481,
      "endLine" : 488,
      "cleanedStartLine" : 343,
      "cleanedEndLine" : 348
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 100,
      "endLine" : 105,
      "cleanedStartLine" : 75,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 44,
      "endLine" : 50,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/TextBlobBuilder.cc",
        "extension" : "cc",
        "linesOfCode" : 67,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 60,
      "endLine" : 66,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 85,
      "cleanedEndLine" : 90
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/DecorationStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 172,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 150,
      "startLine" : 160,
      "endLine" : 165,
      "cleanedStartLine" : 125,
      "cleanedEndLine" : 130
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 230,
      "endLine" : 237,
      "cleanedStartLine" : 168,
      "cleanedEndLine" : 173
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 429,
      "endLine" : 436,
      "cleanedStartLine" : 307,
      "cleanedEndLine" : 312
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1165,
      "endLine" : 1170,
      "cleanedStartLine" : 451,
      "cleanedEndLine" : 456
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 1218,
      "endLine" : 1223,
      "cleanedStartLine" : 489,
      "cleanedEndLine" : 494
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 280,
      "endLine" : 285,
      "cleanedStartLine" : 221,
      "cleanedEndLine" : 226
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 639,
      "endLine" : 644,
      "cleanedStartLine" : 504,
      "cleanedEndLine" : 509
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/ImageFilterTest.kt",
        "extension" : "kt",
        "linesOfCode" : 553,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 485,
      "startLine" : 16,
      "endLine" : 23,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonTest/kotlin/org/jetbrains/skia/RuntimeShaderBuilderTest.kt",
        "extension" : "kt",
        "linesOfCode" : 74,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 59,
      "startLine" : 10,
      "endLine" : 17,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 138,
      "endLine" : 143,
      "cleanedStartLine" : 93,
      "cleanedEndLine" : 98
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 168,
      "endLine" : 173,
      "cleanedStartLine" : 80,
      "cleanedEndLine" : 85
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/AnimationFrameInfo.kt",
        "extension" : "kt",
        "linesOfCode" : 181,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 162,
      "startLine" : 207,
      "endLine" : 212,
      "cleanedStartLine" : 102,
      "cleanedEndLine" : 107
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 471,
      "endLine" : 476,
      "cleanedStartLine" : 145,
      "cleanedEndLine" : 150
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Bitmap.kt",
        "extension" : "kt",
        "linesOfCode" : 588,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 505,
      "startLine" : 579,
      "endLine" : 584,
      "cleanedStartLine" : 178,
      "cleanedEndLine" : 183
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 234,
      "endLine" : 239,
      "cleanedStartLine" : 180,
      "cleanedEndLine" : 185
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/Shader.kt",
        "extension" : "kt",
        "linesOfCode" : 629,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 568,
      "startLine" : 639,
      "endLine" : 644,
      "cleanedStartLine" : 504,
      "cleanedEndLine" : 509
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jsMain/kotlin/org/jetbrains/skiko/Actuals.js.kt",
        "extension" : "kt",
        "linesOfCode" : 11,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 8,
      "startLine" : 1,
      "endLine" : 13,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "skiko/src/wasmJsMain/kotlin/org/jetbrains/skiko/Actuals.wasm.kt",
        "extension" : "kt",
        "linesOfCode" : 11,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 7,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 243,
      "endLine" : 249,
      "cleanedStartLine" : 203,
      "cleanedEndLine" : 208
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Image.cc",
        "extension" : "cc",
        "linesOfCode" : 160,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 124,
      "startLine" : 20,
      "endLine" : 25,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 128,
      "endLine" : 133,
      "cleanedStartLine" : 91,
      "cleanedEndLine" : 96
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/AngleRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 96,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 68,
      "endLine" : 75,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 48
    }, {
      "file" : {
        "relativePath" : "skiko/src/awtMain/kotlin/org/jetbrains/skiko/redrawer/SoftwareRedrawer.kt",
        "extension" : "kt",
        "linesOfCode" : 48,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 506,
      "endLine" : 512,
      "cleanedStartLine" : 418,
      "cleanedEndLine" : 423
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Bitmap.cc",
        "extension" : "cc",
        "linesOfCode" : 244,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 200,
      "startLine" : 114,
      "endLine" : 119,
      "cleanedStartLine" : 73,
      "cleanedEndLine" : 78
    }, {
      "file" : {
        "relativePath" : "skiko/src/jvmMain/cpp/common/Surface.cc",
        "extension" : "cc",
        "linesOfCode" : 240,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 198,
      "startLine" : 241,
      "endLine" : 246,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/StrutStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 282,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 220,
      "startLine" : 78,
      "endLine" : 86,
      "cleanedStartLine" : 44,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/paragraph/TextStyle.kt",
        "extension" : "kt",
        "linesOfCode" : 589,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 488,
      "startLine" : 241,
      "endLine" : 249,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 162,
      "endLine" : 168,
      "cleanedStartLine" : 135,
      "cleanedEndLine" : 140
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 280,
      "endLine" : 286,
      "cleanedStartLine" : 236,
      "cleanedEndLine" : 241
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 431,
      "endLine" : 437,
      "cleanedStartLine" : 355,
      "cleanedEndLine" : 360
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 646,
      "endLine" : 652,
      "cleanedStartLine" : 542,
      "cleanedEndLine" : 547
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 74,
      "endLine" : 80,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 67
    }, {
      "file" : {
        "relativePath" : "skiko/src/commonMain/kotlin/org/jetbrains/skia/ImageFilter.kt",
        "extension" : "kt",
        "linesOfCode" : 828,
        "components" : [ "primary::skiko" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 747,
      "startLine" : 607,
      "endLine" : 613,
      "cleanedStartLine" : 507,
      "cleanedEndLine" : 512
    } ]
  } ],
  "overallDuplication" : null
}