[{"data":1,"prerenderedAt":339},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-M-Abozaid\u002Fesp32-c3-adblock":202},[4,50,92,109,145,171,187,192,197],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35,40,45],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration","i-lucide-settings",{"title":26,"path":27,"stem":28,"icon":29},"Supported Formats","\u002Fgetting-started\u002Fsupported-formats","1.getting-started\u002F5.supported-formats","i-lucide-file-code",{"title":31,"path":32,"stem":33,"icon":34},"Agent Skills","\u002Fgetting-started\u002Fagent-skill","1.getting-started\u002F6.agent-skill","i-lucide-cpu",{"title":36,"path":37,"stem":38,"icon":39},"Changelog","\u002Fgetting-started\u002Fchangelog","1.getting-started\u002F7.changelog","i-lucide-scroll-text",{"title":41,"path":42,"stem":43,"icon":44},"Migrating from v4 to v5","\u002Fgetting-started\u002Fmigration","1.getting-started\u002F8.migration","i-lucide-arrow-right-left",{"title":46,"path":47,"stem":48,"icon":49},"jscpd v4 (TypeScript)","\u002Fgetting-started\u002Fv4","1.getting-started\u002F9.v4","i-simple-icons-typescript",{"title":51,"path":52,"stem":53,"children":54,"icon":6},"Guides","\u002Fguides","2.guides\u002F1.index",[55,57,62,67,72,77,82,87],{"title":51,"path":52,"stem":53,"icon":56},"i-lucide-book-open",{"title":58,"path":59,"stem":60,"icon":61},"Types of Code Clones","\u002Fguides\u002Fclone-types","2.guides\u002F2.clone-types","i-lucide-copy",{"title":63,"path":64,"stem":65,"icon":66},"How Detection Works","\u002Fguides\u002Fhow-detection-works","2.guides\u002F3.how-detection-works","i-lucide-scan-search",{"title":68,"path":69,"stem":70,"icon":71},"Duplication Trend over Git History","\u002Fguides\u002Fhistory","2.guides\u002F4.history","i-lucide-chart-no-axes-combined",{"title":73,"path":74,"stem":75,"icon":76},"Project Dashboard","\u002Fguides\u002Fdashboard","2.guides\u002F5.dashboard","i-lucide-layout-dashboard",{"title":78,"path":79,"stem":80,"icon":81},"Project Health Score","\u002Fguides\u002Fhealth","2.guides\u002F6.health","i-lucide-heart-pulse",{"title":83,"path":84,"stem":85,"icon":86},"Semantic Clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F7.semantic-clones","i-lucide-brain-circuit",{"title":88,"path":89,"stem":90,"icon":91},"Comparing Two Codebases","\u002Fguides\u002Fcompare","2.guides\u002F8.compare","i-lucide-git-compare-arrows",{"title":93,"path":94,"stem":95,"children":96,"icon":6},"CI & Hooks","\u002Fci-and-hooks","3.ci-and-hooks\u002F1.index",[97,99,104],{"title":93,"path":94,"stem":95,"icon":98},"i-lucide-git-pull-request",{"title":100,"path":101,"stem":102,"icon":103},"Use jscpd in CI","\u002Fci-and-hooks\u002Fci","3.ci-and-hooks\u002F2.ci","i-lucide-github",{"title":105,"path":106,"stem":107,"icon":108},"Use jscpd in Pre-Commit Hook","\u002Fci-and-hooks\u002Fpre-commit","3.ci-and-hooks\u002F3.pre-commit","i-lucide-git-commit",{"title":110,"path":111,"stem":112,"children":113,"icon":115},"Reporters","\u002Freporters","4.reporters\u002F1.index",[114,116,120,125,130,135,140],{"title":110,"path":111,"stem":112,"icon":115},"i-lucide-file-chart-column",{"title":117,"path":118,"stem":119,"icon":29},"HTML Reporter","\u002Freporters\u002Fhtml","4.reporters\u002F2.html",{"title":121,"path":122,"stem":123,"icon":124},"JSON Reporter","\u002Freporters\u002Fjson","4.reporters\u002F3.json","i-lucide-braces",{"title":126,"path":127,"stem":128,"icon":129},"Badge Reporter","\u002Freporters\u002Fbadge","4.reporters\u002F4.badge","i-lucide-award",{"title":131,"path":132,"stem":133,"icon":134},"SARIF Reporter","\u002Freporters\u002Fsarif","4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":136,"path":137,"stem":138,"icon":139},"CodeClimate \u002F GitLab Reporter","\u002Freporters\u002Fcodeclimate","4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":141,"path":142,"stem":143,"icon":144},"OpenMetrics Reporter","\u002Freporters\u002Fopenmetrics","4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":146,"path":147,"stem":148,"children":149,"icon":6},"Benchmarks","\u002Fbenchmarks","5.benchmarks\u002F1.index",[150,152,157,162,167],{"title":146,"path":147,"stem":148,"icon":151},"i-lucide-gauge",{"title":153,"path":154,"stem":155,"icon":156},"Detection Speed","\u002Fbenchmarks\u002Fdetection-speed","5.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":158,"path":159,"stem":160,"icon":161},"Multi-Format Detection","\u002Fbenchmarks\u002Fcross-format","5.benchmarks\u002F3.cross-format","i-lucide-layers",{"title":163,"path":164,"stem":165,"icon":166},"AI Token Efficiency","\u002Fbenchmarks\u002Fai-token-efficiency","5.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":168,"path":169,"stem":170,"icon":86},"Embedding Models","\u002Fbenchmarks\u002Fembedding-models","5.benchmarks\u002F5.embedding-models",{"title":172,"path":173,"stem":174,"children":175,"icon":177},"API","\u002Fapi","6.api\u002F1.index",[176,178,183],{"title":172,"path":173,"stem":174,"icon":177},"i-lucide-code",{"title":179,"path":180,"stem":181,"icon":182},"Rust Crates (v5)","\u002Fapi\u002Fcore","6.api\u002F2.core","i-lucide-box",{"title":184,"path":185,"stem":186,"icon":182},"MCP Server","\u002Fapi\u002Fmcp-server","6.api\u002F4.mcp-server",{"title":188,"path":189,"stem":190,"icon":191},"Trending","\u002Ftrending","7.trending","i-lucide-trending-up",{"title":193,"path":194,"stem":195,"icon":196},"Research","\u002Fresearch","8.research","i-lucide-graduation-cap",{"title":198,"path":199,"stem":200,"icon":201},"Articles","\u002Farticles","9.articles","i-lucide-newspaper",{"name":203,"url":204,"appearances":205,"latest":217},"M-Abozaid\u002Fesp32-c3-adblock","https:\u002F\u002Fgithub.com\u002FM-Abozaid\u002Fesp32-c3-adblock",[206],{"date":207,"rank":208,"stars":209,"starsToday":210,"headSha":211,"sources":212,"lines":213,"clones":214,"duplicatedLines":214,"percentage":214,"healthScore":215,"healthGrade":216},"2026-10-06",8,1464,196,"19473839c27d10f666406a3ae62df97b7b155273",24,2297,0,76.1,"B",{"date":207,"generatedAt":218,"name":203,"url":204,"description":219,"language":220,"stars":209,"starsToday":210,"defaultBranch":221,"headSha":211,"durationMs":222,"total":223,"formats":225,"topClones":259,"health":260,"complexity":289,"deadCode":336},"2026-10-06T05:31:17.340Z","Pi-hole-class DNS ad-blocker on a $2 ESP32-C3 (no PSRAM): 537k domains as 40-bit FNV-1a hashes in flash, binary-searched. UDP DNS sinkhole + web dashboard. https:\u002F\u002Fyoutube.com\u002Fshorts\u002FRaxszOUMi8E?feature=share","C++","main",701,{"sources":212,"lines":213,"tokens":224,"clones":214,"duplicatedLines":214,"duplicatedTokens":214,"percentage":214,"percentageTokens":214},19063,[226,230,234,238,241,244,247,250,253,256],{"format":227,"sources":228,"lines":229,"clones":214,"duplicatedLines":214,"percentage":214},"bash",11,731,{"format":231,"sources":232,"lines":233,"clones":214,"duplicatedLines":214,"percentage":214},"cpp",1,624,{"format":235,"sources":236,"lines":237,"clones":214,"duplicatedLines":214,"percentage":214},"markdown",2,364,{"format":239,"sources":232,"lines":240,"clones":214,"duplicatedLines":214,"percentage":214},"perl",168,{"format":242,"sources":232,"lines":243,"clones":214,"duplicatedLines":214,"percentage":214},"python",118,{"format":245,"sources":232,"lines":246,"clones":214,"duplicatedLines":214,"percentage":214},"c-header",90,{"format":248,"sources":236,"lines":249,"clones":214,"duplicatedLines":214,"percentage":214},"yaml",85,{"format":251,"sources":232,"lines":252,"clones":214,"duplicatedLines":214,"percentage":214},"markup",69,{"format":254,"sources":232,"lines":255,"clones":214,"duplicatedLines":214,"percentage":214},"ini",18,{"format":257,"sources":232,"lines":258,"clones":214,"duplicatedLines":214,"percentage":214},"json",17,[],{"score":215,"grade":216,"size":261,"dimensions":265},{"lines":262,"files":263,"class":264},1694,13,"S",[266,276,283],{"id":267,"source":268,"value":214,"adjusted":269,"lines":214,"halfLife":270,"formats":271,"excluded":272,"weight":232,"score":275},"duplication","jscpd",1.9,8.5,[227,231,239,242,245],[251,273,274],"text","data",85.7,{"id":277,"source":268,"value":214,"adjusted":278,"lines":214,"halfLife":279,"coverage":280,"weight":281,"score":282},"dead-code",2.9,7.5,7,0.07,76.3,{"id":284,"source":268,"value":285,"adjusted":286,"lines":233,"halfLife":287,"weight":232,"score":288},"complexity",36.8,28.2,50,67.6,{"total":290,"mean":291,"files":292},424,32.6,[293,297,301,305,309,314,318,322,327,332],{"path":294,"complexity":295,"lines":233,"bytes":296},"src\u002Fmain.cpp",267,31121,{"path":298,"complexity":299,"lines":246,"bytes":300},"src\u002Fpage.h",38,8380,{"path":302,"complexity":303,"lines":243,"bytes":304},"tools\u002Fbuild_blocklist.py",35,5512,{"path":306,"complexity":307,"lines":240,"bytes":308},".git\u002Fhooks\u002Ffsmonitor-watchman.sample",19,4611,{"path":310,"complexity":311,"lines":312,"bytes":313},".git\u002Fhooks\u002Fpre-rebase.sample",14,169,4898,{"path":315,"complexity":311,"lines":316,"bytes":317},".git\u002Fhooks\u002Fsendemail-validate.sample",77,2308,{"path":319,"complexity":263,"lines":320,"bytes":321},".git\u002Fhooks\u002Fupdate.sample",128,3650,{"path":323,"complexity":324,"lines":325,"bytes":326},".git\u002Fhooks\u002Fpush-to-checkout.sample",6,78,2783,{"path":328,"complexity":329,"lines":330,"bytes":331},".git\u002Fhooks\u002Fpre-commit.sample",5,49,1649,{"path":333,"complexity":329,"lines":334,"bytes":335},".git\u002Fhooks\u002Fpre-push.sample",53,1374,{"percentage":214,"findings":214,"files":232,"byCategory":337,"largest":338},[],[],1791264758749]