{
  "llm": {
    "conf": 0.031978544,
    "grade": "benign",
    "model": "Qwen/Qwen3.8-27B",
    "outcome": "benign",
    "interpretation": "Legitimate Ruby gem"
  },
  "ml": {
    "v": "7",
    "eng": "2.8.0",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.047729176,
        "rte": "az",
        "prob": 0.047729176
      },
      {
        "cls": 0,
        "raw": 0.0064581432,
        "rte": "az/gem",
        "prob": 0.0064581432
      }
    ],
    "prob": 0.047729176,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.04772917553782463,
        "type": "gem"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000026106834411621094,
        "type": "tar.gz"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000023663043975830078,
        "type": "ruby"
      },
      {
        "id": 3,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001519918441772461,
        "type": "ruby"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014523665413435083,
        "type": "ruby"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000017096599549404345,
        "type": "ruby"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001566608807479497,
        "type": "ruby"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001554687878524419,
        "type": "ruby"
      },
      {
        "id": 9,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001783172228897456,
        "type": "ruby"
      },
      {
        "id": 10,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000014603137969970703,
        "type": "ruby"
      },
      {
        "id": 11,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00001796086689864751,
        "type": "ruby"
      },
      {
        "id": 37,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012745459571306128,
        "type": "registry"
      },
      {
        "id": 38,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012685854926530737,
        "type": "registry"
      },
      {
        "id": 39,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012745459571306128,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-09-02T02:06:16Z"
  },
  "path": "hanami-utils-1.3.0.gem",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "zdN/$wmoN*e[YFg00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fFCgmg=d2?fFCgmfFCfXfFA",
            "ln": 0
          }
        ],
        "mol": "H₄(Cm₂DbF₂Po₂)Md(Pa)",
        "sha": "57e8fd9c5f51b2bb524d7f02be86bf708f0929915f3f8482389d4e643e59a5a8",
        "path": "hanami-utils-1.3.0.gem",
        "refs": [
          {
            "to": "pkg:gem/transproc",
            "off": 0,
            "kind": "dependency"
          },
          {
            "to": "pkg:gem/concurrent-ruby",
            "off": 0,
            "kind": "dependency"
          }
        ],
        "risk": 7,
        "size": 49152,
        "type": "gem",
        "facts": {
          "metrics": {
            "gem": {
              "dependency_count": 5,
              "runtime_dependency_count": 2,
              "development_dependency_count": 3
            },
            "file": {
              "size": 49152,
              "entropy": 7.83
            },
            "binary": {
              "peak_region_bytes": 44032,
              "peak_region_entropy": 7.82
            },
            "archive": {
              "file_count": 3,
              "member_count": 3,
              "script_count": 0,
              "directory_count": 0,
              "executable_count": 0,
              "hidden_file_count": 0,
              "uncompressed_size": 46031,
              "max_filename_length": 17,
              "rtlo_filename_count": 0,
              "format.regular_count": 3,
              "nested_archive_count": 3,
              "path_traversal_count": 0,
              "symlink_escape_count": 0,
              "security.setgid_count": 0,
              "security.setuid_count": 0,
              "security.sticky_count": 0,
              "double_extension_count": 0,
              "security.symlink_count": 0,
              "unicode_filename_count": 0,
              "homoglyph_filename_count": 0,
              "timing.mtime_unique_count": 1,
              "misplaced_executable_count": 0,
              "timing.mtime_spread_seconds": 0,
              "security.world_writable_count": 0
            }
          }
        },
        "ident": {
          "name": {
            "value": "hanami-utils",
            "source": "gem.name",
            "verified": false
          },
          "urls": [
            {
              "url": "http://hanamirb.org",
              "kind": "homepage",
              "source": "gem.homepage"
            }
          ],
          "trust": "unsigned",
          "authors": [
            {
              "name": "Luca Guidi",
              "role": "author",
              "source": "gem.authors"
            }
          ],
          "version": {
            "value": "1.3.0",
            "source": "gem.version",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "metadata/file/profile/language::lang-english--atom-3",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"that\""
          },
          {
            "id": "micro-behaviors/communications/http/url/forge::public-code-forge-url",
            "conf": 0.9,
            "crit": 3,
            "desc": "References a public code-forge URL"
          },
          {
            "id": "micro-behaviors/fs/file/copy::ruby-fileutils-copy",
            "conf": 0.9,
            "crit": 3,
            "desc": "Copies a file with Ruby FileUtils"
          },
          {
            "id": "micro-behaviors/process/interpreter/eval::ruby-class-eval",
            "atk": "T1059",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby class_eval call"
          },
          {
            "id": "micro-behaviors/communications/http/message::http-prefix",
            "conf": 0.9,
            "crit": 2,
            "desc": "HTTP protocol prefix"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-public-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby public_send method dispatch"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-5",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"for\""
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-7",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"this\""
          },
          {
            "id": "micro-behaviors/communications/http/message::http-url-literal",
            "conf": 0.75,
            "crit": 2,
            "desc": "HTTP URL string literal"
          },
          {
            "id": "micro-behaviors/communications/http/url/scheme::cleartext-http-url-code-literal",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.9,
            "crit": 3,
            "desc": "Code embeds cleartext HTTP URL literal"
          },
          {
            "id": "micro-behaviors/fs/directory/mkdir::ruby-fileutils-mkdir-p",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby creates a directory tree"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-1",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"the\""
          },
          {
            "id": "micro-behaviors/process/create/shell/lang::ruby-subshell-command",
            "conf": 0.93,
            "crit": 3,
            "desc": "Ruby subshell command execution"
          },
          {
            "id": "metadata/package/config::gemspec-name-assignment",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby gemspec assigns package name"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-const-get",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically resolves a constant"
          }
        ]
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 44915,
              "entropy": 7.99
            },
            "parse": {
              "error_count": 1
            },
            "binary": {
              "peak_region_bytes": 44915,
              "peak_region_entropy": 7.82
            }
          }
        },
        "id": 1,
        "mol": "H₄(Cm₂DbF₂Po₂)Md(Pa)",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz",
        "pid": 0,
        "risk": 7,
        "sha": "c43ad54f3b64f2fa951a463e52d2606fb5636b61760659aecebe2c26d0023953",
        "size": 44915,
        "traits": [
          {
            "id": "micro-behaviors/communications/http/url/forge::public-code-forge-url",
            "conf": 0.9,
            "crit": 3,
            "desc": "References a public code-forge URL"
          },
          {
            "id": "micro-behaviors/communications/http/message::http-url-literal",
            "conf": 0.75,
            "crit": 2,
            "desc": "HTTP URL string literal"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-1",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"the\""
          },
          {
            "id": "metadata/package/config::gemspec-name-assignment",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby gemspec assigns package name"
          },
          {
            "id": "micro-behaviors/communications/http/url/scheme::cleartext-http-url-code-literal",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.9,
            "crit": 3,
            "desc": "Code embeds cleartext HTTP URL literal"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send"
          },
          {
            "id": "micro-behaviors/communications/http/message::http-prefix",
            "conf": 0.9,
            "crit": 2,
            "desc": "HTTP protocol prefix"
          },
          {
            "id": "micro-behaviors/process/create/shell/lang::ruby-subshell-command",
            "conf": 0.93,
            "crit": 3,
            "desc": "Ruby subshell command execution"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-const-get",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically resolves a constant"
          },
          {
            "id": "micro-behaviors/process/interpreter/eval::ruby-class-eval",
            "atk": "T1059",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby class_eval call"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-7",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"this\""
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-public-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby public_send method dispatch"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-3",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"that\""
          },
          {
            "id": "micro-behaviors/fs/file/copy::ruby-fileutils-copy",
            "conf": 0.9,
            "crit": 3,
            "desc": "Copies a file with Ruby FileUtils"
          },
          {
            "id": "micro-behaviors/fs/directory/mkdir::ruby-fileutils-mkdir-p",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby creates a directory tree"
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-5",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"for\""
          }
        ],
        "type": "tar.gz"
      },
      {
        "ctx": [
          {
            "b": "y?Wu3jS)jdy?kkgCYm8ewm6p:Bz96Ie?O![x\u003c@CvaywFBnLzMWuNVscoIW@xuR\u003c3/ng]45B7/o1Bsp%tvKSBxzFS)9B08-4pEdxQp^F5Ke[]iky\u0026%o1kpytZvKRU8wPq\u003cbA+cvvxKL^!zd$UCBzkMjflQ]EB7]MgcKHhJwO\u003cE?q/DqTx\u003ez6?vruj4zz2*rCoyBmaBFlHwN*8{arU-AwN^ugvqPM#arR^HarR^HauZ?{xKL^!zd$OABzkMjcKH$sB8UY2e{p/DB7]MgarR^HarR^\u0026av]{UvqPZti-Qooy\u0026.S#rZ/[+nL-7*arU-AwN^u3B-.qnA=SuCarR^HauZ\u0026KcROU)viw6.x\u003eg{9t).X%B8UY2e[F)dx(1[marR^HarR^\u0026ax{jgwK3",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "B0?qqaAIHkv\u003eI?BzeAZ4C{1jLarR^HjS(aIBZ/Rsv@Dy0az2!twO#Q7z/fRsvqYP#nmuyAzd$bnBzkM9BzkrccKH$sB8UY2e[/fuwPh6\u003cwGS9rarR^\u0026asy\u0026ABz%n]fka^ivqP.0vLhOtxd13eaAIHkv\u003eIOiv}xL0wGS9rarR^HjS(aDnMm5A3lQEjAaJJiw[=6)B08OFarR^HarS/\u0026u$Tg}az=9Jw[=6)B094^az++3fdF8ini{0vmncGEe]tbwoI4Pupe:OlzdB+!ml%somj@B/azth3vqPZgB-.tlB1R9pzf6Vcv{*{gAbolgc)QC{3lQEjAaJJiwQ4=@B-.53y?mVgarS/\u0026B8UY2e[O*lwPGFpA+fhrc31usvRGZkEjlp=aBE^GavZ6YwIdC2B7Gk$zdLbcdiK3CarU-AwN^umwPI%2w[=6)B08OFauZ\u0026*AaJJiw[=6)B1R9CwPf4zA^E",
            "ln": 369,
            "col": 40,
            "line": 10
          },
          {
            "b": "wPhi#wmYT*C{1FPvqxB4efD5TaszR4atCS03lQEjAaJJivpS[QwmY{}y\u0026sofwO#P%wmYZ\u003ezE^r@v%GgAA=Vhhv\u003c-/IarS4Xj%hTlhZX@zzE:7",
            "ln": 1021,
            "col": 25,
            "line": 25
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "expand_path"
            ],
            [
              "",
              "unshift"
            ],
            [
              "",
              "include?"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "name"
            ],
            [
              "",
              "version"
            ],
            [
              "",
              "authors"
            ],
            [
              "",
              "email"
            ],
            [
              "",
              "description"
            ],
            [
              "",
              "summary"
            ],
            [
              "",
              "homepage"
            ],
            [
              "",
              "license"
            ],
            [
              "",
              "files"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "executables"
            ],
            [
              "",
              "grep"
            ],
            [
              "",
              "files"
            ],
            [
              "",
              "basename"
            ],
            [
              "",
              "test_files"
            ],
            [
              "",
              "grep"
            ],
            [
              "",
              "files"
            ],
            [
              "",
              "require_paths"
            ],
            [
              "",
              "required_ruby_version"
            ],
            [
              "",
              "add_dependency"
            ],
            [
              "",
              "add_dependency"
            ],
            [
              "",
              "add_development_dependency"
            ],
            [
              "",
              "add_development_dependency"
            ],
            [
              "",
              "add_development_dependency"
            ],
            [
              "",
              "hanami/utils/version"
            ]
          ],
          "mbr": [
            "File.basename",
            "File.expand_path",
            "spec.add_dependency",
            "spec.add_development_dependency",
            "spec.authors",
            "spec.description",
            "spec.email",
            "spec.executables",
            "spec.files",
            "spec.files.grep",
            "spec.homepage",
            "spec.license",
            "spec.name",
            "spec.require_paths",
            "spec.required_ruby_version",
            "spec.summary",
            "spec.test_files",
            "spec.version"
          ],
          "tgt": [
            "add_dependency",
            "add_development_dependency",
            "authors",
            "basename",
            "description",
            "email",
            "executables",
            "expand_path",
            "files",
            "grep",
            "homepage",
            "include?",
            "license",
            "name",
            "new",
            "require",
            "require_paths",
            "required_ruby_version",
            "split",
            "summary",
            "test_files",
            "unshift",
            "version"
          ],
          "metrics": {
            "ast": {
              "max_depth": 10,
              "op.concat": 28,
              "call_count": 29,
              "node_count": 312,
              "member_count": 18,
              "max_array_len": 1,
              "member_depth_max": 3,
              "op_density.concat": 0.09
            },
            "file": {
              "size": 1108,
              "entropy": 5.02
            },
            "text": {
              "lines": 27,
              "top_char": 101,
              "max_ws_run": 10,
              "digit_ratio": 0.02,
              "space_count": 176,
              "char_entropy": 5.02,
              "unique_chars": 74,
              "top_char_null": 0,
              "string_density": 0.78,
              "top_char_ratio": 0.09,
              "avg_line_length": 40.04,
              "max_line_length": 111,
              "empty_line_ratio": 0.15,
              "last_line_length": 3,
              "whitespace_ratio": 0.18,
              "identifier_density": 2.33,
              "line_length_stddev": 24.85,
              "normalized_string_count": 4.04,
              "repeated_char_sequences": 1,
              "suspicious_identifier_ratio": 0.03,
              "normalized_unique_identifiers": 6.94
            },
            "binds": {
              "count": 14
            },
            "binary": {
              "peak_region_bytes": 1024,
              "peak_region_entropy": 5.02
            },
            "imports": {
              "count": 1,
              "third_party_count": 1,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 223,
              "count": 21,
              "url_count": 1,
              "avg_length": 10.62,
              "max_length": 41,
              "path_count": 6,
              "avg_entropy": 2.78,
              "email_count": 1,
              "entropy_stddev": 0.64
            },
            "identifiers": {
              "count": 63,
              "unique": 33,
              "avg_length": 7.97,
              "max_length": 26,
              "min_length": 1,
              "avg_entropy": 2.46,
              "reuse_ratio": 0.52,
              "length_stddev": 5.06,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.03,
              "all_lowercase_ratio": 0.76,
              "all_uppercase_ratio": 0.06,
              "double_underscore_count": 1,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 2,
        "mol": "H₂(CmPo)Md(Pa)",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!hanami-utils.gemspec",
        "risk": 3,
        "sha": "5c6e5f278fd342136bf5f2081088cbb464390a7169eee890973f8f540d83ae64",
        "size": 1108,
        "traits": [
          {
            "id": "metadata/package/config::gemspec-name-assignment",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby gemspec assigns package name",
            "spans": [
              [
                131,
                55
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/message::http-prefix",
            "conf": 0.9,
            "crit": 2,
            "desc": "HTTP protocol prefix",
            "spans": [
              [
                463,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/process/create/shell/lang::ruby-subshell-command",
            "conf": 0.93,
            "crit": 3,
            "desc": "Ruby subshell command execution",
            "spans": [
              [
                537,
                78
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/message::http-url-literal",
            "conf": 0.75,
            "crit": 2,
            "desc": "HTTP URL string literal",
            "spans": [
              [
                463,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/http/url/scheme::cleartext-http-url-code-literal",
            "atk": "T1071.001",
            "mbc": "C0002",
            "conf": 0.9,
            "crit": 3,
            "desc": "Code embeds cleartext HTTP URL literal",
            "spans": [
              [
                463,
                19
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "A+flkx(W=ccUM}avqPZiB-.tlB1.0hB7]b\u003ez^)D)v@%79A+flkx(W=ccUM}avqPZiB-.tlB1.3tvrlG%vruQix\u003c#jbwHv?9wPq\u003cbA+cvvxKL^!zd$UCBzkMjfka+",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "arR^HkY.6Tv}x.5auZ\u0026?A=\u003e}2arR^HarUlkwc@U^arR^Har@0@xK$W?azCBgBzbkdv%8*jwO#PjB97\u0026jB-OWtB0bKDv}f7\u003eB7PMh3lQDlarR^K3lQDlarR^Kav6%UBAIRwax}/=B.9{RvrlGvmQZaOwKyoxB8$RfBzbkdA+frmy\u0026*!rw/#hewGUE",
            "ln": 1043,
            "col": 5,
            "line": 40
          },
          {
            "b": "z^^fex(n0hwN/?ga{]CnarR^HwO#2=arR^HwO#2=3lQDlar@18C4CYmx\u003eg=$w]zYjjALWeo(BM+y?j\u00269zEWH9wmYplflzq1e^-ZzarR)oarR^HboPl)x(mA(attA7e\u0026r$UarR^Kav6vOx=}wnx)9{bwEoL5arUiaw/#eay?tqlzEWH9wmYp1vQTs?dgdguarR^HB9hCkATAc@arR^HayX=2wIdFevrlG%wP?G#ay]x$arR^HarR^HwQ5rdzE:\u003eSy*?yao\u003ewAWz!9[@arR^HarUlkwc%C4arUlkwc@U^arR^Kaw3D)wPzi?Bz(gxy?ml/v%GhhzGGDgw)]gX3lQDlar}joarR^Kav70ZzEWl2fFkdlh3$DGarUJtwozZ1awut",
            "ln": 3252,
            "col": 48,
            "line": 136
          },
          {
            "b": "arU-FAaK4%arR^HarUlkB9hIm3lQDlarR^Hav6pvA+frmy\u0026*^.auzLOvqYH\u003cx/XpDzGGDgvpKy$AYMlVwPJ0gBs}DxCm2DnarR^HwO#2=3lQDlarR^Kaxiw}xj\u003e^@B0bNrwGU]gwPzj3x(v(ivqYP#A+funA=91daAz4mB.(dL3lQDlarR^K3lQDlarR^Kavf*WaARpdazC.mByx5%wGVe8A+O@\u003ey?mVgCwg(fayX[8vrM6[y**^?wGUY8aARpdaAz4mB.(dL3lQDlarR^K3lQDlarR^Kave$amnu/NpFJ}[ra]#!az(mxBrC47azCXiy?mD{zGGD2ayYQsBzbkdx(mA%B.2i7xcpY2vrlGx3lQDlarR^K3lQDlarR^Kav6%UBAIRwax}xBzEEx@iYY\u0026IBy/G3v@#TfiYZeIB9hqv",
            "ln": 4262,
            "col": 7,
            "line": 183
          },
          {
            "b": "zE:7%arR!rzE:7YarR^HAb]Vovru5/3lQDlar@0@xK$W?azCBgAb](bwO2x{CwhejauT:/j%KMCy?#i!BAxX?x(n9jyHIs0z/dfmarR^HboPr#ay]4}vrDydazC{uA+funA=b}vjALWeBAhInjtg!#j$Wf+arR^K3lQDlar@0%wP?T3z/xodB0a$3",
            "ln": 9316,
            "col": 8,
            "line": 375
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "freeze"
            ],
            [
              "",
              "empty?"
            ],
            [
              "",
              "successful?"
            ],
            [
              "",
              "dup"
            ],
            [
              "",
              "flatten!"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "merge!"
            ],
            [
              "",
              "fetch"
            ],
            [
              "",
              "to_sym"
            ],
            [
              "",
              "key?"
            ],
            [
              "",
              "inspect"
            ],
            [
              "",
              "class_eval"
            ],
            [
              "",
              "extend"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "call"
            ],
            [
              "",
              "catch"
            ],
            [
              "",
              "validate!"
            ],
            [
              "",
              "prepare!"
            ],
            [
              "",
              "fail!"
            ],
            [
              "",
              "valid?"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "call"
            ],
            [
              "",
              "catch"
            ],
            [
              "",
              "validate!"
            ],
            [
              "",
              "prepare!"
            ],
            [
              "",
              "fail!"
            ],
            [
              "",
              "valid?"
            ],
            [
              "",
              "fail!"
            ],
            [
              "",
              "throw"
            ],
            [
              "",
              "add_error"
            ],
            [
              "",
              "error"
            ],
            [
              "",
              "fail!"
            ],
            [
              "",
              "prepare!"
            ],
            [
              "",
              "tap"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "exposures"
            ],
            [
              "",
              "class"
            ],
            [
              "",
              "instance_variable_defined?"
            ],
            [
              "",
              "instance_variable_get"
            ],
            [
              "",
              "class_eval"
            ],
            [
              "",
              "include"
            ],
            [
              "",
              "class_attribute"
            ],
            [
              "",
              "exposures"
            ],
            [
              "",
              "zero?"
            ],
            [
              "",
              "arity"
            ],
            [
              "",
              "instance_method"
            ],
            [
              "",
              "prepend"
            ],
            [
              "",
              "prepend"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "to_sym"
            ],
            [
              "",
              "hanami/utils/basic_object"
            ],
            [
              "",
              "hanami/utils/class_attribute"
            ],
            [
              "",
              "hanami/utils/hash"
            ]
          ],
          "mbr": [
            "@__result.add_error",
            "@__result.fail!",
            "@__result.prepare!",
            "@errors.dup",
            "@errors.flatten!",
            "@payload.fetch",
            "@payload.inspect",
            "@payload.key?",
            "@payload.merge!",
            "base.class_eval",
            "errors.empty?",
            "errors.first",
            "instance_variable_names.each",
            "interactor.class_eval",
            "method_name.to_sym",
            "name.to_sym"
          ],
          "tgt": [
            "_call",
            "_prepare!",
            "add_error",
            "arity",
            "catch",
            "class",
            "class_attribute",
            "class_eval",
            "dup",
            "each",
            "empty?",
            "error",
            "exposures",
            "extend",
            "fail!",
            "fetch",
            "first",
            "flatten!",
            "freeze",
            "include",
            "inspect",
            "instance_method",
            "instance_variable_defined?",
            "instance_variable_get",
            "key?",
            "merge!",
            "new",
            "prepare!",
            "prepend",
            "require",
            "successful?",
            "tap",
            "throw",
            "to_sym",
            "valid?",
            "validate!",
            "zero?"
          ],
          "funcs": [
            [
              "initialize",
              961
            ],
            [
              "successful?",
              1230
            ],
            [
              "failure?",
              1506
            ],
            [
              "fail!",
              1627
            ],
            [
              "errors",
              1980
            ],
            [
              "add_error",
              2070
            ],
            [
              "error",
              2493
            ],
            [
              "prepare!",
              2697
            ],
            [
              "method_missing",
              2841
            ],
            [
              "respond_to_missing?",
              2981
            ],
            [
              "__inspect",
              3191
            ],
            [
              "included",
              3378
            ],
            [
              "initialize",
              4234
            ],
            [
              "call",
              6508
            ],
            [
              "_call",
              6615
            ],
            [
              "validate!",
              6753
            ],
            [
              "call",
              8927
            ],
            [
              "_call",
              9101
            ],
            [
              "validate!",
              9253
            ],
            [
              "valid?",
              9575
            ],
            [
              "fail!",
              10448
            ],
            [
              "error",
              11654
            ],
            [
              "error!",
              12912
            ],
            [
              "_prepare!",
              13016
            ],
            [
              "_exposures",
              13118
            ],
            [
              "extended",
              13441
            ],
            [
              "method_added",
              13627
            ],
            [
              "expose",
              14653
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1,
              "op.lor": 1,
              "op.shl": 1,
              "op.land": 1,
              "op.lnot": 1,
              "max_depth": 17,
              "op.concat": 26,
              "call_count": 53,
              "node_count": 1196,
              "member_count": 16,
              "op_density.eq": 0,
              "op_density.lor": 0,
              "op_density.shl": 0,
              "op_density.land": 0,
              "op_density.lnot": 0,
              "member_depth_max": 2,
              "op_density.concat": 0.02
            },
            "file": {
              "size": 14807,
              "entropy": 4.22
            },
            "text": {
              "lines": 617,
              "top_char": 101,
              "max_ws_run": 7,
              "digit_ratio": 0.02,
              "space_count": 5041,
              "char_entropy": 4.22,
              "unique_chars": 80,
              "top_char_null": 0,
              "string_density": 0.01,
              "top_char_ratio": 0.07,
              "avg_line_length": 23,
              "max_line_length": 93,
              "empty_line_ratio": 0.06,
              "last_line_length": 3,
              "whitespace_ratio": 0.38,
              "identifier_density": 0.29,
              "line_length_stddev": 18,
              "normalized_string_count": 0.2,
              "repeated_char_sequences": 12,
              "suspicious_comment_ratio": 0.02,
              "normalized_unique_identifiers": 8.52
            },
            "binds": {
              "count": 8
            },
            "binary": {
              "peak_region_bytes": 14807,
              "peak_region_entropy": 4.31
            },
            "source": {
              "class_count": 6,
              "function_count": 22
            },
            "imports": {
              "count": 3,
              "third_party_count": 3,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 128,
              "count": 5,
              "avg_length": 25.6,
              "max_length": 50,
              "avg_entropy": 3.57,
              "entropy_stddev": 0.42
            },
            "comments": {
              "chars": 8227,
              "count": 427,
              "empty": 117,
              "lines": 310,
              "base64": 2,
              "high_entropy": 6,
              "to_code_ratio": 1.01
            },
            "functions": {
              "count": 28
            },
            "identifiers": {
              "count": 179,
              "unique": 79,
              "avg_length": 8.2,
              "max_length": 26,
              "min_length": 3,
              "avg_entropy": 2.52,
              "reuse_ratio": 0.44,
              "length_stddev": 4.38,
              "high_entropy_count": 5,
              "high_entropy_ratio": 0.06,
              "all_lowercase_ratio": 0.61,
              "all_uppercase_ratio": 0.01,
              "underscore_prefix_count": 5
            }
          }
        },
        "id": 3,
        "mol": "H(Po)",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/interactor.rb",
        "risk": 2,
        "sha": "aca3b29776bdcc42175c4100c55ba7e52b1ba774a4aa033efe79ae9a8645bfbc",
        "size": 14807,
        "traits": [
          {
            "id": "metadata/file/profile/language::lang-english--atom-1",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                1091,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-5",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                3300,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-7",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"this\"",
            "spans": [
              [
                4502,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/process/interpreter/eval::ruby-class-eval",
            "atk": "T1059",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby class_eval call",
            "spans": [
              [
                3421,
                10
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "A+flkx(W=ccUM}avqPZiB-.tlB1.6nAb]J1vruj4zyk+#zeS%cy?j.WvqYH\u003cx:L$9zeS%cy?j.?BzkMj3lQDlar@0@y*?yaaA.^uy?X09wPFh3arR^Kav70ZzEWl2fFk7jfBw{BarUfgvrlGjlU{gLA%:3jarR^HboPV#vpTB4vix5@vrlGjw]zYjBzbkdxk8K2zxJ?9zdLsbarR^HarR)oarR^HarR)KkYydLvqNc8vqPM#tt]S:x(mMmavx%NB8$RfBzbkdB8UY2x\u003ez6?ay/j@B8@EwvqPM.arR^HarR)KkYydLvqNa",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "wPz%dv}v8iarR)KjW6#OAbW\u003c0q!o#)x\u003e7YYarR^HarR)oarR^HarR)KarR)KCwhejaz2!py?Wx[BrCEfzdN^cvpJ\u003cQarR^HarR)KarTi-zEEx@iYZn.x(4\u0026KiZWZ(B8@%Iz^^f1c)}@8A=#ebwHx2Kl2Z=(ar@0(j%idgA5{3UwPz%dv}t#\u0026arR^H",
            "ln": 880,
            "col": 44,
            "line": 33
          },
          {
            "b": "vqPNAA=M8s3lQDlarR!qwO96awO+%hy\u0026r-)aT?kpzdLmvzEEx[B8UL$wGTbUpHX6Iv@%dbarR^HarR^HzEEx[B8UL$wIdFhzGx]bxjVfkzEEx[e{82sB1wCCvqH0@dgdguarR^HwO#2=3lQDlarR^KawuYZwoe(4ay/j@B8@Eoz/M$xxK@r0x)a69az$R8wH[%xzFTOvx\u003ewG4BshbLwmYv!zE)uh3lQDlarR^K3lQDlarR^Kav6)OA:-/czu",
            "ln": 1126,
            "col": 62,
            "line": 39
          },
          {
            "b": "arR^HboPV#vpTB4vix5@vrlGjw].*baARpdazkziwO@SfvruQ5A=91qvqPM#vqYP#zEEx[B8UL$wEoL5arR^HbmkLoarR^HboPl\u003cvrb^[aAg+hBy/Ggax}=^A+PA7t{al5wGUG0vrlGjzEEx[aAg+hBy/Gg3lQDlarR^Kav6)OA:-/czEEx[B8UK",
            "ln": 2256,
            "col": 3,
            "line": 75
          },
          {
            "b": "3jm)#arR^HarU=AyH}x$DsXHzvruQ5A=9rGwn-PrBz\u003e@azHq^larR^HarR^HayX[{x(jn2arR^HarR^HarR!EwPS6nzxJ?9zdN^cvpJ\u003e3v@DmaByeV(BsqlHyH}xmao",
            "ln": 3755,
            "col": 128,
            "line": 113
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "const_get"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "load!"
            ],
            [
              "",
              "const_defined?"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "tokenize"
            ],
            [
              "",
              "const_get"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "compact"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "match"
            ],
            [
              "",
              "pre_match"
            ],
            [
              "",
              "post_match"
            ],
            [
              "",
              "split"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "freeze"
            ],
            [
              "",
              "hanami/utils/deprecation"
            ]
          ],
          "mbr": [
            "Deprecation.new",
            "NameError.new",
            "TOKENIZE_REGEXP.match",
            "match.post_match",
            "match.pre_match",
            "name.to_s",
            "namespace.const_defined?",
            "namespace.const_get",
            "tokens.each"
          ],
          "tgt": [
            "compact",
            "const_defined?",
            "const_get",
            "each",
            "freeze",
            "join",
            "load!",
            "match",
            "new",
            "post_match",
            "pre_match",
            "raise",
            "require",
            "split",
            "to_s",
            "tokenize"
          ],
          "funcs": [
            [
              "load!",
              1141
            ],
            [
              "load",
              2126
            ],
            [
              "load_from_pattern!",
              3571
            ],
            [
              "tokenize",
              4176
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 1,
              "max_depth": 18,
              "op.concat": 15,
              "call_count": 19,
              "node_count": 430,
              "member_count": 9,
              "max_array_len": 2,
              "op_density.eq": 0,
              "member_depth_max": 2,
              "op_density.concat": 0.03
            },
            "file": {
              "size": 4880,
              "entropy": 4.47
            },
            "text": {
              "lines": 156,
              "top_char": 101,
              "max_ws_run": 7,
              "digit_ratio": 0.01,
              "space_count": 1428,
              "char_entropy": 4.47,
              "unique_chars": 73,
              "top_char_null": 0,
              "string_density": 0.04,
              "top_char_ratio": 0.07,
              "avg_line_length": 30.28,
              "max_line_length": 127,
              "empty_line_ratio": 0.06,
              "last_line_length": 3,
              "whitespace_ratio": 0.32,
              "identifier_density": 0.47,
              "line_length_stddev": 27.3,
              "normalized_string_count": 0.48,
              "repeated_char_sequences": 11,
              "suspicious_comment_ratio": 0.12,
              "normalized_unique_identifiers": 4.67
            },
            "binds": {
              "count": 7
            },
            "binary": {
              "peak_region_bytes": 4880,
              "peak_region_entropy": 4.64
            },
            "source": {
              "class_count": 3,
              "function_count": 4
            },
            "imports": {
              "count": 1,
              "third_party_count": 1,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 183,
              "count": 6,
              "ip_count": 1,
              "avg_length": 30.5,
              "max_length": 100,
              "avg_entropy": 2.57,
              "entropy_stddev": 1.84
            },
            "comments": {
              "chars": 2717,
              "count": 110,
              "empty": 29,
              "lines": 81,
              "base64": 4,
              "high_entropy": 9,
              "to_code_ratio": 1.08
            },
            "functions": {
              "count": 7
            },
            "identifiers": {
              "count": 73,
              "unique": 34,
              "avg_length": 7.32,
              "max_length": 18,
              "min_length": 3,
              "avg_entropy": 2.5,
              "reuse_ratio": 0.47,
              "length_stddev": 3.89,
              "high_entropy_count": 1,
              "high_entropy_ratio": 0.03,
              "all_lowercase_ratio": 0.68,
              "all_uppercase_ratio": 0.06
            }
          }
        },
        "id": 5,
        "mol": "H(Db)",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/class.rb",
        "risk": 2,
        "sha": "4a2b4d0f1bb1f7ec1d558c1b94573e7dd2c4f2de8505e786f22bd72b56a4bdaf",
        "size": 4880,
        "traits": [
          {
            "id": "metadata/file/profile/language::lang-english--atom-1",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                148,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-5",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                144,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-const-get",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically resolves a constant",
            "spans": [
              [
                1190,
                9
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "A+flkx(W=ccV-\u003cvcKK)9ADL#owGSvlvqYH\u003cx!KQJx(4\u0026zwoz\u003ccx\u003e7NXy?j$33t\u003cY(B.\u003eRinmuyAzd%t1az(4cB.\u003eRirDI}\u003eA%:3jarR)KnP5iMA+PS7vR/P#v@8",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "wPRQ7woe82arR^HarR^KavG^Mx(mH6ayMy5y*?yaaz+RjwO-F$v}f7\u003eB8M7ww]zYjBzbkdxk8K2zxJwfBAh88B-.gyB15ZGarR^HarR^HbmkLoarR^HarR)Kk{gtVy\u0026%qiB7GCow]zYjvixSlAaK61y*?yaazC)tvrDWgzddK2v{%g\u0026C{3KsvqfK^vR/P",
            "ln": 390,
            "col": 20,
            "line": 18
          },
          {
            "b": "wO2X0arR)KjW6#F3lQDlarR^Hay]4}ay/j@B8$X%BAzLqvS=^7c[nUEBAh88B-.hodgdguarR^HarR^HB7]J8y?mZbzEl)\u0026vrlGxv@bN{B6\u0026H4vqE5%zWEQfarR^HarR^HarU9mBAg.%v}f7\u003eB8M7EdQ^BvA+P09By/Ix3lQDlarR^HarR!rzE:7YarR^HarR^HarUfgvrlG%vruQix\u003c#jbwPGFvwPzA{c$djtA+P09By/Ix3lQDlarR^Hay$",
            "ln": 1813,
            "col": 29,
            "line": 67
          },
          {
            "b": "dgdguarR^HarR^Hv@bN{B6\u0026u$BAh88B-.hoe[FE3xDQ\u00267aBEQtBAh:oarR^HarR^HarR^HC42ifwGTbUB7Gl1c$djtAW.trarR^HarR^HarR!IvqH6$auZ\u0026nB-qehv{@?.wIdIoA42)ry\u0026%qr3lQDlarR^HarR^HaAIWmv@bN{B1Q%svrlG%vruQix\u003c#jbwGUA6BAdZharR^HarR^HarR!FBZ!\u0026%vrlGxB7Gl1c)x).vruQiElw=9",
            "ln": 2122,
            "col": 31,
            "line": 80
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "require"
            ],
            [
              "",
              "extend"
            ],
            [
              "",
              "class_eval"
            ],
            [
              "",
              "attr_accessor"
            ],
            [
              "",
              "merge"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "dup"
            ],
            [
              "",
              "class_attribute"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "hanami/utils/duplicable"
            ],
            [
              "",
              "set"
            ]
          ],
          "mbr": [
            "Duplicable.dup",
            "Set.new",
            "base.extend",
            "class_attributes.each",
            "class_attributes.merge",
            "singleton_class.class_eval",
            "subclass.class_attribute",
            "subclass.send"
          ],
          "tgt": [
            "attr_accessor",
            "class_attribute",
            "class_eval",
            "dup",
            "each",
            "extend",
            "merge",
            "new",
            "require",
            "send"
          ],
          "funcs": [
            [
              "included",
              261
            ],
            [
              "class_attribute",
              1834
            ],
            [
              "inherited",
              2100
            ],
            [
              "class_attributes",
              2465
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 18,
              "op.concat": 8,
              "call_count": 12,
              "node_count": 226,
              "member_count": 8,
              "member_depth_max": 2,
              "op_density.concat": 0.04
            },
            "file": {
              "size": 2566,
              "entropy": 3.94
            },
            "text": {
              "lines": 101,
              "top_char": 101,
              "max_ws_run": 5,
              "digit_ratio": 0.02,
              "space_count": 953,
              "char_entropy": 3.94,
              "unique_chars": 60,
              "top_char_null": 0,
              "string_density": 0.03,
              "top_char_ratio": 0.07,
              "avg_line_length": 24.41,
              "max_line_length": 82,
              "empty_line_ratio": 0.08,
              "last_line_length": 3,
              "whitespace_ratio": 0.41,
              "identifier_density": 0.45,
              "line_length_stddev": 17.41,
              "normalized_string_count": 0.3,
              "repeated_char_sequences": 12,
              "suspicious_comment_ratio": 0.03,
              "normalized_unique_identifiers": 4.21
            },
            "binds": {
              "count": 3
            },
            "binary": {
              "peak_region_bytes": 1542,
              "peak_region_entropy": 4.19
            },
            "source": {
              "class_count": 4,
              "function_count": 4
            },
            "imports": {
              "count": 2,
              "third_party_count": 2,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 34,
              "count": 3,
              "avg_length": 11.33,
              "max_length": 23,
              "avg_entropy": 2.69,
              "entropy_stddev": 0.88
            },
            "comments": {
              "chars": 1168,
              "count": 60,
              "empty": 15,
              "lines": 45,
              "base64": 2,
              "to_code_ratio": 0.8
            },
            "functions": {
              "count": 8
            },
            "identifiers": {
              "count": 45,
              "unique": 28,
              "avg_length": 8.29,
              "max_length": 17,
              "min_length": 3,
              "avg_entropy": 2.52,
              "reuse_ratio": 0.62,
              "length_stddev": 4.26,
              "all_lowercase_ratio": 0.75
            }
          }
        },
        "id": 6,
        "mol": "H₂(DbPo)",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/class_attribute.rb",
        "risk": 2,
        "sha": "fde8c669dc7ca7fc889ef8e313e989503f5ea7a9481ee769900c3dca24b4cf06",
        "size": 2566,
        "traits": [
          {
            "id": "metadata/file/profile/language::lang-english--atom-1",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                442,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/profile/language::lang-english--atom-5",
            "conf": 0.8,
            "crit": 2,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                438,
                0
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "spans": [
              [
                2186,
                4
              ]
            ]
          },
          {
            "id": "micro-behaviors/process/interpreter/eval::ruby-class-eval",
            "atk": "T1059",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby class_eval call",
            "spans": [
              [
                1877,
                10
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 7,
        "mol": "H(Cm)",
        "sha": "593cad55e037a354ab3b4d2716d25c092f221d518a3dcd8c815110d6eddd8304",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/escape.rb",
        "risk": 2,
        "size": 23610,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 8,
        "mol": "H(F₂)",
        "sha": "56a6b05d159a8e77bb52c50af8700f18b3f97d8b0e0fc8139d3f8a1f6a4a827a",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/files.rb",
        "risk": 2,
        "size": 14007,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 9,
        "mol": "H₂(CmPo)",
        "sha": "94877dfb95f34fa1f426938fea06c86de87ec5f6b4dfe50967d4301c44c3b9a5",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/inflector.rb",
        "risk": 2,
        "size": 11676,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 10,
        "mol": "H(Cm)",
        "sha": "d7ae8173a822f0a1ebf3e187291b6e75f0d0d88774cefe9b814264a163e6d5da",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/io.rb",
        "risk": 2,
        "size": 929,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 11,
        "mol": "H₂(CmDb)",
        "sha": "c662f9587d915a3f20b4aaa431e6559bcb3a2707507873ebe327ee7225ae6d33",
        "path": "hanami-utils-1.3.0.gem!!data.tar.gz!!lib/hanami/utils/string.rb",
        "risk": 2,
        "size": 23064,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 37,
        "sha": "87a75496642ee33fa7a298127c94a569b0e9f9668f0828c5231b38c7ffdd7e69",
        "path": "transproc@1.1.1.registry.json",
        "size": 831,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 38,
        "sha": "24bd0b706026d2f6f22bf338075d4354acf9a531040f1cc07cab87239a4b5b4a",
        "path": "concurrent-ruby@1.3.8.registry.json",
        "size": 1079,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 39,
        "sha": "f2dfd29cc8932cec35e2bcbb07bef5b0419fc6c14b3b9b21a39b9d1bef7face6",
        "path": "hanami-utils@1.3.0.registry.json",
        "size": 850,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 8,
    "rev": "479f3",
    "v": "8"
  }
}