1(function(){"use strict";function G(M,i){const s=new Map,t=(e,c,m)=>`${e}|${c}|${m}`;for(const e of M){const c=Math.floor(e.position.x/i),m=Math.floor(e.position.y/i),f=Math.floor(e.position.z/i),p=t(c,m,f);let n=s.get(p);n||(n={ids:[]},s.set(p,n)),n.ids.push(e.id)}return{grid:s,toCellKey:t}}let _=0,w=null,j=[],y=new Map,k=new Map,o=null,C=0;function K(M,i){const s=Object.values(M).filter(t=>!t.hidden);(!w||i!==_||s.length!==j.length)&&(j=s,y=new Map(s.map(t=>[t.id,t])),k=new Map(s.map(t=>[t.name.toLowerCase(),t])),w=G(s,i),_=i)}self.onmessage=M=>{const{systems:i,stargates:s,originName:t,maxJumpDistance:e,token:c}=M.data,m=performance.now();if(!i||!t||!isFinite(e)||e<=0){self.postMessage({type:"result",reachableIds:[],elapsedMs:0,token:c});return}const f=e;if(K(i,f),!w){self.postMessage({type:"result",reachableIds:[],elapsedMs:0,token:c});return}const p=k.get(t.toLowerCase());if(!p){self.postMessage({type:"result",reachableIds:[],elapsedMs:0,token:c});return}const n=new Set,b=[p.id];if(n.add(p.id),s){const h=Object.values(s);if(!o||h.length!==C){o=new Map;for(const a of h){const l=a.source_system_id,r=a.destination_system_id;!y.has(l)||!y.has(r)||(o.has(l)||o.set(l,[]),o.has(r)||o.set(r,[]),o.get(l).push(r),o.get(r).push(l))}C=h.length}}else o=null,C=0;const{grid:L,toCellKey:N}=w,O=e*e,v=new Map;for(;b.length;){const h=b.shift(),a=y.get(h),l=Math.floor(a.position.x/f),r=Math.floor(a.position.y/f),D=Math.floor(a.position.z/f);for(let g=-1;g<=1;g++)for(let d=-1;d<=1;d++)for(let z=-1;z<=1;z++){const F=N(l+g,r+d,D+z),S=L.get(F);if(S)for(const u of S.ids){if(n.has(u))continue;const x=y.get(u);let I=v.get(u);I||(I=x.position,v.set(u,I));const T=x.position.x-a.position.x,$=x.position.y-a.position.y,A=x.position.z-a.position.z;T*T+$*$+A*A<=O&&(n.add(u),b.push(u))}}if(o){const g=o.get(h);if(g)for(const d of g)n.has(d)||(n.add(d),b.push(d))}}const q=performance.now()-m;self.postMessage({type:"result",reachableIds:Array.from(n),elapsedMs:q,token:c})}})();
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.