1(()=>{(function(){"use strict";var m=document.getElementById("darkModeToggle"),l=document.getElementById("themeIcon");function h(){if(l){var e=document.documentElement.getAttribute("data-bs-theme");e==="dark"?l.className="fa-solid fa-moon":l.className="fa-solid fa-sun"}}m&&(h(),m.addEventListener("click",function(){var e=document.documentElement.getAttribute("data-bs-theme"),t=e==="dark"?"light":"dark";document.documentElement.setAttribute("data-bs-theme",t),localStorage.setItem("theme",t),h()})),document.addEventListener("click",function(e){var t=e.target.closest("[data-toggle-target]");if(t){var r=t.getAttribute("data-toggle-target"),n=document.getElementById(r);n&&n.classList.toggle("show")}});var p=document.getElementById("pubSearch");p&&p.addEventListener("input",function(){var e=this.value.toLowerCase().trim(),t=document.querySelectorAll("[data-pub-searchable]");t.forEach(function(r){if(!e){r.style.display="";return}var n=r.textContent.toLowerCase();r.style.display=n.includes(e)?"":"none"})}),document.querySelectorAll(".pub-collapse").forEach(function(e){if(!(!e.id||!e.id.startsWith("bib-"))){var t=e.querySelector("pre");if(t){var r=document.createElement("div");r.className="copy-wrapper",r.style.position="relative";var n=document.createElement("button");n.className="copy-btn",n.innerHTML='<i class="fa-regular fa-copy"></i>',n.title="Copy to clipboard",n.addEventListener("click",function(){navigator.clipboard.writeText(t.textContent.trim()).then(function(){n.innerHTML='<i class="fa-solid fa-check"></i>',n.classList.add("copied"),setTimeout(function(){n.innerHTML='<i class="fa-regular fa-copy"></i>',n.classList.remove("copied")},2e3)})}),t.parentNode.insertBefore(r,t),r.appendChild(t),r.appendChild(n)}}}),document.querySelectorAll(".pub-entry").forEach(function(e){var t=e.textContent,r=t.match(/\((\d{4})\)/);if(r){var n=document.createElement("span");n.className="year-badge",n.textContent=r[1],e.insertBefore(n,e.firstChild)}});var i=document.createElement("button");i.className="back-to-top",i.innerHTML='<i class="fa-solid fa-arrow-up"></i>',i.setAttribute("aria-label","Back to top"),document.body.appendChild(i),i.addEventListener("click",function(){window.scrollTo({top:0,behavior:"smooth"})}),window.addEventListener("scroll",function(){window.scrollY>400?i.classList.add("visible"):i.classList.remove("visible")},{passive:!0});var u=document.querySelector(".navbar");u&&window.addEventListener("scroll",function(){window.scrollY>10?u.classList.add("scrolled"):u.classList.remove("scrolled")},{passive:!0});var d=document.querySelectorAll(".fade-in-section");if(d.length>0&&"IntersectionObserver"in window){var g=new IntersectionObserver(function(e){e.forEach(function(t){t.isIntersecting&&(t.target.classList.add("visible"),g.unobserve(t.target))})},{threshold:.1,rootMargin:"0px 0px -40px 0px"});d.forEach(function(e){g.observe(e)})}else d.forEach(function(e){e.classList.add("visible")});var L=document.getElementById("searchToggle"),a=document.getElementById("searchOverlay"),c=document.getElementById("searchInput"),o=document.getElementById("searchResults"),f=null;function E(){a&&(a.classList.add("open"),setTimeout(function(){c.focus()},100))}function v(){a&&(a.classList.remove("open"),c.value="",o.innerHTML="")}L&&L.addEventListener("click",E),a&&a.addEventListener("click",function(e){e.target===a&&v()}),document.addEventListener("keydown",function(e){e.key==="Escape"&&a&&a.classList.contains("open")&&v(),(e.metaKey||e.ctrlKey)&&e.key==="k"&&(e.preventDefault(),a&&a.classList.contains("open")?v():E())});function y(e){if(f){e(f);return}fetch("/assets/search.json").then(function(t){return t.json()}).then(function(t){f=t,e(t)}).catch(function(){o.innerHTML='<div class="search-no-results">Could not load search index.</div>'})}function w(e,t){if(!e){o.innerHTML="";return}var r=e.toLowerCase(),n=t.filter(function(s){return s.title.toLowerCase().includes(r)||s.content.toLowerCase().includes(r)});if(n.length===0){o.innerHTML='<div class="search-no-results">No results for "'+e+'"</div>';return}o.innerHTML=n.map(function(s){var I=s.content.substring(0,150).trim()+"...";return'<a href="'+s.url+'" class="search-result-item"><div class="search-result-title">'+s.title+'</div><div class="search-result-snippet">
1'+I+"</div></a>"}).join("")}if(c){var b;c.addEventListener("input",function(){var e=this.value.trim();clearTimeout(b),b=setTimeout(function(){y(function(t){w(e,t)})},150)})}})();})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.