@webability/core 1.16.0 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dom.cjs +1 -1
- package/dist/dom.js +1 -1
- package/dist/engine.cjs +2 -2
- package/dist/engine.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/playwright.cjs +1 -1
- package/dist/playwright.js +1 -1
- package/package.json +1 -1
package/dist/dom.cjs
CHANGED
|
@@ -402,7 +402,7 @@ Omit "fix" for passes.`;function LM(p){let d=p.items.map(({screenshot:b,...g})=>
|
|
|
402
402
|
Conformance level: ${p.level}
|
|
403
403
|
|
|
404
404
|
Findings:
|
|
405
|
-
${JSON.stringify(d,null,1)}`}function OM(p,d={}){let b=p.vision&&p.items.some(_=>_.screenshot),g=b?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(b)for(let _ of p.items)_.screenshot&&(m.push({type:"text",text:`Crop for ${_.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${_.screenshot}`}}));return {model:g,temperature:0,max_tokens:4096,...g===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),b=false;try{let g=new URL(d).hostname;b=g==="openrouter.ai"||g.endsWith(".openrouter.ai");}catch{}return async(g,m)=>{let _=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(g,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:b}))});if(!_.ok)throw new Zn(`judge model HTTP ${_.status}`);let A=(await _.json()).choices?.[0]?.message?.content;if(typeof A=="string")return A;if(Array.isArray(A))return A.map(M=>typeof M?.text=="string"?M.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(b,g)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:g,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(b)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,b){let g={promoted:[],judged:[]},m=qM(b);if(d.length===0)return g;let _=b.level??"AA",R=b.timeoutMs??bM,A=Date.now()+R,M=Za([...d],_);if(M.length===0)return g;let L=new Map;for(let h of M){let w=`${h.selector}|${Fu(h)}`,y=L.get(w);y?y.members.push(h):L.set(w,{key:w,members:[h],rep:h,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...L.keys()].map(h=>L.get(h).rep.selector),maxHtml:Eg});}catch{}for(let h of L.values())h.ctx=F.elements[h.rep.selector],h.ctx&&!h.ctx.found&&(h.ctx=void 0),h.kind=CM(h.rep,h.ctx);let D=new Map;for(let[h,w]of [...L]){if(!w.ctx)continue;let y=`${w.ctx.elementKey}|${Fu(w.rep)}`,S=D.get(y);if(!S){D.set(y,w);continue}S.members.push(...w.members),L.delete(h);}let T={promoted:[],judged:[]},E=(h,w)=>{for(let y of h.members){if(w.verdict==="violation"){let S=VM(y,h,w);if(!S)continue;T.promoted.push(S);}T.judged.push({id:y.id.replace("axe-incomplete-","axe-"),type:y.type,verdict:w.verdict,reason:w.reason});}},P=[...L.values()].filter(h=>h.kind==="contrast");if(P.length&&p){for(let w of P)w.pixels=b.measured?.get(w.rep.selector);let h=P.filter(w=>!w.pixels).map(w=>w.rep.selector);if(h.length)try{for(let w of await xg(p,h))for(let y of P)y.rep.selector===w.selector&&(y.pixels=w);}catch{}}let I=[];for(let h of L.values()){let w=m?No.get(Sg(b.url,h.rep,h.ctx?.html??h.rep.html??"")):void 0;if(w){E(h,w);continue}let y=HM(h);if(y!=="drop"){if(y){E(h,y);continue}I.push(h);}}if(I.length===0||!m)return T;let H=b.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,z=0,U=BM(b),Z=h=>({id:h.rep.id,type:h.rep.type,wcag:h.rep.wcag,message:h.rep.message,selector:h.rep.selector,html:(h.ctx?.html??h.rep.html??"").slice(0,Eg),context:j.has(h.key)?{...kg(h),cropNote:"no image attached: the crop was too large to send"}:kg(h),...B.has(h.key)?{screenshot:B.get(h.key)}:{}}),C=H?vM:gM;for(let h=0;h<I.length;h+=C){let w=A-Date.now();if(w<=0)break;let y=I.slice(h,h+C);if(H){for(let ee of y){if(z>=yM||Date.now()>A)break;let ie=await zM(p,ee.ctx,U);ie&&(z++,ie.data?B.set(ee.key,ie.data):j.add(ee.key));}if(Date.now()>A)break}let S=new Map(y.map(ee=>[ee.rep.id,ee])),O=new AbortController,q=setTimeout(()=>O.abort(),w),G=null,J=false,te=Date.now();try{let ee=await Promise.race([m({url:b.url,level:_,vision:H,items:y.map(Z)},O.signal),new Promise((ie,pe)=>O.signal.addEventListener("abort",()=>pe(new Error("judge deadline"))))]);G=IM(ee),Iu()&&console.error(`ai judge: batch ${y.length} items, ${y.filter(ie=>B.has(ie.key)).length} crops, ${Date.now()-te}ms, ${G?G.length+" verdicts":"MALFORMED: "+String(ee).slice(0,200)}`);}catch(ee){Iu()&&console.error(`ai judge: batch ${y.length} items failed after ${Date.now()-te}ms: ${ee.message}`),G=null,J=ee instanceof Zn;}finally{clearTimeout(q);}if(!G){if(O.signal.aborted||J)break;continue}for(let ee of G){let ie=S.get(ee.id);if(!ie)continue;S.delete(ee.id);let pe={verdict:ee.verdict,reason:kM(ee.reason),fix:ee.fix};No.size>=AM&&No.clear(),No.set(Sg(b.url,ie.rep,ie.ctx?.html??ie.rep.html??""),pe),E(ie,pe);}}return T}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:b,attrH:g,naturalW:m,naturalH:_}=d.img;if(b>0&&b<=1&&g>0&&g<=1||m>0&&m<=1&&_>0&&_<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let b=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=b?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${b}:1`}:p.pixels.bestRatio<b*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${b}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,b={};return p.rep.reviewReason&&(b.engineNote=p.rep.reviewReason),d&&(b.tag=d.tag,d.nearText&&(b.nearbyText=d.nearText),d.parentInteractive&&(b.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(b.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(b.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(b.fg=Jn(p.pixels.fg),b.threshold=Lu(p.rep,p.pixels.threshold),b.bestRatio=Tg(p.pixels.bestRatio),b.worstRatio=Tg(p.pixels.worstRatio),b.fontSize=d.fontSize,b.fontWeight=d.fontWeight),p.kind==="generic"&&(b.fg=Jn(d.fg),b.bg=Jn(d.bg),b.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),b}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,b){let g=FM(p);if(d.kind==="alt"){let _=TM(b.fix?.value);return _?Mu(d.ctx)?{...g,fix:{attribute:"aria-label",currentValue:"",suggestedValue:_,needsManualReview:false}}:{...g,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:_,needsManualReview:false}}:null}if(d.kind==="contrast"){let _=d.pixels;if(!_)return null;let R=Jn(_.fg),A=Lu(p,_.threshold),M=_.worstBg?Jn(_.worstBg):null,L=_.bestBg?Jn(_.bestBg):null,F=P=>!!P&&!!M&&Sn(P,M)>=A&&(!L||Sn(P,L)>=A),D,T=RM(b.fix?.value),E=M?jM(R,M,A):null;return T&&T!==R.toLowerCase()&&F(T)?D=`color:${T} !important;`:F(E)?D=`color:${E} !important;`:L&&Sn(R,L)>=A&&(D=`background-color:${L} !important;`),{...g,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${_.worstRatio.toFixed(2)}:1 at worst (${_.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${b.reason||"not readable"}), needs ${A}:1`,fix:{attribute:"style",currentValue:R,...D?{suggestedValue:D}:{},needsManualReview:true}}}let m=p.fix;return m?{...g,fix:m}:b.fix?.attribute&&b.fix.value?{...g,fix:{attribute:b.fix.attribute,currentValue:"",suggestedValue:b.fix.value,needsManualReview:true}}:g}function jM(p,d,b){let g=p.match(Rg);if(!g)return null;let m=parseInt(g[1],16),_=[m>>16&255,m>>8&255,m&255],R=L=>"#"+L.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),A=(L,F)=>R(_.map(D=>F?D*(1-L):D+(255-D)*L)),M=null;for(let L of [true,false]){if(Sn(A(1,L),d)<b)continue;let F=0,D=1;for(let E=0;E<24;E++){let P=(F+D)/2;Sn(A(P,L),d)>=b?D=P:F=P;}let T=A(D,L);Sn(T,d)>=b&&(!M||D<M.t)&&(M={t:D,hex:T});}return M?.hex??null}var $M=[1,.6,.35];async function zM(p,d,b){let g=p.screenshot;if(typeof g!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let _=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),A=d.rect.x+d.rect.w/2,M=d.rect.y+d.rect.h/2,L=globalThis.Buffer;if(!L)return null;let F=0;for(let D of b===void 0?[1]:$M){let T=Math.max(2,Math.round(_*D)),E=Math.max(2,Math.round(R*D)),P=D===1?Math.max(0,d.rect.x-8):Math.max(0,A-T/2),I=D===1?Math.max(0,d.rect.y-8):Math.max(0,M-E/2),H=await g.call(p,{clip:{x:P,y:I,width:T,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=L.from(H).toString("base64");if(F=B.length,b===void 0||B.length<=b)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${b} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function g(y){try{return document.querySelectorAll(y).length===1}catch{return false}}function m(y){if(!y||/^_?[Rr]_[a-z0-9]+_/.test(y)||/^:[Rr][0-9a-z]+:/.test(y)||/^«[Rr][0-9a-z]+»/.test(y)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(y)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(y)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(y)||/[0-9a-f]{16,}/i.test(y))return true;for(var S=y.split(/[-_:.]/).filter(Boolean),O=S.some(function(ee){var ie=(ee.match(/[a-z]/gi)||[]).length,pe=(ee.match(/[aeiou]/gi)||[]).length;return ie>=4&&pe>=1&&!/\d/.test(ee)}),q=0;q<S.length;q++){var G=S[q];if(!O&&/^\d{7,}$/.test(G)||/^[0-9a-f]{13}$/i.test(G)&&/[a-f]/i.test(G)&&/\d/.test(G))return true;if(G.length>=7&&/\d/.test(G)&&/[a-z]/i.test(G)){var J=(G.match(/[aeiou]/gi)||[]).length,te=(G.match(/[a-z]/gi)||[]).length;if(te>=4&&J/te<.2||(G.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function _(y){if(!y.classList||!y.classList.length)return [];for(var S=[],O=0;O<y.classList.length&&S.length<3;O++){var q=y.classList[O];q&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(q)||/^[a-z][a-z0-9_-]{1,40}$/i.test(q)&&S.push(q));}return S}function R(y){var S=y.tagName.toLowerCase(),O=_(y);return O.length?S+"."+O.map(function(q){return CSS.escape(q)}).join("."):S}function A(y){var S=y.tagName.toLowerCase();if(!y.parentElement)return S;var O=Array.from(y.parentElement.children).filter(function(q){return q.tagName===y.tagName});return O.length===1?S:S+":nth-of-type("+(O.indexOf(y)+1)+")"}function M(y){for(var S=[],O=y;O&&O!==document.body&&O!==document.documentElement;)S.unshift(A(O)),O=O.parentElement;return S.join(" > ")}function L(y){if(!y||y===document.body||y===document.documentElement)return "body";var S=y.getAttribute?y.getAttribute("id"):null;if(S&&!m(S)){var O="#"+CSS.escape(S);if(g(O))return O}for(var q=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],G=0;G<q.length;G++){var J=y.getAttribute(q[G]);if(J&&J.length<60){var te=y.tagName.toLowerCase()+"["+q[G]+'="'+CSS.escape(J)+'"]';if(g(te))return te}}var ee=R(y);if(ee.indexOf(".")!==-1&&g(ee))return ee;for(var ie=[],pe=null,de=y;de&&de!==document.body&&de!==document.documentElement;){var Ce=de.getAttribute?de.getAttribute("id"):null;if(Ce&&!m(Ce)){var De="#"+CSS.escape(Ce);if(g(De)){pe=De;break}}var Pe=R(de);if(Pe.indexOf(".")!==-1&&g(Pe)){pe=Pe;break}if(ie.unshift(de),de=de.parentElement,ie.length>6)break}var xe=ie.map(function(vt){var Ne=R(vt);if(Ne.indexOf(".")!==-1&&vt.parentElement){var Ct=vt.parentElement.querySelectorAll(":scope > "+Ne);if(Ct.length===1)return "> "+Ne}return "> "+A(vt)}).join(" "),Ee="";if(pe&&xe?Ee=(pe+" "+xe).slice(0,200):pe&&(Ee=pe),Ee&&g(Ee))return Ee;var pt=M(y);return pt&&g(pt)?pt:Ee||pt||R(y)}function F(y){if(!y)return false;let S=getComputedStyle(y);if(S.display==="none"||S.visibility==="hidden")return false;let O=parseFloat(S.opacity);if(!isNaN(O)&&O<.1)return false;if(!isNaN(O)&&O<.5){var q=S.transform||"";if(q&&q!=="none"&&q!=="matrix(1, 0, 0, 1, 0, 0)")return false}let G=y.getBoundingClientRect();if(G.width<=1||G.height<=1)return false;var J=S.clipPath||"";return !(J!=="none"&&/inset\(\s*(?:50|100)%/.test(J)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(S.clip||""))}function D(y){if(!y)return "";for(var S=[],O=String(y).trim().split(/\s+/),q=0;q<O.length;q++){var G=document.getElementById(O[q]);if(G){var J=(G.textContent||"").trim();J&&S.push(J);}}return S.join(" ").replace(/\s+/g," ").trim()}function T(y){var S=D(y.getAttribute("aria-labelledby"));if(S)return S;var O=y.getAttribute("aria-label")||"";if(O.trim())return O.trim();var q=y.tagName?y.tagName.toLowerCase():"";if(q==="input"||q==="select"||q==="textarea"){var G=y.getAttribute("id");if(G)try{var J=document.querySelector('label[for="'+CSS.escape(G)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var te=y.closest?y.closest("label"):null;if(te&&(te.textContent||"").trim())return (te.textContent||"").trim().replace(/\s+/g," ")}var ee=(y.textContent||"").trim().replace(/\s+/g," ");if(!ee&&y.querySelector){var ie=y.querySelector('img[alt]:not([alt=""])');if(ie&&(ee=(ie.getAttribute("alt")||"").trim()),!ee){var pe=y.querySelector("svg > title");pe&&(ee=(pe.textContent||"").trim());}}if(ee)return ee;var de=y.getAttribute("title")||"";return de.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(y){return y?y.closest(E)!==null:false}function I(y){if(!y)return false;if(y.getAttribute("aria-hidden")==="true"||y.getAttribute("role")==="presentation"||y.getAttribute("role")==="none")return true;let S=y.parentElement,O=0;for(;S&&S!==document.body&&O<6;){if(S.getAttribute("aria-hidden")==="true")return true;S=S.parentElement,O++;}return false}function H(y){let S=y.naturalWidth||y.width||0,O=y.naturalHeight||y.height||0;if(S<=2&&O<=2)return true;let q=y.getBoundingClientRect();if(q.width<=2&&q.height<=2)return true;let G=(y.src||"").toLowerCase();return !!(G.includes("pixel")||G.includes("beacon")||G.includes("tracker")||G.includes("analytics")||G.includes("adsrvr")||G.includes("doubleclick")||G.includes("facebook.com/tr"))}function B(y){var S=y.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");S||(S=y.closest("div,nav,main,aside,header,footer"));var O=S?S.querySelector("h1,h2,h3,h4,h5,h6"):null,q=O?(O.textContent||"").trim().slice(0,80):"",G=y.parentElement,J=G?G.tagName.toLowerCase():"",te=G&&G.getAttribute("role")||"",ee="";if(S){var ie=S.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");ie&&(ee=(ie.textContent||"").trim().slice(0,120));}var pe="";if(S){var de=S.querySelector('img[alt]:not([alt=""])');de&&(pe=(de.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:q,parentTag:J,parentRole:te,cardText:ee,imgAlt:pe}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},z=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(y,S,O){var q=[];if(y)for(var G=y.split(/\s+/),J=0;J<G.length;J++){var te=G[J];if(te){var ee=te.toLowerCase().replace(z,"").replace(/^icon-/,"");ee&&ee!==te.toLowerCase()&&q.push(ee);}}if(S&&q.push(S.toLowerCase().trim()),O){var ie=O.trim().toLowerCase();ie.length<30&&/^[a-z_-]+$/.test(ie)&&q.push(ie.replace(/_/g,"-"));}for(var pe=0;pe<q.length;pe++)if(j[q[pe]])return j[q[pe]];for(var de=0;de<q.length;de++)for(var Ce=q[de].split("-"),De=0;De<Ce.length;De++)if(j[Ce[De]])return j[Ce[De]];return null}var Z;function C(y){if(!y)return null;var S=y.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(S)return [parseInt(S[1],10),parseInt(S[2],10),parseInt(S[3],10),S[4]?parseFloat(S[4]):1];if(y==="transparent"||y==="none")return [0,0,0,0];try{if(Z===void 0){var O=document.createElement("canvas");O.width=1,O.height=1,Z=O.getContext("2d",{willReadFrequently:!0});}if(!Z)return null;Z.clearRect(0,0,1,1),Z.fillStyle="#000000",Z.fillStyle=y,Z.fillRect(0,0,1,1);var q=Z.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]/255]}catch{return null}}function h(y,S,O){var q=function(G){var J=G/255;return J<=.03928?J/12.92:Math.pow((J+.055)/1.055,2.4)};return .2126*q(y)+.7152*q(S)+.0722*q(O)}function w(y,S){var O=h(y[0],y[1],y[2]),q=h(S[0],S[1],S[2]),G=Math.max(O,q),J=Math.min(O,q);return (G+.05)/(J+.05)}Object.assign(p,{__isUnique:g,__isGeneratedId:m,__cleanClasses:_,__tagWithClass:R,__nthSelector:A,__fullPath:M,uniqueSel:L,isVisible:F,__resolveIdRefs:D,getAccessibleName:T,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:I,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:z,lookupIconLabel:U,__colorCtx:Z,parseCssColor:C,relLuminance:h,contrastRatio:w}),p.__waDomKernelInstalled=true;}var Mg="1.16.0";function GM(p){return {async evaluate(d,...b){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...b)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let b=GM(d),g=[],m=[],_=[],R=[];await bu(b);let A=await dg(b,m,_,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(g.push(...A.map(yg)),p.includeAxe!==false)try{let T=await Promise.resolve().then(()=>k3(Og(),1)),P=await(T.default??T).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let I of P.violations??[])for(let H of I.nodes??[])g.push({id:`axe-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let I of P.incomplete??[])for(let H of I.nodes??[])g.push({id:`axe-incomplete-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{_.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let M=Au(Lo(g).verdicts);try{M=await mg(b,M);}catch{}try{M=await hg(b,M);}catch{}try{M=await fg(b,M);}catch{}M=Za(M,p.level??"AA");let L=Lo(M),F=L.verdicts,D;if(p.judge)try{let T=Za([...Lo(g).undecided,...L.undecided],p.level??"AA"),E=await Fg(b,T,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(D=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(b,F,R);}catch{}return wu(R,await yu(b)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...D?{judged:D}:{},...m.length?{truncated:m}:{},..._.length?{engineWarnings:_}:{},summary:wg(F)}}/*! Bundled license information:
|
|
405
|
+
${JSON.stringify(d,null,1)}`}function OM(p,d={}){let b=p.vision&&p.items.some(_=>_.screenshot),g=b?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(b)for(let _ of p.items)_.screenshot&&(m.push({type:"text",text:`Crop for ${_.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${_.screenshot}`}}));return {model:g,temperature:0,max_tokens:4096,...g===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),b=false;try{let g=new URL(d).hostname;b=g==="openrouter.ai"||g.endsWith(".openrouter.ai");}catch{}return async(g,m)=>{let _=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(g,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:b}))});if(!_.ok)throw new Zn(`judge model HTTP ${_.status}`);let A=(await _.json()).choices?.[0]?.message?.content;if(typeof A=="string")return A;if(Array.isArray(A))return A.map(M=>typeof M?.text=="string"?M.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(b,g)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:g,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(b)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,b){let g={promoted:[],judged:[]},m=qM(b);if(d.length===0)return g;let _=b.level??"AA",R=b.timeoutMs??bM,A=Date.now()+R,M=Za([...d],_);if(M.length===0)return g;let L=new Map;for(let h of M){let w=`${h.selector}|${Fu(h)}`,y=L.get(w);y?y.members.push(h):L.set(w,{key:w,members:[h],rep:h,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...L.keys()].map(h=>L.get(h).rep.selector),maxHtml:Eg});}catch{}for(let h of L.values())h.ctx=F.elements[h.rep.selector],h.ctx&&!h.ctx.found&&(h.ctx=void 0),h.kind=CM(h.rep,h.ctx);let D=new Map;for(let[h,w]of [...L]){if(!w.ctx)continue;let y=`${w.ctx.elementKey}|${Fu(w.rep)}`,S=D.get(y);if(!S){D.set(y,w);continue}S.members.push(...w.members),L.delete(h);}let T={promoted:[],judged:[]},E=(h,w)=>{for(let y of h.members){if(w.verdict==="violation"){let S=VM(y,h,w);if(!S)continue;T.promoted.push(S);}T.judged.push({id:y.id.replace("axe-incomplete-","axe-"),type:y.type,verdict:w.verdict,reason:w.reason});}},P=[...L.values()].filter(h=>h.kind==="contrast");if(P.length&&p){for(let w of P)w.pixels=b.measured?.get(w.rep.selector);let h=P.filter(w=>!w.pixels).map(w=>w.rep.selector);if(h.length)try{for(let w of await xg(p,h))for(let y of P)y.rep.selector===w.selector&&(y.pixels=w);}catch{}}let I=[];for(let h of L.values()){let w=m?No.get(Sg(b.url,h.rep,h.ctx?.html??h.rep.html??"")):void 0;if(w){E(h,w);continue}let y=HM(h);if(y!=="drop"){if(y){E(h,y);continue}I.push(h);}}if(I.length===0||!m)return T;let H=b.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,z=0,U=BM(b),Z=h=>({id:h.rep.id,type:h.rep.type,wcag:h.rep.wcag,message:h.rep.message,selector:h.rep.selector,html:(h.ctx?.html??h.rep.html??"").slice(0,Eg),context:j.has(h.key)?{...kg(h),cropNote:"no image attached: the crop was too large to send"}:kg(h),...B.has(h.key)?{screenshot:B.get(h.key)}:{}}),C=H?vM:gM;for(let h=0;h<I.length;h+=C){let w=A-Date.now();if(w<=0)break;let y=I.slice(h,h+C);if(H){for(let ee of y){if(z>=yM||Date.now()>A)break;let ie=await zM(p,ee.ctx,U);ie&&(z++,ie.data?B.set(ee.key,ie.data):j.add(ee.key));}if(Date.now()>A)break}let S=new Map(y.map(ee=>[ee.rep.id,ee])),O=new AbortController,q=setTimeout(()=>O.abort(),w),G=null,J=false,te=Date.now();try{let ee=await Promise.race([m({url:b.url,level:_,vision:H,items:y.map(Z)},O.signal),new Promise((ie,pe)=>O.signal.addEventListener("abort",()=>pe(new Error("judge deadline"))))]);G=IM(ee),Iu()&&console.error(`ai judge: batch ${y.length} items, ${y.filter(ie=>B.has(ie.key)).length} crops, ${Date.now()-te}ms, ${G?G.length+" verdicts":"MALFORMED: "+String(ee).slice(0,200)}`);}catch(ee){Iu()&&console.error(`ai judge: batch ${y.length} items failed after ${Date.now()-te}ms: ${ee.message}`),G=null,J=ee instanceof Zn;}finally{clearTimeout(q);}if(!G){if(O.signal.aborted||J)break;continue}for(let ee of G){let ie=S.get(ee.id);if(!ie)continue;S.delete(ee.id);let pe={verdict:ee.verdict,reason:kM(ee.reason),fix:ee.fix};No.size>=AM&&No.clear(),No.set(Sg(b.url,ie.rep,ie.ctx?.html??ie.rep.html??""),pe),E(ie,pe);}}return T}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:b,attrH:g,naturalW:m,naturalH:_}=d.img;if(b>0&&b<=1&&g>0&&g<=1||m>0&&m<=1&&_>0&&_<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let b=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=b?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${b}:1`}:p.pixels.bestRatio<b*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${b}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,b={};return p.rep.reviewReason&&(b.engineNote=p.rep.reviewReason),d&&(b.tag=d.tag,d.nearText&&(b.nearbyText=d.nearText),d.parentInteractive&&(b.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(b.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(b.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(b.fg=Jn(p.pixels.fg),b.threshold=Lu(p.rep,p.pixels.threshold),b.bestRatio=Tg(p.pixels.bestRatio),b.worstRatio=Tg(p.pixels.worstRatio),b.fontSize=d.fontSize,b.fontWeight=d.fontWeight),p.kind==="generic"&&(b.fg=Jn(d.fg),b.bg=Jn(d.bg),b.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),b}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,b){let g=FM(p);if(d.kind==="alt"){let _=TM(b.fix?.value);return _?Mu(d.ctx)?{...g,fix:{attribute:"aria-label",currentValue:"",suggestedValue:_,needsManualReview:false}}:{...g,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:_,needsManualReview:false}}:null}if(d.kind==="contrast"){let _=d.pixels;if(!_)return null;let R=Jn(_.fg),A=Lu(p,_.threshold),M=_.worstBg?Jn(_.worstBg):null,L=_.bestBg?Jn(_.bestBg):null,F=P=>!!P&&!!M&&Sn(P,M)>=A&&(!L||Sn(P,L)>=A),D,T=RM(b.fix?.value),E=M?jM(R,M,A):null;return T&&T!==R.toLowerCase()&&F(T)?D=`color:${T} !important;`:F(E)?D=`color:${E} !important;`:L&&Sn(R,L)>=A&&(D=`background-color:${L} !important;`),{...g,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${_.worstRatio.toFixed(2)}:1 at worst (${_.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${b.reason||"not readable"}), needs ${A}:1`,fix:{attribute:"style",currentValue:R,...D?{suggestedValue:D}:{},needsManualReview:true}}}let m=p.fix;return m?{...g,fix:m}:b.fix?.attribute&&b.fix.value?{...g,fix:{attribute:b.fix.attribute,currentValue:"",suggestedValue:b.fix.value,needsManualReview:true}}:g}function jM(p,d,b){let g=p.match(Rg);if(!g)return null;let m=parseInt(g[1],16),_=[m>>16&255,m>>8&255,m&255],R=L=>"#"+L.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),A=(L,F)=>R(_.map(D=>F?D*(1-L):D+(255-D)*L)),M=null;for(let L of [true,false]){if(Sn(A(1,L),d)<b)continue;let F=0,D=1;for(let E=0;E<24;E++){let P=(F+D)/2;Sn(A(P,L),d)>=b?D=P:F=P;}let T=A(D,L);Sn(T,d)>=b&&(!M||D<M.t)&&(M={t:D,hex:T});}return M?.hex??null}var $M=[1,.6,.35];async function zM(p,d,b){let g=p.screenshot;if(typeof g!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let _=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),A=d.rect.x+d.rect.w/2,M=d.rect.y+d.rect.h/2,L=globalThis.Buffer;if(!L)return null;let F=0;for(let D of b===void 0?[1]:$M){let T=Math.max(2,Math.round(_*D)),E=Math.max(2,Math.round(R*D)),P=D===1?Math.max(0,d.rect.x-8):Math.max(0,A-T/2),I=D===1?Math.max(0,d.rect.y-8):Math.max(0,M-E/2),H=await g.call(p,{clip:{x:P,y:I,width:T,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=L.from(H).toString("base64");if(F=B.length,b===void 0||B.length<=b)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${b} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function g(y){try{return document.querySelectorAll(y).length===1}catch{return false}}function m(y){if(!y||/^_?[Rr]_[a-z0-9]+_/.test(y)||/^:[Rr][0-9a-z]+:/.test(y)||/^«[Rr][0-9a-z]+»/.test(y)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(y)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(y)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(y)||/[0-9a-f]{16,}/i.test(y))return true;for(var S=y.split(/[-_:.]/).filter(Boolean),O=S.some(function(ee){var ie=(ee.match(/[a-z]/gi)||[]).length,pe=(ee.match(/[aeiou]/gi)||[]).length;return ie>=4&&pe>=1&&!/\d/.test(ee)}),q=0;q<S.length;q++){var G=S[q];if(!O&&/^\d{7,}$/.test(G)||/^[0-9a-f]{13}$/i.test(G)&&/[a-f]/i.test(G)&&/\d/.test(G))return true;if(G.length>=7&&/\d/.test(G)&&/[a-z]/i.test(G)){var J=(G.match(/[aeiou]/gi)||[]).length,te=(G.match(/[a-z]/gi)||[]).length;if(te>=4&&J/te<.2||(G.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function _(y){if(!y.classList||!y.classList.length)return [];for(var S=[],O=0;O<y.classList.length&&S.length<3;O++){var q=y.classList[O];q&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(q)||/^[a-z][a-z0-9_-]{1,40}$/i.test(q)&&S.push(q));}return S}function R(y){var S=y.tagName.toLowerCase(),O=_(y);return O.length?S+"."+O.map(function(q){return CSS.escape(q)}).join("."):S}function A(y){var S=y.tagName.toLowerCase();if(!y.parentElement)return S;var O=Array.from(y.parentElement.children).filter(function(q){return q.tagName===y.tagName});return O.length===1?S:S+":nth-of-type("+(O.indexOf(y)+1)+")"}function M(y){for(var S=[],O=y;O&&O!==document.body&&O!==document.documentElement;)S.unshift(A(O)),O=O.parentElement;return S.join(" > ")}function L(y){if(!y||y===document.body||y===document.documentElement)return "body";var S=y.getAttribute?y.getAttribute("id"):null;if(S&&!m(S)){var O="#"+CSS.escape(S);if(g(O))return O}for(var q=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],G=0;G<q.length;G++){var J=y.getAttribute(q[G]);if(J&&J.length<60){var te=y.tagName.toLowerCase()+"["+q[G]+'="'+CSS.escape(J)+'"]';if(g(te))return te}}var ee=R(y);if(ee.indexOf(".")!==-1&&g(ee))return ee;for(var ie=[],pe=null,de=y;de&&de!==document.body&&de!==document.documentElement;){var Ce=de.getAttribute?de.getAttribute("id"):null;if(Ce&&!m(Ce)){var De="#"+CSS.escape(Ce);if(g(De)){pe=De;break}}var Pe=R(de);if(Pe.indexOf(".")!==-1&&g(Pe)){pe=Pe;break}if(ie.unshift(de),de=de.parentElement,ie.length>6)break}var xe=ie.map(function(vt){var Ne=R(vt);if(Ne.indexOf(".")!==-1&&vt.parentElement){var Ct=vt.parentElement.querySelectorAll(":scope > "+Ne);if(Ct.length===1)return "> "+Ne}return "> "+A(vt)}).join(" "),Ee="";if(pe&&xe?Ee=(pe+" "+xe).slice(0,200):pe&&(Ee=pe),Ee&&g(Ee))return Ee;var pt=M(y);return pt&&g(pt)?pt:Ee||pt||R(y)}function F(y){if(!y)return false;let S=getComputedStyle(y);if(S.display==="none"||S.visibility==="hidden")return false;let O=parseFloat(S.opacity);if(!isNaN(O)&&O<.1)return false;if(!isNaN(O)&&O<.5){var q=S.transform||"";if(q&&q!=="none"&&q!=="matrix(1, 0, 0, 1, 0, 0)")return false}let G=y.getBoundingClientRect();if(G.width<=1||G.height<=1)return false;var J=S.clipPath||"";return !(J!=="none"&&/inset\(\s*(?:50|100)%/.test(J)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(S.clip||""))}function D(y){if(!y)return "";for(var S=[],O=String(y).trim().split(/\s+/),q=0;q<O.length;q++){var G=document.getElementById(O[q]);if(G){var J=(G.textContent||"").trim();J&&S.push(J);}}return S.join(" ").replace(/\s+/g," ").trim()}function T(y){var S=D(y.getAttribute("aria-labelledby"));if(S)return S;var O=y.getAttribute("aria-label")||"";if(O.trim())return O.trim();var q=y.tagName?y.tagName.toLowerCase():"";if(q==="input"||q==="select"||q==="textarea"){var G=y.getAttribute("id");if(G)try{var J=document.querySelector('label[for="'+CSS.escape(G)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var te=y.closest?y.closest("label"):null;if(te&&(te.textContent||"").trim())return (te.textContent||"").trim().replace(/\s+/g," ")}var ee=(y.textContent||"").trim().replace(/\s+/g," ");if(!ee&&y.querySelector){var ie=y.querySelector('img[alt]:not([alt=""])');if(ie&&(ee=(ie.getAttribute("alt")||"").trim()),!ee){var pe=y.querySelector("svg > title");pe&&(ee=(pe.textContent||"").trim());}}if(ee)return ee;var de=y.getAttribute("title")||"";return de.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(y){return y?y.closest(E)!==null:false}function I(y){if(!y)return false;if(y.getAttribute("aria-hidden")==="true"||y.getAttribute("role")==="presentation"||y.getAttribute("role")==="none")return true;let S=y.parentElement,O=0;for(;S&&S!==document.body&&O<6;){if(S.getAttribute("aria-hidden")==="true")return true;S=S.parentElement,O++;}return false}function H(y){let S=y.naturalWidth||y.width||0,O=y.naturalHeight||y.height||0;if(S<=2&&O<=2)return true;let q=y.getBoundingClientRect();if(q.width<=2&&q.height<=2)return true;let G=(y.src||"").toLowerCase();return !!(G.includes("pixel")||G.includes("beacon")||G.includes("tracker")||G.includes("analytics")||G.includes("adsrvr")||G.includes("doubleclick")||G.includes("facebook.com/tr"))}function B(y){var S=y.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");S||(S=y.closest("div,nav,main,aside,header,footer"));var O=S?S.querySelector("h1,h2,h3,h4,h5,h6"):null,q=O?(O.textContent||"").trim().slice(0,80):"",G=y.parentElement,J=G?G.tagName.toLowerCase():"",te=G&&G.getAttribute("role")||"",ee="";if(S){var ie=S.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");ie&&(ee=(ie.textContent||"").trim().slice(0,120));}var pe="";if(S){var de=S.querySelector('img[alt]:not([alt=""])');de&&(pe=(de.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:q,parentTag:J,parentRole:te,cardText:ee,imgAlt:pe}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},z=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(y,S,O){var q=[];if(y)for(var G=y.split(/\s+/),J=0;J<G.length;J++){var te=G[J];if(te){var ee=te.toLowerCase().replace(z,"").replace(/^icon-/,"");ee&&ee!==te.toLowerCase()&&q.push(ee);}}if(S&&q.push(S.toLowerCase().trim()),O){var ie=O.trim().toLowerCase();ie.length<30&&/^[a-z_-]+$/.test(ie)&&q.push(ie.replace(/_/g,"-"));}for(var pe=0;pe<q.length;pe++)if(j[q[pe]])return j[q[pe]];for(var de=0;de<q.length;de++)for(var Ce=q[de].split("-"),De=0;De<Ce.length;De++)if(j[Ce[De]])return j[Ce[De]];return null}var Z;function C(y){if(!y)return null;var S=y.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(S)return [parseInt(S[1],10),parseInt(S[2],10),parseInt(S[3],10),S[4]?parseFloat(S[4]):1];if(y==="transparent"||y==="none")return [0,0,0,0];try{if(Z===void 0){var O=document.createElement("canvas");O.width=1,O.height=1,Z=O.getContext("2d",{willReadFrequently:!0});}if(!Z)return null;Z.clearRect(0,0,1,1),Z.fillStyle="#000000",Z.fillStyle=y,Z.fillRect(0,0,1,1);var q=Z.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]/255]}catch{return null}}function h(y,S,O){var q=function(G){var J=G/255;return J<=.03928?J/12.92:Math.pow((J+.055)/1.055,2.4)};return .2126*q(y)+.7152*q(S)+.0722*q(O)}function w(y,S){var O=h(y[0],y[1],y[2]),q=h(S[0],S[1],S[2]),G=Math.max(O,q),J=Math.min(O,q);return (G+.05)/(J+.05)}Object.assign(p,{__isUnique:g,__isGeneratedId:m,__cleanClasses:_,__tagWithClass:R,__nthSelector:A,__fullPath:M,uniqueSel:L,isVisible:F,__resolveIdRefs:D,getAccessibleName:T,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:I,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:z,lookupIconLabel:U,__colorCtx:Z,parseCssColor:C,relLuminance:h,contrastRatio:w}),p.__waDomKernelInstalled=true;}var Mg="1.17.0";function GM(p){return {async evaluate(d,...b){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...b)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let b=GM(d),g=[],m=[],_=[],R=[];await bu(b);let A=await dg(b,m,_,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(g.push(...A.map(yg)),p.includeAxe!==false)try{let T=await Promise.resolve().then(()=>k3(Og(),1)),P=await(T.default??T).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let I of P.violations??[])for(let H of I.nodes??[])g.push({id:`axe-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let I of P.incomplete??[])for(let H of I.nodes??[])g.push({id:`axe-incomplete-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{_.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let M=Au(Lo(g).verdicts);try{M=await mg(b,M);}catch{}try{M=await hg(b,M);}catch{}try{M=await fg(b,M);}catch{}M=Za(M,p.level??"AA");let L=Lo(M),F=L.verdicts,D;if(p.judge)try{let T=Za([...Lo(g).undecided,...L.undecided],p.level??"AA"),E=await Fg(b,T,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(D=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(b,F,R);}catch{}return wu(R,await yu(b)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...D?{judged:D}:{},...m.length?{truncated:m}:{},..._.length?{engineWarnings:_}:{},summary:wg(F)}}/*! Bundled license information:
|
|
406
406
|
|
|
407
407
|
axe-core/axe.js:
|
|
408
408
|
(*! axe v4.11.3
|
package/dist/dom.js
CHANGED
|
@@ -402,7 +402,7 @@ Omit "fix" for passes.`;function LM(p){let d=p.items.map(({screenshot:b,...g})=>
|
|
|
402
402
|
Conformance level: ${p.level}
|
|
403
403
|
|
|
404
404
|
Findings:
|
|
405
|
-
${JSON.stringify(d,null,1)}`}function OM(p,d={}){let b=p.vision&&p.items.some(_=>_.screenshot),g=b?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(b)for(let _ of p.items)_.screenshot&&(m.push({type:"text",text:`Crop for ${_.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${_.screenshot}`}}));return {model:g,temperature:0,max_tokens:4096,...g===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),b=false;try{let g=new URL(d).hostname;b=g==="openrouter.ai"||g.endsWith(".openrouter.ai");}catch{}return async(g,m)=>{let _=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(g,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:b}))});if(!_.ok)throw new Zn(`judge model HTTP ${_.status}`);let A=(await _.json()).choices?.[0]?.message?.content;if(typeof A=="string")return A;if(Array.isArray(A))return A.map(M=>typeof M?.text=="string"?M.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(b,g)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:g,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(b)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,b){let g={promoted:[],judged:[]},m=qM(b);if(d.length===0)return g;let _=b.level??"AA",R=b.timeoutMs??bM,A=Date.now()+R,M=Za([...d],_);if(M.length===0)return g;let L=new Map;for(let h of M){let w=`${h.selector}|${Fu(h)}`,y=L.get(w);y?y.members.push(h):L.set(w,{key:w,members:[h],rep:h,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...L.keys()].map(h=>L.get(h).rep.selector),maxHtml:Eg});}catch{}for(let h of L.values())h.ctx=F.elements[h.rep.selector],h.ctx&&!h.ctx.found&&(h.ctx=void 0),h.kind=CM(h.rep,h.ctx);let D=new Map;for(let[h,w]of [...L]){if(!w.ctx)continue;let y=`${w.ctx.elementKey}|${Fu(w.rep)}`,S=D.get(y);if(!S){D.set(y,w);continue}S.members.push(...w.members),L.delete(h);}let T={promoted:[],judged:[]},E=(h,w)=>{for(let y of h.members){if(w.verdict==="violation"){let S=VM(y,h,w);if(!S)continue;T.promoted.push(S);}T.judged.push({id:y.id.replace("axe-incomplete-","axe-"),type:y.type,verdict:w.verdict,reason:w.reason});}},P=[...L.values()].filter(h=>h.kind==="contrast");if(P.length&&p){for(let w of P)w.pixels=b.measured?.get(w.rep.selector);let h=P.filter(w=>!w.pixels).map(w=>w.rep.selector);if(h.length)try{for(let w of await xg(p,h))for(let y of P)y.rep.selector===w.selector&&(y.pixels=w);}catch{}}let I=[];for(let h of L.values()){let w=m?No.get(Sg(b.url,h.rep,h.ctx?.html??h.rep.html??"")):void 0;if(w){E(h,w);continue}let y=HM(h);if(y!=="drop"){if(y){E(h,y);continue}I.push(h);}}if(I.length===0||!m)return T;let H=b.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,z=0,U=BM(b),Z=h=>({id:h.rep.id,type:h.rep.type,wcag:h.rep.wcag,message:h.rep.message,selector:h.rep.selector,html:(h.ctx?.html??h.rep.html??"").slice(0,Eg),context:j.has(h.key)?{...kg(h),cropNote:"no image attached: the crop was too large to send"}:kg(h),...B.has(h.key)?{screenshot:B.get(h.key)}:{}}),C=H?vM:gM;for(let h=0;h<I.length;h+=C){let w=A-Date.now();if(w<=0)break;let y=I.slice(h,h+C);if(H){for(let ee of y){if(z>=yM||Date.now()>A)break;let ie=await zM(p,ee.ctx,U);ie&&(z++,ie.data?B.set(ee.key,ie.data):j.add(ee.key));}if(Date.now()>A)break}let S=new Map(y.map(ee=>[ee.rep.id,ee])),O=new AbortController,q=setTimeout(()=>O.abort(),w),G=null,J=false,te=Date.now();try{let ee=await Promise.race([m({url:b.url,level:_,vision:H,items:y.map(Z)},O.signal),new Promise((ie,pe)=>O.signal.addEventListener("abort",()=>pe(new Error("judge deadline"))))]);G=IM(ee),Iu()&&console.error(`ai judge: batch ${y.length} items, ${y.filter(ie=>B.has(ie.key)).length} crops, ${Date.now()-te}ms, ${G?G.length+" verdicts":"MALFORMED: "+String(ee).slice(0,200)}`);}catch(ee){Iu()&&console.error(`ai judge: batch ${y.length} items failed after ${Date.now()-te}ms: ${ee.message}`),G=null,J=ee instanceof Zn;}finally{clearTimeout(q);}if(!G){if(O.signal.aborted||J)break;continue}for(let ee of G){let ie=S.get(ee.id);if(!ie)continue;S.delete(ee.id);let pe={verdict:ee.verdict,reason:kM(ee.reason),fix:ee.fix};No.size>=AM&&No.clear(),No.set(Sg(b.url,ie.rep,ie.ctx?.html??ie.rep.html??""),pe),E(ie,pe);}}return T}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:b,attrH:g,naturalW:m,naturalH:_}=d.img;if(b>0&&b<=1&&g>0&&g<=1||m>0&&m<=1&&_>0&&_<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let b=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=b?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${b}:1`}:p.pixels.bestRatio<b*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${b}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,b={};return p.rep.reviewReason&&(b.engineNote=p.rep.reviewReason),d&&(b.tag=d.tag,d.nearText&&(b.nearbyText=d.nearText),d.parentInteractive&&(b.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(b.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(b.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(b.fg=Jn(p.pixels.fg),b.threshold=Lu(p.rep,p.pixels.threshold),b.bestRatio=Tg(p.pixels.bestRatio),b.worstRatio=Tg(p.pixels.worstRatio),b.fontSize=d.fontSize,b.fontWeight=d.fontWeight),p.kind==="generic"&&(b.fg=Jn(d.fg),b.bg=Jn(d.bg),b.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),b}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,b){let g=FM(p);if(d.kind==="alt"){let _=TM(b.fix?.value);return _?Mu(d.ctx)?{...g,fix:{attribute:"aria-label",currentValue:"",suggestedValue:_,needsManualReview:false}}:{...g,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:_,needsManualReview:false}}:null}if(d.kind==="contrast"){let _=d.pixels;if(!_)return null;let R=Jn(_.fg),A=Lu(p,_.threshold),M=_.worstBg?Jn(_.worstBg):null,L=_.bestBg?Jn(_.bestBg):null,F=P=>!!P&&!!M&&Sn(P,M)>=A&&(!L||Sn(P,L)>=A),D,T=RM(b.fix?.value),E=M?jM(R,M,A):null;return T&&T!==R.toLowerCase()&&F(T)?D=`color:${T} !important;`:F(E)?D=`color:${E} !important;`:L&&Sn(R,L)>=A&&(D=`background-color:${L} !important;`),{...g,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${_.worstRatio.toFixed(2)}:1 at worst (${_.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${b.reason||"not readable"}), needs ${A}:1`,fix:{attribute:"style",currentValue:R,...D?{suggestedValue:D}:{},needsManualReview:true}}}let m=p.fix;return m?{...g,fix:m}:b.fix?.attribute&&b.fix.value?{...g,fix:{attribute:b.fix.attribute,currentValue:"",suggestedValue:b.fix.value,needsManualReview:true}}:g}function jM(p,d,b){let g=p.match(Rg);if(!g)return null;let m=parseInt(g[1],16),_=[m>>16&255,m>>8&255,m&255],R=L=>"#"+L.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),A=(L,F)=>R(_.map(D=>F?D*(1-L):D+(255-D)*L)),M=null;for(let L of [true,false]){if(Sn(A(1,L),d)<b)continue;let F=0,D=1;for(let E=0;E<24;E++){let P=(F+D)/2;Sn(A(P,L),d)>=b?D=P:F=P;}let T=A(D,L);Sn(T,d)>=b&&(!M||D<M.t)&&(M={t:D,hex:T});}return M?.hex??null}var $M=[1,.6,.35];async function zM(p,d,b){let g=p.screenshot;if(typeof g!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let _=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),A=d.rect.x+d.rect.w/2,M=d.rect.y+d.rect.h/2,L=globalThis.Buffer;if(!L)return null;let F=0;for(let D of b===void 0?[1]:$M){let T=Math.max(2,Math.round(_*D)),E=Math.max(2,Math.round(R*D)),P=D===1?Math.max(0,d.rect.x-8):Math.max(0,A-T/2),I=D===1?Math.max(0,d.rect.y-8):Math.max(0,M-E/2),H=await g.call(p,{clip:{x:P,y:I,width:T,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=L.from(H).toString("base64");if(F=B.length,b===void 0||B.length<=b)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${b} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function g(y){try{return document.querySelectorAll(y).length===1}catch{return false}}function m(y){if(!y||/^_?[Rr]_[a-z0-9]+_/.test(y)||/^:[Rr][0-9a-z]+:/.test(y)||/^«[Rr][0-9a-z]+»/.test(y)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(y)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(y)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(y)||/[0-9a-f]{16,}/i.test(y))return true;for(var S=y.split(/[-_:.]/).filter(Boolean),O=S.some(function(ee){var ie=(ee.match(/[a-z]/gi)||[]).length,pe=(ee.match(/[aeiou]/gi)||[]).length;return ie>=4&&pe>=1&&!/\d/.test(ee)}),q=0;q<S.length;q++){var G=S[q];if(!O&&/^\d{7,}$/.test(G)||/^[0-9a-f]{13}$/i.test(G)&&/[a-f]/i.test(G)&&/\d/.test(G))return true;if(G.length>=7&&/\d/.test(G)&&/[a-z]/i.test(G)){var J=(G.match(/[aeiou]/gi)||[]).length,te=(G.match(/[a-z]/gi)||[]).length;if(te>=4&&J/te<.2||(G.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function _(y){if(!y.classList||!y.classList.length)return [];for(var S=[],O=0;O<y.classList.length&&S.length<3;O++){var q=y.classList[O];q&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(q)||/^[a-z][a-z0-9_-]{1,40}$/i.test(q)&&S.push(q));}return S}function R(y){var S=y.tagName.toLowerCase(),O=_(y);return O.length?S+"."+O.map(function(q){return CSS.escape(q)}).join("."):S}function A(y){var S=y.tagName.toLowerCase();if(!y.parentElement)return S;var O=Array.from(y.parentElement.children).filter(function(q){return q.tagName===y.tagName});return O.length===1?S:S+":nth-of-type("+(O.indexOf(y)+1)+")"}function M(y){for(var S=[],O=y;O&&O!==document.body&&O!==document.documentElement;)S.unshift(A(O)),O=O.parentElement;return S.join(" > ")}function L(y){if(!y||y===document.body||y===document.documentElement)return "body";var S=y.getAttribute?y.getAttribute("id"):null;if(S&&!m(S)){var O="#"+CSS.escape(S);if(g(O))return O}for(var q=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],G=0;G<q.length;G++){var J=y.getAttribute(q[G]);if(J&&J.length<60){var te=y.tagName.toLowerCase()+"["+q[G]+'="'+CSS.escape(J)+'"]';if(g(te))return te}}var ee=R(y);if(ee.indexOf(".")!==-1&&g(ee))return ee;for(var ie=[],pe=null,de=y;de&&de!==document.body&&de!==document.documentElement;){var Ce=de.getAttribute?de.getAttribute("id"):null;if(Ce&&!m(Ce)){var De="#"+CSS.escape(Ce);if(g(De)){pe=De;break}}var Pe=R(de);if(Pe.indexOf(".")!==-1&&g(Pe)){pe=Pe;break}if(ie.unshift(de),de=de.parentElement,ie.length>6)break}var xe=ie.map(function(vt){var Ne=R(vt);if(Ne.indexOf(".")!==-1&&vt.parentElement){var Ct=vt.parentElement.querySelectorAll(":scope > "+Ne);if(Ct.length===1)return "> "+Ne}return "> "+A(vt)}).join(" "),Ee="";if(pe&&xe?Ee=(pe+" "+xe).slice(0,200):pe&&(Ee=pe),Ee&&g(Ee))return Ee;var pt=M(y);return pt&&g(pt)?pt:Ee||pt||R(y)}function F(y){if(!y)return false;let S=getComputedStyle(y);if(S.display==="none"||S.visibility==="hidden")return false;let O=parseFloat(S.opacity);if(!isNaN(O)&&O<.1)return false;if(!isNaN(O)&&O<.5){var q=S.transform||"";if(q&&q!=="none"&&q!=="matrix(1, 0, 0, 1, 0, 0)")return false}let G=y.getBoundingClientRect();if(G.width<=1||G.height<=1)return false;var J=S.clipPath||"";return !(J!=="none"&&/inset\(\s*(?:50|100)%/.test(J)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(S.clip||""))}function D(y){if(!y)return "";for(var S=[],O=String(y).trim().split(/\s+/),q=0;q<O.length;q++){var G=document.getElementById(O[q]);if(G){var J=(G.textContent||"").trim();J&&S.push(J);}}return S.join(" ").replace(/\s+/g," ").trim()}function T(y){var S=D(y.getAttribute("aria-labelledby"));if(S)return S;var O=y.getAttribute("aria-label")||"";if(O.trim())return O.trim();var q=y.tagName?y.tagName.toLowerCase():"";if(q==="input"||q==="select"||q==="textarea"){var G=y.getAttribute("id");if(G)try{var J=document.querySelector('label[for="'+CSS.escape(G)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var te=y.closest?y.closest("label"):null;if(te&&(te.textContent||"").trim())return (te.textContent||"").trim().replace(/\s+/g," ")}var ee=(y.textContent||"").trim().replace(/\s+/g," ");if(!ee&&y.querySelector){var ie=y.querySelector('img[alt]:not([alt=""])');if(ie&&(ee=(ie.getAttribute("alt")||"").trim()),!ee){var pe=y.querySelector("svg > title");pe&&(ee=(pe.textContent||"").trim());}}if(ee)return ee;var de=y.getAttribute("title")||"";return de.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(y){return y?y.closest(E)!==null:false}function I(y){if(!y)return false;if(y.getAttribute("aria-hidden")==="true"||y.getAttribute("role")==="presentation"||y.getAttribute("role")==="none")return true;let S=y.parentElement,O=0;for(;S&&S!==document.body&&O<6;){if(S.getAttribute("aria-hidden")==="true")return true;S=S.parentElement,O++;}return false}function H(y){let S=y.naturalWidth||y.width||0,O=y.naturalHeight||y.height||0;if(S<=2&&O<=2)return true;let q=y.getBoundingClientRect();if(q.width<=2&&q.height<=2)return true;let G=(y.src||"").toLowerCase();return !!(G.includes("pixel")||G.includes("beacon")||G.includes("tracker")||G.includes("analytics")||G.includes("adsrvr")||G.includes("doubleclick")||G.includes("facebook.com/tr"))}function B(y){var S=y.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");S||(S=y.closest("div,nav,main,aside,header,footer"));var O=S?S.querySelector("h1,h2,h3,h4,h5,h6"):null,q=O?(O.textContent||"").trim().slice(0,80):"",G=y.parentElement,J=G?G.tagName.toLowerCase():"",te=G&&G.getAttribute("role")||"",ee="";if(S){var ie=S.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");ie&&(ee=(ie.textContent||"").trim().slice(0,120));}var pe="";if(S){var de=S.querySelector('img[alt]:not([alt=""])');de&&(pe=(de.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:q,parentTag:J,parentRole:te,cardText:ee,imgAlt:pe}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},z=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(y,S,O){var q=[];if(y)for(var G=y.split(/\s+/),J=0;J<G.length;J++){var te=G[J];if(te){var ee=te.toLowerCase().replace(z,"").replace(/^icon-/,"");ee&&ee!==te.toLowerCase()&&q.push(ee);}}if(S&&q.push(S.toLowerCase().trim()),O){var ie=O.trim().toLowerCase();ie.length<30&&/^[a-z_-]+$/.test(ie)&&q.push(ie.replace(/_/g,"-"));}for(var pe=0;pe<q.length;pe++)if(j[q[pe]])return j[q[pe]];for(var de=0;de<q.length;de++)for(var Ce=q[de].split("-"),De=0;De<Ce.length;De++)if(j[Ce[De]])return j[Ce[De]];return null}var Z;function C(y){if(!y)return null;var S=y.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(S)return [parseInt(S[1],10),parseInt(S[2],10),parseInt(S[3],10),S[4]?parseFloat(S[4]):1];if(y==="transparent"||y==="none")return [0,0,0,0];try{if(Z===void 0){var O=document.createElement("canvas");O.width=1,O.height=1,Z=O.getContext("2d",{willReadFrequently:!0});}if(!Z)return null;Z.clearRect(0,0,1,1),Z.fillStyle="#000000",Z.fillStyle=y,Z.fillRect(0,0,1,1);var q=Z.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]/255]}catch{return null}}function h(y,S,O){var q=function(G){var J=G/255;return J<=.03928?J/12.92:Math.pow((J+.055)/1.055,2.4)};return .2126*q(y)+.7152*q(S)+.0722*q(O)}function w(y,S){var O=h(y[0],y[1],y[2]),q=h(S[0],S[1],S[2]),G=Math.max(O,q),J=Math.min(O,q);return (G+.05)/(J+.05)}Object.assign(p,{__isUnique:g,__isGeneratedId:m,__cleanClasses:_,__tagWithClass:R,__nthSelector:A,__fullPath:M,uniqueSel:L,isVisible:F,__resolveIdRefs:D,getAccessibleName:T,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:I,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:z,lookupIconLabel:U,__colorCtx:Z,parseCssColor:C,relLuminance:h,contrastRatio:w}),p.__waDomKernelInstalled=true;}var Mg="1.16.0";function GM(p){return {async evaluate(d,...b){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...b)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let b=GM(d),g=[],m=[],_=[],R=[];await bu(b);let A=await dg(b,m,_,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(g.push(...A.map(yg)),p.includeAxe!==false)try{let T=await Promise.resolve().then(()=>k3(Og(),1)),P=await(T.default??T).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let I of P.violations??[])for(let H of I.nodes??[])g.push({id:`axe-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let I of P.incomplete??[])for(let H of I.nodes??[])g.push({id:`axe-incomplete-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{_.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let M=Au(Lo(g).verdicts);try{M=await mg(b,M);}catch{}try{M=await hg(b,M);}catch{}try{M=await fg(b,M);}catch{}M=Za(M,p.level??"AA");let L=Lo(M),F=L.verdicts,D;if(p.judge)try{let T=Za([...Lo(g).undecided,...L.undecided],p.level??"AA"),E=await Fg(b,T,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(D=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(b,F,R);}catch{}return wu(R,await yu(b)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...D?{judged:D}:{},...m.length?{truncated:m}:{},..._.length?{engineWarnings:_}:{},summary:wg(F)}}/*! Bundled license information:
|
|
405
|
+
${JSON.stringify(d,null,1)}`}function OM(p,d={}){let b=p.vision&&p.items.some(_=>_.screenshot),g=b?d.visionModel||DM:d.textModel||_g,m=[{type:"text",text:LM(p)}];if(b)for(let _ of p.items)_.screenshot&&(m.push({type:"text",text:`Crop for ${_.id}:`}),m.push({type:"image_url",image_url:{url:`data:image/png;base64,${_.screenshot}`}}));return {model:g,temperature:0,max_tokens:4096,...g===_g&&d.disableTextModelReasoning?{reasoning:{enabled:false}}:{},messages:[{role:"system",content:MM},{role:"user",content:m}]}}function PM(p){let d=(p.baseUrl||xM).replace(/\/+$/,""),b=false;try{let g=new URL(d).hostname;b=g==="openrouter.ai"||g.endsWith(".openrouter.ai");}catch{}return async(g,m)=>{let _=await fetch(`${d}/chat/completions`,{method:"POST",signal:m,headers:{"Content-Type":"application/json",Authorization:`Bearer ${p.apiKey}`,"HTTP-Referer":"https://webability.io","X-Title":"WebAbility scanner judge"},body:JSON.stringify(OM(g,{visionModel:p.visionModel,textModel:p.textModel,disableTextModelReasoning:b}))});if(!_.ok)throw new Zn(`judge model HTTP ${_.status}`);let A=(await _.json()).choices?.[0]?.message?.content;if(typeof A=="string")return A;if(Array.isArray(A))return A.map(M=>typeof M?.text=="string"?M.text:"").join("");throw new Error("judge model returned no content")}}function NM(p){let d=p.apiUrl.replace(/\/+$/,"");return async(b,g)=>{let m=await fetch(`${d}/api/judge-incomplete`,{method:"POST",signal:g,redirect:"manual",headers:{"Content-Type":"application/json",...p.token?{Authorization:`Bearer ${p.token}`}:{},...p.internalSecret?{"x-mcp-internal":p.internalSecret}:{}},body:JSON.stringify(b)});if(m.status>=300&&m.status<400)throw new Zn(`judge endpoint redirected (HTTP ${m.status}); not followed`);if(!m.ok)throw new Zn(`judge endpoint HTTP ${m.status}`);return m.json()}}function qM(p){return p.transport?p.transport:p.apiKey?PM({apiKey:p.apiKey,baseUrl:p.baseUrl,visionModel:p.visionModel,textModel:p.textModel}):p.apiUrl?NM({apiUrl:p.apiUrl,token:p.apiToken,internalSecret:p.internalSecret}):null}function BM(p){return p.maxCropChars??(!p.transport&&!p.apiKey&&p.apiUrl?wM:void 0)}async function Fg(p,d,b){let g={promoted:[],judged:[]},m=qM(b);if(d.length===0)return g;let _=b.level??"AA",R=b.timeoutMs??bM,A=Date.now()+R,M=Za([...d],_);if(M.length===0)return g;let L=new Map;for(let h of M){let w=`${h.selector}|${Fu(h)}`,y=L.get(w);y?y.members.push(h):L.set(w,{key:w,members:[h],rep:h,ctx:void 0,kind:"generic"});}let F={elements:{}};if(p)try{await p.evaluate("if(typeof globalThis.__name==='undefined'){globalThis.__name=function(t){return t}}"),F=await p.evaluate(EM,{selectors:[...L.keys()].map(h=>L.get(h).rep.selector),maxHtml:Eg});}catch{}for(let h of L.values())h.ctx=F.elements[h.rep.selector],h.ctx&&!h.ctx.found&&(h.ctx=void 0),h.kind=CM(h.rep,h.ctx);let D=new Map;for(let[h,w]of [...L]){if(!w.ctx)continue;let y=`${w.ctx.elementKey}|${Fu(w.rep)}`,S=D.get(y);if(!S){D.set(y,w);continue}S.members.push(...w.members),L.delete(h);}let T={promoted:[],judged:[]},E=(h,w)=>{for(let y of h.members){if(w.verdict==="violation"){let S=VM(y,h,w);if(!S)continue;T.promoted.push(S);}T.judged.push({id:y.id.replace("axe-incomplete-","axe-"),type:y.type,verdict:w.verdict,reason:w.reason});}},P=[...L.values()].filter(h=>h.kind==="contrast");if(P.length&&p){for(let w of P)w.pixels=b.measured?.get(w.rep.selector);let h=P.filter(w=>!w.pixels).map(w=>w.rep.selector);if(h.length)try{for(let w of await xg(p,h))for(let y of P)y.rep.selector===w.selector&&(y.pixels=w);}catch{}}let I=[];for(let h of L.values()){let w=m?No.get(Sg(b.url,h.rep,h.ctx?.html??h.rep.html??"")):void 0;if(w){E(h,w);continue}let y=HM(h);if(y!=="drop"){if(y){E(h,y);continue}I.push(h);}}if(I.length===0||!m)return T;let H=b.vision!==false&&!!p&&typeof p.screenshot=="function",B=new Map,j=new Set,z=0,U=BM(b),Z=h=>({id:h.rep.id,type:h.rep.type,wcag:h.rep.wcag,message:h.rep.message,selector:h.rep.selector,html:(h.ctx?.html??h.rep.html??"").slice(0,Eg),context:j.has(h.key)?{...kg(h),cropNote:"no image attached: the crop was too large to send"}:kg(h),...B.has(h.key)?{screenshot:B.get(h.key)}:{}}),C=H?vM:gM;for(let h=0;h<I.length;h+=C){let w=A-Date.now();if(w<=0)break;let y=I.slice(h,h+C);if(H){for(let ee of y){if(z>=yM||Date.now()>A)break;let ie=await zM(p,ee.ctx,U);ie&&(z++,ie.data?B.set(ee.key,ie.data):j.add(ee.key));}if(Date.now()>A)break}let S=new Map(y.map(ee=>[ee.rep.id,ee])),O=new AbortController,q=setTimeout(()=>O.abort(),w),G=null,J=false,te=Date.now();try{let ee=await Promise.race([m({url:b.url,level:_,vision:H,items:y.map(Z)},O.signal),new Promise((ie,pe)=>O.signal.addEventListener("abort",()=>pe(new Error("judge deadline"))))]);G=IM(ee),Iu()&&console.error(`ai judge: batch ${y.length} items, ${y.filter(ie=>B.has(ie.key)).length} crops, ${Date.now()-te}ms, ${G?G.length+" verdicts":"MALFORMED: "+String(ee).slice(0,200)}`);}catch(ee){Iu()&&console.error(`ai judge: batch ${y.length} items failed after ${Date.now()-te}ms: ${ee.message}`),G=null,J=ee instanceof Zn;}finally{clearTimeout(q);}if(!G){if(O.signal.aborted||J)break;continue}for(let ee of G){let ie=S.get(ee.id);if(!ie)continue;S.delete(ee.id);let pe={verdict:ee.verdict,reason:kM(ee.reason),fix:ee.fix};No.size>=AM&&No.clear(),No.set(Sg(b.url,ie.rep,ie.ctx?.html??ie.rep.html??""),pe),E(ie,pe);}}return T}function HM(p){let d=p.ctx;if(p.kind==="alt"){if(d?.role==="presentation"||d?.role==="none")return {verdict:"pass",reason:"declared decorative (role=presentation)"};if(d?.ariaHidden)return {verdict:"pass",reason:"hidden from assistive technology (aria-hidden)"};if(d?.img){let{attrW:b,attrH:g,naturalW:m,naturalH:_}=d.img;if(b>0&&b<=1&&g>0&&g<=1||m>0&&m<=1&&_>0&&_<=1)return {verdict:"pass",reason:"1x1 tracking/spacer pixel"}}return d&&Mu(d)?d.control?d.control.name?{verdict:"pass",reason:`${d.control.tag} is named ("${d.control.name.slice(0,40)}"); the background image needs no text`}:null:{verdict:"pass",reason:"CSS background image on a non-interactive element; decorative"}:d?.parentInteractive?.text?{verdict:"pass",reason:`${d.parentInteractive.tag} is named by its visible link text ("${d.parentInteractive.text.slice(0,40)}"); alt may be empty`}:null}if(p.kind==="motion")return d?.reducedMotionHandled?{verdict:"pass",reason:"a prefers-reduced-motion: reduce rule stops this element's animation"}:null;if(p.kind==="contrast"){if(!p.pixels)return "drop";let b=Lu(p.rep,p.pixels.threshold);return p.pixels.worstRatio>=b?{verdict:"pass",reason:`measured ${p.pixels.worstRatio.toFixed(2)}:1 at worst behind the text, meets ${b}:1`}:p.pixels.bestRatio<b*.97?{verdict:"violation",reason:`measured ${p.pixels.bestRatio.toFixed(2)}:1 at best behind the text, below ${b}:1 everywhere`}:null}return null}function kg(p){let d=p.ctx,b={};return p.rep.reviewReason&&(b.engineNote=p.rep.reviewReason),d&&(b.tag=d.tag,d.nearText&&(b.nearbyText=d.nearText),d.parentInteractive&&(b.parentControl=d.parentInteractive),p.kind==="alt"&&Mu(d)&&d.control&&(b.control={tag:d.control.tag,accessibleName:d.control.name}),p.kind==="alt"&&d.img&&(b.image={src:d.img.src,alt:d.img.alt,width:d.img.naturalW||d.img.attrW||d.rect.w,height:d.img.naturalH||d.img.attrH||d.rect.h}),p.kind==="contrast"&&p.pixels&&(b.fg=Jn(p.pixels.fg),b.threshold=Lu(p.rep,p.pixels.threshold),b.bestRatio=Tg(p.pixels.bestRatio),b.worstRatio=Tg(p.pixels.worstRatio),b.fontSize=d.fontSize,b.fontWeight=d.fontWeight),p.kind==="generic"&&(b.fg=Jn(d.fg),b.bg=Jn(d.bg),b.size={w:Math.round(d.rect.w),h:Math.round(d.rect.h)})),b}function Lu(p,d){return p.wcag==="1.4.6"||p.type==="contrast_enhanced"?d===3?4.5:7:d}var Tg=p=>Math.round(p*100)/100;function VM(p,d,b){let g=FM(p);if(d.kind==="alt"){let _=TM(b.fix?.value);return _?Mu(d.ctx)?{...g,fix:{attribute:"aria-label",currentValue:"",suggestedValue:_,needsManualReview:false}}:{...g,fix:{attribute:"alt",currentValue:d.ctx?.img?.alt??p.fix?.currentValue??"",suggestedValue:_,needsManualReview:false}}:null}if(d.kind==="contrast"){let _=d.pixels;if(!_)return null;let R=Jn(_.fg),A=Lu(p,_.threshold),M=_.worstBg?Jn(_.worstBg):null,L=_.bestBg?Jn(_.bestBg):null,F=P=>!!P&&!!M&&Sn(P,M)>=A&&(!L||Sn(P,L)>=A),D,T=RM(b.fix?.value),E=M?jM(R,M,A):null;return T&&T!==R.toLowerCase()&&F(T)?D=`color:${T} !important;`:F(E)?D=`color:${E} !important;`:L&&Sn(R,L)>=A&&(D=`background-color:${L} !important;`),{...g,impact:"serious",message:`contrast: ${R} text on its rendered background measures ${_.worstRatio.toFixed(2)}:1 at worst (${_.bestRatio.toFixed(2)}:1 at best, from pixels; judge: ${b.reason||"not readable"}), needs ${A}:1`,fix:{attribute:"style",currentValue:R,...D?{suggestedValue:D}:{},needsManualReview:true}}}let m=p.fix;return m?{...g,fix:m}:b.fix?.attribute&&b.fix.value?{...g,fix:{attribute:b.fix.attribute,currentValue:"",suggestedValue:b.fix.value,needsManualReview:true}}:g}function jM(p,d,b){let g=p.match(Rg);if(!g)return null;let m=parseInt(g[1],16),_=[m>>16&255,m>>8&255,m&255],R=L=>"#"+L.map(F=>Math.round(Math.min(255,Math.max(0,F))).toString(16).padStart(2,"0")).join(""),A=(L,F)=>R(_.map(D=>F?D*(1-L):D+(255-D)*L)),M=null;for(let L of [true,false]){if(Sn(A(1,L),d)<b)continue;let F=0,D=1;for(let E=0;E<24;E++){let P=(F+D)/2;Sn(A(P,L),d)>=b?D=P:F=P;}let T=A(D,L);Sn(T,d)>=b&&(!M||D<M.t)&&(M={t:D,hex:T});}return M?.hex??null}var $M=[1,.6,.35];async function zM(p,d,b){let g=p.screenshot;if(typeof g!="function"||!d||d.rect.w<2||d.rect.h<2||d.hidden)return null;try{let _=Math.min(1200,d.rect.w+16),R=Math.min(600,d.rect.h+16),A=d.rect.x+d.rect.w/2,M=d.rect.y+d.rect.h/2,L=globalThis.Buffer;if(!L)return null;let F=0;for(let D of b===void 0?[1]:$M){let T=Math.max(2,Math.round(_*D)),E=Math.max(2,Math.round(R*D)),P=D===1?Math.max(0,d.rect.x-8):Math.max(0,A-T/2),I=D===1?Math.max(0,d.rect.y-8):Math.max(0,M-E/2),H=await g.call(p,{clip:{x:P,y:I,width:T,height:E},fullPage:!0,type:"png",animations:"disabled"}),B=L.from(H).toString("base64");if(F=B.length,b===void 0||B.length<=b)return {data:B}}return Iu()&&console.error(`ai judge: crop for ${d.tag} left out (${F} base64 chars > ${b} at the smallest clip)`),{}}catch{return null}}function Ig(p=globalThis){if(p.__waDomKernelInstalled)return;function g(y){try{return document.querySelectorAll(y).length===1}catch{return false}}function m(y){if(!y||/^_?[Rr]_[a-z0-9]+_/.test(y)||/^:[Rr][0-9a-z]+:/.test(y)||/^«[Rr][0-9a-z]+»/.test(y)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(y)||/^[\w-]*(react|gatsby|root|__next|hash|uuid)[\w-]*$/i.test(y)||/^(radix|headlessui|mui|mantine|cdk|ng|ember|downshift|react-select|react-aria|floating-ui)[-_:]/i.test(y)||/[0-9a-f]{16,}/i.test(y))return true;for(var S=y.split(/[-_:.]/).filter(Boolean),O=S.some(function(ee){var ie=(ee.match(/[a-z]/gi)||[]).length,pe=(ee.match(/[aeiou]/gi)||[]).length;return ie>=4&&pe>=1&&!/\d/.test(ee)}),q=0;q<S.length;q++){var G=S[q];if(!O&&/^\d{7,}$/.test(G)||/^[0-9a-f]{13}$/i.test(G)&&/[a-f]/i.test(G)&&/\d/.test(G))return true;if(G.length>=7&&/\d/.test(G)&&/[a-z]/i.test(G)){var J=(G.match(/[aeiou]/gi)||[]).length,te=(G.match(/[a-z]/gi)||[]).length;if(te>=4&&J/te<.2||(G.match(/\d[a-z]|[a-z]\d/gi)||[]).length>=4)return true}}return false}function _(y){if(!y.classList||!y.classList.length)return [];for(var S=[],O=0;O<y.classList.length&&S.length<3;O++){var q=y.classList[O];q&&(/^(active|open|focus|hover|disabled|selected|hidden|sr-only|css-[a-z0-9]{4,}|jss[0-9]+|sc-[a-z0-9]+|[a-z]+-[a-f0-9]{6,}|_\d|chakra-|MuiBox-|MuiButton-)$/i.test(q)||/^[a-z][a-z0-9_-]{1,40}$/i.test(q)&&S.push(q));}return S}function R(y){var S=y.tagName.toLowerCase(),O=_(y);return O.length?S+"."+O.map(function(q){return CSS.escape(q)}).join("."):S}function A(y){var S=y.tagName.toLowerCase();if(!y.parentElement)return S;var O=Array.from(y.parentElement.children).filter(function(q){return q.tagName===y.tagName});return O.length===1?S:S+":nth-of-type("+(O.indexOf(y)+1)+")"}function M(y){for(var S=[],O=y;O&&O!==document.body&&O!==document.documentElement;)S.unshift(A(O)),O=O.parentElement;return S.join(" > ")}function L(y){if(!y||y===document.body||y===document.documentElement)return "body";var S=y.getAttribute?y.getAttribute("id"):null;if(S&&!m(S)){var O="#"+CSS.escape(S);if(g(O))return O}for(var q=["data-testid","data-cy","data-qa","data-test","data-component","data-id","data-key"],G=0;G<q.length;G++){var J=y.getAttribute(q[G]);if(J&&J.length<60){var te=y.tagName.toLowerCase()+"["+q[G]+'="'+CSS.escape(J)+'"]';if(g(te))return te}}var ee=R(y);if(ee.indexOf(".")!==-1&&g(ee))return ee;for(var ie=[],pe=null,de=y;de&&de!==document.body&&de!==document.documentElement;){var Ce=de.getAttribute?de.getAttribute("id"):null;if(Ce&&!m(Ce)){var De="#"+CSS.escape(Ce);if(g(De)){pe=De;break}}var Pe=R(de);if(Pe.indexOf(".")!==-1&&g(Pe)){pe=Pe;break}if(ie.unshift(de),de=de.parentElement,ie.length>6)break}var xe=ie.map(function(vt){var Ne=R(vt);if(Ne.indexOf(".")!==-1&&vt.parentElement){var Ct=vt.parentElement.querySelectorAll(":scope > "+Ne);if(Ct.length===1)return "> "+Ne}return "> "+A(vt)}).join(" "),Ee="";if(pe&&xe?Ee=(pe+" "+xe).slice(0,200):pe&&(Ee=pe),Ee&&g(Ee))return Ee;var pt=M(y);return pt&&g(pt)?pt:Ee||pt||R(y)}function F(y){if(!y)return false;let S=getComputedStyle(y);if(S.display==="none"||S.visibility==="hidden")return false;let O=parseFloat(S.opacity);if(!isNaN(O)&&O<.1)return false;if(!isNaN(O)&&O<.5){var q=S.transform||"";if(q&&q!=="none"&&q!=="matrix(1, 0, 0, 1, 0, 0)")return false}let G=y.getBoundingClientRect();if(G.width<=1||G.height<=1)return false;var J=S.clipPath||"";return !(J!=="none"&&/inset\(\s*(?:50|100)%/.test(J)||/rect\(\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*,?\s*0(?:px)?\s*\)/.test(S.clip||""))}function D(y){if(!y)return "";for(var S=[],O=String(y).trim().split(/\s+/),q=0;q<O.length;q++){var G=document.getElementById(O[q]);if(G){var J=(G.textContent||"").trim();J&&S.push(J);}}return S.join(" ").replace(/\s+/g," ").trim()}function T(y){var S=D(y.getAttribute("aria-labelledby"));if(S)return S;var O=y.getAttribute("aria-label")||"";if(O.trim())return O.trim();var q=y.tagName?y.tagName.toLowerCase():"";if(q==="input"||q==="select"||q==="textarea"){var G=y.getAttribute("id");if(G)try{var J=document.querySelector('label[for="'+CSS.escape(G)+'"]');if(J&&(J.textContent||"").trim())return (J.textContent||"").trim().replace(/\s+/g," ")}catch{}var te=y.closest?y.closest("label"):null;if(te&&(te.textContent||"").trim())return (te.textContent||"").trim().replace(/\s+/g," ")}var ee=(y.textContent||"").trim().replace(/\s+/g," ");if(!ee&&y.querySelector){var ie=y.querySelector('img[alt]:not([alt=""])');if(ie&&(ee=(ie.getAttribute("alt")||"").trim()),!ee){var pe=y.querySelector("svg > title");pe&&(ee=(pe.textContent||"").trim());}}if(ee)return ee;var de=y.getAttribute("title")||"";return de.trim()}var E="[class*=asw-],[class*=userway],[class*=acsb],[class*=audioeye],[class*=EquallyAI],[id*=ae_],[class*=ae-exclude],[id*=goog-gt],[class*=goog-te],[id*=recaptcha],[class*=intercom],[class*=drift-],[class*=crisp-],[class*=tawk-],[class*=hubspot-],[class*=fb-],[class*=wistia],#wpadminbar,[class*=cmplz-btn],[class*=cmplz-link],[id*=cmplz-],[class*=onetrust],[class*=cookiebot],[class*=borlabs],[class*=brlbs-],[id*=wp-ada-compliance],[class*=wp-ada-compliance],[id*=webability-widget],[class*=webability-a11y]";function P(y){return y?y.closest(E)!==null:false}function I(y){if(!y)return false;if(y.getAttribute("aria-hidden")==="true"||y.getAttribute("role")==="presentation"||y.getAttribute("role")==="none")return true;let S=y.parentElement,O=0;for(;S&&S!==document.body&&O<6;){if(S.getAttribute("aria-hidden")==="true")return true;S=S.parentElement,O++;}return false}function H(y){let S=y.naturalWidth||y.width||0,O=y.naturalHeight||y.height||0;if(S<=2&&O<=2)return true;let q=y.getBoundingClientRect();if(q.width<=2&&q.height<=2)return true;let G=(y.src||"").toLowerCase();return !!(G.includes("pixel")||G.includes("beacon")||G.includes("tracker")||G.includes("analytics")||G.includes("adsrvr")||G.includes("doubleclick")||G.includes("facebook.com/tr"))}function B(y){var S=y.closest("article,section,li,.card,[class*=card],[class*=post],[class*=item],[class*=product],[class*=entry]");S||(S=y.closest("div,nav,main,aside,header,footer"));var O=S?S.querySelector("h1,h2,h3,h4,h5,h6"):null,q=O?(O.textContent||"").trim().slice(0,80):"",G=y.parentElement,J=G?G.tagName.toLowerCase():"",te=G&&G.getAttribute("role")||"",ee="";if(S){var ie=S.querySelector("p,.description,.excerpt,[class*=desc],[class*=summary]");ie&&(ee=(ie.textContent||"").trim().slice(0,120));}var pe="";if(S){var de=S.querySelector('img[alt]:not([alt=""])');de&&(pe=(de.getAttribute("alt")||"").trim().slice(0,60));}return {nearbyHeading:q,parentTag:J,parentRole:te,cardText:ee,imgAlt:pe}}var j={times:"Close",x:"Close","x-lg":"Close","x-circle":"Close","x-mark":"Close",close:"Close","close-circle":"Close",clear:"Clear",cancel:"Cancel",dismiss:"Dismiss","chevron-right":"Next","arrow-right":"Next","caret-right":"Next","angle-right":"Next","chevron-left":"Previous","arrow-left":"Previous","caret-left":"Previous","angle-left":"Previous","chevron-up":"Collapse","arrow-up":"Up","caret-up":"Collapse","angle-up":"Collapse","chevron-down":"Expand","arrow-down":"Down","caret-down":"Expand","angle-down":"Expand",menu:"Menu",bars:"Menu",hamburger:"Menu",list:"Menu",grid:"Grid view",th:"Grid view",search:"Search","magnifying-glass":"Search",magnify:"Search",zoom:"Zoom",user:"User profile",person:"User profile",profile:"User profile","account-circle":"User profile",cart:"Shopping cart","shopping-cart":"Shopping cart",basket:"Shopping cart",bag:"Shopping bag",heart:"Favorite",bookmark:"Bookmark",star:"Rate",home:"Home",house:"Home",gear:"Settings",cog:"Settings",settings:"Settings",tool:"Tools",trash:"Delete","trash-can":"Delete",delete:"Delete",edit:"Edit",pencil:"Edit",pen:"Edit",plus:"Add",add:"Add","plus-circle":"Add",minus:"Remove","minus-circle":"Remove",check:"Confirm","check-circle":"Confirm",checkmark:"Confirm",info:"Information","info-circle":"Information",question:"Help","question-circle":"Help",help:"Help",warning:"Warning",exclamation:"Warning","exclamation-triangle":"Warning",alert:"Alert","external-link":"Open in new tab","external-link-alt":"Open in new tab","box-arrow-up-right":"Open in new tab",download:"Download",upload:"Upload",share:"Share","share-alt":"Share",copy:"Copy",clipboard:"Copy to clipboard",print:"Print",save:"Save",envelope:"Email",email:"Email",mail:"Email",at:"Email",phone:"Phone",telephone:"Phone",mobile:"Mobile phone",location:"Location","map-marker":"Location","map-pin":"Location","geo-alt":"Location",calendar:"Calendar","calendar-alt":"Calendar",clock:"Time",stopwatch:"Timer",eye:"Show","eye-slash":"Hide","eye-off":"Hide",lock:"Lock",unlock:"Unlock",padlock:"Lock",filter:"Filter",sliders:"Adjust",sort:"Sort","sort-alpha-down":"Sort ascending","sort-alpha-up":"Sort descending",refresh:"Refresh",reload:"Refresh",sync:"Refresh","arrows-rotate":"Refresh",play:"Play","play-circle":"Play",pause:"Pause",stop:"Stop","volume-up":"Volume up","volume-down":"Volume down","volume-mute":"Mute",mute:"Mute",speaker:"Audio",twitter:"Twitter","x-twitter":"X (Twitter)","square-x-twitter":"X (Twitter)",facebook:"Facebook","facebook-f":"Facebook","facebook-square":"Facebook","square-facebook":"Facebook","facebook-messenger":"Facebook Messenger",instagram:"Instagram","square-instagram":"Instagram",linkedin:"LinkedIn","linkedin-in":"LinkedIn","square-linkedin":"LinkedIn",youtube:"YouTube","youtube-square":"YouTube","square-youtube":"YouTube",github:"GitHub","github-alt":"GitHub",gitlab:"GitLab",bitbucket:"Bitbucket",tiktok:"TikTok",pinterest:"Pinterest","pinterest-p":"Pinterest","square-pinterest":"Pinterest",rss:"RSS feed","rss-square":"RSS feed",snapchat:"Snapchat","snapchat-ghost":"Snapchat",reddit:"Reddit","reddit-alien":"Reddit",discord:"Discord",slack:"Slack",whatsapp:"WhatsApp",telegram:"Telegram","telegram-plane":"Telegram",vimeo:"Vimeo","vimeo-v":"Vimeo",twitch:"Twitch",tumblr:"Tumblr",medium:"Medium",dribbble:"Dribbble",behance:"Behance",flickr:"Flickr",threads:"Threads",mastodon:"Mastodon",bluesky:"Bluesky",meetup:"Meetup",weibo:"Weibo",wechat:"WeChat",line:"Line",viber:"Viber",skype:"Skype",microsoft:"Microsoft",apple:"Apple",google:"Google","google-plus":"Google+",yelp:"Yelp",tripadvisor:"TripAdvisor",spotify:"Spotify",soundcloud:"SoundCloud",amazon:"Amazon",etsy:"Etsy",ebay:"eBay","arrow-up-right-from-square":"Open in new tab","square-arrow-up-right":"Open in new tab","up-right-from-square":"Open in new tab",back:"Back",forward:"Forward",return:"Return",reply:"Reply","reply-all":"Reply all","forward-arrow":"Forward",redo:"Redo",undo:"Undo","undo-alt":"Undo","rotate-left":"Undo","rotate-right":"Redo",expand:"Expand","expand-arrows-alt":"Expand",compress:"Collapse",minimize:"Minimize",maximize:"Maximize",fullscreen:"Enter fullscreen","fullscreen-exit":"Exit fullscreen",move:"Move",arrows:"Move","arrows-alt":"Move",drag:"Drag",grip:"Drag handle","grip-vertical":"Drag handle","grip-lines":"Drag handle",ellipsis:"More actions","ellipsis-v":"More actions","ellipsis-vertical":"More actions","ellipsis-h":"More actions","ellipsis-horizontal":"More actions","more-vert":"More actions","more-horiz":"More actions","more-vertical":"More actions","more-horizontal":"More actions","dots-vertical":"More actions","three-dots":"More actions","three-dots-vertical":"More actions","play-fill":"Play","pause-fill":"Pause","stop-fill":"Stop","play-pause":"Play/pause",backward:"Rewind","forward-step":"Next track","backward-step":"Previous track","fast-forward":"Fast forward",rewind:"Rewind","skip-forward":"Skip forward","skip-backward":"Skip backward","skip-next":"Next track","skip-previous":"Previous track",volume:"Volume","volume-off":"Mute","volume-x":"Mute","speaker-mute":"Mute",headphones:"Audio",microphone:"Microphone",mic:"Microphone","mic-off":"Mute microphone","microphone-slash":"Mute microphone",video:"Video","video-camera":"Video",camera:"Camera","camera-retro":"Camera",picture:"Picture",image:"Image",images:"Images",photo:"Photo",film:"Video",record:"Record",broadcast:"Broadcast","chevron-right-circle":"Next","chevron-left-circle":"Previous","double-arrow-right":"Next","double-arrow-left":"Previous","angles-right":"Next","angles-left":"Previous","angles-up":"Collapse","angles-down":"Expand",send:"Send","paper-plane":"Send",submit:"Submit",paperclip:"Attach file",attach:"Attach","file-attachment":"Attach file",signature:"Signature","pen-to-square":"Edit","pencil-square":"Edit","pencil-alt":"Edit","square-pen":"Edit",file:"File","file-alt":"Text file","file-text":"Text file","file-lines":"Text file","file-pdf":"PDF document","file-word":"Word document","file-excel":"Excel spreadsheet","file-powerpoint":"PowerPoint presentation","file-zip":"ZIP archive","file-archive":"Archive","file-image":"Image file","file-video":"Video file","file-audio":"Audio file","file-code":"Code file","file-csv":"CSV file",folder:"Folder","folder-open":"Open folder",book:"Book","book-open":"Book",newspaper:"News","bookmark-fill":"Bookmark","cart-plus":"Add to cart","cart-check":"Added to cart","cart-arrow-down":"Add to cart",truck:"Shipping",box:"Package",gift:"Gift",tag:"Tag",tags:"Tags",percent:"Discount","credit-card":"Credit card",wallet:"Wallet",money:"Money","money-bill":"Money","dollar-sign":"Price","euro-sign":"Price","pound-sign":"Price",receipt:"Receipt",store:"Store",shop:"Shop","basket-plus":"Add to basket","heart-fill":"Favorited","star-fill":"Rated","thumbs-up":"Like","thumbs-down":"Dislike",like:"Like",dislike:"Dislike",comment:"Comment",comments:"Comments",chat:"Chat","chat-bubble":"Chat",message:"Message","message-circle":"Message","message-square":"Message",bell:"Notifications","bell-fill":"Notifications",notifications:"Notifications",inbox:"Inbox",archive:"Archive",flag:"Flag",pin:"Pin","pin-fill":"Pinned",thumbtack:"Pin","sign-in":"Sign in","sign-in-alt":"Sign in","sign-out":"Sign out","sign-out-alt":"Sign out","log-in":"Log in","log-out":"Log out",logout:"Log out",login:"Log in","user-plus":"Add user","user-minus":"Remove user","user-circle":"User profile","user-avatar":"User avatar",users:"Users",key:"Password",shield:"Security","shield-check":"Security verified","id-card":"ID card","id-badge":"ID badge","universal-access":"Accessibility","accessible-icon":"Accessibility",wheelchair:"Wheelchair access",braille:"Braille","sign-language":"Sign language","closed-captioning":"Captions",cc:"Captions",sun:"Light mode",moon:"Dark mode",contrast:"Contrast",palette:"Theme",brush:"Theme",globe:"Global",earth:"Global",map:"Map",compass:"Compass",directions:"Directions",route:"Route",navigation:"Navigation",crosshairs:"Locate",spinner:"Loading",loader:"Loading",loading:"Loading","circle-notch":"Loading",hourglass:"Waiting","clock-fill":"Time","check-square":"Confirm","square-check":"Confirm","circle-check":"Confirm","circle-x":"Close",ban:"Blocked",block:"Block","times-circle":"Close",xmark:"Close","xmark-circle":"Close",columns:"Columns view",rows:"Rows view",layout:"Layout",sidebar:"Sidebar","sidebar-toggle":"Toggle sidebar","panel-left":"Left panel","panel-right":"Right panel","list-view":"List view","grid-view":"Grid view",wifi:"Wi-Fi","wifi-off":"Wi-Fi off",bluetooth:"Bluetooth",signal:"Signal",battery:"Battery","battery-full":"Battery full",plug:"Plug",power:"Power","power-off":"Power off","chart-bar":"Bar chart","chart-line":"Line chart","chart-pie":"Pie chart","chart-area":"Area chart","bar-chart":"Bar chart","line-chart":"Line chart","pie-chart":"Pie chart",analytics:"Analytics",statistics:"Statistics","trending-up":"Trending up","trending-down":"Trending down"},z=/^(fa|fas|far|fab|fal|fad|fass|bi|bi-icon|material-icons|material-symbols|ion|ionicon|feather|lucide|dashicons|glyphicon|icofont|heroicon)-/;function U(y,S,O){var q=[];if(y)for(var G=y.split(/\s+/),J=0;J<G.length;J++){var te=G[J];if(te){var ee=te.toLowerCase().replace(z,"").replace(/^icon-/,"");ee&&ee!==te.toLowerCase()&&q.push(ee);}}if(S&&q.push(S.toLowerCase().trim()),O){var ie=O.trim().toLowerCase();ie.length<30&&/^[a-z_-]+$/.test(ie)&&q.push(ie.replace(/_/g,"-"));}for(var pe=0;pe<q.length;pe++)if(j[q[pe]])return j[q[pe]];for(var de=0;de<q.length;de++)for(var Ce=q[de].split("-"),De=0;De<Ce.length;De++)if(j[Ce[De]])return j[Ce[De]];return null}var Z;function C(y){if(!y)return null;var S=y.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);if(S)return [parseInt(S[1],10),parseInt(S[2],10),parseInt(S[3],10),S[4]?parseFloat(S[4]):1];if(y==="transparent"||y==="none")return [0,0,0,0];try{if(Z===void 0){var O=document.createElement("canvas");O.width=1,O.height=1,Z=O.getContext("2d",{willReadFrequently:!0});}if(!Z)return null;Z.clearRect(0,0,1,1),Z.fillStyle="#000000",Z.fillStyle=y,Z.fillRect(0,0,1,1);var q=Z.getImageData(0,0,1,1).data;return [q[0],q[1],q[2],q[3]/255]}catch{return null}}function h(y,S,O){var q=function(G){var J=G/255;return J<=.03928?J/12.92:Math.pow((J+.055)/1.055,2.4)};return .2126*q(y)+.7152*q(S)+.0722*q(O)}function w(y,S){var O=h(y[0],y[1],y[2]),q=h(S[0],S[1],S[2]),G=Math.max(O,q),J=Math.min(O,q);return (G+.05)/(J+.05)}Object.assign(p,{__isUnique:g,__isGeneratedId:m,__cleanClasses:_,__tagWithClass:R,__nthSelector:A,__fullPath:M,uniqueSel:L,isVisible:F,__resolveIdRefs:D,getAccessibleName:T,WIDGET_SKIP:E,isWidget:P,isHiddenFromAT:I,isTrackingPixel:H,getNearbyContext:B,__ICON_LABELS:j,__ICON_PREFIX_STRIP:z,lookupIconLabel:U,__colorCtx:Z,parseCssColor:C,relLuminance:h,contrastRatio:w}),p.__waDomKernelInstalled=true;}var Mg="1.17.0";function GM(p){return {async evaluate(d,...b){if(typeof d!="function")throw new Error("string evaluate not supported in DOM mode");return await d(...b)},async addScriptTag(){},url:()=>p.location.href}}async function uP(p={}){let d=p.window??globalThis;if(typeof d.document>"u")throw new Error("scanDocument requires a DOM (window.document)");Ig(d);let b=GM(d),g=[],m=[],_=[],R=[];await bu(b);let A=await dg(b,m,_,{skipFocusMutating:p.interactiveChecks!==true,internalBugs:R,experimental:p.experimental});if(g.push(...A.map(yg)),p.includeAxe!==false)try{let T=await Promise.resolve().then(()=>k3(Og(),1)),P=await(T.default??T).run(d.document,{runOnly:{type:"tag",values:Eu(p.wcagTags??_u,p.level)},rules:vg(Eu(p.wcagTags??_u,p.level)),resultTypes:["violations","incomplete"]});for(let I of P.violations??[])for(let H of I.nodes??[])g.push({id:`axe-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300)});for(let I of P.incomplete??[])for(let H of I.nodes??[])g.push({id:`axe-incomplete-${I.id}-${Oo(Qa(H.target))}`,source:"axe-core",type:I.id,wcag:Su(I.tags),level:ku(I.tags),impact:Cu(I.impact),message:I.help,selector:Qa(H.target),html:H.html?.slice(0,300),confidence:"needs_review",reviewReason:"axe-core flagged this as needing human review"});}catch{_.push("axe:failed \u2014 axe-core did not complete; results are detector-only");}let M=Au(Lo(g).verdicts);try{M=await mg(b,M);}catch{}try{M=await hg(b,M);}catch{}try{M=await fg(b,M);}catch{}M=Za(M,p.level??"AA");let L=Lo(M),F=L.verdicts,D;if(p.judge)try{let T=Za([...Lo(g).undecided,...L.undecided],p.level??"AA"),E=await Fg(b,T,{...p.judge,url:d.location.href,level:p.judge.level??p.level??"AA",vision:!1});E.judged.length&&(D=E.judged),E.promoted.length&&(F=Au([...F,...E.promoted]));}catch{}try{F=await xu(b,F,R);}catch{}return wu(R,await yu(b)),{url:d.location.href,timestamp:new Date().toISOString(),engine:Mg,issues:F,internal_bugs:R,incomplete:[],...D?{judged:D}:{},...m.length?{truncated:m}:{},..._.length?{engineWarnings:_}:{},summary:wg(F)}}/*! Bundled license information:
|
|
406
406
|
|
|
407
407
|
axe-core/axe.js:
|
|
408
408
|
(*! axe v4.11.3
|