'+x(c.greeting)+'
'+C+'Chat in WhatsApp starten\\xD6ffnet WhatsApp in einem neuen Fenster; dort gilt der Datenschutz von WhatsApp (Meta). Datenschutz
${m.title}${m.text}${m.pic?`${he(m.pic,!0)}`:\"\"}
5?\" hmap__year--long\":\"\"}\">${y.word}
${y.title}${y.text}
`+(G?Tt(y.pic,\"hpic--inline\",\"calc(100vw - 32px)\",{tab:!0}):\"\")+\"Karte: \\xA9 OpenStreetMap-Mitwirkende'+(ue?\" \\xB7 Luftbild 1928: Geoportal Berlin\"+(pe?\" \\xB7 Baustelle 2026: Drohnenaufnahme Karls Living\":\"\"):\"\")+\"
\",r.appendChild(s);const g=p(\".hmap__view\",s),d=p(\".hmap__cv\",s),a=p(\".hmap__pin\",s),c=p(\".hmap__tag\",s),u=p(\".hmap__now\",s),i=Y(\".hmap__st\",s),m=h?[...p(\".hmap__pics\",s).children].map(y=>y.tagName===\"FIGURE\"?y:null):[],l=X.lageMap.create(d,{theme:\"dark\",busy:Ot}),f=ue?rr.map(y=>Object.assign({i:e.findIndex(F=>F.place===y.place),img:null},y)).filter(y=>y.i>=0):[],_=f.length?g.appendChild(Object.assign(document.createElement(\"p\"),{className:\"hmap__lb\"})):null;let T=0,w=0,L=1,C=1;const M=()=>f.forEach(y=>{if(y.img||y.loading)return;y.loading=!0;const F=()=>{const q=new Image;q.crossOrigin=\"anonymous\",q.src=y.src,(q.decode?q.decode():new Promise((N,z)=>{q.onload=N,q.onerror=z})).then(()=>{y.img=q,P()},()=>{})};(X.gl&&X.gl.decode?X.gl.decode(y.src):Promise.resolve(null)).then(q=>{q?(y.img=q,P()):F()})}),k=y=>{let F=null,q=0;for(const ft of f){const ot=Q(0,1,1-Math.abs(x.p-ft.i)*2.2),dt=ot*ot*(3-2*ot);dt>q&&(q=dt,F=ft)}const N=!!F&&q>.003&&!!F.img;if(T=N?q:0,_&&(_.style.opacity=N?q.toFixed(3):0),!N){y.photoKey=\"lens:0\";return}const z=(G?Q(64,.32*Math.min(L,C),120):Q(64,.17*Math.min(L,C),170))*F.k,j=Math.min(z/y.zoom,320)*(.55+.45*q);y.photos=[{img:F.img,b:F.b,a:q,clip:{x:F.c[0],y:F.c[1],r:j}}],y.photoKey=\"lens:\"+F.year+\":\"+q.toFixed(3)+\":\"+j.toFixed(1),F.outline?y.highlightOutline=q:y.highlightSoft=q;const tt=+(1-q).toFixed(2);y.labels=tt,y.areaLabels=tt;const at=l.toScreen(F.c[0],F.c[1]+j,y);w!==F.year&&(w=F.year,_.innerHTML=(F.label||\"Luftbild\")+\" \"+F.year+\"\"),_.style.transform=`translate3d(${at.x.toFixed(1)}px, ${at.y.toFixed(1)}px, 0) translate(-50%, -50%)`};f.length&&ScrollTrigger.create({trigger:t,start:\"top bottom+=150%\",once:!0,onEnter:M});const E=l.history||{},D={kolonie:\"Villenkolonie\",luftschiff:\"Luftschiffhalle\",hallen:\"Flugzeughallen\",versuchsanstalt:\"Halle 3\",museum:\"Museum Karlshorst\",garnison:\"Kasernengel\\xE4nde\",gartenstadt:\"Gartenstadt\",quartier:\"Karls Living\"},$=y=>{const F=E[y.place]||(y.place===\"quartier\"?{x:0,y:0,bounds:l.bounds.quartier}:null);return F&&Object.assign({},F,{name:D[y.place]||F.name})};let R=[];const I=()=>{const y=G?{t:36,r:24,b:30,l:24}:h?{t:130,r:90,b:320,l:150}:{t:150,r:90,b:120,l:150},F=q=>!G&&h&&q.place===\"gartenstadt\"?Object.assign({},y,{r:330}):y;R=e.map(q=>{const N=$(q);return l.fit(N?N.bounds||[N.x-250,N.y-250,N.x+250,N.y+250]:l.bounds.karlshorst,F(q))})},x={p:0};let O=-1;const B=e.map(()=>0);let W=-1;const S=()=>{const y=O>=0?B[O]:0;y!==W&&(W=y,u.style.opacity=y,u.style.transform=`translateY(${((1-y)*10).toFixed(1)}px)`)},H=y=>{y!==O&&(O=y,i.forEach((F,q)=>F.classList.toggle(\"is-on\",q===y)),m.forEach((F,q)=>F&&F.classList.toggle(\"is-on\",q===y)),G&&(gsap.to(u,{duration:.7,ease:\"none\",overwrite:\"auto\",scrambleText:{text:e[y].word,chars:\"0123456789\",speed:.6}}),S()),X.sound?.tick())},P=()=>{if(!R.length)return;const y=Math.max(0,Math.min(n-2,Math.floor(x.p))),F=Q(0,1,x.p-y),q=F*F*(3-2*F),N=n>1?l.lerp(R[y],R[y+1],q):R[0];N.zoom*=Math.pow(.7,Math.sin(Math.PI*F));const z=Math.round(x.p),j=e[z],tt=$(j);if(N.highlight=j.place,N.highlightAmount=Q(0,1,1-Math.abs(x.p-z)*2.2),N.quarter=j.place===\"quartier\"?.25+.75*N.highlightAmount:.25,N.fast=Math.abs(x.p-z)>1e-4,f.length&&k(N),l.draw(N),tt){const at=l.toScreen(tt.x,tt.y);a.style.transform=`translate3d(${at.x}px, ${at.y}px, 0)`,a.style.opacity=N.highlightAmount,a.classList.toggle(\"is-lens\",T>.4),c.textContent!==tt.name&&(c.textContent=tt.name)}else a.style.opacity=0},b=()=>{L=g.clientWidth,C=g.clientHeight,l.resize(L,C),I(),P()};if(b(),ScrollTrigger.addEventListener(\"refreshInit\",b),ScrollTrigger.addEventListener(\"refresh\",P),document.fonts&&document.fonts.ready.then(P),H(0),G){const y=N=>{H(N),gsap.to(x,{p:N,duration:1.3,ease:\"power2.inOut\",overwrite:!0,onUpdate:P})};i.forEach((N,z)=>ScrollTrigger.create({trigger:N,start:\"top 58%\",end:\"bottom 58%\",onEnter:()=>y(z),onEnterBack:()=>y(z)}));const F=()=>(parseFloat(getComputedStyle(g).top)||0)+g.offsetHeight,q=N=>z=>{B[N]=z.progress,S()};i.forEach((N,z)=>ScrollTrigger.create({trigger:p(\".hmap__year\",N),start:()=>\"top \"+Math.round(F()),end:()=>\"bottom \"+Math.round(F()),onUpdate:q(z),onRefresh:q(z)})),zt=N=>{const z=i[N];return z?z.getBoundingClientRect().top+scrollY-innerHeight*.5:null},Lt={mode:\"karte\",map:l,st:x,apply:P};return}const v=.8,A=gsap.timeline({scrollTrigger:{trigger:t,start:\"top top\",end:\"+=\"+Math.round(n*45)+\"%\",pin:!0,scrub:.6,invalidateOnRefresh:!0,onUpdate:y=>H(Math.min(n-1,Math.floor(y.progress*A.duration()+v/2)))}});A.set(x,{p:0,onComplete:P},0);for(let y=1;y