{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D7","name":"Architectural Integrity","shortDescription":{"text":"Architectural Integrity"},"helpUri":"https://codehealth.canine.dev/dimensions/D7"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/iab/PurchaseConflictNotifier.kt:31-90 | app/src/fdroid/java/com/celzero/bravedns/iab/PurchaseConflictNotifier.kt:154-90"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/iab/PurchaseConflictNotifier.kt"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ebd2ee8380001a30e9fe689f607155584d7faa514cb490939bc2b603439739"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/ui/fragment/RethinkPlusFragment.kt:48-105 | app/src/fdroid/java/com/celzero/bravedns/ui/fragment/RethinkPlusFragment.kt:957-105"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/ui/fragment/RethinkPlusFragment.kt"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc60d45658d177c2f30f9f36573a3658bd03e7dba14d0bb34ad5425087490f17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:749-760 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:762-819"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/util/UIUtils.kt"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c690652fabfa491ac57817cab8ee2cdb28a777d2b65e8bea37afd2aa49a685"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt:267-318 | app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt:347-352"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"76414839da71d882ff31524bc41c6bef1904cc5a709a2016e06120c06c5c2f53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/iab/DeviceNotRegisteredNotifier.kt:27-76 | app/src/fdroid/java/com/celzero/bravedns/iab/DeviceNotRegisteredNotifier.kt:141-76"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/iab/DeviceNotRegisteredNotifier.kt"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"be30c6348e7fc9856e5daa6cb04ca0f908e44812a48a24081be1738a49fb893d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/iab/DeviceAuthErrorNotifier.kt:34-76 | app/src/fdroid/java/com/celzero/bravedns/iab/DeviceAuthErrorNotifier.kt:141-76"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/iab/DeviceAuthErrorNotifier.kt"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"94546e6a274f19c97e9988f93baedcc0c596bdd311c050a5ce0077cc75076286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/sponsor/billing/SponsorBillingManagerImpl.kt:40-79 | app/src/fdroid/java/com/celzero/bravedns/sponsor/billing/SponsorBillingManagerImpl.kt:274-79"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/sponsor/billing/SponsorBillingManagerImpl.kt"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2958afaa57b36caf2558440d9d32560610c2cb14a402023c1baf066dfff7210"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/AppWiseIpLogsActivity.kt:217-246 | app/src/full/java/com/celzero/bravedns/ui/activity/AppWiseIpLogsActivity.kt:247-276"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/AppWiseIpLogsActivity.kt"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e6cbf5b246307fdfb1737b5de36ac14c73ae77294caa25c0549d22dc325e373"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2157-2186 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2286-2302"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt"},"region":{"startLine":2157}}}],"partialFingerprints":{"codehealthFindingId/v1":"56e7412c5bf1be3e57657138651fb9d9eb8ba8cf7767fc40dd28706197c79a7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:234-255 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:327-353"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb7b108c1d6da6289188327ef177ad7403e36bc12f2e0a3c48bda10fded0dad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2548-2567 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3187-3212"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":2548}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc00b6af17a333ac0cc287666018b99be2636269e1fc3dab7da90e7dedb430b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2202-2214 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2331-2356"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt"},"region":{"startLine":2202}}}],"partialFingerprints":{"codehealthFindingId/v1":"74d56213fe2bf0b8a0a22ff22cc3c067c3d7abe52fd0d9fb83d4564191ef5d68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 6): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:1748-1766 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2445-2463 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2512-2530 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2554-2572 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3126-3149 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3194-3217"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f923d2b230bd3e9c75e24b6c34cd36130d74dc467ba90e6bdef9fc3b71e97a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/NotificationHandlerActivity.kt:221-244 | app/src/full/java/com/celzero/bravedns/ui/NotificationHandlerActivity.kt:260-283"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/NotificationHandlerActivity.kt"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"c81cff7fd46f3cbecd32cb00058170f89a48f6ce3ac023c6fa4b8ab62b7f33ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/util/BubbleHelper.kt:303-326 | app/src/main/java/com/celzero/bravedns/util/BubbleHelper.kt:463-476"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/util/BubbleHelper.kt"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea1d79c24e3f36c42cb8b250bd185b76af6d295902e01086774bcd6c811a62f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 6): app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:1389-1400 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:2567-2585 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:2609-2620 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3328-3349 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3358-3377 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3413-3432"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8dabc376b0ee7e605d54aea52ac6a6b551ddcd1b9de750940e370dde533814"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:1265-1278 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3365-3386"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"6997a0dd4e4145f0d84043a07c7e943b96483590290ee10ebf1421fcd404f93a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:1328-1349 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2145-2159"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":1328}}}],"partialFingerprints":{"codehealthFindingId/v1":"becec4cc8eb5026f6caa5f79ee02adcc5b51c9e2ae025a879aa8e50f356ac8f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt:247-267 | app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt:429-449"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6c4d4b3500aab8af12f4c28ee47496cad2367221dbd8f19241009f395fb3590"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt:402-420 | app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt:447-467"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0f7765af491e5cd6a446b9988286631f04b827a4a65a1663b385ad0c24d1a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): app/src/fdroid/java/com/celzero/bravedns/iab/SubscriptionCheckWorker.kt:52-71 | app/src/fdroid/java/com/celzero/bravedns/iab/SubscriptionCheckWorker.kt:517-71"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/fdroid/java/com/celzero/bravedns/iab/SubscriptionCheckWorker.kt"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f86b14d74c70600f69448e0e03536ab01eb1fd847314ddfd99418fb740e2713"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/AppWiseDomainsAdapter.kt:214-233 | app/src/full/java/com/celzero/bravedns/adapter/AppWiseDomainsAdapter.kt:237-256"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/AppWiseDomainsAdapter.kt"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"db77767e1632fa7663147539ccc66469f1c4c7d8b25b03b5e9f120f587b05383"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/DnsLogAdapter.kt:459-478 | app/src/full/java/com/celzero/bravedns/adapter/DnsLogAdapter.kt:482-501"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/DnsLogAdapter.kt"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a254ac77c0ec467e4e7f50443d9637f8c4375d2c0418982c6f6206057bf719"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:645-664 | app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:668-687"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4362e342afdbd4b6dc2bdfb46e81f61664fafd33702efbd19b83be5ff81d269"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:206-220 | app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:229-243 | app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:252-266 | app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:275-293"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b050389948b042acd3ff4df4313b066895bec8630d660e5037f342441433ea7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/ConnectionTrackerFragment.kt:224-241 | app/src/full/java/com/celzero/bravedns/ui/fragment/ConnectionTrackerFragment.kt:280-298"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/ConnectionTrackerFragment.kt"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7c25f278e3969257b1e1b80c7f7a8fc6774b6e75188ea331510f0c00f5e89cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:984-1002 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1019-1033"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7ff3c637534c16b02754a9eef90407fb161a55b86a30f3160fa0f743f558749"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:157-171 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:233-250 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:283-297 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:326-340"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ee084c9ddbb39de4f8d13b1960983a54ea91c600391280d56fe972a96ab871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt:754-771 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt:785-802"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"362c7d219b7e89875ea5341d704b84d9d4b48aec1b5d8435c009b1dc48b4afad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:312-329 | app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt:378-395"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/viewmodel/AppInfoViewModel.kt"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b9df5996cb604be534355030d4d9695486eb9b0fbf9bd7d8f69d07d57750e48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2351-2368 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:2597-2610"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":2351}}}],"partialFingerprints":{"codehealthFindingId/v1":"5299c69975ab1a5313b093b241a9b4a0ad7459d90f457f4d9304686466df65b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:1510-1527 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:1568-1582"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt"},"region":{"startLine":1510}}}],"partialFingerprints":{"codehealthFindingId/v1":"1028e68287de5d09a2ccaa0399a60738d883b49a074a6184d193986fc02d0b67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/CustomDomainAdapter.kt:451-467 | app/src/full/java/com/celzero/bravedns/adapter/CustomDomainAdapter.kt:562-578"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/CustomDomainAdapter.kt"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"fea7f209c9c3908f4758f675659ce2674965298dc9dc49c220617b1f34d553ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt:340-356 | app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt:487-503"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/CustomIpAdapter.kt"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"081030df7fad6eaebf29723d7ea29c2e643c305bbba188e2ab56fefca52ec892"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt:693-709 | app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt:713-729"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf56331c427b96099352f5564a4f31f97d045502a6c8771fe302adf43f83bffc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt:1330-1341 | app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt:1350-1366"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt"},"region":{"startLine":1330}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd439f14d5a5bf0210fc9899d543227751d4f951b021da4e0673e75f3ff873ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 16): app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:404-419 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:420-435 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:436-451 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:452-467 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:468-483 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:484-499 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:500-515 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:516-531 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:532-547 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:548-563 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:564-579 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:580-595 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:596-611 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:612-627 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:628-643 | app/src/full/java/com/celzero/bravedns/util/UIUtils.kt:644-659"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/util/UIUtils.kt"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"7119caa1d216484c71732dd18863102cdd1e0ae22e179bab6506b367c54f37e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): app/src/full/java/com/celzero/bravedns/ui/fragment/SummaryStatisticsFragment.kt:413-427 | app/src/full/java/com/celzero/bravedns/ui/fragment/SummaryStatisticsFragment.kt:460-475 | app/src/full/java/com/celzero/bravedns/ui/fragment/SummaryStatisticsFragment.kt:509-523"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/SummaryStatisticsFragment.kt"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"081cc380b52ab2fac959ce78eae03971517aed788d02e839fb0cb09d9b540bab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt:733-748 | app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt:754-769"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/AppInfoActivity.kt"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb001104c40b8aa91abb24116fd3db38c3d003a58506fa83b8f044e080b8e7b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/HomeScreenFragment.kt:1676-1691 | app/src/full/java/com/celzero/bravedns/ui/fragment/HomeScreenFragment.kt:1730-1745"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/HomeScreenFragment.kt"},"region":{"startLine":1676}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d200a657407051af8d8839260e69d41ca477549908e00e982108ad0422f5ce1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:2614-2629 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:2657-2672"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt"},"region":{"startLine":2614}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a3f84a42990b446b27816d39472eba09e0b464abd9f4b41777697c611bff133"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1060-1071 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1107-1122"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8421b0084b8483e39111f270a8528aa6b80f33c9f9f505b925302721d7abf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:196-210 | app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:212-226 | app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:228-242"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b0b7346a47d31e7df30c6344ae7cb646d2381aaf7006d9ea8ebc8daefcade9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/PingTestActivity.kt:165-179 | app/src/full/java/com/celzero/bravedns/ui/activity/PingTestActivity.kt:183-197"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/PingTestActivity.kt"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"3893b275e4765efd1f337d8a93811be3adb15c848b8385eef32a4f1c5172ee63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:838-852 | app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:1054-1067"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"14b5b408df92a20258ee9c488a1ad527e06e12ea86e66d01eea6b69dbcb12df4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:171-185 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:193-207"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"d144d91844c99b6a0fd6b57eaa5fa3ae722b07d21f679ab0813672828ed60773"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:217-231 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:239-253"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"d144d91844c99b6a0fd6b57eaa5fa3ae722b07d21f679ab0813672828ed60773"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:263-277 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt:285-299"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/OrbotBottomSheet.kt"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"d144d91844c99b6a0fd6b57eaa5fa3ae722b07d21f679ab0813672828ed60773"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3086-3100 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3112-3126"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":3086}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba34ff56f9a872dc94f7c3a15589491c119b14126082a17bb99496d4148f78c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt:141-155 | app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt:163-175"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16fd5d73cd70d4089805ab164c85b1d9a675c5359343921eec5bb320d6c3625"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:285-298 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:307-316 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:325-334 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:344-354"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc564aad0477db8184dc928366ed54bbdab2c1ff28e0d4c8ab1128f21c101c39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt:371-384 | app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt:416-429"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/dialog/CustomLanIpDialog.kt"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74208360f3396629150d80d25ec11dbc42cf1d98153a0d515efd8daa1424263"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:366-379 | app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:443-456"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"40bc2a06b256ff69a496c19ca4dbffc48ebbf35eefaec00a747d5be583c05871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:417-430 | app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:469-482"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"40bc2a06b256ff69a496c19ca4dbffc48ebbf35eefaec00a747d5be583c05871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/NetworkLifecycleObserver.kt:104-117 | app/src/main/java/com/celzero/bravedns/service/NetworkLifecycleObserver.kt:122-135"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/NetworkLifecycleObserver.kt"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"2074a5c51572fff16b9968d4ca08cfbd1aaa3a4435a86af5a3c379a44f9f3ae8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): app/src/main/java/com/celzero/bravedns/data/AppConfig.kt:1244-1255 | app/src/main/java/com/celzero/bravedns/data/AppConfig.kt:1256-1268 | app/src/main/java/com/celzero/bravedns/data/AppConfig.kt:1269-1279"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/data/AppConfig.kt"},"region":{"startLine":1244}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc1baed0f62a7319d19c6b4ff7cfc2be9cc3a682c8737be071033e2ad407865"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt:74-86 | app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt:240-60"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"42df0d808eae284ee4cf289d74026ee6cabebd580718d71d8fc3dc3469ae2e38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt:908-920 | app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt:983-995"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"d694386e75a72821a3e37587b2f5099c2a6a628116b422bf637f64a8241d9f5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt:603-615 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt:632-644"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b7fa0861b17049b41cbdd73559db85871a1a2a145f3bab7b7546a1f4c1febb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/RethinkBlocklistFragment.kt:893-905 | app/src/full/java/com/celzero/bravedns/ui/fragment/RethinkBlocklistFragment.kt:921-933"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/RethinkBlocklistFragment.kt"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b680fa8aae85a42cc72e0f222294a48e7e3bdf2ec0b82c2492f2e54ca1596f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt:268-278 | app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt:287-299"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/tunnel/TunDnsManager.kt"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f274688b9febf39509d891db32b772bd5350daa71a917c8acafeb4a5cfcf289"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:1132-1143 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:1245-1253 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:1505-1513"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt"},"region":{"startLine":1132}}}],"partialFingerprints":{"codehealthFindingId/v1":"5651fe0b266edf849afac7ca0a4bcc70739c916553837629138c4bb08cb01b2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt:179-190 | app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt:219-230"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/GenericHopAdapter.kt"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d0495533cca88ed120115c39cbfac190e0dba02d9f3afd593eaeaf6759de36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:243-254 | app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt:255-266"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/adapter/SummaryStatisticsAdapter.kt"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"0337b0c82d48ce14bce9f090be513b64b85ed134969422646f825c0276f9b1dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/data/AppConfig.kt:1181-1192 | app/src/main/java/com/celzero/bravedns/data/AppConfig.kt:1193-1204"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/data/AppConfig.kt"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d0e77263ce1a72830c6728f84f74d99fa31874294e33d34879fb4691ad246b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/iab/SecureIdentityStore.kt:120-130 | app/src/main/java/com/celzero/bravedns/iab/SecureIdentityStore.kt:261-272"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/iab/SecureIdentityStore.kt"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"600eb17f6596f7df203c9f020effdf19970e0b54579de49b23d2d0781455a762"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3174-3185 | app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt:3244-3255"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/RpnProxyManager.kt"},"region":{"startLine":3174}}}],"partialFingerprints":{"codehealthFindingId/v1":"18bd0ac06c1855fcdaa24e88be24ced2403ae44c4c4cf32cd54dab42e38eb738"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:5614-5625 | app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:5645-5655"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt"},"region":{"startLine":5614}}}],"partialFingerprints":{"codehealthFindingId/v1":"04d3ae7421b739f6a8c274b324046e0feef1fa5bdb3941bf4b66a346a8e91113"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:978-989 | app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt:1023-1030"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/ConnectionMonitor.kt"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e3290f0038b7ed9d588ca40b31542271bb046590d86eae409a20849290ae76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/DomainRulesManager.kt:202-213 | app/src/main/java/com/celzero/bravedns/service/DomainRulesManager.kt:216-227"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/DomainRulesManager.kt"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ab9d45506be44053dc7dd6514e308a06b8c034b5e01c86ba2e85cb905a5a5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:431-442 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:508-519"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ed0aa7033abd6cb32ff5b80b874de3eb0ccb6a72f58300070f36d213199ba7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:473-484 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:557-568"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ed0aa7033abd6cb32ff5b80b874de3eb0ccb6a72f58300070f36d213199ba7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:789-800 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:810-821"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ed0aa7033abd6cb32ff5b80b874de3eb0ccb6a72f58300070f36d213199ba7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 62): app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:55-65 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:66-76 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:77-87 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:88-98 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:99-109 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:110-120 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:121-131 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:132-142 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:143-153 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:154-164 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:165-175 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:176-186 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:187-197 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:198-208 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:209-219 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:220-230 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:231-241 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:242-252 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:253-263 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:264-274 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:275-285 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:286-296 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:297-307 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:308-318 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:319-329 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:330-340 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:341-351 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:352-362 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:363-373 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:374-384 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:385-395 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:396-406 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:407-417 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:418-428 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:429-439 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:440-450 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:451-461 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:462-472 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:473-483 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:484-494 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:495-505 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:506-516 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:517-527 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:528-538 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:539-549 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:550-560 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:561-571 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:572-582 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:583-593 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:594-604 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:605-615 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:616-626 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:627-637 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:638-648 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:649-659 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:660-670 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:671-681 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:682-692 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:693-703 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:704-714 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:715-725 | app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt:726-736"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/util/KnownPorts.kt"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8bb291ebeb8d2548390f8fd55d651ea86c604b28c48d3afab5024e9a03e2bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): app/src/main/java/com/celzero/bravedns/util/MemoryUtils.kt:162-172 | app/src/main/java/com/celzero/bravedns/util/MemoryUtils.kt:173-183 | app/src/main/java/com/celzero/bravedns/util/MemoryUtils.kt:184-194 | app/src/main/java/com/celzero/bravedns/util/MemoryUtils.kt:195-205"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/util/MemoryUtils.kt"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"d706751595a1cf291aeea0224a473a1f617161245eaa26ce49921fe3798f29e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): app/src/full/java/com/celzero/bravedns/customdownloader/LocalBlocklistCoordinator.kt:522-532 | app/src/full/java/com/celzero/bravedns/customdownloader/LocalBlocklistCoordinator.kt:538-548 | app/src/full/java/com/celzero/bravedns/customdownloader/LocalBlocklistCoordinator.kt:554-564"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/customdownloader/LocalBlocklistCoordinator.kt"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9f66cacb7c98bef9702e832f8310c3c548546463fabe45975c3080b2e2aecf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:708-718 | app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:794-804 | app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:920-930"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"6988fae6cfc5df7726387b2da3aaae6901562b14db8b370a7f3dfadfacd9903d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt:53-63 | app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt:79-89"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/scheduler/WorkScheduler.kt"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"7025fb6cc7094fbc7cb3871df521ac6ebeed087098868daaaf700fd5dca92d4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/BubbleActivity.kt:299-309 | app/src/full/java/com/celzero/bravedns/ui/activity/BubbleActivity.kt:321-331"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/BubbleActivity.kt"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f1936062dcf8120800dfc03d00d68565cbc75527fbd999dc938070f3e74feb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/TunnelSettingsActivity.kt:780-790 | app/src/full/java/com/celzero/bravedns/ui/activity/TunnelSettingsActivity.kt:836-845"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/TunnelSettingsActivity.kt"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f3cb0eb005cb45c6135318b8e1a80a8aa6c982e0e9a0aeea4c4f36a91e666f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ConnTrackerBottomSheet.kt:469-479 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ConnTrackerBottomSheet.kt:533-543"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/ConnTrackerBottomSheet.kt"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"f862ccf72710ece34998f081a2fa4d50c7e51e7e30a18f312d7ef85f18d5a360"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt:290-300 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt:366-376"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/DnsBlocklistBottomSheet.kt"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a222d1424d4a36d71d0883098cb6a6192a8ea25c0d7eaf48d73fb05d2593a74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt:189-199 | app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt:203-213"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/bottomsheet/LocalBlocklistsBottomSheet.kt"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"033baa511fd6717fa74af978db579a6e75b9940067fc2e98eac8db872e55916f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:720-730 | app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:1086-1095"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"72348e37299b1408ed377088dd293e71828f55be91d6a36de42d826935633f20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/ServerSelectionFragment.kt:1654-1663 | app/src/full/java/com/celzero/bravedns/ui/fragment/ServerSelectionFragment.kt:1744-1754"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/ServerSelectionFragment.kt"},"region":{"startLine":1654}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5556cd71c338cc8d60fc6f960bb4c20685858bbafd99309bbdb5a0df11e277e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/viewmodel/ConnectionTrackerViewModel.kt:75-85 | app/src/full/java/com/celzero/bravedns/viewmodel/ConnectionTrackerViewModel.kt:109-118"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/viewmodel/ConnectionTrackerViewModel.kt"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"484c4d5bef16a6721c373e397e865367a7e960c6e98d9163494c152075fddc49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:419-429 | app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:434-444"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"13553311b04d99fd33e5be8e038c06824e1136796ea80ce153de902ef9d4950d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/glide/FavIconDownloader.kt:92-102 | app/src/main/java/com/celzero/bravedns/glide/FavIconDownloader.kt:120-130"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/glide/FavIconDownloader.kt"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"2774a60c0568ec543261d8c9a088510e2fd05aa76a731bc2b7b158c697e0465e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3132-3142 | app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt:3217-3227"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/net/go/GoVpnAdapter.kt"},"region":{"startLine":3132}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4b7bf6174f5c3aac9829e176f4f60c84eecbabd81b73652f2629916cf5fc3d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:1336-1346 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:1478-1487"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt"},"region":{"startLine":1336}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6c9256e47468d07d77252b09c00bbe26018445695c9191537bbcd94f1afe41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:5645-5654 | app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:5672-5682"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt"},"region":{"startLine":5645}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a393fce11ee5c24a67660965a934ac1be4233651fd587342b8b152f631d002"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:6513-6523 | app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:6524-6534"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt"},"region":{"startLine":6513}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a393fce11ee5c24a67660965a934ac1be4233651fd587342b8b152f631d002"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:341-351 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:367-377"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"b288468c99726b1cb45b3351a565bb193f9acbe034c42f4020610323b9057bb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:720-729 | app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:806-815 | app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt:881-888"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/database/RefreshDatabase.kt"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd0c3e815cf36978bbceef2f0809d992e67602d9ed98a4c4316f7e6a81ec1498"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt:200-209 | app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt:211-220"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/service/WireguardManager.kt"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"9891f1a654eb97734f47b791d15da0f60b3bb1a4a066ee612a8ed8be906ede89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:801-810 | app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:1002-1011"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed59790f2940a10c1d934cda1c13edc25c9ff8fe8d894426ac6c55b0ed240d05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:735-744 | app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:895-902"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ccfdb3729cecf1cc84675d5bb836356d05e78fbcfca8dcf19bd0af861b58197"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:804-813 | app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt:1168-1177"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/AboutFragment.kt"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ccfdb3729cecf1cc84675d5bb836356d05e78fbcfca8dcf19bd0af861b58197"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:672-681 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:682-691"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1e421924f8500985287a61e9cefee4b7e8b76d8d690b77f469a52f0f0c3cde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/service/TcpProxyHelper.kt:156-164 | app/src/full/java/com/celzero/bravedns/service/TcpProxyHelper.kt:199-207"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/service/TcpProxyHelper.kt"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"0955cd068caedbb6e01149c6474835b98285d92c024490b5bdeaaa7400c9f0d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/fragment/DnsSettingsFragment.kt:748-756 | app/src/full/java/com/celzero/bravedns/ui/fragment/DnsSettingsFragment.kt:775-782"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/fragment/DnsSettingsFragment.kt"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"657f4dd98b1247651037153bdaa418fcee2383790802fb09ad5ae5b6cf39a10b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2119-2127 | app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt:2187-2195"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/rpnproxy/SubscriptionStateMachineV2.kt"},"region":{"startLine":2119}}}],"partialFingerprints":{"codehealthFindingId/v1":"8855f97868d1b0e367e2b4dea1628f66848a97d4b1c9bf6fb0e63c15d79b8e8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:484-492 | app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt:499-507"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/IpRulesManager.kt"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5da9654ebb2c0e5e32a619672d07ceef8307dfd236102b86274c8a50b3c616"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/RethinkBlocklistManager.kt:143-151 | app/src/main/java/com/celzero/bravedns/service/RethinkBlocklistManager.kt:222-230"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/RethinkBlocklistManager.kt"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a42cef25c5dcaa97ccf6ccc937f72a8b438a1b49c8b1f864a2c40f3e2ea9a83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1168-1176 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1183-1191"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"5929315a5b4b0415447b07cc1d7e8216e67b179f8b47bb1576fe83b7db40153d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:828-835 | app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt:1045-1052"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/ProxySettingsActivity.kt"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"163bda4341561ff869c292256f4ae3a25bb47f167efd579c554e41f541941ec6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt:1320-1327 | app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt:1339-1346"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/WgConfigDetailActivity.kt"},"region":{"startLine":1320}}}],"partialFingerprints":{"codehealthFindingId/v1":"0426d492e719edc7cd10664cd1ee03d6c0415299e6914df1baa263370004d925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/full/java/com/celzero/bravedns/ui/activity/WgMainActivity.kt:343-350 | app/src/full/java/com/celzero/bravedns/ui/activity/WgMainActivity.kt:359-366"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/full/java/com/celzero/bravedns/ui/activity/WgMainActivity.kt"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbcbdbdde8cad24bda653ae36470f050dca5851a0c166b526b41b4140718432f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:4473-4480 | app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:4515-4522"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt"},"region":{"startLine":4473}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cfbd9809627d1f7184d7e2911d210868350857d8fa575b98826c92f36ee7635"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/play/java/com/celzero/bravedns/iab/RpnPurchaseAckServerResponse.kt:128-135 | app/src/play/java/com/celzero/bravedns/iab/RpnPurchaseAckServerResponse.kt:214-221"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/play/java/com/celzero/bravedns/iab/RpnPurchaseAckServerResponse.kt"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"81969be9d6cea63ec0367a207de22898fc4cc27bbf1dd93cfdf191e0720967d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1073-1080 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:1089-1096"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2aaf211acffebb03d00634b10a215fb03f9dd6bf82730da1c5fc617cf76408"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/wireguard/Peer.kt:160-166 | app/src/main/java/com/celzero/bravedns/wireguard/Peer.kt:195-201"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/wireguard/Peer.kt"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f53cde998dd9ccdbb9437b845dfa263173e42ef80fe4b08f155ffaf6b404834"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:686-692 | app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt:697-703"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/testPlay/java/com/celzero/bravedns/iab/InAppBillingHandlerTest.kt"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"4556ce856c0a5730ad0d24f980ae540e87c38d8b6ba66e840ee9ab40b59d1b7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:4287-4292 | app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt:4302-4307"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/service/BraveVPNService.kt"},"region":{"startLine":4287}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab3d7ad5ff12845e908b59528c16ddd6ca7868fb0ab5d823a1ce19db539d7359"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt:258-261 | app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt:336-341"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"app/src/main/java/com/celzero/bravedns/wireguard/WgInterface.kt"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8bdb279976bddb3c69e2fd929b83a0f160e03aef0fb1e842bfffe8ac05cbe35"}},{"ruleId":"D8","level":"warning","message":{"text":"Coverage not measured \u2014 test suite did not build: Coverage NOT MEASURED: the repo\u0027s own test suite did not build (a C#/MSBuild compiler error in the test code), so no coverage could be collected. It is excluded from the score rather than counted as a near-zero defect. Fix the test build, or commit the Cobertura/OpenCover/lcov report your CI already produces, and real coverage will be measured."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"8beb176c604706486df63d2215f767f50520c8d949b1d464345de14ded442c69"}},{"ruleId":"D9","level":"note","message":{"text":"No tests found: No test projects found in the repository."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9bf64cbb5a4ae13d6bcd01fa3bc8d2879d860c73bc67f176ee3c2cecb8adce3"}},{"ruleId":"D20","level":"warning","message":{"text":"The body lists only new features and rename items with no context/problem statement or consequences; it reads like a feature list rather than an ADR: Rewrite the body to describe what problem each change addresses (e.g. \u0027Fixes a crash when Rethink is installed in a Work Profile\u0027) plus any trade-offs of new features and rename rationale"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"fastlane/metadata/android/en-US/changelogs/24.txt"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3c7d536342212253fabe75e3d7669c6fae64e2cc1bae54e01a3198f5cc1109"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c1a20d87e3d79c2955a759b4e5465b00645d8855b93a80ef37471367c3a5f43c"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bc07d9e312a4689266f8e63074a97aac6e57da6459aaf543cc5ac9fb15fb21a3"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff3fefb41c42e7c28c33cb99d8e2abef55de375a3d88243123e26f0bf4ea95e7"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff3fefb41c42e7c28c33cb99d8e2abef55de375a3d88243123e26f0bf4ea95e7"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff3fefb41c42e7c28c33cb99d8e2abef55de375a3d88243123e26f0bf4ea95e7"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff3fefb41c42e7c28c33cb99d8e2abef55de375a3d88243123e26f0bf4ea95e7"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ef92dadf6c70cb1c54fe2406c80756eb38b92ee129e9d228e9d0ff09c703a8e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9ef92dadf6c70cb1c54fe2406c80756eb38b92ee129e9d228e9d0ff09c703a8e"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"556be188fa5fb845debaba1f85305ceb2a2350dbce12ccd3c92acdca2ff7b0ec"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"49ff30bdf77314dcb775201165f4af3b6e1551e17925424980a67ad1acdd9b80"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"49ff30bdf77314dcb775201165f4af3b6e1551e17925424980a67ad1acdd9b80"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"49ff30bdf77314dcb775201165f4af3b6e1551e17925424980a67ad1acdd9b80"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f5af43878084eccdb48d1ee06fe6b73a01a895e01daf46dd717bbb61cc3ab095"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f5af43878084eccdb48d1ee06fe6b73a01a895e01daf46dd717bbb61cc3ab095"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f5af43878084eccdb48d1ee06fe6b73a01a895e01daf46dd717bbb61cc3ab095"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c227ef0f04c41891eccde9ed38c6195b6dd8d2397d6658b60399843d13f66fd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c227ef0f04c41891eccde9ed38c6195b6dd8d2397d6658b60399843d13f66fd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c227ef0f04c41891eccde9ed38c6195b6dd8d2397d6658b60399843d13f66fd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2c227ef0f04c41891eccde9ed38c6195b6dd8d2397d6658b60399843d13f66fd"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c25a2cabf276b5133255ea4cee2b74e5bd1c341d77fbbf7fbbc1a2cfc4d45ede"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c25a2cabf276b5133255ea4cee2b74e5bd1c341d77fbbf7fbbc1a2cfc4d45ede"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c25a2cabf276b5133255ea4cee2b74e5bd1c341d77fbbf7fbbc1a2cfc4d45ede"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c25a2cabf276b5133255ea4cee2b74e5bd1c341d77fbbf7fbbc1a2cfc4d45ede"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3a7248383053b2149da8b8ebf8f9606d1970f2963d1b74a2d01ee564e78027d0"},"taxa":[{"id":"CWE-926","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3a7248383053b2149da8b8ebf8f9606d1970f2963d1b74a2d01ee564e78027d0"},"taxa":[{"id":"CWE-926","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3a7248383053b2149da8b8ebf8f9606d1970f2963d1b74a2d01ee564e78027d0"},"taxa":[{"id":"CWE-926","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-926","guid":"0d9b5579-5549-555a-8a97-f9cc14f3ad4a","name":"CWE-926","shortDescription":{"text":"CWE-926"},"helpUri":"https://cwe.mitre.org/data/definitions/926.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":31,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}