1!function(){"use strict";var root=document.documentElement;root.classList.add("js");var reduced=window.matchMedia("(prefers-reduced-motion: reduce)").matches,READING=(document.querySelector(".wf-hero"),{"page-blog-post":"Sidebar + Article","page-white-paper-detail":"Paper","page-news-article":"Article"});!function(){var readingKey=null;if(Array.prototype.forEach.call(document.body.classList,function(c){READING[c]&&(readingKey=c)}),readingKey){var readSec=document.querySelector('.wf-section[data-section="'+READING[readingKey]+'"]');readSec&&readSec.classList.add("wf-reading")}}();var resolveHero=document.querySelector('[data-hero-pattern="dot_resolve"]');resolveHero&&window.HTMLCanvasElement&&function(){var cv=document.createElement("canvas");cv.className="wf-resolve",cv.setAttribute("aria-hidden","true");var ctx=cv.getContext&&cv.getContext("2d");if(ctx){resolveHero.insertBefore(cv,resolveHero.firstChild),resolveHero.classList.add("has-resolve");var dpr=Math.min(window.devicePixelRatio||1,2),dots=[],W=0,H=0,raf=null;size(),seed(),function(){if(raf&&(cancelAnimationFrame(raf),raf=null),reduced)drawResolve(1);else{var t0=null;raf=requestAnimationFrame(function tick(ts){null===t0&&(t0=ts);var p=Math.min(1,(ts-t0)/1700);drawResolve(p),raf=p<1?requestAnimationFrame(tick):null})}}(),window.addEventListener("resize",function(){size(),seed(),drawResolve(1)})}function size(){W=resolveHero.clientWidth,H=resolveHero.clientHeight,cv.width=W*dpr,cv.height=H*dpr,ctx.setTransform(dpr,0,0,dpr,0,0)}function seed(){dots.length=0;for(var y=11;y<H;y+=22)for(var x=11;x<W;x+=22){var a=Math.random()*Math.PI*2,r=60+220*Math.random();dots.push({x:x,y:y,sx:x+Math.cos(a)*r,sy:y+Math.sin(a)*r,d:.45*Math.random()})}}function drawResolve(p){ctx.clearRect(0,0,W,H),ctx.fillStyle="rgba(255,248,240,.22)";for(var i=0;i<dots.length;i++){var o=dots[i],t=Math.min(1,Math.max(0,(p-o.d)/.55)),e=1-Math.pow(1-t,3);ctx.beginPath(),ctx.arc(o.sx+(o.x-o.sx)*e,o.sy+(o.y-o.sy)*e,1.1,0,6.2832),ctx.fill()}}}();var sections,glitchHero=document.querySelector('[data-hero-pattern="gridlogo_glitch"]');function parseRgb(s){var m=s.match(/^rgba?\(([^)]+)\)$/);if(m){var q=m[1].split(/[,\s\/]+/).filter(Boolean).map(Number);return q.length>3&&0===q[3]?null:[q[0],q[1],q[2]]}if(m=s.match(/^color\(srgb\s+([^)]+)\)$/)){var c=m[1].split(/[\s\/]+/).filter(Boolean).map(Number);return c.length>3&&0===c[3]?null:[255*c[0],255*c[1],255*c[2]]}return null}function lum(c){return(.2126*c[0]+.7152*c[1]+.0722*c[2])/255}function rgbStr(c){return"rgb("+Math.round(c[0])+","+Math.round(c[1])+","+Math.round(c[2])+")"}glitchHero&&function(){glitchHero.classList.add("wf-hero--charged");var h=glitchHero.querySelector("h1");if(h&&!h.querySelector(".wf-circled")){var words=h.textContent.trim().split(/\s+/);if(!(words.length<3)){var tail=words.slice(-2).join(" ");h.innerHTML=words.slice(0,-2).join(" ")+' <span class="wf-circled" data-text="'+tail+'">'+tail+'<i class="brk" aria-hidden="true"><span></span><span></span><span></span><span></span></i></span>';var span=h.querySelector(".wf-circled");reduced?span.classList.add("gon"):window.setTimeout(function(){span.classList.add("gon")},900)}}}(),document.body.classList.contains("fam-role")&&function(){var band=document.querySelector(".wf-parband--proof");function proofHold(){band.style.setProperty("--proofh",band.offsetHeight+"px")}band&&(Array.prototype.forEach.call(band.querySelectorAll(".wf-parchip--logo img"),function(img){img.src=img.getAttribute("src").replace(/\.svg$/,"-mark.png")}),window.addEventListener("resize",proofHold),window.addEventListener("load",proofHold),proofHold())}(),function(){var toggle=document.querySelector(".nav-toggle"),items=document.querySelectorAll(".nav-links .nav-item");if(toggle&&items.length){var BURGER=toggle.innerHTML,panel=document.createElement("nav");panel.className="mobnav",panel.setAttribute("aria-label","Mobile"),Array.prototype.forEach.call(items,function(g){var top=g.querySelector("a"),sec=document.createElement("div");sec.className="mn-group";var headBtn=document.createElement("button");headBtn.type="button",headBtn.className="mn-head",headBtn.innerHTML="<span>"+top.textContent.trim()+'</span><svg class="car" aria-hidden="true"><use href="#mi-down"/></svg>';var list=document.createElement("div");list.className="mn-list",Array.prototype.forEach.call(g.querySelectorAll(".mega a"),function(a){var b=a.querySelector(".mhead")||a.querySelector("b"),link=document.createElement("a");link.href=a.getAttribute("href")||"#",a.getAttribute("target")&&(link.target=a.getAttribute("target")),link.textContent=(b?b.textContent:a.textContent).trim(),list.appendChild(link)}),headBtn.addEventListener("click",function(){sec.classList.toggle("open")}),sec.appendChild(headBtn),sec.appendChild(list),panel.appendChild(sec)});var ctas=document.createElement("div");ctas.className="mn-ctas",ctas.innerHTML='<a class="btn btn-primary" href="/book-a-demo">Book a demo</a><a class="btn" href="#unrouted">Login</a>',panel.appendChild(ctas),document.body.appendChild(panel),toggle.setAttribute("aria-expanded","fal
1se"),toggle.addEventListener("click",function(){setOpen(!document.documentElement.classList.contains("mobnav-open"))}),panel.addEventListener("click",function(e){e.target.closest("a")&&setOpen(!1)});var wideQ=window.matchMedia("(min-width:900px)"),onWide=function(m){m.matches&&setOpen(!1)};wideQ.addEventListener?wideQ.addEventListener("change",onWide):wideQ.addListener&&wideQ.addListener(onWide)}function setOpen(open){document.documentElement.classList.toggle("mobnav-open",open),toggle.innerHTML=open?'<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.2 2.1L12 9.9l7.8-7.8 2.1 2.1L14.1 12l7.8 7.8-2.1 2.1L12 14.1l-7.8 7.8-2.1-2.1L9.9 12 2.1 4.2z"/></svg>':BURGER,toggle.setAttribute("aria-expanded",open?"true":"false")}}(),(sections=Array.prototype.slice.call(document.querySelectorAll("main section")).filter(function(s){return!s.parentElement.closest("section")})).forEach(function(s,i){var isLogos=s.classList.contains("cv-logos")||s.classList.contains("wf-section")&&s.querySelector(":scope > .wrap > .wf-marquee"),next=sections[i+1];isLogos&&next&&next.classList.contains("ctaband")&&s.classList.add("cv-logos--cta-next")}),function(){var band=document.querySelector(".ctaband .band"),card=band&&band.querySelector(".cta-card");if(card){card.querySelector(".hudc")||["tl","tr","bl","br"].forEach(function(c){var i=document.createElement("i");i.className="hudc hudc-"+c,i.setAttribute("aria-hidden","true"),card.appendChild(i)});var ctaband=band.closest(".ctaband");ctaband.insertBefore(divider("cta-div-t",!1),band),ctaband.appendChild(divider("",!0))}function divider(extraClass,withTag){var d=document.createElement("i");return d.className="cta-div"+(extraClass?" "+extraClass:""),d.setAttribute("aria-hidden","true"),d.innerHTML='<b class="cta-div-rail"></b><b class="cta-div-hot"></b><b class="cta-div-scan"></b>'+(withTag?'<span class="cta-div-tag"><b>//</b> site index</span>':""),d}}(),function(){var hls=document.querySelectorAll(".ctaband .hl:not([data-seqhl])");if(hls.length){var io=new IntersectionObserver(function(entries){entries.forEach(function(e){e.isIntersecting&&(e.target.classList.add("on"),io.unobserve(e.target))})},{threshold:.6});Array.prototype.forEach.call(hls,function(h){io.observe(h)})}}();var ZONES=null;function measureZones(){var mode=root.getAttribute("data-sections");"hard"!==mode&&root.setAttribute("data-sections","hard"),ZONES=[];var cands=document.querySelectorAll(".wf-section,.ctaband .band,footer");Array.prototype.forEach.call(cands,function(sec){var c=parseRgb(getComputedStyle(sec).backgroundColor);c&&ZONES.push({el:sec,color:c,light:lum(c)>.55})}),"hard"!==mode&&root.setAttribute("data-sections",mode)}measureZones();var groundEl=document.getElementById("ground"),GROUND_PAINTED="",GROUND_COLOR=null;function paintGround(){if(groundEl&&ZONES&&"fade"===root.getAttribute("data-sections")){var trigger=.55*window.innerHeight,color=ZONES.length?ZONES[0].color:null;if(ZONES.forEach(function(z){z.el.getBoundingClientRect().top<=trigger&&(color=z.color)}),color){GROUND_COLOR=color;var s=rgbStr(color);s!==GROUND_PAINTED&&(GROUND_PAINTED=s,groundEl.style.backgroundColor=s)}}}function fadeOutgoing(){if(document.body.classList.contains("page-integration-detail")||document.body.classList.contains("page-case-study-detail")||document.body.classList.contains("page-case-studies")||document.body.classList.contains("page-blog")||document.body.classList.contains("page-blog-post")||document.body.classList.contains("page-news-article"))Array.prototype.forEach.call(document.querySelectorAll(".wf-section > .wrap"),function(w){w.style.opacity=""});else{var fade="fade"===root.getAttribute("data-sections")&&!reduced,vh=window.innerHeight;Array.prototype.forEach.call(document.querySelectorAll(".wf-section > .wrap"),function(w){if(fade)if(void 0===w._nofade&&(w._nofade=!!w.querySelector(".wf-cmpwrap,.wf-form,.wf-search")),w._nofade)w.style.opacity="";else{var r=w.parentNode.getBoundingClientRect();if(r.height<vh)w.style.opacity="";else{var t=(r.bottom-.55*vh)/(.3*vh);w.style.opacity=t>=1?"":String(Math.max(0,t))}}else w.style.opacity=""})}}var CHARCOAL_STR=function(){var v=getComputedStyle(document.body).getPropertyValue("--bg-charcoal").trim(),m=v.match(/^#([0-9a-f]{6})$/i);if(m)return rgbStr([parseInt(m[1].slice(0,2),16),parseInt(m[1].slice(2,4),16),parseInt(m[1].slice(4,6),16)]);var c=parseRgb(v);return c?rgbStr(c):"rgb(36,40,42)"}();function paintPattern(){if(groundEl&&document.body.classList.contains("fam-resources")){var max=document.documentElement.scrollHeight-window.innerHeight,t=max>0?Math.min(1,Math.max(0,window.scrollY/max)):0,on=GROUND_COLOR&&rgbStr(GROUND_COLOR)===CHARCOAL_STR?1:0;groundEl.style.setProperty("--pat-o",(function(t){return t<=.5?1-1.6*t:.4-.4*t}(t)*on).toFixed(3))}}function groundEnd(){ZONES&&ZONES.length&&document.body.style.setProperty("--groun
1d-end",rgbStr(ZONES[ZONES.length-1].color))}function groundRefresh(){GROUND_PAINTED="",measureZones(),groundEnd(),paintGround(),paintPattern(),fadeOutgoing(),headTone(),railScroll&&railScroll()}groundEnd(),paintGround(),paintPattern(),fadeOutgoing();var head=document.querySelector(".sitehead");function headTone(){if(head&&ZONES){var light=!1;if("fade"===root.getAttribute("data-sections")&&GROUND_COLOR)light=lum(GROUND_COLOR)>.55;else{var probe=.5*head.offsetHeight;ZONES.forEach(function(z){var r=z.el.getBoundingClientRect();r.top<=probe&&r.bottom>probe&&(light=z.light)})}head.classList.toggle("lighthead",light)}}headTone();var railScroll=null;!function(){if("false"!==root.getAttribute("data-rail")){if(document.getElementById("rail"))return;var secs=Array.prototype.slice.call(document.querySelectorAll(".wf-section[data-section]")),ctaSec=document.querySelector(".ctaband");if(ctaSec&&!ctaSec.id&&(ctaSec.id="cta"),secs.length<2)return;var RAIL_SKIP={"Pre footer":1,"Footer variant":1},RAIL_LABELS={"1 Click and Fixed (demo)":"1-click fixes","Hero + Featured Post":"Hero","Announcements / Release Notes":"Release notes","Frequently Asked Questions":"FAQ","Featured Whitepapers":"Whitepapers","Featured case studies (tall ruled features)":"Case studies","If you are a service provider":"Service providers","How Unified Vulnerability Management Works in DefectDojo":"How UVM works","How Pen testing reports work in DefectDojo":"How reports work","Get a custom quote (wizard)":"Custom quote","Listing, ordered by the stack rank below":"Library"},RAIL_JUNK={and:1,or:1,the:1,a:1,an:1,of:1,to:1,in:1,with:1,if:1,you:1,are:1,for:1,"+":1,"/":1};function shortLabel(s){if(RAIL_LABELS[s])return RAIL_LABELS[s];for(var words=(s=s.replace(/["ââ]/g,"").split(/[,:(]/)[0].trim()).split(/\s+/),out=words[0],wi=1;wi<words.length&&!((out+" "+words[wi]).length>18);wi++)out+=" "+words[wi];for(var parts=out.split(" ");parts.length>1&&RAIL_JUNK[parts[parts.length-1].toLowerCase()];)parts.pop();return(out=parts.join(" ")).length>18?out.slice(0,18):out}var items=secs.filter(function(sec){return!RAIL_SKIP[sec.getAttribute("data-section")]}).map(function(sec,i){return sec.id||(sec.id="sec-"+i),{el:sec,id:sec.id,label:shortLabel(sec.getAttribute("data-section")||"Section")}});ctaSec&&items.push({el:ctaSec,id:ctaSec.id,label:"get to zero"});var rail=document.createElement("nav");rail.className="rail",rail.id="rail",rail.setAttribute("aria-label","Section navigation");var nav=document.createElement("div");nav.className="rail-nav",items.forEach(function(it){var b=document.createElement("button");b.className="rail-item",b.type="button",b.setAttribute("data-go",it.id),b.title=it.label,b.innerHTML='<span class="ri-l">'+it.label.toLowerCase()+'</span><span class="ri-tick"></span>',b.addEventListener("click",function(){it.el.scrollIntoView({behavior:"smooth",block:"start"})}),nav.appendChild(b)}),rail.appendChild(nav);var gauge=document.createElement("div");gauge.className="rail-gauge",gauge.setAttribute("aria-hidden","true"),gauge.innerHTML='<span class="rail-label">Backlog</span><div class="rail-track"><div class="rail-fill" id="railfill"></div><div class="rail-head" id="railhead"></div></div><span class="rail-zero">Zero</span><span class="rail-sec" id="railsec">[ sec/'+items[0].id+" ]</span>",rail.appendChild(gauge),document.body.appendChild(rail);var btns=Array.prototype.slice.call(rail.querySelectorAll(".rail-item")),railsec=document.getElementById("railsec"),railfill=document.getElementById("railfill"),railhead=document.getElementById("railhead"),zeroScroll=1;function railMeasure(){var r=items[items.length-1].el.getBoundingClientRect();zeroScroll=Math.max(1,r.top+window.scrollY+.5*r.height-.75*window.innerHeight)}railScroll=function(){var y=window.scrollY,mid=.45*window.innerHeight,on=0;items.forEach(function(it,i){it.el.getBoundingClientRect().top<=mid&&(on=i)}
1),btns.forEach(function(b,i){b.classList.toggle("on",i===on)}),railsec&&(railsec.textContent="[ sec/"+items[on].id+" ]");var tone=!1;if("fade"===root.getAttribute("data-sections")&&GROUND_COLOR)tone=lum(GROUND_COLOR)>.55;else if(ZONES){var probe=.5*window.innerHeight;ZONES.forEach(function(z){var r=z.el.getBoundingClientRect();r.top<=probe&&r.bottom>probe&&(tone=z.light)})}if(rail.classList.toggle("lightzone",!!tone),railfill&&railhead){var p=Math.min(1,Math.max(0,y/zeroScroll)),rem=100*(1-p);railfill.style.height=rem+"%",railhead.style.top="calc("+rem+"% - 1.5px)",rail.classList.toggle("zero",p>=.999)}},railMeasure(),railScroll(),window.addEventListener("resize",function(){railMeasure(),railScroll()})}}();var scrollFrame=0;if(window.addEventListener("scroll",function(){scrollFrame||(scrollFrame=window.requestAnimationFrame(function(){scrollFrame=0,paintGround(),paintPattern(),fadeOutgoing(),headTone(),railScroll&&railScroll()}))},{passive:!0}),window.addEventListener("resize",function(){groundRefresh()}),window.addEventListener("load",function(){groundRefresh()}),document.fonts&&document.fonts.ready&&document.fonts.ready.then&&document.fonts.ready.then(function(){groundRefresh()}),window.MutationObserver&&document.body){var domTimer=0,touchesBand=function(n){return!(!n||1!==n.nodeType)&&(!(!n.matches||!n.matches(".wf-section,.ctaband,footer"))||!(!n.querySelector||!n.querySelector(".wf-section,.ctaband,footer")))};new MutationObserver(function(records){for(var i=0;i<records.length;i++){var r=records[i];if(Array.prototype.some.call(r.addedNodes,touchesBand)||Array.prototype.some.call(r.removedNodes,touchesBand))return domTimer&&clearTimeout(domTimer),void(domTimer=setTimeout(function(){domTimer=0,groundRefresh()},150))}}).observe(document.body,{childList:!0,subtree:!0})}var fieldHero=document.querySelector('.wf-hero[data-hero-pattern="logo_drift"]');if(fieldHero&&!fieldHero.classList.contains("wf-intsec")){var field=document.createElement("div");if(field.className="wf-herofield",field.setAttribute("aria-hidden","true"),[{n:"snyk",x:8,y:16,s:1,o:.4},{n:"github",x:22,y:13,s:.85,o:.26,m:!0},{n:"aws",x:38,y:17,s:.9,o:.34},{n:"crowdstrike",x:55,y:12,s:.85,o:.26,m:!0},{n:"burp-suite",x:70,y:16,s:1.05,o:.44},{n:"gitlab",x:86,y:13,s:.85,o:.3,m:!0},{n:"owasp-zap",x:90,y:34,s:1,o:.4},{n:"tenable",x:78,y:30,s:.85,o:.24,m:!0},{n:"wiz",x:90,y:74,s:.95,o:.38},{n:"semgrep",x:74,y:84,s:.9,o:.28,m:!0},{n:"sonarqube",x:88,y:82,s:.85,o:.3},{n:"trivy",x:62,y:86,s:.9,o:.26,m:!0},{n:"checkmarx",x:42,y:89,s:1,o:.38},{n:"qualys",x:24,y:86,s:.85,o:.24,m:!0},{n:"veracode",x:9,y:88,s:.9,o:.32},{n:"jfrog",x:9,y:82,s:.85,o:.22,m:!0}].forEach(function(mk){var el=document.createElement("span");el.className="hf"+(mk.m?"":" dt-only"),el.style.setProperty("--x",mk.x+"%"),el.style.setProperty("--y",mk.y+"%"),el.style.setProperty("--fs",mk.s),el.style.setProperty("--o",mk.o);var img=document.createElement("img");img.src="assets/logos/tools/"+mk.n+".svg",img.alt="",el.appendChild(img),field.appendChild(el)}),fieldHero.insertBefore(field,fieldHero.querySelector(".wrap")),!reduced){var hfFrame=0,hfTick=function(){hfFrame=0;var vh=window.innerHeight,r=fieldHero.getBoundingClientRect(),op=Math.max(0,Math.min(1,(r.bottom-.18*vh)/(.35*vh)));if(field.style.opacity=String(op),"color"===root.getAttribute("data-intlogos")){var sg=Math.min(1,Math.max(0,-r.top)/(.5*vh));field.style.filter=sg>0?"grayscale("+sg.toFixed(3)+")":""}else field.style.filter&&(field.style.filter="");if(0!==op)for(var travel=-r.top,kids=field.children,i=0;i<kids.length;i++){var k=.06+i%3*.05;kids[i].style.marginTop=(travel*k).toFixed(1)+"px"}};window.addEventListener("scroll",function(){hfFrame||(hfFrame=window.requestAnimationFrame(hfTick))},{passive:!0}),window.addEventListener("resize",hfTick),new MutationObserver(hfTick).observe(root,{attributes:!0,attributeFilter:["data-intlogos"]}),hfTick()}}if(function(){var sec=document.querySelector(".wf-intsec");if(sec&&!reduced){var field=sec.querySelector(".wf-intfield"),center=sec.querySelector(".wf-intcenter"),frame=0,litTimer=0,lastPainted=null,swapT=0,litAt=0,textTimer=0,textAt=0,heroField=sec.classList.contains("wf-hero"),marks=field?Array.prototype.slice.call(field.querySelectorAll(".wf-fi")).map(function(el){return{el:el,y:parseFloat(el.style.getPropertyValue("--y"))||50,fs:el.style.getPropertyValue("--fs")||"1",k:el.classList.contains("fg")?.1:el.classList.contains("mid")?.025:.
1055}}):[];window.addEventListener("scroll",function(){frame||(frame=window.requestAnimationFrame(tick))},{passive:!0}),window.addEventListener("resize",tick),new MutationObserver(tick).observe(root,{attributes:!0,attributeFilter:["data-sections","data-intlogos"]}),tick()}function tick(){frame=0;var vh=window.innerHeight,r=sec.getBoundingClientRect(),fadeMode="fade"===root.getAttribute("data-sections");if(field){GROUND_PAINTED!==lastPainted&&(lastPainted=GROUND_PAINTED,swapT=performance.now());var groundLight=!!GROUND_COLOR&&lum(GROUND_COLOR)>.55,settled=performance.now()-swapT>500,lit=!fadeMode||groundLight&&settled;field.classList.toggle("lit",lit),lit&&!litAt&&(litAt=performance.now()),fadeMode&&groundLight&&!settled&&!litTimer&&(litTimer=window.setTimeout(function(){litTimer=0,tick()},560))}if(center)if(heroField||!field||litAt&&performance.now()-litAt>=900){textAt||(textAt=performance.now());var e=Math.min(1,Math.max(0,(.92*vh-r.top)/(.55*vh))),prog=Math.min(1,(performance.now()-textAt)/800);e=Math.min(e,prog),prog<1&&!textTimer&&(textTimer=window.setTimeout(function(){textTimer=0,tick()},60)),center.style.opacity=String(Math.pow(e,1.2).toFixed(3)),center.style.transform="translateY("+(80*(1-e)).toFixed(1)+"px)"}else center.style.opacity="0",center.style.transform="translateY(80px)",textTimer||(textTimer=window.setTimeout(function(){textTimer=0,tick()},200));if(field){var blTop=fadeMode?Math.min(.18*vh,Math.max(0,-r.top)):0,blBot=fadeMode&&!heroField?.18*vh:0,uTop=r.top-blTop,uBot=r.bottom+blBot,wTop=Math.max(0,uTop),wBot=Math.min(vh,uBot);if(wBot<=wTop)field.style.clipPath="inset(100% 0 100% 0)",field.style.webkitMaskImage=field.style.maskImage="none";else{field.style.clipPath="inset("+Math.round(wTop)+"px 0 "+Math.round(vh-wBot)+"px 0)";var half=Math.min(28,(wBot-wTop)/2),s1=uTop>0?wTop:0,s2=uTop>0?wTop+half:0,s3=uBot<vh?wBot-half:vh,s4=uBot<vh?wBot:vh;field.style.webkitMaskImage=field.style.maskImage="linear-gradient(180deg,transparent "+Math.round(s1)+"px,#000 "+Math.round(s2)+"px,#000 "+Math.round(s3)+"px,transparent "+Math.round(s4)+"px)"}var travel=vh/2-(r.top+r.height/2),sg=Math.min(1,Math.abs(travel)/(.55*vh)),imode=root.getAttribute("data-intlogos");marks.forEach(function(m){var py=Math.max(-90,Math.min(90,-travel*m.k));if(m.el.style.transform="translate(-50%, calc(-50% + "+py.toFixed(1)+"px)) scale("+m.fs+")","color"===imode){var f=(vh*(m.y/100)+py)/vh,pg=Math.max(0,Math.min(1,(f-.4)/.2));m.el.style.filter="grayscale("+Math.max(pg,sg).toFixed(3)+")"}else m.el.style.filter&&(m.el.style.filter="")})}}}(),Array.prototype.forEach.call(document.querySelectorAll(".sitehead .mega"),function(m){if(!m.querySelector(".mega-glass")){var g=document.createElement("i");g.className="mega-glass",g.setAttribute("aria-hidden","true"),m.insertBefore(g,m.firstChild)}}),document.body.classList.contains("page-integrations-index")){var TOOL_SVGS={Semgrep:"semgrep",SonarQube:"sonarqube",Snyk:"snyk",Trivy:"trivy","Burp Suite":"burp-suite","OWASP ZAP":"owasp-zap",Veracode:"veracode",Checkmarx:"checkmarx",Tenable:"tenable",Qualys:"qualys",Rapid7:"rapid7",GitLab:"gitlab",GitHub:"github",Wiz:"wiz",CrowdStrike:"crowdstrike",Fortify:"fortify",JFrog:"jfrog",Sonatype:"sonatype","Aqua Security":"aqua-security","Black Duck":"black-duck",HackerOne:"hackerone",GitGuardian:"gitguardian"};Array.prototype.forEach.call(document.querySelectorAll(".wf-solcard"),function(card){var t=card.querySelector(".wf-soltitle"),icon=card.querySelector(".wf-solicon"),slug=t&&TOOL_SVGS[t.textContent.trim()];if(slug&&icon){icon.classList.add("has-mark");var img=document.createElement("img");img.src="assets/logos/tools/"+slug+".svg",img.alt="",img.loading="lazy",icon.appendChild(img)}})}var finePointer=window.matchMedia("(pointer:fine)").matches;if(!reduced&&finePointer&&"false"!==root.getAttribute("data-lens")){var lens=document.querySelector(".lens");lens&&function(){var coordEls=lens.querySelectorAll(".coords b"),tagEl=lens.querySelector(".tag");tagEl&&!tagEl.textContent.trim()&&(tagEl.textContent="FIX");var mx=window.innerWidth/2,my=window.innerHeight/2,lx=mx,ly=my,shown=!1,cx=coordEls[0],cy=coordEls[1],lastMove=0;function pad(v){for(v=String(Math.max(0,Math.round(v)));v.length<4;)v="0"+v;return v}document.addEventListener("pointermove",function(e){mx=e.clientX,my=e.clientY,cx&&(cx.textContent=pad(mx)),cy&&(cy.textContent=pad(my)),lastMove=Date.now(),lens.classList.remove("idle"),shown||(shown=!0,lens.classList.add("vis"))}),document.addEventListener("mouseleave",function(){shown=!1,lens.classList.remove("vis")}),function tick(){lx+=.14*(mx-lx),ly+=.14*(my-ly),lens.style.transform="translate3d("+lx+"px,"+ly+"px,0)",window.requestAnimationFrame(tick)}(),window.setInterval(function(){shown&&(lens.classList.remove("spin"),lens.offsetWidth,lens.classList.add("spin"),window.setTimeout(function(){lens.classList.remove("spin")},1500))},18e3),window.setInterval(function(){shown&&lastMove&&Date.now()-lastMove>2600&&lens.classList.add("idle")},500)}()}var canIO="IntersectionObserver"in window;var t,note,blocks,inEditor=window.top!==window.self&&document.querySelector(".hs-inline-edit,[data-hs-drop-module]");if(!reduced&&canIO&&!inEditor){var heads=Array.prototype.slice.call(document.querySelectorAll(".wf-section h2.t-h2, body.fam-role .wf-parband--proof .wf-hudquote")).filter(function(h){return!h.closest(".ctaband")});heads.forEach(function(h){var headEl,units;h.classList.add("hrev"),headEl=h,units=[],Array.prototype.slice.call(headEl.childNodes).forEac
1h(function(node){if(3===node.nodeType){var frag=document.createDocumentFragment();node.nodeValue.split(/(\s+)/).forEach(function(part){if(part)if(/^\s+$/.test(part))frag.appendChild(document.createTextNode(part));else{var s=document.createElement("span");s.className="hw",s.appendChild(document.createTextNode(part)),frag.appendChild(s),units.push(s)}}),headEl.replaceChild(frag,node)}else if(1===node.nodeType){var w=document.createElement("span");w.className="hw",headEl.replaceChild(w,node),w.appendChild(node),units.push(w)}}),units.forEach(function(u,i){u.style.setProperty("--j",i)})});var hio=new IntersectionObserver(function(entries){entries.forEach(function(e){e.isIntersecting&&(hio.unobserve(e.target),e.target.classList.add("hr-on"))})},{threshold:.4});heads.forEach(function(h){hio.observe(h)});var rvs=[];Array.prototype.forEach.call(document.querySelectorAll(".wf-section > .wrap"),function(w){var i=0;Array.prototype.forEach.call(w.children,function(child){child.classList.contains("hrev")||child.classList.contains("wf-intcenter")||(child.classList.add("rv"),child.style.setProperty("--rvi",Math.min(i,5)),i++,rvs.push(child))})});var rio=new IntersectionObserver(function(entries){entries.forEach(function(e){e.isIntersecting&&(rio.unobserve(e.target),e.target.classList.add("on"))})},{threshold:.12,rootMargin:"0px 0px -6% 0px"});rvs.forEach(function(el){!function(el){return!!el.closest(".wf-hero")}(el)?rio.observe(el):requestAnimationFrame(function(){requestAnimationFrame(function(){el.classList.add("on")})})})}note=document.getElementById("deadlink"),document.addEventListener("click",function(e){var a=e.target.closest?e.target.closest("a"):null;a&&"#unrouted"===(a.getAttribute("href")||"")&&(e.preventDefault(),note&&(note.textContent=":: "+(a.dataset.label||"this link")+" is not part of this review",note.classList.add("on"),clearTimeout(t),t=setTimeout(function(){note.classList.remove("on")},2600)))}),function(){var shead=document.querySelector(".wf-stackhead");if(shead){var sec=shead.closest(".wf-section")||document.documentElement;measure(),window.addEventListener("resize",measure),document.fonts&&document.fonts.ready&&document.fonts.ready.then(measure)}function measure(){sec.style.setProperty("--wf-stackheadh",shead.offsetHeight+8+"px"),sec.style.setProperty("--wf-stackheadfull",shead.offsetHeight+"px")}}(),(blocks=document.querySelectorAll("pre.wf-code")).length&&Array.prototype.forEach.call(blocks,function(block){if(!block.parentElement||!block.parentElement.classList.contains("wf-codewrap")){var wrap=document.createElement("div");wrap.className="wf-codewrap",wrap.setAttribute("data-wf-furniture",""),block.parentNode.insertBefore(wrap,block),wrap.appendChild(block);var btn=document.createElement("button");btn.type="button",btn.className="wf-codecopy",btn.textContent="Copy",btn.setAttribute("aria-label","Copy code to clipboard"),wrap.appendChild(btn),btn.addEventListener("click",function(){var text=block.textContent;function done(ok){btn.textContent=ok?"Copied":"Press Ctrl+C",btn.classList.add(ok?"ok":"err"),window.setTimeout(function(){btn.textContent="Copy",btn.classList.remove("ok"),btn.classList.remove("err")},1600)}if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(text).then(function(){done(!0)},function(){done(!1)});else{var range=document.createRange();range.selectNodeContents(block);var sel=window.getSelection();sel.removeAllRanges(),sel.addRange(range),done(document.execCommand&&document.execCommand("copy")),sel.removeAllRanges()}})}})}(); 2//# sourceURL=https://22466695.fs1.hubspotusercontent-na1.net/hubfs/22466695/hub_generated/template_assets/1/222567140956/1790294523773/template_main.js
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.