{
  "ml": {
    "v": "7",
    "eng": "2.9.1",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.0000105599565,
        "rte": "az",
        "prob": 0.0000105599565
      },
      {
        "cls": 0,
        "raw": 0.00017862518,
        "rte": "az/gem",
        "prob": 0.00017862518
      }
    ],
    "prob": 0.000013361375,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013361374840314966,
        "type": "gem"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000013361374840314966,
        "type": "tar.gz"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000011275212273176294,
        "type": "ruby"
      },
      {
        "id": 3,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010659297004167456,
        "type": "ruby"
      },
      {
        "id": 4,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000011414289474487305,
        "type": "ruby"
      },
      {
        "id": 5,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010261933311994653,
        "type": "ruby"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000011225541129533667,
        "type": "ruby"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009377797141496558,
        "type": "ruby"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008990366950456519,
        "type": "ruby"
      },
      {
        "id": 17,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010033448234025855,
        "type": "registry"
      },
      {
        "id": 18,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010033448234025855,
        "type": "registry"
      },
      {
        "id": 19,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010033448234025855,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-09-12T01:49:21Z"
  },
  "path": "ruby-keychain-0.1.1.gem",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "wmoN*e{7Jxe[YFg00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fFCgmhz^k\u003cfFCgmfFCfXfFCf",
            "ln": 0
          }
        ],
        "mol": "H₂(Db₂F)",
        "sha": "77c2747d0ddfdbf230b466eea6b8a473dc02dc6794e4239ecad430130b04c824",
        "path": "ruby-keychain-0.1.1.gem",
        "refs": [
          {
            "to": "pkg:gem/ffi",
            "off": 0,
            "kind": "dependency"
          },
          {
            "to": "pkg:gem/corefoundation",
            "off": 0,
            "kind": "dependency"
          }
        ],
        "risk": 2,
        "size": 14848,
        "type": "gem",
        "facts": {
          "metrics": {
            "gem": {
              "dependency_count": 6,
              "runtime_dependency_count": 2,
              "development_dependency_count": 4
            },
            "file": {
              "size": 14848,
              "entropy": 7.25
            },
            "binary": {
              "peak_region_bytes": 10240,
              "peak_region_entropy": 7.82
            },
            "archive": {
              "file_count": 2,
              "member_count": 2,
              "script_count": 0,
              "directory_count": 0,
              "executable_count": 0,
              "hidden_file_count": 0,
              "uncompressed_size": 12130,
              "max_filename_length": 11,
              "rtlo_filename_count": 0,
              "format.regular_count": 2,
              "nested_archive_count": 2,
              "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
            },
            "references": {
              "declared_count": 2,
              "unresolved_count": 0,
              "security_hold_count": 0,
              "unresolved_extension_count": 0
            }
          }
        },
        "ident": {
          "name": {
            "value": "ruby-keychain",
            "source": "gem.name",
            "verified": false
          },
          "urls": [
            {
              "url": "http://github.com/fcheung/keychain",
              "kind": "homepage",
              "source": "gem.homepage"
            }
          ],
          "trust": "unsigned",
          "authors": [
            {
              "name": "Frederick Cheung",
              "role": "author",
              "source": "gem.authors"
            }
          ],
          "version": {
            "value": "0.1.1",
            "source": "gem.version",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "metadata/package/testing/presence/harness::test-directory",
            "conf": 1.0,
            "crit": 2,
            "desc": "File identified as a test by path or name",
            "from": [
              {
                "file": 1
              },
              {
                "file": 8
              },
              {
                "file": 13
              },
              {
                "file": 14
              }
            ],
            "uses": [
              5
            ]
          },
          {
            "id": "micro-behaviors/data/source/language::ruby-dynamic-method-definition",
            "conf": 0.8,
            "crit": 3,
            "desc": "Ruby defines methods dynamically"
          },
          {
            "id": "metadata/package/testing/presence/harness::spec-path-basename",
            "conf": 1.0,
            "crit": 1,
            "desc": "Spec path basename"
          },
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-const-set",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically defines a constant"
          },
          {
            "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/package/testing/presence/harness::test-directory-path",
            "conf": 1.0,
            "crit": 1,
            "desc": "File is in common test directory"
          },
          {
            "id": "micro-behaviors/fs/path/sensitive/apple::keychain-data",
            "conf": 0.8,
            "crit": 3,
            "desc": "Reference to Apple Keychain data"
          }
        ]
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "file": {
              "size": 11400,
              "entropy": 7.98
            },
            "parse": {
              "error_count": 1
            },
            "binary": {
              "peak_region_bytes": 11264,
              "peak_region_entropy": 7.81
            }
          }
        },
        "id": 1,
        "mol": "H₂(Db₂F)",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz",
        "pid": 0,
        "risk": 2,
        "sha": "5fa4538a04c3c9eb681c618673f968fb0f0cddf0ae3468491fe818748d4294a4",
        "size": 11400,
        "traits": [
          {
            "id": "metadata/package/testing/presence/harness::test-directory-path",
            "conf": 1.0,
            "crit": 1,
            "desc": "File is in common test directory"
          },
          {
            "id": "micro-behaviors/fs/path/sensitive/apple::keychain-data",
            "conf": 0.8,
            "crit": 3,
            "desc": "Reference to Apple Keychain data"
          },
          {
            "id": "metadata/package/testing/presence/harness::test-directory",
            "conf": 1.0,
            "crit": 2,
            "desc": "File identified as a test by path or name",
            "from": [
              {
                "file": 8
              },
              {
                "file": 13
              },
              {
                "file": 14
              }
            ],
            "uses": [
              0
            ]
          },
          {
            "id": "metadata/package/testing/presence/harness::spec-path-basename",
            "conf": 1.0,
            "crit": 1,
            "desc": "Spec path basename"
          },
          {
            "id": "micro-behaviors/data/source/language::ruby-dynamic-method-definition",
            "conf": 0.8,
            "crit": 3,
            "desc": "Ruby defines methods dynamically"
          },
          {
            "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/data/source/dynamic/reflect::ruby-const-set",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically defines a constant"
          }
        ],
        "type": "tar.gz"
      },
      {
        "ctx": [
          {
            "b": "3t\u003cY(B.\u003eRiq!oCCarU9mBywV)uUjB#v@#B6zxHr9wN!wAD1gI@x(lH:wO\u003c?Dy?mZ1cOcxAi=G1KzGGDgt}v9Vz/Y#wvruTk3lQE1BAy@3xKtv]zEW^5z/cWBq!oDgBy/qPwmN5sax{)Cz!T7",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "By/F#efD#(B8#CiBAITi3t19=3jn12l2E/VzE^E8x\u003ehu{y-)ClwO\u0026M4A=k!qBzbkdyH}^3xKLQ)e*9-6wncj3wozr%ayO+\u0026wPI{hA=SviA+cwawO#71vru6\u003eazbLjaARpdazC}ezf3?dBAzLqvS=^7A%:c0bmm{%vrlGjoj-xUxKLQ)iYY\u0026OwO\u0026LLax8\u0026YiYYPoB7CX3ayPwlA:Jl+v}x.5z/M%YvruQix\u003c#jbwPFh3aAz4ax(!xc",
            "ln": 273,
            "col": 66,
            "line": 6
          },
          {
            "b": "wNP7Zay]ykD#:vsD0+C$zdO84arR^HB-82bB8@EvwPRQ7wm5\u003eUw[=c]wiRF.BZ/S6zEEx[dgdguarR^HwmYv!zE)f(wPRQ7wft]nvThr#vqPM#wn.!$arR^HarR^(vruQix\u003c#jbwPI6@BZ/S6zEEx[t).X%arR^HwO#2=arR^HarUiaw[=c]uU%v@xM4A7A=\u003e\u0026puV6p?wIe7yuVN.BjTRv.zY\u003cBJvqH6$D\u003cQ#sarR^HarS{TBAzLqvS=^7B6AWcvG",
            "ln": 746,
            "col": 24,
            "line": 23
          },
          {
            "b": "arU-FAaK5rfEXR@vq)u1zY\u003cBFwPJ0gBBjArarR^HarR!nBAzLAuVf%(AbPDdBy/FBwNP7ZaBwGKeoVy-A+frmy\u0026?pJwO#3ba%RCIElw=9aA/hZ3lQDlarR!rzE:7%arR!ry\u0026:d{arR^HarU-FAaK4%arR^HwO#2=arUlkwc@U^ar@0]Ab]Vovru5/arUiaw/$/9x([5$y?Xibc[nUCxlbHearR^HB9hCkATA{iarS{TBAzLqvS=^7",
            "ln": 1381,
            "col": 5,
            "line": 42
          },
          {
            "b": "azbLjaARpdazC}ez3?ydboPl?z//Lkra]?=zE[2mAa9*eCw?IjazC)tzF%RtB76l6wftP7Bz\u0026pzxK@r4wQd^0vqfQ4B-8qny-[1wBS+g5y?$kvoj-xUxKLQ)iYY\u0026OwO\u0026VkvrMi9Ef}7",
            "ln": 1772,
            "col": 23,
            "line": 64
          },
          {
            "b": "arUlkwc@U^ar@0#wPRA}wPF#oxK@r9vrlHlz/PwhwmoN*ayPtjz!0G\u0026By!#9CwhejaARpdazC}ez7V@gxLzJgzddYjv{%I3wGV8dwGVbpwPw]nzY\u0026I2ayPtbwN(]}z/M$ev}f7\u003eA%:3jboPl(wPS6nzxJdZBAh8kxi=SVxK@r9vrlHlz/PwhwmoN*efFwsave{[nL9nGlp\u003eb",
            "ln": 2303,
            "col": 1,
            "line": 80
          },
          {
            "b": "C42G73jm)#wmYu}v@=c?By=\u003esAcb/jzGvllarR^HA+frmy\u0026*^.avX*(iYY#DzeTDup\u0026y5=By/FBzE[2mi=G1KzGGDg3lQDlaAqKnA^n=\u003cayYFcy?c).A+eW3wNxC1wPA5A",
            "ln": 3744,
            "col": 6,
            "line": 122
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attr_accessor"
            ],
            [
              "",
              "register_type"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "address"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "values"
            ],
            [
              "",
              "method_defined?"
            ],
            [
              "",
              "define_method"
            ],
            [
              "",
              "define_method"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "is_a?"
            ],
            [
              "",
              "tap"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "release_on_gc"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "read_pointer"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "to_cf"
            ],
            [
              "",
              "immutable"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "read_pointer"
            ],
            [
              "",
              "persisted?"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "update_self_from_dictionary"
            ],
            [
              "",
              "release"
            ],
            [
              "",
              "tap"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "null?"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "build_create_query"
            ],
            [
              "",
              "merge!"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "read_pointer"
            ],
            [
              "",
              "to_cf"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "read_pointer"
            ],
            [
              "",
              "persisted?"
            ],
            [
              "",
              "ptr"
            ],
            [
              "",
              "to_ptr"
            ],
            [
              "",
              "release_on_gc"
            ],
            [
              "",
              "retain"
            ],
            [
              "",
              "inject"
            ],
            [
              "",
              "to_ruby"
            ],
            [
              "",
              "mutable"
            ],
            [
              "",
              "from_string"
            ],
            [
              "",
              "mutable"
            ],
            [
              "",
              "immutable"
            ],
            [
              "",
              "to_cf"
            ],
            [
              "",
              "mutable"
            ],
            [
              "",
              "each"
            ],
            [
              "",
              "persisted?"
            ],
            [
              "",
              "to_cf"
            ],
            [
              "",
              "from_string"
            ]
          ],
          "mbr": [
            "@attributes.each",
            "@ptr.address",
            "@ptr.address.to_s",
            "@ptr.null?",
            "Sec.SecItemAdd",
            "Sec.SecItemCopyMatching",
            "Sec.SecItemUpdate",
            "Sec.SecKeychainItemCopyKeychain",
            "Sec.SecKeychainItemDelete",
            "Sec.check_osstatus",
            "attrs_or_pointer.each",
            "attrs_or_pointer.is_a?",
            "cf_dict.inject",
            "cf_dict.release",
            "item.send",
            "klass.to_cf",
            "out.read_pointer",
            "out_buffer.read_pointer",
            "query.merge!",
            "result.read_pointer",
            "result.send",
            "ruby_name.to_s",
            "v.to_cf",
            "v.to_ruby"
          ],
          "tgt": [
            "SecItemAdd",
            "SecItemCopyMatching",
            "SecItemUpdate",
            "SecKeychainItemCopyKeychain",
            "SecKeychainItemDelete",
            "address",
            "attach_function",
            "attr_accessor",
            "build_create_query",
            "check_osstatus",
            "create",
            "define_method",
            "each",
            "from_string",
            "immutable",
            "inject",
            "is_a?",
            "merge!",
            "method_defined?",
            "mutable",
            "new",
            "null?",
            "persisted?",
            "ptr",
            "read_pointer",
            "register_type",
            "release",
            "release_on_gc",
            "retain",
            "send",
            "tap",
            "to_cf",
            "to_ptr",
            "to_ruby",
            "to_s",
            "typecast",
            "update_self_from_dictionary",
            "values"
          ],
          "funcs": [
            [
              "inspect",
              576
            ],
            [
              "new",
              1311
            ],
            [
              "initialize",
              1531
            ],
            [
              "delete",
              1647
            ],
            [
              "password=",
              1976
            ],
            [
              "keychain",
              2113
            ],
            [
              "password",
              2484
            ],
            [
              "save!",
              3258
            ],
            [
              "from_dictionary_of_attributes",
              3494
            ],
            [
              "persisted?",
              3701
            ],
            [
              "create",
              3752
            ],
            [
              "update",
              4033
            ],
            [
              "update_self_from_dictionary",
              4440
            ],
            [
              "build_create_query",
              4755
            ],
            [
              "build_refresh_query",
              5122
            ],
            [
              "build_new_attributes",
              5433
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 3,
              "op.add": 1,
              "op.lor": 1,
              "op.land": 1,
              "op.lnot": 2,
              "max_depth": 17,
              "op.concat": 58,
              "call_count": 75,
              "node_count": 1249,
              "member_count": 24,
              "max_array_len": 2,
              "op_density.eq": 0,
              "op_density.add": 0,
              "op_density.lor": 0,
              "op_density.land": 0,
              "op_density.lnot": 0,
              "max_concat_chain": 2,
              "member_depth_max": 3,
              "op_density.concat": 0.05
            },
            "file": {
              "size": 5829,
              "entropy": 4.91
            },
            "text": {
              "lines": 188,
              "top_char": 101,
              "max_ws_run": 3,
              "digit_ratio": 0,
              "space_count": 1004,
              "char_entropy": 4.91,
              "unique_chars": 77,
              "top_char_null": 0,
              "string_density": 0.04,
              "top_char_ratio": 0.09,
              "avg_line_length": 30.01,
              "max_line_length": 134,
              "empty_line_ratio": 0.13,
              "last_line_length": 3,
              "whitespace_ratio": 0.2,
              "identifier_density": 1.75,
              "line_length_stddev": 28.04,
              "normalized_string_count": 0.58,
              "repeated_char_sequences": 2,
              "trailing_whitespace_lines": 6,
              "suspicious_identifier_ratio": 0.02,
              "normalized_unique_identifiers": 12.84
            },
            "binds": {
              "count": 25
            },
            "binary": {
              "peak_region_bytes": 5829,
              "peak_region_entropy": 5.03
            },
            "source": {
              "class_count": 1,
              "function_count": 15
            },
            "strings": {
              "bytes": 213,
              "count": 8,
              "avg_length": 26.63,
              "max_length": 121,
              "avg_entropy": 2.97,
              "email_count": 1,
              "entropy_stddev": 1.29
            },
            "comments": {
              "chars": 1406,
              "count": 32,
              "empty": 6,
              "lines": 27,
              "to_code_ratio": 0.17
            },
            "functions": {
              "count": 16
            },
            "identifiers": {
              "count": 329,
              "unique": 97,
              "avg_length": 8.63,
              "max_length": 29,
              "min_length": 1,
              "avg_entropy": 2.51,
              "reuse_ratio": 0.29,
              "length_stddev": 5.68,
              "sequential_names": 2,
              "single_char_count": 2,
              "single_char_ratio": 0.02,
              "high_entropy_count": 8,
              "high_entropy_ratio": 0.08,
              "all_lowercase_ratio": 0.6,
              "all_uppercase_ratio": 0.13
            }
          }
        },
        "id": 2,
        "mol": "H(Db₂)",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain/item.rb",
        "risk": 1,
        "sha": "192535262b21a778a40c94f42bcd8b8dad16de0597315efb6e67f47b3d303964",
        "size": 5829,
        "traits": [
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "spans": [
              [
                1445,
                4
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/source/language::ruby-dynamic-method-definition",
            "conf": 0.8,
            "crit": 3,
            "desc": "Ruby defines methods dynamically",
            "spans": [
              [
                810,
                13
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "ctx": [
          {
            "b": "3t\u003cY(B.\u003eRiq!oCCarU9mBywV)uUjB#v@#B6zxHr9wN!wAD1gI@x(lpRAcT\u0026.w)]*#BseQZtrl.wx(n37A:pjsi=x7XByxolA%:3jvruQ1v}YjYB-7Yhx(v(icSsO^oj-xUxKLQ)l$HgCBy=*",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "ByO##zF7sFax{)Cz!T9hwPxsAi=G1KzGGDgt}v9Vz/Y#wvruTk3lQC#arR)]Ab]Vovru5/arUfgvrlGjoj-xUxKLQ)q!p5)x(mN8auQ=omObT4q/)55v@@52arR!yvr(^lBrzX!C4CYnx(v(uauBTVzGEV\u0026ed9HxarR^HarR^HarSZYz!0M\u0026z/e{6y?mf%efD#@v}Yp\u003eed9HxarR^HarR^HarSZ/B7FY{z!0M\u0026x(n37A=$(cefD#@v}Yp\u003eefDfCAbYS8azCFaz/PAgaARphA%:3jarR^HarR^HarSZYz!0M\u0026x(n37A=$(cefD#@x(n2Gg72cDwO#2=3lQE1BAy@3xKtv]zEW^5z/cWBq!oDiwQd^0vqfQTwPQ\u003cZBAzkmxlbBKax{)xwQd^0ve",
            "ln": 436,
            "col": 33,
            "line": 9
          },
          {
            "b": "arSG(3lQD%3t19=3jpS*wozZ1awlo\u003ev}Yp+zvdHeboQ6dvq{f%AV!\u003edvrlGjw]zYjx(mD}C4\u003eGfvqE64wQd^0vqfR2e*9J1A=L-jAbPS8B0bNyayMx\u003ewN!wAD1gI@x(l*Ww^PU6bmkLov@bN{B0aa!D1gI@x(k4Qax8\u0026YiYYPoB7CX3arR!EwOkZ#By/G1BA}?pasy90v[QxUv}Yp+zyk+#arR^HboP(}BAIRwB0bWuwPRP%AV/EqwGU=1D1gI@x(k5qx(4PdvR3V#z!0M]wftO#aARpdaz\u003eK%xLzu}azkR7B0bNyaAIvgwPd#0arR^K3lQDlar@0]A+funA=917lt{^UwNPEZ3lQDlar}joarR!qwD",
            "ln": 1387,
            "col": 27,
            "line": 33
          },
          {
            "b": "arR^HboP(}zeTPeB0bNrwGU=1D1gI@x(k59A=k!qBzbkdB7F^2v}W07vruf9vqYP#wmYN*By/IoBzbkdv@DydwPI*ezE^E0xcp/2y?j.qq!oDiwQd^0vqfQEwO+}1wHN%earR^K3lQDlar@1cwN##$BAzFyiXJc%wP?T3z/xode[5Zry?kkez/4c",
            "ln": 2973,
            "col": 1,
            "line": 95
          },
          {
            "b": "xi=T0vrlHlz/PwhBzbkdAa9*eCw?IjaARJAB-82lv@0iexK@r4wQd^0vqfQ4Cwheje*9.$az#9uAa9*eCw?IjazC)tB9hCvy?WD\u003eaARpdazULlv}Yp+zxKdqy?$kkA=k/lBrCWswGVbpwPw]9z/M$eaAg+gB9zLywc%C4arUiaw/#kly\u0026r*0aS$-j",
            "ln": 4196,
            "col": 30,
            "line": 130
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "layout"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "enum"
            ],
            [
              "",
              "register_type"
            ],
            [
              "",
              "put_settings"
            ],
            [
              "",
              "tap"
            ],
            [
              "",
              "put_settings"
            ],
            [
              "",
              "tap"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "to_s"
            ],
            [
              "",
              "address"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "put_uint32"
            ],
            [
              "",
              "size"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "force_encoding"
            ],
            [
              "",
              "read_string"
            ],
            [
              "",
              "get_uint32"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "encode"
            ],
            [
              "",
              "bytesize"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "status_flag?"
            ],
            [
              "",
              "status_flag?"
            ],
            [
              "",
              "status_flag?"
            ],
            [
              "",
              "readable?"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "nonzero?"
            ],
            [
              "",
              "get_uint32"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "check_osstatus"
            ],
            [
              "",
              "check_osstatus"
            ]
          ],
          "mbr": [
            "@ptr.address",
            "@ptr.address.to_s",
            "Scope.new",
            "Sec.SecKeychainCopySettings",
            "Sec.SecKeychainDelete",
            "Sec.SecKeychainGetPath",
            "Sec.SecKeychainGetStatus",
            "Sec.SecKeychainLock",
            "Sec.SecKeychainSetSettings",
            "Sec.SecKeychainUnlock",
            "Sec.check_osstatus",
            "Sec.enum_value",
            "get_settings.tap",
            "io_size.get_uint32",
            "io_size.put_uint32",
            "out.get_uint32",
            "out_buffer.read_string",
            "out_buffer.read_string.force_encoding",
            "out_buffer.size",
            "password.bytesize",
            "password.encode"
          ],
          "tgt": [
            "SecKeychainCopySettings",
            "SecKeychainDelete",
            "SecKeychainGetPath",
            "SecKeychainGetStatus",
            "SecKeychainLock",
            "SecKeychainSetSettings",
            "SecKeychainUnlock",
            "address",
            "attach_function",
            "bytesize",
            "check_osstatus",
            "encode",
            "enum",
            "enum_value",
            "force_encoding",
            "get_uint32",
            "layout",
            "new",
            "nonzero?",
            "put_settings",
            "put_uint32",
            "read_string",
            "readable?",
            "register_type",
            "size",
            "status_flag?",
            "tap",
            "to_s"
          ],
          "funcs": [
            [
              "lock_on_sleep?",
              1678
            ],
            [
              "lock_interval",
              1866
            ],
            [
              "lock_on_sleep=",
              2048
            ],
            [
              "lock_interval=",
              2301
            ],
            [
              "internet_passwords",
              2537
            ],
            [
              "generic_passwords",
              2747
            ],
            [
              "inspect",
              2894
            ],
            [
              "delete",
              3267
            ],
            [
              "path",
              3657
            ],
            [
              "lock!",
              4042
            ],
            [
              "unlock!",
              4330
            ],
            [
              "locked?",
              4692
            ],
            [
              "readable?",
              4832
            ],
            [
              "writeable?",
              4970
            ],
            [
              "exists?",
              5046
            ],
            [
              "status_flag?",
              5184
            ],
            [
              "get_settings",
              5420
            ],
            [
              "put_settings",
              5628
            ]
          ],
          "metrics": {
            "ast": {
              "op.ne": 1,
              "op.band": 1,
              "op.lnot": 1,
              "max_depth": 14,
              "op.concat": 35,
              "call_count": 57,
              "node_count": 908,
              "member_count": 21,
              "max_array_len": 6,
              "op_density.ne": 0,
              "op_density.band": 0,
              "op_density.lnot": 0,
              "member_depth_max": 3,
              "op_density.concat": 0.04
            },
            "file": {
              "size": 5776,
              "entropy": 4.7
            },
            "text": {
              "lines": 191,
              "top_char": 101,
              "max_ws_run": 4,
              "digit_ratio": 0.01,
              "space_count": 1103,
              "char_entropy": 4.7,
              "unique_chars": 76,
              "top_char_null": 0,
              "string_density": 0.08,
              "top_char_ratio": 0.09,
              "avg_line_length": 29.25,
              "max_line_length": 162,
              "empty_line_ratio": 0.16,
              "last_line_length": 3,
              "long_token_count": 2,
              "whitespace_ratio": 0.22,
              "identifier_density": 0.93,
              "line_length_stddev": 30.68,
              "encoded_string_ratio": 0.2,
              "normalized_string_count": 1.09,
              "repeated_char_sequences": 3,
              "suspicious_comment_ratio": 0.04,
              "trailing_whitespace_lines": 4,
              "suspicious_identifier_ratio": 0.01,
              "normalized_unique_identifiers": 8.84
            },
            "binds": {
              "count": 13
            },
            "binary": {
              "peak_region_bytes": 5776,
              "peak_region_entropy": 4.75
            },
            "source": {
              "class_count": 3,
              "function_count": 16
            },
            "strings": {
              "bytes": 337,
              "count": 15,
              "avg_length": 22.47,
              "max_length": 49,
              "avg_entropy": 3.67,
              "email_count": 1,
              "entropy_stddev": 0.42,
              "base64_candidates": 3
            },
            "comments": {
              "chars": 1646,
              "count": 48,
              "empty": 16,
              "lines": 32,
              "base64": 2,
              "to_code_ratio": 0.2,
              "url_in_comments": 2
            },
            "functions": {
              "count": 19
            },
            "identifiers": {
              "count": 178,
              "unique": 67,
              "avg_length": 9.48,
              "max_length": 23,
              "min_length": 1,
              "avg_entropy": 2.65,
              "reuse_ratio": 0.38,
              "length_stddev": 5.14,
              "has_digit_ratio": 0.04,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.01,
              "high_entropy_count": 6,
              "high_entropy_ratio": 0.09,
              "all_lowercase_ratio": 0.51,
              "all_uppercase_ratio": 0.04,
              "numeric_suffix_count": 3
            }
          }
        },
        "id": 3,
        "mol": "H(F)",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain/keychain.rb",
        "risk": 1,
        "sha": "1915827ebad54f7ff8866f0681cb1ca6a9dc6f711a0df5d13c4f7419e52bc114",
        "size": 5776,
        "traits": [
          {
            "id": "micro-behaviors/fs/path/sensitive/apple::keychain-data",
            "conf": 0.8,
            "crit": 3,
            "desc": "Reference to Apple Keychain data",
            "spans": [
              [
                500,
                9
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 4,
        "mol": "H(Db)",
        "sha": "d4d7d7fa31e40d705f908ab97786c34c809f99a5d91209e80b53cd0f0677dcff",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain/protocols.rb",
        "risk": 1,
        "size": 1631,
        "type": "ruby",
        "depth": 2
      },
      {
        "id": 5,
        "mol": "H(F)",
        "sha": "532e20cfc7abe61e95ca333ab04f8ddd27e0ee9b17f73be10489508f36728847",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain/scope.rb",
        "risk": 1,
        "size": 5851,
        "type": "ruby",
        "depth": 2
      },
      {
        "ctx": [
          {
            "b": "boP%0wGU\u0026dwozZ1aARJACw7Y2xDP=lnG.C-BywV)wPF#7z/fSrvqZgd3t\u003cY(B.\u003eRiq!oCCarUluBy/u2avX*(iYY@GvSC)$C)UVpw[C::y?Wu3cOFzzB97#gfhc7?A::0lfgG$\u003czdN{fA+/Z",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "AWJyXi=G1KzGGDg3lQE1BAy@3xKt{\u003eA+O@\u003ey?j.pyG1!Ol3di?q!o#)x\u003e7Z4efD#)z!T9hwPwb2ayPwlvpJ$TC42A9vpB4:asy@6wN!2FBAguaAaHyFauBEWx(n37ATAc@ayPwlvpJ%",
            "ln": 1389,
            "col": 33,
            "line": 39
          },
          {
            "b": "v)LiUAW\u0026hwz/fSrvqZgdaARJABzbkdv@DydwPI*ezE^E0xcqkqvTf8lvqPM#w]zYjBzbkdvruQix\u003c#jbwEoL5boQ0cwN(]$zxKp0wQd^0vqfQui.sB8z6JFhBAh88B-.hoEshCBave$aqErc:p-}[zDKp(rarT3viYYPoB7D$CD2Nt8vrlJsyG1^",
            "ln": 2025,
            "col": 15,
            "line": 59
          },
          {
            "b": "k#nW!ave$aqErc:p+DE1C4CYo3jm)#boP\u003cawPA5sz/x/jz/fRsw]zYjB-RapCwhejax8\u0026YlVl{?o\u003c@cNxLzu%efE(5v[y=Nzb\u003eK=vru5/arR)oarUJtwozZ1aw)n)A^n0marR^KyH}=lx\u003eg^)Bzkujx(mMaBzbkdv@bN{B0bykayPdgx(){6asI27",
            "ln": 3280,
            "col": 17,
            "line": 85
          },
          {
            "b": "lQ\u003c9$lsB}De{8wTwN/d\u0026Bsp70v\u003eIK}wN!8zvrlGs3lQDlar$VkC{4fEwN/C1x(mMaBzbkdy?W%jaA7\u003cmyH}^3xKLQ)B0bNyaAIa5A:@=9c#h:)v[*xNv}X!Lvrb\u003c\u003eoLFM\u0026dgdguarTPKk#H6vuRB3\u0026r3jsDlQ\u003c9$lsB}De{8wTwN/d\u0026Bsp70v\u003eIK}wN!CyByO#.wNPQ?xIrbYBsvLtarR^KyH}=lx(mD}v{%E[zF78lxK@r5x(!wsz!pbkz#",
            "ln": 3449,
            "col": 13,
            "line": 91
          },
          {
            "b": "bw?1lvix-4y\u0026%qiw]zYjDSaG=iYZhJvrb\u003c\u003eiYY@ao?wrjazC.7x\u003e7N[x(mMaBzb98ayP85azC}ezf3?ewGV28BAIRwwN(]iyG1!Oo\u003c@cNxIrbSx((TSy:/YlarR^)oIuM(avwQViZNm@wIe7IAaJJ/B95*ewN^udq!oDkvru0)oLFuTBu%.Vdgdgu",
            "ln": 4720,
            "col": 5,
            "line": 116
          },
          {
            "b": "wNxs-zdOb=wPQ)%AaIQea$K\u003cvt}v9=mLnp!zE^9@D2Nsyi+8=zD2Ntewgm\u003cdarR^Hav5hlD2Nt4zddx/q!oC\u003eB7Gl1c)x).BA}?puV6p?wQN6WBx0K8wL2oldp15VaAIagw^PU6arUlkwc%C4wO#2=3lQDoaw3e/BzbkdA+frmy\u0026*!lB0bvszy{fCA=i7vvqf^]B0a[eaz2!cwPh:9z/dfmarR)oarR)Kra]?=wQ4Y@Acb/jzxKdqy?$kcvrMi8BzbkdA+frmy\u0026*!fz!9A4vriMnwO=f9vriM1azt[mvqWidwNPaTvR/P#wmY*(A+PGmx(v\u003e@arR)K3lQDoav6)OA:-/cts\u0026ZOwOkN{t{af0B9hqvaARpdaAIS",
            "ln": 5566,
            "col": 33,
            "line": 137
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "extend"
            ],
            [
              "",
              "ffi_lib"
            ],
            [
              "",
              "typedef"
            ],
            [
              "",
              "typedef"
            ],
            [
              "",
              "enum"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "attach_variable"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "invert"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecClass"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecMatchSearchList"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecMatchItemList"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecReturnAttributes"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecReturnRef"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecReturnData"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecUseKeychain"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecClassGenericPassword"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecClassInternetPassword"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecMatchLimitAll"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecMatchLimit"
            ],
            [
              "",
              "typecast"
            ],
            [
              "",
              "kSecValueRef"
            ],
            [
              "",
              "kSecValueData"
            ],
            [
              "",
              "attach_function"
            ],
            [
              "",
              "find_type"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "enum_value"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ],
            [
              "",
              "raise"
            ],
            [
              "",
              "new"
            ]
          ],
          "mbr": [
            "ATTR_MAP.invert",
            "CF.find_type",
            "Sec.attach_function",
            "Sec.enum_value",
            "Sec.kSecClass",
            "Sec.kSecClassGenericPassword",
            "Sec.kSecClassInternetPassword",
            "Sec.kSecMatchItemList",
            "Sec.kSecMatchLimit",
            "Sec.kSecMatchLimitAll",
            "Sec.kSecMatchSearchList",
            "Sec.kSecReturnAttributes",
            "Sec.kSecReturnData",
            "Sec.kSecReturnRef",
            "Sec.kSecUseKeychain",
            "Sec.kSecValueData",
            "Sec.kSecValueRef",
            "Sec.send"
          ],
          "tgt": [
            "attach_function",
            "attach_variable",
            "enum",
            "enum_value",
            "extend",
            "ffi_lib",
            "find_type",
            "invert",
            "kSecClass",
            "kSecClassGenericPassword",
            "kSecClassInternetPassword",
            "kSecMatchItemList",
            "kSecMatchLimit",
            "kSecMatchLimitAll",
            "kSecMatchSearchList",
            "kSecReturnAttributes",
            "kSecReturnData",
            "kSecReturnRef",
            "kSecUseKeychain",
            "kSecValueData",
            "kSecValueRef",
            "new",
            "raise",
            "send",
            "typecast",
            "typedef"
          ],
          "funcs": [
            [
              "register_type",
              5500
            ],
            [
              "check_osstatus",
              5941
            ]
          ],
          "metrics": {
            "ast": {
              "op.ne": 1,
              "op.sub": 6,
              "max_depth": 14,
              "op.concat": 61,
              "call_count": 105,
              "node_count": 1192,
              "member_count": 18,
              "max_array_len": 12,
              "op_density.ne": 0,
              "op_density.sub": 0.01,
              "member_depth_max": 2,
              "op_density.concat": 0.05
            },
            "file": {
              "size": 6612,
              "entropy": 4.93
            },
            "text": {
              "lines": 168,
              "top_char": 101,
              "max_ws_run": 4,
              "digit_ratio": 0.01,
              "space_count": 896,
              "char_entropy": 4.93,
              "unique_chars": 77,
              "top_char_null": 0,
              "string_density": 0.21,
              "top_char_ratio": 0.1,
              "avg_line_length": 38.36,
              "max_line_length": 108,
              "empty_line_ratio": 0.13,
              "last_line_length": 3,
              "whitespace_ratio": 0.16,
              "identifier_density": 1.58,
              "line_length_stddev": 24.98,
              "encoded_string_ratio": 0.14,
              "normalized_string_count": 2.78,
              "suspicious_comment_ratio": 0.19,
              "trailing_whitespace_lines": 2,
              "normalized_unique_identifiers": 10.96
            },
            "binds": {
              "count": 15
            },
            "binary": {
              "peak_region_bytes": 6144,
              "peak_region_entropy": 4.88
            },
            "source": {
              "class_count": 6,
              "function_count": 2
            },
            "strings": {
              "bytes": 641,
              "count": 36,
              "avg_length": 17.81,
              "max_length": 54,
              "path_count": 1,
              "avg_entropy": 3.41,
              "entropy_stddev": 0.3,
              "base64_candidates": 5
            },
            "comments": {
              "chars": 1650,
              "count": 32,
              "empty": 4,
              "lines": 29,
              "base64": 5,
              "high_entropy": 1,
              "to_code_ratio": 0.21
            },
            "functions": {
              "count": 8
            },
            "identifiers": {
              "count": 265,
              "unique": 81,
              "avg_length": 11.79,
              "max_length": 26,
              "min_length": 2,
              "avg_entropy": 2.85,
              "reuse_ratio": 0.31,
              "length_stddev": 6.13,
              "high_entropy_count": 14,
              "high_entropy_ratio": 0.17,
              "all_lowercase_ratio": 0.21,
              "all_uppercase_ratio": 0.21
            }
          }
        },
        "id": 6,
        "mol": "H₂(DbF)",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain/sec.rb",
        "risk": 2,
        "sha": "5dd9f2162d7c34ce7f791d2032aef443c3a1101890a26e10ab3422ea7e853dd0",
        "size": 6612,
        "traits": [
          {
            "id": "micro-behaviors/data/source/dynamic/reflect::ruby-send-call",
            "conf": 0.9,
            "crit": 3,
            "desc": "Ruby dynamically invokes a method with send",
            "spans": [
              [
                5630,
                4
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/path/sensitive/apple::keychain-data",
            "conf": 0.8,
            "crit": 3,
            "desc": "Reference to Apple Keychain data",
            "spans": [
              [
                3513,
                9
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 7,
        "mol": "H(F)",
        "sha": "2a5aa69f2d0864cb5291cd709f8befe102e4435f5e681131c6062d3720416aec",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!lib/keychain.rb",
        "risk": 1,
        "size": 4049,
        "type": "ruby",
        "depth": 2
      },
      {
        "ctx": [
          {
            "b": "A+flkx(W=ccV:lrv{-[Xy\u0026A%acKHh\u003ewPIv4x\u003c$S@oj-xUxKLQ)ay]x$3lQE4wPIv4x\u003c$S@cV%GwAV/7lBy/G3v@#B6zylMqzWEQfarUxuaszkzz/](bayX[8BAhInayYQswmYvYB.(dEay]x$ao",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "3jm)#wmY*(A+O#]asyYhw)]*#BsehwzWEQfarUxuar\u003e(uz/](baAz4nB-IvxBzbkdy\u0026r%2zxJ.aD1gI@x(kaqwn.!$arR^Hawlo\u003ev}Yp+zz2Ehw)]*#Bs}JvBz9pFxM53fwfs2#avZ6YwIdLsAa9S{uVoB}xEDt:y?kklz!T8qmnu(/cRd3cmjhv(asx\u0026%vSC)$C{+c\u003coj-xUxKLQ)B0\u0026HYcV0Zlx(kLswQd^0vqfQbdjCPDarR!rzE:7%az2C33jm)#wmY*(A+O#]asz8DwO@\u003erwn.!$arR!vBrz@LxM53fwftx5wNPW(ayMydwQd^0vqfQ4A+e\u0026]A+fb#wGV8kayMyivrufgay]x$arR^HarUDhD1gI@x-",
            "ln": 435,
            "col": 6,
            "line": 16
          },
          {
            "b": "e{7@Hwnc6nar\u003e-CxK#i\u003eyH}^3xKLQ)uVQf$v{ZEcrb3hXe]CPKe{82sx)\u003ctkDSjY@wId\u003esCp[2VwN*c}bysDtzE+dIfFCgfEj/qDD1gI@x(kazed9HxarR^HarR^HarR^H",
            "ln": 1004,
            "col": 49,
            "line": 34
          },
          {
            "b": "arR^Hv@DmbwQ5qtcVi\u0026BAa9*eCw?IjaAIWAAbol1wg5HgzWEQfarR^Hbx)YwxKM6}aARJAB98LlaARphB0byzBrC1kazC{uCw?Ruwft#mx\u003eI6\u0026AV!^kwnbE*z!yh4z*iyzA=k/lBzkS9azbLjayMyivrlHlz/Pv}arR^HarUxuaszkzz/](bay/C6vru66vixt%D1gI@x(k55C{46Dz/6Dnx(mMaBzbkdB-RbmcM(@r3lQDlarR^Hax8\u0026Ye]$YAB.\u003eO}A+e-(x)a5ocSsO^oj-xUxKLQ)lVM:DBy=*Ge{z2KxEClpyH}^3xKLQ)cOcw]efF?Ay+cX-efF?Ay+fvozE^9)w**brnJF[ez!T9hwPxjGe[5TduVG.1B-IvFfEWtKarR^HarR!1wQd^0vqfQiv@=c?By=\u003cFvqxC1v/",
            "ln": 1241,
            "col": 1,
            "line": 42
          },
          {
            "b": "w)]H%wHwQhzWEQfarR^HarUCxjS)yeD1gI@x(kLwAaJ]ncOGKVzdLwtvrufoBzb98fjY0jB1.AHBt4iIx(!wzdgdguarR^HarUCLwQ4{gBAoV0B7/Gmy?aU$wNx4Ty\u0026:d{arR^HarUlkwc%C4arUlkwc%C4wO#2=3lQE4wPIv4x\u003c$S@cV-\u003cvBzkS9",
            "ln": 1841,
            "col": 25,
            "line": 59
          },
          {
            "b": "v@=c?By=*Gay]x$arR^HarUxuaszkzz/](bayO!\u003eayMyivrlHlz/Pwoay]x$arR^HarR^Hx(){6auZ?\u0026kX\u003c}Rv}Yp+zEkaJB7Gl1d06JuygQ)%dk2aJwNPW(c$vpevru6/vrc16zdNQbB14CsarR^HarR!vBy/qwB7/Gmy?aU$wNw\u003c]oj-xUxKLQ)iYY\u0026OwO\u0026\u003e6arR^HarR^Hx(){6e]boiB8@%PxM53fwfs2#az2!pwN/*[wm6a^",
            "ln": 3771,
            "col": 15,
            "line": 122
          }
        ],
        "depth": 2,
        "facts": {
          "imp": [
            [
              "",
              "require"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "user_interaction_allowed?"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "user_interaction_allowed"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "user_interaction_allowed?"
            ],
            [
              "",
              "user_interaction_allowed"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "user_interaction_allowed?"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "default"
            ],
            [
              "",
              "expand_path"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "open"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "default"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "exists?"
            ],
            [
              "",
              "path"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "and_return"
            ],
            [
              "",
              "with"
            ],
            [
              "",
              "should_receive"
            ],
            [
              "",
              "kind_of"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "exists?"
            ],
            [
              "",
              "default"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "open"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "exists?"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "before"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "lock_on_sleep"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "lock_on_sleep?"
            ],
            [
              "",
              "lock_on_sleep"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "lock_on_sleep?"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "lock_interval"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "lock_interval"
            ],
            [
              "",
              "after"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "before"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "lock!"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "to"
            ],
            [
              "",
              "expect"
            ],
            [
              "",
              "unlock!"
            ],
            [
              "",
              "raise_error"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "unlock!"
            ],
            [
              "",
              "should_not"
            ],
            [
              "",
              "shared_examples_for"
            ],
            [
              "",
              "before"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "join"
            ],
            [
              "",
              "tmpdir"
            ],
            [
              "",
              "to_i"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "usec"
            ],
            [
              "",
              "now"
            ],
            [
              "",
              "rand"
            ],
            [
              "",
              "after"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "delete"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "be_a"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "klass"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "password"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "password"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "before"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "to"
            ],
            [
              "",
              "expect"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "raise_error"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "all"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "all"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "be_a"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "password"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "length"
            ],
            [
              "",
              "all"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "length"
            ],
            [
              "",
              "all"
            ],
            [
              "",
              "limit"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "length"
            ],
            [
              "",
              "all"
            ],
            [
              "",
              "in"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "be_a"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "password"
            ],
            [
              "",
              "context"
            ],
            [
              "",
              "before"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "it"
            ],
            [
              "",
              "should"
            ],
            [
              "",
              "first"
            ],
            [
              "",
              "where"
            ],
            [
              "",
              "send"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "subject"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "generic_passwords"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "generic_passwords"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "generic_passwords"
            ],
            [
              "",
              "it_behaves_like"
            ],
            [
              "",
              "describe"
            ],
            [
              "",
              "subject"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "let"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "internet_passwords"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "internet_passwords"
            ],
            [
              "",
              "create"
            ],
            [
              "",
              "internet_passwords"
            ],
            [
              "",
              "it_behaves_like"
            ],
            [
              "",
              "spec_helper"
            ]
          ],
          "mbr": [
            "@keychain.delete",
            "@keychain.lock!",
            "@keychain.lock_interval",
            "@keychain.lock_interval.should",
            "@keychain.lock_on_sleep",
            "@keychain.lock_on_sleep?",
            "@keychain.lock_on_sleep?.should",
            "@keychain.should_not",
            "@keychain.unlock!",
            "@keychain_1.delete",
            "@keychain_1.generic_passwords",
            "@keychain_1.generic_passwords.create",
            "@keychain_1.internet_passwords",
            "@keychain_1.internet_passwords.create",
            "@keychain_1.send",
            "@keychain_1.send.create",
            "@keychain_1.send.where",
            "@keychain_1.send.where.all",
            "@keychain_1.send.where.all.first",
            "@keychain_1.send.where.all.should",
            "@keychain_1.send.where.first",
            "@keychain_1.send.where.first.should",
            "@keychain_2.delete",
            "@keychain_2.generic_passwords",
            "@keychain_2.generic_passwords.create",
            "@keychain_2.internet_passwords",
            "@keychain_2.internet_passwords.create",
            "@keychain_2.send",
            "@keychain_2.send.where",
            "@keychain_2.send.where.first",
            "@keychain_2.send.where.first.should",
            "@keychain_3.delete",
            "@keychain_3.generic_passwords",
            "@keychain_3.generic_passwords.create",
            "@keychain_3.internet_passwords",
            "@keychain_3.internet_passwords.create",
            "Dir.tmpdir",
            "File.exists?",
            "File.exists?.should",
            "File.expand_path",
            "File.join",
            "Keychain.create",
            "Keychain.default",
            "Keychain.default.exists?",
            "Keychain.default.exists?.should",
            "Keychain.default.path",
            "Keychain.default.path.should",
            "Keychain.open",
            "Keychain.send",
            "Keychain.send.where",
            "Keychain.send.where.all",
            "Keychain.send.where.all.length",
            "Keychain.send.where.all.length.should",
            "Keychain.send.where.in",
            "Keychain.send.where.in.all",
            "Keychain.send.where.in.all.length",
            "Keychain.send.where.in.all.length.should",
            "Keychain.send.where.limit",
            "Keychain.send.where.limit.all",
            "Keychain.send.where.limit.all.length",
            "Keychain.send.where.limit.all.length.should",
            "Keychain.user_interaction_allowed",
            "Keychain.user_interaction_allowed?",
            "Keychain.user_interaction_allowed?.should",
            "Sec.should_receive",
            "Sec.should_receive.with",
            "Sec.should_receive.with.and_return",
            "Time.now",
            "Time.now.to_i",
            "Time.now.usec",
            "item.klass",
            "item.klass.should",
            "item.password",
            "item.password.should",
            "item.should",
            "k.exists?",
            "k.exists?.should",
            "keychain.delete",
            "keychain.path",
            "keychain.path.should"
          ],
          "tgt": [
            "after",
            "all",
            "and_return",
            "be_a",
            "before",
            "context",
            "create",
            "default",
            "delete",
            "describe",
            "exists?",
            "expand_path",
            "expect",
            "first",
            "generic_passwords",
            "in",
            "internet_passwords",
            "it",
            "it_behaves_like",
            "join",
            "kind_of",
            "klass",
            "length",
            "let",
            "limit",
            "lock!",
            "lock_interval",
            "lock_on_sleep",
            "lock_on_sleep?",
            "now",
            "open",
            "password",
            "path",
            "raise_error",
            "rand",
            "require",
            "send",
            "shared_examples_for",
            "should",
            "should_not",
            "should_receive",
            "subject",
            "tmpdir",
            "to",
            "to_i",
            "unlock!",
            "usec",
            "user_interaction_allowed",
            "user_interaction_allowed?",
            "where",
            "with"
          ],
          "funcs": [
            [
              "add_fixtures",
              7270
            ],
            [
              "add_fixtures",
              8367
            ]
          ],
          "metrics": {
            "ast": {
              "op.eq": 14,
              "max_depth": 27,
              "op.concat": 168,
              "call_count": 256,
              "node_count": 2391,
              "member_count": 80,
              "op_density.eq": 0.01,
              "member_depth_max": 7,
              "op_density.concat": 0.07
            },
            "file": {
              "size": 8973,
              "entropy": 4.72
            },
            "text": {
              "lines": 242,
              "top_char": 101,
              "max_ws_run": 2,
              "digit_ratio": 0.01,
              "space_count": 1694,
              "char_entropy": 4.72,
              "unique_chars": 70,
              "top_char_null": 0,
              "string_density": 0.48,
              "top_char_ratio": 0.09,
              "avg_line_length": 36.08,
              "max_line_length": 177,
              "empty_line_ratio": 0.16,
              "last_line_length": 3,
              "whitespace_ratio": 0.22,
              "identifier_density": 1.81,
              "line_length_stddev": 38.95,
              "normalized_string_count": 7.46,
              "repeated_char_sequences": 19,
              "trailing_whitespace_lines": 3,
              "suspicious_identifier_ratio": 0.01,
              "normalized_unique_identifiers": 10.36
            },
            "binds": {
              "count": 19
            },
            "binary": {
              "peak_region_bytes": 7949,
              "peak_region_entropy": 4.86
            },
            "source": {
              "function_count": 1
            },
            "imports": {
              "count": 1,
              "third_party_count": 1,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 2332,
              "count": 116,
              "avg_length": 20.1,
              "max_length": 76,
              "path_count": 1,
              "avg_entropy": 3.18,
              "domain_count": 7,
              "entropy_stddev": 0.74
            },
            "comments": {
              "chars": 82,
              "count": 1,
              "lines": 1,
              "to_code_ratio": 0
            },
            "functions": {
              "count": 1
            },
            "identifiers": {
              "count": 438,
              "unique": 82,
              "avg_length": 8.87,
              "max_length": 38,
              "min_length": 1,
              "avg_entropy": 2.53,
              "reuse_ratio": 0.19,
              "length_stddev": 6.86,
              "has_digit_ratio": 0.04,
              "sequential_names": 1,
              "single_char_count": 1,
              "single_char_ratio": 0.01,
              "high_entropy_count": 10,
              "high_entropy_ratio": 0.12,
              "all_lowercase_ratio": 0.73,
              "all_uppercase_ratio": 0.04,
              "numeric_suffix_count": 3
            }
          }
        },
        "id": 8,
        "mol": "H₂(DbF)",
        "path": "ruby-keychain-0.1.1.gem!!data.tar.gz!!spec/keychain_spec.rb",
        "risk": 2,
        "sha": "a239b50dcec0772962f2ced82cdb05bc0c8b4201359b49a673c5f96ac35affee",
        "size": 8973,
        "traits": [
          {
            "id": "metadata/package/testing/presence/harness::spec-path-basename",
            "conf": 1.0,
            "crit": 1,
            "desc": "Spec path basename",
            "spans": [
              [
                0,
                0
              ]
            ]
          },
          {
            "id": "metadata/package/testing/presence/harness::test-directory-path",
            "conf": 1.0,
            "crit": 1,
            "desc": "File is in common test directory",
            "spans": [
              [
                0,
                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": [
              [
                3835,
                4
              ]
            ]
          },
          {
            "id": "micro-behaviors/fs/path/sensitive/apple::keychain-data",
            "conf": 0.8,
            "crit": 3,
            "desc": "Reference to Apple Keychain data",
            "spans": [
              [
                595,
                9
              ]
            ]
          },
          {
            "id": "metadata/package/testing/presence/harness::test-directory",
            "conf": 1.0,
            "crit": 2,
            "desc": "File identified as a test by path or name",
            "uses": [
              1
            ],
            "spans": [
              [
                0,
                0
              ]
            ]
          }
        ],
        "type": "ruby"
      },
      {
        "id": 17,
        "sha": "0160b673b0e16d82018fdfed7735266683f16c02f558cd7e3a1243d536a7e04c",
        "path": "ffi@1.17.4.registry.json",
        "size": 832,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 18,
        "sha": "038f6b9a3e6381361206a6e8325e310c23c4cfed4971c0db87b1626e0b009cb6",
        "path": "corefoundation@0.3.19.registry.json",
        "size": 865,
        "type": "registry",
        "depth": 1
      },
      {
        "id": 19,
        "sha": "ed5cecc5d29d21e5d5b81bed987285528293fe4df67b42baed29344dd91887ac",
        "path": "ruby-keychain@0.1.1.registry.json",
        "size": 827,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 6,
    "rev": "b3dc8",
    "v": "8"
  }
}