{"version":3,"file":"TextStagger.BGLH-wt8.mjs","names":["useState","useRef","useMemo","useLayoutEffect","useEffect"],"sources":["https:/framerusercontent.com/modules/EHXMvsvbJijjEQ1CPYok/putd672O7EpyjRWvSDs0/TextStagger.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useMemo,useRef,useLayoutEffect,createElement}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * TextStagger\n *\n * Line by line reveal with optional scramble.\n *\n * Notes on the implementation:\n * - Line wrapping is measured with a binary search over one Range, not one\n *   rect per character. Cost is O(lines * log chars) instead of O(chars).\n * - Re measurement is driven by ResizeObserver on the real container, so it\n *   works on the Framer canvas where window resize never fires.\n * - The reveal uses plain CSS transitions, so it runs on the compositor and\n *   costs nothing on the main thread.\n * - Scramble writes directly into a fixed set of glyph nodes from a single\n *   shared rAF loop. No React state is touched per frame, and all instances\n *   on the page share one loop and one IntersectionObserver.\n */const easingPresets={smooth:\"cubic-bezier(0.44, 0, 0.34, 0.98)\",snappy:\"cubic-bezier(0.68, 0, 0, 1)\",bounce:\"cubic-bezier(0.34, 1.56, 0.64, 1)\",ease:\"cubic-bezier(0.25, 0.1, 0.25, 1)\",linear:\"linear\"};const DEFAULT_CHARS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!<>_/[]{}=+*^?#\";const TERMINATORS=\".!?…\";// Hard ceiling so a very long paragraph cannot spawn thousands of live nodes.\nconst MAX_SCRAMBLE_GLYPHS=600;const tickers=new Set;let frameId=null;function pump(now){frameId=null;if(tickers.size===0)return;frameId=requestAnimationFrame(pump);// Copy first, a callback may unsubscribe itself mid loop.\nconst batch=Array.from(tickers);for(let i=0;i<batch.length;i++)batch[i](now);}function addTicker(fn){tickers.add(fn);if(frameId===null&&typeof requestAnimationFrame!==\"undefined\"){frameId=requestAnimationFrame(pump);}}function removeTicker(fn){tickers.delete(fn);}/* ------------------------------------------------------------------ *//* Shared IntersectionObserver.                                        *//* ------------------------------------------------------------------ */const watchers=new Map;let observer=null;function observeVisibility(el,cb){if(typeof IntersectionObserver===\"undefined\"){cb(true);return()=>{};}if(!observer){observer=new IntersectionObserver(entries=>{for(const entry of entries){watchers.get(entry.target)?.(entry.isIntersecting);}});}watchers.set(el,cb);observer.observe(el);return()=>{watchers.delete(el);observer?.unobserve(el);};}/* ------------------------------------------------------------------ */const useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;function usePrefersReducedMotion(){const[reduced,setReduced]=useState(false);useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const query=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const sync=()=>setReduced(query.matches);sync();if(query.addEventListener){query.addEventListener(\"change\",sync);return()=>query.removeEventListener(\"change\",sync);}query.addListener(sync);return()=>query.removeListener(sync);},[]);return reduced;}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function TextStagger(props){const{text=\"\",startDelay=0,delay=.08,duration=.5,font,color,uppercase,tag=\"p\",distance=70,easing=\"smooth\",fade=false,once=true,highlight=false,highlightUnit=\"sentence\",highlightCount=1,highlightColor=\"#888888\",scramble=false,scrambleChars=DEFAULT_CHARS,scramblePercent=40,scrambleRate=20,scrambleDuration=.6,scrambleColorOn=false,scrambleColor=\"#888888\",style}=props;const isStatic=useIsStaticRenderer();const reduced=usePrefersReducedMotion();const still=isStatic||reduced;const containerRef=useRef(null);const probeRef=useRef(null);const glyphNodes=useRef([]);const[measured,setMeasured]=useState(null);const[visible,setVisible]=useState(false);const[everVisible,setEverVisible]=useState(false);const[settled,setSettled]=useState(false);const[cooled,setCooled]=useState(false);const play=still||(once?everVisible:visible);const fontFamily=font?.fontFamily||\"'BDO Grotesk', 'Inter', 'Helvetica Neue', Arial, sans-serif\";const lineHeight=font?.lineHeight||1.2;const textAlign=font?.textAlign||\"left\";const textTransform=uppercase?\"uppercase\":\"none\";const ease=easingPresets[easing]||easingPresets.smooth;// Font control returns a fresh object on every render, so memo work has to\n// key off its content instead of its identity.\nconst fontKey=useMemo(()=>JSON.stringify(font??null),[font]);const manual=useMemo(()=>splitManual(text),[text]);const lines=useMemo(()=>{if(manual)return manual;if(measured&&measured.length)return measured;return[text||\"\"];},[manual,measured,text]);const offsets=useMemo(()=>{const result=new Array(lines.length);let acc=0;for(let i=0;i<lines.length;i++){result[i]=acc;acc+=lines[i].length+1;}return result;},[lines]);const highlightStart=useMemo(()=>{if(!highlight||lines.length===0)return-1;const count=Math.max(0,Math.round(highlightCount));if(count<=0)return-1;if(highlightUnit===\"line\"){const index=lines.length-count;return index<=0?0:offsets[index];}const flat=lines.join(\"\\n\");const starts=highlightUnit===\"word\"?collectWordStarts(flat):collectSentenceStarts(flat);if(starts.length===0)return-1;if(count>=starts.length)return 0;return starts[starts.length-count];},[highlight,highlightUnit,highlightCount,lines,offsets]);const pool=useMemo(()=>{const source=scrambleChars||DEFAULT_CHARS;const cased=uppercase?source.toUpperCase():source;return Array.from(new Set(Array.from(cased)));},[scrambleChars,uppercase]);const schedule=useMemo(()=>{if(still||!scramble||settled)return null;if(pool.length===0)return null;return buildSchedule(lines,delay,startDelay,scramblePercent,Math.max(.05,scrambleDuration)*1e3);},[still,scramble,settled,pool,lines,delay,startDelay,scramblePercent,scrambleDuration]);// Content is built once per layout change, not once per frame. Characters\n// that never scramble stay inside plain text runs.\nconst{rows,plan}=useMemo(()=>buildContent({lines,offsets,schedule,highlightStart,highlightColor,color,nodes:glyphNodes}),[lines,offsets,schedule,highlightStart,highlightColor,color]);/* ---------------- line measurement ---------------- */useIsoLayoutEffect(()=>{if(manual){setMeasured(null);return;}const host=containerRef.current;const probe=probeRef.current;if(!host||!probe)return;let raf=0;let alive=true;const run=()=>{raf=0;if(!alive)return;if(!host.clientWidth)return;const next=splitByLayout(probe,text);setMeasured(prev=>sameLines(prev,next)?prev:next);};const queue=()=>{if(raf)return;raf=requestAnimationFrame(run);};run();const ro=typeof ResizeObserver!==\"undefined\"?new ResizeObserver(queue):null;ro?.observe(host);// Web fonts change metrics after the first paint.\nconst fonts=document?.fonts;if(fonts?.ready?.then){fonts.ready.then(()=>{if(alive)queue();});}return()=>{alive=false;ro?.disconnect();if(raf)cancelAnimationFrame(raf);};},[manual,text,fontKey,uppercase]);/* ---------------- visibility ---------------- */useEffect(()=>{if(still)return;const host=containerRef.current;if(!host)return;return observeVisibility(host,isVisible=>{setVisible(isVisible);if(isVisible)setEverVisible(true);});},[still]);// New copy means a new run.\nuseEffect(()=>{setSettled(false);},[text]);// Replay mode: rearm once the block leaves the viewport.\nuseEffect(()=>{if(!once&&!visible)setSettled(false);},[once,visible]);/* ---------------- will change lifecycle ---------------- */useEffect(()=>{if(still){setCooled(true);return;}if(!play){setCooled(false);return;}const total=(startDelay+Math.max(0,lines.length-1)*delay+duration+.15)*1e3;const id=window.setTimeout(()=>setCooled(true),total);return()=>window.clearTimeout(id);},[still,play,startDelay,delay,duration,lines.length]);/* ---------------- scramble ---------------- */useEffect(()=>{if(!play||plan.length===0||pool.length===0)return;const nodes=glyphNodes.current;const chars=pool;const done=new Uint8Array(plan.length);const frameMs=1e3/clamp(scrambleRate,1,60);const started=typeof performance!==\"undefined\"?performance.now():Date.now();let remaining=plan.length;let last=-Infinity;if(scrambleColorOn){for(let k=0;k<plan.length;k++){const node=nodes[k];if(node)node.style.color=scrambleColor;}}const tick=now=>{if(now-last<frameMs)return;last=now;const elapsed=now-started;for(let k=0;k<plan.length;k++){if(done[k])continue;const node=nodes[k];if(!node){done[k]=1;remaining--;continue;}const glyph=plan[k];if(elapsed>=glyph.settle){node.textContent=glyph.char;if(scrambleColorOn)node.style.color=glyph.rest;done[k]=1;remaining--;continue;}node.textContent=chars[Math.random()*chars.length|0];}if(remaining<=0){removeTicker(tick);setSettled(true);}};addTicker(tick);return()=>{removeTicker(tick);// Never leave half scrambled glyphs behind on unmount or on a\n// layout change that invalidates the plan.\nfor(let k=0;k<plan.length;k++){const node=nodes[k];if(!node)continue;node.textContent=plan[k].char;if(scrambleColorOn)node.style.color=plan[k].rest;}};},[play,plan,pool,scrambleRate,scrambleColorOn,scrambleColor]);/* ---------------- render ---------------- */const glyphStyle={display:\"inline-block\",whiteSpace:\"pre\",...font,fontFamily,color,textTransform,lineHeight};const children=[];if(!manual){children.push(/*#__PURE__*/_jsx(\"span\",{ref:probeRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",top:0,left:0,width:\"100%\",visibility:\"hidden\",pointerEvents:\"none\",whiteSpace:\"pre-wrap\",...font,fontFamily,textTransform,lineHeight},children:text},\"probe\"));}for(let i=0;i<lines.length;i++){const line=lines[i];const stagger=still?0:startDelay+i*delay;children.push(/*#__PURE__*/_jsxs(\"span\",{style:{display:\"block\",position:\"relative\",overflow:\"hidden\",width:\"100%\",lineHeight,textAlign},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{...glyphStyle,visibility:\"hidden\",pointerEvents:\"none\"},children:line||\" \"}),/*#__PURE__*/_jsx(\"span\",{style:{...glyphStyle,position:\"absolute\",left:0,top:0,width:\"100%\",textAlign,transform:play?\"translate3d(0, 0, 0)\":`translate3d(0, ${distance}px, 0)`,opacity:fade?play?1:0:undefined,transition:play&&!still?`transform ${duration}s ${ease} ${stagger}s, opacity ${duration}s ${ease} ${stagger}s`:\"none\",willChange:cooled?undefined:\"transform, opacity\",backfaceVisibility:\"hidden\"},children:rows[i]})]},i));}return /*#__PURE__*/createElement(tag,{ref:containerRef,style:{margin:0,padding:0,...style,position:\"relative\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",color,textTransform,textAlign,...font,fontFamily}},children);}function buildContent(args){const{lines,offsets,schedule,highlightStart,highlightColor,color,nodes}=args;const plan=[];const slots=[];nodes.current=slots;const rows=lines.map((line,li)=>{const row=schedule?schedule[li]:null;const lineStart=offsets[li]??0;const out=[];let buffer=\"\";let bufferHl=false;let key=0;const flush=()=>{if(!buffer)return;out.push(/*#__PURE__*/_jsx(\"span\",{style:bufferHl?{color:highlightColor}:undefined,children:buffer},`t${key++}`));buffer=\"\";};for(let j=0;j<line.length;j++){const char=line[j];const hl=highlightStart>=0&&lineStart+j>=highlightStart;const settle=row?row[j]:0;if(settle>0){flush();const slot=plan.length;plan.push({char,settle,rest:hl?highlightColor:color});slots.push(null);out.push(/*#__PURE__*/_jsx(\"span\",{ref:el=>{slots[slot]=el;},style:hl?{color:highlightColor}:undefined,children:char},`g${key++}`));continue;}if(hl!==bufferHl){flush();bufferHl=hl;}buffer+=char;}flush();return out.length?out:[\" \"];});return{rows,plan};}/* ------------------------------------------------------------------ *//* Measurement                                                         *//* ------------------------------------------------------------------ */function splitManual(text){if(!text)return[\"\"];if(text.includes(\"//\"))return text.split(\"//\").map(l=>l.trim());if(text.includes(\"\\n\"))return text.split(\"\\n\").map(l=>l.trim());return null;}function sameLines(a,b){if(!a||a.length!==b.length)return false;for(let i=0;i<a.length;i++)if(a[i]!==b[i])return false;return true;}/**\n * Reads the real line boxes out of the probe, then binary searches the\n * character index that ends each line. Roughly lines * log(chars) rect\n * reads instead of one read per character.\n */function splitByLayout(probe,text){if(!text)return[\"\"];const node=probe.firstChild;if(!node||node.nodeType!==3)return[text];let range;try{range=document.createRange();range.selectNodeContents(probe);}catch{return[text];}const rects=range.getClientRects();if(!rects||rects.length===0)return[text];const bottoms=[];for(let i=0;i<rects.length;i++){const rect=rects[i];if(rect.width===0&&rect.height===0)continue;const last=bottoms.length?bottoms[bottoms.length-1]:-Infinity;if(rect.bottom>last+1)bottoms.push(rect.bottom);else if(rect.bottom>last)bottoms[bottoms.length-1]=rect.bottom;}if(bottoms.length<=1)return[text];const cache=new Map;const bottomAt=index=>{const hit=cache.get(index);if(hit!==undefined)return hit;range.setStart(node,0);range.setEnd(node,index);const value=range.getBoundingClientRect().bottom;cache.set(index,value);return value;};const out=[];const len=text.length;let start=0;for(let k=0;k<bottoms.length-1&&start<len;k++){const limit=bottoms[k]+1;let lo=start+1;let hi=len;let end=start+1;while(lo<=hi){const mid=lo+hi>>1;if(bottomAt(mid)<=limit){end=mid;lo=mid+1;}else{hi=mid-1;}}out.push(text.slice(start,end).replace(/\\s+$/,\"\"));start=end;}out.push(text.slice(start));return out.length?out:[text];}/* ------------------------------------------------------------------ *//* Highlight helpers                                                   *//* ------------------------------------------------------------------ */function collectWordStarts(flat){const starts=[];let inWord=false;for(let i=0;i<flat.length;i++){const space=flat[i]===\" \"||flat[i]===\"\\n\"||flat[i]===\"\t\";if(!space&&!inWord){starts.push(i);inWord=true;}else if(space){inWord=false;}}return starts;}function collectSentenceStarts(flat){const starts=[];let expect=true;for(let i=0;i<flat.length;i++){const char=flat[i];const space=char===\" \"||char===\"\\n\"||char===\"\t\";if(expect&&!space){starts.push(i);expect=false;}if(TERMINATORS.includes(char))expect=true;}return starts;}/* ------------------------------------------------------------------ *//* Scramble schedule                                                   *//* ------------------------------------------------------------------ */function clamp(n,min,max){return Math.min(Math.max(n,min),max);}function buildSchedule(lines,delay,startDelay,scramblePercent,settleMs){const percent=clamp(scramblePercent,0,100)/100;if(percent<=0)return null;const schedule=lines.map(line=>new Float64Array(line.length));const lineIndex=[];const charIndex=[];for(let i=0;i<lines.length;i++){const line=lines[i];for(let j=0;j<line.length;j++){if(line[j]!==\" \"){lineIndex.push(i);charIndex.push(j);}}}const total=lineIndex.length;if(total===0)return null;const count=Math.min(MAX_SCRAMBLE_GLYPHS,Math.round(total*percent));if(count<=0)return null;// Partial Fisher Yates, only the first `count` slots need to be settled.\nfor(let i=0;i<count;i++){const j=i+(Math.random()*(total-i)|0);const li=lineIndex[i];lineIndex[i]=lineIndex[j];lineIndex[j]=li;const ci=charIndex[i];charIndex[i]=charIndex[j];charIndex[j]=ci;}for(let k=0;k<count;k++){const i=lineIndex[k];const j=charIndex[k];const base=(startDelay+i*delay)*1e3;schedule[i][j]=base+settleMs*(.25+Math.random()*.75);}return schedule;}/* ------------------------------------------------------------------ *//* Property controls                                                   *//* ------------------------------------------------------------------ */addPropertyControls(TextStagger,{text:{type:ControlType.String,title:\"Content\",defaultValue:\"Editable\\nStaggered\\nText\",displayTextArea:true,placeholder:\"Use // for line break\"},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\",\"div\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Paragraph\",\"Span\",\"Div\"],defaultValue:\"p\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:40,lineHeight:\"1em\",letterSpacing:\"-0.02em\",variant:\"Regular\",textAlign:\"left\"}},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},highlight:{type:ControlType.Boolean,title:\"Highlight\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},highlightUnit:{type:ControlType.Enum,title:\"Unit\",options:[\"sentence\",\"word\",\"line\"],optionTitles:[\"Sentences\",\"Words\",\"Lines\"],defaultValue:\"sentence\",hidden:p=>!p.highlight},highlightCount:{type:ControlType.Number,title:\"Last\",defaultValue:1,min:0,max:50,step:1,displayStepper:true,hidden:p=>!p.highlight},highlightColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#888888\",hidden:p=>!p.highlight},distance:{type:ControlType.Number,title:\"Distance\",defaultValue:70,min:0,max:300,step:5,unit:\"px\"},startDelay:{type:ControlType.Number,title:\"Start\",defaultValue:0,min:0,max:10,step:.05,unit:\"s\"},delay:{type:ControlType.Number,title:\"Stagger\",defaultValue:.08,min:0,max:1,step:.01,unit:\"s\"},duration:{type:ControlType.Number,title:\"Speed\",defaultValue:.5,min:.05,max:2,step:.01,unit:\"s\"},easing:{type:ControlType.Enum,title:\"Easing\",options:[\"smooth\",\"snappy\",\"bounce\",\"ease\",\"linear\"],optionTitles:[\"Smooth\",\"Snappy\",\"Bounce\",\"Ease\",\"Linear\"],defaultValue:\"smooth\"},fade:{type:ControlType.Boolean,title:\"Fade In\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},once:{type:ControlType.Boolean,title:\"Play\",defaultValue:true,enabledTitle:\"Once\",disabledTitle:\"Every\"},scramble:{type:ControlType.Boolean,title:\"Scramble\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},scramblePercent:{type:ControlType.Number,title:\"Amount\",defaultValue:40,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:p=>!p.scramble},scrambleDuration:{type:ControlType.Number,title:\"Settle\",defaultValue:.6,min:.1,max:3,step:.05,unit:\"s\",hidden:p=>!p.scramble},scrambleRate:{type:ControlType.Number,title:\"Rate\",defaultValue:20,min:1,max:60,step:1,unit:\"/s\",hidden:p=>!p.scramble},scrambleColorOn:{type:ControlType.Boolean,title:\"Glyph Color\",defaultValue:false,enabledTitle:\"Custom\",disabledTitle:\"Same\",hidden:p=>!p.scramble},scrambleColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#888888\",hidden:p=>!p.scramble||!p.scrambleColorOn},scrambleChars:{type:ControlType.String,title:\"Charset\",defaultValue:DEFAULT_CHARS,displayTextArea:true,hidden:p=>!p.scramble}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextStagger\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextStagger.map"],"mappings":"0OAgBqE,SAAS,EAAK,EAAI,CAAc,GAAb,EAAQ,KAAQ,EAAQ,OAAO,EAAE,OAAO,EAAQ,sBAAsB,CAAI,EAClK,IAAM,EAAM,MAAM,KAAK,CAAO,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,OAAO,IAAI,EAAM,EAAE,CAAC,CAAG,CAAE,CAAC,SAAS,GAAU,EAAG,CAAC,EAAQ,IAAI,CAAE,EAAK,IAAU,MAAM,OAAO,sBAAwB,MAAa,EAAQ,sBAAsB,CAAI,EAAG,CAAC,SAAS,EAAa,EAAG,CAAC,EAAQ,OAAO,CAAE,CAAE,CAAmQ,SAAS,GAAkB,EAAG,EAAG,CAA6P,OAAzP,OAAO,qBAAuB,KAAa,EAAG,EAAI,MAAY,CAAC,IAAG,AAAc,IAAS,IAAI,qBAAqB,GAAS,CAAC,IAAI,IAAM,KAAS,EAAS,EAAS,IAAI,EAAM,MAAM,CAAC,GAAG,EAAM,cAAc,CAAG,CAAC,EAAG,EAAS,IAAI,EAAG,CAAE,EAAE,EAAS,QAAQ,CAAE,MAAY,CAAC,EAAS,OAAO,CAAE,EAAE,GAAU,UAAU,CAAE,CAAE,EAAE,CAAwJ,SAAS,IAAyB,CAAC,GAAK,CAAC,EAAQ,GAAYA,EAAS,EAAK,EAAqX,OAAnX,MAAc,CAAC,GAAU,IAAS,QAAa,CAAC,EAAO,WAAW,OAAO,IAAM,EAAM,EAAO,WAAW,kCAAkC,EAAQ,MAAS,EAAW,EAAM,OAAO,EAAsJ,OAApJ,EAAK,EAAK,EAAM,kBAAkB,EAAM,iBAAiB,SAAS,CAAI,MAAY,EAAM,oBAAoB,SAAS,CAAI,IAAG,EAAM,YAAY,CAAI,MAAY,EAAM,eAAe,CAAI,EAAE,EAAE,CAAC,CAAC,EAAS,CAAQ,CAGr8C,SAAwB,EAAY,EAAM,CAAC,GAAK,CAAC,OAAK,GAAG,aAAW,EAAE,QAAM,IAAI,WAAS,GAAG,OAAK,QAAM,YAAU,MAAI,IAAI,WAAS,GAAG,SAAO,SAAS,OAAK,GAAM,OAAK,GAAK,YAAU,GAAM,gBAAc,WAAW,iBAAe,EAAE,iBAAe,UAAU,YAAS,GAAM,iBAAc,EAAc,mBAAgB,GAAG,gBAAa,GAAG,oBAAiB,GAAG,kBAAgB,GAAM,iBAAc,UAAU,UAAO,EAAY,GAAS,EAAoB,EAAQ,GAAQ,GAAwB,EAAQ,EAAM,IAAU,GAAc,EAAaC,EAAO,IAAI,EAAQ,EAASA,EAAO,IAAI,EAAQ,EAAWA,EAAO,CAAC,CAAC,EAAO,CAAC,EAAS,GAAaD,EAAS,IAAI,EAAO,CAAC,EAAQ,IAAYA,EAAS,EAAK,EAAO,CAAC,GAAY,IAAgBA,EAAS,EAAK,EAAO,CAAC,EAAQ,GAAYA,EAAS,EAAK,EAAO,CAAC,GAAO,GAAWA,EAAS,EAAK,EAAQ,EAAK,IAAQ,EAAK,GAAY,GAAe,EAAW,GAAM,YAAY,8DAAoE,EAAW,GAAM,YAAY,IAAU,EAAU,GAAM,WAAW,OAAa,EAAc,EAAU,YAAY,OAAa,GAAK,EAAc,IAAS,EAAc,OAEjnC,GAAQE,MAAY,KAAK,UAAU,GAAM,IAAI,EAAE,CAAC,CAAI,CAAC,EAAQ,EAAOA,MAAY,GAAY,CAAI,EAAE,CAAC,CAAI,CAAC,EAAQ,EAAMA,MAAgB,IAAwB,GAAU,EAAS,OAAc,EAAe,CAAC,GAAM,EAAE,GAAI,CAAC,EAAO,EAAS,CAAI,CAAC,EAAQ,EAAQA,MAAY,CAAC,IAAM,EAAW,MAAM,EAAM,MAAM,EAAM,EAAI,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,OAAO,IAAK,EAAO,GAAG,EAAI,GAAK,EAAM,EAAE,CAAC,OAAO,EAAG,OAAO,CAAO,EAAE,CAAC,CAAK,CAAC,EAAQ,GAAeA,MAAY,CAAC,GAAG,CAAC,GAAW,EAAM,SAAS,EAAE,MAAM,GAAG,IAAM,EAAM,KAAK,IAAI,EAAE,KAAK,MAAM,CAAc,CAAC,EAAE,GAAG,GAAO,EAAE,MAAM,GAAG,GAAG,IAAgB,OAAO,CAAC,IAAM,EAAM,EAAM,OAAO,EAAM,OAAO,GAAO,EAAE,EAAE,EAAQ,EAAO,CAAC,IAAM,EAAK,EAAM,KAAK;CAAI,EAAQ,EAAO,IAAgB,OAAO,GAAkB,CAAI,EAAE,GAAsB,CAAI,EAAiE,OAA5D,EAAO,SAAS,EAAQ,GAAM,GAAO,EAAO,OAAc,EAAS,EAAO,EAAO,OAAO,EAAO,EAAE,CAAC,EAAU,EAAc,EAAe,EAAM,CAAO,CAAC,EAAQ,EAAKA,MAAY,CAAC,IAAM,EAAO,IAAe,EAAoB,EAAM,EAAU,EAAO,YAAY,EAAE,EAAO,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,CAAK,CAAC,CAAC,CAAE,EAAE,CAAC,GAAc,CAAS,CAAC,EAAQ,EAASA,MAAgB,GAAO,CAAC,IAAU,GAAuB,EAAK,SAAS,EAAS,KAAY,GAAc,EAAM,EAAM,EAAW,GAAgB,KAAK,IAAI,IAAI,EAAgB,EAAE,GAAG,EAAI,CAAC,EAAM,GAAS,EAAQ,EAAK,EAAM,EAAM,EAAW,GAAgB,EAAgB,CAAC,EAEt3C,CAAC,QAAK,QAAMA,MAAY,GAAa,CAAC,QAAM,UAAQ,WAAS,kBAAe,iBAAe,QAAM,MAAM,CAAU,CAAC,EAAE,CAAC,EAAM,EAAQ,EAAS,GAAe,EAAe,CAAK,CAAC,EAA0D,OAAuB,CAAC,GAAG,EAAO,CAAC,EAAY,IAAI,EAAE,MAAO,CAAC,IAAM,EAAK,EAAa,QAAc,EAAM,EAAS,QAAQ,GAAG,CAAC,GAAM,CAAC,EAAM,OAAO,IAAI,EAAI,EAAM,EAAM,GAAW,MAAQ,CAAwB,GAAvB,EAAI,EAAK,CAAC,GAAgB,CAAC,EAAK,YAAY,OAAO,IAAM,EAAK,GAAc,EAAM,CAAI,EAAE,EAAY,GAAM,GAAU,EAAK,CAAI,EAAE,EAAK,CAAI,CAAE,EAAQ,MAAU,CAAI,AAAW,IAAI,sBAAsB,CAAG,CAAE,EAAE,EAAI,EAAE,IAAM,EAAG,OAAO,eAAiB,IAAY,IAAI,eAAe,CAAK,EAAE,KAAK,GAAI,QAAQ,CAAI,EACvtB,IAAM,EAAM,UAAU,MAAwE,OAA/D,GAAO,OAAO,MAAM,EAAM,MAAM,SAAS,CAAI,GAAM,EAAM,CAAE,CAAC,MAAa,CAAC,EAAM,GAAM,GAAI,WAAW,EAAK,GAAI,qBAAqB,CAAG,CAAE,CAAE,EAAE,CAAC,EAAO,EAAK,GAAQ,CAAS,CAAC,EAAoD,MAAc,CAAC,GAAG,EAAM,OAAO,IAAM,EAAK,EAAa,QAAY,KAAY,OAAO,GAAkB,EAAK,GAAW,CAAC,GAAW,CAAS,EAAK,GAAU,GAAe,EAAI,CAAE,CAAC,CAAE,EAAE,CAAC,CAAK,CAAC,EAC3b,MAAc,CAAC,EAAW,EAAK,CAAE,EAAE,CAAC,CAAI,CAAC,EACzC,MAAc,CAAI,CAAC,GAAM,CAAC,GAAQ,EAAW,EAAK,CAAE,EAAE,CAAC,EAAK,CAAO,CAAC,EAA+D,MAAc,CAAC,GAAG,EAAM,CAAC,EAAU,EAAI,EAAE,MAAO,CAAC,GAAG,CAAC,EAAK,CAAC,EAAU,EAAK,EAAE,MAAO,CAAC,IAAM,GAAO,EAAW,KAAK,IAAI,EAAE,EAAM,OAAO,CAAC,EAAE,EAAM,EAAS,KAAK,IAAU,EAAG,EAAO,eAAe,EAAU,EAAI,EAAE,CAAK,EAAE,UAAU,EAAO,aAAa,CAAE,CAAE,EAAE,CAAC,EAAM,EAAK,EAAW,EAAM,EAAS,EAAM,MAAM,CAAC,EAAkD,MAAc,CAAC,GAAG,CAAC,GAAM,EAAK,SAAS,GAAG,EAAK,SAAS,EAAE,OAAO,IAAM,EAAM,EAAW,QAAc,EAAM,EAAW,EAAK,IAAI,WAAW,EAAK,MAAM,EAAQ,EAAQ,IAAI,EAAM,GAAa,EAAE,EAAE,EAAQ,EAAQ,OAAO,YAAc,IAAY,YAAY,IAAI,EAAE,KAAK,IAAI,EAAM,EAAU,EAAK,OAAW,EAAK,KAAU,GAAG,EAAiB,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAK,EAAM,GAAM,IAAK,EAAK,MAAM,MAAM,GAAc,CAAE,IAAM,EAAK,GAAK,CAAC,GAAG,EAAI,EAAK,EAAQ,OAAO,EAAK,EAAI,IAAM,EAAQ,EAAI,EAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,GAAG,EAAK,GAAG,SAAS,IAAM,EAAK,EAAM,GAAG,GAAG,CAAC,EAAK,CAAC,EAAK,GAAG,EAAE,IAAY,QAAS,CAAC,IAAM,EAAM,EAAK,GAAG,GAAG,GAAS,EAAM,OAAO,CAAC,EAAK,YAAY,EAAM,KAAQ,IAAgB,EAAK,MAAM,MAAM,EAAM,MAAK,EAAK,GAAG,EAAE,IAAY,QAAS,CAAC,EAAK,YAAY,EAAM,KAAK,OAAO,EAAE,EAAM,OAAO,EAAG,CAAI,GAAW,IAAG,EAAa,CAAI,EAAE,EAAW,EAAI,EAAG,EAAkB,OAAhB,GAAU,CAAI,MAAY,CAAC,EAAa,CAAI,EAEh4C,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAK,EAAM,GAAO,IAAc,EAAK,YAAY,EAAK,EAAE,CAAC,KAAQ,IAAgB,EAAK,MAAM,MAAM,EAAK,EAAE,CAAC,MAAK,CAAC,CAAE,EAAE,CAAC,EAAK,EAAK,EAAK,GAAa,EAAgB,EAAa,CAAC,EAAgD,IAAM,EAAW,CAAC,QAAQ,eAAe,WAAW,MAAM,GAAG,EAAK,aAAW,QAAM,gBAAc,YAAU,EAAQ,EAAS,CAAC,EAAM,GAAQ,EAAS,KAAkB,EAAK,OAAO,CAAC,IAAI,EAAS,cAAc,OAAO,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,WAAW,SAAS,cAAc,OAAO,WAAW,WAAW,GAAG,EAAK,aAAW,gBAAc,YAAU,EAAE,SAAS,CAAI,EAAE,OAAO,CAAC,EAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,OAAO,IAAI,CAAC,IAAM,EAAK,EAAM,GAAS,EAAQ,EAAM,EAAE,EAAW,EAAE,EAAM,EAAS,KAAkB,EAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,QAAQ,SAAS,WAAW,SAAS,SAAS,MAAM,OAAO,aAAW,WAAS,EAAE,SAAS,CAAc,EAAK,OAAO,CAAC,cAAc,OAAO,MAAM,CAAC,GAAG,EAAW,WAAW,SAAS,cAAc,MAAM,EAAE,SAAS,GAAM,GAAG,CAAC,EAAe,EAAK,OAAO,CAAC,MAAM,CAAC,GAAG,EAAW,SAAS,WAAW,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,YAAU,UAAU,EAAK,uBAAuB,kBAAkB,EAAS,QAAQ,QAAQ,EAAK,KAAS,IAAA,GAAU,WAAW,GAAM,CAAC,EAAM,aAAa,EAAS,IAAI,GAAK,GAAG,EAAQ,aAAa,EAAS,IAAI,GAAK,GAAG,EAAQ,GAAG,OAAO,WAAW,GAAO,IAAA,GAAU,qBAAqB,mBAAmB,QAAQ,EAAE,SAAS,GAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,OAAoB,EAAc,EAAI,CAAC,IAAI,EAAa,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,GAAM,SAAS,WAAW,QAAQ,OAAO,cAAc,SAAS,eAAe,SAAS,QAAM,gBAAc,YAAU,GAAG,EAAK,YAAU,CAAC,EAAE,CAAQ,CAAE,CAAC,SAAS,GAAa,EAAK,CAAC,GAAK,CAAC,QAAM,UAAQ,WAAS,iBAAe,iBAAe,QAAM,SAAO,EAAW,EAAK,CAAC,EAAQ,EAAM,CAAC,EAAqzB,MAAnzB,GAAM,QAAQ,EAA2yB,CAAC,KAA3xB,EAAM,KAAK,EAAK,IAAK,CAAC,IAAM,EAAI,EAAS,EAAS,GAAI,KAAW,EAAU,EAAQ,IAAK,EAAQ,EAAI,CAAC,EAAM,EAAO,GAAO,EAAS,GAAU,EAAI,EAAQ,MAAU,CAAK,AAAgI,KAAlH,EAAI,KAAkB,EAAK,OAAO,CAAC,MAAM,EAAS,CAAC,MAAM,CAAc,EAAE,IAAA,GAAU,SAAS,CAAM,EAAE,IAAI,KAAO,CAAC,EAAS,GAAG,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAK,EAAK,GAAS,EAAG,GAAgB,GAAG,EAAU,GAAG,EAAqB,EAAO,EAAI,EAAI,GAAG,EAAE,GAAG,EAAO,EAAE,CAAC,EAAM,EAAE,IAAM,EAAK,EAAK,OAAO,EAAK,KAAK,CAAC,OAAK,SAAO,KAAK,EAAG,EAAe,CAAK,CAAC,EAAE,EAAM,KAAK,IAAI,EAAE,EAAI,KAAkB,EAAK,OAAO,CAAC,IAAI,GAAI,CAAC,EAAM,GAAM,CAAG,EAAE,MAAM,EAAG,CAAC,MAAM,CAAc,EAAE,IAAA,GAAU,SAAS,CAAI,EAAE,IAAI,KAAO,CAAC,EAAE,QAAS,CAAI,IAAK,IAAU,EAAM,EAAE,EAAS,GAAI,GAAQ,CAAK,CAAS,OAAR,EAAM,EAAS,EAAI,OAAO,EAAI,CAAC,GAAG,CAAE,CAAa,EAAE,MAAI,CAAE,CAA0N,SAAS,GAAY,EAAK,CAAqJ,OAAhJ,EAAmB,EAAK,SAAS,IAAI,EAAS,EAAK,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,EAAK,EAAK,SAAS;CAAI,EAAS,EAAK,MAAM;CAAI,CAAC,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,EAAS,KAA5I,CAAC,EAAE,CAA8I,CAAC,SAAS,GAAU,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,MAAO,GAAM,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,EAAE,GAAG,MAAO,GAAM,MAAO,EAAK,CAIjoG,SAAS,GAAc,EAAM,EAAK,CAAC,GAAG,CAAC,EAAK,MAAM,CAAC,EAAE,EAAE,IAAM,EAAK,EAAM,WAAW,GAAG,CAAC,GAAM,EAAK,WAAW,EAAE,MAAM,CAAC,CAAI,EAAE,IAAI,EAAM,GAAG,CAAC,EAAM,SAAS,YAAY,EAAE,EAAM,mBAAmB,CAAK,CAAE,MAAM,CAAC,MAAM,CAAC,CAAI,CAAE,CAAC,IAAM,EAAM,EAAM,eAAe,EAAE,GAAG,CAAC,GAAO,EAAM,SAAS,EAAE,MAAM,CAAC,CAAI,EAAE,IAAM,EAAQ,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,OAAO,IAAI,CAAC,IAAM,EAAK,EAAM,GAAG,GAAG,EAAK,QAAQ,GAAG,EAAK,SAAS,EAAE,SAAS,IAAM,EAAK,EAAQ,OAAO,EAAQ,EAAQ,OAAO,GAAG,KAAa,EAAK,OAAO,EAAK,EAAE,EAAQ,KAAK,EAAK,MAAM,EAAU,EAAK,OAAO,IAAK,EAAQ,EAAQ,OAAO,GAAG,EAAK,OAAO,CAAC,GAAG,EAAQ,QAAQ,EAAE,MAAM,CAAC,CAAI,EAAE,IAAM,EAAM,IAAI,IAAU,EAAS,GAAO,CAAC,IAAM,EAAI,EAAM,IAAI,CAAK,EAAE,GAAG,IAAM,IAAA,GAAU,OAAO,EAAI,EAAM,SAAS,EAAK,CAAC,EAAE,EAAM,OAAO,EAAK,CAAK,EAAE,IAAM,EAAM,EAAM,sBAAsB,CAAC,CAAC,OAA8B,OAAvB,EAAM,IAAI,EAAM,CAAK,EAAS,CAAM,EAAQ,EAAI,CAAC,EAAQ,EAAI,EAAK,OAAW,EAAM,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAQ,OAAO,GAAG,EAAM,EAAI,IAAI,CAAC,IAAM,EAAM,EAAQ,GAAG,EAAM,EAAG,EAAM,EAAM,EAAG,EAAQ,EAAI,EAAM,EAAE,KAAM,GAAI,GAAG,CAAC,IAAM,EAAI,EAAG,GAAI,EAAK,EAAS,CAAG,GAAG,GAAO,EAAI,EAAI,EAAG,EAAI,GAAQ,EAAG,EAAI,CAAG,CAAC,EAAI,KAAK,EAAK,MAAM,EAAM,CAAG,CAAC,CAAC,QAAQ,OAAO,EAAE,CAAC,EAAE,EAAM,CAAI,CAA6B,OAA5B,EAAI,KAAK,EAAK,MAAM,CAAK,CAAC,EAAS,EAAI,OAAO,EAAI,CAAC,CAAI,CAAE,CAA0N,SAAS,GAAkB,EAAK,CAAC,IAAM,EAAO,CAAC,EAAM,EAAO,GAAM,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAM,EAAK,KAAK,KAAK,EAAK,KAAK;GAAM,EAAK,KAAK,IAAO,CAAC,GAAO,CAAC,GAAQ,EAAO,KAAK,CAAC,EAAE,EAAO,IAAc,IAAO,EAAO,GAAO,CAAC,OAAO,CAAO,CAAC,SAAS,GAAsB,EAAK,CAAC,IAAM,EAAO,CAAC,EAAM,EAAO,GAAK,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAI,CAAC,IAAM,EAAK,EAAK,GAAsD,GAAQ,EAA/C,IAAO,KAAK,IAAO;GAAM,IAAO,OAAuB,EAAO,KAAK,CAAC,EAAE,EAAO,IAAU,EAAY,SAAS,CAAI,IAAE,EAAO,GAAK,CAAC,OAAO,CAAO,CAA0N,SAAS,EAAM,EAAE,EAAI,EAAI,CAAC,OAAO,KAAK,IAAI,KAAK,IAAI,EAAE,CAAG,EAAE,CAAG,CAAE,CAAC,SAAS,GAAc,EAAM,EAAM,EAAW,EAAgB,EAAS,CAAC,IAAM,EAAQ,EAAM,EAAgB,EAAE,GAAG,EAAE,IAAI,GAAG,GAAS,EAAE,OAAO,KAAK,IAAM,EAAS,EAAM,IAAI,GAAM,IAAI,aAAa,EAAK,MAAM,CAAC,EAAQ,EAAU,CAAC,EAAQ,EAAU,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,OAAO,IAAI,CAAC,IAAM,EAAK,EAAM,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAK,OAAO,IAAQ,EAAK,KAAK,MAAK,EAAU,KAAK,CAAC,EAAE,EAAU,KAAK,CAAC,EAAI,CAAC,IAAM,EAAM,EAAU,OAAO,GAAG,IAAQ,EAAE,OAAO,KAAK,IAAM,EAAM,KAAK,IAAI,EAAoB,KAAK,MAAM,EAAM,CAAO,CAAC,EAAE,GAAG,GAAO,EAAE,OAAO,KACptF,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,IAAI,CAAC,IAAM,EAAE,GAAG,KAAK,OAAO,GAAG,EAAM,GAAG,GAAS,EAAG,EAAU,GAAG,EAAU,GAAG,EAAU,GAAG,EAAU,GAAG,EAAG,IAAM,EAAG,EAAU,GAAG,EAAU,GAAG,EAAU,GAAG,EAAU,GAAG,CAAG,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAM,IAAI,CAAC,IAAM,EAAE,EAAU,GAAS,EAAE,EAAU,GAAS,GAAM,EAAW,EAAE,GAAO,IAAI,EAAS,EAAE,CAAC,GAAG,EAAK,GAAU,IAAI,KAAK,OAAO,EAAE,IAAK,CAAC,OAAO,CAAS,wCAlCrT,IAAmF,IAAwE,EAe1M,EAAc,CAAC,OAAO,oCAAoC,OAAO,8BAA8B,OAAO,oCAAoC,KAAK,mCAAmC,OAAO,QAAQ,EAAQ,EAAc,gFAAsF,EAAY,OAC5T,EAAoB,IAAU,EAAQ,IAAI,IAAQ,EAAQ,KACua,EAAS,IAAI,IAAQ,EAAS,KAA2a,GAA0B,IAAS,OAA4BE,EAAhBD,EAiBxZ,EAAoB,EAAY,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa;;MAA4B,gBAAgB,GAAK,YAAY,uBAAuB,EAAE,IAAI,CAAC,KAAK,EAAY,KAAK,MAAM,MAAM,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,OAAO,KAAK,EAAE,aAAa,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,YAAY,OAAO,KAAK,EAAE,aAAa,GAAG,EAAE,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,SAAS,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,SAAS,GAAG,WAAW,MAAM,cAAc,UAAU,QAAQ,UAAU,UAAU,MAAM,CAAC,EAAE,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,UAAU,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,cAAc,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,QAAQ,CAAC,WAAW,OAAO,MAAM,EAAE,aAAa,CAAC,YAAY,QAAQ,OAAO,EAAE,aAAa,WAAW,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,OAAO,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,EAAE,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,IAAI,IAAI,IAAI,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,OAAO,CAAC,KAAK,EAAY,KAAK,MAAM,SAAS,QAAQ,CAAC,SAAS,SAAS,SAAS,OAAO,QAAQ,EAAE,aAAa,CAAC,SAAS,SAAS,SAAS,OAAO,QAAQ,EAAE,aAAa,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,KAAK,CAAC,KAAK,EAAY,QAAQ,MAAM,OAAO,aAAa,GAAK,aAAa,OAAO,cAAc,OAAO,EAAE,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,WAAW,aAAa,GAAM,aAAa,KAAK,cAAc,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,eAAe,GAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAM,aAAa,SAAS,cAAc,OAAO,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,EAAc,gBAAgB,GAAK,OAAO,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC"}