{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:11:47",
  "duplicates" : [ {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "cli/src/main/kotlin/org/jetbrains/zip/signer/ZipSigningTool.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::cli" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 80,
      "endLine" : 110,
      "cleanedStartLine" : 53,
      "cleanedEndLine" : 73
    }, {
      "file" : {
        "relativePath" : "google-kms-signer-cli/src/main/kotlin/org/jetbrains/zip/signer/GoogleCloudSignerCli.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::google-kms-signer-cli" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 68,
      "endLine" : 98,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 63
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "cli/src/main/kotlin/org/jetbrains/zip/signer/ZipSigningTool.kt",
        "extension" : "kt",
        "linesOfCode" : 124,
        "components" : [ "primary::cli" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 98,
      "startLine" : 20,
      "endLine" : 40,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "google-kms-signer-cli/src/main/kotlin/org/jetbrains/zip/signer/GoogleCloudSignerCli.kt",
        "extension" : "kt",
        "linesOfCode" : 114,
        "components" : [ "primary::google-kms-signer-cli" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 86,
      "startLine" : 18,
      "endLine" : 38,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 18
    } ]
  } ],
  "overallDuplication" : null
}