{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:06:03.863396Z","repo":{"ref":{"host":"github.com","owner":"2dust","name":"v2rayNG"},"default_branch":"master","clone_url":"https://github.com/2dust/v2rayNG.git","html_url":"https://github.com/2dust/v2rayNG","description":"A V2Ray client for Android, support Xray core and v2fly core","stars":65882,"forks":8630,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":270633,"primary_language":"Kotlin","license_spdx":"GPL-3.0","created_at":"2019-05-15T02:15:31Z","pushed_at":"2026-11-13T08:24:16Z","security_policy_url":null,"distribution":{"owner_created_at":"2017-09-11T00:37:19Z","owner_type":"User","release_assets":[{"name":"v2rayN-public-key.asc","size":547,"download_count":216,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayN-public-key.asc"},{"name":"v2rayNG_2.4.0-fdroid_arm64-v8a.apk","size":32571284,"download_count":7423,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.4.0-fdroid_arm64-v8a.apk.sig","size":171,"download_count":136,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.4.0-fdroid_armeabi-v7a.apk","size":33115954,"download_count":473,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.4.0-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":48,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.4.0-fdroid_universal.apk","size":72228677,"download_count":813,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_universal.apk"},{"name":"v2rayNG_2.4.0-fdroid_universal.apk.sig","size":171,"download_count":71,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.4.0-fdroid_x86.apk","size":34152422,"download_count":106,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86.apk"},{"name":"v2rayNG_2.4.0-fdroid_x86.apk.sig","size":171,"download_count":38,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.4.0-fdroid_x86_64.apk","size":33628423,"download_count":123,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86_64.apk"},{"name":"v2rayNG_2.4.0-fdroid_x86_64.apk.sig","size":171,"download_count":39,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.4.0_arm64-v8a.apk","size":32571068,"download_count":13208,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_arm64-v8a.apk"},{"name":"v2rayNG_2.4.0_arm64-v8a.apk.sig","size":171,"download_count":101,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.4.0_armeabi-v7a.apk","size":33115742,"download_count":611,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_armeabi-v7a.apk"},{"name":"v2rayNG_2.4.0_armeabi-v7a.apk.sig","size":171,"download_count":42,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.4.0_universal.apk","size":72228465,"download_count":2524,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_universal.apk"},{"name":"v2rayNG_2.4.0_universal.apk.sig","size":171,"download_count":71,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_universal.apk.sig"},{"name":"v2rayNG_2.4.0_x86.apk","size":34152206,"download_count":185,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_x86.apk"},{"name":"v2rayNG_2.4.0_x86.apk.sig","size":171,"download_count":39,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_x86.apk.sig"},{"name":"v2rayNG_2.4.0_x86_64.apk","size":33628207,"download_count":291,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_x86_64.apk"},{"name":"v2rayNG_2.4.0_x86_64.apk.sig","size":171,"download_count":55,"release_tag":"2.4.0","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":8808,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.15-fdroid_arm64-v8a.apk","size":32462388,"download_count":95719,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.15-fdroid_arm64-v8a.apk.sig","size":171,"download_count":2613,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.15-fdroid_armeabi-v7a.apk","size":33004234,"download_count":7038,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.15-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":643,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.15-fdroid_universal.apk","size":71869421,"download_count":16906,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_universal.apk"},{"name":"v2rayNG_2.3.15-fdroid_universal.apk.sig","size":171,"download_count":855,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.15-fdroid_x86.apk","size":34031118,"download_count":2090,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_x86.apk"},{"name":"v2rayNG_2.3.15-fdroid_x86.apk.sig","size":171,"download_count":415,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.15-fdroid_x86_64.apk","size":33514211,"download_count":2349,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.15-fdroid_x86_64.apk.sig","size":171,"download_count":287,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.15_arm64-v8a.apk","size":32462468,"download_count":115350,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_arm64-v8a.apk"},{"name":"v2rayNG_2.3.15_arm64-v8a.apk.sig","size":171,"download_count":807,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.15_armeabi-v7a.apk","size":33004314,"download_count":6426,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.15_armeabi-v7a.apk.sig","size":171,"download_count":308,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.15_universal.apk","size":71869497,"download_count":21520,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_universal.apk"},{"name":"v2rayNG_2.3.15_universal.apk.sig","size":171,"download_count":871,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_universal.apk.sig"},{"name":"v2rayNG_2.3.15_x86.apk","size":34031194,"download_count":1624,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_x86.apk"},{"name":"v2rayNG_2.3.15_x86.apk.sig","size":171,"download_count":342,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_x86.apk.sig"},{"name":"v2rayNG_2.3.15_x86_64.apk","size":33514283,"download_count":3094,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_x86_64.apk"},{"name":"v2rayNG_2.3.15_x86_64.apk.sig","size":171,"download_count":714,"release_tag":"2.3.15","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.15/v2rayNG_2.3.15_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":4750,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.14-fdroid_arm64-v8a.apk","size":32471040,"download_count":53952,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.14-fdroid_arm64-v8a.apk.sig","size":171,"download_count":1274,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.14-fdroid_armeabi-v7a.apk","size":33008894,"download_count":3797,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.14-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":371,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.14-fdroid_universal.apk","size":71750461,"download_count":9733,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_universal.apk"},{"name":"v2rayNG_2.3.14-fdroid_universal.apk.sig","size":171,"download_count":498,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.14-fdroid_x86.apk","size":34038486,"download_count":1290,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_x86.apk"},{"name":"v2rayNG_2.3.14-fdroid_x86.apk.sig","size":171,"download_count":248,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.14-fdroid_x86_64.apk","size":33518867,"download_count":1374,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.14-fdroid_x86_64.apk.sig","size":171,"download_count":170,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.14_arm64-v8a.apk","size":32470932,"download_count":67637,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_arm64-v8a.apk"},{"name":"v2rayNG_2.3.14_arm64-v8a.apk.sig","size":171,"download_count":511,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.14_armeabi-v7a.apk","size":33008790,"download_count":3792,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.14_armeabi-v7a.apk.sig","size":171,"download_count":223,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.14_universal.apk","size":71750357,"download_count":13480,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_universal.apk"},{"name":"v2rayNG_2.3.14_universal.apk.sig","size":171,"download_count":387,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_universal.apk.sig"},{"name":"v2rayNG_2.3.14_x86.apk","size":34038386,"download_count":1191,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_x86.apk"},{"name":"v2rayNG_2.3.14_x86.apk.sig","size":171,"download_count":207,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_x86.apk.sig"},{"name":"v2rayNG_2.3.14_x86_64.apk","size":33518759,"download_count":2105,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_x86_64.apk"},{"name":"v2rayNG_2.3.14_x86_64.apk.sig","size":171,"download_count":480,"release_tag":"2.3.14","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.14/v2rayNG_2.3.14_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":595,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.13-fdroid_arm64-v8a.apk","size":32466628,"download_count":17831,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.13-fdroid_arm64-v8a.apk.sig","size":171,"download_count":357,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.13-fdroid_armeabi-v7a.apk","size":33004846,"download_count":1436,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.13-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":114,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.13-fdroid_universal.apk","size":71737429,"download_count":2670,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_universal.apk"},{"name":"v2rayNG_2.3.13-fdroid_universal.apk.sig","size":171,"download_count":139,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.13-fdroid_x86.apk","size":34034270,"download_count":458,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_x86.apk"},{"name":"v2rayNG_2.3.13-fdroid_x86.apk.sig","size":171,"download_count":90,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.13-fdroid_x86_64.apk","size":33514651,"download_count":461,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.13-fdroid_x86_64.apk.sig","size":171,"download_count":93,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.13_arm64-v8a.apk","size":32466572,"download_count":27898,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_arm64-v8a.apk"},{"name":"v2rayNG_2.3.13_arm64-v8a.apk.sig","size":171,"download_count":252,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.13_armeabi-v7a.apk","size":33004790,"download_count":1468,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.13_armeabi-v7a.apk.sig","size":171,"download_count":111,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.13_universal.apk","size":71737373,"download_count":8008,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_universal.apk"},{"name":"v2rayNG_2.3.13_universal.apk.sig","size":171,"download_count":182,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_universal.apk.sig"},{"name":"v2rayNG_2.3.13_x86.apk","size":34034214,"download_count":732,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_x86.apk"},{"name":"v2rayNG_2.3.13_x86.apk.sig","size":171,"download_count":106,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_x86.apk.sig"},{"name":"v2rayNG_2.3.13_x86_64.apk","size":33514595,"download_count":946,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_x86_64.apk"},{"name":"v2rayNG_2.3.13_x86_64.apk.sig","size":171,"download_count":126,"release_tag":"2.3.13","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.13/v2rayNG_2.3.13_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":248,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.12-fdroid_arm64-v8a.apk","size":32359296,"download_count":9589,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.12-fdroid_arm64-v8a.apk.sig","size":171,"download_count":202,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.12-fdroid_armeabi-v7a.apk","size":32901394,"download_count":726,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.12-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":74,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.12-fdroid_universal.apk","size":71544569,"download_count":1264,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_universal.apk"},{"name":"v2rayNG_2.3.12-fdroid_universal.apk.sig","size":171,"download_count":85,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.12-fdroid_x86.apk","size":33925390,"download_count":314,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_x86.apk"},{"name":"v2rayNG_2.3.12-fdroid_x86.apk.sig","size":171,"download_count":65,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.12-fdroid_x86_64.apk","size":33408059,"download_count":316,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.12-fdroid_x86_64.apk.sig","size":171,"download_count":65,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.12_arm64-v8a.apk","size":32359164,"download_count":16826,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_arm64-v8a.apk"},{"name":"v2rayNG_2.3.12_arm64-v8a.apk.sig","size":171,"download_count":153,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.12_armeabi-v7a.apk","size":32901262,"download_count":907,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.12_armeabi-v7a.apk.sig","size":171,"download_count":78,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.12_universal.apk","size":71544437,"download_count":3006,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_universal.apk"},{"name":"v2rayNG_2.3.12_universal.apk.sig","size":171,"download_count":107,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_universal.apk.sig"},{"name":"v2rayNG_2.3.12_x86.apk","size":33925262,"download_count":416,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_x86.apk"},{"name":"v2rayNG_2.3.12_x86.apk.sig","size":171,"download_count":79,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_x86.apk.sig"},{"name":"v2rayNG_2.3.12_x86_64.apk","size":33407927,"download_count":558,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_x86_64.apk"},{"name":"v2rayNG_2.3.12_x86_64.apk.sig","size":171,"download_count":80,"release_tag":"2.3.12","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.12/v2rayNG_2.3.12_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":9253,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.11-fdroid_arm64-v8a.apk","size":33535280,"download_count":111110,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.11-fdroid_arm64-v8a.apk.sig","size":171,"download_count":2333,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.11-fdroid_armeabi-v7a.apk","size":34039534,"download_count":8429,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.11-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":768,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.11-fdroid_universal.apk","size":76398133,"download_count":18822,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_universal.apk"},{"name":"v2rayNG_2.3.11-fdroid_universal.apk.sig","size":171,"download_count":904,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.11-fdroid_x86.apk","size":35155478,"download_count":2586,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_x86.apk"},{"name":"v2rayNG_2.3.11-fdroid_x86.apk.sig","size":171,"download_count":567,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.11-fdroid_x86_64.apk","size":34624403,"download_count":2611,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.11-fdroid_x86_64.apk.sig","size":171,"download_count":319,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.11_arm64-v8a.apk","size":33535156,"download_count":146727,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_arm64-v8a.apk"},{"name":"v2rayNG_2.3.11_arm64-v8a.apk.sig","size":171,"download_count":948,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.11_armeabi-v7a.apk","size":34039410,"download_count":8346,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.11_armeabi-v7a.apk.sig","size":171,"download_count":381,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.11_universal.apk","size":76398009,"download_count":29358,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_universal.apk"},{"name":"v2rayNG_2.3.11_universal.apk.sig","size":171,"download_count":653,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_universal.apk.sig"},{"name":"v2rayNG_2.3.11_x86.apk","size":35155354,"download_count":2519,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_x86.apk"},{"name":"v2rayNG_2.3.11_x86.apk.sig","size":171,"download_count":345,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_x86.apk.sig"},{"name":"v2rayNG_2.3.11_x86_64.apk","size":34624279,"download_count":4163,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_x86_64.apk"},{"name":"v2rayNG_2.3.11_x86_64.apk.sig","size":171,"download_count":983,"release_tag":"2.3.11","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.11/v2rayNG_2.3.11_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":1115,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.10-fdroid_arm64-v8a.apk","size":32905788,"download_count":31688,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.10-fdroid_arm64-v8a.apk.sig","size":171,"download_count":532,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.10-fdroid_armeabi-v7a.apk","size":33368502,"download_count":1993,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.10-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":169,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.10-fdroid_universal.apk","size":74018349,"download_count":29106,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_universal.apk"},{"name":"v2rayNG_2.3.10-fdroid_universal.apk.sig","size":171,"download_count":230,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.10-fdroid_x86.apk","size":34451274,"download_count":588,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_x86.apk"},{"name":"v2rayNG_2.3.10-fdroid_x86.apk.sig","size":171,"download_count":110,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.10-fdroid_x86_64.apk","size":33943843,"download_count":601,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.10-fdroid_x86_64.apk.sig","size":171,"download_count":118,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.10_arm64-v8a.apk","size":32905612,"download_count":43261,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_arm64-v8a.apk"},{"name":"v2rayNG_2.3.10_arm64-v8a.apk.sig","size":171,"download_count":372,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.10_armeabi-v7a.apk","size":33368326,"download_count":2463,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.10_armeabi-v7a.apk.sig","size":171,"download_count":130,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.10_universal.apk","size":74018173,"download_count":20814,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_universal.apk"},{"name":"v2rayNG_2.3.10_universal.apk.sig","size":171,"download_count":257,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_universal.apk.sig"},{"name":"v2rayNG_2.3.10_x86.apk","size":34451098,"download_count":1067,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_x86.apk"},{"name":"v2rayNG_2.3.10_x86.apk.sig","size":171,"download_count":124,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_x86.apk.sig"},{"name":"v2rayNG_2.3.10_x86_64.apk","size":33943667,"download_count":1492,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_x86_64.apk"},{"name":"v2rayNG_2.3.10_x86_64.apk.sig","size":171,"download_count":237,"release_tag":"2.3.10","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.10/v2rayNG_2.3.10_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":1084,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.9-fdroid_arm64-v8a.apk","size":32857956,"download_count":29769,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.9-fdroid_arm64-v8a.apk.sig","size":171,"download_count":611,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.9-fdroid_armeabi-v7a.apk","size":33311726,"download_count":1825,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.9-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":155,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.9-fdroid_universal.apk","size":73502333,"download_count":6361,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_universal.apk"},{"name":"v2rayNG_2.3.9-fdroid_universal.apk.sig","size":171,"download_count":221,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.9-fdroid_x86.apk","size":34388574,"download_count":623,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_x86.apk"},{"name":"v2rayNG_2.3.9-fdroid_x86.apk.sig","size":171,"download_count":127,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.9-fdroid_x86_64.apk","size":33888315,"download_count":652,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.9-fdroid_x86_64.apk.sig","size":171,"download_count":140,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.9_arm64-v8a.apk","size":32857868,"download_count":43188,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_arm64-v8a.apk"},{"name":"v2rayNG_2.3.9_arm64-v8a.apk.sig","size":171,"download_count":385,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.9_armeabi-v7a.apk","size":33311638,"download_count":2144,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.9_armeabi-v7a.apk.sig","size":171,"download_count":142,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.9_universal.apk","size":73502245,"download_count":18957,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_universal.apk"},{"name":"v2rayNG_2.3.9_universal.apk.sig","size":171,"download_count":253,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_universal.apk.sig"},{"name":"v2rayNG_2.3.9_x86.apk","size":34388486,"download_count":1010,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_x86.apk"},{"name":"v2rayNG_2.3.9_x86.apk.sig","size":171,"download_count":135,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_x86.apk.sig"},{"name":"v2rayNG_2.3.9_x86_64.apk","size":33888227,"download_count":1394,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_x86_64.apk"},{"name":"v2rayNG_2.3.9_x86_64.apk.sig","size":171,"download_count":188,"release_tag":"2.3.9","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.9/v2rayNG_2.3.9_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":1246,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.8-fdroid_arm64-v8a.apk","size":32766089,"download_count":32500,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.8-fdroid_arm64-v8a.apk.sig","size":171,"download_count":701,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.8-fdroid_armeabi-v7a.apk","size":33219859,"download_count":2198,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.8-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":268,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.8-fdroid_universal.apk","size":73410462,"download_count":5078,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_universal.apk"},{"name":"v2rayNG_2.3.8-fdroid_universal.apk.sig","size":171,"download_count":364,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.8-fdroid_x86.apk","size":34296707,"download_count":793,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_x86.apk"},{"name":"v2rayNG_2.3.8-fdroid_x86.apk.sig","size":171,"download_count":206,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.8-fdroid_x86_64.apk","size":33796444,"download_count":807,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.8-fdroid_x86_64.apk.sig","size":171,"download_count":224,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.8_arm64-v8a.apk","size":32766085,"download_count":41622,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_arm64-v8a.apk"},{"name":"v2rayNG_2.3.8_arm64-v8a.apk.sig","size":171,"download_count":486,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.8_armeabi-v7a.apk","size":33219855,"download_count":2820,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.8_armeabi-v7a.apk.sig","size":171,"download_count":234,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.8_universal.apk","size":73410462,"download_count":18760,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_universal.apk"},{"name":"v2rayNG_2.3.8_universal.apk.sig","size":171,"download_count":409,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_universal.apk.sig"},{"name":"v2rayNG_2.3.8_x86.apk","size":34296703,"download_count":1232,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_x86.apk"},{"name":"v2rayNG_2.3.8_x86.apk.sig","size":171,"download_count":231,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_x86.apk.sig"},{"name":"v2rayNG_2.3.8_x86_64.apk","size":33796444,"download_count":1777,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_x86_64.apk"},{"name":"v2rayNG_2.3.8_x86_64.apk.sig","size":171,"download_count":268,"release_tag":"2.3.8","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.8/v2rayNG_2.3.8_x86_64.apk.sig"},{"name":"v2rayN-public-key.asc","size":547,"download_count":633,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayN-public-key.asc"},{"name":"v2rayNG_2.3.7-fdroid_arm64-v8a.apk","size":32561389,"download_count":14817,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_arm64-v8a.apk"},{"name":"v2rayNG_2.3.7-fdroid_arm64-v8a.apk.sig","size":171,"download_count":380,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.7-fdroid_armeabi-v7a.apk","size":32953771,"download_count":1189,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.7-fdroid_armeabi-v7a.apk.sig","size":171,"download_count":162,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.7-fdroid_universal.apk","size":72365418,"download_count":2784,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_universal.apk"},{"name":"v2rayNG_2.3.7-fdroid_universal.apk.sig","size":171,"download_count":181,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_universal.apk.sig"},{"name":"v2rayNG_2.3.7-fdroid_x86.apk","size":34023591,"download_count":491,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_x86.apk"},{"name":"v2rayNG_2.3.7-fdroid_x86.apk.sig","size":171,"download_count":115,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_x86.apk.sig"},{"name":"v2rayNG_2.3.7-fdroid_x86_64.apk","size":33535072,"download_count":533,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_x86_64.apk"},{"name":"v2rayNG_2.3.7-fdroid_x86_64.apk.sig","size":171,"download_count":137,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7-fdroid_x86_64.apk.sig"},{"name":"v2rayNG_2.3.7_arm64-v8a.apk","size":32561237,"download_count":24025,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_arm64-v8a.apk"},{"name":"v2rayNG_2.3.7_arm64-v8a.apk.sig","size":171,"download_count":376,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_arm64-v8a.apk.sig"},{"name":"v2rayNG_2.3.7_armeabi-v7a.apk","size":32953619,"download_count":2216,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_armeabi-v7a.apk"},{"name":"v2rayNG_2.3.7_armeabi-v7a.apk.sig","size":171,"download_count":659,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_armeabi-v7a.apk.sig"},{"name":"v2rayNG_2.3.7_universal.apk","size":72365266,"download_count":7644,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_universal.apk"},{"name":"v2rayNG_2.3.7_universal.apk.sig","size":171,"download_count":435,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_universal.apk.sig"},{"name":"v2rayNG_2.3.7_x86.apk","size":34023443,"download_count":932,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_x86.apk"},{"name":"v2rayNG_2.3.7_x86.apk.sig","size":171,"download_count":143,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_x86.apk.sig"},{"name":"v2rayNG_2.3.7_x86_64.apk","size":33534920,"download_count":929,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_x86_64.apk"},{"name":"v2rayNG_2.3.7_x86_64.apk.sig","size":171,"download_count":172,"release_tag":"2.3.7","url":"https://github.com/2dust/v2rayNG/releases/download/2.3.7/v2rayNG_2.3.7_x86_64.apk.sig"}]}},"commit_sha":"141059d98402bb353400a42fce9d2ec8447cd70f","profile":{"lines_by_language":{"Kotlin":33372,"Shell":103},"files_by_category":{"source":198,"config":123,"binary":41,"test":28,"docs":18,"other":13},"source_lines":31108,"test_lines":2367},"pillars":{"ai_provenance":{"score":6.2,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0618,"suspected_share":0.0,"estimated_share":0.0618,"ai_artifacts":8.0,"flagged_work_units":0.0,"flagged_releases":0.0,"style_index":0.096},"summary":"Explicit AI attribution on 6% of first-party code added; an estimated 6% including velocity signals."},"quality":{"score":70.5,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":79.6,"duplication":71.5,"lint":99.6,"testing":43.8,"docs":65.0,"type_safety":null,"process":80.0},"summary":"Code quality is adequate: test-to-source ratio 0.08, no CI test run detected; 8% of function code in complex or long functions; 6% duplicated lines. Weakest area: testing."},"security":{"score":67.5,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":96.7,"sast":99.4,"dependencies":null,"ci_actions":3.6,"posture":60.0,"scorecard":33.8},"summary":"Security posture is weak: 16 high-severity workflow issues. Weakest area: ci actions."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.6.0","metrics":{"aggregate":4.7,"check:Maintained":10.0,"check:Code-Review":6.0,"check:Dangerous-Workflow":10.0,"check:Token-Permissions":0.0,"check:Binary-Artifacts":9.0,"check:Pinned-Dependencies":0.0,"check:CII-Best-Practices":0.0,"check:Security-Policy":0.0,"check:Fuzzing":0.0,"check:License":10.0,"check:Branch-Protection":0.0,"check:Signed-Releases":8.0,"check:SAST":0.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Maintained: 10/10 (30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10)","ref":"Maintained","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Code-Review: 6/10 (Found 19/29 approved changesets -- score normalized to 6)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.4},{"kind":"scorecard-check","description":"Scorecard Dangerous-Workflow: 10/10 (no dangerous workflow patterns detected)","ref":"Dangerous-Workflow","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Token-Permissions: 0/10 (detected GitHub workflow tokens with excessive permissions)","ref":"Token-Permissions","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 9/10 (binaries present in source code)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.1},{"kind":"scorecard-check","description":"Scorecard Pinned-Dependencies: 0/10 (dependency not pinned by hash detected -- score normalized to 0)","ref":"Pinned-Dependencies","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard CII-Best-Practices: 0/10 (no effort to earn an OpenSSF best practices badge detected)","ref":"CII-Best-Practices","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Security-Policy: 0/10 (security policy file not detected)","ref":"Security-Policy","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Fuzzing: 0/10 (project is not fuzzed)","ref":"Fuzzing","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Branch-Protection: 0/10 (branch protection not enabled on development/release branches)","ref":"Branch-Protection","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Signed-Releases: 8/10 (5 out of the last 5 releases have a total of 5 signed artifacts.)","ref":"Signed-Releases","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":0.2},{"kind":"scorecard-check","description":"Scorecard SAST: 0/10 (SAST tool is not run on all commits -- score normalized to 0)","ref":"SAST","url":"https://scorecard.dev/viewer/?uri=github.com/2dust/v2rayNG","weight":1.0}],"data":{"date":"2026-11-09","commit":"e10fafe6d4be3fe825a3c8119c4db7947ee97949","matches_head":false},"error":null},{"analyzer":"sec-registry","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":1704.0,"attributed_commits":60.0,"attributed_commit_share":0.035211267605633804,"effective_loc":72229.0,"attributed_loc":4465.0,"attributed_loc_share":0.061817275609519724,"tools_detected":3.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"OpenAI Codex: 40 attributed commits, 3,722 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 14 attributed commits, 628 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Claude Code: 6 attributed commits, 115 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/bump-gson-2.15.0'","ref":"a66365cf2083f5acb105dd628bccc189c0f1fa8f","url":"https://github.com/2dust/v2rayNG/commit/a66365cf2083f5acb105dd628bccc189c0f1fa8f","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/bump-agp-9.5.0'","ref":"9a7df0d0f9bfa1fc799e9208a7a1c31e72d6de32","url":"https://github.com/2dust/v2rayNG/commit/9a7df0d0f9bfa1fc799e9208a7a1c31e72d6de32","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/bump-okhttp-5.5.1'","ref":"0d1c57000f0ed270b3660e7dafa72e12b7b89aa5","url":"https://github.com/2dust/v2rayNG/commit/0d1c57000f0ed270b3660e7dafa72e12b7b89aa5","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/update-hev-socks5-tunnel-2.19.2'","ref":"0f961c54c8c9f85c5271778653340025d33772cc","url":"https://github.com/2dust/v2rayNG/commit/0f961c54c8c9f85c5271778653340025d33772cc","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/update-setup-java-6.1.0'","ref":"6214bc19d413021474a5d95803e57732e36ab76a","url":"https://github.com/2dust/v2rayNG/commit/6214bc19d413021474a5d95803e57732e36ab76a","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/update-gradle-9.8.2'","ref":"3165bcf4fe6efa3f9c35693ba5bf5e88f2c946ad","url":"https://github.com/2dust/v2rayNG/commit/3165bcf4fe6efa3f9c35693ba5bf5e88f2c946ad","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/update-hev-socks5-tunnel-2.19.0'","ref":"552cc2425d55d1ed23d3b3472fcd1b1e404f1b93","url":"https://github.com/2dust/v2rayNG/commit/552cc2425d55d1ed23d3b3472fcd1b1e404f1b93","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/fix-policy-group-routing-fallback'","ref":"6fe3893bfd37865dc677111fa48aef14c0a41efd","url":"https://github.com/2dust/v2rayNG/commit/6fe3893bfd37865dc677111fa48aef14c0a41efd","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"e151890c559f7f4d613bbbd2c396b9bca1f997fc","url":"https://github.com/2dust/v2rayNG/commit/e151890c559f7f4d613bbbd2c396b9bca1f997fc","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"04d407f5a1e9fe8e732327f9b5394c06d8e9a83c","url":"https://github.com/2dust/v2rayNG/commit/04d407f5a1e9fe8e732327f9b5394c06d8e9a83c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"5029d75475df56804b98d296319a5a62febedc67","url":"https://github.com/2dust/v2rayNG/commit/5029d75475df56804b98d296319a5a62febedc67","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"85b1f694c9d96a53eb2ad37b2e152e0b8db42bda","url":"https://github.com/2dust/v2rayNG/commit/85b1f694c9d96a53eb2ad37b2e152e0b8db42bda","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"c63e18b751e8f43801a9ee5625c31f15b10736ff","url":"https://github.com/2dust/v2rayNG/commit/c63e18b751e8f43801a9ee5625c31f15b10736ff","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/lint-errors'","ref":"89f53233cb695d0c64ab5d0f231b37f93fc9c581","url":"https://github.com/2dust/v2rayNG/commit/89f53233cb695d0c64ab5d0f231b37f93fc9c581","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"08c2a4deb1a722de84e3db17f15262327a02ccea","url":"https://github.com/2dust/v2rayNG/commit/08c2a4deb1a722de84e3db17f15262327a02ccea","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/fix-settings-defaults'","ref":"8d9152bb4e4e6e8054ab6f0e00d558c6006b73af","url":"https://github.com/2dust/v2rayNG/commit/8d9152bb4e4e6e8054ab6f0e00d558c6006b73af","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/startup-connection-settings'","ref":"5bfcdf90ec7fcc53101bb391cc3238477eb6033a","url":"https://github.com/2dust/v2rayNG/commit/5bfcdf90ec7fcc53101bb391cc3238477eb6033a","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/fix-subscription-index-duplicates'","ref":"f4f992eb9b1cba8c3ee634e29de80f8406f1a889","url":"https://github.com/2dust/v2rayNG/commit/f4f992eb9b1cba8c3ee634e29de80f8406f1a889","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/fix-logcat-duplicate-keys'","ref":"4d8ee1a916e9e2c34d46341a6550e1cf0fb64c2c","url":"https://github.com/2dust/v2rayNG/commit/4d8ee1a916e9e2c34d46341a6550e1cf0fb64c2c","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/locate-server-by-guid'","ref":"a1b45bbfb2a6b66f57219b25d0683323e5db8d2e","url":"https://github.com/2dust/v2rayNG/commit/a1b45bbfb2a6b66f57219b25d0683323e5db8d2e","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/profile-save-hardening'","ref":"7a07565f72427b2c8e445934e1499eedecd1e221","url":"https://github.com/2dust/v2rayNG/commit/7a07565f72427b2c8e445934e1499eedecd1e221","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/manual-profile-store-cleanup'","ref":"0456f835bc2141425c961826feab5b89536576fc","url":"https://github.com/2dust/v2rayNG/commit/0456f835bc2141425c961826feab5b89536576fc","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/daemon-restart-fallback'","ref":"780d194213424b7173eb8cc01ad0005095609e39","url":"https://github.com/2dust/v2rayNG/commit/780d194213424b7173eb8cc01ad0005095609e39","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/geofile-update-notifications'","ref":"c1374a73fb24b3adbfe0aceb6ca4a20c9b42c34a","url":"https://github.com/2dust/v2rayNG/commit/c1374a73fb24b3adbfe0aceb6ca4a20c9b42c34a","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/issue-6084-mmkv-recovery'","ref":"49fe45c49edfece44bed77b57c3e0321d6a3bb0e","url":"https://github.com/2dust/v2rayNG/commit/49fe45c49edfece44bed77b57c3e0321d6a3bb0e","weight":0.9}],"data":{"attributed_loc_by_commit":{"60ddf5ba6b3669d7cdaf914936f54347601e3d1c":2,"0b76ff04091e5a63863e7b92b7e893a1807b10dc":5,"ae4a92b66bd7c16f29ebe0813a72f2fdf1a66fdd":45,"b61cad5a5f9fc9dc901434569012d9d441324b91":70,"de91fb27dbc787943a6839c1b33c2771bb4423a9":25,"2ae2e747e2ee3fe1392c5ea916c826bb456d760b":34,"b673167731ee2e9b0b4e61b76831f583fb076757":1,"ae84df7367e8999247db53cfa6922c8affdfe3f7":26,"14a29884e7c4d6f90926046d5ae84b4ef5b20b9d":1,"093e51186d5cf5b37223777960372fcd51bdd4bd":0,"a4baeeb0fac66f4face2b4c9938f0a03c94db899":62,"087c08f95a13b1bc5f29b85abfd81a7e57554204":9,"3b4d895c1dcefaeaf46b40cb62c6e21840165c82":205,"53e84d5fd803f1a0bc85c138339825555dac979f":143,"16cd06f07a98c73550431541c9e8b42c46cf32ee":113,"ce75aad55e16419898f3713395b294b05422c5ae":487,"794940a1a0fa8542067cb48f809544566757954d":22,"4fee3a67f7107631e3b899d9734621677767b7ab":117,"3380a454759752b8b67c0612477548c8e67b6885":128,"070abd78ea222d616c5284e6533df80b3b809b50":6,"aacc8e091f17c63cca3b634f55c805a0779ba4e2":48,"e549000e5aad1034ba254198ea1217634a0c7bf0":199,"257c4bf21bd22ef033e0ddb07d2ed244ffac2c4f":53,"17b6254d4d978af8c881700c6dd6f9e81d1286b4":37,"31dfaeed6c669b161548ed2b824247efd009a5ae":31,"5ac660e39522c1c3e545733fd59b1ec30bed9beb":306,"efb16e7979a1784212cf3265c886e486bfd774b3":9,"17d03bcc46af0cfe49c579db129e8a36d3cb9681":160,"775546ce40d556b95d57090e34f8465868890a7f":175,"739e303fc08537a356d431eb55ae8bd809d66f24":295,"e8a82d9810ca1cf97a3cc8a9b9525a9f21955807":0,"606246f36ee9213e1aeaa80a1df1eaa3ab89cf06":5,"9cdbc5cebb57a790f6b3b367f883452d4395094c":140,"1fa0ccb4f265845476e514c0702b1edd23904a46":5,"809bdcdb9d1aff067d3668b09ebfd9e70b9e0c27":0,"49fe45c49edfece44bed77b57c3e0321d6a3bb0e":50,"c1374a73fb24b3adbfe0aceb6ca4a20c9b42c34a":1,"780d194213424b7173eb8cc01ad0005095609e39":85,"0456f835bc2141425c961826feab5b89536576fc":263,"7a07565f72427b2c8e445934e1499eedecd1e221":457,"a1b45bbfb2a6b66f57219b25d0683323e5db8d2e":58,"4d8ee1a916e9e2c34d46341a6550e1cf0fb64c2c":89,"f4f992eb9b1cba8c3ee634e29de80f8406f1a889":116,"5bfcdf90ec7fcc53101bb391cc3238477eb6033a":100,"8d9152bb4e4e6e8054ab6f0e00d558c6006b73af":20,"08c2a4deb1a722de84e3db17f15262327a02ccea":11,"89f53233cb695d0c64ab5d0f231b37f93fc9c581":0,"c63e18b751e8f43801a9ee5625c31f15b10736ff":1,"85b1f694c9d96a53eb2ad37b2e152e0b8db42bda":0,"5029d75475df56804b98d296319a5a62febedc67":103,"04d407f5a1e9fe8e732327f9b5394c06d8e9a83c":0,"e151890c559f7f4d613bbbd2c396b9bca1f997fc":0,"6fe3893bfd37865dc677111fa48aef14c0a41efd":23,"552cc2425d55d1ed23d3b3472fcd1b1e404f1b93":0,"3165bcf4fe6efa3f9c35693ba5bf5e88f2c946ad":0,"6214bc19d413021474a5d95803e57732e36ab76a":0,"0f961c54c8c9f85c5271778653340025d33772cc":50,"0d1c57000f0ed270b3660e7dafa72e12b7b89aa5":0,"9a7df0d0f9bfa1fc799e9208a7a1c31e72d6de32":0,"a66365cf2083f5acb105dd628bccc189c0f1fa8f":74},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":14,"loc":628,"first_seen":1766574135,"last_seen":1781405450},"openai-codex":{"name":"OpenAI Codex","commits":40,"loc":3722,"first_seen":1784272146,"last_seen":1794297495},"claude-code":{"name":"Claude Code","commits":6,"loc":115,"first_seen":1789973346,"last_seen":1790839622}},"monthly":{"2023-01":{"loc":7942,"attributed_loc":0},"2023-02":{"loc":128,"attributed_loc":0},"2023-03":{"loc":97,"attributed_loc":0},"2023-04":{"loc":82,"attributed_loc":0},"2023-05":{"loc":348,"attributed_loc":0},"2023-07":{"loc":0,"attributed_loc":0},"2023-08":{"loc":246,"attributed_loc":0},"2023-09":{"loc":15,"attributed_loc":0},"2023-11":{"loc":129,"attributed_loc":0},"2023-12":{"loc":133,"attributed_loc":0},"2024-01":{"loc":338,"attributed_loc":0},"2024-02":{"loc":1051,"attributed_loc":0},"2024-03":{"loc":152,"attributed_loc":0},"2024-04":{"loc":973,"attributed_loc":0},"2024-05":{"loc":1338,"attributed_loc":0},"2024-06":{"loc":338,"attributed_loc":0},"2024-07":{"loc":370,"attributed_loc":0},"2024-08":{"loc":1900,"attributed_loc":0},"2024-09":{"loc":2385,"attributed_loc":0},"2024-10":{"loc":2169,"attributed_loc":0},"2024-11":{"loc":1608,"attributed_loc":0},"2024-12":{"loc":309,"attributed_loc":0},"2025-01":{"loc":274,"attributed_loc":0},"2025-02":{"loc":23,"attributed_loc":0},"2025-03":{"loc":4100,"attributed_loc":0},"2025-04":{"loc":1776,"attributed_loc":0},"2025-05":{"loc":196,"attributed_loc":0},"2025-06":{"loc":175,"attributed_loc":0},"2025-07":{"loc":332,"attributed_loc":0},"2025-08":{"loc":687,"attributed_loc":0},"2025-09":{"loc":12,"attributed_loc":0},"2025-10":{"loc":34,"attributed_loc":0},"2025-11":{"loc":136,"attributed_loc":0},"2025-12":{"loc":418,"attributed_loc":7},"2026-01":{"loc":4752,"attributed_loc":0},"2026-02":{"loc":1050,"attributed_loc":0},"2026-03":{"loc":471,"attributed_loc":0},"2026-04":{"loc":1904,"attributed_loc":478},"2026-05":{"loc":4893,"attributed_loc":0},"2026-06":{"loc":1269,"attributed_loc":143},"2026-07":{"loc":18460,"attributed_loc":1120},"2026-08":{"loc":4338,"attributed_loc":2130},"2026-09":{"loc":1843,"attributed_loc":336},"2026-10":{"loc":1156,"attributed_loc":177},"2026-11":{"loc":1879,"attributed_loc":74}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":8.0,"workflow_agents":0.0,"tools_configured":4.0,"earliest_adoption":1787990389.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"V2rayNG/app/src/main/java/com/v2ray/ang/service/CLAUDE.md (claude-code configuration)","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/service/CLAUDE.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/service/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/CLAUDE.md (claude-code configuration)","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/CLAUDE.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"V2rayNG/app/src/main/java/com/v2ray/ang/service/AGENTS.md (generic-agent configuration)","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/service/AGENTS.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/service/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/AGENTS.md (generic-agent configuration)","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/AGENTS.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"GEMINI.md (gemini configuration)","ref":"GEMINI.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/GEMINI.md","weight":0.5},{"kind":"ai-artifact","description":".github/copilot-instructions.md (github-copilot configuration)","ref":".github/copilot-instructions.md","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/.github/copilot-instructions.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1787990389},{"tool":"claude-code","path":"V2rayNG/app/src/main/java/com/v2ray/ang/service/CLAUDE.md","added_at":1787990389},{"tool":"claude-code","path":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/CLAUDE.md","added_at":1787990389},{"tool":"generic-agent","path":"AGENTS.md","added_at":1787990389},{"tool":"generic-agent","path":"V2rayNG/app/src/main/java/com/v2ray/ang/service/AGENTS.md","added_at":1787990389},{"tool":"generic-agent","path":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/AGENTS.md","added_at":1787990389},{"tool":"gemini","path":"GEMINI.md","added_at":1787990389},{"tool":"github-copilot","path":".github/copilot-instructions.md","added_at":1787990389}],"workflows":[],"tools":["claude-code","gemini","generic-agent","github-copilot"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":917.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":51993.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":362.33961006498913,"median_loc_per_hour":41.0,"pr_timed_units":302.0,"excluded_import_loc":20236.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":["402d63bd9af87a225fe20258ff2ef55b55b4648c","b95db14005be81adb4e3acaef7aab33e9f6f2db4","eeec6de96cf92d74ff88c3b3589fb002d4834871"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":99.0,"flagged_releases":0.0,"max_loc_per_day":637.9},"findings":[],"evidence":[],"data":{"releases":[{"from":"1.9.32","to":"1.9.33","loc":25,"days":11.94,"loc_per_day":2.1,"flagged":false},{"from":"1.9.33","to":"1.9.34","loc":2,"days":5.26,"loc_per_day":0.4,"flagged":false},{"from":"1.9.34","to":"1.9.35","loc":35,"days":9.61,"loc_per_day":3.6,"flagged":false},{"from":"1.9.35","to":"1.9.36","loc":18,"days":10.32,"loc_per_day":1.7,"flagged":false},{"from":"1.9.36","to":"1.9.37","loc":3,"days":2.95,"loc_per_day":1.0,"flagged":false},{"from":"1.9.37","to":"1.9.38","loc":313,"days":9.72,"loc_per_day":32.2,"flagged":false},{"from":"1.9.38","to":"1.9.39","loc":2,"days":3.17,"loc_per_day":0.6,"flagged":false},{"from":"1.9.39","to":"1.9.40","loc":2789,"days":16.09,"loc_per_day":173.3,"flagged":false},{"from":"1.9.40","to":"1.9.41","loc":13,"days":0.96,"loc_per_day":13.5,"flagged":false},{"from":"1.9.41","to":"1.9.42","loc":213,"days":2.13,"loc_per_day":99.9,"flagged":false},{"from":"1.9.42","to":"1.9.43","loc":242,"days":1.89,"loc_per_day":127.9,"flagged":false},{"from":"1.9.43","to":"1.9.44","loc":528,"days":2.12,"loc_per_day":248.9,"flagged":false},{"from":"1.9.44","to":"1.9.45","loc":2,"days":1.63,"loc_per_day":1.2,"flagged":false},{"from":"1.9.45","to":"1.9.46","loc":547,"days":8.18,"loc_per_day":66.9,"flagged":false},{"from":"1.9.46","to":"1.10.0","loc":1215,"days":14.83,"loc_per_day":81.9,"flagged":false},{"from":"1.10.0","to":"1.10.1","loc":12,"days":6.18,"loc_per_day":1.9,"flagged":false},{"from":"1.10.1","to":"1.10.2","loc":9,"days":6.83,"loc_per_day":1.3,"flagged":false},{"from":"1.10.2","to":"1.10.3","loc":13,"days":10.05,"loc_per_day":1.3,"flagged":false},{"from":"1.10.3","to":"1.10.4","loc":128,"days":7.96,"loc_per_day":16.1,"flagged":false},{"from":"1.10.4","to":"1.10.5","loc":49,"days":13.93,"loc_per_day":3.5,"flagged":false},{"from":"1.10.5","to":"1.10.6","loc":10,"days":6.21,"loc_per_day":1.6,"flagged":false},{"from":"1.10.6","to":"1.10.7","loc":47,"days":5.01,"loc_per_day":9.4,"flagged":false},{"from":"1.10.7","to":"1.10.8","loc":115,"days":9.82,"loc_per_day":11.7,"flagged":false},{"from":"1.10.8","to":"1.10.9","loc":310,"days":11.41,"loc_per_day":27.2,"flagged":false},{"from":"1.10.9","to":"1.10.10","loc":20,"days":13.97,"loc_per_day":1.4,"flagged":false},{"from":"1.10.10","to":"1.10.11","loc":2,"days":2.03,"loc_per_day":1.0,"flagged":false},{"from":"1.10.11","to":"1.10.12","loc":308,"days":7.89,"loc_per_day":39.1,"flagged":false},{"from":"1.10.12","to":"1.10.13","loc":154,"days":1.11,"loc_per_day":138.3,"flagged":false},{"from":"1.10.13","to":"1.10.14","loc":72,"days":1.96,"loc_per_day":36.7,"flagged":false},{"from":"1.10.14","to":"1.10.15","loc":3,"days":0.59,"loc_per_day":5.1,"flagged":false},{"from":"1.10.15","to":"1.10.16","loc":40,"days":2.44,"loc_per_day":16.4,"flagged":false},{"from":"1.10.16","to":"1.10.17","loc":23,"days":2.91,"loc_per_day":7.9,"flagged":false},{"from":"1.10.17","to":"1.10.18","loc":3,"days":0.61,"loc_per_day":4.9,"flagged":false},{"from":"1.10.18","to":"1.10.19","loc":74,"days":4.06,"loc_per_day":18.2,"flagged":false},{"from":"1.10.19","to":"1.10.20","loc":10,"days":13.04,"loc_per_day":0.8,"flagged":false},{"from":"1.10.20","to":"1.10.21","loc":2,"days":1.93,"loc_per_day":1.0,"flagged":false},{"from":"1.10.21","to":"1.10.22","loc":2,"days":4.37,"loc_per_day":0.5,"flagged":false},{"from":"1.10.22","to":"1.10.23","loc":2,"days":6.02,"loc_per_day":0.3,"flagged":false},{"from":"1.10.23","to":"1.10.24","loc":16,"days":33.95,"loc_per_day":0.5,"flagged":false},{"from":"1.10.24","to":"1.10.25","loc":22,"days":10.99,"loc_per_day":2.0,"flagged":false},{"from":"1.10.25","to":"1.10.26","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"1.10.26","to":"1.10.27","loc":74,"days":11.02,"loc_per_day":6.7,"flagged":false},{"from":"1.10.27","to":"1.10.28","loc":37,"days":9.72,"loc_per_day":3.8,"flagged":false},{"from":"1.10.28","to":"1.10.29","loc":27,"days":16.91,"loc_per_day":1.6,"flagged":false},{"from":"1.10.29","to":"1.10.30","loc":4,"days":4.26,"loc_per_day":0.9,"flagged":false},{"from":"1.10.30","to":"1.10.31","loc":2,"days":1.77,"loc_per_day":1.1,"flagged":false},{"from":"1.10.31","to":"1.10.32","loc":26,"days":16.28,"loc_per_day":1.6,"flagged":false},{"from":"1.10.32","to":"2.0.0","loc":3001,"days":19.95,"loc_per_day":150.4,"flagged":false},{"from":"2.0.0","to":"2.0.1","loc":173,"days":0.95,"loc_per_day":181.3,"flagged":false},{"from":"2.0.1","to":"2.0.2","loc":233,"days":1.12,"loc_per_day":208.5,"flagged":false},{"from":"2.0.2","to":"2.0.3","loc":114,"days":1.89,"loc_per_day":60.4,"flagged":false},{"from":"2.0.3","to":"2.0.4","loc":4,"days":0.04,"loc_per_day":96.0,"flagged":false},{"from":"2.0.4","to":"2.0.5","loc":424,"days":3.1,"loc_per_day":136.9,"flagged":false},{"from":"2.0.5","to":"2.0.6","loc":262,"days":2.69,"loc_per_day":97.3,"flagged":false},{"from":"2.0.6","to":"2.0.7","loc":880,"days":5.29,"loc_per_day":166.3,"flagged":false},{"from":"2.0.7","to":"2.0.8","loc":148,"days":8.12,"loc_per_day":18.2,"flagged":false},{"from":"2.0.8","to":"2.0.9","loc":34,"days":0.62,"loc_per_day":54.5,"flagged":false},{"from":"2.0.9","to":"2.0.10","loc":23,"days":15.14,"loc_per_day":1.5,"flagged":false},{"from":"2.0.10","to":"2.0.11","loc":795,"days":1.92,"loc_per_day":413.3,"flagged":false},{"from":"2.0.11","to":"2.0.12","loc":95,"days":4.11,"loc_per_day":23.1,"flagged":false},{"from":"2.0.12","to":"2.0.13","loc":38,"days":3.04,"loc_per_day":12.5,"flagged":false},{"from":"2.0.13","to":"2.0.14","loc":196,"days":7.13,"loc_per_day":27.5,"flagged":false},{"from":"2.0.14","to":"2.0.15","loc":177,"days":2.91,"loc_per_day":60.9,"flagged":false},{"from":"2.0.15","to":"2.0.16","loc":33,"days":10.16,"loc_per_day":3.2,"flagged":false},{"from":"2.0.16","to":"2.0.17","loc":2,"days":4.61,"loc_per_day":0.4,"flagged":false},{"from":"2.0.17","to":"2.0.18","loc":241,"days":5.91,"loc_per_day":40.8,"flagged":false},{"from":"2.0.18","to":"2.1.0","loc":869,"days":14.25,"loc_per_day":61.0,"flagged":false},{"from":"2.1.0","to":"2.1.1","loc":275,"days":1.04,"loc_per_day":264.2,"flagged":false},{"from":"2.1.1","to":"2.1.2","loc":236,"days":5.78,"loc_per_day":40.9,"flagged":false},{"from":"2.1.2","to":"2.1.3","loc":92,"days":2.02,"loc_per_day":45.5,"flagged":false},{"from":"2.1.3","to":"2.1.4","loc":216,"days":4.01,"loc_per_day":53.9,"flagged":false},{"from":"2.1.4","to":"2.1.5","loc":2149,"days":3.37,"loc_per_day":637.9,"flagged":false},{"from":"2.1.5","to":"2.1.6","loc":1444,"days":5.64,"loc_per_day":256.1,"flagged":false},{"from":"2.1.6","to":"2.1.7","loc":38,"days":1.11,"loc_per_day":34.3,"flagged":false},{"from":"2.1.7","to":"2.1.8","loc":391,"days":9.11,"loc_per_day":42.9,"flagged":false},{"from":"2.1.8","to":"2.2.0","loc":703,"days":3.94,"loc_per_day":178.2,"flagged":false},{"from":"2.2.0","to":"2.2.1","loc":166,"days":4.18,"loc_per_day":39.7,"flagged":false},{"from":"2.2.1","to":"2.2.2","loc":14,"days":4.83,"loc_per_day":2.9,"flagged":false},{"from":"2.2.2","to":"2.2.3","loc":8,"days":1.11,"loc_per_day":7.2,"flagged":false},{"from":"2.2.3","to":"2.2.4","loc":247,"days":11.71,"loc_per_day":21.1,"flagged":false},{"from":"2.2.4","to":"2.2.5","loc":71,"days":6.27,"loc_per_day":11.3,"flagged":false},{"from":"2.2.5","to":"2.2.6","loc":1187,"days":15.0,"loc_per_day":79.1,"flagged":false},{"from":"2.2.6","to":"2.3.0","loc":6234,"days":26.86,"loc_per_day":232.1,"flagged":false},{"from":"2.3.0","to":"2.3.1","loc":8,"days":0.04,"loc_per_day":192.0,"flagged":false},{"from":"2.3.1","to":"2.3.2","loc":135,"days":1.0,"loc_per_day":135.2,"flagged":false},{"from":"2.3.2","to":"2.3.3","loc":893,"days":5.05,"loc_per_day":176.9,"flagged":false},{"from":"2.3.3","to":"2.3.4","loc":574,"days":7.17,"loc_per_day":80.0,"flagged":false},{"from":"2.3.4","to":"2.3.5","loc":1245,"days":5.86,"loc_per_day":212.5,"flagged":false},{"from":"2.3.5","to":"2.3.6","loc":1054,"days":9.04,"loc_per_day":116.6,"flagged":false},{"from":"2.3.6","to":"2.3.7","loc":479,"days":6.9,"loc_per_day":69.4,"flagged":false},{"from":"2.3.7","to":"2.3.8","loc":244,"days":4.94,"loc_per_day":49.4,"flagged":false},{"from":"2.3.8","to":"2.3.9","loc":1223,"days":12.02,"loc_per_day":101.8,"flagged":false},{"from":"2.3.9","to":"2.3.10","loc":122,"days":9.09,"loc_per_day":13.4,"flagged":false},{"from":"2.3.10","to":"2.3.11","loc":109,"days":9.92,"loc_per_day":11.0,"flagged":false},{"from":"2.3.11","to":"2.3.12","loc":2,"days":7.07,"loc_per_day":0.3,"flagged":false},{"from":"2.3.12","to":"2.3.13","loc":781,"days":3.74,"loc_per_day":209.1,"flagged":false},{"from":"2.3.13","to":"2.3.14","loc":142,"days":6.02,"loc_per_day":23.6,"flagged":false},{"from":"2.3.14","to":"2.3.15","loc":42,"days":4.18,"loc_per_day":10.1,"flagged":false},{"from":"2.3.15","to":"2.4.0","loc":1771,"days":10.8,"loc_per_day":164.0,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":31108.0,"index":0.096,"count:narrated_steps":3.0,"per_kloc:narrated_steps":0.096,"files:narrated_steps":2.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 1: Resolve the main outbound (always tag = TAG_PROXY).","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigContextBuilder.kt:39","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigContextBuilder.kt#L39","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 2: Resolve all non-builtin routing outbound tags.","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigContextBuilder.kt:45","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigContextBuilder.kt#L45","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Finally, the xray client core sends all data through the B_1, B_2, ... tasks.","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt:51","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt#L51","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":1.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 7aa27fd3de); removed from the current tree but still retrievable","path":"V2rayNG/app/src/main/res/xml/pref_settings.xml","line":51,"fingerprint":"7aa27fd3de11456c0c8f8009c46a2ae1cdf8db38:V2rayNG/app/src/main/res/xml/pref_settings.xml:generic-api-key:51"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":0.0,"findings_medium":2.0,"findings_low":0.0,"weighted_findings":0.5,"scanned_lines":31108.0,"parse_errors":1.0},"findings":[{"rule_id":"opengrep/kotlin.lang.security.unencrypted-socket","severity":"medium","message":"This socket is not encrypted. The traffic could be read by an attacker intercepting the network traffic. Use an SSLSocket created by 'SSLSocketFactory' or 'SSLServerSocketFactory' instead [confidence low]","path":"V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt","line":33,"fingerprint":"kotlin.lang.security.unencrypted-socket:V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt:33"},{"rule_id":"opengrep/kotlin.lang.security.unencrypted-socket","severity":"medium","message":"This socket is not encrypted. The traffic could be read by an attacker intercepting the network traffic. Use an SSLSocket created by 'SSLSocketFactory' or 'SSLServerSocketFactory' instead [confidence low]","path":"V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt","line":414,"fingerprint":"kotlin.lang.security.unencrypted-socket:V2rayNG/app/src/main/java/com/v2ray/ang/util/Utils.kt:414"}],"evidence":[],"data":{"rulesets":["kotlin","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":22.0,"findings_high":16.0,"findings_medium":2.0,"findings_low":4.0,"penalty":199.0},"findings":[{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/build.yml","line":14,"fingerprint":"excessive-permissions:.github/workflows/build.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/build.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":28,"fingerprint":"unpinned-uses:.github/workflows/build.yml:28"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":46,"fingerprint":"unpinned-uses:.github/workflows/build.yml:46"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":58,"fingerprint":"unpinned-uses:.github/workflows/build.yml:58"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":76,"fingerprint":"unpinned-uses:.github/workflows/build.yml:76"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":84,"fingerprint":"unpinned-uses:.github/workflows/build.yml:84"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":90,"fingerprint":"unpinned-uses:.github/workflows/build.yml:90"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":105,"fingerprint":"unpinned-uses:.github/workflows/build.yml:105"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":112,"fingerprint":"unpinned-uses:.github/workflows/build.yml:112"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":119,"fingerprint":"unpinned-uses:.github/workflows/build.yml:119"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":126,"fingerprint":"unpinned-uses:.github/workflows/build.yml:126"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":139,"fingerprint":"unpinned-uses:.github/workflows/build.yml:139"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build.yml","line":157,"fingerprint":"unpinned-uses:.github/workflows/build.yml:157"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fastlane.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/fastlane.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fastlane.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/fastlane.yml:16"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":3,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:3"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fastlane.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/fastlane.yml:11"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build.yml","line":21,"fingerprint":"artipacked:.github/workflows/build.yml:21"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/fastlane.yml","line":14,"fingerprint":"artipacked:.github/workflows/fastlane.yml:14"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/build.yml","line":102,"fingerprint":"template-injection:.github/workflows/build.yml:102"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/build.yml","line":157,"fingerprint":"superfluous-actions:.github/workflows/build.yml:157"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":1.0,"check:signed_commits":1.0,"check:lockfiles":1.0,"signed_commit_share":0.63,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":2.0,"binary_assets":100.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release 2.4.0 ships v2rayNG_2.4.0-fdroid_arm64-v8a.apk (7423 downloads)","ref":"v2rayNG_2.4.0-fdroid_arm64-v8a.apk","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_arm64-v8a.apk","weight":0.0},{"kind":"binary-release-asset","description":"release 2.4.0 ships v2rayNG_2.4.0-fdroid_armeabi-v7a.apk (473 downloads)","ref":"v2rayNG_2.4.0-fdroid_armeabi-v7a.apk","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_armeabi-v7a.apk","weight":0.0},{"kind":"binary-release-asset","description":"release 2.4.0 ships v2rayNG_2.4.0-fdroid_universal.apk (813 downloads)","ref":"v2rayNG_2.4.0-fdroid_universal.apk","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_universal.apk","weight":0.0},{"kind":"binary-release-asset","description":"release 2.4.0 ships v2rayNG_2.4.0-fdroid_x86.apk (106 downloads)","ref":"v2rayNG_2.4.0-fdroid_x86.apk","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86.apk","weight":0.0},{"kind":"binary-release-asset","description":"release 2.4.0 ships v2rayNG_2.4.0-fdroid_x86_64.apk (123 downloads)","ref":"v2rayNG_2.4.0-fdroid_x86_64.apk","url":"https://github.com/2dust/v2rayNG/releases/download/2.4.0/v2rayNG_2.4.0-fdroid_x86_64.apk","weight":0.0},{"kind":"readme-download-lure","description":"links to file hosts or shorteners: t.me/","ref":"README.md","url":null,"weight":0.0}],"data":{"signals":["binary-release-assets","readme-download-lure"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":1209.0,"function_nloc":15915.0,"mean_ccn":2.7,"p90_ccn":5.0,"complex_functions":9.0,"long_functions":6.0,"many_param_functions":7.0,"risky_nloc_share":0.076},"findings":[],"evidence":[{"kind":"complex-function","description":"fromProfileItem in V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt: complexity 49, 57 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt#L209","weight":0.8166666666666667},{"kind":"complex-function","description":"toProfileItem in V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt: complexity 29, 72 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerUiState.kt#L134","weight":0.48333333333333334},{"kind":"complex-function","description":"toProfileItem in V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayNShareItem.kt: complexity 22, 84 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayNShareItem.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/dto/V2rayNShareItem.kt#L79","weight":0.36666666666666664},{"kind":"complex-function","description":"onAction in V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt: complexity 21, 42 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt#L276","weight":0.35},{"kind":"complex-function","description":"toOutboundWireguard in V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt: complexity 20, 115 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt#L241","weight":0.3333333333333333},{"kind":"complex-function","description":"(anonymous) in V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt: complexity 20, 63 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/LauncherManager.kt#L66","weight":0.3333333333333333},{"kind":"complex-function","description":"(anonymous) in V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt: complexity 18, 55 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt#L123","weight":0.3},{"kind":"complex-function","description":"(anonymous) in V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt: complexity 16, 75 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreServiceManager.kt#L294","weight":0.26666666666666666},{"kind":"complex-function","description":"validateEntries in V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt: complexity 16, 51 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/util/ZipUtil.kt#L139","weight":0.26666666666666666},{"kind":"complex-function","description":"ServerListItem in V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt: complexity 8, 127 lines","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt#L345","weight":0.13333333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":19315.0,"duplicated_lines":1082.0,"duplicated_share":0.056,"files":198.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt:36 and V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt:63","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreConfigManager.kt#L36","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt:128 and V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt:151","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/core/CoreOutboundBuilder.kt#L128","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt:54 and V2rayNG/app/src/main/java/com/v2ray/ang/fmt/WireguardFmt.kt:106","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/Hysteria2Fmt.kt#L54","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt:38 and V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VlessFmt.kt:32","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/TrojanFmt.kt#L38","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VlessFmt.kt:20 and V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VmessFmt.kt:162","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VlessFmt.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/VlessFmt.kt#L20","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt:364 and V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt:398","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/handler/AngConfigManager.kt#L364","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt:1016 and V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt:1040","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/handler/MmkvManager.kt#L1016","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt:65 and V2rayNG/app/src/main/java/com/v2ray/ang/handler/UpdateCheckerManager.kt:36","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/handler/SpeedtestManager.kt#L65","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreProxyOnlyService.kt:26 and V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreTestService.kt:79","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreProxyOnlyService.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/service/CoreProxyOnlyService.kt#L26","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt:570 and V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt:643","ref":"V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt","url":"https://github.com/2dust/v2rayNG/blob/141059d98402bb353400a42fce9d2ec8447cd70f/V2rayNG/app/src/main/java/com/v2ray/ang/service/DialerNativeService.kt#L570","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"weighted_findings":0.5,"scanned_lines":31108.0,"category:correctness":2.0},"findings":[{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"compile-hevtun.sh","line":15,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:compile-hevtun.sh:15"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"compile-hevtun.sh","line":103,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:compile-hevtun.sh:103"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.1522,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.4957,"test_lines":2367.0,"source_lines":31108.0,"test_ratio":0.0761,"ci_files":2.0,"cochange_share":0.1239,"cochange_commits":234.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/build.yml","ref":".github/workflows/build.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/fastlane.yml","ref":".github/workflows/fastlane.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":56.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":2697.0,"other_lines":28411.0,"files_blamed":198.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":2.0,"quality:other_per_kloc":0.07,"quality:ratio":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":2.0,"security:other_per_kloc":0.07,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}