{"version":3,"file":"oAwEWWqQ2.C2Py7xtw.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/tLScJw4N4TpnBdMOvRLz/auYT6k930rVX7YSjR9RO/CTMImageReveal.js","https:/framerusercontent.com/modules/0PXPET60Qge1sitAMFpO/euNs72euiC2PkuzzGsrd/oAwEWWqQ2.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// Geometria da Asset 2 / Asset 3 (cella 294.62 x 201.78)\nconst CELL_H=201.78;const P_BR=154.29;const P_TL=140.33;const P_TR=294.62;const COL_PITCH=308.74;const ROW_SHIFT=14.11;/**\n * CTM Image Reveal\n *\n * L'immagine si rivela componendo la griglia diagonale del brand\n * (pattern Asset 2) quando il layer entra in viewport.\n * \"Ordered wave\" = onda diagonale ordinata (ritardo = colonna + riga).\n * Con un Video impostato (bindabile al CMS), il reveal e l'hover glow\n * lavorano sui frame del video: muto, in loop, play solo in viewport.\n * Hover Glow: a reveal completato, la cella sotto al mouse si accende\n * del colore brand e si spegne con una scia.\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 600\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CTMImageReveal(props){const{image={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"\"},video,proporzione=0,animation=\"up\",tileSize=100,duration=1400,delay=0,replay=false,hoverGlow=false,glowColor=\"#00FFAD\",glowOpacity=.55,radius=0,style}=props;const rootRef=useRef(null);const canvasRef=useRef(null);const isStatic=useIsStaticRenderer();useEffect(()=>{if(typeof window===\"undefined\")return;const root=rootRef.current;const canvas=canvasRef.current;if(!root||!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;let raf=0;let running=true;let dpr=1;let W=0;let H=0;let startAt=-1;let done=false;let cells=[];const img=new Image;img.crossOrigin=\"anonymous\";img.src=image.src;let imgReady=false;// sorgente video opzionale: muto, loop, frame disegnati sul canvas\nlet vid=null;let vidReady=false;let visible=false;const saveData=navigator.connection?.saveData===true;if(video&&!saveData){vid=document.createElement(\"video\");vid.crossOrigin=\"anonymous\";vid.muted=true;vid.loop=true;vid.playsInline=true;vid.preload=\"none\"// zero rete finche' non entra in viewport\n;vid.src=video;vid.addEventListener(\"loadeddata\",()=>{vidReady=true;startLoop();});}const srcReady=()=>vid&&vidReady?true:imgReady;const rand=i=>{const v=Math.sin(i*127.1+311.7)*43758.5453;return v-Math.floor(v);};const layout=()=>{const rect=root.getBoundingClientRect();W=rect.width;H=rect.height;dpr=Math.min(window.devicePixelRatio||1,2);canvas.width=Math.max(1,Math.round(W*dpr));canvas.height=Math.max(1,Math.round(H*dpr));const k=tileSize/CELL_H;const rows=Math.ceil(H/tileSize)+1;const cols=Math.ceil(W/(COL_PITCH*k))+3;cells=[];for(let r=0;r<rows;r++){for(let c=0;c<cols;c++){// due mezze celle per modulo: piena (Asset 2) e negativa\nfor(let half=0;half<2;half++){const i=(r*cols+c)*2+half;const x=c*COL_PITCH*k+r*ROW_SHIFT*k-COL_PITCH*k+half*P_BR*k;const cx=(x+P_TR*k/2)/Math.max(W,1);const cy=(r*tileSize+tileSize/2)/Math.max(H,1);let v=0;if(animation===\"up\")v=1-cy;else if(animation===\"down\")v=cy;else if(animation===\"diag\")v=(cx+cy)/2;else if(animation===\"wave\"){// onda diagonale ordinata: ritardo = colonna + riga,\n// niente jitter, niente offset di mezza cella\nconst colOrder=(c*2+half)/Math.max(cols*2-1,1);const rowOrder=r/Math.max(rows-1,1);v=(colOrder+rowOrder)/2;}else if(animation===\"cols\")v=cx;else if(animation===\"center\")v=Math.min(1,Math.hypot(cx-.5,cy-.5)/.72);else v=rand(i);const jitter=animation===\"random\"||animation===\"wave\"?0:rand(i)*.1;const halfOff=animation===\"wave\"?0:half*.3;const t=Math.min(.98,v*(animation===\"wave\"?.9:.5)+halfOff+jitter);cells.push({r,c:c*2+half,t,e:0});}}}};const cellPath=cell=>{const k=tileSize/CELL_H;const half=cell.c%2;const c=(cell.c-half)/2;const x=c*COL_PITCH*k+cell.r*ROW_SHIFT*k-COL_PITCH*k+half*P_BR*k;const y=cell.r*tileSize;ctx.moveTo(x,y+tileSize+.5);ctx.lineTo(x+P_TL*k,y);ctx.lineTo(x+P_TR*k+.75,y);ctx.lineTo(x+P_BR*k+.75,y+tileSize+.5);ctx.closePath();};// hit test matematico: stessa geometria di cellPath, nessun Path2D\nconst cellAt=(px,py)=>{const k=tileSize/CELL_H;const r=Math.floor(py/tileSize);if(r<0)return null;const u=(r*tileSize+tileSize-py)/tileSize// 0 = bordo basso, 1 = bordo alto\n;for(const cell of cells){if(cell.r!==r)continue;const half=cell.c%2;const c=(cell.c-half)/2;const x=c*COL_PITCH*k+r*ROW_SHIFT*k-COL_PITCH*k+half*P_BR*k;const xL=x+P_TL*k*u;const xR=x+P_BR*k+(P_TR-P_BR)*k*u;if(px>=xL&&px<xR)return cell;}return null;};const drawCover=()=>{const src=vid&&vidReady?vid:img;const iw=vid&&vidReady?vid.videoWidth:img.naturalWidth;const ih=vid&&vidReady?vid.videoHeight:img.naturalHeight;if(!iw||!ih)return;const sc=Math.max(W/iw,H/ih);ctx.drawImage(src,(W-iw*sc)/2,(H-ih*sc)/2,iw*sc,ih*sc);};const anyEnergy=()=>{for(const cell of cells)if(cell.e>.01)return true;return false;};const drawGlow=()=>{for(const cell of cells){if(cell.e<=.01)continue;ctx.beginPath();cellPath(cell);ctx.globalAlpha=cell.e*glowOpacity;ctx.fillStyle=glowColor;ctx.fill();ctx.globalAlpha=1;}};const draw=p=>{ctx.setTransform(dpr,0,0,dpr,0,0);ctx.clearRect(0,0,W,H);if(!srcReady())return;if(p>=1){drawCover();drawGlow();return;}ctx.save();ctx.beginPath();for(const cell of cells){if(p>cell.t)cellPath(cell);}ctx.clip();drawCover();ctx.restore();};const ease=x=>x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;// rAF attivo SOLO quando c'e' lavoro: reveal in corso, video visibile\n// in play, o scia glow da smaltire. Altrimenti il loop si spegne da solo.\nlet rafActive=false;let lastVideoTime=-1;const loop=now=>{if(!running){rafActive=false;return;}let work=false;if(startAt>=0&&!done){const raw=(now-startAt-delay)/duration;const p=Math.min(Math.max(raw,0),1);draw(ease(p));if(p>=1)done=true;work=true;}else if(done&&vid&&visible&&!vid.paused){const glowing=hoverGlow&&!reduced&&anyEnergy();// a frame video invariato ridisegnare l'intero canvas è lavoro\n// buttato: succedeva 60 volte al secondo\nif(vid.currentTime!==lastVideoTime||glowing){lastVideoTime=vid.currentTime;if(glowing)for(const cell of cells)cell.e*=.92;draw(1);}work=true;}else if(done&&hoverGlow&&!reduced&&anyEnergy()){for(const cell of cells)cell.e*=.92;draw(1);work=true;}if(work)raf=window.requestAnimationFrame(loop);else rafActive=false;};const startLoop=()=>{if(rafActive||!running)return;rafActive=true;raf=window.requestAnimationFrame(loop);};layout();if(isStatic||reduced){// statico/reduced: frame fermo dall'immagine (= Cover/poster),\n// il video non viene mai caricato\nvid=null;const show=()=>draw(reduced?1:.6);if(img.complete&&img.naturalWidth){imgReady=true;show();}else img.onload=()=>{imgReady=true;show();};if(isStatic)return;if(reduced)return;}img.onload=()=>{imgReady=true;// se l'immagine arriva dopo la fine dell'animazione, senza questo\n// il reveal ha già disegnato su una sorgente vuota e il riquadro\n// resta bianco per sempre (tipico su rete lenta)\nif(done)draw(1);else startLoop();};if(img.complete&&img.naturalWidth)imgReady=true;const io=new IntersectionObserver(entries=>{for(const e of entries){visible=e.isIntersecting;if(e.isIntersecting){if(startAt<0)startAt=performance.now();if(vid)vid.play().catch(()=>{});startLoop();}else{if(vid)vid.pause();if(replay){startAt=-1;done=false;draw(0);}}}},{threshold:.25});io.observe(root);const onMove=ev=>{if(!done||!hoverGlow||reduced)return;const rect=canvas.getBoundingClientRect();const cell=cellAt(ev.clientX-rect.left,ev.clientY-rect.top);if(cell){cell.e=1;startLoop();}};// su touch pointermove arriva solo al drag: la scia partirebbe\n// sullo scroll, non è l'effetto voluto\nconst fine=window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;if(hoverGlow&&!reduced&&fine){canvas.addEventListener(\"pointermove\",onMove);}let lastW=0;let lastH=0;const onResize=()=>{// la URL bar mobile spara resize in pieno scroll\nconst w=root.clientWidth;const h=root.clientHeight;if(w===lastW&&h===lastH)return;lastW=w;lastH=h;layout();if(done)draw(1);};window.addEventListener(\"resize\",onResize);const onVis=()=>{if(document.hidden){if(vid)vid.pause();}else if(visible){if(vid)vid.play().catch(()=>{});startLoop();}};document.addEventListener(\"visibilitychange\",onVis);startLoop();return()=>{running=false;io.disconnect();window.removeEventListener(\"resize\",onResize);document.removeEventListener(\"visibilitychange\",onVis);canvas.removeEventListener(\"pointermove\",onMove);if(raf)window.cancelAnimationFrame(raf);if(vid){vid.pause();vid.removeAttribute(\"src\");vid.load();}};},[isStatic,image?.src,image?.srcSet,video,animation,tileSize,duration,delay,replay,hoverGlow,glowColor,glowOpacity]);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{...style,position:\"relative\",width:\"100%\",// Con \"Proporzione\" impostata il blocco calcola da solo la propria\n// altezza dalla larghezza reale, cosi il media non viene mai\n// ritagliato da un'altezza fissa decisa a mano. 0 = comportamento\n// storico invariato (altezza dal frame Framer).\n...proporzione>0?{aspectRatio:String(proporzione),height:\"auto\"}:{height:style?.height??\"100%\"},overflow:\"clip\",borderRadius:radius},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"aria-hidden\":\"true\",role:\"img\",\"aria-label\":image.alt||\"\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"}})});}addPropertyControls(CTMImageReveal,{image:{type:ControlType.ResponsiveImage,title:\"Image\"},video:{type:ControlType.File,title:\"Video\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},proporzione:{type:ControlType.Number,title:\"Proporzione\",description:\"Proporzione del blocco (larghezza / altezza). 1.7778 = 16:9. Lascia 0 per usare l'altezza fissa del frame.\",defaultValue:0,min:0,max:4,step:1e-4,displayStepper:false},animation:{type:ControlType.Enum,title:\"Animation\",options:[\"up\",\"down\",\"diag\",\"wave\",\"random\",\"center\",\"cols\"],optionTitles:[\"Wave up\",\"Wave down\",\"Diagonal\",\"Ordered wave\",\"Random\",\"From center\",\"From left\"],defaultValue:\"up\"},tileSize:{type:ControlType.Number,title:\"Tile Size\",defaultValue:100,min:50,max:300,step:10,unit:\"px\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1400,min:400,max:4e3,step:100,unit:\"ms\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:2e3,step:100,unit:\"ms\"},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:80,step:1,unit:\"px\"},hoverGlow:{type:ControlType.Boolean,title:\"Hover Glow\",defaultValue:false},glowColor:{type:ControlType.Color,title:\"Glow Color\",defaultValue:\"#00FFAD\",hidden:props=>!props.hoverGlow},glowOpacity:{type:ControlType.Number,title:\"Glow Opacity\",defaultValue:.55,min:.1,max:1,step:.05,hidden:props=>!props.hoverGlow}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CTMImageReveal\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerIntrinsicHeight\":\"600\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CTMImageReveal.map","// Generated by Framer (d039229)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;Articulat CF Regular\",\"CUSTOMV2;Articulat CF Bold\",\"CUSTOMV2;Articulat CF Bold Oblique\",\"CUSTOMV2;Articulat CF Regular Oblique\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Articulat CF Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"Articulat CF\",url:\"https://framerusercontent.com/assets/SoNhakderPP5mXBXOwOCthUdY5I.woff2\",weight:\"400\"},{cssFamilyName:\"Articulat CF Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"Articulat CF\",url:\"https://framerusercontent.com/assets/lv2uDruToleBhaIrcxww0ZhxdjM.woff2\",weight:\"700\"},{cssFamilyName:\"Articulat CF Bold Oblique\",source:\"custom\",style:\"italic\",uiFamilyName:\"Articulat CF\",url:\"https://framerusercontent.com/assets/tD79RyMMKxAK7OpXR4YVHi6tvA.woff2\",weight:\"700\"},{cssFamilyName:\"Articulat CF Regular Oblique\",source:\"custom\",style:\"italic\",uiFamilyName:\"Articulat CF\",url:\"https://framerusercontent.com/assets/rc96aSxCXA6PklEsXQ4jCQM3VU.woff2\",weight:\"400\"}]}];export const css=['.framer-TSoj6 .framer-styles-preset-inm7k1:not(.rich-text-wrapper), .framer-TSoj6 .framer-styles-preset-inm7k1.rich-text-wrapper h1 { --framer-font-family: \"Articulat CF Regular\", \"Articulat CF Regular Placeholder\", sans-serif; --framer-font-family-bold: \"Articulat CF Bold\", \"Articulat CF Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Articulat CF Bold Oblique\", \"Articulat CF Bold Oblique Placeholder\", sans-serif; --framer-font-family-italic: \"Articulat CF Regular Oblique\", \"Articulat CF Regular Oblique Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 96px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-TSoj6 .framer-styles-preset-inm7k1:not(.rich-text-wrapper), .framer-TSoj6 .framer-styles-preset-inm7k1.rich-text-wrapper h1 { --framer-font-family: \"Articulat CF Regular\", \"Articulat CF Regular Placeholder\", sans-serif; --framer-font-family-bold: \"Articulat CF Bold\", \"Articulat CF Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Articulat CF Bold Oblique\", \"Articulat CF Bold Oblique Placeholder\", sans-serif; --framer-font-family-italic: \"Articulat CF Regular Oblique\", \"Articulat CF Regular Oblique Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 80px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-TSoj6 .framer-styles-preset-inm7k1:not(.rich-text-wrapper), .framer-TSoj6 .framer-styles-preset-inm7k1.rich-text-wrapper h1 { --framer-font-family: \"Articulat CF Regular\", \"Articulat CF Regular Placeholder\", sans-serif; --framer-font-family-bold: \"Articulat CF Bold\", \"Articulat CF Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Articulat CF Bold Oblique\", \"Articulat CF Bold Oblique Placeholder\", sans-serif; --framer-font-family-italic: \"Articulat CF Regular Oblique\", \"Articulat CF Regular Oblique Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 70px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-TSoj6\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"qNAiBG,SAAwB,EAAe,EAAM,CAAC,GAAK,CAAC,QAAM,CAAC,IAAI,sEAAsE,IAAI,EAAE,EAAE,QAAM,cAAY,EAAE,YAAU,KAAK,WAAS,IAAI,WAAS,KAAK,QAAM,EAAE,SAAO,GAAM,YAAU,GAAM,YAAU,UAAU,cAAY,IAAI,SAAO,EAAE,SAAO,EAAY,EAAQA,EAAO,IAAI,EAAQ,EAAUA,EAAO,IAAI,EAAQ,EAAS,EAAoB,EAmBmX,OAnBjX,MAAc,CAAC,GAAU,IAAS,OAAY,OAAO,IAAM,EAAK,EAAQ,QAAc,EAAO,EAAU,QAAQ,GAAG,CAAC,GAAM,CAAC,EAAO,OAAO,IAAM,EAAI,EAAO,WAAW,IAAI,EAAE,GAAG,CAAC,EAAI,OAAO,IAAM,EAAQ,EAAO,WAAW,kCAAkC,CAAC,CAAC,QAAY,EAAI,EAAM,EAAQ,GAAS,EAAI,EAAM,EAAE,EAAM,EAAE,EAAM,EAAQ,GAAO,EAAK,GAAU,EAAM,CAAC,EAAQ,EAAI,IAAI,MAAM,EAAI,YAAY,YAAY,EAAI,IAAI,EAAM,IAAI,IAAI,EAAS,GAC1zB,EAAI,KAAS,EAAS,GAAU,EAAQ,GAAY,GAAS,EAAU,YAAY,WAAW,GAAQ,GAAO,CAAC,KAAU,EAAI,SAAS,cAAc,OAAO,EAAE,EAAI,YAAY,YAAY,EAAI,MAAM,GAAK,EAAI,KAAK,GAAK,EAAI,YAAY,GAAK,EAAI,QAAQ,OACzP,EAAI,IAAI,EAAM,EAAI,iBAAiB,iBAAiB,CAAC,EAAS,GAAK,EAAU,CAAE,CAAC,GAAG,IAAM,OAAa,GAAK,EAAS,GAAK,EAAe,EAAK,GAAG,CAAC,IAAM,EAAE,KAAK,IAAI,EAAE,MAAM,KAAK,EAAE,WAAW,OAAO,EAAE,KAAK,MAAM,CAAC,CAAE,EAAQ,MAAW,CAAC,IAAM,EAAK,EAAK,sBAAsB,EAAE,EAAE,EAAK,MAAM,EAAE,EAAK,OAAO,EAAI,KAAK,IAAI,EAAO,kBAAkB,EAAE,CAAC,EAAE,EAAO,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,CAAG,CAAC,EAAE,EAAO,OAAO,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,CAAG,CAAC,EAAE,IAAM,EAAE,EAAS,EAAa,EAAK,KAAK,KAAK,EAAE,CAAQ,EAAE,EAAQ,EAAK,KAAK,KAAK,GAAG,EAAU,EAAE,EAAE,EAAE,EAAM,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,IAAK,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,IACpkB,IAAI,IAAI,EAAK,EAAE,EAAK,EAAE,IAAO,CAAC,IAAM,GAAG,EAAE,EAAK,GAAG,EAAE,EAAuE,GAA1D,EAAE,EAAU,EAAE,EAAE,EAAU,EAAE,EAAU,EAAE,EAAK,EAAK,EAAc,EAAK,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC,EAAQ,GAAI,EAAE,EAAS,EAAS,GAAG,KAAK,IAAI,EAAE,CAAC,EAAM,EAAE,EAAE,AAES,EAFN,IAAY,KAAO,EAAE,EAAW,IAAY,OAAS,EAAW,IAAY,QAAU,EAAG,GAAI,EAAU,IAAY,SAErT,EAAE,EAAE,GAAM,KAAK,IAAI,EAAK,EAAE,EAAE,CAAC,EAAiB,EAAE,KAAK,IAAI,EAAK,EAAE,CAAC,GAAwB,EAAW,IAAY,OAAS,EAAW,IAAY,SAAW,KAAK,IAAI,EAAE,KAAK,MAAM,EAAG,GAAG,EAAG,EAAE,EAAE,GAAG,EAAS,EAAK,CAAC,EAAE,IAAM,EAAO,IAAY,UAAU,IAAY,OAAO,EAAE,EAAK,CAAC,EAAE,GAAS,EAAQ,IAAY,OAAO,EAAE,EAAK,GAAS,EAAE,KAAK,IAAI,IAAI,GAAG,IAAY,OAAO,GAAG,IAAI,EAAQ,CAAM,EAAE,EAAM,KAAK,CAAC,IAAE,EAAE,EAAE,EAAE,EAAK,IAAE,EAAE,CAAC,CAAC,CAAE,CAAG,EAAQ,EAAS,GAAM,CAAC,IAAM,EAAE,EAAS,EAAa,EAAK,EAAK,EAAE,EAAgC,GAArB,EAAK,EAAE,GAAM,EAAY,EAAU,EAAE,EAAK,EAAE,EAAU,EAAE,EAAU,EAAE,EAAK,EAAK,EAAQ,EAAE,EAAK,EAAE,EAAS,EAAI,OAAO,EAAE,EAAE,EAAS,EAAE,EAAE,EAAI,OAAO,EAAE,EAAK,EAAE,CAAC,EAAE,EAAI,OAAO,EAAE,EAAK,EAAE,IAAI,CAAC,EAAE,EAAI,OAAO,EAAE,EAAK,EAAE,IAAI,EAAE,EAAS,EAAE,EAAE,EAAI,UAAU,CAAE,EAC1uB,IAAQ,EAAG,IAAK,CAAC,IAAM,EAAE,EAAS,EAAa,EAAE,KAAK,MAAM,EAAG,CAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,KAAK,IAAM,GAAG,EAAE,EAAS,EAAS,GAAI,EAClI,IAAI,IAAM,KAAQ,EAAM,CAAC,GAAG,EAAK,IAAI,EAAE,SAAS,IAAM,EAAK,EAAK,EAAE,EAAgC,GAArB,EAAK,EAAE,GAAM,EAAY,EAAU,EAAE,EAAE,EAAU,EAAE,EAAU,EAAE,EAAK,EAAK,EAAQ,EAAG,EAAE,EAAK,EAAE,EAAQ,EAAG,EAAE,EAAK,GAAG,EAAK,GAAM,EAAE,EAAE,GAAG,GAAI,GAAI,EAAG,EAAG,OAAO,CAAK,CAAC,OAAO,IAAK,EAAQ,MAAc,CAAC,IAAM,EAAI,GAAK,EAAS,EAAI,EAAU,EAAG,GAAK,EAAS,EAAI,WAAW,EAAI,aAAmB,EAAG,GAAK,EAAS,EAAI,YAAY,EAAI,cAAc,GAAG,CAAC,GAAI,CAAC,EAAG,OAAO,IAAM,EAAG,KAAK,IAAI,EAAE,EAAG,EAAE,CAAE,EAAE,EAAI,UAAU,GAAK,EAAE,EAAG,GAAI,GAAG,EAAE,EAAG,GAAI,EAAE,EAAG,EAAG,EAAG,CAAE,CAAE,EAAQ,MAAc,CAAC,IAAI,IAAM,KAAQ,EAAM,GAAG,EAAK,EAAE,IAAI,MAAO,GAAK,MAAO,EAAM,EAAQ,OAAa,CAAC,IAAI,IAAM,KAAQ,EAAU,EAAK,GAAG,MAAa,EAAI,UAAU,EAAE,EAAS,CAAI,EAAE,EAAI,YAAY,EAAK,EAAE,EAAY,EAAI,UAAU,EAAU,EAAI,KAAK,EAAE,EAAI,YAAY,EAAG,EAAQ,EAAK,GAAG,CAAC,KAAI,aAAa,EAAI,EAAE,EAAE,EAAI,EAAE,CAAC,EAAE,EAAI,UAAU,EAAE,EAAE,EAAE,CAAC,EAAM,GAAS,EAAS,IAAG,GAAG,EAAE,CAAC,EAAU,EAAE,GAAS,EAAE,MAAO,CAAC,EAAI,KAAK,EAAE,EAAI,UAAU,EAAE,IAAI,IAAM,KAAQ,EAAU,EAAE,EAAK,GAAE,EAAS,CAAI,EAAG,EAAI,KAAK,EAAE,EAAU,EAAE,EAAI,QAAQ,CAApH,CAAsH,EAAQ,GAAK,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAW,GAAG,EAAE,IAAE,EAAG,EAEvkC,EAAU,GAAU,EAAc,GAAS,EAAK,GAAK,CAAC,GAAG,CAAC,EAAQ,CAAC,EAAU,GAAM,MAAO,CAAC,IAAI,EAAK,GAAM,GAAG,GAAS,GAAG,CAAC,EAAK,CAAC,IAAM,GAAK,EAAI,EAAQ,GAAO,EAAe,EAAE,KAAK,IAAI,KAAK,IAAI,EAAI,CAAC,EAAE,CAAC,EAAE,EAAK,GAAK,CAAC,CAAC,EAAK,GAAG,IAAE,EAAK,IAAK,EAAK,EAAK,MAAM,GAAG,GAAM,GAAK,GAAS,CAAC,EAAI,OAAO,CAAC,IAAM,EAAQ,GAAW,CAAC,GAAS,EAAU,EAEhV,GAAG,EAAI,cAAc,GAAe,EAAQ,CAA+B,GAA9B,EAAc,EAAI,YAAe,EAAQ,IAAI,IAAM,KAAQ,EAAM,EAAK,GAAG,IAAI,EAAK,CAAC,CAAE,CAAC,EAAK,EAAK,MAAM,GAAG,GAAM,GAAW,CAAC,GAAS,EAAU,EAAE,CAAC,IAAI,IAAM,KAAQ,EAAM,EAAK,GAAG,IAAI,EAAK,CAAC,EAAE,EAAK,EAAK,CAAI,EAAK,EAAI,EAAO,sBAAsB,CAAI,EAAO,EAAU,EAAM,EAAQ,MAAc,CAAI,GAAW,CAAC,IAAe,EAAU,GAAK,EAAI,EAAO,sBAAsB,CAAI,EAAE,EAAW,GAAT,EAAO,EAAK,GAAU,EAAQ,CAEpc,EAAI,KAAK,IAAM,MAAS,EAAK,EAAQ,EAAE,EAAE,EAA0H,GAArH,EAAI,UAAU,EAAI,cAAc,EAAS,GAAK,EAAK,GAAQ,EAAI,WAAW,CAAC,EAAS,GAAK,EAAK,CAAE,EAAK,GAAmB,EAAQ,MAAO,CAAC,EAAI,WAAW,CAAC,EAAS,GAG5M,EAAK,EAAK,CAAC,EAAO,EAAU,CAAE,EAAK,EAAI,UAAU,EAAI,eAAa,EAAS,IAAK,IAAM,EAAG,IAAI,qBAAqB,GAAS,CAAC,IAAI,IAAM,KAAK,EAAS,EAAQ,EAAE,eAAkB,EAAE,gBAAmB,EAAQ,IAAE,EAAQ,YAAY,IAAI,GAAK,GAAI,EAAI,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,EAAU,IAAW,GAAI,EAAI,MAAM,EAAK,IAAQ,EAAQ,GAAG,EAAK,GAAM,EAAK,CAAC,GAAK,EAAE,CAAC,UAAU,GAAG,CAAC,EAAE,EAAG,QAAQ,CAAI,EAAE,IAAM,EAAO,GAAI,CAAC,GAAG,CAAC,GAAM,CAAC,GAAW,EAAQ,OAAO,IAAM,EAAK,EAAO,sBAAsB,EAAQ,EAAK,GAAO,EAAG,QAAQ,EAAK,KAAK,EAAG,QAAQ,EAAK,GAAG,EAAK,IAAM,EAAK,EAAE,EAAE,EAAU,EAAG,EAEvjB,GAAK,EAAO,WAAW,oCAAoC,CAAC,CAAC,QAAW,GAAW,CAAC,GAAS,IAAM,EAAO,iBAAiB,cAAc,CAAM,EAAG,IAAI,EAAM,EAAM,EAAM,EAAQ,MAAa,CACnM,IAAM,EAAE,EAAK,YAAkB,EAAE,EAAK,aAAgB,IAAI,GAAO,IAAI,IAAa,EAAM,EAAE,EAAM,EAAE,EAAO,EAAK,GAAK,EAAK,CAAC,EAAE,EAAE,EAAO,iBAAiB,SAAS,CAAQ,EAAE,IAAM,MAAU,CAAI,SAAS,OAAW,GAAI,EAAI,MAAM,EAAW,IAAY,GAAI,EAAI,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,EAAU,EAAG,EAAkE,OAAhE,SAAS,iBAAiB,mBAAmB,CAAK,EAAE,EAAU,MAAY,CAAC,EAAQ,GAAM,EAAG,WAAW,EAAE,EAAO,oBAAoB,SAAS,CAAQ,EAAE,SAAS,oBAAoB,mBAAmB,CAAK,EAAE,EAAO,oBAAoB,cAAc,CAAM,EAAK,GAAI,EAAO,qBAAqB,CAAG,EAAK,IAAK,EAAI,MAAM,EAAE,EAAI,gBAAgB,KAAK,EAAE,EAAI,KAAK,EAAG,CAAE,EAAE,CAAC,EAAS,GAAO,IAAI,GAAO,OAAO,EAAM,EAAU,EAAS,EAAS,EAAM,EAAO,EAAU,EAAU,CAAW,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAQ,MAAM,CAAC,GAAG,EAAM,SAAS,WAAW,MAAM,OAIj1B,GAAG,EAAY,EAAE,CAAC,YAAY,OAAO,CAAW,EAAE,OAAO,MAAM,EAAE,CAAC,OAAO,GAAO,QAAQ,MAAM,EAAE,SAAS,OAAO,aAAa,CAAM,EAAE,SAAsB,EAAK,SAAS,CAAC,IAAI,EAAU,cAAc,OAAO,KAAK,MAAM,aAAa,EAAM,KAAK,GAAG,MAAM,CAAC,SAAS,WAAW,MAAM,EAAE,MAAM,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,iCAxC5Q,IAAoC,IAAwE,EAChJ,EAAO,OAAa,EAAK,OAAa,EAAK,OAAa,EAAK,OAAa,EAAU,OAAa,EAAU,MAuCsM,EAAoB,EAAe,CAAC,MAAM,CAAC,KAAK,EAAY,gBAAgB,MAAM,OAAO,EAAE,MAAM,CAAC,KAAK,EAAY,KAAK,MAAM,QAAQ,iBAAiB,CAAC,MAAM,OAAO,KAAK,CAAC,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,YAAY,6GAA6G,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,KAAK,eAAe,EAAK,EAAE,UAAU,CAAC,KAAK,EAAY,KAAK,MAAM,YAAY,QAAQ,CAAC,KAAK,OAAO,OAAO,OAAO,SAAS,SAAS,MAAM,EAAE,aAAa,CAAC,UAAU,YAAY,WAAW,eAAe,SAAS,cAAc,WAAW,EAAE,aAAa,IAAI,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,SAAS,aAAa,EAAK,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,IAAI,EAAE,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,aAAa,aAAa,EAAK,EAAE,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,OAAO,GAAO,CAAC,EAAM,SAAS,EAAE,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,OAAO,GAAO,CAAC,EAAM,SAAS,CAAC,CAAC,uBCvChqD,EAAC,EAAU,UAAU,CAAC,gCAAgC,6BAA6B,qCAAqC,uCAAuC,CAAC,EAAe,EAAM,CAAC,CAAC,cAAc,GAAK,MAAM,CAAC,CAAC,cAAc,uBAAuB,OAAO,SAAS,MAAM,SAAS,aAAa,eAAe,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,oBAAoB,OAAO,SAAS,MAAM,SAAS,aAAa,eAAe,IAAI,yEAAyE,OAAO,KAAK,EAAE,CAAC,cAAc,4BAA4B,OAAO,SAAS,MAAM,SAAS,aAAa,eAAe,IAAI,wEAAwE,OAAO,KAAK,EAAE,CAAC,cAAc,+BAA+B,OAAO,SAAS,MAAM,SAAS,aAAa,eAAe,IAAI,wEAAwE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAe,EAAI,CAAC,4vCAAswC,kzCAA4zC,8yCAAwzC,EAAe,EAAU"}